From b0bb3d0775224ef2ac6f0b68df353281a399d78e Mon Sep 17 00:00:00 2001 From: Andrzej Hajda Date: Fri, 29 Apr 2016 15:42:47 +0200 Subject: [PATCH] drm/exynos/decon5433: handle vblank in vblank interrupt vblank should be signaled to userspace after reading framebuffers not before, signaling it in TE interrupt looks wrong. TE triggers reading framebuffers so it is the worst moment. Tearing is not observable because hardware prevents it, but there are frequently skipped vblank events. Signed-off-by: Andrzej Hajda Signed-off-by: Inki Dae --- drivers/gpu/drm/exynos/exynos5433_drm_decon.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/drivers/gpu/drm/exynos/exynos5433_drm_decon.c b/drivers/gpu/drm/exynos/exynos5433_drm_decon.c index 4ab5bfc23647..cb6519b49f23 100644 --- a/drivers/gpu/drm/exynos/exynos5433_drm_decon.c +++ b/drivers/gpu/drm/exynos/exynos5433_drm_decon.c @@ -439,8 +439,6 @@ static void decon_te_irq_handler(struct exynos_drm_crtc *crtc) if (test_and_clear_bit(BIT_WIN_UPDATED, &ctx->flags)) decon_set_bits(ctx, DECON_TRIGCON, TRIGCON_SWTRIGCMD, ~0); - - drm_crtc_handle_vblank(&ctx->crtc->base); } static void decon_clear_channels(struct exynos_drm_crtc *crtc) @@ -573,6 +571,7 @@ static irqreturn_t decon_irq_handler(int irq, void *dev_id) /* clear */ writel(val, ctx->addr + DECON_VIDINTCON1); + drm_crtc_handle_vblank(&ctx->crtc->base); } out: -- 2.39.5