diff mbox

drm/exynos: simplify sleep PM ops

Message ID 1448634765-19480-1-git-send-email-a.hajda@samsung.com (mailing list archive)
State New, archived
Headers show

Commit Message

Andrzej Hajda Nov. 27, 2015, 2:32 p.m. UTC
PM ops in exynos_drm_drv were split into two separate function as they were
used also by drm device. Since PM ops have been removed from drm device, the
functions can be merged together.

Signed-off-by: Andrzej Hajda <a.hajda@samsung.com>
---
Hi Inki,

This is the patch I have promised during our discussion about
PM callbcks in components.

Regards
Andrzej

 drivers/gpu/drm/exynos/exynos_drm_drv.c | 76 +++++++++++++--------------------
 1 file changed, 30 insertions(+), 46 deletions(-)

Comments

Inki Dae Dec. 2, 2015, 2:03 a.m. UTC | #1
Hi Andrzej,

2015? 11? 27? 23:32? Andrzej Hajda ?(?) ? ?:
> PM ops in exynos_drm_drv were split into two separate function as they were
> used also by drm device. Since PM ops have been removed from drm device, the
> functions can be merged together.
> 
> Signed-off-by: Andrzej Hajda <a.hajda@samsung.com>
> ---
> Hi Inki,
> 
> This is the patch I have promised during our discussion about
> PM callbcks in components.

Thanks for your patch. I will check it.

Thanks,
Inki Dae

> 
> Regards
> Andrzej
> 
>  drivers/gpu/drm/exynos/exynos_drm_drv.c | 76 +++++++++++++--------------------
>  1 file changed, 30 insertions(+), 46 deletions(-)
> 
> diff --git a/drivers/gpu/drm/exynos/exynos_drm_drv.c b/drivers/gpu/drm/exynos/exynos_drm_drv.c
> index 2c6019d..9756797a 100644
> --- a/drivers/gpu/drm/exynos/exynos_drm_drv.c
> +++ b/drivers/gpu/drm/exynos/exynos_drm_drv.c
> @@ -304,45 +304,6 @@ int exynos_atomic_commit(struct drm_device *dev, struct drm_atomic_state *state,
>  	return 0;
>  }
>  
> -#ifdef CONFIG_PM_SLEEP
> -static int exynos_drm_suspend(struct drm_device *dev, pm_message_t state)
> -{
> -	struct drm_connector *connector;
> -
> -	drm_modeset_lock_all(dev);
> -	list_for_each_entry(connector, &dev->mode_config.connector_list, head) {
> -		int old_dpms = connector->dpms;
> -
> -		if (connector->funcs->dpms)
> -			connector->funcs->dpms(connector, DRM_MODE_DPMS_OFF);
> -
> -		/* Set the old mode back to the connector for resume */
> -		connector->dpms = old_dpms;
> -	}
> -	drm_modeset_unlock_all(dev);
> -
> -	return 0;
> -}
> -
> -static int exynos_drm_resume(struct drm_device *dev)
> -{
> -	struct drm_connector *connector;
> -
> -	drm_modeset_lock_all(dev);
> -	list_for_each_entry(connector, &dev->mode_config.connector_list, head) {
> -		if (connector->funcs->dpms) {
> -			int dpms = connector->dpms;
> -
> -			connector->dpms = DRM_MODE_DPMS_OFF;
> -			connector->funcs->dpms(connector, dpms);
> -		}
> -	}
> -	drm_modeset_unlock_all(dev);
> -
> -	return 0;
> -}
> -#endif
> -
>  static int exynos_drm_open(struct drm_device *dev, struct drm_file *file)
>  {
>  	struct drm_exynos_file_private *file_priv;
> @@ -476,31 +437,54 @@ static struct drm_driver exynos_drm_driver = {
>  };
>  
>  #ifdef CONFIG_PM_SLEEP
> -static int exynos_drm_sys_suspend(struct device *dev)
> +static int exynos_drm_suspend(struct device *dev)
>  {
>  	struct drm_device *drm_dev = dev_get_drvdata(dev);
> -	pm_message_t message;
> +	struct drm_connector *connector;
>  
>  	if (pm_runtime_suspended(dev) || !drm_dev)
>  		return 0;
>  
> -	message.event = PM_EVENT_SUSPEND;
> -	return exynos_drm_suspend(drm_dev, message);
> +	drm_modeset_lock_all(drm_dev);
> +	drm_for_each_connector(connector, drm_dev) {
> +		int old_dpms = connector->dpms;
> +
> +		if (connector->funcs->dpms)
> +			connector->funcs->dpms(connector, DRM_MODE_DPMS_OFF);
> +
> +		/* Set the old mode back to the connector for resume */
> +		connector->dpms = old_dpms;
> +	}
> +	drm_modeset_unlock_all(drm_dev);
> +
> +	return 0;
>  }
>  
> -static int exynos_drm_sys_resume(struct device *dev)
> +static int exynos_drm_resume(struct device *dev)
>  {
>  	struct drm_device *drm_dev = dev_get_drvdata(dev);
> +	struct drm_connector *connector;
>  
>  	if (pm_runtime_suspended(dev) || !drm_dev)
>  		return 0;
>  
> -	return exynos_drm_resume(drm_dev);
> +	drm_modeset_lock_all(drm_dev);
> +	drm_for_each_connector(connector, drm_dev) {
> +		if (connector->funcs->dpms) {
> +			int dpms = connector->dpms;
> +
> +			connector->dpms = DRM_MODE_DPMS_OFF;
> +			connector->funcs->dpms(connector, dpms);
> +		}
> +	}
> +	drm_modeset_unlock_all(drm_dev);
> +
> +	return 0;
>  }
>  #endif
>  
>  static const struct dev_pm_ops exynos_drm_pm_ops = {
> -	SET_SYSTEM_SLEEP_PM_OPS(exynos_drm_sys_suspend, exynos_drm_sys_resume)
> +	SET_SYSTEM_SLEEP_PM_OPS(exynos_drm_suspend, exynos_drm_resume)
>  };
>  
>  /* forward declaration */
> 
--
To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/drivers/gpu/drm/exynos/exynos_drm_drv.c b/drivers/gpu/drm/exynos/exynos_drm_drv.c
index 2c6019d..9756797a 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_drv.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_drv.c
@@ -304,45 +304,6 @@  int exynos_atomic_commit(struct drm_device *dev, struct drm_atomic_state *state,
 	return 0;
 }
 
-#ifdef CONFIG_PM_SLEEP
-static int exynos_drm_suspend(struct drm_device *dev, pm_message_t state)
-{
-	struct drm_connector *connector;
-
-	drm_modeset_lock_all(dev);
-	list_for_each_entry(connector, &dev->mode_config.connector_list, head) {
-		int old_dpms = connector->dpms;
-
-		if (connector->funcs->dpms)
-			connector->funcs->dpms(connector, DRM_MODE_DPMS_OFF);
-
-		/* Set the old mode back to the connector for resume */
-		connector->dpms = old_dpms;
-	}
-	drm_modeset_unlock_all(dev);
-
-	return 0;
-}
-
-static int exynos_drm_resume(struct drm_device *dev)
-{
-	struct drm_connector *connector;
-
-	drm_modeset_lock_all(dev);
-	list_for_each_entry(connector, &dev->mode_config.connector_list, head) {
-		if (connector->funcs->dpms) {
-			int dpms = connector->dpms;
-
-			connector->dpms = DRM_MODE_DPMS_OFF;
-			connector->funcs->dpms(connector, dpms);
-		}
-	}
-	drm_modeset_unlock_all(dev);
-
-	return 0;
-}
-#endif
-
 static int exynos_drm_open(struct drm_device *dev, struct drm_file *file)
 {
 	struct drm_exynos_file_private *file_priv;
@@ -476,31 +437,54 @@  static struct drm_driver exynos_drm_driver = {
 };
 
 #ifdef CONFIG_PM_SLEEP
-static int exynos_drm_sys_suspend(struct device *dev)
+static int exynos_drm_suspend(struct device *dev)
 {
 	struct drm_device *drm_dev = dev_get_drvdata(dev);
-	pm_message_t message;
+	struct drm_connector *connector;
 
 	if (pm_runtime_suspended(dev) || !drm_dev)
 		return 0;
 
-	message.event = PM_EVENT_SUSPEND;
-	return exynos_drm_suspend(drm_dev, message);
+	drm_modeset_lock_all(drm_dev);
+	drm_for_each_connector(connector, drm_dev) {
+		int old_dpms = connector->dpms;
+
+		if (connector->funcs->dpms)
+			connector->funcs->dpms(connector, DRM_MODE_DPMS_OFF);
+
+		/* Set the old mode back to the connector for resume */
+		connector->dpms = old_dpms;
+	}
+	drm_modeset_unlock_all(drm_dev);
+
+	return 0;
 }
 
-static int exynos_drm_sys_resume(struct device *dev)
+static int exynos_drm_resume(struct device *dev)
 {
 	struct drm_device *drm_dev = dev_get_drvdata(dev);
+	struct drm_connector *connector;
 
 	if (pm_runtime_suspended(dev) || !drm_dev)
 		return 0;
 
-	return exynos_drm_resume(drm_dev);
+	drm_modeset_lock_all(drm_dev);
+	drm_for_each_connector(connector, drm_dev) {
+		if (connector->funcs->dpms) {
+			int dpms = connector->dpms;
+
+			connector->dpms = DRM_MODE_DPMS_OFF;
+			connector->funcs->dpms(connector, dpms);
+		}
+	}
+	drm_modeset_unlock_all(drm_dev);
+
+	return 0;
 }
 #endif
 
 static const struct dev_pm_ops exynos_drm_pm_ops = {
-	SET_SYSTEM_SLEEP_PM_OPS(exynos_drm_sys_suspend, exynos_drm_sys_resume)
+	SET_SYSTEM_SLEEP_PM_OPS(exynos_drm_suspend, exynos_drm_resume)
 };
 
 /* forward declaration */