drm/armada: move frame wait wakeup into plane work
authorRussell King <rmk+kernel@arm.linux.org.uk>
Fri, 7 Aug 2015 12:34:26 +0000 (13:34 +0100)
committerRussell King <rmk+kernel@arm.linux.org.uk>
Thu, 1 Oct 2015 13:33:29 +0000 (14:33 +0100)
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@arm.linux.org.uk>
drivers/gpu/drm/armada/armada_crtc.c

index 418dbfad4271cde95c411c9bbbe9e9c1214f6afc..cebcab5606268f76aa1f9161315ef17ba82981d7 100644 (file)
@@ -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);
        }
 }