drm/exynos: initialize VIDCON0 when fimd is disabled
authorJoonyoung Shim <jy0922.shim@samsung.com>
Fri, 12 Jun 2015 08:27:16 +0000 (17:27 +0900)
committerInki Dae <daeinki@gmail.com>
Fri, 19 Jun 2015 15:32:59 +0000 (00:32 +0900)
When the fimd is disabled by fimd_disable(), enabled overlay layers also
are disabled. If clocks for fimd are enabled by fimd_enable() on this
case, it can lead IOMMU page fault. The reason is that VIDCON0_ENVID and
VIDCON0_ENVID_F bits of VIDCON0 register are set still even though fimd
is disabled, so it may continue display output of prior when clocks for
fimd are enabled again.

Signed-off-by: Joonyoung Shim <jy0922.shim@samsung.com>
Signed-off-by: Inki Dae <inki.dae@samsung.com>
drivers/gpu/drm/exynos/exynos_drm_fimd.c

index eafcf07987a641ff8c70f71d07f05a3be5fb71aa..324055f032eca1d2be05cd3fe5066ccc58670bf9 100644 (file)
@@ -801,6 +801,8 @@ static void fimd_disable(struct exynos_drm_crtc *crtc)
        for (i = 0; i < WINDOWS_NR; i++)
                fimd_win_disable(crtc, i);
 
+       writel(0, ctx->regs + VIDCON0);
+
        clk_disable_unprepare(ctx->lcd_clk);
        clk_disable_unprepare(ctx->bus_clk);