Blob Blame History Raw
From 9b59b8c6f8462cd330fc7fb735c4d864357b3689 Mon Sep 17 00:00:00 2001
From: Bibby Hsieh <bibby.hsieh@mediatek.com>
Date: Tue, 10 Dec 2019 13:05:23 +0800
Subject: drm/mediatek: disable all the planes in atomic_disable
Git-commit: 9b59b8c6f8462cd330fc7fb735c4d864357b3689
Patch-mainline: v5.6-rc1
References: bsc#1114279

Under shadow register case, we do not disable all the plane before
disable all the hardwares. Fix it.

Fixes: 9dc84e98a31f ("drm/mediatek: add shadow register support")

Signed-off-by: Bibby Hsieh <bibby.hsieh@mediatek.com>
Signed-off-by: CK Hu <ck.hu@mediatek.com>
Acked-by: Thomas Zimmermann <tzimmermann@suse.de>
---
 drivers/gpu/drm/mediatek/mtk_drm_crtc.c |    6 ++++++
 1 file changed, 6 insertions(+)

--- a/drivers/gpu/drm/mediatek/mtk_drm_crtc.c
+++ b/drivers/gpu/drm/mediatek/mtk_drm_crtc.c
@@ -391,6 +391,7 @@ static void mtk_drm_crtc_disable(struct
 {
 	struct mtk_drm_crtc *mtk_crtc = to_mtk_crtc(crtc);
 	struct mtk_ddp_comp *comp = mtk_crtc->ddp_comp[0];
+	struct mtk_drm_private *priv = crtc->dev->dev_private;
 	int i;
 
 	DRM_DEBUG_DRIVER("%s %d\n", __func__, crtc->base.id);
@@ -408,6 +409,11 @@ static void mtk_drm_crtc_disable(struct
 	}
 	mtk_crtc->pending_planes = true;
 
+	if (priv->data->shadow_register) {
+		mtk_disp_mutex_acquire(mtk_crtc->mutex);
+		mtk_crtc_ddp_config(crtc);
+		mtk_disp_mutex_release(mtk_crtc->mutex);
+	}
 	/* Wait for planes to be disabled */
 	drm_crtc_wait_one_vblank(crtc);