aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/exynos
diff options
context:
space:
mode:
authorAlban Browaeys <alban.browaeys@gmail.com>2015-01-29 16:18:40 -0500
committerInki Dae <inki.dae@samsung.com>2015-02-07 02:38:41 -0500
commite2dc3f72eea7decdb56368f0de88bba343720828 (patch)
tree59b2b7f28a3f646a2af109cd6e98fabced065c84 /drivers/gpu/drm/exynos
parent92dc7a047b02be447a51baa93deb0c0f694241a5 (diff)
drm/exynos: fix no hdmi output
The hdmi outputs black screen only even though under the hood Xorg and framebuffer console are fine : devices found and initialized, but not a pixel out. Commit 93bca243ec96 ("drm/exynos: remove struct exynos_drm_manager") changed the call order of mixer_initialize with regards to exynos_drm_crtc_create. This changes breaks hdmi out on Odroid U2 (linux-next with added Marek Szyprowski v4 hdmi patchset from linux-samsung-soc ML). Restore the previous call ordering get hdmi to ouput proper pixels: ie call mixer_initialize first then exynos_drm_crtc_create. Fixes: 93bca243ec96 ("drm/exynos: remove struct exynos_drm_manager") Signed-off-by: Alban Browaeys <prahal@yahoo.com> Signed-off-by: Inki Dae <inki.dae@samsung.com>
Diffstat (limited to 'drivers/gpu/drm/exynos')
-rw-r--r--drivers/gpu/drm/exynos/exynos_mixer.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/drivers/gpu/drm/exynos/exynos_mixer.c b/drivers/gpu/drm/exynos/exynos_mixer.c
index 75b47da6c66c..0aa6cf447e9f 100644
--- a/drivers/gpu/drm/exynos/exynos_mixer.c
+++ b/drivers/gpu/drm/exynos/exynos_mixer.c
@@ -1254,18 +1254,19 @@ static int mixer_bind(struct device *dev, struct device *manager, void *data)
1254 struct drm_device *drm_dev = data; 1254 struct drm_device *drm_dev = data;
1255 int ret; 1255 int ret;
1256 1256
1257 ret = mixer_initialize(ctx, drm_dev);
1258 if (ret)
1259 return ret;
1260
1257 ctx->crtc = exynos_drm_crtc_create(drm_dev, ctx->pipe, 1261 ctx->crtc = exynos_drm_crtc_create(drm_dev, ctx->pipe,
1258 EXYNOS_DISPLAY_TYPE_HDMI, 1262 EXYNOS_DISPLAY_TYPE_HDMI,
1259 &mixer_crtc_ops, ctx); 1263 &mixer_crtc_ops, ctx);
1260 if (IS_ERR(ctx->crtc)) { 1264 if (IS_ERR(ctx->crtc)) {
1265 mixer_ctx_remove(ctx);
1261 ret = PTR_ERR(ctx->crtc); 1266 ret = PTR_ERR(ctx->crtc);
1262 goto free_ctx; 1267 goto free_ctx;
1263 } 1268 }
1264 1269
1265 ret = mixer_initialize(ctx, drm_dev);
1266 if (ret)
1267 goto free_ctx;
1268
1269 return 0; 1270 return 0;
1270 1271
1271free_ctx: 1272free_ctx: