Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 366dcad3 authored by Andrzej Hajda's avatar Andrzej Hajda Committed by Inki Dae
Browse files

drm/exynos/decon5433: always do sw-trigger when vblanks enabled



When vblanks are enabled userspace and/or kernel can expect vblank
interrupt at declared period of time. To generate vblank interrupt
image transfer must be triggered. This patch fixes vblank timeouts
in case of sw-trigger mode.

Signed-off-by: default avatarAndrzej Hajda <a.hajda@samsung.com>
Signed-off-by: default avatarInki Dae <inki.dae@samsung.com>
parent 2a6e4cd5
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -49,6 +49,7 @@ static const char * const decon_clks_name[] = {

enum decon_flag_bits {
	BIT_CLKS_ENABLED,
	BIT_IRQS_ENABLED,
	BIT_WIN_UPDATED,
	BIT_SUSPENDED
};
@@ -104,6 +105,7 @@ static int decon_enable_vblank(struct exynos_drm_crtc *crtc)
		val |= VIDINTCON0_INTFRMEN | VIDINTCON0_FRAMESEL_FP;

	writel(val, ctx->addr + DECON_VIDINTCON0);
	set_bit(BIT_IRQS_ENABLED, &ctx->flags);

	return 0;
}
@@ -112,6 +114,7 @@ static void decon_disable_vblank(struct exynos_drm_crtc *crtc)
{
	struct decon_context *ctx = crtc->ctx;

	clear_bit(BIT_IRQS_ENABLED, &ctx->flags);
	if (test_bit(BIT_SUSPENDED, &ctx->flags))
		return;

@@ -518,7 +521,8 @@ static void decon_te_irq_handler(struct exynos_drm_crtc *crtc)
	    (ctx->out_type & I80_HW_TRG))
		return;

	if (test_and_clear_bit(BIT_WIN_UPDATED, &ctx->flags))
	if (test_and_clear_bit(BIT_WIN_UPDATED, &ctx->flags) ||
	    test_bit(BIT_IRQS_ENABLED, &ctx->flags))
		decon_set_bits(ctx, DECON_TRIGCON, TRIGCON_SWTRIGCMD, ~0);
}