linux/drivers/gpu/drm/amd/display/modules/hdcp/hdcp_psp.h

/*
 * Copyright 2019 Advanced Micro Devices, Inc.
 *
 * Permission is hereby granted, free of charge, to any person obtaining a
 * copy of this software and associated documentation files (the "Software"),
 * to deal in the Software without restriction, including without limitation
 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
 * and/or sell copies of the Software, and to permit persons to whom the
 * Software is furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in
 * all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
 * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
 * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
 * OTHER DEALINGS IN THE SOFTWARE.
 *
 * Authors: AMD
 *
 */

#ifndef MODULES_HDCP_HDCP_PSP_H_
#define MODULES_HDCP_HDCP_PSP_H_

/*
 * NOTE: These parameters are a one-to-one copy of the
 * parameters required by PSP
 */
enum bgd_security_hdcp_encryption_level {};

enum bgd_security_hdcp2_content_type {};
enum ta_dtm_command {};

/* DTM related enumerations */
/**********************************************************/

enum ta_dtm_status {};

/* input/output structures for DTM commands */
/**********************************************************/
/**
 * Input structures
 */
enum ta_dtm_hdcp_version_max_supported {};

struct ta_dtm_topology_update_input_v2 {};

/* For security reason/HW may change value, these encoder type enum values are not HW register values */
/* Security code will check real HW register values and these SW enum values */
enum ta_dtm_encoder_type {};

/* @enum ta_dtm_dio_output_type
 * This enum defines software value for dio_output_type
 */
ta_dtm_dio_output_type;

struct ta_dtm_topology_update_input_v3 {};

struct ta_dtm_topology_assr_enable {};

/**
 * Output structures
 */

/* No output structures yet */

ta_dtm_cmd_input;

ta_dtm_cmd_output;

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 {};

enum ta_hdcp_command {};

enum ta_hdcp2_msg_id {};

enum ta_hdcp2_hdcp2_msg_id_max_size {};

/* HDCP related enumerations */
/**********************************************************/
#define TA_HDCP__INVALID_SESSION
#define TA_HDCP__HDCP1_AN_SIZE
#define TA_HDCP__HDCP1_KSV_SIZE
#define TA_HDCP__HDCP1_KSV_LIST_MAX_ENTRIES
#define TA_HDCP__HDCP1_V_PRIME_SIZE
#define TA_HDCP__HDCP2_TX_BUF_MAX_SIZE

// 64 bits boundaries
#define TA_HDCP__HDCP2_RX_BUF_MAX_SIZE

enum ta_hdcp_status {};

enum ta_hdcp_authentication_status {};

enum ta_hdcp2_msg_authentication_status {};

enum ta_hdcp_content_type {};

enum ta_hdcp_content_type_negotiation_type {};

enum ta_hdcp2_version {};

/* input/output structures for HDCP commands */
/**********************************************************/
struct ta_hdcp_cmd_hdcp1_create_session_input {};

struct ta_hdcp_cmd_hdcp1_create_session_output {};

struct ta_hdcp_cmd_hdcp1_destroy_session_input {};

struct ta_hdcp_cmd_hdcp1_first_part_authentication_input {};

struct ta_hdcp_cmd_hdcp1_first_part_authentication_output {};

struct ta_hdcp_cmd_hdcp1_second_part_authentication_input {};

struct ta_hdcp_cmd_hdcp1_second_part_authentication_output {};

struct ta_hdcp_cmd_hdcp1_enable_encryption_input {};

struct ta_hdcp_cmd_hdcp1_enable_dp_stream_encryption_input {};

struct ta_hdcp_cmd_hdcp1_get_encryption_status_input {};

struct ta_hdcp_cmd_hdcp1_get_encryption_status_output {};

struct ta_hdcp_cmd_hdcp2_create_session_input_v2 {};

struct ta_hdcp_cmd_hdcp2_create_session_output_v2 {};

struct ta_hdcp_cmd_hdcp2_destroy_session_input {};

struct ta_hdcp_cmd_hdcp2_authentication_message_v2 {};

struct ta_hdcp_cmd_hdcp2_process_authentication_message_input_v2 {};

struct ta_hdcp_cmd_hdcp2_process_authentication_message_output_v2 {};

struct ta_hdcp_cmd_hdcp2_prepare_authentication_message_input_v2 {};

struct ta_hdcp_cmd_hdcp2_prepare_authentication_message_output_v2 {};

struct ta_hdcp_cmd_hdcp2_process_prepare_authentication_message_input_v2 {};

struct ta_hdcp_cmd_hdcp2_process_prepare_authentication_message_output_v2 {};

struct ta_hdcp_cmd_hdcp2_set_encryption_input {};

struct ta_hdcp_cmd_hdcp2_get_encryption_status_input {};

struct ta_hdcp_cmd_hdcp2_get_encryption_status_output {};

struct ta_hdcp_cmd_hdcp2_enable_dp_stream_encryption_input {};

struct ta_hdcp_cmd_set_srm_input {};

struct ta_hdcp_cmd_set_srm_output {};

struct ta_hdcp_cmd_get_srm_output {};

/**********************************************************/
/* Common input structure for HDCP callbacks */
ta_hdcp_cmd_input;

/* Common output structure for HDCP callbacks */
ta_hdcp_cmd_output;
/**********************************************************/

struct ta_hdcp_shared_memory {};

enum psp_status {};

#endif /* MODULES_HDCP_HDCP_PSP_H_ */