diff --git a/drivers/gpu/drm/i915/intel_dp_link_training.c b/drivers/gpu/drm/i915/intel_dp_link_training.c index 1e7f92a..244d3cc 100644 --- a/drivers/gpu/drm/i915/intel_dp_link_training.c +++ b/drivers/gpu/drm/i915/intel_dp_link_training.c @@ -104,6 +104,7 @@ intel_dp_reset_link_train(struct intel_dp *intel_dp, { bool has_dpcd; bool flt_supported = false; + bool set_link_train = false; has_dpcd = intel_dp_get_dpcd(intel_dp); @@ -119,10 +120,18 @@ intel_dp_reset_link_train(struct intel_dp *intel_dp, DRM_DEBUG_KMS("fast link training enabled: %s\n", intel_dp->train_set_valid ? "true" : "false"); - if (!intel_dp->train_set_valid) + if (intel_dp->train_set_valid) { + intel_dp_set_signal_levels(intel_dp); + set_link_train = intel_dp_set_link_train(intel_dp, dp_train_pat); + } + + if (!intel_dp->train_set_valid || !set_link_train) { memset(intel_dp->train_set, 0, sizeof(intel_dp->train_set)); - intel_dp_set_signal_levels(intel_dp); - return intel_dp_set_link_train(intel_dp, dp_train_pat); + intel_dp_set_signal_levels(intel_dp); + return intel_dp_set_link_train(intel_dp, dp_train_pat); + } + + return set_link_train; } static bool