Skip to content

Commit 9fd2da7

Browse files
Oleh Kuzhylnyialexdeucher
authored andcommitted
drm/amd/display: Add HDCP policy control
[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.kazlauskas@amd.com> Reviewed-by: Aric Cyr <aric.cyr@amd.com> Signed-off-by: Oleh Kuzhylnyi <okuzhyln@amd.com> Signed-off-by: Wayne Lin <wayne.lin@amd.com> Tested-by: Dan Wheeler <daniel.wheeler@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
1 parent d6fa802 commit 9fd2da7

3 files changed

Lines changed: 6 additions & 2 deletions

File tree

drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_hdcp.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -223,6 +223,7 @@ void hdcp_update_display(struct hdcp_workqueue *hdcp_work,
223223
display_adjust.disable = MOD_HDCP_DISPLAY_NOT_DISABLE;
224224

225225
link_adjust.auth_delay = 2;
226+
link_adjust.retry_limit = MAX_NUM_OF_ATTEMPTS;
226227

227228
if (content_type == DRM_MODE_HDCP_CONTENT_TYPE0) {
228229
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)
572573
link->dp.usb4_enabled = config->usb4_enabled;
573574
display->adjust.disable = MOD_HDCP_DISPLAY_DISABLE_AUTHENTICATION;
574575
link->adjust.auth_delay = 2;
576+
link->adjust.retry_limit = MAX_NUM_OF_ATTEMPTS;
575577
link->adjust.hdcp1.disable = 0;
576578
hdcp_w->encryption_status[display->index] = MOD_HDCP_ENCRYPTION_STATUS_HDCP_OFF;
577579

drivers/gpu/drm/amd/display/modules/hdcp/hdcp.c

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ static void push_error_status(struct mod_hdcp *hdcp,
2929
enum mod_hdcp_status status)
3030
{
3131
struct mod_hdcp_trace *trace = &hdcp->connection.trace;
32+
const uint8_t retry_limit = hdcp->connection.link.adjust.retry_limit;
3233

3334
if (trace->error_count < MAX_NUM_OF_ERROR_TRACE) {
3435
trace->errors[trace->error_count].status = status;
@@ -39,11 +40,11 @@ static void push_error_status(struct mod_hdcp *hdcp,
3940

4041
if (is_hdcp1(hdcp)) {
4142
hdcp->connection.hdcp1_retry_count++;
42-
if (hdcp->connection.hdcp1_retry_count == MAX_NUM_OF_ATTEMPTS)
43+
if (hdcp->connection.hdcp1_retry_count == retry_limit)
4344
hdcp->connection.link.adjust.hdcp1.disable = 1;
4445
} else if (is_hdcp2(hdcp)) {
4546
hdcp->connection.hdcp2_retry_count++;
46-
if (hdcp->connection.hdcp2_retry_count == MAX_NUM_OF_ATTEMPTS)
47+
if (hdcp->connection.hdcp2_retry_count == retry_limit)
4748
hdcp->connection.link.adjust.hdcp2.disable = 1;
4849
}
4950
}

drivers/gpu/drm/amd/display/modules/inc/mod_hdcp.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -220,6 +220,7 @@ struct mod_hdcp_link_adjustment_hdcp2 {
220220

221221
struct mod_hdcp_link_adjustment {
222222
uint8_t auth_delay;
223+
uint8_t retry_limit;
223224
struct mod_hdcp_link_adjustment_hdcp1 hdcp1;
224225
struct mod_hdcp_link_adjustment_hdcp2 hdcp2;
225226
};

0 commit comments

Comments
 (0)