drm/amd/display: Add delay after h' watchdog timeout event
[WHY] Some monitors trigger HDCP2.x timeout after reinitializing (e.g. toggling HDR) by taking longer than expected to return h' (h prime) Previously the 200ms watchdog timer retry count would hit MAX_NUM_OF_ATTEMPTS (4), causing fallback to HDCP1.x [HOW] Adding a 1s delay after an h' watchdog timeout provides enough time for affected monitors to return h' in time without hitting MAX_NUM_OF_ATTEMPTS Signed-off-by: Michael Strauss <michael.strauss@amd.com> Reviewed-by: Wenjing Liu <Wenjing.Liu@amd.com> Acked-by: Harry Wentland <harry.wentland@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:

committed by
Alex Deucher

parent
454425e8f9
commit
daa9692db9
@@ -114,7 +114,7 @@ enum mod_hdcp_status mod_hdcp_hdcp2_transition(struct mod_hdcp *hdcp,
|
||||
if (event_ctx->event ==
|
||||
MOD_HDCP_EVENT_WATCHDOG_TIMEOUT) {
|
||||
/* 1A-11-3: consider h' timeout a failure */
|
||||
fail_and_restart_in_ms(0, &status, output);
|
||||
fail_and_restart_in_ms(1000, &status, output);
|
||||
} else {
|
||||
/* continue h' polling */
|
||||
callback_in_ms(100, output);
|
||||
@@ -166,7 +166,7 @@ enum mod_hdcp_status mod_hdcp_hdcp2_transition(struct mod_hdcp *hdcp,
|
||||
if (event_ctx->event ==
|
||||
MOD_HDCP_EVENT_WATCHDOG_TIMEOUT) {
|
||||
/* 1A-11-2: consider h' timeout a failure */
|
||||
fail_and_restart_in_ms(0, &status, output);
|
||||
fail_and_restart_in_ms(1000, &status, output);
|
||||
} else {
|
||||
/* continue h' polling */
|
||||
callback_in_ms(20, output);
|
||||
@@ -439,7 +439,7 @@ enum mod_hdcp_status mod_hdcp_hdcp2_dp_transition(struct mod_hdcp *hdcp,
|
||||
if (event_ctx->event ==
|
||||
MOD_HDCP_EVENT_WATCHDOG_TIMEOUT)
|
||||
/* 1A-10-3: consider h' timeout a failure */
|
||||
fail_and_restart_in_ms(0, &status, output);
|
||||
fail_and_restart_in_ms(1000, &status, output);
|
||||
else
|
||||
increment_stay_counter(hdcp);
|
||||
break;
|
||||
@@ -484,7 +484,7 @@ enum mod_hdcp_status mod_hdcp_hdcp2_dp_transition(struct mod_hdcp *hdcp,
|
||||
if (event_ctx->event ==
|
||||
MOD_HDCP_EVENT_WATCHDOG_TIMEOUT)
|
||||
/* 1A-10-2: consider h' timeout a failure */
|
||||
fail_and_restart_in_ms(0, &status, output);
|
||||
fail_and_restart_in_ms(1000, &status, output);
|
||||
else
|
||||
increment_stay_counter(hdcp);
|
||||
break;
|
||||
|
Reference in New Issue
Block a user