The new drm_of_get_next removes most of the boilerplate we have to deal
with. Let's switch to it.

Signed-off-by: Maxime Ripard <max...@cerno.tech>
---
 drivers/gpu/drm/vc4/vc4_drv.c |  2 ++
 drivers/gpu/drm/vc4/vc4_dsi.c | 28 ++++------------------------
 2 files changed, 6 insertions(+), 24 deletions(-)

diff --git a/drivers/gpu/drm/vc4/vc4_drv.c b/drivers/gpu/drm/vc4/vc4_drv.c
index 73335feb712f..ff056ee8bc4b 100644
--- a/drivers/gpu/drm/vc4/vc4_drv.c
+++ b/drivers/gpu/drm/vc4/vc4_drv.c
@@ -25,7 +25,9 @@
 #include <linux/device.h>
 #include <linux/dma-mapping.h>
 #include <linux/io.h>
+#include <linux/i2c.h>
 #include <linux/module.h>
+#include <linux/of_graph.h>
 #include <linux/of_platform.h>
 #include <linux/platform_device.h>
 #include <linux/pm_runtime.h>
diff --git a/drivers/gpu/drm/vc4/vc4_dsi.c b/drivers/gpu/drm/vc4/vc4_dsi.c
index 6dfcbd9e234e..f51ce8db0f4e 100644
--- a/drivers/gpu/drm/vc4/vc4_dsi.c
+++ b/drivers/gpu/drm/vc4/vc4_dsi.c
@@ -1489,7 +1489,6 @@ static int vc4_dsi_bind(struct device *dev, struct device 
*master, void *data)
        struct drm_device *drm = dev_get_drvdata(master);
        struct vc4_dsi *dsi = dev_get_drvdata(dev);
        struct vc4_dsi_encoder *vc4_dsi_encoder;
-       struct drm_panel *panel;
        const struct of_device_id *match;
        dma_cap_mask_t dma_mask;
        int ret;
@@ -1601,27 +1600,9 @@ static int vc4_dsi_bind(struct device *dev, struct 
device *master, void *data)
                return ret;
        }
 
-       ret = drm_of_find_panel_or_bridge(dev->of_node, 0, 0,
-                                         &panel, &dsi->bridge);
-       if (ret) {
-               /* If the bridge or panel pointed by dev->of_node is not
-                * enabled, just return 0 here so that we don't prevent the DRM
-                * dev from being registered. Of course that means the DSI
-                * encoder won't be exposed, but that's not a problem since
-                * nothing is connected to it.
-                */
-               if (ret == -ENODEV)
-                       return 0;
-
-               return ret;
-       }
-
-       if (panel) {
-               dsi->bridge = devm_drm_panel_bridge_add_typed(dev, panel,
-                                                             
DRM_MODE_CONNECTOR_DSI);
-               if (IS_ERR(dsi->bridge))
-                       return PTR_ERR(dsi->bridge);
-       }
+       dsi->bridge = devm_drm_of_get_next(dev, dev->of_node, 0, 0);
+       if (IS_ERR(dsi->bridge))
+               return PTR_ERR(dsi->bridge);
 
        /* The esc clock rate is supposed to always be 100Mhz. */
        ret = clk_set_rate(dsi->escape_clock, 100 * 1000000);
@@ -1661,8 +1642,7 @@ static void vc4_dsi_unbind(struct device *dev, struct 
device *master,
 {
        struct vc4_dsi *dsi = dev_get_drvdata(dev);
 
-       if (dsi->bridge)
-               pm_runtime_disable(dev);
+       pm_runtime_disable(dev);
 
        /*
         * Restore the bridge_chain so the bridge detach procedure can happen
-- 
2.31.1

Reply via email to