As I want to drive LT9611UXC with linux driver, I set the device tree as below, and I face the Error message you mentioned.
&dsi {
status = "okay";
#address-cells = <1>;
#size-cells = <0>;
bridge@0 {
compatible = "lontuim,lt9611uxc";
reset-gpio = <&gpio3 26 GPIO_ACTIVE_HIGH>;
reg = <0>;
status = "okay";
port {
lt9611_to_dsi: endpoint {
remote-endpoint = <&dsi_to_lt9611>;
};
};
};
ports {
port@1 {
reg = <1>;
dsi_to_lt9611: endpoint {
remote-endpoint = <<9611_to_dsi>;
};
};
};
};
root@imx93evk:~# dmesg | grep 4ae10000
[ 0.333170] platform 4ae10000.dsi: Fixed dependency cycle(s) with /soc@0/dsi@4ae10000/bridge@0/port/endpoint
[ 0.342994] platform 4ae30000.lcd-controller: Fixed dependency cycle(s) with /soc@0/dsi@4ae10000/ports/port@0/endpoint
[ 1.744375] mipi-dsi 4ae10000.dsi.0: Fixed dependency cycle(s) with /soc@0/dsi@4ae10000/ports/port@1/endpoint
[ 1.762986] [drm:drm_bridge_attach] *ERROR* failed to attach bridge /soc@0/dsi@4ae10000 to encoder DSI-34: -517
[ 1.773085] dw-mipi-dsi-imx 4ae10000.dsi: [drm:dw_mipi_dsi_imx_bind] *ERROR* failed to attach bridge: -517
[ 1.782941] dw-mipi-dsi-imx 4ae10000.dsi: [drm:dw_mipi_dsi_imx_probe] *ERROR* failed to register component: -517
[ 2.149832] [drm:drm_bridge_attach] *ERROR* failed to attach bridge /soc@0/dsi@4ae10000 to encoder DSI-34: -517
[ 2.159922] dw-mipi-dsi-imx 4ae10000.dsi: [drm:dw_mipi_dsi_imx_bind] *ERROR* failed to attach bridge: -517
[ 2.169780] dw-mipi-dsi-imx 4ae10000.dsi: [drm:dw_mipi_dsi_imx_probe] *ERROR* failed to register component: -517
[ 2.205168] [drm:drm_bridge_attach] *ERROR* failed to attach bridge /soc@0/dsi@4ae10000 to encoder DSI-34: -517
[ 2.215333] dw-mipi-dsi-imx 4ae10000.dsi: [drm:dw_mipi_dsi_imx_bind] *ERROR* failed to attach bridge: -517
[ 2.225218] dw-mipi-dsi-imx 4ae10000.dsi: [drm:dw_mipi_dsi_imx_probe] *ERROR* failed to register component: -517
[ 2.251503] [drm:drm_bridge_attach] *ERROR* failed to attach bridge /soc@0/dsi@4ae10000 to encoder DSI-34: -517
[ 2.261661] dw-mipi-dsi-imx 4ae10000.dsi: [drm:dw_mipi_dsi_imx_bind] *ERROR* failed to attach bridge: -517
[ 2.271553] dw-mipi-dsi-imx 4ae10000.dsi: [drm:dw_mipi_dsi_imx_probe] *ERROR* failed to register component: -517
[ 2.297873] [drm:drm_bridge_attach] *ERROR* failed to attach bridge /soc@0/dsi@4ae10000 to encoder DSI-34: -517
[ 2.308045] dw-mipi-dsi-imx 4ae10000.dsi: [drm:dw_mipi_dsi_imx_bind] *ERROR* failed to attach bridge: -517
[ 2.317937] dw-mipi-dsi-imx 4ae10000.dsi: [drm:dw_mipi_dsi_imx_probe] *ERROR* failed to register component: -517
[ 2.503080] [drm:drm_bridge_attach] *ERROR* failed to attach bridge /soc@0/dsi@4ae10000 to encoder DSI-34: -517
[ 2.513180] dw-mipi-dsi-imx 4ae10000.dsi: [drm:dw_mipi_dsi_imx_bind] *ERROR* failed to attach bridge: -517
[ 2.523038] dw-mipi-dsi-imx 4ae10000.dsi: [drm:dw_mipi_dsi_imx_probe] *ERROR* failed to register component: -517
[ 8.107721] [drm:drm_bridge_attach] *ERROR* failed to attach bridge /soc@0/dsi@4ae10000 to encoder DSI-34: -517
[ 8.107749] dw-mipi-dsi-imx 4ae10000.dsi: [drm:dw_mipi_dsi_imx_bind] *ERROR* failed to attach bridge: -517
[ 8.108034] dw-mipi-dsi-imx 4ae10000.dsi: [drm:dw_mipi_dsi_imx_probe] *ERROR* failed to register component: -517
[ 8.189924] [drm:drm_bridge_attach] *ERROR* failed to attach bridge /soc@0/dsi@4ae10000 to encoder DSI-34: -517
[ 8.227541] dw-mipi-dsi-imx 4ae10000.dsi: [drm:dw_mipi_dsi_imx_bind] *ERROR* failed to attach bridge: -517
[ 8.255814] dw-mipi-dsi-imx 4ae10000.dsi: [drm:dw_mipi_dsi_imx_probe] *ERROR* failed to register component: -517
[ 19.097281] [drm:drm_bridge_attach] *ERROR* failed to attach bridge /soc@0/dsi@4ae10000 to encoder DSI-34: -517
[ 19.109253] dw-mipi-dsi-imx 4ae10000.dsi: [drm:dw_mipi_dsi_imx_bind] *ERROR* failed to attach bridge: -517
[ 19.120857] dw-mipi-dsi-imx 4ae10000.dsi: [drm:dw_mipi_dsi_imx_probe] *ERROR* failed to register component: -517
[ 19.216430] platform 4ae10000.dsi: deferred probe pending
I had already modified the lt9611uxc driver, move the lt9611uxc_attach_dsi function in lt9611uxc_probe to lt9611uxc_bridge_attach as below.
static int lt9611uxc_bridge_attach(struct drm_bridge *bridge,
enum drm_bridge_attach_flags flags)
{
struct lt9611uxc *lt9611uxc = bridge_to_lt9611uxc(bridge);
int ret;
if (!(flags & DRM_BRIDGE_ATTACH_NO_CONNECTOR)) {
ret = lt9611uxc_connector_init(bridge, lt9611uxc);
if (ret < 0)
return ret;
}
/* Attach primary DSI */
lt9611uxc->dsi0 = lt9611uxc_attach_dsi(lt9611uxc, lt9611uxc->dsi0_node);
//if (IS_ERR(lt9611uxc->dsi0)) {
// ret = PTR_ERR(lt9611uxc->dsi0);
// goto err_remove_bridge;
//}
/* Attach secondary DSI, if specified */
if (lt9611uxc->dsi1_node) {
lt9611uxc->dsi1 = lt9611uxc_attach_dsi(lt9611uxc, lt9611uxc->dsi1_node);
//if (IS_ERR(lt9611uxc->dsi1)) {
// ret = PTR_ERR(lt9611uxc->dsi1);
// goto err_remove_bridge;
//}
}
return 0;
}
Seems I can still get the -517 Error message.