From: Prathyush K <prathyus...@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 <prathyus...@samsung.com>
Signed-off-by: Rahul Sharma <rahul.sha...@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

--
To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to