From: Ville Syrjälä <ville.syrj...@linux.intel.com>

encoder->disable() is supposed to happen before the pipe/transcoder
gets disabled. The icl+ DSI code screwed that up and put most things
(including the transcoder disable itself) into  encoder->disable().
Follow the common rules and hoist most things into the
encoder->post_disable() hook.

Reviewed-by: Jani Nikula <jani.nik...@intel.com>
Signed-off-by: Ville Syrjälä <ville.syrj...@linux.intel.com>
---
 drivers/gpu/drm/i915/display/icl_dsi.c | 19 ++++++++++---------
 1 file changed, 10 insertions(+), 9 deletions(-)

diff --git a/drivers/gpu/drm/i915/display/icl_dsi.c 
b/drivers/gpu/drm/i915/display/icl_dsi.c
index 780a004fe700..a33721bac5ae 100644
--- a/drivers/gpu/drm/i915/display/icl_dsi.c
+++ b/drivers/gpu/drm/i915/display/icl_dsi.c
@@ -1395,11 +1395,20 @@ static void gen11_dsi_disable(struct intel_atomic_state 
*state,
                              const struct drm_connector_state *old_conn_state)
 {
        struct intel_dsi *intel_dsi = enc_to_intel_dsi(encoder);
-       struct intel_crtc *crtc = to_intel_crtc(old_conn_state->crtc);
 
        /* step1: turn off backlight */
        intel_dsi_vbt_exec_sequence(intel_dsi, MIPI_SEQ_BACKLIGHT_OFF);
        intel_backlight_disable(old_conn_state);
+}
+
+static void gen11_dsi_post_disable(struct intel_atomic_state *state,
+                                  struct intel_encoder *encoder,
+                                  const struct intel_crtc_state 
*old_crtc_state,
+                                  const struct drm_connector_state 
*old_conn_state)
+{
+       struct intel_crtc *crtc = to_intel_crtc(old_conn_state->crtc);
+
+       intel_crtc_vblank_off(old_crtc_state);
 
        /* step2d,e: disable transcoder and wait */
        gen11_dsi_disable_transcoder(encoder);
@@ -1420,14 +1429,6 @@ static void gen11_dsi_disable(struct intel_atomic_state 
*state,
 
        /* step4: disable IO power */
        gen11_dsi_disable_io_power(encoder);
-}
-
-static void gen11_dsi_post_disable(struct intel_atomic_state *state,
-                                  struct intel_encoder *encoder,
-                                  const struct intel_crtc_state 
*old_crtc_state,
-                                  const struct drm_connector_state 
*old_conn_state)
-{
-       intel_crtc_vblank_off(old_crtc_state);
 
        intel_dsc_disable(old_crtc_state);
 
-- 
2.39.3

Reply via email to