OSDN Git Service

drm/i915/dp: Factor out intel_dp_get_active_pipes()
authorImre Deak <imre.deak@intel.com>
Wed, 10 May 2023 10:31:28 +0000 (13:31 +0300)
committerImre Deak <imre.deak@intel.com>
Tue, 16 May 2023 13:53:49 +0000 (16:53 +0300)
Factor out a helper used by a follow up patch to reset an active DP
link.

No functional changes.

Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Signed-off-by: Imre Deak <imre.deak@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20230510103131.1618266-12-imre.deak@intel.com
drivers/gpu/drm/i915/display/intel_dp.c

index b35ab25..088d67c 100644 (file)
@@ -4232,9 +4232,9 @@ static bool intel_dp_has_connector(struct intel_dp *intel_dp,
        return false;
 }
 
-static int intel_dp_prep_link_retrain(struct intel_dp *intel_dp,
-                                     struct drm_modeset_acquire_ctx *ctx,
-                                     u8 *pipe_mask)
+static int intel_dp_get_active_pipes(struct intel_dp *intel_dp,
+                                    struct drm_modeset_acquire_ctx *ctx,
+                                    u8 *pipe_mask)
 {
        struct drm_i915_private *i915 = dp_to_i915(intel_dp);
        struct drm_connector_list_iter conn_iter;
@@ -4243,9 +4243,6 @@ static int intel_dp_prep_link_retrain(struct intel_dp *intel_dp,
 
        *pipe_mask = 0;
 
-       if (!intel_dp_needs_link_retrain(intel_dp))
-               return 0;
-
        drm_connector_list_iter_begin(&i915->drm, &conn_iter);
        for_each_intel_connector_iter(connector, &conn_iter) {
                struct drm_connector_state *conn_state =
@@ -4279,9 +4276,6 @@ static int intel_dp_prep_link_retrain(struct intel_dp *intel_dp,
        }
        drm_connector_list_iter_end(&conn_iter);
 
-       if (!intel_dp_needs_link_retrain(intel_dp))
-               *pipe_mask = 0;
-
        return ret;
 }
 
@@ -4310,13 +4304,19 @@ int intel_dp_retrain_link(struct intel_encoder *encoder,
        if (ret)
                return ret;
 
-       ret = intel_dp_prep_link_retrain(intel_dp, ctx, &pipe_mask);
+       if (!intel_dp_needs_link_retrain(intel_dp))
+               return 0;
+
+       ret = intel_dp_get_active_pipes(intel_dp, ctx, &pipe_mask);
        if (ret)
                return ret;
 
        if (pipe_mask == 0)
                return 0;
 
+       if (!intel_dp_needs_link_retrain(intel_dp))
+               return 0;
+
        drm_dbg_kms(&dev_priv->drm, "[ENCODER:%d:%s] retraining link\n",
                    encoder->base.base.id, encoder->base.name);