Move the wakeup for the frame wait into the armada plane work, to
ensure that it is woken up every time we run a work.

Signed-off-by: Russell King <rmk+kernel at arm.linux.org.uk>
---
 drivers/gpu/drm/armada/armada_crtc.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/armada/armada_crtc.c 
b/drivers/gpu/drm/armada/armada_crtc.c
index 418dbfad4271..cebcab560626 100644
--- a/drivers/gpu/drm/armada/armada_crtc.c
+++ b/drivers/gpu/drm/armada/armada_crtc.c
@@ -201,6 +201,8 @@ static void armada_drm_plane_work_run(struct armada_crtc 
*dcrtc,
                work->fn(dcrtc, plane, work);
                drm_vblank_put(dcrtc->crtc.dev, dcrtc->num);
        }
+
+       wake_up(&plane->frame_wait);
 }

 int armada_drm_plane_work_queue(struct armada_crtc *dcrtc,
@@ -415,7 +417,6 @@ static void armada_drm_crtc_irq(struct armada_crtc *dcrtc, 
u32 stat)
        if (ovl_plane) {
                struct armada_plane *plane = drm_to_armada_plane(ovl_plane);
                armada_drm_plane_work_run(dcrtc, plane);
-               wake_up(&plane->frame_wait);
        }

        if (stat & GRA_FRAME_IRQ && dcrtc->interlaced) {
@@ -449,7 +450,6 @@ static void armada_drm_crtc_irq(struct armada_crtc *dcrtc, 
u32 stat)
        if (stat & GRA_FRAME_IRQ) {
                struct armada_plane *plane = 
drm_to_armada_plane(dcrtc->crtc.primary);
                armada_drm_plane_work_run(dcrtc, plane);
-               wake_up(&plane->frame_wait);
        }
 }

-- 
2.1.0

Reply via email to