Hi, On Sat, May 26, 2018 at 08:24:38PM +0300, Laurent Pinchart wrote: > The omap_dss_device objects model display components and are connected > at runtime to create display pipelines. The connect and disconnect > operations implemented by each component contain lots of duplicate code. > As a first step towards fixing this, create new functions to wrap the > direct calls to those operations and use them. > > Signed-off-by: Laurent Pinchart <laurent.pinchart@xxxxxxxxxxxxxxxx> > --- Reviewed-by: Sebastian Reichel <sebastian.reichel@xxxxxxxxxxxxxxx> -- Sebastian > .../gpu/drm/omapdrm/displays/connector-analog-tv.c | 4 ++-- > drivers/gpu/drm/omapdrm/displays/connector-dvi.c | 4 ++-- > drivers/gpu/drm/omapdrm/displays/connector-hdmi.c | 4 ++-- > drivers/gpu/drm/omapdrm/displays/encoder-opa362.c | 4 ++-- > drivers/gpu/drm/omapdrm/displays/encoder-tfp410.c | 4 ++-- > drivers/gpu/drm/omapdrm/displays/encoder-tpd12s015.c | 4 ++-- > drivers/gpu/drm/omapdrm/displays/panel-dpi.c | 4 ++-- > drivers/gpu/drm/omapdrm/displays/panel-dsi-cm.c | 6 +++--- > .../drm/omapdrm/displays/panel-lgphilips-lb035q02.c | 4 ++-- > .../gpu/drm/omapdrm/displays/panel-nec-nl8048hl11.c | 4 ++-- > .../drm/omapdrm/displays/panel-sharp-ls037v7dw01.c | 4 ++-- > .../gpu/drm/omapdrm/displays/panel-sony-acx565akm.c | 4 ++-- > .../gpu/drm/omapdrm/displays/panel-tpo-td028ttec1.c | 4 ++-- > .../gpu/drm/omapdrm/displays/panel-tpo-td043mtea1.c | 4 ++-- > drivers/gpu/drm/omapdrm/dss/base.c | 20 ++++++++++++++++++++ > drivers/gpu/drm/omapdrm/dss/omapdss.h | 4 ++++ > drivers/gpu/drm/omapdrm/omap_drv.c | 4 ++-- > 17 files changed, 55 insertions(+), 31 deletions(-) > > diff --git a/drivers/gpu/drm/omapdrm/displays/connector-analog-tv.c b/drivers/gpu/drm/omapdrm/displays/connector-analog-tv.c > index a94868d9398b..41ba3c5dbe7d 100644 > --- a/drivers/gpu/drm/omapdrm/displays/connector-analog-tv.c > +++ b/drivers/gpu/drm/omapdrm/displays/connector-analog-tv.c > @@ -59,7 +59,7 @@ static int tvc_connect(struct omap_dss_device *dssdev) > return PTR_ERR(in); > } > > - r = in->ops->connect(in, dssdev); > + r = omapdss_device_connect(in, dssdev); > if (r) { > omap_dss_put_device(in); > return r; > @@ -79,7 +79,7 @@ static void tvc_disconnect(struct omap_dss_device *dssdev) > if (!omapdss_device_is_connected(dssdev)) > return; > > - in->ops->disconnect(in, dssdev); > + omapdss_device_disconnect(in, dssdev); > > omap_dss_put_device(in); > ddata->in = NULL; > diff --git a/drivers/gpu/drm/omapdrm/displays/connector-dvi.c b/drivers/gpu/drm/omapdrm/displays/connector-dvi.c > index 021e3b651c89..f193bbda550c 100644 > --- a/drivers/gpu/drm/omapdrm/displays/connector-dvi.c > +++ b/drivers/gpu/drm/omapdrm/displays/connector-dvi.c > @@ -72,7 +72,7 @@ static int dvic_connect(struct omap_dss_device *dssdev) > return PTR_ERR(in); > } > > - r = in->ops->connect(in, dssdev); > + r = omapdss_device_connect(in, dssdev); > if (r) { > omap_dss_put_device(in); > return r; > @@ -90,7 +90,7 @@ static void dvic_disconnect(struct omap_dss_device *dssdev) > if (!omapdss_device_is_connected(dssdev)) > return; > > - in->ops->disconnect(in, dssdev); > + omapdss_device_disconnect(in, dssdev); > > omap_dss_put_device(in); > ddata->in = NULL; > diff --git a/drivers/gpu/drm/omapdrm/displays/connector-hdmi.c b/drivers/gpu/drm/omapdrm/displays/connector-hdmi.c > index b528bd51ada3..014554afbb0d 100644 > --- a/drivers/gpu/drm/omapdrm/displays/connector-hdmi.c > +++ b/drivers/gpu/drm/omapdrm/displays/connector-hdmi.c > @@ -69,7 +69,7 @@ static int hdmic_connect(struct omap_dss_device *dssdev) > return PTR_ERR(in); > } > > - r = in->ops->connect(in, dssdev); > + r = omapdss_device_connect(in, dssdev); > if (r) { > omap_dss_put_device(in); > return r; > @@ -89,7 +89,7 @@ static void hdmic_disconnect(struct omap_dss_device *dssdev) > if (!omapdss_device_is_connected(dssdev)) > return; > > - in->ops->disconnect(in, dssdev); > + omapdss_device_disconnect(in, dssdev); > > omap_dss_put_device(in); > ddata->in = NULL; > diff --git a/drivers/gpu/drm/omapdrm/displays/encoder-opa362.c b/drivers/gpu/drm/omapdrm/displays/encoder-opa362.c > index 37982ffe0ad4..752b565987c1 100644 > --- a/drivers/gpu/drm/omapdrm/displays/encoder-opa362.c > +++ b/drivers/gpu/drm/omapdrm/displays/encoder-opa362.c > @@ -50,7 +50,7 @@ static int opa362_connect(struct omap_dss_device *dssdev, > return PTR_ERR(in); > } > > - r = in->ops->connect(in, dssdev); > + r = omapdss_device_connect(in, dssdev); > if (r) { > omap_dss_put_device(in); > return r; > @@ -82,7 +82,7 @@ static void opa362_disconnect(struct omap_dss_device *dssdev, > dst->src = NULL; > dssdev->dst = NULL; > > - in->ops->disconnect(in, &ddata->dssdev); > + omapdss_device_disconnect(in, &ddata->dssdev); > > omap_dss_put_device(in); > ddata->in = NULL; > diff --git a/drivers/gpu/drm/omapdrm/displays/encoder-tfp410.c b/drivers/gpu/drm/omapdrm/displays/encoder-tfp410.c > index 1fbc5559e54f..a8660e5e5ffc 100644 > --- a/drivers/gpu/drm/omapdrm/displays/encoder-tfp410.c > +++ b/drivers/gpu/drm/omapdrm/displays/encoder-tfp410.c > @@ -44,7 +44,7 @@ static int tfp410_connect(struct omap_dss_device *dssdev, > return PTR_ERR(in); > } > > - r = in->ops->connect(in, dssdev); > + r = omapdss_device_connect(in, dssdev); > if (r) { > omap_dss_put_device(in); > return r; > @@ -74,7 +74,7 @@ static void tfp410_disconnect(struct omap_dss_device *dssdev, > dst->src = NULL; > dssdev->dst = NULL; > > - in->ops->disconnect(in, &ddata->dssdev); > + omapdss_device_disconnect(in, &ddata->dssdev); > > omap_dss_put_device(in); > ddata->in = NULL; > diff --git a/drivers/gpu/drm/omapdrm/displays/encoder-tpd12s015.c b/drivers/gpu/drm/omapdrm/displays/encoder-tpd12s015.c > index 21a4a2fd42bf..640f15b88467 100644 > --- a/drivers/gpu/drm/omapdrm/displays/encoder-tpd12s015.c > +++ b/drivers/gpu/drm/omapdrm/displays/encoder-tpd12s015.c > @@ -49,7 +49,7 @@ static int tpd_connect(struct omap_dss_device *dssdev, > return PTR_ERR(in); > } > > - r = in->ops->connect(in, dssdev); > + r = omapdss_device_connect(in, dssdev); > if (r) { > omap_dss_put_device(in); > return r; > @@ -85,7 +85,7 @@ static void tpd_disconnect(struct omap_dss_device *dssdev, > dst->src = NULL; > dssdev->dst = NULL; > > - in->ops->disconnect(in, &ddata->dssdev); > + omapdss_device_disconnect(in, &ddata->dssdev); > > omap_dss_put_device(in); > ddata->in = NULL; > diff --git a/drivers/gpu/drm/omapdrm/displays/panel-dpi.c b/drivers/gpu/drm/omapdrm/displays/panel-dpi.c > index 15042351ace3..987519501336 100644 > --- a/drivers/gpu/drm/omapdrm/displays/panel-dpi.c > +++ b/drivers/gpu/drm/omapdrm/displays/panel-dpi.c > @@ -50,7 +50,7 @@ static int panel_dpi_connect(struct omap_dss_device *dssdev) > return PTR_ERR(in); > } > > - r = in->ops->connect(in, dssdev); > + r = omapdss_device_connect(in, dssdev); > if (r) { > omap_dss_put_device(in); > return r; > @@ -68,7 +68,7 @@ static void panel_dpi_disconnect(struct omap_dss_device *dssdev) > if (!omapdss_device_is_connected(dssdev)) > return; > > - in->ops->disconnect(in, dssdev); > + omapdss_device_disconnect(in, dssdev); > > omap_dss_put_device(in); > ddata->in = NULL; > diff --git a/drivers/gpu/drm/omapdrm/displays/panel-dsi-cm.c b/drivers/gpu/drm/omapdrm/displays/panel-dsi-cm.c > index 4296f4ca39fe..b7cd2ef17fbb 100644 > --- a/drivers/gpu/drm/omapdrm/displays/panel-dsi-cm.c > +++ b/drivers/gpu/drm/omapdrm/displays/panel-dsi-cm.c > @@ -772,7 +772,7 @@ static int dsicm_connect(struct omap_dss_device *dssdev) > return PTR_ERR(in); > } > > - r = in->ops->connect(in, dssdev); > + r = omapdss_device_connect(in, dssdev); > if (r) { > dev_err(dev, "Failed to connect to video source\n"); > goto err_connect; > @@ -796,7 +796,7 @@ static int dsicm_connect(struct omap_dss_device *dssdev) > err_vc_id: > in->ops->dsi.release_vc(in, ddata->channel); > err_req_vc: > - in->ops->disconnect(in, dssdev); > + omapdss_device_disconnect(in, dssdev); > err_connect: > omap_dss_put_device(in); > return r; > @@ -811,7 +811,7 @@ static void dsicm_disconnect(struct omap_dss_device *dssdev) > return; > > in->ops->dsi.release_vc(in, ddata->channel); > - in->ops->disconnect(in, dssdev); > + omapdss_device_disconnect(in, dssdev); > > omap_dss_put_device(in); > ddata->in = NULL; > diff --git a/drivers/gpu/drm/omapdrm/displays/panel-lgphilips-lb035q02.c b/drivers/gpu/drm/omapdrm/displays/panel-lgphilips-lb035q02.c > index 8e293708261c..e4a3b5828bf9 100644 > --- a/drivers/gpu/drm/omapdrm/displays/panel-lgphilips-lb035q02.c > +++ b/drivers/gpu/drm/omapdrm/displays/panel-lgphilips-lb035q02.c > @@ -131,7 +131,7 @@ static int lb035q02_connect(struct omap_dss_device *dssdev) > return PTR_ERR(in); > } > > - r = in->ops->connect(in, dssdev); > + r = omapdss_device_connect(in, dssdev); > if (r) { > omap_dss_put_device(in); > return r; > @@ -151,7 +151,7 @@ static void lb035q02_disconnect(struct omap_dss_device *dssdev) > if (!omapdss_device_is_connected(dssdev)) > return; > > - in->ops->disconnect(in, dssdev); > + omapdss_device_disconnect(in, dssdev); > > omap_dss_put_device(in); > ddata->in = NULL; > diff --git a/drivers/gpu/drm/omapdrm/displays/panel-nec-nl8048hl11.c b/drivers/gpu/drm/omapdrm/displays/panel-nec-nl8048hl11.c > index 7296c794326c..e89dd32a2a60 100644 > --- a/drivers/gpu/drm/omapdrm/displays/panel-nec-nl8048hl11.c > +++ b/drivers/gpu/drm/omapdrm/displays/panel-nec-nl8048hl11.c > @@ -127,7 +127,7 @@ static int nec_8048_connect(struct omap_dss_device *dssdev) > return PTR_ERR(in); > } > > - r = in->ops->connect(in, dssdev); > + r = omapdss_device_connect(in, dssdev); > if (r) { > omap_dss_put_device(in); > return r; > @@ -145,7 +145,7 @@ static void nec_8048_disconnect(struct omap_dss_device *dssdev) > if (!omapdss_device_is_connected(dssdev)) > return; > > - in->ops->disconnect(in, dssdev); > + omapdss_device_disconnect(in, dssdev); > > omap_dss_put_device(in); > ddata->in = NULL; > diff --git a/drivers/gpu/drm/omapdrm/displays/panel-sharp-ls037v7dw01.c b/drivers/gpu/drm/omapdrm/displays/panel-sharp-ls037v7dw01.c > index 00291b9ecfde..d0451cfab7f8 100644 > --- a/drivers/gpu/drm/omapdrm/displays/panel-sharp-ls037v7dw01.c > +++ b/drivers/gpu/drm/omapdrm/displays/panel-sharp-ls037v7dw01.c > @@ -73,7 +73,7 @@ static int sharp_ls_connect(struct omap_dss_device *dssdev) > return PTR_ERR(in); > } > > - r = in->ops->connect(in, dssdev); > + r = omapdss_device_connect(in, dssdev); > if (r) { > omap_dss_put_device(in); > return r; > @@ -91,7 +91,7 @@ static void sharp_ls_disconnect(struct omap_dss_device *dssdev) > if (!omapdss_device_is_connected(dssdev)) > return; > > - in->ops->disconnect(in, dssdev); > + omapdss_device_disconnect(in, dssdev); > > omap_dss_put_device(in); > ddata->in = NULL; > diff --git a/drivers/gpu/drm/omapdrm/displays/panel-sony-acx565akm.c b/drivers/gpu/drm/omapdrm/displays/panel-sony-acx565akm.c > index 03fb297581fd..77721acf664d 100644 > --- a/drivers/gpu/drm/omapdrm/displays/panel-sony-acx565akm.c > +++ b/drivers/gpu/drm/omapdrm/displays/panel-sony-acx565akm.c > @@ -522,7 +522,7 @@ static int acx565akm_connect(struct omap_dss_device *dssdev) > return PTR_ERR(in); > } > > - r = in->ops->connect(in, dssdev); > + r = omapdss_device_connect(in, dssdev); > if (r) { > omap_dss_put_device(in); > return r; > @@ -540,7 +540,7 @@ static void acx565akm_disconnect(struct omap_dss_device *dssdev) > if (!omapdss_device_is_connected(dssdev)) > return; > > - in->ops->disconnect(in, dssdev); > + omapdss_device_disconnect(in, dssdev); > > omap_dss_put_device(in); > ddata->in = NULL; > diff --git a/drivers/gpu/drm/omapdrm/displays/panel-tpo-td028ttec1.c b/drivers/gpu/drm/omapdrm/displays/panel-tpo-td028ttec1.c > index abdbbaf02674..0baf5a5a5895 100644 > --- a/drivers/gpu/drm/omapdrm/displays/panel-tpo-td028ttec1.c > +++ b/drivers/gpu/drm/omapdrm/displays/panel-tpo-td028ttec1.c > @@ -181,7 +181,7 @@ static int td028ttec1_panel_connect(struct omap_dss_device *dssdev) > return PTR_ERR(in); > } > > - r = in->ops->connect(in, dssdev); > + r = omapdss_device_connect(in, dssdev); > if (r) { > omap_dss_put_device(in); > return r; > @@ -199,7 +199,7 @@ static void td028ttec1_panel_disconnect(struct omap_dss_device *dssdev) > if (!omapdss_device_is_connected(dssdev)) > return; > > - in->ops->disconnect(in, dssdev); > + omapdss_device_disconnect(in, dssdev); > > omap_dss_put_device(in); > ddata->in = NULL; > diff --git a/drivers/gpu/drm/omapdrm/displays/panel-tpo-td043mtea1.c b/drivers/gpu/drm/omapdrm/displays/panel-tpo-td043mtea1.c > index de1140314a7a..1daba7a60a9c 100644 > --- a/drivers/gpu/drm/omapdrm/displays/panel-tpo-td043mtea1.c > +++ b/drivers/gpu/drm/omapdrm/displays/panel-tpo-td043mtea1.c > @@ -352,7 +352,7 @@ static int tpo_td043_connect(struct omap_dss_device *dssdev) > return PTR_ERR(in); > } > > - r = in->ops->connect(in, dssdev); > + r = omapdss_device_connect(in, dssdev); > if (r) { > omap_dss_put_device(in); > return r; > @@ -370,7 +370,7 @@ static void tpo_td043_disconnect(struct omap_dss_device *dssdev) > if (!omapdss_device_is_connected(dssdev)) > return; > > - in->ops->disconnect(in, dssdev); > + omapdss_device_disconnect(in, dssdev); > > omap_dss_put_device(in); > ddata->in = NULL; > diff --git a/drivers/gpu/drm/omapdrm/dss/base.c b/drivers/gpu/drm/omapdrm/dss/base.c > index df6cb1ac43c8..576fd3d13259 100644 > --- a/drivers/gpu/drm/omapdrm/dss/base.c > +++ b/drivers/gpu/drm/omapdrm/dss/base.c > @@ -102,6 +102,26 @@ struct omap_dss_device *omapdss_find_device_by_port(struct device_node *src, > return NULL; > } > > +int omapdss_device_connect(struct omap_dss_device *src, > + struct omap_dss_device *dst) > +{ > + if (src->driver) > + return src->driver->connect(src); > + else > + return src->ops->connect(src, dst); > +} > +EXPORT_SYMBOL_GPL(omapdss_device_connect); > + > +void omapdss_device_disconnect(struct omap_dss_device *src, > + struct omap_dss_device *dst) > +{ > + if (src->driver) > + src->driver->disconnect(src); > + else > + src->ops->disconnect(src, dst); > +} > +EXPORT_SYMBOL_GPL(omapdss_device_disconnect); > + > /* ----------------------------------------------------------------------------- > * Components Handling > */ > diff --git a/drivers/gpu/drm/omapdrm/dss/omapdss.h b/drivers/gpu/drm/omapdrm/dss/omapdss.h > index fb6c9d522013..58bd6948bcde 100644 > --- a/drivers/gpu/drm/omapdrm/dss/omapdss.h > +++ b/drivers/gpu/drm/omapdrm/dss/omapdss.h > @@ -498,6 +498,10 @@ void omapdss_device_register(struct omap_dss_device *dssdev); > void omapdss_device_unregister(struct omap_dss_device *dssdev); > struct omap_dss_device *omapdss_find_device_by_port(struct device_node *src, > unsigned int port); > +int omapdss_device_connect(struct omap_dss_device *src, > + struct omap_dss_device *dst); > +void omapdss_device_disconnect(struct omap_dss_device *src, > + struct omap_dss_device *dst); > > struct omap_dss_device *omap_dss_get_device(struct omap_dss_device *dssdev); > void omap_dss_put_device(struct omap_dss_device *dssdev); > diff --git a/drivers/gpu/drm/omapdrm/omap_drv.c b/drivers/gpu/drm/omapdrm/omap_drv.c > index e2d7f8bfb4c1..f1df5be198a8 100644 > --- a/drivers/gpu/drm/omapdrm/omap_drv.c > +++ b/drivers/gpu/drm/omapdrm/omap_drv.c > @@ -159,7 +159,7 @@ static void omap_disconnect_dssdevs(struct drm_device *ddev) > for (i = 0; i < priv->num_dssdevs; i++) { > struct omap_dss_device *dssdev = priv->dssdevs[i]; > > - dssdev->driver->disconnect(dssdev); > + omapdss_device_disconnect(dssdev, NULL); > priv->dssdevs[i] = NULL; > omap_dss_put_device(dssdev); > } > @@ -189,7 +189,7 @@ static int omap_connect_dssdevs(struct drm_device *ddev) > return -EPROBE_DEFER; > > for_each_dss_dev(dssdev) { > - r = dssdev->driver->connect(dssdev); > + r = omapdss_device_connect(dssdev, NULL); > if (r == -EPROBE_DEFER) { > omap_dss_put_device(dssdev); > goto cleanup; > -- > 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