On Mon, Oct 04, 2021 at 08:05:35PM +0300, Ville Syrjala wrote: > From: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> > > I suppose intel_dp_dump_link_status() might be useful for diagnosing > link training failures. Hoever we only call from the channel EQ phase > currently. Let's call it from the CR phase as well. > > Signed-off-by: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> Reviewed-by: Imre Deak <imre.deak@xxxxxxxxx> > --- > drivers/gpu/drm/i915/display/intel_dp_link_training.c | 6 ++++-- > 1 file changed, 4 insertions(+), 2 deletions(-) > > diff --git a/drivers/gpu/drm/i915/display/intel_dp_link_training.c b/drivers/gpu/drm/i915/display/intel_dp_link_training.c > index 18f4b469766e..c92044710012 100644 > --- a/drivers/gpu/drm/i915/display/intel_dp_link_training.c > +++ b/drivers/gpu/drm/i915/display/intel_dp_link_training.c > @@ -649,6 +649,7 @@ intel_dp_link_training_clock_recovery(struct intel_dp *intel_dp, > struct drm_i915_private *i915 = to_i915(encoder->base.dev); > u8 old_link_status[DP_LINK_STATUS_SIZE] = {}; > int voltage_tries, cr_tries, max_cr_tries; > + u8 link_status[DP_LINK_STATUS_SIZE]; > bool max_vswing_reached = false; > char phy_name[10]; > > @@ -678,8 +679,6 @@ intel_dp_link_training_clock_recovery(struct intel_dp *intel_dp, > > voltage_tries = 1; > for (cr_tries = 0; cr_tries < max_cr_tries; ++cr_tries) { > - u8 link_status[DP_LINK_STATUS_SIZE]; > - > intel_dp_link_training_clock_recovery_delay(intel_dp, dp_phy); > > if (drm_dp_dpcd_read_phy_link_status(&intel_dp->aux, dp_phy, > @@ -697,6 +696,7 @@ intel_dp_link_training_clock_recovery(struct intel_dp *intel_dp, > } > > if (voltage_tries == 5) { > + intel_dp_dump_link_status(intel_dp, dp_phy, link_status); > drm_dbg_kms(&i915->drm, > "[ENCODER:%d:%s][%s] Same voltage tried 5 times\n", > encoder->base.base.id, encoder->base.name, phy_name); > @@ -704,6 +704,7 @@ intel_dp_link_training_clock_recovery(struct intel_dp *intel_dp, > } > > if (max_vswing_reached) { > + intel_dp_dump_link_status(intel_dp, dp_phy, link_status); > drm_dbg_kms(&i915->drm, > "[ENCODER:%d:%s][%s] Max Voltage Swing reached\n", > encoder->base.base.id, encoder->base.name, phy_name); > @@ -732,6 +733,7 @@ intel_dp_link_training_clock_recovery(struct intel_dp *intel_dp, > max_vswing_reached = true; > } > > + intel_dp_dump_link_status(intel_dp, dp_phy, link_status); > drm_err(&i915->drm, > "[ENCODER:%d:%s][%s] Failed clock recovery %d times, giving up!\n", > encoder->base.base.id, encoder->base.name, phy_name, max_cr_tries); > -- > 2.32.0 >