Commit 38000dbb authored by Gustavo Padovan's avatar Gustavo Padovan Committed by Inki Dae

drm/exynos: add error messages if clks failed to get enabled

Check error and call DRM_ERROR if clk_prepare_enable() fails.
Signed-off-by: default avatarGustavo Padovan <gustavo.padovan@collabora.co.uk>
Signed-off-by: default avatarInki Dae <inki.dae@samsung.com>
parent 1e5507ce
...@@ -606,6 +606,7 @@ static void decon_init(struct decon_context *ctx) ...@@ -606,6 +606,7 @@ static void decon_init(struct decon_context *ctx)
static void decon_enable(struct exynos_drm_crtc *crtc) static void decon_enable(struct exynos_drm_crtc *crtc)
{ {
struct decon_context *ctx = crtc->ctx; struct decon_context *ctx = crtc->ctx;
int ret;
if (!ctx->suspended) if (!ctx->suspended)
return; return;
...@@ -614,10 +615,29 @@ static void decon_enable(struct exynos_drm_crtc *crtc) ...@@ -614,10 +615,29 @@ static void decon_enable(struct exynos_drm_crtc *crtc)
pm_runtime_get_sync(ctx->dev); pm_runtime_get_sync(ctx->dev);
clk_prepare_enable(ctx->pclk); ret = clk_prepare_enable(ctx->pclk);
clk_prepare_enable(ctx->aclk); if (ret < 0) {
clk_prepare_enable(ctx->eclk); DRM_ERROR("Failed to prepare_enable the pclk [%d]\n", ret);
clk_prepare_enable(ctx->vclk); return;
}
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); decon_init(ctx);
......
...@@ -808,6 +808,7 @@ static void fimd_apply(struct fimd_context *ctx) ...@@ -808,6 +808,7 @@ static void fimd_apply(struct fimd_context *ctx)
static void fimd_enable(struct exynos_drm_crtc *crtc) static void fimd_enable(struct exynos_drm_crtc *crtc)
{ {
struct fimd_context *ctx = crtc->ctx; struct fimd_context *ctx = crtc->ctx;
int ret;
if (!ctx->suspended) if (!ctx->suspended)
return; return;
...@@ -816,8 +817,17 @@ static void fimd_enable(struct exynos_drm_crtc *crtc) ...@@ -816,8 +817,17 @@ static void fimd_enable(struct exynos_drm_crtc *crtc)
pm_runtime_get_sync(ctx->dev); pm_runtime_get_sync(ctx->dev);
clk_prepare_enable(ctx->bus_clk); ret = clk_prepare_enable(ctx->bus_clk);
clk_prepare_enable(ctx->lcd_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 vblank was enabled status, enable it again. */
if (test_and_clear_bit(0, &ctx->irq_flags)) if (test_and_clear_bit(0, &ctx->irq_flags))
......
...@@ -1031,6 +1031,7 @@ static void mixer_enable(struct exynos_drm_crtc *crtc) ...@@ -1031,6 +1031,7 @@ static void mixer_enable(struct exynos_drm_crtc *crtc)
{ {
struct mixer_context *ctx = crtc->ctx; struct mixer_context *ctx = crtc->ctx;
struct mixer_resources *res = &ctx->mixer_res; struct mixer_resources *res = &ctx->mixer_res;
int ret;
mutex_lock(&ctx->mixer_mutex); mutex_lock(&ctx->mixer_mutex);
if (ctx->powered) { if (ctx->powered) {
...@@ -1042,12 +1043,32 @@ static void mixer_enable(struct exynos_drm_crtc *crtc) ...@@ -1042,12 +1043,32 @@ static void mixer_enable(struct exynos_drm_crtc *crtc)
pm_runtime_get_sync(ctx->dev); pm_runtime_get_sync(ctx->dev);
clk_prepare_enable(res->mixer); ret = clk_prepare_enable(res->mixer);
clk_prepare_enable(res->hdmi); 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) { if (ctx->vp_enabled) {
clk_prepare_enable(res->vp); ret = clk_prepare_enable(res->vp);
if (ctx->has_sclk) if (ret < 0) {
clk_prepare_enable(res->sclk_mixer); 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); mutex_lock(&ctx->mixer_mutex);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment