Hi everyone,
I'm working on enabling an LVDS panel on the i.MX93 custom board using Yocto and a custom device tree setup. I'm facing several issues during boot related to the display subsystem and LVDS panel connection. The config file I attached.
Any help or insights would be appreciated!
Thanks in advance!
here is the part of the lvds-panel dts configuration:
These are the relevant boot log messages:
[ 0.348510] platform lvds_panel: Fixed dependency cycle(s) with /ldb-display-controller/lvds-channel@0
[ 0.877239] imx93-ldb ldb-display-controller: Failed to create device link (0x180) with 4ae30000.lcd-controller
[ 1.611948] imx93-ldb ldb-display-controller: Failed to create device link (0x180) with ldb-phy
[ 1.623932] panel-lvds lvds_panel: /lvds_panel: problems parsing panel-timing (-2)
[ 1.631550] panel-lvds: probe of lvds_panel failed with error -2
I also see repeated binding of imx-lcdifv3-crtc.0:
[ 0.868877] imx-drm display-subsystem: bound imx-lcdifv3-crtc.0 (ops lcdifv3_crtc_ops)
...
[ 19.317586] imx-drm display-subsystem: bound imx-lcdifv3-crtc.0 (ops lcdifv3_crtc_ops)
[ 19.341381] imx-drm display-subsystem: bound imx-lcdifv3-crtc.0 (ops lcdifv3_crtc_ops)
[ 19.427728] platform imx-lcdifv3-crtc.0: deferred probe pending
Hi @bora
Please use belwo setting whcih i have verified the generation of pixel clock
&lcdif {
assigned-clock-rates = <45500000>, <6500000>, <400000000>, <133333333>;
};
New PLL:
Best Regards,
Zhiming
Hi @bora
Can you see any active signal on pixel clock interface and data line? Can you measure the real pixel clock on board?
Is there any other parameter need to be added into panel-timing referring the panel spec?
Best Regards,
Zhiming
Hi @bora
The timing in dts can't be parsed. Please refer panel-lvds in other dts, like below dts node.
panel {
compatible = "panel-lvds";
width-mm = <170>;
height-mm = <28>;
data-mapping = "jeida-18";
panel-timing {
clock-frequency = <49500000>;
hactive = <800>;
hback-porch = <48>;
hfront-porch = <312>;
hsync-len = <40>;
vactive = <600>;
vback-porch = <19>;
vfront-porch = <61>;
vsync-len = <20>;
hsync-active = <0>;
vsync-active = <0>;
de-active = <1>;
pixelclk-active = <1>;
};
port {
panel_out_bridge: endpoint {
remote-endpoint = <&bridge_out_panel>;
};
};
};
Best Regards,
Zhiming
Hi,
These are noisy log, please ignore them.
To support a new LVDS panel, you need to modify the lcdif node.
&lcdif {
assigned-clock-rates = <Pixel clock * 7>, <Pixel clock>, <400000000>, <133333333>;
};
Then modify the fracn_tbl in drivers/clk/imx/clk-fracn-gppll.c
PLL_FRACN_GP(455000000U, 151, 2, 3, 1, 8),
Best Regards,
Zhiming
Hi @bora
PLL_FRACN_GP(455000000U, 151, 2, 3, 1,
Best Regards,
Zhiming
Hi,
Why is the pixel clock here not 6.5 Mhz? If you define 6.5 MHz in the panel-simple/panel-timing node, then the lcdif device tree needs to be synchronized here as well.
assigned-clock-rates = <42000000>, <6000000>, <400000000>, <133333333>;
Best Regards,
Zhiming