[PATCH v2] drm/exynos: modify condition in mixer and hdmi resume

Rahul Sharma rahul.sharma at samsung.com
Fri Feb 22 05:46:45 PST 2013


From: Prathyush K <prathyush.k at samsung.com>

If mixer is runtime suspended (by DPMS OFF), mixer_suspend
does not call mixer_poweroff and just returns. Similarily the
mixer_resume should not resume the mixer if mixer is
runtime_suspended. It should be done through DPMS ON.

The existing check is stopping the resume. This issue is fixed
by reversing the condiftion. It also holds good for hdmi driver.

v2: updated the error messages.

Signed-off-by: Prathyush K <prathyush.k at samsung.com>
Signed-off-by: Rahul Sharma <rahul.sharma at samsung.com>
---
It is based on exynos-drm-next-todo branch at
git://git.kernel.org/pub/scm/linux/kernel/git/daeinki/drm-exynos.git
 drivers/gpu/drm/exynos/exynos_hdmi.c  | 9 ++++++---
 drivers/gpu/drm/exynos/exynos_mixer.c | 9 ++++++---
 2 files changed, 12 insertions(+), 6 deletions(-)

diff --git a/drivers/gpu/drm/exynos/exynos_hdmi.c b/drivers/gpu/drm/exynos/exynos_hdmi.c
index 9e3c2ad..67030b1 100644
--- a/drivers/gpu/drm/exynos/exynos_hdmi.c
+++ b/drivers/gpu/drm/exynos/exynos_hdmi.c
@@ -2365,7 +2365,8 @@ static int hdmi_suspend(struct device *dev)
 		drm_helper_hpd_irq_event(ctx->drm_dev);
 
 	if (pm_runtime_suspended(dev)) {
-		DRM_DEBUG_KMS("%s : Already suspended\n", __func__);
+		DRM_DEBUG_KMS("%s: already runtime-suspended.\n",
+			__func__);
 		return 0;
 	}
 
@@ -2386,8 +2387,10 @@ static int hdmi_resume(struct device *dev)
 	enable_irq(hdata->external_irq);
 	enable_irq(hdata->internal_irq);
 
-	if (!pm_runtime_suspended(dev)) {
-		DRM_DEBUG_KMS("%s : Already resumed\n", __func__);
+	if (pm_runtime_suspended(dev)) {
+		/* dpms callback should resume the hdmi. */
+		DRM_DEBUG_KMS("%s: already runtime-suspended.\n",
+		__func__);
 		return 0;
 	}
 
diff --git a/drivers/gpu/drm/exynos/exynos_mixer.c b/drivers/gpu/drm/exynos/exynos_mixer.c
index 5139a43..3c12518 100644
--- a/drivers/gpu/drm/exynos/exynos_mixer.c
+++ b/drivers/gpu/drm/exynos/exynos_mixer.c
@@ -1249,7 +1249,8 @@ static int mixer_suspend(struct device *dev)
 	DRM_DEBUG_KMS("[%d] %s\n", __LINE__, __func__);
 
 	if (pm_runtime_suspended(dev)) {
-		DRM_DEBUG_KMS("%s : Already suspended\n", __func__);
+		DRM_DEBUG_KMS("%s: already runtime-suspended.\n",
+			__func__);
 		return 0;
 	}
 
@@ -1265,8 +1266,10 @@ static int mixer_resume(struct device *dev)
 
 	DRM_DEBUG_KMS("[%d] %s\n", __LINE__, __func__);
 
-	if (!pm_runtime_suspended(dev)) {
-		DRM_DEBUG_KMS("%s : Already resumed\n", __func__);
+	if (pm_runtime_suspended(dev)) {
+		/* dpms callback should resume the mixer. */
+		DRM_DEBUG_KMS("%s: already runtime-suspended.\n",
+		__func__);
 		return 0;
 	}
 
-- 
1.8.0



More information about the dri-devel mailing list