Message ID | 20210910130941.1740182-4-maxime@cerno.tech (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | drm/bridge: Create a function to abstract panels away | expand |
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@cerno.tech> With the includes updated: Acked-by: Sam Ravnborg <sam@ravnborg.org> 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
Hi, On Sun, Sep 12, 2021 at 09:46:46PM +0200, Sam Ravnborg wrote: > 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@cerno.tech> > > With the includes updated: I'm not sure why they were even here to begin with, I've removed them. > Acked-by: Sam Ravnborg <sam@ravnborg.org> Applied the series with your comments addressed, thanks! Maxime
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> #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 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
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@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(-)