On Mon, Oct 04, 2021 at 08:05:35PM +0300, Ville Syrjala wrote:
> From: Ville Syrjälä <ville.syrj...@linux.intel.com>
> 
> 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.syrj...@linux.intel.com>

Reviewed-by: Imre Deak <imre.d...@intel.com>

> ---
>  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
> 

Reply via email to