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.pinch...@ideasonboard.com>
> ---

Reviewed-by: Sebastian Reichel <sebastian.reic...@collabora.co.uk>

-- 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@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel

Attachment: signature.asc
Description: PGP signature

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

Reply via email to