drm/amd/display: update psp interface header
authorBhawanpreet Lakha <Bhawanpreet.Lakha@amd.com>
Thu, 12 Dec 2019 21:00:01 +0000 (16:00 -0500)
committerAlex Deucher <alexander.deucher@amd.com>
Wed, 5 Feb 2020 04:30:40 +0000 (23:30 -0500)
[Why]
We need to support SRM(System Renewability Message)
As per hdcp spec (5.Renewability) SRM needs to be storage in a non-volatile
memory.

PSP owns the checking of SRM but doesn't have the ability to store it in a
non-volatile memory. So we need the kernel driver to facilitate it using the
interface provided by PSP

[How]
Add the interface to the header file, so the driver can use them

v2: update commit description

Signed-off-by: Bhawanpreet Lakha <Bhawanpreet.Lakha@amd.com>
Reviewed-by: Rodrigo Siqueira <Rodrigo.Siqueira@amd.com>
Reviewed-by: Harry Wentland <harry.wentland@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/display/modules/hdcp/hdcp_psp.h

index 82a5e99..d5cb3f4 100644 (file)
@@ -117,6 +117,8 @@ struct ta_dtm_shared_memory {
 int psp_cmd_submit_buf(struct psp_context *psp, struct amdgpu_firmware_info *ucode, struct psp_gfx_cmd_resp *cmd,
                uint64_t fence_mc_addr);
 
+enum { PSP_HDCP_SRM_FIRST_GEN_MAX_SIZE = 5120 };
+
 enum ta_hdcp_command {
        TA_HDCP_COMMAND__INITIALIZE,
        TA_HDCP_COMMAND__HDCP1_CREATE_SESSION,
@@ -134,7 +136,10 @@ enum ta_hdcp_command {
        TA_HDCP_COMMAND__UNUSED_3,
        TA_HDCP_COMMAND__HDCP2_CREATE_SESSION_V2,
        TA_HDCP_COMMAND__HDCP2_PREPARE_PROCESS_AUTHENTICATION_MSG_V2,
-       TA_HDCP_COMMAND__HDCP2_ENABLE_DP_STREAM_ENCRYPTION
+       TA_HDCP_COMMAND__HDCP2_ENABLE_DP_STREAM_ENCRYPTION,
+       TA_HDCP_COMMAND__HDCP_DESTROY_ALL_SESSIONS,
+       TA_HDCP_COMMAND__HDCP_SET_SRM,
+       TA_HDCP_COMMAND__HDCP_GET_SRM
 };
 
 enum ta_hdcp2_msg_id {
@@ -415,6 +420,22 @@ struct ta_hdcp_cmd_hdcp2_enable_dp_stream_encryption_input {
        uint32_t display_handle;
 };
 
+struct ta_hdcp_cmd_set_srm_input {
+       uint32_t srm_buf_size;
+       uint8_t srm_buf[PSP_HDCP_SRM_FIRST_GEN_MAX_SIZE];
+};
+
+struct ta_hdcp_cmd_set_srm_output {
+       uint8_t valid_signature;
+       uint32_t srm_version;
+};
+
+struct ta_hdcp_cmd_get_srm_output {
+       uint32_t srm_version;
+       uint32_t srm_buf_size;
+       uint8_t srm_buf[PSP_HDCP_SRM_FIRST_GEN_MAX_SIZE];
+};
+
 /**********************************************************/
 /* Common input structure for HDCP callbacks */
 union ta_hdcp_cmd_input {
@@ -432,6 +453,7 @@ union ta_hdcp_cmd_input {
        struct ta_hdcp_cmd_hdcp2_process_prepare_authentication_message_input_v2
                hdcp2_prepare_process_authentication_message_v2;
        struct ta_hdcp_cmd_hdcp2_enable_dp_stream_encryption_input hdcp2_enable_dp_stream_encryption;
+       struct ta_hdcp_cmd_set_srm_input hdcp_set_srm;
 };
 
 /* Common output structure for HDCP callbacks */
@@ -444,6 +466,8 @@ union ta_hdcp_cmd_output {
        struct ta_hdcp_cmd_hdcp2_create_session_output_v2 hdcp2_create_session_v2;
        struct ta_hdcp_cmd_hdcp2_process_prepare_authentication_message_output_v2
                hdcp2_prepare_process_authentication_message_v2;
+       struct ta_hdcp_cmd_set_srm_output hdcp_set_srm;
+       struct ta_hdcp_cmd_get_srm_output hdcp_get_srm;
 };
 /**********************************************************/