On Fri, Sep 10, 2021 at 03:09:41PM +0200, Maxime Ripard wrote: > The new devm_drm_of_get_bridge removes most of the boilerplate we > have to deal with. Let's switch to it. > > Signed-off-by: Maxime Ripard <maxime@xxxxxxxxxx> With the includes updated: Acked-by: Sam Ravnborg <sam@xxxxxxxxxxxx> Sam > --- > 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 16abc3a3d601..96c526f1022e 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> I fail to see why this include is needed? > #include <linux/module.h> > +#include <linux/of_graph.h> I think this should be drm_bridge.h. And drm_bridge.h hopefully pulls in what is needed. > #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 a185027911ce..a229da58962a 100644 > --- a/drivers/gpu/drm/vc4/vc4_dsi.c > +++ b/drivers/gpu/drm/vc4/vc4_dsi.c > @@ -1497,7 +1497,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; > @@ -1609,27 +1608,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_bridge(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); > @@ -1667,8 +1648,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