Hi NXP Team,
I’m currently working on integrating the Lontium LT9211C display bridge with the i.MX8MP EVK. My use case is to input LVDS from the SoC and output MIPI DSI via the LT9211C. The panel side (MIPI) has been validated using the bridge’s internal pattern generator, so the output pipeline from the bridge to the panel is confirmed working.
However, when I configure the LT9211C for LVDS input, I don’t see any activity on the LVDS pixel clock from the SoC side. It seems like the LVDS output from the SoC is not enabled.
Here are the relevant changes I made in imx8mp-evk.dts:
&i2c3 {
lvds_bridge: lt9211c-bridge@2d {
compatible = "lontium,lt9211c";
reg = <0x2d>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_lt9211c_reset>;
vccio-supply = <<9211_1v8>;
reset-gpios = <&gpio1 10 GPIO_ACTIVE_LOW>;
status = "okay";
port {
lt9211c_in: endpoint {
remote-endpoint = <&lvds_out>;
};
};
};
};&ldb {
status = "okay";
fsl,data-mapping = "jeida";
fsl,data-width = <24>;
lvds-channel@0 {
status = "okay";
port@1 {
reg = <1>;
lvds_out: endpoint {
remote-endpoint = <<9211c_in>;
};
};
};
};From user-space, I don’t see any LVDS output signal or pixel clock.
I verified with a scope — the LVDS CLK lines from the SoC are flat.
cat /sys/kernel/debug/clk/clk_summary | grep ldb shows the clocks are not enabled:
media_ldb 0 0 0 1039500000 0 0 50000 N
media_ldb_root_clk 0 0 0 1039500000 0 0 50000 Nhere's the relevant log from dmesg:
root@imx8mp-lpddr4-evk:~# dmesg | grep -i drm
[ 1.960496] [drm] Initialized vivante 1.0.0 20170808 for 40000000.mix_gpu_ml on minor 0
[ 2.461595] imx-drm display-subsystem: bound imx-lcdifv3-crtc.0 (ops lcdifv3_crtc_ops)
[ 2.469595] imx-drm display-subsystem: bound imx-lcdifv3-crtc.1 (ops lcdifv3_crtc_ops)
[ 2.477563] imx-drm display-subsystem: bound imx-lcdifv3-crtc.2 (ops lcdifv3_crtc_ops)
[ 2.492643] [drm:drm_bridge_attach] *ERROR* failed to attach bridge /soc@0/bus@32c00000/mipi_dsi@32e60000 to encoder DSI-40: -19Do I need to define display timings under the ldb node or are they expected to be in the bridge/panel node?
Is any additional configuration required in the imx-lcdif or ldb nodes to enable LVDS output and clocks?
Is there any known issue or requirement with enabling LVDS in single-channel mode with external bridges like LT9211C?
Any guidance or suggestions you can provide to help bring up the LVDS output path would be greatly appreciated.
Hi,
You can refe the patch in this knowledge base:
Patch for LT9211 bridge on i.MX - NXP Community
Best Regards,
Zhiming
Thank you for sharing the patch. However, it appears to be intended for a MIPI to LVDS configuration. In my case, I’m working on the LVDS to MIPI use case. I’ve modified my imx8mp-evk.dts accordingly, using your patch as a reference. Unfortunately, the LVDS output from the SoC is still not active. I’m attaching my patch here for your review and would appreciate it if you could take a look.
Hi @rahul_ms__
If you want to use it as LVDS-MIPI converter, please add timing like other LVDS panel in panel-simple.c, not use panel-lvds.c. If there is any error in kernel log, please share.
Best Regards,
Zhiming
I have a doubt — in my case, the requirement is to bring the LVDS output to the LT9211C bridge, not directly to a panel. So, is it still necessary to configure the MIPI DSI panel?
Hi @rahul_ms__
There is no need to configure DSI panel, configure to LVDS level is enough.
Best Regards,
Zhiming
Thanks for the response. I’ve added the display parameters for my panel in panel-simple.c and updated the imx8mp-evk.dts accordingly. However, the display is still not working.
Could you help review the patches I’ve made and check if anything is missing or incorrect?
Hi @rahul_ms__
The linux driver can't support LVDS->DSI, please contact Lontium to get LVDS-DSI firmware. Then set it as simple panel , not use LVDS-->BRIDGE-->PANEL in dts, please use LVDS->simple panel.
Best Regards,
Zhiming
I’ve received the LVDS-to-DSI firmware from the Lontium vendor. So, just to clarify — are you saying that I don't need to define the remote-endpoint links inside the ports node of the bridge? Instead, I should configure only the panel settings using panel-simple and directly connect the ldb output to the panel's input via endpoints. In this case, I can use the imx8mp-evk-jdi-wuxga-lvds-panel.dtb overlay. And for the bridge node, I should only include the required configuration properties needed by the driver, without defining the ports. Is that correct?
lvds0_bridge:lt9211c-bridge@2d {
compatible = "lontium,lt9211c";
reg =<0x2d>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_lt9211c_reset>;
vccio-supply = <<9211_1v8>;
reset-gpios = <&gpio1 10 GPIO_ACTIVE_LOW>;
status = "okay";
};
Also, here's the patch I applied for the overlay device tree (.dtb) mentioned above.
diff --git a/home/linux/Documents/imx-yocto-bsp_mickeldore_1/lontium_build/tmp/work-shared/imx8mp-lpddr4-evk/kernel-source/arch/arm64/boot/dts/freescale/imx8mp-evk-jdi-wuxga-lvds-panel.dts b/home/linux/Documents/imx-yocto-bsp_mickeldore_1/sources/meta-Lontium/edited_files/imx8mp-evk-jdi-wuxga-lvds-panel.dts
index da71d94..c3484b8 100644
--- a/arch/arm64/boot/dts/freescale/imx8mp-evk-jdi-wuxga-lvds-panel.dts
+++ b/arch/arm64/boot/dts/freescale/imx8mp-evk-jdi-wuxga-lvds-panel.dts
@@ -7,7 +7,9 @@
/ {
lvds0_panel {
- compatible = "jdi,tx26d202vm0bwa";
+ //compatible = "jdi,tx26d202vm0bwa";
+ compatible = "tslcd,tst040wvbs-25c";
+
backlight = <&lvds_backlight>;
port {
Hi,
Yes, you can overlay imx8mp-evk-jdi-wuxga-lvds-panel.dts. At this point you can think of it as an LVDS screen and just need to send the correct LVDS timing. The LVDS-DSI part will be implemented by the firmware, not a linux driver.
As i know, the Lontium firmware only support few timings, your panel timing could not be supported. Please confirm with Lontium about your panel timing
Best Regards,
Zhiming