drm/i915/dsi: Move most things from .disable() into .post_disable() on icl+
authorVille Syrjälä <ville.syrjala@linux.intel.com>
Thu, 8 Jun 2023 20:30:52 +0000 (23:30 +0300)
committerVille Syrjälä <ville.syrjala@linux.intel.com>
Tue, 13 Jun 2023 16:05:52 +0000 (19:05 +0300)
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.nikula@intel.com>
Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20230608203057.23759-9-ville.syrjala@linux.intel.com
drivers/gpu/drm/i915/display/icl_dsi.c

index 780a004..a33721b 100644 (file)
@@ -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);