On 13.04.2017 10:33, Inki Dae wrote: > > 2017년 04월 05일 16:28에 Andrzej Hajda 이(가) 쓴 글: >> Since DECON uses enable_irq/disable_irq to full control IRQs, >> there is no point in having flags to trace it separately. >> As a bonus condition for software trigger becomes always true, >> so it can be removed. >> >> Signed-off-by: Andrzej Hajda <a.ha...@samsung.com> >> --- >> drivers/gpu/drm/exynos/exynos5433_drm_decon.c | 8 +------- >> 1 file changed, 1 insertion(+), 7 deletions(-) >> >> diff --git a/drivers/gpu/drm/exynos/exynos5433_drm_decon.c >> b/drivers/gpu/drm/exynos/exynos5433_drm_decon.c >> index 5bdf1a0..dc2e69a 100644 >> --- a/drivers/gpu/drm/exynos/exynos5433_drm_decon.c >> +++ b/drivers/gpu/drm/exynos/exynos5433_drm_decon.c >> @@ -49,7 +49,6 @@ static const char * const decon_clks_name[] = { >> >> enum decon_flag_bits { >> BIT_CLKS_ENABLED, >> - BIT_IRQS_ENABLED, >> BIT_WIN_UPDATED, >> BIT_SUSPENDED >> }; >> @@ -112,8 +111,6 @@ static int decon_enable_vblank(struct exynos_drm_crtc >> *crtc) >> if (!(ctx->out_type & I80_HW_TRG)) >> enable_irq(ctx->te_irq); >> >> - set_bit(BIT_IRQS_ENABLED, &ctx->flags); >> - >> return 0; >> } >> >> @@ -121,7 +118,6 @@ 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; >> >> @@ -536,9 +532,7 @@ static irqreturn_t decon_te_irq_handler(int irq, void >> *dev_id) >> (ctx->out_type & I80_HW_TRG)) >> return IRQ_HANDLED; >> >> - 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); >> + decon_set_bits(ctx, DECON_TRIGCON, TRIGCON_SWTRIGCMD, ~0); > This code would incur mulfunction if now decon driver uses sw trigger mode. > The panel device on TM2 and TM2E boards supports ALPM mode which makes Panel > device to be keeped on with low power even ARM, crtc and encoder devices are > off. > In this case, even if decon device is off te interrupt could happen and > writing to decon register could be tried.
As commit message explains it should not happen because of precise control of irqs enablement. More precisely patch 4 prevents it - te irq is disabled by decon_disable_vblank, and synchronized (ie ensured that there are no pending irqs) in decon_disable. Regards Andrzej > > Thanks, > Inki Dae > >> >> return IRQ_HANDLED; >> } >> > _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel