drm/exynos/decon5433: fix porch calculation in interlaced mode 56/103756/2
authorAndrzej Hajda <a.hajda@samsung.com>
Fri, 9 Dec 2016 09:49:18 +0000 (10:49 +0100)
committerSeung-Woo Kim <sw0312.kim@samsung.com>
Wed, 14 Dec 2016 04:18:14 +0000 (20:18 -0800)
Interlaced mode requires different porch calculation in DECON.

Change-Id: I1bfc2554cd3204ebb270ab2e4a396d0f69f5a7f4
Signed-off-by: Andrzej Hajda <a.hajda@samsung.com>
drivers/gpu/drm/exynos/exynos5433_drm_decon.c

index b0f696f12f8b8d562a27698bcbff65e94a2a4e07..c8593bbd0e3a37df1e93ade2d3467eaf28e3e6bc 100644 (file)
@@ -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(