Skip to content

Commit

Permalink
drm/exynos/decon5433: always do sw-trigger when vblanks enabled
Browse files Browse the repository at this point in the history
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: Andrzej Hajda <a.hajda@samsung.com>
Signed-off-by: Inki Dae <inki.dae@samsung.com>
  • Loading branch information
Andrzej Hajda authored and Inki Dae committed Jun 1, 2017
1 parent 2a6e4cd commit 366dcad
Showing 1 changed file with 5 additions and 1 deletion.
6 changes: 5 additions & 1 deletion drivers/gpu/drm/exynos/exynos5433_drm_decon.c
Original file line number Diff line number Diff line change
Expand Up @@ -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
};
Expand Down Expand Up @@ -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;
}
Expand All @@ -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;

Expand Down Expand Up @@ -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);
}

Expand Down

0 comments on commit 366dcad

Please sign in to comment.