summaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorWenjing Liu <wenjing.liu@amd.com>2022-04-29 15:42:30 -0400
committerAlex Deucher <alexander.deucher@amd.com>2022-05-10 17:53:12 -0400
commitc371b0d12d0b8497355cc1ac2a11accd2f5b8528 (patch)
tree5a862e6e96826b8409d102ce52ad648844948051 /drivers
parentd9db36d1cdbf2627b75e56f9915f8a2b01b7d2e0 (diff)
downloadlinux-c371b0d12d0b8497355cc1ac2a11accd2f5b8528.tar.bz2
drm/amd/display: do not calculate DP2.0 SST payload when link is off
[Why & How] There is a chance where the RX issues HPD deassert in the middle of link training, this will cause our logic to abort link training and turn off link. However our payload allocation logic needs to use current link settings to determine average time slot per MTP. This will need to use current link bandwidth as divider. This causes divide by zero error occasionally. The fix is to skip DP2.0 payload allocation logic if current link is not in 128b/132b mode. Reviewed-by: George Shen <George.Shen@amd.com> Acked-by: Stylon Wang <stylon.wang@amd.com> Signed-off-by: Wenjing Liu <wenjing.liu@amd.com> Tested-by: Daniel Wheeler <daniel.wheeler@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/gpu/drm/amd/display/dc/core/dc_link.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/gpu/drm/amd/display/dc/core/dc_link.c b/drivers/gpu/drm/amd/display/dc/core/dc_link.c
index 48e274f9ea84..07f154fc4e56 100644
--- a/drivers/gpu/drm/amd/display/dc/core/dc_link.c
+++ b/drivers/gpu/drm/amd/display/dc/core/dc_link.c
@@ -3546,7 +3546,8 @@ static enum dc_status dc_link_update_sst_payload(struct pipe_ctx *pipe_ctx,
}
/* slot X.Y for SST payload allocate */
- if (allocate) {
+ if (allocate && dp_get_link_encoding_format(&link->cur_link_settings) ==
+ DP_128b_132b_ENCODING) {
avg_time_slots_per_mtp = calculate_sst_avg_time_slots_per_mtp(stream, link);
dc_log_vcp_x_y(link, avg_time_slots_per_mtp);