video: stm32: remove all child of DSI bridge when its probe failed
authorPatrick Delaunay <patrick.delaunay@st.com>
Thu, 4 Mar 2021 12:10:33 +0000 (13:10 +0100)
committerPatrice Chotard <patrice.chotard@foss.st.com>
Thu, 11 Mar 2021 16:55:09 +0000 (17:55 +0100)
Remove the child device of the STM32 DSI bridge when the driver probe
failed to stop futher probe request on panels used with STMicroelectronics
board (orisetech_otm8009a.c or raydium-rm68200.c driver).

This patch avoid the trace "cannot get reset GPIO" when
STM32MP157 device tree is used on stm32MP151 SOC without DSI support.

In this hw_version value is 0, as DSI bridge is absent and the panel
ofdata_to_platdata is called for each try of panel probe,
the gpio reset pin is requested but after dsi father probe failed).

For the next request, the PANEL ofdata_to_platdata failed as the gpio
is already used.

Signed-off-by: Patrick Delaunay <patrick.delaunay@st.com>
Signed-off-by: Patrick Delaunay <patrick.delaunay@foss.st.com>
Reviewed-by: Patrice Chotard <patrice.chotard@foss.st.com>
drivers/video/stm32/stm32_dsi.c

index 8891ca4..4027e97 100644 (file)
@@ -483,6 +483,9 @@ static int stm32_dsi_probe(struct udevice *dev)
        if (priv->hw_version != HWVER_130 &&
            priv->hw_version != HWVER_131) {
                dev_err(dev, "DSI version 0x%x not supported\n", priv->hw_version);
+               dev_dbg(dev, "remove and unbind all DSI child\n");
+               device_chld_remove(dev, NULL, DM_REMOVE_NORMAL);
+               device_chld_unbind(dev, NULL);
                ret = -ENODEV;
                goto err_clk;
        }