| /****************************************************************************** |
| * |
| * 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 |