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