Now a panel_bridge is automatically created for every drm_panel, so this
code (similar to an open-coded variant of drm_of_find_panel_or_bridge())
would lead to creating a second panel_bridge for the same panel.

Fix and simplify the code by just getting a reference to the
already-existing bridge.

Signed-off-by: Luca Ceresoli <[email protected]>
---
 drivers/gpu/drm/bridge/samsung-dsim.c | 19 +++----------------
 1 file changed, 3 insertions(+), 16 deletions(-)

diff --git a/drivers/gpu/drm/bridge/samsung-dsim.c 
b/drivers/gpu/drm/bridge/samsung-dsim.c
index 5457a7b02a33..55d4e3aedb3d 100644
--- a/drivers/gpu/drm/bridge/samsung-dsim.c
+++ b/drivers/gpu/drm/bridge/samsung-dsim.c
@@ -1898,7 +1898,6 @@ static int samsung_dsim_host_attach(struct mipi_dsi_host 
*host,
        struct device *dev = dsi->dev;
        struct device_node *np = dev->of_node;
        struct device_node *remote;
-       struct drm_panel *panel;
        int ret = 0;
 
        /*
@@ -1931,21 +1930,9 @@ static int samsung_dsim_host_attach(struct mipi_dsi_host 
*host,
        if (!remote)
                return -ENODEV;
 
-       panel = of_drm_find_panel(remote);
-       if (!IS_ERR(panel)) {
-               next_bridge = devm_drm_panel_bridge_add(dev, panel);
-               drm_panel_put(panel);
-               if (IS_ERR(next_bridge)) {
-                       ret = PTR_ERR(next_bridge);
-                       next_bridge = NULL; // Inhibit the cleanup action on an 
ERR_PTR
-               } else {
-                       drm_bridge_get(next_bridge);
-               }
-       } else {
-               next_bridge = of_drm_find_and_get_bridge(remote);
-               if (!next_bridge)
-                       ret = -EINVAL;
-       }
+       next_bridge = of_drm_find_and_get_bridge(remote);
+       if (!next_bridge)
+               ret = -EINVAL;
 
        of_node_put(remote);
 

-- 
2.55.0

Reply via email to