Hi, On Sat, May 26, 2018 at 08:24:52PM +0300, Laurent Pinchart wrote: > The omapdss_find_output_from_display() function is only used to retrieve > the dispc channel corresponding to the display. Return the dispc channel > directly, and rename the function to omapdss_device_get_dispc_channel() > to match its new purpose. > > The dssdev->id check is removed as the dssdev is guaranteed to be an > output and have a non-zero id, as proved by the lack of crash despite > the caller never checking the returned pointer before dereferencing it. > > As the function is not specific to outputs anymore, move it from > output.c to base.c. > > Signed-off-by: Laurent Pinchart <laurent.pinchart@xxxxxxxxxxxxxxxx> > --- Reviewed-by: Sebastian Reichel <sebastian.reichel@xxxxxxxxxxxxxxx> -- Sebastian > drivers/gpu/drm/omapdrm/dss/base.c | 9 +++++++++ > drivers/gpu/drm/omapdrm/dss/omapdss.h | 3 +-- > drivers/gpu/drm/omapdrm/dss/output.c | 12 ------------ > drivers/gpu/drm/omapdrm/omap_crtc.c | 5 +---- > 4 files changed, 11 insertions(+), 18 deletions(-) > > diff --git a/drivers/gpu/drm/omapdrm/dss/base.c b/drivers/gpu/drm/omapdrm/dss/base.c > index b4bc58c5134d..7f9d8a8be8c3 100644 > --- a/drivers/gpu/drm/omapdrm/dss/base.c > +++ b/drivers/gpu/drm/omapdrm/dss/base.c > @@ -236,6 +236,15 @@ void omapdss_device_disconnect(struct omap_dss_device *src, > } > EXPORT_SYMBOL_GPL(omapdss_device_disconnect); > > +enum omap_channel omapdss_device_get_dispc_channel(struct omap_dss_device *dssdev) > +{ > + while (dssdev->src) > + dssdev = dssdev->src; > + > + return dssdev->dispc_channel; > +} > +EXPORT_SYMBOL(omapdss_device_get_dispc_channel); > + > /* ----------------------------------------------------------------------------- > * Components Handling > */ > diff --git a/drivers/gpu/drm/omapdrm/dss/omapdss.h b/drivers/gpu/drm/omapdrm/dss/omapdss.h > index 4df405ae20db..121bc953ba31 100644 > --- a/drivers/gpu/drm/omapdrm/dss/omapdss.h > +++ b/drivers/gpu/drm/omapdrm/dss/omapdss.h > @@ -504,6 +504,7 @@ int omapdss_device_connect(struct dss_device *dss, > struct omap_dss_device *dst); > void omapdss_device_disconnect(struct omap_dss_device *src, > struct omap_dss_device *dst); > +enum omap_channel omapdss_device_get_dispc_channel(struct omap_dss_device *dssdev); > > int omap_dss_get_num_overlay_managers(void); > > @@ -513,8 +514,6 @@ int omapdss_output_set_device(struct omap_dss_device *out, > struct omap_dss_device *dssdev); > int omapdss_output_unset_device(struct omap_dss_device *out); > > -struct omap_dss_device *omapdss_find_output_from_display(struct omap_dss_device *dssdev); > - > typedef void (*omap_dispc_isr_t) (void *arg, u32 mask); > int omap_dispc_register_isr(omap_dispc_isr_t isr, void *arg, u32 mask); > int omap_dispc_unregister_isr(omap_dispc_isr_t isr, void *arg, u32 mask); > diff --git a/drivers/gpu/drm/omapdrm/dss/output.c b/drivers/gpu/drm/omapdrm/dss/output.c > index a5df6eed4aef..191b2e801257 100644 > --- a/drivers/gpu/drm/omapdrm/dss/output.c > +++ b/drivers/gpu/drm/omapdrm/dss/output.c > @@ -88,18 +88,6 @@ int omapdss_output_unset_device(struct omap_dss_device *out) > } > EXPORT_SYMBOL(omapdss_output_unset_device); > > -struct omap_dss_device *omapdss_find_output_from_display(struct omap_dss_device *dssdev) > -{ > - while (dssdev->src) > - dssdev = dssdev->src; > - > - if (dssdev->id != 0) > - return omapdss_device_get(dssdev); > - > - return NULL; > -} > -EXPORT_SYMBOL(omapdss_find_output_from_display); > - > int dss_install_mgr_ops(struct dss_device *dss, > const struct dss_mgr_ops *mgr_ops, > struct omap_drm_private *priv) > diff --git a/drivers/gpu/drm/omapdrm/omap_crtc.c b/drivers/gpu/drm/omapdrm/omap_crtc.c > index 4ddc4ed18b47..c5f1915aef67 100644 > --- a/drivers/gpu/drm/omapdrm/omap_crtc.c > +++ b/drivers/gpu/drm/omapdrm/omap_crtc.c > @@ -699,12 +699,9 @@ struct drm_crtc *omap_crtc_init(struct drm_device *dev, > struct drm_crtc *crtc = NULL; > struct omap_crtc *omap_crtc; > enum omap_channel channel; > - struct omap_dss_device *out; > int ret; > > - out = omapdss_find_output_from_display(dssdev); > - channel = out->dispc_channel; > - omapdss_device_put(out); > + channel = omapdss_device_get_dispc_channel(dssdev); > > DBG("%s", channel_names[channel]); > > -- > 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