aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLucas Stach <l.stach@pengutronix.de>2014-01-10 10:17:30 -0500
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2014-01-13 18:11:51 -0500
commit32f7110623db58f3283d6c9e1c02752032cf9c68 (patch)
treee8bd703af8c43300fa1e447d8d99a03e33d8a71a
parentbc2b067aab5ae046cb7fdb49e8b90ada44a3d5b1 (diff)
staging: drm/imx: don't drop crtc offsets when doing pageflip
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>
-rw-r--r--drivers/staging/imx-drm/ipuv3-crtc.c3
-rw-r--r--drivers/staging/imx-drm/ipuv3-plane.c4
2 files changed, 6 insertions, 1 deletions
diff --git a/drivers/staging/imx-drm/ipuv3-crtc.c b/drivers/staging/imx-drm/ipuv3-crtc.c
index ce6ba987ec91..22be104fbda9 100644
--- a/drivers/staging/imx-drm/ipuv3-crtc.c
+++ b/drivers/staging/imx-drm/ipuv3-crtc.c
@@ -218,7 +218,8 @@ static irqreturn_t ipu_irq_handler(int irq, void *dev_id)
218 218
219 if (ipu_crtc->newfb) { 219 if (ipu_crtc->newfb) {
220 ipu_crtc->newfb = NULL; 220 ipu_crtc->newfb = NULL;
221 ipu_plane_set_base(ipu_crtc->plane[0], ipu_crtc->base.fb, 0, 0); 221 ipu_plane_set_base(ipu_crtc->plane[0], ipu_crtc->base.fb,
222 ipu_crtc->plane[0]->x, ipu_crtc->plane[0]->y);
222 ipu_crtc_handle_pageflip(ipu_crtc); 223 ipu_crtc_handle_pageflip(ipu_crtc);
223 } 224 }
224 225
diff --git a/drivers/staging/imx-drm/ipuv3-plane.c b/drivers/staging/imx-drm/ipuv3-plane.c
index 2ef95162b3e9..34b642a12f8b 100644
--- a/drivers/staging/imx-drm/ipuv3-plane.c
+++ b/drivers/staging/imx-drm/ipuv3-plane.c
@@ -83,6 +83,10 @@ int ipu_plane_set_base(struct ipu_plane *ipu_plane, struct drm_framebuffer *fb,
83 ipu_cpmem_set_buffer(cpmem, 0, eba); 83 ipu_cpmem_set_buffer(cpmem, 0, eba);
84 ipu_cpmem_set_buffer(cpmem, 1, eba); 84 ipu_cpmem_set_buffer(cpmem, 1, eba);
85 85
86 /* cache offsets for subsequent pageflips */
87 ipu_plane->x = x;
88 ipu_plane->y = y;
89
86 return 0; 90 return 0;
87} 91}
88 92