mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-02 08:39:08 -04:00
drm/amd/display: refine to decide the verified link setting
[WHY] We return false by default when link training fail at link loss. It will cause we get a fail verified link caps directly. [HOW] Record the highest verified link caps. Use the recorded value as the verified link caps if it is not successful in the last attempt to avoid to use the lowest link setting. Reviewed-by: Wenjing Liu <wenjing.liu@amd.com> Acked-by: Alan Liu <haoping.liu@amd.com> Signed-off-by: Zhikai Zhai <zhikai.zhai@amd.com> Tested-by: Daniel Wheeler <daniel.wheeler@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
committed by
Alex Deucher
parent
3a87e25aaa
commit
c99fcb02bc
@@ -2165,7 +2165,9 @@ static bool dp_verify_link_cap(
|
||||
link,
|
||||
&irq_data))
|
||||
(*fail_count)++;
|
||||
|
||||
} else if (status == LINK_TRAINING_LINK_LOSS) {
|
||||
success = true;
|
||||
(*fail_count)++;
|
||||
} else {
|
||||
(*fail_count)++;
|
||||
}
|
||||
@@ -2188,6 +2190,7 @@ bool dp_verify_link_cap_with_retries(
|
||||
int i = 0;
|
||||
bool success = false;
|
||||
int fail_count = 0;
|
||||
struct dc_link_settings last_verified_link_cap = fail_safe_link_settings;
|
||||
|
||||
dp_trace_detect_lt_init(link);
|
||||
|
||||
@@ -2204,10 +2207,14 @@ bool dp_verify_link_cap_with_retries(
|
||||
if (!link_detect_connection_type(link, &type) || type == dc_connection_none) {
|
||||
link->verified_link_cap = fail_safe_link_settings;
|
||||
break;
|
||||
} else if (dp_verify_link_cap(link, known_limit_link_setting,
|
||||
&fail_count) && fail_count == 0) {
|
||||
success = true;
|
||||
break;
|
||||
} else if (dp_verify_link_cap(link, known_limit_link_setting, &fail_count)) {
|
||||
last_verified_link_cap = link->verified_link_cap;
|
||||
if (fail_count == 0) {
|
||||
success = true;
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
link->verified_link_cap = last_verified_link_cap;
|
||||
}
|
||||
fsleep(10 * 1000);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user