drm/amd/display: Skip DPCD read for DPTX-to-DPIA hop
authorJimmy Kizito <Jimmy.Kizito@amd.com>
Mon, 5 Apr 2021 22:05:09 +0000 (18:05 -0400)
committerAlex Deucher <alexander.deucher@amd.com>
Wed, 6 Oct 2021 19:51:28 +0000 (15:51 -0400)
[why & how]
Driver does not need to train the first hop.

Reviewed-by: Jun Lei <Jun.Lei@amd.com>
Acked-by: Wayne Lin <Wayne.Lin@amd.com>
Acked-by: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>
Acked-by: Harry Wentland <harry.wentland@amd.com>
Signed-off-by: Jimmy Kizito <Jimmy.Kizito@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/display/dc/core/dc_link_dp.c

index c9477ddbdd5d71777a21b1e650054e0ba8de492b..13bf1d5ffb25e617c480d5a5f48ed9a54287f60c 100644 (file)
@@ -1775,6 +1775,13 @@ static enum dc_status configure_lttpr_mode_non_transparent(
 
                if (encoding == DP_8b_10b_ENCODING) {
                        repeater_cnt = dp_convert_to_count(link->dpcd_caps.lttpr_caps.phy_repeater_cnt);
+
+                       /* Driver does not need to train the first hop. Skip DPCD read and clear
+                        * AUX_RD_INTERVAL for DPTX-to-DPIA hop.
+                        */
+                       if (link->ep_type == DISPLAY_ENDPOINT_USB4_DPIA)
+                               link->dpcd_caps.lttpr_caps.aux_rd_interval[--repeater_cnt] = 0;
+
                        for (repeater_id = repeater_cnt; repeater_id > 0; repeater_id--) {
                                aux_interval_address = DP_TRAINING_AUX_RD_INTERVAL_PHY_REPEATER1 +
                                                        ((DP_REPEATER_CONFIGURATION_AND_STATUS_SIZE) * (repeater_id - 1));