Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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 <a.hajda@samsung.com>
Signed-off-by: Inki Dae <inki.dae@samsung.com>

authored by

Andrzej Hajda and committed by
Inki Dae
b0bb3d07 59b62d3c

+1 -2
+1 -2
drivers/gpu/drm/exynos/exynos5433_drm_decon.c
··· 439 439 440 440 if (test_and_clear_bit(BIT_WIN_UPDATED, &ctx->flags)) 441 441 decon_set_bits(ctx, DECON_TRIGCON, TRIGCON_SWTRIGCMD, ~0); 442 - 443 - drm_crtc_handle_vblank(&ctx->crtc->base); 444 442 } 445 443 446 444 static void decon_clear_channels(struct exynos_drm_crtc *crtc) ··· 571 573 572 574 /* clear */ 573 575 writel(val, ctx->addr + DECON_VIDINTCON1); 576 + drm_crtc_handle_vblank(&ctx->crtc->base); 574 577 } 575 578 576 579 out: