From: Xiaodong Yan <[email protected]>

[Why]
Some combined docks will always trigger CP_IRQ but there's nothing the driver
needs to take care of, but the CP_IRQ breaks the original hdcp state and
triggers the driver to restart the authentication.

[How]
Add the event type check before restart the authentication or resend the stream
management

Signed-off-by: Xiaodong Yan <[email protected]>
Reviewed-by: Wenjing Liu <[email protected]>
---
 .../gpu/drm/amd/display/modules/hdcp/hdcp2_transition.c  | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/amd/display/modules/hdcp/hdcp2_transition.c 
b/drivers/gpu/drm/amd/display/modules/hdcp/hdcp2_transition.c
index da190739a969..8cae3e3aacd5 100644
--- a/drivers/gpu/drm/amd/display/modules/hdcp/hdcp2_transition.c
+++ b/drivers/gpu/drm/amd/display/modules/hdcp/hdcp2_transition.c
@@ -630,7 +630,10 @@ enum mod_hdcp_status mod_hdcp_hdcp2_dp_transition(struct 
mod_hdcp *hdcp,
                        break;
                } else if (input->prepare_stream_manage != PASS ||
                                input->stream_manage_write != PASS) {
-                       fail_and_restart_in_ms(0, &status, output);
+                       if (event_ctx->event == MOD_HDCP_EVENT_CALLBACK)
+                               fail_and_restart_in_ms(0, &status, output);
+                       else
+                               increment_stay_counter(hdcp);
                        break;
                }
                callback_in_ms(100, output);
@@ -655,10 +658,12 @@ enum mod_hdcp_status mod_hdcp_hdcp2_dp_transition(struct 
mod_hdcp *hdcp,
                         */
                        if (hdcp->auth.count.stream_management_retry_count > 
10) {
                                fail_and_restart_in_ms(0, &status, output);
-                       } else {
+                       } else if (event_ctx->event == MOD_HDCP_EVENT_CALLBACK) 
{
                                
hdcp->auth.count.stream_management_retry_count++;
                                callback_in_ms(0, output);
                                set_state_id(hdcp, output, 
D2_A9_SEND_STREAM_MANAGEMENT);
+                       } else {
+                               increment_stay_counter(hdcp);
                        }
                        break;
                }
-- 
2.17.1

_______________________________________________
amd-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

Reply via email to