drm/amd/display: update hdcp display using correct CP type.
authorDingchen (David) Zhang <dingchen.zhang@amd.com>
Fri, 8 Jan 2021 22:32:47 +0000 (17:32 -0500)
committerAlex Deucher <alexander.deucher@amd.com>
Wed, 21 Apr 2021 01:37:28 +0000 (21:37 -0400)
[why]
currently we enforce to update hdcp display using TYPE0, but there
is case that connector CP type prop be TYPE1 instead of type0.

[how]
using the drm prop of CP type of the connector as input argument.

Signed-off-by: Dingchen (David) Zhang <dingchen.zhang@amd.com>
Reviewed-by: Bhawanpreet Lakha <Bhawanpreet.Lakha@amd.com>
Acked-by: Aurabindo Pillai <aurabindo.pillai@amd.com>
Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_hdcp.c

index 60f91853bd82e715b8df4df85b8164255176857b..616f5b1ea3a881abe162cddf45173dd2ec81d068 100644 (file)
@@ -434,6 +434,7 @@ static void update_config(void *handle, struct cp_psp_stream_config *config)
        int link_index = aconnector->dc_link->link_index;
        struct mod_hdcp_display *display = &hdcp_work[link_index].display;
        struct mod_hdcp_link *link = &hdcp_work[link_index].link;
+       struct drm_connector_state *conn_state;
 
        if (config->dpms_off) {
                hdcp_remove_display(hdcp_work, link_index, aconnector);
@@ -459,8 +460,13 @@ static void update_config(void *handle, struct cp_psp_stream_config *config)
        display->adjust.disable = MOD_HDCP_DISPLAY_DISABLE_AUTHENTICATION;
        link->adjust.auth_delay = 3;
        link->adjust.hdcp1.disable = 0;
+       conn_state = aconnector->base.state;
 
-       hdcp_update_display(hdcp_work, link_index, aconnector, DRM_MODE_HDCP_CONTENT_TYPE0, false);
+       pr_debug("[HDCP_DM] display %d, CP %d, type %d\n", aconnector->base.index,
+                       (!!aconnector->base.state) ? aconnector->base.state->content_protection : -1,
+                       (!!aconnector->base.state) ? aconnector->base.state->hdcp_content_type : -1);
+
+       hdcp_update_display(hdcp_work, link_index, aconnector, conn_state->hdcp_content_type, false);
 }