]> www.infradead.org Git - users/hch/misc.git/commitdiff
drm/amd/display: Modify the link training policy
authorZhikai Zhai <zhikai.zhai@amd.com>
Tue, 29 Jul 2025 09:39:54 +0000 (17:39 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Mon, 15 Sep 2025 20:57:04 +0000 (16:57 -0400)
[Why&How]
Currently fallback to low link rate if the link training
fails once on USB4. It may cause the bandwidth couldn't
satisfy the requirement of streams. Modify the policy
to do training retry in the previous few times, only
do fallback at the last time.

Reviewed-by: Meenakshikumar Somasundaram <meenakshikumar.somasundaram@amd.com>
Signed-off-by: Zhikai Zhai <zhikai.zhai@amd.com>
Signed-off-by: Ray Wu <ray.wu@amd.com>
Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/display/dc/link/protocols/link_dp_training.c

index 134093ce5a8e83fd63e927933d8d9fc33a7df1d6..08e2b572e0ff674d1742769088c969231c38bbda 100644 (file)
@@ -1729,6 +1729,15 @@ bool perform_link_training_with_retries(
                                break;
                }
 
+               if (link->ep_type == DISPLAY_ENDPOINT_USB4_DPIA &&
+                               stream->signal == SIGNAL_TYPE_DISPLAY_PORT_MST &&
+                               !link->dc->config.enable_dpia_pre_training) {
+                       if (j == (attempts - 1))
+                               do_fallback = true;
+                       else
+                               do_fallback = false;
+               }
+
                if (j == (attempts - 1)) {
                        DC_LOG_WARNING(
                                "%s: Link(%d) training attempt %u of %d failed @ rate(%d) x lane(%d) @ spread = %x : fail reason:(%d)\n",