drm/amd/display: Don't try hdcp1.4 when content_type is set to type1
authorBhawanpreet Lakha <Bhawanpreet.Lakha@amd.com>
Mon, 30 Mar 2020 17:29:46 +0000 (13:29 -0400)
committerAlex Deucher <alexander.deucher@amd.com>
Tue, 31 Mar 2020 16:44:29 +0000 (12:44 -0400)
[Why]
When content type property is set to 1. We should enable hdcp2.2 and if we cant
then stop. Currently the way it works in DC is that if we fail hdcp2, we will
try hdcp1 after.

[How]
Use link config to force disable hdcp1.4 when type1 is set.

Signed-off-by: Bhawanpreet Lakha <Bhawanpreet.Lakha@amd.com>
Reviewed-by: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_hdcp.c

index 5b70ed3cdb884ff13a42d69501204683ce80f349..41fd1f5acff47d6abc8b6eb3880e00f116990050 100644 (file)
@@ -192,10 +192,13 @@ void hdcp_update_display(struct hdcp_workqueue *hdcp_work,
                                            &hdcp_work->srm_version);
 
                        display->adjust.disable = 0;
-                       if (content_type == DRM_MODE_HDCP_CONTENT_TYPE0)
+                       if (content_type == DRM_MODE_HDCP_CONTENT_TYPE0) {
+                               hdcp_w->link.adjust.hdcp1.disable = 0;
                                hdcp_w->link.adjust.hdcp2.force_type = MOD_HDCP_FORCE_TYPE_0;
-                       else if (content_type == DRM_MODE_HDCP_CONTENT_TYPE1)
+                       } else if (content_type == DRM_MODE_HDCP_CONTENT_TYPE1) {
+                               hdcp_w->link.adjust.hdcp1.disable = 1;
                                hdcp_w->link.adjust.hdcp2.force_type = MOD_HDCP_FORCE_TYPE_1;
+                       }
 
                        schedule_delayed_work(&hdcp_w->property_validate_dwork,
                                              msecs_to_jiffies(DRM_HDCP_CHECK_PERIOD_MS));
@@ -415,6 +418,7 @@ static void update_config(void *handle, struct cp_psp_stream_config *config)
        link->dp.mst_supported = config->mst_supported;
        display->adjust.disable = 1;
        link->adjust.auth_delay = 2;
+       link->adjust.hdcp1.disable = 0;
 
        hdcp_update_display(hdcp_work, link_index, aconnector, DRM_MODE_HDCP_CONTENT_TYPE0, false);
 }