of_drm_find_and_get_bridge() returns NULL if the panel has not been
registered yet. Returning -ENODEV in this case makes the probe fail
instead of being retried, so the LDB is never bound and the display
pipeline never comes up:

  platform 32e90000.display-controller: deferred probe pending: imx-lcdif: 
Failed to get bridge for endpoint0

Return -EPROBE_DEFER, so that the probe is retried once the panel is
available.

Fixes: 802372cf316a ("drm/bridge: fsl-ldb: don't create a panel_bridge")
Signed-off-by: Dario Binacchi <[email protected]>

---

 drivers/gpu/drm/bridge/fsl-ldb.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/bridge/fsl-ldb.c b/drivers/gpu/drm/bridge/fsl-ldb.c
index 7ec84c81cd78..420b3e08130e 100644
--- a/drivers/gpu/drm/bridge/fsl-ldb.c
+++ b/drivers/gpu/drm/bridge/fsl-ldb.c
@@ -342,7 +342,7 @@ static int fsl_ldb_probe(struct platform_device *pdev)
        fsl_ldb->bridge.next_bridge = of_drm_find_and_get_bridge(panel_node);
        of_node_put(panel_node);
        if (!fsl_ldb->bridge.next_bridge)
-               return -ENODEV;
+               return -EPROBE_DEFER;
 
        if (fsl_ldb_is_dual(fsl_ldb)) {
                struct device_node *port1, *port2;
---
base-commit: c339f4010dea8b0d754f84ace70cd1b089878ef8
branch: fsl-ldb-defer-probe

-- 
2.43.0

Reply via email to