drm/exynos: fix no hdmi output
authorAlban Browaeys <alban.browaeys@gmail.com>
Thu, 29 Jan 2015 21:18:40 +0000 (22:18 +0100)
committerInki Dae <inki.dae@samsung.com>
Sat, 7 Feb 2015 07:38:41 +0000 (16:38 +0900)
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>
drivers/gpu/drm/exynos/exynos_mixer.c

index 75b47da6c66c496cba9bcf0f96f36f02b38419ce..0aa6cf447e9f4b223ff0fbd3047c225b9826556d 100644 (file)
@@ -1254,18 +1254,19 @@ static int mixer_bind(struct device *dev, struct device *manager, void *data)
        struct drm_device *drm_dev = data;
        int ret;
 
+       ret = mixer_initialize(ctx, drm_dev);
+       if (ret)
+               return ret;
+
        ctx->crtc = exynos_drm_crtc_create(drm_dev, ctx->pipe,
                                     EXYNOS_DISPLAY_TYPE_HDMI,
                                     &mixer_crtc_ops, ctx);
        if (IS_ERR(ctx->crtc)) {
+               mixer_ctx_remove(ctx);
                ret = PTR_ERR(ctx->crtc);
                goto free_ctx;
        }
 
-       ret = mixer_initialize(ctx, drm_dev);
-       if (ret)
-               goto free_ctx;
-
        return 0;
 
 free_ctx: