Propossed patch
-- Ricardo Ribalda
diff --git a/drivers/gpu/drm/i915/intel_dp_link_training.c b/drivers/gpu/drm/i915/intel_dp_link_training.c index 3fcaa98..50a7c93 100644 --- a/drivers/gpu/drm/i915/intel_dp_link_training.c +++ b/drivers/gpu/drm/i915/intel_dp_link_training.c @@ -318,14 +318,23 @@ void intel_dp_stop_link_train(struct intel_dp *intel_dp) DP_TRAINING_PATTERN_DISABLE); } +#define N_TRIES 20 void intel_dp_start_link_train(struct intel_dp *intel_dp) { struct intel_connector *intel_connector = intel_dp->attached_connector; + int tries; - if (!intel_dp_link_training_clock_recovery(intel_dp)) - goto failure_handling; - if (!intel_dp_link_training_channel_equalization(intel_dp)) + for (tries = 0; tries < N_TRIES; tries++) { + if (!intel_dp_link_training_clock_recovery(intel_dp)){ + msleep(10); + continue; + } + if (intel_dp_link_training_channel_equalization(intel_dp)) + break; + } + + if (tries == N_TRIES) goto failure_handling; DRM_DEBUG_KMS("[CONNECTOR:%d:%s] Link Training Passed at Link Rate = %d, Lane count = %d",