[PATCH v2 51/60] drm/omap: Reverse direction of DSS device (dis)connect operations
Laurent Pinchart
laurent.pinchart at ideasonboard.com
Mon Jun 11 19:21:31 UTC 2018
Hi Sebastian,
On Monday, 11 June 2018 14:59:13 EEST Sebastian Reichel wrote:
> On Sat, May 26, 2018 at 08:25:09PM +0300, Laurent Pinchart wrote:
> > The omapdrm and omapdss drivers are architectured based on display
> > pipelines made of multiple components handled from sink (display) to
> > source (DSS output). This is incompatible with the DRM bridge and panel
> > APIs that handle components from source to sink.
> >
> > To reconcile the omapdrm and omapdss drivers with the DRM bridge and
> > panel model, we need to reverse the direction of the DSS device
> > operations. Start with the connect and disconnect operations.
> >
> > Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
> > ---
>
> Looks mostly good, but I found one issue:
>
> [...]
>
> > -static void dsicm_disconnect(struct omap_dss_device *dssdev)
> > +static void dsicm_disconnect(struct omap_dss_device *src,
> > + struct omap_dss_device *dst)
> > {
> > - struct panel_drv_data *ddata = to_panel_data(dssdev);
> > - struct omap_dss_device *src = dssdev->src;
> > + struct panel_drv_data *ddata = to_panel_data(dst);
> >
> > src->ops->dsi.release_vc(src, ddata->channel);
>
> ^^^ using src in dsicm_disconnect()
>
> > - omapdss_device_disconnect(src, dssdev);
> > -
> > - omapdss_device_put(src);
> > }
> >
> > static int dsicm_enable(struct omap_dss_device *dssdev)
> > @@ -1404,7 +1382,7 @@ static int __exit dsicm_remove(struct
> > platform_device *pdev)>
> > omapdss_device_unregister(dssdev);
> >
> > dsicm_disable(dssdev);
> > - dsicm_disconnect(dssdev);
> > + dsicm_disconnect(NULL, dssdev);
>
> ^^^ calling dsicm_disconnect() with src=NULL
>
> This will execute dsi_release_vc(NULL, channel), which will try to
> dereference NULL.
Good catch. I'll replace this line with
dsicm_disconnect(dssdev->src, dssdev);
--
Regards,
Laurent Pinchart
More information about the dri-devel
mailing list