]> git.itanic.dy.fi Git - linux-stable/blobdiff - drivers/gpu/drm/mediatek/mtk_dsi.c
drm/mediatek: dsi: Move mtk_dsi_stop() call back to mtk_dsi_poweroff()
[linux-stable] / drivers / gpu / drm / mediatek / mtk_dsi.c
index e98b4aca2cb9b6632edf9bba2eaf03920cb4abde..9a3b86c29b503da342f18d7c5f5f32d77b77be0f 100644 (file)
@@ -685,6 +685,16 @@ static void mtk_dsi_poweroff(struct mtk_dsi *dsi)
        if (--dsi->refcount != 0)
                return;
 
+       /*
+        * mtk_dsi_stop() and mtk_dsi_start() is asymmetric, since
+        * mtk_dsi_stop() should be called after mtk_drm_crtc_atomic_disable(),
+        * which needs irq for vblank, and mtk_dsi_stop() will disable irq.
+        * mtk_dsi_start() needs to be called in mtk_output_dsi_enable(),
+        * after dsi is fully set.
+        */
+       mtk_dsi_stop(dsi);
+
+       mtk_dsi_switch_to_cmd_mode(dsi, VM_DONE_INT_FLAG, 500);
        mtk_dsi_reset_engine(dsi);
        mtk_dsi_lane0_ulp_mode_enter(dsi);
        mtk_dsi_clk_ulp_mode_enter(dsi);
@@ -735,17 +745,6 @@ static void mtk_output_dsi_disable(struct mtk_dsi *dsi)
        if (!dsi->enabled)
                return;
 
-       /*
-        * mtk_dsi_stop() and mtk_dsi_start() is asymmetric, since
-        * mtk_dsi_stop() should be called after mtk_drm_crtc_atomic_disable(),
-        * which needs irq for vblank, and mtk_dsi_stop() will disable irq.
-        * mtk_dsi_start() needs to be called in mtk_output_dsi_enable(),
-        * after dsi is fully set.
-        */
-       mtk_dsi_stop(dsi);
-
-       mtk_dsi_switch_to_cmd_mode(dsi, VM_DONE_INT_FLAG, 500);
-
        dsi->enabled = false;
 }