Make armada_drm_plane_work_run() take the drm_plane pointer rather than
our private pointer.  This allows us to localise the conversion between
these two pointers inside armada_drm_plane_work_run(), rather than at
every call site.

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

diff --git a/drivers/gpu/drm/armada/armada_crtc.c 
b/drivers/gpu/drm/armada/armada_crtc.c
index 135ad844fbb8..9ec7e6136bcc 100644
--- a/drivers/gpu/drm/armada/armada_crtc.c
+++ b/drivers/gpu/drm/armada/armada_crtc.c
@@ -193,17 +193,18 @@ static unsigned armada_drm_crtc_calc_fb(struct 
drm_framebuffer *fb,
 }

 static void armada_drm_plane_work_run(struct armada_crtc *dcrtc,
-       struct armada_plane *plane)
+       struct drm_plane *plane)
 {
-       struct armada_plane_work *work = xchg(&plane->work, NULL);
+       struct armada_plane *dplane = drm_to_armada_plane(plane);
+       struct armada_plane_work *work = xchg(&dplane->work, NULL);

        /* Handle any pending frame work. */
        if (work) {
-               work->fn(dcrtc, plane, work);
+               work->fn(dcrtc, dplane, work);
                drm_crtc_vblank_put(&dcrtc->crtc);
        }

-       wake_up(&plane->frame_wait);
+       wake_up(&dplane->frame_wait);
 }

 int armada_drm_plane_work_queue(struct armada_crtc *dcrtc,
@@ -308,14 +309,12 @@ static void armada_drm_crtc_finish_fb(struct armada_crtc 
*dcrtc,

 static void armada_drm_vblank_off(struct armada_crtc *dcrtc)
 {
-       struct armada_plane *plane = drm_to_armada_plane(dcrtc->crtc.primary);
-
        /*
         * Tell the DRM core that vblank IRQs aren't going to happen for
         * a while.  This cleans up any pending vblank events for us.
         */
        drm_crtc_vblank_off(&dcrtc->crtc);
-       armada_drm_plane_work_run(dcrtc, plane);
+       armada_drm_plane_work_run(dcrtc, dcrtc->crtc.primary);
 }

 void armada_drm_crtc_gamma_set(struct drm_crtc *crtc, u16 r, u16 g, u16 b,
@@ -415,10 +414,8 @@ static void armada_drm_crtc_irq(struct armada_crtc *dcrtc, 
u32 stat)

        spin_lock(&dcrtc->irq_lock);
        ovl_plane = dcrtc->plane;
-       if (ovl_plane) {
-               struct armada_plane *plane = drm_to_armada_plane(ovl_plane);
-               armada_drm_plane_work_run(dcrtc, plane);
-       }
+       if (ovl_plane)
+               armada_drm_plane_work_run(dcrtc, ovl_plane);

        if (stat & GRA_FRAME_IRQ && dcrtc->interlaced) {
                int i = stat & GRA_FRAME_IRQ0 ? 0 : 1;
@@ -448,10 +445,8 @@ static void armada_drm_crtc_irq(struct armada_crtc *dcrtc, 
u32 stat)

        spin_unlock(&dcrtc->irq_lock);

-       if (stat & GRA_FRAME_IRQ) {
-               struct armada_plane *plane = 
drm_to_armada_plane(dcrtc->crtc.primary);
-               armada_drm_plane_work_run(dcrtc, plane);
-       }
+       if (stat & GRA_FRAME_IRQ)
+               armada_drm_plane_work_run(dcrtc, dcrtc->crtc.primary);
 }

 static irqreturn_t armada_drm_irq(int irq, void *arg)
@@ -1039,7 +1034,7 @@ static int armada_drm_crtc_page_flip(struct drm_crtc 
*crtc,
         * interrupt, so complete it now.
         */
        if (dpms_blanked(dcrtc->dpms))
-               armada_drm_plane_work_run(dcrtc, 
drm_to_armada_plane(dcrtc->crtc.primary));
+               armada_drm_plane_work_run(dcrtc, dcrtc->crtc.primary);

        return 0;
 }
-- 
2.7.4

Reply via email to