AnsweredAssumed Answered

Why does imx_sec_dsim_drv output EPROBE_DEFER?

Question asked by Takashi Kashiwagi on Feb 4, 2020
Latest reply on Feb 16, 2020 by Takashi Kashiwagi

Hi Community.

 

We are making a display driver according to the following thread.

Which driver should I use for "Lattice MIPI-DSI to LVDS Soft IP"? 

 

I have compiled the device-tree.
However, I got the following error. 

imx-drm display-subsystem: bound imx-lcdif-crtc.0 (ops lcdif_crtc_ops)
[imx_sec_dsim_bind (252)] encoder=ffff800027af6488
imx_sec_dsim_drv 32e10000.mipi_dsi: version number is 0x1060200
[sec_mipi_dsim_bind (1922)] TP
[sec_mipi_dsim_bind (1923)] encoder = ffff800027af6488, bridge=ffff800026dee780
[drm_bridge_attach (137)] TP
[sec_mipi_dsim_bridge_attach (799)] TP
[sec_mipi_dsim_bridge_attach (842)] TP
[drm_bridge_attach (140)] TP
imx_sec_dsim_drv 32e10000.mipi_dsi: Failed to attach bridge: 32e10000.mipi_dsi
[imx_sec_dsim_bind (268)] TP
imx_sec_dsim_drv 32e10000.mipi_dsi: failed to bind sec dsim bridge: -517
imx-drm display-subsystem: failed to bind 32e10000.mipi_dsi (ops imx_sec_dsim_ops): -517
imx-drm display-subsystem: master bind failed: -517

 

And I found that the following functions output errors.

  • drivers/gpu/drm/bridge/sec-dsim.c sec_mipi_dsim_bridge_attach L842

/* For the panel driver loading is after dsim bridge,
* defer bridge binding to wait for panel driver ready.
* The disadvantage of probe defer is endless probing
* in some cases.
*/
if (!next)
{
printk("[%s (%d)] TP\n", __func__, __LINE__);
return -EPROBE_DEFER;
}

 

Why does imx_sec_dsim_drv output EPROBE_DEFER?

Is the device-tree file written incorrectly?

&mipi_dsi {
status = "okay";

port@1 {
dsi_to_lvds: endpoint {
remote-endpoint = <&lvds_from_dsi>;
};
};
panel@0 {
status = "okay";
compatible = "teac,custom-lcd";
reg = <0>;
dsi-lanes = <4>;
video-mode = <2>; /* 0: burst mode
* 1: non-burst mode with sync event
* 2: non-burst mode with sync pulse
*/
panel-width-mm = <1547>;
panel-height-mm = <871>;
display-timings {
timing {
clock-frequency = <33000000>;
hactive = <800>;
vactive = <480>;
hfront-porch = <40>;
hsync-len = <48>;
hback-porch = <40>;
vfront-porch = <13>;
vsync-len = <3>;
vback-porch = <29>;
hsync-active = <0>;
vsync-active = <0>;
de-active = <1>;
pixelclk-active = <0>;
};
};
port {
lvds_from_dsi: endpoint {
remote-endpoint = <&dsi_to_lvds>;
};
};
};
};

 

 

 

Best Regards,

T.Kashiwagi

Outcomes