xref: /rk3399_ARM-atf/plat/rockchip/rk3399/drivers/dp/cdn_dp.h (revision 521d4fe6761ce62f06acf2b07248d8d5b5366ea3)
110301bf7SZiyuan Xu /*
210301bf7SZiyuan Xu  * Copyright (c) 2017, ARM Limited and Contributors. All rights reserved.
310301bf7SZiyuan Xu  *
410301bf7SZiyuan Xu  * SPDX-License-Identifier: BSD-3-Clause
510301bf7SZiyuan Xu  */
610301bf7SZiyuan Xu 
7c3cf06f1SAntonio Nino Diaz #ifndef CDN_DP_H
8c3cf06f1SAntonio Nino Diaz #define CDN_DP_H
9c3cf06f1SAntonio Nino Diaz 
1010301bf7SZiyuan Xu #include <plat_private.h>
1110301bf7SZiyuan Xu 
1210301bf7SZiyuan Xu enum {
1310301bf7SZiyuan Xu 	CDN_DP_HDCP_1X_KSV_LEN = 5,
1410301bf7SZiyuan Xu 	CDN_DP_HDCP_KSV_LEN = 8,
1510301bf7SZiyuan Xu 	CDN_DP_HDCP_RESERVED_LEN = 10,
1610301bf7SZiyuan Xu 	CDN_DP_HDCP_UID_LEN = 16,
1710301bf7SZiyuan Xu 	CDN_DP_HDCP_SHA_LEN = 20,
1810301bf7SZiyuan Xu 	CDN_DP_HDCP_DPK_LEN = 280,
1910301bf7SZiyuan Xu 	CDN_DP_HDCP_1X_KEYS_LEN	= 285,
2010301bf7SZiyuan Xu 	CDN_DP_HDCP_KEY_LEN = 326,
2110301bf7SZiyuan Xu };
2210301bf7SZiyuan Xu 
2310301bf7SZiyuan Xu struct cdn_dp_hdcp_key_1x {
2410301bf7SZiyuan Xu 	uint8_t ksv[CDN_DP_HDCP_KSV_LEN];
2510301bf7SZiyuan Xu 	uint8_t device_key[CDN_DP_HDCP_DPK_LEN];
2610301bf7SZiyuan Xu 	uint8_t sha1[CDN_DP_HDCP_SHA_LEN];
2710301bf7SZiyuan Xu 	uint8_t uid[CDN_DP_HDCP_UID_LEN];
2810301bf7SZiyuan Xu 	uint16_t seed;
2910301bf7SZiyuan Xu 	uint8_t reserved[CDN_DP_HDCP_RESERVED_LEN];
3010301bf7SZiyuan Xu };
3110301bf7SZiyuan Xu 
3210301bf7SZiyuan Xu #define HDCP_KEY_DATA_START_TRANSFER	0
3310301bf7SZiyuan Xu #define HDCP_KEY_DATA_START_DECRYPT	1
3410301bf7SZiyuan Xu #define HDCP_KEY_1X_STORE_DATA_ALIGN_SIZE	(6 * 64) / 8
3510301bf7SZiyuan Xu 
3610301bf7SZiyuan Xu /* Checks the cdn_dp_hdcp_key_1x must be aligned on 6 x 64-bit word boundary */
37*9a90d720SElyes Haouas CASSERT(sizeof(struct cdn_dp_hdcp_key_1x) % HDCP_KEY_1X_STORE_DATA_ALIGN_SIZE,
3810301bf7SZiyuan Xu 	assert_hdcp_key_1x_store_data_align_size_mismatch);
3910301bf7SZiyuan Xu 
4010301bf7SZiyuan Xu uint64_t dp_hdcp_ctrl(uint64_t type);
4110301bf7SZiyuan Xu 
4210301bf7SZiyuan Xu uint64_t dp_hdcp_store_key(uint64_t x1,
4310301bf7SZiyuan Xu 			   uint64_t x2,
4410301bf7SZiyuan Xu 			   uint64_t x3,
4510301bf7SZiyuan Xu 			   uint64_t x4,
4610301bf7SZiyuan Xu 			   uint64_t x5,
4710301bf7SZiyuan Xu 			   uint64_t x6);
48c3cf06f1SAntonio Nino Diaz 
49c3cf06f1SAntonio Nino Diaz #endif /* CDN_DP_H */
50