xref: /rk3399_ARM-atf/plat/rockchip/rk3399/drivers/dp/cdn_dp.h (revision 10301bf7eab9bffd04564ed4e935897eea43e2cb)
1*10301bf7SZiyuan Xu /*
2*10301bf7SZiyuan Xu  * Copyright (c) 2017, ARM Limited and Contributors. All rights reserved.
3*10301bf7SZiyuan Xu  *
4*10301bf7SZiyuan Xu  * SPDX-License-Identifier: BSD-3-Clause
5*10301bf7SZiyuan Xu  */
6*10301bf7SZiyuan Xu 
7*10301bf7SZiyuan Xu #ifndef __SOC_ROCKCHIP_RK3399_DP_H__
8*10301bf7SZiyuan Xu #define __SOC_ROCKCHIP_RK3399_DP_H__
9*10301bf7SZiyuan Xu #include <plat_private.h>
10*10301bf7SZiyuan Xu 
11*10301bf7SZiyuan Xu enum {
12*10301bf7SZiyuan Xu 	CDN_DP_HDCP_1X_KSV_LEN = 5,
13*10301bf7SZiyuan Xu 	CDN_DP_HDCP_KSV_LEN = 8,
14*10301bf7SZiyuan Xu 	CDN_DP_HDCP_RESERVED_LEN = 10,
15*10301bf7SZiyuan Xu 	CDN_DP_HDCP_UID_LEN = 16,
16*10301bf7SZiyuan Xu 	CDN_DP_HDCP_SHA_LEN = 20,
17*10301bf7SZiyuan Xu 	CDN_DP_HDCP_DPK_LEN = 280,
18*10301bf7SZiyuan Xu 	CDN_DP_HDCP_1X_KEYS_LEN	= 285,
19*10301bf7SZiyuan Xu 	CDN_DP_HDCP_KEY_LEN = 326,
20*10301bf7SZiyuan Xu };
21*10301bf7SZiyuan Xu 
22*10301bf7SZiyuan Xu struct cdn_dp_hdcp_key_1x {
23*10301bf7SZiyuan Xu 	uint8_t ksv[CDN_DP_HDCP_KSV_LEN];
24*10301bf7SZiyuan Xu 	uint8_t device_key[CDN_DP_HDCP_DPK_LEN];
25*10301bf7SZiyuan Xu 	uint8_t sha1[CDN_DP_HDCP_SHA_LEN];
26*10301bf7SZiyuan Xu 	uint8_t uid[CDN_DP_HDCP_UID_LEN];
27*10301bf7SZiyuan Xu 	uint16_t seed;
28*10301bf7SZiyuan Xu 	uint8_t reserved[CDN_DP_HDCP_RESERVED_LEN];
29*10301bf7SZiyuan Xu };
30*10301bf7SZiyuan Xu 
31*10301bf7SZiyuan Xu #define HDCP_KEY_DATA_START_TRANSFER	0
32*10301bf7SZiyuan Xu #define HDCP_KEY_DATA_START_DECRYPT	1
33*10301bf7SZiyuan Xu #define HDCP_KEY_1X_STORE_DATA_ALIGN_SIZE	(6 * 64) / 8
34*10301bf7SZiyuan Xu 
35*10301bf7SZiyuan Xu /* Checks the cdn_dp_hdcp_key_1x must be aligned on 6 x 64-bit word boundary */
36*10301bf7SZiyuan Xu CASSERT(sizeof(struct cdn_dp_hdcp_key_1x) % HDCP_KEY_1X_STORE_DATA_ALIGN_SIZE, \
37*10301bf7SZiyuan Xu 	assert_hdcp_key_1x_store_data_align_size_mismatch);
38*10301bf7SZiyuan Xu 
39*10301bf7SZiyuan Xu uint64_t dp_hdcp_ctrl(uint64_t type);
40*10301bf7SZiyuan Xu 
41*10301bf7SZiyuan Xu uint64_t dp_hdcp_store_key(uint64_t x1,
42*10301bf7SZiyuan Xu 			   uint64_t x2,
43*10301bf7SZiyuan Xu 			   uint64_t x3,
44*10301bf7SZiyuan Xu 			   uint64_t x4,
45*10301bf7SZiyuan Xu 			   uint64_t x5,
46*10301bf7SZiyuan Xu 			   uint64_t x6);
47*10301bf7SZiyuan Xu #endif
48