summaryrefslogtreecommitdiff
path: root/drivers/gpu/drm/i915/display/intel_dp_link_training.c
diff options
context:
space:
mode:
authorImre Deak <imre.deak@intel.com>2024-06-10 19:49:20 +0300
committerImre Deak <imre.deak@intel.com>2024-06-13 21:26:49 +0300
commit5bd3e7ea8854601866bac507b3cdda5fd3a29c15 (patch)
treed915b792c099a937eac8579afd8172521f7b5c11 /drivers/gpu/drm/i915/display/intel_dp_link_training.c
parent3b3be899fc81d5957c5dba8907263b52d92993ed (diff)
downloadlinux-5bd3e7ea8854601866bac507b3cdda5fd3a29c15.tar.gz
linux-5bd3e7ea8854601866bac507b3cdda5fd3a29c15.tar.bz2
linux-5bd3e7ea8854601866bac507b3cdda5fd3a29c15.zip
drm/i915/dp: Reduce link params only after retrying with unchanged params
Try to maintain the current link parameters by retrying the link training with unchanged link parameters before reducing these parameters (sending an uevent to userspace to retrain the link instead). Signed-off-by: Imre Deak <imre.deak@intel.com> Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20240610164933.2947366-9-imre.deak@intel.com
Diffstat (limited to 'drivers/gpu/drm/i915/display/intel_dp_link_training.c')
-rw-r--r--drivers/gpu/drm/i915/display/intel_dp_link_training.c8
1 files changed, 8 insertions, 0 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 1164255cf5f2..8caf740e642f 100644
--- a/drivers/gpu/drm/i915/display/intel_dp_link_training.c
+++ b/drivers/gpu/drm/i915/display/intel_dp_link_training.c
@@ -1487,10 +1487,13 @@ void intel_dp_start_link_train(struct intel_dp *intel_dp,
passed = intel_dp_link_train_all_phys(intel_dp, crtc_state, lttpr_count);
if (passed) {
+ intel_dp->link.seq_train_failures = 0;
intel_encoder_link_check_queue_work(encoder, 2000);
return;
}
+ intel_dp->link.seq_train_failures++;
+
/*
* Ignore the link failure in CI
*
@@ -1508,6 +1511,11 @@ void intel_dp_start_link_train(struct intel_dp *intel_dp,
return;
}
+ if (intel_dp->link.seq_train_failures < 2) {
+ intel_encoder_link_check_queue_work(encoder, 0);
+ return;
+ }
+
intel_dp_schedule_fallback_link_training(intel_dp, crtc_state);
}