diff options
Diffstat (limited to 'drivers/mxc/hdp/hdcp2.h')
-rw-r--r-- | drivers/mxc/hdp/hdcp2.h | 289 |
1 files changed, 289 insertions, 0 deletions
diff --git a/drivers/mxc/hdp/hdcp2.h b/drivers/mxc/hdp/hdcp2.h new file mode 100644 index 000000000000..df11446b3ba1 --- /dev/null +++ b/drivers/mxc/hdp/hdcp2.h @@ -0,0 +1,289 @@ +/****************************************************************************** + * + * 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 |