mirror of
https://github.com/torvalds/linux.git
synced 2026-05-27 16:44:58 +02:00
drm/amd/display: Increase AUX Intra-Hop Done Max Wait Duration
[WHY] In the worst case, AUX intra-hop done can take hundreds of milliseconds as each retimer in a link might have to wait a full AUX_RD_INTERVAL to send LT abort downstream. [HOW] Wait 300ms for each retimer in a link to allow time to propagate a LT abort without infinitely waiting on intra-hop done. For no-retimer case, keep the max duration at 10ms. Reviewed-by: Wenjing Liu <wenjing.liu@amd.com> Signed-off-by: Michael Strauss <michael.strauss@amd.com> Signed-off-by: Ivan Lipski <ivan.lipski@amd.com> Tested-by: Daniel Wheeler <daniel.wheeler@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
parent
9a885f1193
commit
e3419e1e44
|
|
@ -1018,7 +1018,12 @@ static enum link_training_result dpcd_exit_training_mode(struct dc_link *link, e
|
|||
{
|
||||
enum dc_status status;
|
||||
uint8_t sink_status = 0;
|
||||
uint8_t i;
|
||||
uint32_t i;
|
||||
uint8_t lttpr_count = dp_parse_lttpr_repeater_count(link->dpcd_caps.lttpr_caps.phy_repeater_cnt);
|
||||
uint32_t intra_hop_disable_time_ms = (lttpr_count > 0 ? lttpr_count * 300 : 10);
|
||||
|
||||
// Each hop could theoretically take over 256ms (max 128b/132b AUX RD INTERVAL)
|
||||
// To be safe, allow 300ms per LTTPR and 10ms for no LTTPR case
|
||||
|
||||
/* clear training pattern set */
|
||||
status = dpcd_set_training_pattern(link, DP_TRAINING_PATTERN_VIDEOIDLE);
|
||||
|
|
@ -1028,7 +1033,7 @@ static enum link_training_result dpcd_exit_training_mode(struct dc_link *link, e
|
|||
|
||||
if (encoding == DP_128b_132b_ENCODING) {
|
||||
/* poll for intra-hop disable */
|
||||
for (i = 0; i < 10; i++) {
|
||||
for (i = 0; i < intra_hop_disable_time_ms; i++) {
|
||||
if ((core_link_read_dpcd(link, DP_SINK_STATUS, &sink_status, 1) == DC_OK) &&
|
||||
(sink_status & DP_INTRA_HOP_AUX_REPLY_INDICATION) == 0)
|
||||
break;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user