/****************************************************************************** * * Copyright (C) 2016-2017 Cadence Design Systems, Inc. * All rights reserved worldwide. * * Redistribution and use in source and binary forms, with or without modification, * are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation and/or * other materials provided with the distribution. * * 3. Neither the name of the copyright holder nor the names of its contributors * may be used to endorse or promote products derived from this software without * specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * 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 AUTHORS OR COPYRIGHT HOLDERS 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. * * Copyright 2017 NXP * ****************************************************************************** * * This file was auto-generated. Do not edit it manually. * ****************************************************************************** * * hdcp2.h * ****************************************************************************** */ #ifndef HDCP2_H #define HDCP2_H #include "mailBox.h" /* HDCP 2 registers * and general use function for HDCP2 (transmitter and receiver) * Author - yehonatan levin - cadence */ /** * \file * \brief HDCP 2 registers * and general use function for HDCP2 (trasmiter and reciever) */ /* HDCP2 register list */ #ifdef DP_TX #define HDCP2_RTX 0x69000 #define HDCP2_TX_CAPS 0x69008 #define HDCP2_CERT_RX 0x6900B #define HDCP2_RRX 0x69215 #define HDCP2_RX_CAPS 0x6921D #define HDCP2_EKPUB_KM 0x69220 #define HDCP2_EKH_KM_WR 0x692A0 #define HDCP2_M 0x692B0 #define HDCP2_H_TAG 0x692C0 #define HDCP2_EKH_KM_RD 0x692E0 #define HDCP2_RN 0x692F0 #define HDCP2_L_TAG 0x692F8 #define HDCP2_EDKEY_KS 0x69318 #define HDCP2_RIV 0x69328 #define HDCP2_RX_INFO 0x69330 #define HDCP2_SEQ_NUM_V 0x69332 #define HDCP2_V_TAG 0x69335 #define HDCP2_RECEIVER_ID_LIST 0x69345 #define HDCP2_V 0x693E0 #define HDCP2_SEQ_NUM_M 0x693F0 #define HDCP2_K 0x693F3 #define HDCP2_STREAM_ID_TYPE 0x693F5 #define HDCP2_M_TAG 0x69473 #define HDCP2_RXSTATUS 0x69493 #define HDCP2_RSVD 0x69494 #define HDCP2_DBG 0x69518 #else /* HDMI */ #define HDCP2_HDCP14 0x0 #define HDCP2_RSVD1 0x44 #define HDCP2_HDCP2_VERSION 0x50 #define HDCP2_RSVD2 0x51 #define HDCP2_WRITE_MESSAGE 0x60 #define HDCP2_RSVD3 0x61 #define HDCP2_RXSTATUS 0x70 #define HDCP2_RSVD4 0x72 #define HDCP2_READ_MESSAGE 0x80 #define HDCP2_RSVD5 0x81 #define HDCP2_DBG 0xC0 #endif /* HDCP2 commands */ #define HDCP2_CMD_AKE_INIT 2 #define HDCP2_CMD_AKE_SEND_CERT 3 #define HDCP2_CMD_AKE_NO_STORED_KM 4 #define HDCP2_CMD_AKE_STORED_KM 5 #define HDCP2_CMD_AKE_SEND_H_PRIME 7 #define HDCP2_CMD_AKE_SEND_PAIRING_INFO 8 #define HDCP2_CMD_LC_INIT 9 #define HDCP2_CMD_LC_SEND_L_PRIME 10 #define HDCP2_SKE_SEND_EKS 11 #define HDCP2_REPEATER_AUTH_SEND_RECEIVER_ID_LIST 12 #define HDCP2_REPEATER_AUTH_SEND_ACK 15 #define HDCP2_REPEATER_AUTH_STREAM_MANAGE 16 #define HDCP2_REPEATER_AUTH_STREAM_READY 17 /* values */ #define HDCP2_VAL_HDCP2_VERSION_SUPPORTED 2 #define LC_128_LEN 16 extern u8 pHdcpLc128[LC_128_LEN]; typedef enum { HDCP2_NOT_FINISHED = 0x11, HDCP2_FINISHED } HDCP_2_REC_RES; /* command structs */ /* AKE INIT */ typedef struct { u8 version; u8 transmitter_capability_mask[2]; } S_HDCP2_TXCAPS; typedef struct { u8 rtx[8]; S_HDCP2_TXCAPS txcaps; } S_HDCP2_CMD_AKE_INIT; /* AKE_SEND_CERT */ typedef struct { u8 cert_rx[522]; u8 r_rx[8]; u8 rxcaps[3]; } S_HDCP2_CMD_AKE_SEND_CERT; /* AKE_NO_STORED_KM */ typedef struct { u8 ekpub_km[128]; } S_HDCP2_CMD_AKE_NO_STORED_KM; /* AKE_STORED_KM */ typedef struct { u8 ekh_km[16]; u8 m[16]; } S_HDCP2_CMD_AKE_STORED_KM; /* AKE_SEND_H_PRIME */ typedef struct { u8 h[32]; } S_HDCP2_CMD_AKE_SEND_H_PRIME; /* AKE_SEND_PAIRING_INFO */ typedef struct { u8 Ekh_Km[16]; } S_HDCP2_CMD_AKE_SEND_PAIRING_INFO; /* LC_Init */ typedef struct { u8 rn[8]; } S_HDCP2_CMD_LC_Init; /* LC_Send_L_Prime */ typedef struct { u8 l[32]; } S_HDCP2_CMD_LC_Send_L_Prime; /* LC_Send_Eks */ typedef struct { u8 Edkey_Ks[16]; u8 Riv[8]; } S_HDCP2_CMD_SKE_Send_Eks; /* REPEATER_AUTH_SEND_RECEIVER_ID_LIST */ typedef struct { u8 RxInfo[2]; u8 seq_num_V[3]; u8 V[16]; /* max device count * 5 */ } S_HDCP2_CMD_REPEATER_AUTH_SEND_RECEIVER_ID_LIST; /* HDCP2_RxInfo bits */ typedef struct { u16 HDCP1_DEVICE_DOWNSTREAM:1; u16 HDCP2_0_REPEATER_DOWNSTREAM:1; u16 MAX_CASCADE_EXCEEDED:1; u16 MAX_DEVS_EXCEEDED:1; u16 DEVICE_COUNT:5; u16 DEPTH:3; } S_HDCP2_RX_INFO_BITS; typedef union { S_HDCP2_RX_INFO_BITS bits; u16 value16Bit; } U_HDCP2_RX_INFO; /* REPEATER_AUTH_SEND_ACK */ typedef struct { u8 v[16]; } S_HDCP2_CMD_REPEATER_AUTH_SEND_ACK; /* REPEATER_AUTH_STREAM_MANAGE */ typedef struct { u8 seq_num_m[3]; u8 k[2]; u8 streamId_Type[2]; /* should be k*2 by spec??? */ } S_HDCP2_CMD_REPEATER_AUTH_STREAM_MANAGE; /* REPEATER_AUTH_STREAM_READY */ typedef struct { u8 m[32]; } S_HDCP2_CMD_REPEATER_AUTH_STREAM_READY; /* HDCP2_RXSTATUS bits */ #ifdef DP_TX typedef struct { u8 READY:1; u8 H_AVAILABLE:1; u8 PAIRING_AVAILABLE:1; u8 REAUTH_REQ:1; u8 LINK_INTEGRITY_FAILURE:1; u8 RSVD:3; } S_HDCP2_RX_STATUS_BITS; #else typedef struct { u16 Message_Size:10; u16 READY:1; u16 REAUTH_REQ:1; u16 RSVD:4; } S_HDCP2_RX_STATUS_BITS; #endif typedef union { S_HDCP2_RX_STATUS_BITS bits; u16 value16Bit; } U_HDCP2_RX_STATUS; /* HDCP ports mail box messages */ typedef enum { HDCP_GENERAL_SET_LC_128 = 0, HDCP_SET_SEED, } HDCP_GENERAL_MSG; /** * \brief get command length for specific command * * \param [in] offset offset of the command * \return Return_Description * */ u32 hdcp2_commandLen(u32 offset); /** * \brief message length for specific message * * \param [in] msg the message * \return the size of this message * */ u32 hdcp2_MsgcommandLen(u8 msg); #endif