From: Oleh Kuzhylnyi <okuzh...@amd.com>

[Why]
DM should be able to control HDCP retry limit via configurable
parameter.

[How]
Expose a retry_limit parameter for controlling the maximum number of
retries and lift the hardcode out to DM.

Reviewed-by: Nicholas Kazlauskas <nicholas.kazlaus...@amd.com>
Reviewed-by: Aric Cyr <aric....@amd.com>
Signed-off-by: Oleh Kuzhylnyi <okuzh...@amd.com>
Signed-off-by: Wayne Lin <wayne....@amd.com>
---
 drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_hdcp.c | 2 ++
 drivers/gpu/drm/amd/display/modules/hdcp/hdcp.c        | 5 +++--
 drivers/gpu/drm/amd/display/modules/inc/mod_hdcp.h     | 1 +
 3 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_hdcp.c 
b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_hdcp.c
index d1c853732c2e..5aae5c25e785 100644
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_hdcp.c
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_hdcp.c
@@ -223,6 +223,7 @@ void hdcp_update_display(struct hdcp_workqueue *hdcp_work,
                display_adjust.disable = MOD_HDCP_DISPLAY_NOT_DISABLE;
 
                link_adjust.auth_delay = 2;
+               link_adjust.retry_limit = MAX_NUM_OF_ATTEMPTS;
 
                if (content_type == DRM_MODE_HDCP_CONTENT_TYPE0) {
                        link_adjust.hdcp2.force_type = MOD_HDCP_FORCE_TYPE_0;
@@ -572,6 +573,7 @@ static void update_config(void *handle, struct 
cp_psp_stream_config *config)
        link->dp.usb4_enabled = config->usb4_enabled;
        display->adjust.disable = MOD_HDCP_DISPLAY_DISABLE_AUTHENTICATION;
        link->adjust.auth_delay = 2;
+       link->adjust.retry_limit = MAX_NUM_OF_ATTEMPTS;
        link->adjust.hdcp1.disable = 0;
        hdcp_w->encryption_status[display->index] = 
MOD_HDCP_ENCRYPTION_STATUS_HDCP_OFF;
 
diff --git a/drivers/gpu/drm/amd/display/modules/hdcp/hdcp.c 
b/drivers/gpu/drm/amd/display/modules/hdcp/hdcp.c
index 5e01c6e24cbc..c760216a6240 100644
--- a/drivers/gpu/drm/amd/display/modules/hdcp/hdcp.c
+++ b/drivers/gpu/drm/amd/display/modules/hdcp/hdcp.c
@@ -29,6 +29,7 @@ static void push_error_status(struct mod_hdcp *hdcp,
                enum mod_hdcp_status status)
 {
        struct mod_hdcp_trace *trace = &hdcp->connection.trace;
+       const uint8_t retry_limit = hdcp->connection.link.adjust.retry_limit;
 
        if (trace->error_count < MAX_NUM_OF_ERROR_TRACE) {
                trace->errors[trace->error_count].status = status;
@@ -39,11 +40,11 @@ static void push_error_status(struct mod_hdcp *hdcp,
 
        if (is_hdcp1(hdcp)) {
                hdcp->connection.hdcp1_retry_count++;
-               if (hdcp->connection.hdcp1_retry_count == MAX_NUM_OF_ATTEMPTS)
+               if (hdcp->connection.hdcp1_retry_count == retry_limit)
                        hdcp->connection.link.adjust.hdcp1.disable = 1;
        } else if (is_hdcp2(hdcp)) {
                hdcp->connection.hdcp2_retry_count++;
-               if (hdcp->connection.hdcp2_retry_count == MAX_NUM_OF_ATTEMPTS)
+               if (hdcp->connection.hdcp2_retry_count == retry_limit)
                        hdcp->connection.link.adjust.hdcp2.disable = 1;
        }
 }
diff --git a/drivers/gpu/drm/amd/display/modules/inc/mod_hdcp.h 
b/drivers/gpu/drm/amd/display/modules/inc/mod_hdcp.h
index c42468bb70ac..b51ddf2846df 100644
--- a/drivers/gpu/drm/amd/display/modules/inc/mod_hdcp.h
+++ b/drivers/gpu/drm/amd/display/modules/inc/mod_hdcp.h
@@ -220,6 +220,7 @@ struct mod_hdcp_link_adjustment_hdcp2 {
 
 struct mod_hdcp_link_adjustment {
        uint8_t auth_delay;
+       uint8_t retry_limit;
        struct mod_hdcp_link_adjustment_hdcp1 hdcp1;
        struct mod_hdcp_link_adjustment_hdcp2 hdcp2;
 };
-- 
2.43.0

Reply via email to