]> Pileus Git - ~andy/linux/commitdiff
staging: drm/imx: don't drop crtc offsets when doing pageflip
authorLucas Stach <l.stach@pengutronix.de>
Fri, 10 Jan 2014 15:17:30 +0000 (16:17 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 13 Jan 2014 23:11:51 +0000 (15:11 -0800)
CRTC offsets are only set with the initial modeset, any
subseqent pageflips assume them to be kept the same, so
we need to remember the current state until another modeset
changes it.

Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de>
Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/imx-drm/ipuv3-crtc.c
drivers/staging/imx-drm/ipuv3-plane.c

index ce6ba987ec91b020383c15a4995baf142aad7039..22be104fbda97526980481011ad5250121b52948 100644 (file)
@@ -218,7 +218,8 @@ static irqreturn_t ipu_irq_handler(int irq, void *dev_id)
 
        if (ipu_crtc->newfb) {
                ipu_crtc->newfb = NULL;
-               ipu_plane_set_base(ipu_crtc->plane[0], ipu_crtc->base.fb, 0, 0);
+               ipu_plane_set_base(ipu_crtc->plane[0], ipu_crtc->base.fb,
+                               ipu_crtc->plane[0]->x, ipu_crtc->plane[0]->y);
                ipu_crtc_handle_pageflip(ipu_crtc);
        }
 
index 2ef95162b3e99ef2b2e4eb98c619e7712dfa2fce..34b642a12f8bb2cb6163b1fa05eeca184aef135b 100644 (file)
@@ -83,6 +83,10 @@ int ipu_plane_set_base(struct ipu_plane *ipu_plane, struct drm_framebuffer *fb,
        ipu_cpmem_set_buffer(cpmem, 0, eba);
        ipu_cpmem_set_buffer(cpmem, 1, eba);
 
+       /* cache offsets for subsequent pageflips */
+       ipu_plane->x = x;
+       ipu_plane->y = y;
+
        return 0;
 }