drm/exynos: don't do any DPMS operation while updating planes
authorGustavo Padovan <gustavo.padovan@collabora.co.uk>
Fri, 14 Nov 2014 00:27:20 +0000 (22:27 -0200)
committerInki Dae <daeinki@gmail.com>
Sun, 25 Jan 2015 12:28:04 +0000 (21:28 +0900)
DPMS only makes sense when the mode changes, for plane update changes do
not perform any dpms operation.

This move places the win_commit() and commit() calls directly in the code
instead of calling exynos_drm_crtc_commit() thus avoiding DPMS operations.

Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
Signed-off-by: Inki Dae <inki.dae@samsung.com>
drivers/gpu/drm/exynos/exynos_drm_crtc.c

index 13c7ba5d5d5d0bd775f1272f35465e04f26eb6a2..e946b5f5e3ac940fdbd97dce88cedbee5f2f4be6 100644 (file)
@@ -115,6 +115,8 @@ static int exynos_drm_crtc_mode_set_commit(struct drm_crtc *crtc, int x, int y,
                                          struct drm_framebuffer *old_fb)
 {
        struct exynos_drm_crtc *exynos_crtc = to_exynos_crtc(crtc);
+       struct exynos_drm_manager *manager = exynos_crtc->manager;
+       struct exynos_drm_plane *exynos_plane = to_exynos_plane(crtc->primary);
        struct drm_framebuffer *fb = crtc->primary->fb;
        unsigned int crtc_w;
        unsigned int crtc_h;
@@ -134,7 +136,11 @@ static int exynos_drm_crtc_mode_set_commit(struct drm_crtc *crtc, int x, int y,
        if (ret)
                return ret;
 
-       exynos_drm_crtc_commit(crtc);
+       if (manager->ops->win_commit)
+               manager->ops->win_commit(manager, exynos_plane->zpos);
+
+       if (manager->ops->commit)
+               manager->ops->commit(manager);
 
        return 0;
 }