Message ID | 1434097636-10709-3-git-send-email-jy0922.shim@samsung.com (mailing list archive) |
---|---|
State | Not Applicable, archived |
Headers | show |
Hi Joonyoung, 2015-06-12 Joonyoung Shim <jy0922.shim@samsung.com>: > 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> > --- > drivers/gpu/drm/exynos/exynos_drm_fimd.c | 2 ++ > 1 file changed, 2 insertions(+) Reviewed-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk> Gustavo -- To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/gpu/drm/exynos/exynos_drm_fimd.c b/drivers/gpu/drm/exynos/exynos_drm_fimd.c index b45e09b..3b0e0f6 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_fimd.c +++ b/drivers/gpu/drm/exynos/exynos_drm_fimd.c @@ -791,6 +791,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);
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> --- drivers/gpu/drm/exynos/exynos_drm_fimd.c | 2 ++ 1 file changed, 2 insertions(+)