drm/exynos: Fix FIMD buffer size calculation
authorDaniel Stone <daniels@collabora.com>
Wed, 8 Apr 2015 15:39:06 +0000 (16:39 +0100)
committerInki Dae <inki.dae@samsung.com>
Mon, 13 Apr 2015 02:48:20 +0000 (11:48 +0900)
Commit adacb228d72b ("drm: Exynos: Respect framebuffer pitch for
FIMD/Mixer") fixed the buffer size calculation by using the FB
pitch value but later commit 26b9c2813ede1 ("drm/exynos: remove
struct *_win_data abstraction on planes") added a regression so
fix the buffer size calculation again.

Tested on Chromebook Snow / Peach Pit.

Fixes: 26b9c2813ede1 ("drm/exynos: remove struct *_win_data abstraction on planes")
Signed-off-by: Daniel Stone <daniels@collabora.com>
Tested-by: Javier Martinez Canillas <javier.martinez@collabora.co.uk>
Reviewed-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
Signed-off-by: Inki Dae <inki.dae@samsung.com>
drivers/gpu/drm/exynos/exynos_drm_fimd.c

index 6d2858ae6ad5cbaaf131706e8ba21b19d3966ee8..9819fa6a9e2a41867da1ddaab9fb052dc0a74310 100644 (file)
@@ -663,7 +663,7 @@ static void fimd_win_commit(struct exynos_drm_crtc *crtc, unsigned int win)
        writel(val, ctx->regs + VIDWx_BUF_START(win, 0));
 
        /* buffer end address */
-       size = plane->pitch * plane->crtc_height * (plane->bpp >> 3);
+       size = plane->pitch * plane->crtc_height;
        val = (unsigned long)(dma_addr + size);
        writel(val, ctx->regs + VIDWx_BUF_END(win, 0));
 
@@ -673,7 +673,7 @@ static void fimd_win_commit(struct exynos_drm_crtc *crtc, unsigned int win)
                        plane->crtc_width, plane->crtc_height);
 
        /* buffer size */
-       buf_offsize = (plane->fb_width - plane->crtc_width) * (plane->bpp >> 3);
+       buf_offsize = plane->pitch - (plane->crtc_width * (plane->bpp >> 3));
        line_size = plane->crtc_width * (plane->bpp >> 3);
        val = VIDW_BUF_SIZE_OFFSET(buf_offsize) |
                VIDW_BUF_SIZE_PAGEWIDTH(line_size) |