93 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			93 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /* SPDX-License-Identifier: GPL-2.0 */
 | |
| /*
 | |
|  * Cadence MHDP8546 DP bridge driver.
 | |
|  *
 | |
|  * Copyright (C) 2020 Cadence Design Systems, Inc.
 | |
|  *
 | |
|  */
 | |
| 
 | |
| #ifndef CDNS_MHDP8546_HDCP_H
 | |
| #define CDNS_MHDP8546_HDCP_H
 | |
| 
 | |
| #include "cdns-mhdp8546-core.h"
 | |
| 
 | |
| #define HDCP_MAX_RECEIVERS 32
 | |
| #define HDCP_RECEIVER_ID_SIZE_BYTES 5
 | |
| #define HDCP_STATUS_SIZE         0x5
 | |
| #define HDCP_PORT_STS_AUTH       0x1
 | |
| #define HDCP_PORT_STS_LAST_ERR_SHIFT 0x5
 | |
| #define HDCP_PORT_STS_LAST_ERR_MASK  (0x0F << 5)
 | |
| #define GET_HDCP_PORT_STS_LAST_ERR(__sts__) \
 | |
| 	(((__sts__) & HDCP_PORT_STS_LAST_ERR_MASK) >> \
 | |
| 	HDCP_PORT_STS_LAST_ERR_SHIFT)
 | |
| 
 | |
| #define HDCP_CONFIG_1_4     BIT(0) /* use HDCP 1.4 only */
 | |
| #define HDCP_CONFIG_2_2     BIT(1) /* use HDCP 2.2 only */
 | |
| /* use All HDCP versions */
 | |
| #define HDCP_CONFIG_ALL     (BIT(0) | BIT(1))
 | |
| #define HDCP_CONFIG_NONE    0
 | |
| 
 | |
| enum {
 | |
| 	HDCP_GENERAL_SET_LC_128,
 | |
| 	HDCP_SET_SEED,
 | |
| };
 | |
| 
 | |
| enum {
 | |
| 	HDCP_TRAN_CONFIGURATION,
 | |
| 	HDCP2X_TX_SET_PUBLIC_KEY_PARAMS,
 | |
| 	HDCP2X_TX_SET_DEBUG_RANDOM_NUMBERS,
 | |
| 	HDCP2X_TX_RESPOND_KM,
 | |
| 	HDCP1_TX_SEND_KEYS,
 | |
| 	HDCP1_TX_SEND_RANDOM_AN,
 | |
| 	HDCP_TRAN_STATUS_CHANGE,
 | |
| 	HDCP2X_TX_IS_KM_STORED,
 | |
| 	HDCP2X_TX_STORE_KM,
 | |
| 	HDCP_TRAN_IS_REC_ID_VALID,
 | |
| 	HDCP_TRAN_RESPOND_RECEIVER_ID_VALID,
 | |
| 	HDCP_TRAN_TEST_KEYS,
 | |
| 	HDCP2X_TX_SET_KM_KEY_PARAMS,
 | |
| 	HDCP_NUM_OF_SUPPORTED_MESSAGES
 | |
| };
 | |
| 
 | |
| enum {
 | |
| 	HDCP_CONTENT_TYPE_0,
 | |
| 	HDCP_CONTENT_TYPE_1,
 | |
| };
 | |
| 
 | |
| #define DRM_HDCP_CHECK_PERIOD_MS (128 * 16)
 | |
| 
 | |
| #define HDCP_PAIRING_R_ID 5
 | |
| #define HDCP_PAIRING_M_LEN 16
 | |
| #define HDCP_KM_LEN 16
 | |
| #define HDCP_PAIRING_M_EKH 16
 | |
| 
 | |
| struct cdns_hdcp_pairing_data {
 | |
| 	u8 receiver_id[HDCP_PAIRING_R_ID];
 | |
| 	u8 m[HDCP_PAIRING_M_LEN];
 | |
| 	u8 km[HDCP_KM_LEN];
 | |
| 	u8 ekh[HDCP_PAIRING_M_EKH];
 | |
| };
 | |
| 
 | |
| enum {
 | |
| 	HDCP_TX_2,
 | |
| 	HDCP_TX_1,
 | |
| 	HDCP_TX_BOTH,
 | |
| };
 | |
| 
 | |
| #define DLP_MODULUS_N 384
 | |
| #define DLP_E 3
 | |
| 
 | |
| struct cdns_hdcp_tx_public_key_param {
 | |
| 	u8 N[DLP_MODULUS_N];
 | |
| 	u8 E[DLP_E];
 | |
| };
 | |
| 
 | |
| int cdns_mhdp_hdcp_set_public_key_param(struct cdns_mhdp_device *mhdp,
 | |
| 					struct cdns_hdcp_tx_public_key_param *val);
 | |
| int cdns_mhdp_hdcp_set_lc(struct cdns_mhdp_device *mhdp, u8 *val);
 | |
| int cdns_mhdp_hdcp_enable(struct cdns_mhdp_device *mhdp, u8 content_type);
 | |
| int cdns_mhdp_hdcp_disable(struct cdns_mhdp_device *mhdp);
 | |
| void cdns_mhdp_hdcp_init(struct cdns_mhdp_device *mhdp);
 | |
| 
 | |
| #endif
 |