From 362ffb29c0a132075d96f76714b4be884c8110ba Mon Sep 17 00:00:00 2001 From: Andrzej Hajda Date: Fri, 9 Dec 2016 10:49:18 +0100 Subject: drm/exynos/decon5433: fix porch calculation in interlaced mode Interlaced mode requires different porch calculation in DECON. Change-Id: I1bfc2554cd3204ebb270ab2e4a396d0f69f5a7f4 Signed-off-by: Andrzej Hajda --- drivers/gpu/drm/exynos/exynos5433_drm_decon.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/drivers/gpu/drm/exynos/exynos5433_drm_decon.c b/drivers/gpu/drm/exynos/exynos5433_drm_decon.c index b0f696f12f8b..c8593bbd0e3a 100644 --- a/drivers/gpu/drm/exynos/exynos5433_drm_decon.c +++ b/drivers/gpu/drm/exynos/exynos5433_drm_decon.c @@ -221,10 +221,12 @@ static void decon_commit(struct exynos_drm_crtc *crtc) writel(val, ctx->addr + DECON_VIDTCON2); if (!ctx->i80_if) { - val = VIDTCON00_VBPD_F( - mode->crtc_vtotal - mode->crtc_vsync_end - 1) | - VIDTCON00_VFPD_F( - mode->crtc_vsync_start - mode->crtc_vdisplay - 1); + int vbp = mode->crtc_vtotal - mode->crtc_vsync_end; + int vfp = mode->crtc_vsync_start - mode->crtc_vdisplay; + + if (interlaced) + vbp = vbp / 2 - 1; + val = VIDTCON00_VBPD_F(vbp - 1) | VIDTCON00_VFPD_F(vfp - 1); writel(val, ctx->addr + DECON_VIDTCON00); val = VIDTCON01_VSPW_F( -- cgit v1.2.3