Commit 7cb410cd authored by Russell King's avatar Russell King

drm/armada: move frame wait wakeup into plane work

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: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
parent 4a8506d2
...@@ -201,6 +201,8 @@ static void armada_drm_plane_work_run(struct armada_crtc *dcrtc, ...@@ -201,6 +201,8 @@ static void armada_drm_plane_work_run(struct armada_crtc *dcrtc,
work->fn(dcrtc, plane, work); work->fn(dcrtc, plane, work);
drm_vblank_put(dcrtc->crtc.dev, dcrtc->num); drm_vblank_put(dcrtc->crtc.dev, dcrtc->num);
} }
wake_up(&plane->frame_wait);
} }
int armada_drm_plane_work_queue(struct armada_crtc *dcrtc, 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) ...@@ -415,7 +417,6 @@ static void armada_drm_crtc_irq(struct armada_crtc *dcrtc, u32 stat)
if (ovl_plane) { if (ovl_plane) {
struct armada_plane *plane = drm_to_armada_plane(ovl_plane); struct armada_plane *plane = drm_to_armada_plane(ovl_plane);
armada_drm_plane_work_run(dcrtc, plane); armada_drm_plane_work_run(dcrtc, plane);
wake_up(&plane->frame_wait);
} }
if (stat & GRA_FRAME_IRQ && dcrtc->interlaced) { if (stat & GRA_FRAME_IRQ && dcrtc->interlaced) {
...@@ -449,7 +450,6 @@ static void armada_drm_crtc_irq(struct armada_crtc *dcrtc, u32 stat) ...@@ -449,7 +450,6 @@ static void armada_drm_crtc_irq(struct armada_crtc *dcrtc, u32 stat)
if (stat & GRA_FRAME_IRQ) { if (stat & GRA_FRAME_IRQ) {
struct armada_plane *plane = drm_to_armada_plane(dcrtc->crtc.primary); struct armada_plane *plane = drm_to_armada_plane(dcrtc->crtc.primary);
armada_drm_plane_work_run(dcrtc, plane); armada_drm_plane_work_run(dcrtc, plane);
wake_up(&plane->frame_wait);
} }
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment