Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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>

authored by

Alban Browaeys and committed by
Inki Dae
e2dc3f72 92dc7a04

+5 -4
+5 -4
drivers/gpu/drm/exynos/exynos_mixer.c
··· 1254 1254 struct drm_device *drm_dev = data; 1255 1255 int ret; 1256 1256 1257 + ret = mixer_initialize(ctx, drm_dev); 1258 + if (ret) 1259 + return ret; 1260 + 1257 1261 ctx->crtc = exynos_drm_crtc_create(drm_dev, ctx->pipe, 1258 1262 EXYNOS_DISPLAY_TYPE_HDMI, 1259 1263 &mixer_crtc_ops, ctx); 1260 1264 if (IS_ERR(ctx->crtc)) { 1265 + mixer_ctx_remove(ctx); 1261 1266 ret = PTR_ERR(ctx->crtc); 1262 1267 goto free_ctx; 1263 1268 } 1264 - 1265 - ret = mixer_initialize(ctx, drm_dev); 1266 - if (ret) 1267 - goto free_ctx; 1268 1269 1269 1270 return 0; 1270 1271