diff mbox

[v2,3/3] drm/exynos: initialize VIDCON0 when fimd is disabled

Message ID 1434097636-10709-3-git-send-email-jy0922.shim@samsung.com (mailing list archive)
State Not Applicable, archived
Headers show

Commit Message

Joonyoung Shim June 12, 2015, 8:27 a.m. UTC
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(+)

Comments

Gustavo Padovan June 15, 2015, 8:44 p.m. UTC | #1
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 mbox

Patch

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);