Hi,

On Wed, Dec 05, 2018 at 04:59:58PM +0200, Laurent Pinchart wrote:
> All .enable() and .disable() handlers for panels and connectors share
> common code that validates and updates the device's state. Move it to
> common locations in the omap_encoder_enable() and omap_encoder_disable()
> handlers.
> 
> The enabled check in the .disable() handler is left untouched, it will
> be addressed separately.
> 
> Signed-off-by: Laurent Pinchart <laurent.pinch...@ideasonboard.com>
> ---

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

-- Sebastian

>  .../omapdrm/displays/connector-analog-tv.c    | 23 +-------------
>  .../gpu/drm/omapdrm/displays/connector-dvi.c  | 17 +----------
>  .../gpu/drm/omapdrm/displays/connector-hdmi.c | 23 +-------------
>  drivers/gpu/drm/omapdrm/displays/panel-dpi.c  | 10 -------
>  .../gpu/drm/omapdrm/displays/panel-dsi-cm.c   | 18 -----------
>  .../displays/panel-lgphilips-lb035q02.c       | 10 -------
>  .../omapdrm/displays/panel-nec-nl8048hl11.c   | 10 -------
>  .../displays/panel-sharp-ls037v7dw01.c        | 10 -------
>  .../omapdrm/displays/panel-sony-acx565akm.c   | 18 +----------
>  .../omapdrm/displays/panel-tpo-td028ttec1.c   | 14 +--------
>  .../omapdrm/displays/panel-tpo-td043mtea1.c   | 10 -------
>  drivers/gpu/drm/omapdrm/omap_encoder.c        | 30 +++++++++++++++++--
>  12 files changed, 32 insertions(+), 161 deletions(-)
> 
> diff --git a/drivers/gpu/drm/omapdrm/displays/connector-analog-tv.c 
> b/drivers/gpu/drm/omapdrm/displays/connector-analog-tv.c
> index 28a3ce8f88d2..910a5b9c036a 100644
> --- a/drivers/gpu/drm/omapdrm/displays/connector-analog-tv.c
> +++ b/drivers/gpu/drm/omapdrm/displays/connector-analog-tv.c
> @@ -37,40 +37,19 @@ static void tvc_disconnect(struct omap_dss_device *src,
>  
>  static int tvc_enable(struct omap_dss_device *dssdev)
>  {
> -     struct panel_drv_data *ddata = to_panel_data(dssdev);
>       struct omap_dss_device *src = dssdev->src;
> -     int r;
>  
> -     dev_dbg(ddata->dev, "enable\n");
> -
> -     if (!omapdss_device_is_connected(dssdev))
> -             return -ENODEV;
> -
> -     if (omapdss_device_is_enabled(dssdev))
> -             return 0;
> -
> -     r = src->ops->enable(src);
> -     if (r)
> -             return r;
> -
> -     dssdev->state = OMAP_DSS_DISPLAY_ACTIVE;
> -
> -     return r;
> +     return src->ops->enable(src);
>  }
>  
>  static void tvc_disable(struct omap_dss_device *dssdev)
>  {
> -     struct panel_drv_data *ddata = to_panel_data(dssdev);
>       struct omap_dss_device *src = dssdev->src;
>  
> -     dev_dbg(ddata->dev, "disable\n");
> -
>       if (!omapdss_device_is_enabled(dssdev))
>               return;
>  
>       src->ops->disable(src);
> -
> -     dssdev->state = OMAP_DSS_DISPLAY_DISABLED;
>  }
>  
>  static const struct omap_dss_device_ops tvc_ops = {
> diff --git a/drivers/gpu/drm/omapdrm/displays/connector-dvi.c 
> b/drivers/gpu/drm/omapdrm/displays/connector-dvi.c
> index 24b14f44248e..1e0925791c3d 100644
> --- a/drivers/gpu/drm/omapdrm/displays/connector-dvi.c
> +++ b/drivers/gpu/drm/omapdrm/displays/connector-dvi.c
> @@ -49,21 +49,8 @@ static void dvic_disconnect(struct omap_dss_device *src,
>  static int dvic_enable(struct omap_dss_device *dssdev)
>  {
>       struct omap_dss_device *src = dssdev->src;
> -     int r;
> -
> -     if (!omapdss_device_is_connected(dssdev))
> -             return -ENODEV;
> -
> -     if (omapdss_device_is_enabled(dssdev))
> -             return 0;
>  
> -     r = src->ops->enable(src);
> -     if (r)
> -             return r;
> -
> -     dssdev->state = OMAP_DSS_DISPLAY_ACTIVE;
> -
> -     return 0;
> +     return src->ops->enable(src);
>  }
>  
>  static void dvic_disable(struct omap_dss_device *dssdev)
> @@ -74,8 +61,6 @@ static void dvic_disable(struct omap_dss_device *dssdev)
>               return;
>  
>       src->ops->disable(src);
> -
> -     dssdev->state = OMAP_DSS_DISPLAY_DISABLED;
>  }
>  
>  static int dvic_ddc_read(struct i2c_adapter *adapter,
> diff --git a/drivers/gpu/drm/omapdrm/displays/connector-hdmi.c 
> b/drivers/gpu/drm/omapdrm/displays/connector-hdmi.c
> index e602fa4a50a4..649364e04edd 100644
> --- a/drivers/gpu/drm/omapdrm/displays/connector-hdmi.c
> +++ b/drivers/gpu/drm/omapdrm/displays/connector-hdmi.c
> @@ -43,40 +43,19 @@ static void hdmic_disconnect(struct omap_dss_device *src,
>  
>  static int hdmic_enable(struct omap_dss_device *dssdev)
>  {
> -     struct panel_drv_data *ddata = to_panel_data(dssdev);
>       struct omap_dss_device *src = dssdev->src;
> -     int r;
> -
> -     dev_dbg(ddata->dev, "enable\n");
> -
> -     if (!omapdss_device_is_connected(dssdev))
> -             return -ENODEV;
> -
> -     if (omapdss_device_is_enabled(dssdev))
> -             return 0;
>  
> -     r = src->ops->enable(src);
> -     if (r)
> -             return r;
> -
> -     dssdev->state = OMAP_DSS_DISPLAY_ACTIVE;
> -
> -     return r;
> +     return src->ops->enable(src);
>  }
>  
>  static void hdmic_disable(struct omap_dss_device *dssdev)
>  {
> -     struct panel_drv_data *ddata = to_panel_data(dssdev);
>       struct omap_dss_device *src = dssdev->src;
>  
> -     dev_dbg(ddata->dev, "disable\n");
> -
>       if (!omapdss_device_is_enabled(dssdev))
>               return;
>  
>       src->ops->disable(src);
> -
> -     dssdev->state = OMAP_DSS_DISPLAY_DISABLED;
>  }
>  
>  static bool hdmic_detect(struct omap_dss_device *dssdev)
> diff --git a/drivers/gpu/drm/omapdrm/displays/panel-dpi.c 
> b/drivers/gpu/drm/omapdrm/displays/panel-dpi.c
> index 1f8161b041be..9439054de8b9 100644
> --- a/drivers/gpu/drm/omapdrm/displays/panel-dpi.c
> +++ b/drivers/gpu/drm/omapdrm/displays/panel-dpi.c
> @@ -51,12 +51,6 @@ static int panel_dpi_enable(struct omap_dss_device *dssdev)
>       struct omap_dss_device *src = dssdev->src;
>       int r;
>  
> -     if (!omapdss_device_is_connected(dssdev))
> -             return -ENODEV;
> -
> -     if (omapdss_device_is_enabled(dssdev))
> -             return 0;
> -
>       r = src->ops->enable(src);
>       if (r)
>               return r;
> @@ -70,8 +64,6 @@ static int panel_dpi_enable(struct omap_dss_device *dssdev)
>       gpiod_set_value_cansleep(ddata->enable_gpio, 1);
>       backlight_enable(ddata->backlight);
>  
> -     dssdev->state = OMAP_DSS_DISPLAY_ACTIVE;
> -
>       return 0;
>  }
>  
> @@ -89,8 +81,6 @@ static void panel_dpi_disable(struct omap_dss_device 
> *dssdev)
>       regulator_disable(ddata->vcc_supply);
>  
>       src->ops->disable(src);
> -
> -     dssdev->state = OMAP_DSS_DISPLAY_DISABLED;
>  }
>  
>  static void panel_dpi_get_timings(struct omap_dss_device *dssdev,
> diff --git a/drivers/gpu/drm/omapdrm/displays/panel-dsi-cm.c 
> b/drivers/gpu/drm/omapdrm/displays/panel-dsi-cm.c
> index 29692a5217c5..e346451647c4 100644
> --- a/drivers/gpu/drm/omapdrm/displays/panel-dsi-cm.c
> +++ b/drivers/gpu/drm/omapdrm/displays/panel-dsi-cm.c
> @@ -793,20 +793,8 @@ static int dsicm_enable(struct omap_dss_device *dssdev)
>       struct omap_dss_device *src = dssdev->src;
>       int r;
>  
> -     dev_dbg(&ddata->pdev->dev, "enable\n");
> -
>       mutex_lock(&ddata->lock);
>  
> -     if (!omapdss_device_is_connected(dssdev)) {
> -             r = -ENODEV;
> -             goto err;
> -     }
> -
> -     if (omapdss_device_is_enabled(dssdev)) {
> -             r = 0;
> -             goto err;
> -     }
> -
>       src->ops->dsi.bus_lock(src);
>  
>       r = dsicm_power_on(ddata);
> @@ -816,8 +804,6 @@ static int dsicm_enable(struct omap_dss_device *dssdev)
>       if (r)
>               goto err;
>  
> -     dssdev->state = OMAP_DSS_DISPLAY_ACTIVE;
> -
>       mutex_unlock(&ddata->lock);
>  
>       dsicm_bl_power(ddata, true);
> @@ -835,8 +821,6 @@ static void dsicm_disable(struct omap_dss_device *dssdev)
>       struct omap_dss_device *src = dssdev->src;
>       int r;
>  
> -     dev_dbg(&ddata->pdev->dev, "disable\n");
> -
>       dsicm_bl_power(ddata, false);
>  
>       mutex_lock(&ddata->lock);
> @@ -853,8 +837,6 @@ static void dsicm_disable(struct omap_dss_device *dssdev)
>  
>       src->ops->dsi.bus_unlock(src);
>  
> -     dssdev->state = OMAP_DSS_DISPLAY_DISABLED;
> -
>       mutex_unlock(&ddata->lock);
>  }
>  
> diff --git a/drivers/gpu/drm/omapdrm/displays/panel-lgphilips-lb035q02.c 
> b/drivers/gpu/drm/omapdrm/displays/panel-lgphilips-lb035q02.c
> index f6ef8ff964dd..19c0c3e85aa5 100644
> --- a/drivers/gpu/drm/omapdrm/displays/panel-lgphilips-lb035q02.c
> +++ b/drivers/gpu/drm/omapdrm/displays/panel-lgphilips-lb035q02.c
> @@ -129,12 +129,6 @@ static int lb035q02_enable(struct omap_dss_device 
> *dssdev)
>       struct omap_dss_device *src = dssdev->src;
>       int r;
>  
> -     if (!omapdss_device_is_connected(dssdev))
> -             return -ENODEV;
> -
> -     if (omapdss_device_is_enabled(dssdev))
> -             return 0;
> -
>       r = src->ops->enable(src);
>       if (r)
>               return r;
> @@ -142,8 +136,6 @@ static int lb035q02_enable(struct omap_dss_device *dssdev)
>       if (ddata->enable_gpio)
>               gpiod_set_value_cansleep(ddata->enable_gpio, 1);
>  
> -     dssdev->state = OMAP_DSS_DISPLAY_ACTIVE;
> -
>       return 0;
>  }
>  
> @@ -159,8 +151,6 @@ static void lb035q02_disable(struct omap_dss_device 
> *dssdev)
>               gpiod_set_value_cansleep(ddata->enable_gpio, 0);
>  
>       src->ops->disable(src);
> -
> -     dssdev->state = OMAP_DSS_DISPLAY_DISABLED;
>  }
>  
>  static void lb035q02_get_timings(struct omap_dss_device *dssdev,
> diff --git a/drivers/gpu/drm/omapdrm/displays/panel-nec-nl8048hl11.c 
> b/drivers/gpu/drm/omapdrm/displays/panel-nec-nl8048hl11.c
> index f445de6369f7..9cef1d16d7d3 100644
> --- a/drivers/gpu/drm/omapdrm/displays/panel-nec-nl8048hl11.c
> +++ b/drivers/gpu/drm/omapdrm/displays/panel-nec-nl8048hl11.c
> @@ -124,20 +124,12 @@ static int nec_8048_enable(struct omap_dss_device 
> *dssdev)
>       struct omap_dss_device *src = dssdev->src;
>       int r;
>  
> -     if (!omapdss_device_is_connected(dssdev))
> -             return -ENODEV;
> -
> -     if (omapdss_device_is_enabled(dssdev))
> -             return 0;
> -
>       r = src->ops->enable(src);
>       if (r)
>               return r;
>  
>       gpiod_set_value_cansleep(ddata->res_gpio, 1);
>  
> -     dssdev->state = OMAP_DSS_DISPLAY_ACTIVE;
> -
>       return 0;
>  }
>  
> @@ -152,8 +144,6 @@ static void nec_8048_disable(struct omap_dss_device 
> *dssdev)
>       gpiod_set_value_cansleep(ddata->res_gpio, 0);
>  
>       src->ops->disable(src);
> -
> -     dssdev->state = OMAP_DSS_DISPLAY_DISABLED;
>  }
>  
>  static void nec_8048_get_timings(struct omap_dss_device *dssdev,
> diff --git a/drivers/gpu/drm/omapdrm/displays/panel-sharp-ls037v7dw01.c 
> b/drivers/gpu/drm/omapdrm/displays/panel-sharp-ls037v7dw01.c
> index 64b1369cb274..5a06fbb7984a 100644
> --- a/drivers/gpu/drm/omapdrm/displays/panel-sharp-ls037v7dw01.c
> +++ b/drivers/gpu/drm/omapdrm/displays/panel-sharp-ls037v7dw01.c
> @@ -68,12 +68,6 @@ static int sharp_ls_enable(struct omap_dss_device *dssdev)
>       struct omap_dss_device *src = dssdev->src;
>       int r;
>  
> -     if (!omapdss_device_is_connected(dssdev))
> -             return -ENODEV;
> -
> -     if (omapdss_device_is_enabled(dssdev))
> -             return 0;
> -
>       if (ddata->vcc) {
>               r = regulator_enable(ddata->vcc);
>               if (r != 0)
> @@ -95,8 +89,6 @@ static int sharp_ls_enable(struct omap_dss_device *dssdev)
>       if (ddata->ini_gpio)
>               gpiod_set_value_cansleep(ddata->ini_gpio, 1);
>  
> -     dssdev->state = OMAP_DSS_DISPLAY_ACTIVE;
> -
>       return 0;
>  }
>  
> @@ -122,8 +114,6 @@ static void sharp_ls_disable(struct omap_dss_device 
> *dssdev)
>  
>       if (ddata->vcc)
>               regulator_disable(ddata->vcc);
> -
> -     dssdev->state = OMAP_DSS_DISPLAY_DISABLED;
>  }
>  
>  static void sharp_ls_get_timings(struct omap_dss_device *dssdev,
> diff --git a/drivers/gpu/drm/omapdrm/displays/panel-sony-acx565akm.c 
> b/drivers/gpu/drm/omapdrm/displays/panel-sony-acx565akm.c
> index e04663856b31..209a87c70c99 100644
> --- a/drivers/gpu/drm/omapdrm/displays/panel-sony-acx565akm.c
> +++ b/drivers/gpu/drm/omapdrm/displays/panel-sony-acx565akm.c
> @@ -594,39 +594,23 @@ static int acx565akm_enable(struct omap_dss_device 
> *dssdev)
>       struct panel_drv_data *ddata = to_panel_data(dssdev);
>       int r;
>  
> -     dev_dbg(dssdev->dev, "%s\n", __func__);
> -
> -     if (!omapdss_device_is_connected(dssdev))
> -             return -ENODEV;
> -
> -     if (omapdss_device_is_enabled(dssdev))
> -             return 0;
> -
>       mutex_lock(&ddata->mutex);
>       r = acx565akm_panel_power_on(dssdev);
>       mutex_unlock(&ddata->mutex);
> -     if (r)
> -             return r;
>  
> -     dssdev->state = OMAP_DSS_DISPLAY_ACTIVE;
> -
> -     return 0;
> +     return r;
>  }
>  
>  static void acx565akm_disable(struct omap_dss_device *dssdev)
>  {
>       struct panel_drv_data *ddata = to_panel_data(dssdev);
>  
> -     dev_dbg(dssdev->dev, "%s\n", __func__);
> -
>       if (!omapdss_device_is_enabled(dssdev))
>               return;
>  
>       mutex_lock(&ddata->mutex);
>       acx565akm_panel_power_off(dssdev);
>       mutex_unlock(&ddata->mutex);
> -
> -     dssdev->state = OMAP_DSS_DISPLAY_DISABLED;
>  }
>  
>  static void acx565akm_get_timings(struct omap_dss_device *dssdev,
> diff --git a/drivers/gpu/drm/omapdrm/displays/panel-tpo-td028ttec1.c 
> b/drivers/gpu/drm/omapdrm/displays/panel-tpo-td028ttec1.c
> index 7ddc8c574a61..b09fea97a441 100644
> --- a/drivers/gpu/drm/omapdrm/displays/panel-tpo-td028ttec1.c
> +++ b/drivers/gpu/drm/omapdrm/displays/panel-tpo-td028ttec1.c
> @@ -175,12 +175,6 @@ static int td028ttec1_panel_enable(struct 
> omap_dss_device *dssdev)
>       struct omap_dss_device *src = dssdev->src;
>       int r;
>  
> -     if (!omapdss_device_is_connected(dssdev))
> -             return -ENODEV;
> -
> -     if (omapdss_device_is_enabled(dssdev))
> -             return 0;
> -
>       r = src->ops->enable(src);
>       if (r)
>               return r;
> @@ -198,7 +192,7 @@ static int td028ttec1_panel_enable(struct omap_dss_device 
> *dssdev)
>  
>       if (r) {
>               dev_warn(dssdev->dev, "transfer error\n");
> -             goto transfer_err;
> +             return -EIO;
>       }
>  
>       /* deep standby out */
> @@ -268,10 +262,6 @@ static int td028ttec1_panel_enable(struct 
> omap_dss_device *dssdev)
>  
>       r |= jbt_ret_write_0(ddata, JBT_REG_DISPLAY_ON);
>  
> -     dssdev->state = OMAP_DSS_DISPLAY_ACTIVE;
> -
> -transfer_err:
> -
>       return r ? -EIO : 0;
>  }
>  
> @@ -291,8 +281,6 @@ static void td028ttec1_panel_disable(struct 
> omap_dss_device *dssdev)
>       jbt_reg_write_1(ddata, JBT_REG_POWER_ON_OFF, 0x00);
>  
>       src->ops->disable(src);
> -
> -     dssdev->state = OMAP_DSS_DISPLAY_DISABLED;
>  }
>  
>  static void td028ttec1_panel_get_timings(struct omap_dss_device *dssdev,
> diff --git a/drivers/gpu/drm/omapdrm/displays/panel-tpo-td043mtea1.c 
> b/drivers/gpu/drm/omapdrm/displays/panel-tpo-td043mtea1.c
> index 8440fcb744d9..998f21f7701a 100644
> --- a/drivers/gpu/drm/omapdrm/displays/panel-tpo-td043mtea1.c
> +++ b/drivers/gpu/drm/omapdrm/displays/panel-tpo-td043mtea1.c
> @@ -326,12 +326,6 @@ static int tpo_td043_enable(struct omap_dss_device 
> *dssdev)
>       struct omap_dss_device *src = dssdev->src;
>       int r;
>  
> -     if (!omapdss_device_is_connected(dssdev))
> -             return -ENODEV;
> -
> -     if (omapdss_device_is_enabled(dssdev))
> -             return 0;
> -
>       r = src->ops->enable(src);
>       if (r)
>               return r;
> @@ -348,8 +342,6 @@ static int tpo_td043_enable(struct omap_dss_device 
> *dssdev)
>               }
>       }
>  
> -     dssdev->state = OMAP_DSS_DISPLAY_ACTIVE;
> -
>       return 0;
>  }
>  
> @@ -365,8 +357,6 @@ static void tpo_td043_disable(struct omap_dss_device 
> *dssdev)
>  
>       if (!ddata->spi_suspended)
>               tpo_td043_power_off(ddata);
> -
> -     dssdev->state = OMAP_DSS_DISPLAY_DISABLED;
>  }
>  
>  static void tpo_td043_get_timings(struct omap_dss_device *dssdev,
> diff --git a/drivers/gpu/drm/omapdrm/omap_encoder.c 
> b/drivers/gpu/drm/omapdrm/omap_encoder.c
> index 452e625f6ce3..e3290f26abab 100644
> --- a/drivers/gpu/drm/omapdrm/omap_encoder.c
> +++ b/drivers/gpu/drm/omapdrm/omap_encoder.c
> @@ -139,21 +139,45 @@ static void omap_encoder_disable(struct drm_encoder 
> *encoder)
>  {
>       struct omap_encoder *omap_encoder = to_omap_encoder(encoder);
>       struct omap_dss_device *dssdev = omap_encoder->display;
> +     struct drm_device *dev = encoder->dev;
> +
> +     dev_dbg(dev->dev, "disable(%s)\n", dssdev->name);
> +
> +     if (!omapdss_device_is_enabled(dssdev))
> +             return;
>  
>       dssdev->ops->disable(dssdev);
> +
> +     dssdev->state = OMAP_DSS_DISPLAY_DISABLED;
>  }
>  
>  static void omap_encoder_enable(struct drm_encoder *encoder)
>  {
>       struct omap_encoder *omap_encoder = to_omap_encoder(encoder);
>       struct omap_dss_device *dssdev = omap_encoder->display;
> +     struct drm_device *dev = encoder->dev;
>       int r;
>  
> +     dev_dbg(dev->dev, "enable(%s)\n", dssdev->name);
> +
> +     if (!omapdss_device_is_connected(dssdev)) {
> +             r = -ENODEV;
> +             goto error;
> +     }
> +
> +     if (omapdss_device_is_enabled(dssdev))
> +             return;
> +
>       r = dssdev->ops->enable(dssdev);
>       if (r)
> -             dev_err(encoder->dev->dev,
> -                     "Failed to enable display '%s': %d\n",
> -                     dssdev->name, r);
> +             goto error;
> +
> +     dssdev->state = OMAP_DSS_DISPLAY_ACTIVE;
> +     return;
> +
> +error:
> +     dev_err(dev->dev, "Failed to enable display '%s': %d\n",
> +             dssdev->name, r);
>  }
>  
>  static int omap_encoder_atomic_check(struct drm_encoder *encoder,
> -- 
> 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