Hi, On Tue, Feb 13, 2018 at 02:00:41PM +0200, Laurent Pinchart wrote: > Remove the global dispc ops variable by storing it in the dss_device > structure. > > Signed-off-by: Laurent Pinchart <laurent.pinchart@xxxxxxxxxxxxxxxx> Reviewed-by: Sebastian Reichel <sebastian.reichel@xxxxxxxxxxxxxxx> -- Sebastian > --- > drivers/gpu/drm/omapdrm/dss/base.c | 13 ++++--------- > drivers/gpu/drm/omapdrm/dss/dispc.c | 6 ++++-- > drivers/gpu/drm/omapdrm/dss/dss.h | 2 ++ > drivers/gpu/drm/omapdrm/dss/omapdss.h | 3 +-- > drivers/gpu/drm/omapdrm/omap_crtc.c | 4 +--- > drivers/gpu/drm/omapdrm/omap_drv.c | 5 ++--- > 6 files changed, 14 insertions(+), 19 deletions(-) > > diff --git a/drivers/gpu/drm/omapdrm/dss/base.c b/drivers/gpu/drm/omapdrm/dss/base.c > index 6346bc967a77..c248c3c31904 100644 > --- a/drivers/gpu/drm/omapdrm/dss/base.c > +++ b/drivers/gpu/drm/omapdrm/dss/base.c > @@ -18,10 +18,11 @@ > #include <linux/of.h> > #include <linux/of_graph.h> > #include <linux/list.h> > + > +#include "dss.h" > #include "omapdss.h" > > static struct dss_device *dss_device; > -static const struct dispc_ops *ops; > > static struct list_head omapdss_comp_list; > > @@ -43,15 +44,9 @@ void omapdss_set_dss(struct dss_device *dss) > } > EXPORT_SYMBOL(omapdss_set_dss); > > -void dispc_set_ops(const struct dispc_ops *o) > -{ > - ops = o; > -} > -EXPORT_SYMBOL(dispc_set_ops); > - > -const struct dispc_ops *dispc_get_ops(void) > +const struct dispc_ops *dispc_get_ops(struct dss_device *dss) > { > - return ops; > + return dss->dispc_ops; > } > EXPORT_SYMBOL(dispc_get_ops); > > diff --git a/drivers/gpu/drm/omapdrm/dss/dispc.c b/drivers/gpu/drm/omapdrm/dss/dispc.c > index 8019cc9f4f97..aae6037f499f 100644 > --- a/drivers/gpu/drm/omapdrm/dss/dispc.c > +++ b/drivers/gpu/drm/omapdrm/dss/dispc.c > @@ -4622,7 +4622,7 @@ static int dispc_bind(struct device *dev, struct device *master, void *data) > > dispc_runtime_put(); > > - dispc_set_ops(&dispc_ops); > + dss->dispc_ops = &dispc_ops; > > dispc.debugfs = dss_debugfs_create_file(dss, "dispc", dispc_dump_regs, > &dispc); > @@ -4637,9 +4637,11 @@ static int dispc_bind(struct device *dev, struct device *master, void *data) > static void dispc_unbind(struct device *dev, struct device *master, > void *data) > { > + struct dss_device *dss = dispc.dss; > + > dss_debugfs_remove_file(dispc.debugfs); > > - dispc_set_ops(NULL); > + dss->dispc_ops = NULL; > > pm_runtime_disable(dev); > > diff --git a/drivers/gpu/drm/omapdrm/dss/dss.h b/drivers/gpu/drm/omapdrm/dss/dss.h > index 764c52025a27..348378f1b5a5 100644 > --- a/drivers/gpu/drm/omapdrm/dss/dss.h > +++ b/drivers/gpu/drm/omapdrm/dss/dss.h > @@ -271,6 +271,8 @@ struct dss_device { > struct dss_pll *plls[4]; > struct dss_pll *video1_pll; > struct dss_pll *video2_pll; > + > + const struct dispc_ops *dispc_ops; > }; > > /* core */ > diff --git a/drivers/gpu/drm/omapdrm/dss/omapdss.h b/drivers/gpu/drm/omapdrm/dss/omapdss.h > index 312485714703..4bf7843b4aec 100644 > --- a/drivers/gpu/drm/omapdrm/dss/omapdss.h > +++ b/drivers/gpu/drm/omapdrm/dss/omapdss.h > @@ -733,8 +733,7 @@ struct dispc_ops { > const u32 *(*ovl_get_color_modes)(enum omap_plane_id plane); > }; > > -void dispc_set_ops(const struct dispc_ops *o); > -const struct dispc_ops *dispc_get_ops(void); > +const struct dispc_ops *dispc_get_ops(struct dss_device *dss); > > bool omapdss_component_is_display(struct device_node *node); > bool omapdss_component_is_output(struct device_node *node); > diff --git a/drivers/gpu/drm/omapdrm/omap_crtc.c b/drivers/gpu/drm/omapdrm/omap_crtc.c > index 61d8d17a4243..ffe4f698d291 100644 > --- a/drivers/gpu/drm/omapdrm/omap_crtc.c > +++ b/drivers/gpu/drm/omapdrm/omap_crtc.c > @@ -117,12 +117,10 @@ static int omap_crtc_dss_connect(struct omap_drm_private *priv, > enum omap_channel channel, > struct omap_dss_device *dst) > { > - const struct dispc_ops *dispc_ops = dispc_get_ops(); > - > if (omap_crtc_output[channel]) > return -EINVAL; > > - if ((dispc_ops->mgr_get_supported_outputs(channel) & dst->id) == 0) > + if (!(priv->dispc_ops->mgr_get_supported_outputs(channel) & dst->id)) > return -EINVAL; > > omap_crtc_output[channel] = dst; > diff --git a/drivers/gpu/drm/omapdrm/omap_drv.c b/drivers/gpu/drm/omapdrm/omap_drv.c > index 003445b70ee7..a93916cd0258 100644 > --- a/drivers/gpu/drm/omapdrm/omap_drv.c > +++ b/drivers/gpu/drm/omapdrm/omap_drv.c > @@ -520,6 +520,8 @@ static int omapdrm_init(struct omap_drm_private *priv, struct device *dev) > DBG("%s", dev_name(dev)); > > priv->dev = dev; > + priv->dss = omapdss_get_dss(); > + priv->dispc_ops = dispc_get_ops(priv->dss); > > omap_crtc_pre_init(priv); > > @@ -527,9 +529,6 @@ static int omapdrm_init(struct omap_drm_private *priv, struct device *dev) > if (ret) > goto err_crtc_uninit; > > - priv->dss = omapdss_get_dss(); > - priv->dispc_ops = dispc_get_ops(); > - > soc = soc_device_match(omapdrm_soc_devices); > priv->omaprev = soc ? (unsigned int)soc->data : 0; > priv->wq = alloc_ordered_workqueue("omapdrm", 0); > -- > Regards, > > Laurent Pinchart > > _______________________________________________ > dri-devel mailing list > dri-devel@xxxxxxxxxxxxxxxxxxxxx > https://lists.freedesktop.org/mailman/listinfo/dri-devel
Attachment:
signature.asc
Description: PGP signature
_______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel