From 5e3610e566597064f6fa5856b5a5a400ccf8a565 Mon Sep 17 00:00:00 2001 From: Dmytro Laktyushkin Date: Tue, 5 Apr 2016 14:29:56 -0400 Subject: [PATCH 1054/1110] drm/amd/dal: increase link training retry delay to fix LT failures Signed-off-by: Dmytro Laktyushkin Acked-by: Harry Wentland Signed-off-by: Alex Deucher --- drivers/gpu/drm/amd/dal/dc/core/dc_link.c | 2 +- drivers/gpu/drm/amd/dal/dc/core/dc_link_dp.c | 14 +++++++------- drivers/gpu/drm/amd/dal/dc/inc/dc_link_dp.h | 5 ++++- 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/drivers/gpu/drm/amd/dal/dc/core/dc_link.c b/drivers/gpu/drm/amd/dal/dc/core/dc_link.c index 4e57ed9..6d715c2 100644 --- a/drivers/gpu/drm/amd/dal/dc/core/dc_link.c +++ b/drivers/gpu/drm/amd/dal/dc/core/dc_link.c @@ -1206,7 +1206,7 @@ static enum dc_status enable_link_dp(struct pipe_ctx *pipe_ctx) link, &link_settings, skip_video_pattern, - 3)) { + LINK_TRAINING_ATTEMPTS)) { link->public.cur_link_settings = link_settings; status = DC_OK; } diff --git a/drivers/gpu/drm/amd/dal/dc/core/dc_link_dp.c b/drivers/gpu/drm/amd/dal/dc/core/dc_link_dp.c index c83a754..15e8f61 100644 --- a/drivers/gpu/drm/amd/dal/dc/core/dc_link_dp.c +++ b/drivers/gpu/drm/amd/dal/dc/core/dc_link_dp.c @@ -1043,12 +1043,12 @@ bool perform_link_training_with_retries( struct core_link *link, const struct dc_link_settings *link_setting, bool skip_video_pattern, - unsigned int retires) + int attempts) { uint8_t j; - uint8_t delay_between_retries = 10; + uint8_t delay_between_attempts = LINK_TRAINING_RETRY_DELAY; - for (j = 0; j < retires; ++j) { + for (j = 0; j < attempts; ++j) { if (perform_link_training( link, @@ -1056,8 +1056,8 @@ bool perform_link_training_with_retries( skip_video_pattern)) return true; - msleep(delay_between_retries); - delay_between_retries += 10; + msleep(delay_between_attempts); + delay_between_attempts += LINK_TRAINING_RETRY_DELAY; } return false; @@ -1177,7 +1177,7 @@ bool dp_hbr_verify_link_cap( link, cur, skip_video_pattern, - 3); + LINK_TRAINING_ATTEMPTS); } if (success) @@ -1545,7 +1545,7 @@ bool dc_link_handle_hpd_rx_irq(const struct dc_link *dc_link) "Status: "); perform_link_training_with_retries(link, - &link->public.cur_link_settings, true, 3); + &link->public.cur_link_settings, true, LINK_TRAINING_ATTEMPTS); status = false; } diff --git a/drivers/gpu/drm/amd/dal/dc/inc/dc_link_dp.h b/drivers/gpu/drm/amd/dal/dc/inc/dc_link_dp.h index b9fb8b9..b0cf8e0 100644 --- a/drivers/gpu/drm/amd/dal/dc/inc/dc_link_dp.h +++ b/drivers/gpu/drm/amd/dal/dc/inc/dc_link_dp.h @@ -26,6 +26,9 @@ #ifndef __DC_LINK_DP_H__ #define __DC_LINK_DP_H__ +#define LINK_TRAINING_ATTEMPTS 4 +#define LINK_TRAINING_RETRY_DELAY 50 /* ms */ + struct core_link; struct core_stream; struct dc_link_settings; @@ -46,7 +49,7 @@ bool perform_link_training_with_retries( struct core_link *link, const struct dc_link_settings *link_setting, bool skip_video_pattern, - unsigned int retires); + int attempts); bool is_mst_supported(struct core_link *link); -- 2.7.4