androidlinux-kernellinux-device-driverbridgequalcomm

How to integrate device driver in MDSS (MIPI-DSI) subsystem for a MIPI-LVDS bridge?


We need to connect a LVDS screen to an APQ8096 platform so a MIPI-DSI/LVDS bridge has been chosen to convert MIPI bus to LVDS. The bridge used is SN65DSI85 from TI.

Through their forum, TI provided kernel module source code to configure the bridge but this code is tied with the DSS of OMAP platform. https://e2e.ti.com/support/interface/f/138/t/549283

I'm not familiar with MIPI and MDSS of Qualcomm devices, so I'm seeking for hints to integrate the code in the MDSS subsystem (mdss_dsi, mdss_panel, or somewhere else) in the Linux kernel. Kernel used is 3.18.71.


Solution

  • First, if SN65DSI85 is connected to APQ8096 via I2C, you should write an i2c driver to control SN65DSI85.

    TI should provide an example code to you for this. You need to configure it with the display panel's parameters, like: height,width,bpp,fps, and optional hbp(horizontal black porch), hfp, vbp, vfp,etc.

    Once SN65DSI85 is configured correctly and working, APQ8096 will take it as a MIPI panel.

    Go to qualcomm's website: "https://createpoint.qti.qualcomm.com/", find document for display bring up like: "80-nu323-3_b_multimedia driver development and bringup guide - display.pdf" (APQ8096 may use different file number).

    Follow the doc, and take the same panel parameters as input, you should able to bring up your panel.

    Usually, you only need to change dtsi files, like:

    arch/arm/boot/dts/qcom/dsi-panel-xxxxx.dtsi
    arch/arm/boot/dts/qcom/common-8096xxxx.dtsi
    

    But if you have additional control of gpio/power/notification, you can also add them in:

    drivers/video/msm/mdss/