aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrzej Hajda <a.hajda@samsung.com>2017-01-20 01:52:24 -0500
committerInki Dae <inki.dae@samsung.com>2017-02-06 23:52:52 -0500
commit1514d50b7a1b2c2bf72545625eb6bedef793c40a (patch)
tree4a5db1e1785c52b0062b59b50e8b7bae835fcbd3
parent5aa6c9ace55d2ca2d41118208fe8476907b4b066 (diff)
drm/exynos/decon5433: signal vblank only on odd fields
In case of interlace mode irq is generated for odd and even fields, but vblank should be signaled only for the last emitted field. Signed-off-by: Andrzej Hajda <a.hajda@samsung.com> Signed-off-by: Inki Dae <inki.dae@samsung.com>
-rw-r--r--drivers/gpu/drm/exynos/exynos5433_drm_decon.c7
-rw-r--r--include/video/exynos5433_decon.h1
2 files changed, 8 insertions, 0 deletions
diff --git a/drivers/gpu/drm/exynos/exynos5433_drm_decon.c b/drivers/gpu/drm/exynos/exynos5433_drm_decon.c
index b828480e81c5..0fd6f7a18364 100644
--- a/drivers/gpu/drm/exynos/exynos5433_drm_decon.c
+++ b/drivers/gpu/drm/exynos/exynos5433_drm_decon.c
@@ -591,6 +591,13 @@ static irqreturn_t decon_irq_handler(int irq, void *dev_id)
591 591
592 if (val) { 592 if (val) {
593 writel(val, ctx->addr + DECON_VIDINTCON1); 593 writel(val, ctx->addr + DECON_VIDINTCON1);
594 if (ctx->out_type & IFTYPE_HDMI) {
595 val = readl(ctx->addr + DECON_VIDOUTCON0);
596 val &= VIDOUT_INTERLACE_EN_F | VIDOUT_INTERLACE_FIELD_F;
597 if (val ==
598 (VIDOUT_INTERLACE_EN_F | VIDOUT_INTERLACE_FIELD_F))
599 return IRQ_HANDLED;
600 }
594 drm_crtc_handle_vblank(&ctx->crtc->base); 601 drm_crtc_handle_vblank(&ctx->crtc->base);
595 } 602 }
596 603
diff --git a/include/video/exynos5433_decon.h b/include/video/exynos5433_decon.h
index b26511a0ddf8..ef8e2a8ad0af 100644
--- a/include/video/exynos5433_decon.h
+++ b/include/video/exynos5433_decon.h
@@ -89,6 +89,7 @@
89#define VIDCON0_ENVID_F (1 << 0) 89#define VIDCON0_ENVID_F (1 << 0)
90 90
91/* VIDOUTCON0 */ 91/* VIDOUTCON0 */
92#define VIDOUT_INTERLACE_FIELD_F (1 << 29)
92#define VIDOUT_INTERLACE_EN_F (1 << 28) 93#define VIDOUT_INTERLACE_EN_F (1 << 28)
93#define VIDOUT_LCD_ON (1 << 24) 94#define VIDOUT_LCD_ON (1 << 24)
94#define VIDOUT_IF_F_MASK (0x3 << 20) 95#define VIDOUT_IF_F_MASK (0x3 << 20)