drm/i915/mst: add intel_dp_mst_disconnect()
authorJani Nikula <jani.nikula@intel.com>
Tue, 19 Mar 2024 09:12:52 +0000 (11:12 +0200)
committerJani Nikula <jani.nikula@intel.com>
Thu, 21 Mar 2024 06:44:36 +0000 (08:44 +0200)
Abstract the MST mode disconnect to a separate function.

Cc: Arun R Murthy <arun.r.murthy@intel.com>
Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/c39239fb6bef87a89219c8fbe7799f97f91b9042.1710839496.git.jani.nikula@intel.com
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
drivers/gpu/drm/i915/display/intel_dp.c

index ee51985c3d15559f304ff8544fa674a33deaf693..24f7c2a9b707ccc99a60dd282975e797f55eb4c5 100644 (file)
@@ -4104,6 +4104,20 @@ intel_dp_mst_configure(struct intel_dp *intel_dp)
        intel_dp->mst_detect = DRM_DP_SST;
 }
 
+static void
+intel_dp_mst_disconnect(struct intel_dp *intel_dp)
+{
+       struct drm_i915_private *i915 = dp_to_i915(intel_dp);
+
+       if (!intel_dp->is_mst)
+               return;
+
+       drm_dbg_kms(&i915->drm, "MST device may have disappeared %d vs %d\n",
+                   intel_dp->is_mst, intel_dp->mst_mgr.mst_state);
+       intel_dp->is_mst = false;
+       drm_dp_mst_topology_mgr_set_mst(&intel_dp->mst_mgr, intel_dp->is_mst);
+}
+
 static bool
 intel_dp_get_sink_irq_esi(struct intel_dp *intel_dp, u8 *esi)
 {
@@ -5779,15 +5793,7 @@ intel_dp_detect(struct drm_connector *connector,
                memset(intel_connector->dp.dsc_dpcd, 0, sizeof(intel_connector->dp.dsc_dpcd));
                intel_dp->psr.sink_panel_replay_support = false;
 
-               if (intel_dp->is_mst) {
-                       drm_dbg_kms(&dev_priv->drm,
-                                   "MST device may have disappeared %d vs %d\n",
-                                   intel_dp->is_mst,
-                                   intel_dp->mst_mgr.mst_state);
-                       intel_dp->is_mst = false;
-                       drm_dp_mst_topology_mgr_set_mst(&intel_dp->mst_mgr,
-                                                       intel_dp->is_mst);
-               }
+               intel_dp_mst_disconnect(intel_dp);
 
                intel_dp_tunnel_disconnect(intel_dp);