public inbox for linux-samsung-soc@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/9] drm/exynos: add error messages if clks failed to get enabled
@ 2015-06-03 14:30 Gustavo Padovan
  2015-06-03 14:30 ` [PATCH 2/9] drm/exynos: add atomic asynchronous commit Gustavo Padovan
                   ` (9 more replies)
  0 siblings, 10 replies; 19+ messages in thread
From: Gustavo Padovan @ 2015-06-03 14:30 UTC (permalink / raw)
  To: linux-samsung-soc
  Cc: dri-devel, inki.dae, jy0922.shim, tjakobi, Gustavo Padovan

From: Gustavo Padovan <gustavo.padovan@collabora.co.uk>

Check error and call DRM_ERROR if clk_prepare_enable() fails.

Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
---
 drivers/gpu/drm/exynos/exynos7_drm_decon.c | 29 ++++++++++++++++++++++++----
 drivers/gpu/drm/exynos/exynos_drm_fimd.c   | 14 ++++++++++++--
 drivers/gpu/drm/exynos/exynos_mixer.c      | 31 +++++++++++++++++++++++++-----
 3 files changed, 63 insertions(+), 11 deletions(-)

diff --git a/drivers/gpu/drm/exynos/exynos7_drm_decon.c b/drivers/gpu/drm/exynos/exynos7_drm_decon.c
index d659ba2..ffd7c3b 100644
--- a/drivers/gpu/drm/exynos/exynos7_drm_decon.c
+++ b/drivers/gpu/drm/exynos/exynos7_drm_decon.c
@@ -606,6 +606,7 @@ static void decon_init(struct decon_context *ctx)
 static void decon_enable(struct exynos_drm_crtc *crtc)
 {
 	struct decon_context *ctx = crtc->ctx;
+	int ret;
 
 	if (!ctx->suspended)
 		return;
@@ -614,10 +615,30 @@ static void decon_enable(struct exynos_drm_crtc *crtc)
 
 	pm_runtime_get_sync(ctx->dev);
 
-	clk_prepare_enable(ctx->pclk);
-	clk_prepare_enable(ctx->aclk);
-	clk_prepare_enable(ctx->eclk);
-	clk_prepare_enable(ctx->vclk);
+	ret = clk_prepare_enable(ctx->pclk);
+	if (ret < 0) {
+		DRM_ERROR("Failed to prepare_enable the pclk [%d]\n", ret);
+		return;
+		goto pclk_err;
+	}
+
+	ret = clk_prepare_enable(ctx->aclk);
+	if (ret < 0) {
+		DRM_ERROR("Failed to prepare_enable the aclk [%d]\n", ret);
+		return;
+	}
+
+	ret = clk_prepare_enable(ctx->eclk);
+	if  (ret < 0) {
+		DRM_ERROR("Failed to prepare_enable the eclk [%d]\n", ret);
+		return;
+	}
+
+	ret = clk_prepare_enable(ctx->vclk);
+	if  (ret < 0) {
+		DRM_ERROR("Failed to prepare_enable the vclk [%d]\n", ret);
+		return;
+	}
 
 	decon_init(ctx);
 
diff --git a/drivers/gpu/drm/exynos/exynos_drm_fimd.c b/drivers/gpu/drm/exynos/exynos_drm_fimd.c
index 9661853..7c8ba61 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_fimd.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_fimd.c
@@ -808,6 +808,7 @@ static void fimd_apply(struct fimd_context *ctx)
 static void fimd_enable(struct exynos_drm_crtc *crtc)
 {
 	struct fimd_context *ctx = crtc->ctx;
+	int ret;
 
 	if (!ctx->suspended)
 		return;
@@ -816,8 +817,17 @@ static void fimd_enable(struct exynos_drm_crtc *crtc)
 
 	pm_runtime_get_sync(ctx->dev);
 
-	clk_prepare_enable(ctx->bus_clk);
-	clk_prepare_enable(ctx->lcd_clk);
+	ret = clk_prepare_enable(ctx->bus_clk);
+	if (ret < 0) {
+		DRM_ERROR("Failed to prepare_enable the bus clk [%d]\n", ret);
+		return;
+	}
+
+	ret = clk_prepare_enable(ctx->lcd_clk);
+	if  (ret < 0) {
+		DRM_ERROR("Failed to prepare_enable the lcd clk [%d]\n", ret);
+		return;
+	}
 
 	/* if vblank was enabled status, enable it again. */
 	if (test_and_clear_bit(0, &ctx->irq_flags))
diff --git a/drivers/gpu/drm/exynos/exynos_mixer.c b/drivers/gpu/drm/exynos/exynos_mixer.c
index 6bab717..1b77fc7 100644
--- a/drivers/gpu/drm/exynos/exynos_mixer.c
+++ b/drivers/gpu/drm/exynos/exynos_mixer.c
@@ -1031,6 +1031,7 @@ static void mixer_enable(struct exynos_drm_crtc *crtc)
 {
 	struct mixer_context *ctx = crtc->ctx;
 	struct mixer_resources *res = &ctx->mixer_res;
+	int ret;
 
 	mutex_lock(&ctx->mixer_mutex);
 	if (ctx->powered) {
@@ -1042,12 +1043,32 @@ static void mixer_enable(struct exynos_drm_crtc *crtc)
 
 	pm_runtime_get_sync(ctx->dev);
 
-	clk_prepare_enable(res->mixer);
-	clk_prepare_enable(res->hdmi);
+	ret = clk_prepare_enable(res->mixer);
+	if (ret < 0) {
+		DRM_ERROR("Failed to prepare_enable the mixer clk [%d]\n", ret);
+		return;
+	}
+	ret = clk_prepare_enable(res->hdmi);
+	if (ret < 0) {
+		DRM_ERROR("Failed to prepare_enable the hdmi clk [%d]\n", ret);
+		return;
+	}
 	if (ctx->vp_enabled) {
-		clk_prepare_enable(res->vp);
-		if (ctx->has_sclk)
-			clk_prepare_enable(res->sclk_mixer);
+		ret = clk_prepare_enable(res->vp);
+		if (ret < 0) {
+			DRM_ERROR("Failed to prepare_enable the vp clk [%d]\n",
+				  ret);
+			return;
+		}
+		if (ctx->has_sclk) {
+			ret = clk_prepare_enable(res->sclk_mixer);
+			if (ret < 0) {
+				DRM_ERROR("Failed to prepare_enable the " \
+					   "sclk_mixer clk [%d]\n",
+					  ret);
+				return;
+			}
+		}
 	}
 
 	mutex_lock(&ctx->mixer_mutex);
-- 
2.1.0

^ permalink raw reply related	[flat|nested] 19+ messages in thread

end of thread, other threads:[~2015-06-11 14:12 UTC | newest]

Thread overview: 19+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-06-03 14:30 [PATCH 1/9] drm/exynos: add error messages if clks failed to get enabled Gustavo Padovan
2015-06-03 14:30 ` [PATCH 2/9] drm/exynos: add atomic asynchronous commit Gustavo Padovan
2015-06-10  9:45   ` Joonyoung Shim
2015-06-03 14:30 ` [PATCH 3/9] drm/exynos: rename win_commit/disable to atomic-like names Gustavo Padovan
2015-06-03 14:30 ` [PATCH 4/9] drm/exynos: don't disable planes already disabled Gustavo Padovan
2015-06-03 14:30 ` [PATCH 5/9] drm/exynos: pass struct exynos_drm_plane in update/enable Gustavo Padovan
2015-06-03 14:30 ` [PATCH 6/9] drm/exynos: remove duplicated check for suspend Gustavo Padovan
2015-06-03 14:30 ` [PATCH 7/9] drm/exynos: use drm atomic state directly Gustavo Padovan
2015-06-03 14:30 ` [PATCH 8/9] drm/exynos: remove unused fields from struct exynos_drm_plane Gustavo Padovan
2015-06-03 14:30 ` [PATCH 9/9] drm/exynos: unify exynos_drm_plane names with drm core Gustavo Padovan
2015-06-09 14:27   ` Gustavo Padovan
2015-06-10  9:46     ` Joonyoung Shim
2015-06-10 10:42     ` Inki Dae
2015-06-10 10:48       ` Inki Dae
2015-06-03 16:59 ` [PATCH 1/9] drm/exynos: add error messages if clks failed to get enabled Alexey Klimov
2015-06-03 17:09   ` Alexey Klimov
2015-06-03 18:13   ` Gustavo Padovan
2015-06-03 20:17 ` [PATCH v2] " Gustavo Padovan
2015-06-11 14:12   ` Inki Dae

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox