diff options
Diffstat (limited to 'drivers/gpu/drm/mediatek/mtk_dsi.c')
-rw-r--r-- | drivers/gpu/drm/mediatek/mtk_dsi.c | 10 |
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; |