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)
 {
                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);