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