aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/gpu/drm/mediatek/mtk_dsi.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/drivers/gpu/drm/mediatek/mtk_dsi.c b/drivers/gpu/drm/mediatek/mtk_dsi.c
index 1ae3be99e0ff..179f2b080342 100644
--- a/drivers/gpu/drm/mediatek/mtk_dsi.c
+++ b/drivers/gpu/drm/mediatek/mtk_dsi.c
@@ -630,6 +630,15 @@ static void mtk_dsi_poweroff(struct mtk_dsi *dsi)
630 if (--dsi->refcount != 0) 630 if (--dsi->refcount != 0)
631 return; 631 return;
632 632
633 /*
634 * mtk_dsi_stop() and mtk_dsi_start() is asymmetric, since
635 * mtk_dsi_stop() should be called after mtk_drm_crtc_atomic_disable(),
636 * which needs irq for vblank, and mtk_dsi_stop() will disable irq.
637 * mtk_dsi_start() needs to be called in mtk_output_dsi_enable(),
638 * after dsi is fully set.
639 */
640 mtk_dsi_stop(dsi);
641
633 if (!mtk_dsi_switch_to_cmd_mode(dsi, VM_DONE_INT_FLAG, 500)) { 642 if (!mtk_dsi_switch_to_cmd_mode(dsi, VM_DONE_INT_FLAG, 500)) {
634 if (dsi->panel) { 643 if (dsi->panel) {
635 if (drm_panel_unprepare(dsi->panel)) { 644 if (drm_panel_unprepare(dsi->panel)) {
@@ -696,7 +705,6 @@ static void mtk_output_dsi_disable(struct mtk_dsi *dsi)
696 } 705 }
697 } 706 }
698 707
699 mtk_dsi_stop(dsi);
700 mtk_dsi_poweroff(dsi); 708 mtk_dsi_poweroff(dsi);
701 709
702 dsi->enabled = false; 710 dsi->enabled = false;