diff mbox

[1/1] drm/exynos: Fix FIMD buffer size calculation

Message ID 1428507546-14449-1-git-send-email-daniels@collabora.com (mailing list archive)
State New, archived
Headers show

Commit Message

Daniel Stone April 8, 2015, 3:39 p.m. UTC
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>
---
 drivers/gpu/drm/exynos/exynos_drm_fimd.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Comments

Gustavo Padovan April 8, 2015, 5 p.m. UTC | #1
2015-04-08 Daniel Stone <daniels@collabora.com>:

> 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>

	Gustavo
diff mbox

Patch

diff --git a/drivers/gpu/drm/exynos/exynos_drm_fimd.c b/drivers/gpu/drm/exynos/exynos_drm_fimd.c
index 7964b278eefb..90111b87c963 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_fimd.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_fimd.c
@@ -662,7 +662,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));
 
@@ -672,7 +672,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) |