mirror of
https://github.com/torvalds/linux.git
synced 2026-06-02 19:43:40 +02:00
drm/amd/display: Add retires when read DPCD
[why & how] Sometimes read DPCD return fail while result not retrieved yet. Add retries mechanism in Replay handle hpd irq to get real result. Reviewed-by: Jerry Zuo <jerry.zuo@amd.com> Acked-by: Zaeem Mohamed <zaeem.mohamed@amd.com> Signed-off-by: Joan Lee <joan.lee@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
cc4d6ea0f2
commit
2770b91588
|
|
@ -189,16 +189,30 @@ static void handle_hpd_irq_replay_sink(struct dc_link *link)
|
|||
union dpcd_replay_configuration replay_configuration = {0};
|
||||
/*AMD Replay version reuse DP_PSR_ERROR_STATUS for REPLAY_ERROR status.*/
|
||||
union psr_error_status replay_error_status = {0};
|
||||
bool ret = false;
|
||||
int retries = 0;
|
||||
|
||||
if (!link->replay_settings.replay_feature_enabled)
|
||||
return;
|
||||
|
||||
dm_helpers_dp_read_dpcd(
|
||||
link->ctx,
|
||||
link,
|
||||
DP_SINK_PR_REPLAY_STATUS,
|
||||
&replay_configuration.raw,
|
||||
sizeof(replay_configuration.raw));
|
||||
while (retries < 10) {
|
||||
ret = dm_helpers_dp_read_dpcd(
|
||||
link->ctx,
|
||||
link,
|
||||
DP_SINK_PR_REPLAY_STATUS,
|
||||
&replay_configuration.raw,
|
||||
sizeof(replay_configuration.raw));
|
||||
|
||||
if (ret)
|
||||
break;
|
||||
|
||||
retries++;
|
||||
}
|
||||
|
||||
if (!ret)
|
||||
DC_LOG_WARNING("[%s][%d] DPCD read addr.0x%x failed with %d retries\n",
|
||||
__func__, __LINE__,
|
||||
DP_SINK_PR_REPLAY_STATUS, retries);
|
||||
|
||||
dm_helpers_dp_read_dpcd(
|
||||
link->ctx,
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user