The Display Serial Interface \(DSI\) is a specification developed by the Mobile Industry Processor Interface \(MIPI\) Alliance to reduce the cost of display controllers in mobile devices. In the Hardware Driver Foundation (HDF) framework, the MIPI-DSI module uses the service-free mode for API adaptation. The service-free mode applies to the devices that do not provide user-mode APIs or the OS system that does not distinguish the user mode and the kernel mode. In the service-free mode, **DevHandle**\(a void pointer\) directly points to the kernel-mode address of the device object.
The Display Serial Interface \(DSI\) is a specification developed by the Mobile Industry Processor Interface \(MIPI\) Alliance to reduce the cost of display controllers in mobile devices. In the Hardware Driver Foundation (HDF) framework, the MIPIDSI module uses the service-free mode for API adaptation. The service-free mode applies to the devices that do not provide user-mode APIs or the OS system that does not distinguish the user mode and the kernel mode. In the service-free mode, **DevHandle**\(a void pointer\) directly points to the kernel-mode address of the device object.
<tdclass="cellrowborder"valign="top"width="20%"headers="mcps1.2.6.1.2 "><pid="p1518931041716"><aname="p1518931041716"></a><aname="p1518931041716"></a><strongid="b14872821599"><aname="b14872821599"></a><aname="b14872821599"></a>cntlr</strong>: structure pointer to the MIPI-DSI controller.</p>
<tdclass="cellrowborder"valign="top"width="20%"headers="mcps1.2.6.1.2 "><pid="p1518931041716"><aname="p1518931041716"></a><aname="p1518931041716"></a><strongid="b14872821599"><aname="b14872821599"></a><aname="b14872821599"></a>cntlr</strong>: structure pointer to the MIPIDSI controller.</p>
<tdclass="cellrowborder"valign="top"width="20%"headers="mcps1.2.6.1.2 "><pid="p177917412215"><aname="p177917412215"></a><aname="p177917412215"></a><strongid="b4791144113213"><aname="b4791144113213"></a><aname="b4791144113213"></a>cntlr</strong>: structure pointer to the MIPI-DSI controller. </p>
<tdclass="cellrowborder"valign="top"width="20%"headers="mcps1.2.6.1.2 "><pid="p177917412215"><aname="p177917412215"></a><aname="p177917412215"></a><strongid="b4791144113213"><aname="b4791144113213"></a><aname="b4791144113213"></a>cntlr</strong>: structure pointer to the MIPIDSI controller. </p>
<pid="p12189131018174"><aname="p12189131018174"></a><aname="p12189131018174"></a><strongid="b192414338012"><aname="b192414338012"></a><aname="b192414338012"></a>cmd</strong>: structure pointer to the input instruction.</p>
<tdclass="cellrowborder"valign="top"width="20%"headers="mcps1.2.6.1.2 "><pid="p121902101179"><aname="p121902101179"></a><aname="p121902101179"></a><strongid="b516432716114"><aname="b516432716114"></a><aname="b516432716114"></a>cntlr</strong>: structure pointer to the MIPI-DSI controller.</p>
<tdclass="cellrowborder"valign="top"width="20%"headers="mcps1.2.6.1.2 "><pid="p121902101179"><aname="p121902101179"></a><aname="p121902101179"></a><strongid="b516432716114"><aname="b516432716114"></a><aname="b516432716114"></a>cntlr</strong>: structure pointer to the MIPIDSI controller.</p>
</td>
<tdclass="cellrowborder"valign="top"width="20%"headers="mcps1.2.6.1.3 "><pid="p1519018101171"><aname="p1519018101171"></a><aname="p1519018101171"></a>cmd: structure pointer to the instruction to output.</p>
</td>
...
...
@@ -104,7 +104,7 @@ struct MipiDsiCntlrMethod {// Member functions of the core layer structure
<tdclass="cellrowborder"valign="top"width="20%"headers="mcps1.2.6.1.2 "><pid="p151906102178"><aname="p151906102178"></a><aname="p151906102178"></a><strongid="b159559351014"><aname="b159559351014"></a><aname="b159559351014"></a>cntlr</strong>: structure pointer to the MIPI-DSI controller.</p>
<tdclass="cellrowborder"valign="top"width="20%"headers="mcps1.2.6.1.2 "><pid="p151906102178"><aname="p151906102178"></a><aname="p151906102178"></a><strongid="b159559351014"><aname="b159559351014"></a><aname="b159559351014"></a>cntlr</strong>: structure pointer to the MIPIDSI controller.</p>
<tdclass="cellrowborder"valign="top"width="20%"headers="mcps1.2.6.1.2 "><pid="p819121011714"><aname="p819121011714"></a><aname="p819121011714"></a><strongid="b189629351219"><aname="b189629351219"></a><aname="b189629351219"></a>cntlr</strong>: structure pointer to the MIPI-DSI controller.</p>
<tdclass="cellrowborder"valign="top"width="20%"headers="mcps1.2.6.1.2 "><pid="p819121011714"><aname="p819121011714"></a><aname="p819121011714"></a><strongid="b189629351219"><aname="b189629351219"></a><aname="b189629351219"></a>cntlr</strong>: structure pointer to the MIPIDSI controller.</p>
@@ -133,7 +133,7 @@ The following uses **mipi\_tx\_hi35xx.c** as an example to present the content
1. Generally, you need to configure the device attributes in **xx\_config.hcs** and add the **deviceNode** information to the **device\_info.hcs** file. The device attribute values are closely related to the default values or value range of the **MipiDsiCntlr** members at the core layer. The **deviceNode** information is related to the driver entry registration.
In this example, no additional attribute needs to be configured for the MIPI-DSI controller. If required, you need to add the **deviceMatchAttr** information to **deviceNode** in the **device\_info** file and add the **mipidsi\_config** file.
In this example, no additional attribute needs to be configured for the MIPIDSI controller. If required, you need to add the **deviceMatchAttr** information to **deviceNode** in the **device\_info** file and add the **mipidsi\_config** file.
- **device\_info.hcs** configuration reference
...
...
@@ -162,7 +162,7 @@ The following uses **mipi\_tx\_hi35xx.c** as an example to present the content
Generally, HDF calls the **Bind** function and then the **Init** function to load a driver. If **Init** fails to be called, HDF calls **Release** to release driver resources and exits.
- MIPI-DSI driver entry reference
- MIPIDSI driver entry reference
```
struct HdfDriverEntry g_mipiTxDriverEntry = {
...
...
@@ -177,7 +177,7 @@ The following uses **mipi\_tx\_hi35xx.c** as an example to present the content
3. Initialize the **MipiDsiCntlr** object at the core layer, including initializing the vendor custom structure \(transferring parameters and data\), instantiating **MipiDsiCntlrMethod**\(used to call underlying functions of the driver\) in **MipiDsiCntlr**, and implementing the **HdfDriverEntry** member functions \(**Bind**, **Init**, and **Release**\).
- Custom structure reference
To the driver, the custom structure carries parameters and data. The values in the **config** file are used to initialize the structure members. In this example, the MIPI-DSI has no device attribute file. Therefore, the basic member structure is similar to that of **MipiDsiCntlr**.
To the driver, the custom structure carries parameters and data. The values in the **config** file are used to initialize the structure members. In this example, the MIPIDSI has no device attribute file. Therefore, the basic member structure is similar to that of **MipiDsiCntlr**.