1*53ee8cc1Swenshuai.xi //<MStar Software> 2*53ee8cc1Swenshuai.xi //****************************************************************************** 3*53ee8cc1Swenshuai.xi // MStar Software 4*53ee8cc1Swenshuai.xi // Copyright (c) 2010 - 2012 MStar Semiconductor, Inc. All rights reserved. 5*53ee8cc1Swenshuai.xi // All software, firmware and related documentation herein ("MStar Software") are 6*53ee8cc1Swenshuai.xi // intellectual property of MStar Semiconductor, Inc. ("MStar") and protected by 7*53ee8cc1Swenshuai.xi // law, including, but not limited to, copyright law and international treaties. 8*53ee8cc1Swenshuai.xi // Any use, modification, reproduction, retransmission, or republication of all 9*53ee8cc1Swenshuai.xi // or part of MStar Software is expressly prohibited, unless prior written 10*53ee8cc1Swenshuai.xi // permission has been granted by MStar. 11*53ee8cc1Swenshuai.xi // 12*53ee8cc1Swenshuai.xi // By accessing, browsing and/or using MStar Software, you acknowledge that you 13*53ee8cc1Swenshuai.xi // have read, understood, and agree, to be bound by below terms ("Terms") and to 14*53ee8cc1Swenshuai.xi // comply with all applicable laws and regulations: 15*53ee8cc1Swenshuai.xi // 16*53ee8cc1Swenshuai.xi // 1. MStar shall retain any and all right, ownership and interest to MStar 17*53ee8cc1Swenshuai.xi // Software and any modification/derivatives thereof. 18*53ee8cc1Swenshuai.xi // No right, ownership, or interest to MStar Software and any 19*53ee8cc1Swenshuai.xi // modification/derivatives thereof is transferred to you under Terms. 20*53ee8cc1Swenshuai.xi // 21*53ee8cc1Swenshuai.xi // 2. You understand that MStar Software might include, incorporate or be 22*53ee8cc1Swenshuai.xi // supplied together with third party`s software and the use of MStar 23*53ee8cc1Swenshuai.xi // Software may require additional licenses from third parties. 24*53ee8cc1Swenshuai.xi // Therefore, you hereby agree it is your sole responsibility to separately 25*53ee8cc1Swenshuai.xi // obtain any and all third party right and license necessary for your use of 26*53ee8cc1Swenshuai.xi // such third party`s software. 27*53ee8cc1Swenshuai.xi // 28*53ee8cc1Swenshuai.xi // 3. MStar Software and any modification/derivatives thereof shall be deemed as 29*53ee8cc1Swenshuai.xi // MStar`s confidential information and you agree to keep MStar`s 30*53ee8cc1Swenshuai.xi // confidential information in strictest confidence and not disclose to any 31*53ee8cc1Swenshuai.xi // third party. 32*53ee8cc1Swenshuai.xi // 33*53ee8cc1Swenshuai.xi // 4. MStar Software is provided on an "AS IS" basis without warranties of any 34*53ee8cc1Swenshuai.xi // kind. Any warranties are hereby expressly disclaimed by MStar, including 35*53ee8cc1Swenshuai.xi // without limitation, any warranties of merchantability, non-infringement of 36*53ee8cc1Swenshuai.xi // intellectual property rights, fitness for a particular purpose, error free 37*53ee8cc1Swenshuai.xi // and in conformity with any international standard. You agree to waive any 38*53ee8cc1Swenshuai.xi // claim against MStar for any loss, damage, cost or expense that you may 39*53ee8cc1Swenshuai.xi // incur related to your use of MStar Software. 40*53ee8cc1Swenshuai.xi // In no event shall MStar be liable for any direct, indirect, incidental or 41*53ee8cc1Swenshuai.xi // consequential damages, including without limitation, lost of profit or 42*53ee8cc1Swenshuai.xi // revenues, lost or damage of data, and unauthorized system use. 43*53ee8cc1Swenshuai.xi // You agree that this Section 4 shall still apply without being affected 44*53ee8cc1Swenshuai.xi // even if MStar Software has been modified by MStar in accordance with your 45*53ee8cc1Swenshuai.xi // request or instruction for your use, except otherwise agreed by both 46*53ee8cc1Swenshuai.xi // parties in writing. 47*53ee8cc1Swenshuai.xi // 48*53ee8cc1Swenshuai.xi // 5. If requested, MStar may from time to time provide technical supports or 49*53ee8cc1Swenshuai.xi // services in relation with MStar Software to you for your use of 50*53ee8cc1Swenshuai.xi // MStar Software in conjunction with your or your customer`s product 51*53ee8cc1Swenshuai.xi // ("Services"). 52*53ee8cc1Swenshuai.xi // You understand and agree that, except otherwise agreed by both parties in 53*53ee8cc1Swenshuai.xi // writing, Services are provided on an "AS IS" basis and the warranty 54*53ee8cc1Swenshuai.xi // disclaimer set forth in Section 4 above shall apply. 55*53ee8cc1Swenshuai.xi // 56*53ee8cc1Swenshuai.xi // 6. Nothing contained herein shall be construed as by implication, estoppels 57*53ee8cc1Swenshuai.xi // or otherwise: 58*53ee8cc1Swenshuai.xi // (a) conferring any license or right to use MStar name, trademark, service 59*53ee8cc1Swenshuai.xi // mark, symbol or any other identification; 60*53ee8cc1Swenshuai.xi // (b) obligating MStar or any of its affiliates to furnish any person, 61*53ee8cc1Swenshuai.xi // including without limitation, you and your customers, any assistance 62*53ee8cc1Swenshuai.xi // of any kind whatsoever, or any information; or 63*53ee8cc1Swenshuai.xi // (c) conferring any license or right under any intellectual property right. 64*53ee8cc1Swenshuai.xi // 65*53ee8cc1Swenshuai.xi // 7. These terms shall be governed by and construed in accordance with the laws 66*53ee8cc1Swenshuai.xi // of Taiwan, R.O.C., excluding its conflict of law rules. 67*53ee8cc1Swenshuai.xi // Any and all dispute arising out hereof or related hereto shall be finally 68*53ee8cc1Swenshuai.xi // settled by arbitration referred to the Chinese Arbitration Association, 69*53ee8cc1Swenshuai.xi // Taipei in accordance with the ROC Arbitration Law and the Arbitration 70*53ee8cc1Swenshuai.xi // Rules of the Association by three (3) arbitrators appointed in accordance 71*53ee8cc1Swenshuai.xi // with the said Rules. 72*53ee8cc1Swenshuai.xi // The place of arbitration shall be in Taipei, Taiwan and the language shall 73*53ee8cc1Swenshuai.xi // be English. 74*53ee8cc1Swenshuai.xi // The arbitration award shall be final and binding to both parties. 75*53ee8cc1Swenshuai.xi // 76*53ee8cc1Swenshuai.xi //****************************************************************************** 77*53ee8cc1Swenshuai.xi //<MStar Software> 78*53ee8cc1Swenshuai.xi //////////////////////////////////////////////////////////////////////////////// 79*53ee8cc1Swenshuai.xi // 80*53ee8cc1Swenshuai.xi // Copyright (c) 2008-2009 MStar Semiconductor, Inc. 81*53ee8cc1Swenshuai.xi // All rights reserved. 82*53ee8cc1Swenshuai.xi // 83*53ee8cc1Swenshuai.xi // Unless otherwise stipulated in writing, any and all information contained 84*53ee8cc1Swenshuai.xi // herein regardless in any format shall remain the sole proprietary of 85*53ee8cc1Swenshuai.xi // MStar Semiconductor Inc. and be kept in strict confidence 86*53ee8cc1Swenshuai.xi // (!MStar Confidential Information!L) by the recipient. 87*53ee8cc1Swenshuai.xi // Any unauthorized act including without limitation unauthorized disclosure, 88*53ee8cc1Swenshuai.xi // copying, use, reproduction, sale, distribution, modification, disassembling, 89*53ee8cc1Swenshuai.xi // reverse engineering and compiling of the contents of MStar Confidential 90*53ee8cc1Swenshuai.xi // Information is unlawful and strictly prohibited. MStar hereby reserves the 91*53ee8cc1Swenshuai.xi // rights to any and all damages, losses, costs and expenses resulting therefrom. 92*53ee8cc1Swenshuai.xi // 93*53ee8cc1Swenshuai.xi //////////////////////////////////////////////////////////////////////////////// 94*53ee8cc1Swenshuai.xi 95*53ee8cc1Swenshuai.xi /////////////////////////////////////////////////////////////////////////////////////////////////// 96*53ee8cc1Swenshuai.xi /// 97*53ee8cc1Swenshuai.xi /// @file drvXC_HDMI_if.h 98*53ee8cc1Swenshuai.xi /// @brief HDMI Interface 99*53ee8cc1Swenshuai.xi /// @author MStar Semiconductor Inc. 100*53ee8cc1Swenshuai.xi /////////////////////////////////////////////////////////////////////////////////////////////////// 101*53ee8cc1Swenshuai.xi 102*53ee8cc1Swenshuai.xi /*! \defgroup MISC HDMI modules 103*53ee8cc1Swenshuai.xi 104*53ee8cc1Swenshuai.xi * \defgroup HDMI_IF HDMI interface (drvXC_HDMI_if.h) 105*53ee8cc1Swenshuai.xi * \ingroup MISC 106*53ee8cc1Swenshuai.xi 107*53ee8cc1Swenshuai.xi <b> Features </b> 108*53ee8cc1Swenshuai.xi - HDMI Ethernet Channel 109*53ee8cc1Swenshuai.xi Support Ethernet communication through HDMI 110*53ee8cc1Swenshuai.xi - Audio Return Channel 111*53ee8cc1Swenshuai.xi - 3D support 112*53ee8cc1Swenshuai.xi - Frame packing, Side-by-Side half, Top-Buttom and etc. 113*53ee8cc1Swenshuai.xi - 4Kx2K support 114*53ee8cc1Swenshuai.xi 3840x2160@24/25/30Hz, 4096x2160@24Hz 115*53ee8cc1Swenshuai.xi - Additional Color Spaces 116*53ee8cc1Swenshuai.xi sYCC601, AdobeRGB, AdobeYCC601 117*53ee8cc1Swenshuai.xi - HDMI Micro Connector 118*53ee8cc1Swenshuai.xi 19-pin/1080p 119*53ee8cc1Swenshuai.xi 120*53ee8cc1Swenshuai.xi \image html api_HDMI_if_pic1.png 121*53ee8cc1Swenshuai.xi 122*53ee8cc1Swenshuai.xi <b> Operation Flow </b> 123*53ee8cc1Swenshuai.xi - Initialized and enable HDMI 124*53ee8cc1Swenshuai.xi - MApi_HDMITx_SetHPDGpioPin(_st_msAPI_XC_InitData.u16HdmitxHpdPin); 125*53ee8cc1Swenshuai.xi - MApi_HDMITx_Init(); 126*53ee8cc1Swenshuai.xi - MApi_HDMITx_TurnOnOff(TRUE); 127*53ee8cc1Swenshuai.xi - MApi_HDMITx_SetVideoOnOff(TRUE) 128*53ee8cc1Swenshuai.xi - MApi_HDMITx_SetAudioConfiguration(HDMITX_AUDIO_48K, HDMITX_AUDIO_CH_2, HDMITX_AUDIO_PCM); 129*53ee8cc1Swenshuai.xi */ 130*53ee8cc1Swenshuai.xi #ifndef DRVXC_HDMI_IF_H 131*53ee8cc1Swenshuai.xi #define DRVXC_HDMI_IF_H 132*53ee8cc1Swenshuai.xi 133*53ee8cc1Swenshuai.xi #include "MsDevice.h" 134*53ee8cc1Swenshuai.xi #include "MsCommon.h" 135*53ee8cc1Swenshuai.xi #ifdef __cplusplus 136*53ee8cc1Swenshuai.xi extern "C" 137*53ee8cc1Swenshuai.xi { 138*53ee8cc1Swenshuai.xi #endif 139*53ee8cc1Swenshuai.xi 140*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 141*53ee8cc1Swenshuai.xi // Driver Capability 142*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 143*53ee8cc1Swenshuai.xi 144*53ee8cc1Swenshuai.xi #ifdef MDRV_HDMI_C 145*53ee8cc1Swenshuai.xi #define INTERFACE 146*53ee8cc1Swenshuai.xi #else 147*53ee8cc1Swenshuai.xi #define INTERFACE extern 148*53ee8cc1Swenshuai.xi #endif 149*53ee8cc1Swenshuai.xi 150*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 151*53ee8cc1Swenshuai.xi // Macro and Define 152*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 153*53ee8cc1Swenshuai.xi #define _BYTE_0 0x00 154*53ee8cc1Swenshuai.xi #define _BYTE_1 0x01 155*53ee8cc1Swenshuai.xi #define _BYTE_2 0x02 156*53ee8cc1Swenshuai.xi #define _BYTE_3 0x03 157*53ee8cc1Swenshuai.xi #define _BYTE_4 0x04 158*53ee8cc1Swenshuai.xi #define _BYTE_5 0x05 159*53ee8cc1Swenshuai.xi #define _BYTE_6 0x06 160*53ee8cc1Swenshuai.xi #define _BYTE_7 0x07 161*53ee8cc1Swenshuai.xi #define _BYTE_8 0x08 162*53ee8cc1Swenshuai.xi #define _BYTE_9 0x09 163*53ee8cc1Swenshuai.xi #define _BYTE_10 0x0A 164*53ee8cc1Swenshuai.xi #define _BYTE_11 0x0B 165*53ee8cc1Swenshuai.xi #define _BYTE_12 0x0C 166*53ee8cc1Swenshuai.xi #define _BYTE_13 0x0D 167*53ee8cc1Swenshuai.xi // library information 168*53ee8cc1Swenshuai.xi #define MSIF_HDMI_LIB_CODE {'H','D','M','I'} 169*53ee8cc1Swenshuai.xi #define MSIF_HDMI_LIBVER {'0','1'} 170*53ee8cc1Swenshuai.xi #define MSIF_HDMI_BUILDNUM {'0','7'} 171*53ee8cc1Swenshuai.xi #define MSIF_HDMI_CHANGELIST {'0','0','3','5','1','6','6','3'} 172*53ee8cc1Swenshuai.xi #define HDMI_DRV_VERSION /* Character String for DRV/API version */ \ 173*53ee8cc1Swenshuai.xi MSIF_TAG, /* 'MSIF' */ \ 174*53ee8cc1Swenshuai.xi MSIF_CLASS, /* '00' */ \ 175*53ee8cc1Swenshuai.xi MSIF_CUS, /* 0x0000 */ \ 176*53ee8cc1Swenshuai.xi MSIF_MOD, /* 0x0000 */ \ 177*53ee8cc1Swenshuai.xi MSIF_CHIP, \ 178*53ee8cc1Swenshuai.xi MSIF_CPU, \ 179*53ee8cc1Swenshuai.xi MSIF_HDMI_LIB_CODE , /* IP__ */ \ 180*53ee8cc1Swenshuai.xi MSIF_HDMI_LIBVER , /* 0.0 ~ Z.Z */ \ 181*53ee8cc1Swenshuai.xi MSIF_HDMI_BUILDNUM , /* 00 ~ 99 */ \ 182*53ee8cc1Swenshuai.xi MSIF_HDMI_CHANGELIST, /* CL# */ \ 183*53ee8cc1Swenshuai.xi MSIF_OS 184*53ee8cc1Swenshuai.xi 185*53ee8cc1Swenshuai.xi #define HDMI_VSDB_PACKET_SIZE 14 186*53ee8cc1Swenshuai.xi #define HDMI_HDR_PACKET_SIZE HDMI_VSDB_PACKET_SIZE 187*53ee8cc1Swenshuai.xi 188*53ee8cc1Swenshuai.xi /// Extend packet receive structure version 189*53ee8cc1Swenshuai.xi #define HDMI_EXTEND_PACKET_RECEIVE_VERSION 2 190*53ee8cc1Swenshuai.xi #define HDMI_EXTEND_PACKET_RECEIVE_VERSION_1_SIZE 22 191*53ee8cc1Swenshuai.xi 192*53ee8cc1Swenshuai.xi /// HDR metadata structure version 193*53ee8cc1Swenshuai.xi #define HDMI_HDR_METADATA_VERSION 1 194*53ee8cc1Swenshuai.xi #define HDMI_HDR_METADATA_VERSION_1_SIZE 30 195*53ee8cc1Swenshuai.xi 196*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 197*53ee8cc1Swenshuai.xi // Type and Structure 198*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 199*53ee8cc1Swenshuai.xi // for HDCP 22 callback function 200*53ee8cc1Swenshuai.xi typedef void (*HDCP22_Recv_CBF)(MS_U8, MS_U8, MS_U8*, MS_U32, void*); //type, portIdx, msg, msg length, context 201*53ee8cc1Swenshuai.xi 202*53ee8cc1Swenshuai.xi typedef enum 203*53ee8cc1Swenshuai.xi { 204*53ee8cc1Swenshuai.xi E_HDMI_SWITCH_VSDB_TO_HDR_PACKET, // XC resource 205*53ee8cc1Swenshuai.xi E_HDMI_HDR_INFOFRAME_GET, 206*53ee8cc1Swenshuai.xi E_HDMI_EXTEND_PACKET_RECEIVE_GET, 207*53ee8cc1Swenshuai.xi 208*53ee8cc1Swenshuai.xi E_HDMI_INTERFACE_CMD_GET_HDCP_STATE = 0x500, // HDMIRX resource 209*53ee8cc1Swenshuai.xi /*************************** HDCP Repeater ***************************/ 210*53ee8cc1Swenshuai.xi E_HDMI_INTERFACE_CMD_WRITE_X74, 211*53ee8cc1Swenshuai.xi E_HDMI_INTERFACE_CMD_READ_X74, 212*53ee8cc1Swenshuai.xi E_HDMI_INTERFACE_CMD_SET_REPEATER, 213*53ee8cc1Swenshuai.xi E_HDMI_INTERFACE_CMD_SET_BSTATUS, 214*53ee8cc1Swenshuai.xi E_HDMI_INTERFACE_CMD_SET_HDMI_MODE, 215*53ee8cc1Swenshuai.xi E_HDMI_INTERFACE_CMD_GET_INTERRUPT_STATUS, 216*53ee8cc1Swenshuai.xi E_HDMI_INTERFACE_CMD_WRITE_KSV_LIST, 217*53ee8cc1Swenshuai.xi E_HDMI_INTERFACE_CMD_SET_VPRIME, 218*53ee8cc1Swenshuai.xi /*************************** HDCP Repeater ***************************/ 219*53ee8cc1Swenshuai.xi E_HDMI_INTERFACE_CMD_GET_HDCP_ENC_STATE 220*53ee8cc1Swenshuai.xi } E_HDMI_CTRL_ID; 221*53ee8cc1Swenshuai.xi 222*53ee8cc1Swenshuai.xi /// HDMI reset type 223*53ee8cc1Swenshuai.xi typedef enum 224*53ee8cc1Swenshuai.xi { 225*53ee8cc1Swenshuai.xi REST_AVMUTE = _BIT(8), ///<HDMI Reset bit[8] 226*53ee8cc1Swenshuai.xi REST_Y_COLOR = _BIT(9), ///<HDMI Reset bit[9] 227*53ee8cc1Swenshuai.xi REST_PIXEL_REPETITION = _BIT(10), ///<HDMI Reset bit[10] 228*53ee8cc1Swenshuai.xi REST_FRAME_REPETITION = _BIT(11), ///<HDMI Reset bit[11] 229*53ee8cc1Swenshuai.xi REST_GCP_PKT = _BIT(12), ///<HDMI Reset bit[12] 230*53ee8cc1Swenshuai.xi REST_DEEP_COLOR_FIFO = _BIT(13), ///<HDMI Reset bit[13] 231*53ee8cc1Swenshuai.xi REST_RESERVE = _BIT(14), ///<HDMI Reset bit[14] 232*53ee8cc1Swenshuai.xi REST_HDMI_STATUS = _BIT(15), ///<HDMI Reset bit[15] 233*53ee8cc1Swenshuai.xi }HDMI_REST_t; 234*53ee8cc1Swenshuai.xi 235*53ee8cc1Swenshuai.xi /*! 236*53ee8cc1Swenshuai.xi HDMI Aspect Ratio TYPE 237*53ee8cc1Swenshuai.xi */ 238*53ee8cc1Swenshuai.xi typedef enum 239*53ee8cc1Swenshuai.xi { 240*53ee8cc1Swenshuai.xi // Active Format Aspect Ratio - AFAR 241*53ee8cc1Swenshuai.xi // HDMI_AF_AR_Not_Present = -1, ///< IF0[11..8] AFD not present, or AFD not yet found 242*53ee8cc1Swenshuai.xi HDMI_AF_AR_Reserve_0 = 0x00, ///< IF0[11..8] 0000, Reserved 243*53ee8cc1Swenshuai.xi HDMI_AF_AR_Reserve_1 = 0x01, ///< IF0[11..8] 0001, Reserved 244*53ee8cc1Swenshuai.xi HDMI_AF_AR_16x9_Top = 0x02, ///< IF0[11..8] 0010, box 16:9 (top). 245*53ee8cc1Swenshuai.xi HDMI_AF_AR_14x9_Top = 0x03, ///< IF0[11..8] 0011, box 14:9 (top). 246*53ee8cc1Swenshuai.xi HDMI_AF_AR_GT_16x9 = 0x04, ///< IF0[11..8] 0100, box >16:9 (centre) 247*53ee8cc1Swenshuai.xi HDMI_AF_AR_Reserve_5 = 0x05, ///< IF0[11..8] 0101, Reserved 248*53ee8cc1Swenshuai.xi HDMI_AF_AR_Reserve_6 = 0x06, ///< IF0[11..8] 0110, Reserved 249*53ee8cc1Swenshuai.xi HDMI_AF_AR_Reserve_7 = 0x07, ///< IF0[11..8] 0111, Reserved 250*53ee8cc1Swenshuai.xi HDMI_AF_AR_SAME = 0x08, ///< IF0[11..8] 1000, same as picture 251*53ee8cc1Swenshuai.xi HDMI_AF_AR_4x3_C = 0x09, ///< IF0[11..8] 1001, 4:3 Center 252*53ee8cc1Swenshuai.xi HDMI_AF_AR_16x9_C = 0x0A, ///< IF0[11..8] 1010, 16:9 Center 253*53ee8cc1Swenshuai.xi HDMI_AF_AR_14x9_C = 0x0B, ///< IF0[11..8] 1011, 14:9 Center 254*53ee8cc1Swenshuai.xi HDMI_AF_AR_Reserve_12 = 0x0C, ///< IF0[11..8] 1100, Reserved. 255*53ee8cc1Swenshuai.xi HDMI_AF_AR_4x3_with_14x9_C = 0x0D, ///< IF0[11..8] 1101, 4:3 with shoot and protect 14:9 centre. 256*53ee8cc1Swenshuai.xi HDMI_AF_AR_16x9_with_14x9_C = 0x0E, ///< IF0[11..8] 1110, 16:9 with shoot and protect 14:9 centre. 257*53ee8cc1Swenshuai.xi HDMI_AF_AR_16x9_with_4x3_C = 0x0F, ///< IF0[11..8] 1111, 16:9 with shoot and protect 4:3 centre. 258*53ee8cc1Swenshuai.xi 259*53ee8cc1Swenshuai.xi // Picture Aspect Ratio - PAR 260*53ee8cc1Swenshuai.xi HDMI_Pic_AR_NODATA = 0x00, ///< IF0[13..12] 00 261*53ee8cc1Swenshuai.xi HDMI_Pic_AR_4x3 = 0x10, ///< IF0[13..12] 01, 4:3 262*53ee8cc1Swenshuai.xi HDMI_Pic_AR_16x9 = 0x20, ///< IF0[13..12] 10, 16:9 263*53ee8cc1Swenshuai.xi HDMI_Pic_AR_RSV = 0x30, ///< IF0[13..12] 11, reserved 264*53ee8cc1Swenshuai.xi } MS_HDMI_AR_TYPE; 265*53ee8cc1Swenshuai.xi 266*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 267*53ee8cc1Swenshuai.xi /// AVI infomation frame version 268*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 269*53ee8cc1Swenshuai.xi typedef enum 270*53ee8cc1Swenshuai.xi { 271*53ee8cc1Swenshuai.xi E_AVI_INFOFRAME_VERSION_NON, //invalid version 272*53ee8cc1Swenshuai.xi E_AVI_INFOFRAME_VERSION1, //AVI infomation frame version 1 273*53ee8cc1Swenshuai.xi E_AVI_INFOFRAME_VERSION2, //AVI infomation frame version 2 274*53ee8cc1Swenshuai.xi E_AVI_INFOFRAME_VERSION3 //AVI infomation frame version 3 275*53ee8cc1Swenshuai.xi }EN_AVI_INFOFRAME_VERSION; 276*53ee8cc1Swenshuai.xi 277*53ee8cc1Swenshuai.xi #define HDMI_AR_INIT_VALUE (HDMI_Pic_AR_RSV) 278*53ee8cc1Swenshuai.xi #define HDMI_AR_REG_MASK (0x3F) 279*53ee8cc1Swenshuai.xi #define HDMI_AFAR_MASK (0x0F) // mask to get the AFAR 280*53ee8cc1Swenshuai.xi #define HDMI_AR_MASK (0x30) // mask to get the PAR 281*53ee8cc1Swenshuai.xi 282*53ee8cc1Swenshuai.xi /// HDMI GControl package type. 283*53ee8cc1Swenshuai.xi typedef enum 284*53ee8cc1Swenshuai.xi { 285*53ee8cc1Swenshuai.xi G_CTRL_AVMUTE = 0, ///< bit[0]: AVMUTE 286*53ee8cc1Swenshuai.xi G_Ctrl_DEFAULT_PHASE, ///< bit[1]: Default_Phase 287*53ee8cc1Swenshuai.xi G_Ctrl_LAST_PP, ///< bit[4:2]: LAST_PP[2:0] 288*53ee8cc1Swenshuai.xi G_Ctrl_PRE_LPP, ///< bit[7:5]: PRE_LPP[2:0] 289*53ee8cc1Swenshuai.xi G_Ctrl_CD_VAL, ///< bit[11:8]: CD_VAL[3:0] 290*53ee8cc1Swenshuai.xi G_Ctrl_PP_VAL, ///< bit[15:12]: PP_VAL[3:0] 291*53ee8cc1Swenshuai.xi G_Ctrl_ALL 292*53ee8cc1Swenshuai.xi }HDMI_GControl_INFO_t; 293*53ee8cc1Swenshuai.xi 294*53ee8cc1Swenshuai.xi /// HDMI PLL control type 295*53ee8cc1Swenshuai.xi typedef enum 296*53ee8cc1Swenshuai.xi { 297*53ee8cc1Swenshuai.xi PLL_CTRL_L=0, ///< HDMI_PLL_CTRL1_L 7:0 298*53ee8cc1Swenshuai.xi PLL_CTRL_MANUAL_DIV, ///< MANUAL_PLL_DIV 7 299*53ee8cc1Swenshuai.xi PLL_CTRL_PORST, ///< PLL_PORST 6 300*53ee8cc1Swenshuai.xi PLL_CTRL_RESET_TP, ///< RESET_TP 5 301*53ee8cc1Swenshuai.xi PLL_CTRL_RESET_TF, ///< RESET_TF 4 302*53ee8cc1Swenshuai.xi PLL_CTRL_RESET_TI, ///< RESET_TI 3 303*53ee8cc1Swenshuai.xi PLL_CTRL_VCO_OFFSET, ///< VCO_OFFSET 2 304*53ee8cc1Swenshuai.xi PLL_CTRL_RESET, ///< PLL_RESET 1 305*53ee8cc1Swenshuai.xi PLL_CTRL_PWRDOWN, ///< PWRDOWN 0 306*53ee8cc1Swenshuai.xi 307*53ee8cc1Swenshuai.xi PLL_CTRL_H, ///< HDMI_PLL_CTRL1_H 7:0 308*53ee8cc1Swenshuai.xi PLL_CTRL_KN, ///< KN[1:0] 7:6 309*53ee8cc1Swenshuai.xi PLL_CTRL_RCTRL, ///< RCTRL 5:3 310*53ee8cc1Swenshuai.xi PLL_CTRL_ICTRL, ///< ICTRL 2:0 311*53ee8cc1Swenshuai.xi }HDMI_PLL_CTRL_t; 312*53ee8cc1Swenshuai.xi 313*53ee8cc1Swenshuai.xi /// HDMI PLL control type 314*53ee8cc1Swenshuai.xi typedef enum 315*53ee8cc1Swenshuai.xi { 316*53ee8cc1Swenshuai.xi PLL_CTRL2_L, ///< HDMI_PLL_CTRL2_L 7:0 317*53ee8cc1Swenshuai.xi PLL_CTRL2_KP, ///< KP[3:0] 7:4 318*53ee8cc1Swenshuai.xi PLL_CTRL2_KM, ///< KM[3:0] 3:0 319*53ee8cc1Swenshuai.xi 320*53ee8cc1Swenshuai.xi PLL_CTRL2_H, ///< HDMI_PLL_CTRL2_H 7:0 321*53ee8cc1Swenshuai.xi PLL_CTRL2_DDIV, ///< DDIV[3:0] 7:4 322*53ee8cc1Swenshuai.xi PLL_CTRL2_FBDIV, ///< FBDIV[3:0] 3:0 323*53ee8cc1Swenshuai.xi }HDMI_PLL_CTRL2_t; 324*53ee8cc1Swenshuai.xi 325*53ee8cc1Swenshuai.xi ////===========================>>HDMI 326*53ee8cc1Swenshuai.xi typedef struct 327*53ee8cc1Swenshuai.xi { 328*53ee8cc1Swenshuai.xi MS_BOOL bIsHDMIMode; 329*53ee8cc1Swenshuai.xi MS_BOOL bMuteHDMIVideo; 330*53ee8cc1Swenshuai.xi 331*53ee8cc1Swenshuai.xi MS_BOOL bMuteHDMIAudio; 332*53ee8cc1Swenshuai.xi MS_BOOL bEnableNonPCM; 333*53ee8cc1Swenshuai.xi MS_U8 u8AudioStbCnt; // If stable more than HDMI_AUDIO_STABLE_CNT, enable audio 334*53ee8cc1Swenshuai.xi // In 199M case, audio on->off->on->off->on, so, we wait 4 * HDMI_AUDIO_STABLE_CNT, if unstable, 335*53ee8cc1Swenshuai.xi // enable audio still to prevent mute audio always because of un-stable 336*53ee8cc1Swenshuai.xi MS_U8 u8AudioForceEnableCnt; 337*53ee8cc1Swenshuai.xi 338*53ee8cc1Swenshuai.xi MS_U8 u8ColorFormat; 339*53ee8cc1Swenshuai.xi MS_U8 u8LostHDMICounter; 340*53ee8cc1Swenshuai.xi MS_BOOL bColorFMTChange; 341*53ee8cc1Swenshuai.xi MS_U8 u8PreClolrFormat; 342*53ee8cc1Swenshuai.xi MS_U8 u8AspectRatio; 343*53ee8cc1Swenshuai.xi } HDMI_POLLING_STATUS_t; 344*53ee8cc1Swenshuai.xi 345*53ee8cc1Swenshuai.xi typedef enum 346*53ee8cc1Swenshuai.xi { 347*53ee8cc1Swenshuai.xi MS_DVI_CHANNEL_R, 348*53ee8cc1Swenshuai.xi MS_DVI_CHANNEL_G, 349*53ee8cc1Swenshuai.xi MS_DVI_CHANNEL_B, 350*53ee8cc1Swenshuai.xi } MS_DVI_CHANNEL_TYPE; 351*53ee8cc1Swenshuai.xi 352*53ee8cc1Swenshuai.xi /// HDMI COLOR FORMAT 353*53ee8cc1Swenshuai.xi typedef enum 354*53ee8cc1Swenshuai.xi { 355*53ee8cc1Swenshuai.xi MS_HDMI_COLOR_RGB, ///< HDMI RGB 444 Color Format 356*53ee8cc1Swenshuai.xi MS_HDMI_COLOR_YUV_422, ///< HDMI YUV 422 Color Format 357*53ee8cc1Swenshuai.xi MS_HDMI_COLOR_YUV_444, ///< HDMI YUV 444 Color Format 358*53ee8cc1Swenshuai.xi MS_HDMI_COLOR_YUV_420, ///< HDMI YUV 420 Color Format 359*53ee8cc1Swenshuai.xi MS_HDMI_COLOR_RESERVED, ///< Reserve 360*53ee8cc1Swenshuai.xi MS_HDMI_COLOR_DEFAULT = MS_HDMI_COLOR_RGB, ///< Default setting 361*53ee8cc1Swenshuai.xi MS_HDMI_COLOR_UNKNOWN = 7, ///< Unknow Color Format 362*53ee8cc1Swenshuai.xi } MS_HDMI_COLOR_FORMAT; 363*53ee8cc1Swenshuai.xi 364*53ee8cc1Swenshuai.xi /// HDMI Extended COLORIMETRY 365*53ee8cc1Swenshuai.xi typedef enum 366*53ee8cc1Swenshuai.xi { 367*53ee8cc1Swenshuai.xi MS_HDMI_EXT_COLOR_XVYCC601, ///< xvycc 601 368*53ee8cc1Swenshuai.xi MS_HDMI_EXT_COLOR_XVYCC709, ///< xvycc 709 369*53ee8cc1Swenshuai.xi MS_HDMI_EXT_COLOR_SYCC601, ///< sYCC 601 370*53ee8cc1Swenshuai.xi MS_HDMI_EXT_COLOR_ADOBEYCC601, ///< Adobe YCC 601 371*53ee8cc1Swenshuai.xi MS_HDMI_EXT_COLOR_ADOBERGB, ///< Adobe RGB 372*53ee8cc1Swenshuai.xi MS_HDMI_EXT_COLOR_BT2020YcCbcCrc, /// ITU-F BT.2020 YcCbcCrc 373*53ee8cc1Swenshuai.xi MS_HDMI_EXT_COLOR_BT2020RGBYCbCr, /// ITU-R BT.2020 RGB or YCbCr 374*53ee8cc1Swenshuai.xi MS_HDMI_EXT_COLOR_DEFAULT = MS_HDMI_EXT_COLOR_XVYCC601, ///< Default setting 375*53ee8cc1Swenshuai.xi MS_HDMI_EXT_COLOR_UNKNOWN = 7, ///< Unknow 376*53ee8cc1Swenshuai.xi } MS_HDMI_EXT_COLORIMETRY_FORMAT; 377*53ee8cc1Swenshuai.xi 378*53ee8cc1Swenshuai.xi /// HDMI Content Type 379*53ee8cc1Swenshuai.xi typedef enum 380*53ee8cc1Swenshuai.xi { 381*53ee8cc1Swenshuai.xi MS_HDMI_CONTENT_NoData = 0, // No Data. 382*53ee8cc1Swenshuai.xi MS_HDMI_CONTENT_Graphics, // Graphics(text). 383*53ee8cc1Swenshuai.xi MS_HDMI_CONTENT_Photo, // Photo type. 384*53ee8cc1Swenshuai.xi MS_HDMI_CONTENT_Cinema, // Cinema type. 385*53ee8cc1Swenshuai.xi MS_HDMI_CONTENT_Game, // Game type. 386*53ee8cc1Swenshuai.xi } MS_HDMI_CONTENT_TYPE; 387*53ee8cc1Swenshuai.xi 388*53ee8cc1Swenshuai.xi ///HDMI COLOR RANGE 389*53ee8cc1Swenshuai.xi typedef enum 390*53ee8cc1Swenshuai.xi { 391*53ee8cc1Swenshuai.xi E_HDMI_COLOR_RANGE_DEFAULT, // 392*53ee8cc1Swenshuai.xi E_HDMI_COLOR_RANGE_LIMIT, //HDMI RGB Limited Range (16-235) 393*53ee8cc1Swenshuai.xi E_HDMI_COLOR_RANGE_FULL, //HDMI Full Range (0-255) 394*53ee8cc1Swenshuai.xi E_HDMI_COLOR_RANGE_RESERVED 395*53ee8cc1Swenshuai.xi } EN_HDMI_COLOR_RANGE; 396*53ee8cc1Swenshuai.xi 397*53ee8cc1Swenshuai.xi /// HDMI Equalize Level 398*53ee8cc1Swenshuai.xi typedef enum 399*53ee8cc1Swenshuai.xi { 400*53ee8cc1Swenshuai.xi MS_HDMI_EQ_2M, ///< HDMI EQ 2M 401*53ee8cc1Swenshuai.xi MS_HDMI_EQ_10M, ///< HDMI EQ 10M 402*53ee8cc1Swenshuai.xi MS_HDMI_EQ_15M, ///< HDMI EQ 15M 403*53ee8cc1Swenshuai.xi MS_HDMI_EQ_MAX, ///< HDMI EQ MAX 404*53ee8cc1Swenshuai.xi MS_HDMI_EQ_USER_DEFINE, ///< HDMI EQ User define 405*53ee8cc1Swenshuai.xi } MS_HDMI_EQ; 406*53ee8cc1Swenshuai.xi 407*53ee8cc1Swenshuai.xi /// HDMI Packet nauber 408*53ee8cc1Swenshuai.xi typedef enum 409*53ee8cc1Swenshuai.xi { 410*53ee8cc1Swenshuai.xi PKT_MPEG = _BIT(0), ///< Pactet[0] 411*53ee8cc1Swenshuai.xi PKT_AUI = _BIT(1), ///< Pactet[1] 412*53ee8cc1Swenshuai.xi PKT_SPD = _BIT(2), ///< Pactet[2] 413*53ee8cc1Swenshuai.xi PKT_AVI = _BIT(3), ///< Pactet[3] 414*53ee8cc1Swenshuai.xi PKT_GC = _BIT(4), ///< Pactet[4] 415*53ee8cc1Swenshuai.xi PKT_ASAMPLE = _BIT(5), ///< Pactet[5] 416*53ee8cc1Swenshuai.xi PKT_ACR = _BIT(6), ///< Pactet[6] 417*53ee8cc1Swenshuai.xi PKT_VS = _BIT(7), ///< Pactet[7] 418*53ee8cc1Swenshuai.xi PKT_NULL = _BIT(8), ///< Pactet[8] 419*53ee8cc1Swenshuai.xi PKT_ISRC2 = _BIT(9), ///< Pactet[9] 420*53ee8cc1Swenshuai.xi PKT_ISRC1 = _BIT(10), ///< Pactet[10] 421*53ee8cc1Swenshuai.xi PKT_ACP = _BIT(11), ///< Pactet[11] 422*53ee8cc1Swenshuai.xi PKT_ONEBIT_AUD = _BIT(12), ///< Pactet[12] 423*53ee8cc1Swenshuai.xi PKT_GM = _BIT(13), ///< Pactet[13] 424*53ee8cc1Swenshuai.xi PKT_HBR = _BIT(14), ///< Pactet[14] 425*53ee8cc1Swenshuai.xi PKT_VBI = _BIT(15), ///< Pactet[15] 426*53ee8cc1Swenshuai.xi PKT_HDR = _BIT(16), ///< Pactet[16] 427*53ee8cc1Swenshuai.xi PKT_RSV = _BIT(17), ///< Pactet[17] 428*53ee8cc1Swenshuai.xi PKT_EDR = _BIT(18), ///< Pactet[18] 429*53ee8cc1Swenshuai.xi }MS_HDMI_PACKET_STATE_t; 430*53ee8cc1Swenshuai.xi 431*53ee8cc1Swenshuai.xi typedef enum 432*53ee8cc1Swenshuai.xi { 433*53ee8cc1Swenshuai.xi CAPS_DVI_ADJ_70M = _BIT(0), 434*53ee8cc1Swenshuai.xi CAPS_VSYNC_END_EN = _BIT(1), 435*53ee8cc1Swenshuai.xi }MS_HDMI_FUNC_CAPS; 436*53ee8cc1Swenshuai.xi 437*53ee8cc1Swenshuai.xi /// HDMI PACKET VALUE structure 438*53ee8cc1Swenshuai.xi typedef struct __attribute__((packed)) 439*53ee8cc1Swenshuai.xi { 440*53ee8cc1Swenshuai.xi MS_U16 PKT_MPEG_VALUE; ///< MPEG packet content 441*53ee8cc1Swenshuai.xi MS_U16 PKT_AUI_VALUE; ///< AUI packet content 442*53ee8cc1Swenshuai.xi MS_U16 PKT_SPD_VALUE; ///< SPD packet content 443*53ee8cc1Swenshuai.xi MS_U16 PKT_AVI_VALUE; ///< AVI packet content 444*53ee8cc1Swenshuai.xi MS_U16 PKT_GC_VALUE; ///< GC packet content 445*53ee8cc1Swenshuai.xi MS_U16 PKT_ASAMPLE_VALUE; ///< ASAMPLE packet content 446*53ee8cc1Swenshuai.xi MS_U16 PKT_ACR_VALUE; ///< ACR packet content 447*53ee8cc1Swenshuai.xi MS_U16 PKT_VS_VALUE; ///< VS packet content 448*53ee8cc1Swenshuai.xi MS_U16 PKT_NULL_VALUE; ///< NULL packet content 449*53ee8cc1Swenshuai.xi MS_U16 PKT_ISRC2_VALUE; ///< ISRC2 packet content 450*53ee8cc1Swenshuai.xi MS_U16 PKT_ISRC1_VALUE; ///< ISRC1 packet content 451*53ee8cc1Swenshuai.xi MS_U16 PKT_ACP_VALUE; ///< ACP packet content 452*53ee8cc1Swenshuai.xi MS_U16 PKT_ONEBIT_AUD_VALUE; ///< ONE bit AUD packet content 453*53ee8cc1Swenshuai.xi }MS_HDMI_PACKET_VALUE_t; 454*53ee8cc1Swenshuai.xi 455*53ee8cc1Swenshuai.xi /// Received HDMI packet flag. 456*53ee8cc1Swenshuai.xi typedef struct __attribute__((packed)) 457*53ee8cc1Swenshuai.xi { 458*53ee8cc1Swenshuai.xi MS_U16 u16Version; /// Version. 459*53ee8cc1Swenshuai.xi MS_U16 u16Size; /// Structure size. 460*53ee8cc1Swenshuai.xi MS_BOOL bPKT_MPEG_RECEIVE; ///< MPEG packet received 461*53ee8cc1Swenshuai.xi MS_BOOL bPKT_AUI_RECEIVE; ///< AUI packet received 462*53ee8cc1Swenshuai.xi MS_BOOL bPKT_SPD_RECEIVE; ///< SPD packet received 463*53ee8cc1Swenshuai.xi MS_BOOL bPKT_AVI_RECEIVE; ///< AVI packet received 464*53ee8cc1Swenshuai.xi MS_BOOL bPKT_GC_RECEIVE; ///< GC packet received 465*53ee8cc1Swenshuai.xi MS_BOOL bPKT_ASAMPLE_RECEIVE; ///< ASAMPLE packet received 466*53ee8cc1Swenshuai.xi MS_BOOL bPKT_ACR_RECEIVE; ///< ACR packet received 467*53ee8cc1Swenshuai.xi MS_BOOL bPKT_VS_RECEIVE; ///< VS packet received 468*53ee8cc1Swenshuai.xi MS_BOOL bPKT_NULL_RECEIVE; ///< NULL packet received 469*53ee8cc1Swenshuai.xi MS_BOOL bPKT_ISRC2_RECEIVE; ///< ISRC2 packet received 470*53ee8cc1Swenshuai.xi MS_BOOL bPKT_ISRC1_RECEIVE; ///< ISRC1 packet received 471*53ee8cc1Swenshuai.xi MS_BOOL bPKT_ACP_RECEIVE; ///< ACP packet received 472*53ee8cc1Swenshuai.xi MS_BOOL bPKT_ONEBIT_AUD_RECEIVE; ///< ONE bit AUD packet received 473*53ee8cc1Swenshuai.xi MS_BOOL bPKT_GM_RECEIVE; /// <GM packet received 474*53ee8cc1Swenshuai.xi MS_BOOL bPKT_HBR_RECEIVE; /// <HBR packet received 475*53ee8cc1Swenshuai.xi MS_BOOL bPKT_VBI_RECEIVE; /// <VBIpacket received 476*53ee8cc1Swenshuai.xi MS_BOOL bPKT_HDR_RECEIVE; ///< HDR packet received 477*53ee8cc1Swenshuai.xi MS_BOOL bPKT_RSV_RECEIVE; ///< RSV packet received 478*53ee8cc1Swenshuai.xi MS_BOOL bPKT_EDR_VALID; ///< Dolby EDR packet valid 479*53ee8cc1Swenshuai.xi }MS_HDMI_EXTEND_PACKET_RECEIVE_t; 480*53ee8cc1Swenshuai.xi 481*53ee8cc1Swenshuai.xi 482*53ee8cc1Swenshuai.xi 483*53ee8cc1Swenshuai.xi typedef struct 484*53ee8cc1Swenshuai.xi { 485*53ee8cc1Swenshuai.xi MS_U8 AVMuteStatus; 486*53ee8cc1Swenshuai.xi MS_U8 AudioNotPCM; 487*53ee8cc1Swenshuai.xi MS_U8 PreAudiostatus; 488*53ee8cc1Swenshuai.xi MS_U8 ChecksumErrOrBCHParityErr; 489*53ee8cc1Swenshuai.xi MS_U8 PacketColorFormat; 490*53ee8cc1Swenshuai.xi MS_U8 AspectRatio; 491*53ee8cc1Swenshuai.xi MS_U8 AudioPacketErr; 492*53ee8cc1Swenshuai.xi MS_U8 ACPType; 493*53ee8cc1Swenshuai.xi } MS_HDMI_PACKET_STATUS_t; 494*53ee8cc1Swenshuai.xi 495*53ee8cc1Swenshuai.xi 496*53ee8cc1Swenshuai.xi typedef struct 497*53ee8cc1Swenshuai.xi { 498*53ee8cc1Swenshuai.xi MS_HDMI_PACKET_VALUE_t enPKT_Value; 499*53ee8cc1Swenshuai.xi MS_HDMI_PACKET_STATUS_t enPKT_Status; 500*53ee8cc1Swenshuai.xi } HDMI_PACKET_INFO_t, *P_HDMI_PACKET_INFO_t; 501*53ee8cc1Swenshuai.xi 502*53ee8cc1Swenshuai.xi /// HDCP STATUS INFO structure 503*53ee8cc1Swenshuai.xi typedef struct __attribute__((packed)) 504*53ee8cc1Swenshuai.xi { 505*53ee8cc1Swenshuai.xi MS_BOOL b_St_HDMI_Mode; ///> HDCP_STATUS[0] & BIT0 506*53ee8cc1Swenshuai.xi MS_BOOL b_St_Reserve_1; ///> (HDCP_STATUS[0] & BIT1)>>1 507*53ee8cc1Swenshuai.xi MS_BOOL b_St_HDCP_Ver; ///> (HDCP_STATUS[0] & BIT2)>>2 508*53ee8cc1Swenshuai.xi MS_BOOL b_St_AVMute; ///> (HDCP_STATUS[0] & BIT3)>>3 509*53ee8cc1Swenshuai.xi MS_BOOL b_St_ENC_En; ///> (HDCP_STATUS[0] & BIT4)>>4 510*53ee8cc1Swenshuai.xi MS_BOOL b_St_AKsv_Rcv; ///> (HDCP_STATUS[0] & BIT5)>>5 511*53ee8cc1Swenshuai.xi MS_BOOL b_St_ENC_Dis; ///> (HDCP_STATUS[0] & BIT6)>>6 512*53ee8cc1Swenshuai.xi MS_BOOL b_St_Reserve_7; ///> (HDCP_STATUS[0] & BIT7)>>7 513*53ee8cc1Swenshuai.xi }MS_HDCP_STATUS_INFO_t; 514*53ee8cc1Swenshuai.xi 515*53ee8cc1Swenshuai.xi /// HDMI Black Level 516*53ee8cc1Swenshuai.xi typedef enum 517*53ee8cc1Swenshuai.xi { 518*53ee8cc1Swenshuai.xi E_BLACK_LEVEL_LOW = 0, ///> HDMI black level low 519*53ee8cc1Swenshuai.xi E_BLACK_LEVEL_HIGH, ///> HDMI black level high 520*53ee8cc1Swenshuai.xi } BLACK_LEVEL; 521*53ee8cc1Swenshuai.xi 522*53ee8cc1Swenshuai.xi /// VGA/DVI/HDMI EDID 523*53ee8cc1Swenshuai.xi typedef enum 524*53ee8cc1Swenshuai.xi { 525*53ee8cc1Swenshuai.xi E_XC_PROG_DVI0_EDID = 0x00, 526*53ee8cc1Swenshuai.xi E_XC_PROG_DVI1_EDID = 0x01, 527*53ee8cc1Swenshuai.xi E_XC_PROG_DVI2_EDID = 0x02, 528*53ee8cc1Swenshuai.xi E_XC_PROG_DVI3_EDID = 0x03, 529*53ee8cc1Swenshuai.xi E_XC_PROG_VGA_EDID = 0x10, 530*53ee8cc1Swenshuai.xi } E_XC_DDCRAM_PROG_TYPE; 531*53ee8cc1Swenshuai.xi 532*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED 533*53ee8cc1Swenshuai.xi { 534*53ee8cc1Swenshuai.xi MS_U8 *EDID; ///< customer EDID 535*53ee8cc1Swenshuai.xi MS_U16 u16EDIDSize; ///< 128 for VGA/DVI , 256 for HDMI 536*53ee8cc1Swenshuai.xi E_XC_DDCRAM_PROG_TYPE eDDCProgType; ///< what kind of DDCRam to program 537*53ee8cc1Swenshuai.xi 538*53ee8cc1Swenshuai.xi MS_U16 u16CECPhyAddr; ///< if only 1 Digital DDCRam (get this information from MApi_XC_GetInfo()), you need to specify CEC physical address here 539*53ee8cc1Swenshuai.xi MS_U8 u8CECPhyAddrIdxL; ///< start point of CEC physical address (low byte) in EDID 540*53ee8cc1Swenshuai.xi MS_U8 u8CECPhyAddrIdxH; ///< start point of CEC physical address (high byte) in EDID 541*53ee8cc1Swenshuai.xi } XC_DDCRAM_PROG_INFO; 542*53ee8cc1Swenshuai.xi 543*53ee8cc1Swenshuai.xi ////===========================>>HDCP 544*53ee8cc1Swenshuai.xi 545*53ee8cc1Swenshuai.xi ///HDCP polling status 546*53ee8cc1Swenshuai.xi typedef struct 547*53ee8cc1Swenshuai.xi { 548*53ee8cc1Swenshuai.xi MS_BOOL bHPD_OK; ///< HPD OK 549*53ee8cc1Swenshuai.xi MS_U16 u16HPD_Counter; ///< HPD times counter 550*53ee8cc1Swenshuai.xi MS_U16 u16HDCP_KeyCounter; /// > HDCP key number 551*53ee8cc1Swenshuai.xi MS_U16 u16HDCP_KeyChkSum; ///> HDCP key check sum 552*53ee8cc1Swenshuai.xi MS_BOOL bIsPullHighHPD; ///> HPD is high or not 553*53ee8cc1Swenshuai.xi MS_U8 u8BKSV[5]; ///> BKSV 554*53ee8cc1Swenshuai.xi 555*53ee8cc1Swenshuai.xi } HDCP_POLLING_STATUS_t; 556*53ee8cc1Swenshuai.xi 557*53ee8cc1Swenshuai.xi /** 558*53ee8cc1Swenshuai.xi * The return value for HDMI fuction. 559*53ee8cc1Swenshuai.xi */ 560*53ee8cc1Swenshuai.xi typedef enum 561*53ee8cc1Swenshuai.xi { 562*53ee8cc1Swenshuai.xi /// fail 563*53ee8cc1Swenshuai.xi E_HDMI_RET_FAIL = 0, 564*53ee8cc1Swenshuai.xi /// success 565*53ee8cc1Swenshuai.xi E_HDMI_RET_OK, 566*53ee8cc1Swenshuai.xi } HDMI_Ret_Value; 567*53ee8cc1Swenshuai.xi 568*53ee8cc1Swenshuai.xi 569*53ee8cc1Swenshuai.xi // HDMI v1.4 new feature - T8 and T9 570*53ee8cc1Swenshuai.xi typedef enum 571*53ee8cc1Swenshuai.xi { 572*53ee8cc1Swenshuai.xi E_HDMI_NO_ADDITIONAL_FORMAT, // 000 573*53ee8cc1Swenshuai.xi E_HDMI_4Kx2K_FORMAT, // 001 574*53ee8cc1Swenshuai.xi E_HDMI_3D_FORMAT, // 010 575*53ee8cc1Swenshuai.xi E_HDMI_RESERVED, // 011 ~ 111 576*53ee8cc1Swenshuai.xi E_HDMI_NA // Not available 577*53ee8cc1Swenshuai.xi } E_HDMI_ADDITIONAL_VIDEO_FORMAT; 578*53ee8cc1Swenshuai.xi 579*53ee8cc1Swenshuai.xi typedef enum 580*53ee8cc1Swenshuai.xi { 581*53ee8cc1Swenshuai.xi E_VIC_4Kx2K_30Hz = 0x01, // 1920(x2)x1080(x2) @ 29.97/30Hz 582*53ee8cc1Swenshuai.xi E_VIC_4Kx2K_25Hz = 0x02, // 1920(x2)x1080(x2) @ 25Hz 583*53ee8cc1Swenshuai.xi E_VIC_4Kx2K_24Hz = 0x03, // 1920(x2)x1080(x2) @ 23.976/24Hz 584*53ee8cc1Swenshuai.xi E_VIC_4Kx2K_24Hz_SMPTE = 0x04, // 2048(x2)x1080(x2) @ 24Hz 585*53ee8cc1Swenshuai.xi E_VIC_RESERVED, // 0x00, 0x05 ~ 0xFF 586*53ee8cc1Swenshuai.xi E_VIC_NA // Not available 587*53ee8cc1Swenshuai.xi } E_HDMI_VIC_4Kx2K_CODE; 588*53ee8cc1Swenshuai.xi 589*53ee8cc1Swenshuai.xi typedef enum 590*53ee8cc1Swenshuai.xi { 591*53ee8cc1Swenshuai.xi E_3D_EXT_DATA_HOR_SUB_SAMPL_0, //0000 592*53ee8cc1Swenshuai.xi E_3D_EXT_DATA_HOR_SUB_SAMPL_1, //0001 593*53ee8cc1Swenshuai.xi E_3D_EXT_DATA_HOR_SUB_SAMPL_2, //0010 594*53ee8cc1Swenshuai.xi E_3D_EXT_DATA_HOR_SUB_SAMPL_3, //0011 595*53ee8cc1Swenshuai.xi E_3D_EXT_DATA_QUINCUNX_MATRIX_0, //0100 596*53ee8cc1Swenshuai.xi E_3D_EXT_DATA_QUINCUNX_MATRIX_1, //0101 597*53ee8cc1Swenshuai.xi E_3D_EXT_DATA_QUINCUNX_MATRIX_2, //0110 598*53ee8cc1Swenshuai.xi E_3D_EXT_DATA_QUINCUNX_MATRIX_3, //0111 599*53ee8cc1Swenshuai.xi E_3D_EXT_DATA_RESERVE, //1000 ~ 1111 600*53ee8cc1Swenshuai.xi E_3D_EXT_DATA_MODE_MAX, 601*53ee8cc1Swenshuai.xi } E_HDMI_3D_EXT_DATA_T; 602*53ee8cc1Swenshuai.xi 603*53ee8cc1Swenshuai.xi typedef enum 604*53ee8cc1Swenshuai.xi { 605*53ee8cc1Swenshuai.xi E_3D_META_DATA_PARALLAX_ISO23002_3, //0000 606*53ee8cc1Swenshuai.xi E_3D_META_DATA_RESERVE, //001 ~ 1111 607*53ee8cc1Swenshuai.xi E_3D_META_DATA_MAX, 608*53ee8cc1Swenshuai.xi } E_HDMI_3D_META_DATA_TYPE; 609*53ee8cc1Swenshuai.xi 610*53ee8cc1Swenshuai.xi typedef struct 611*53ee8cc1Swenshuai.xi { 612*53ee8cc1Swenshuai.xi MS_BOOL bImmeswitchSupport; 613*53ee8cc1Swenshuai.xi MS_U8 ucMHLSupportPath; 614*53ee8cc1Swenshuai.xi } stHDMI_INITIAL_TABLE; 615*53ee8cc1Swenshuai.xi 616*53ee8cc1Swenshuai.xi typedef struct DLL_PACKED 617*53ee8cc1Swenshuai.xi { 618*53ee8cc1Swenshuai.xi MS_BOOL b3D_Meta_Present; 619*53ee8cc1Swenshuai.xi E_HDMI_3D_META_DATA_TYPE t3D_Metadata_Type; 620*53ee8cc1Swenshuai.xi MS_U8 u83D_Metadata_Length; 621*53ee8cc1Swenshuai.xi MS_U8 u83D_Metadata[23]; // Maximum length of VS is 31 - 8 = 23 622*53ee8cc1Swenshuai.xi } sHDMI_3D_META_FIELD; 623*53ee8cc1Swenshuai.xi 624*53ee8cc1Swenshuai.xi /////////// HDCP22 ///////////////// 625*53ee8cc1Swenshuai.xi typedef enum 626*53ee8cc1Swenshuai.xi { 627*53ee8cc1Swenshuai.xi E_HDCP22_IF_HDMI, //0x00 628*53ee8cc1Swenshuai.xi E_HDCP22_IF_MIRACAST, //0x01 629*53ee8cc1Swenshuai.xi //TBD 630*53ee8cc1Swenshuai.xi } E_HDCP22_PORT_TYPE; 631*53ee8cc1Swenshuai.xi 632*53ee8cc1Swenshuai.xi typedef enum 633*53ee8cc1Swenshuai.xi { 634*53ee8cc1Swenshuai.xi E_HDCP_NO_ENCRYPTION = 0, //0x00 635*53ee8cc1Swenshuai.xi E_HDCP_1_4, //0x01 636*53ee8cc1Swenshuai.xi E_HDCP_2_2, //0x02 637*53ee8cc1Swenshuai.xi }E_HDMI_HDCP_STATE; 638*53ee8cc1Swenshuai.xi 639*53ee8cc1Swenshuai.xi typedef enum 640*53ee8cc1Swenshuai.xi { 641*53ee8cc1Swenshuai.xi E_HDCP_NOT_ENCRYPTION = 0, //0x00 642*53ee8cc1Swenshuai.xi E_HDCP_1_4_ENCRYPTION, //0x01 643*53ee8cc1Swenshuai.xi E_HDCP_2_2_ENCRYPTION, //0x02 644*53ee8cc1Swenshuai.xi }E_HDMI_HDCP_ENCRYPTION_STATE; 645*53ee8cc1Swenshuai.xi 646*53ee8cc1Swenshuai.xi /////////// HDR metadata ///////////////// 647*53ee8cc1Swenshuai.xi typedef struct __attribute__((packed)) 648*53ee8cc1Swenshuai.xi { 649*53ee8cc1Swenshuai.xi MS_U16 u16Version; /// Version. 650*53ee8cc1Swenshuai.xi MS_U16 u16Size; /// Structure size. 651*53ee8cc1Swenshuai.xi MS_U8 u8EOTF; // 0:SDR gamma, 1:HDR gamma, 2:SMPTE ST2084, 3:Future EOTF, 4-7:Reserved 652*53ee8cc1Swenshuai.xi MS_U8 u8Static_Metadata_ID; // 0:Static Metadata Type 1, 1-7:Reserved for future use 653*53ee8cc1Swenshuai.xi MS_U16 u16Display_Primaries_X[3]; // display_primaries_x 654*53ee8cc1Swenshuai.xi MS_U16 u16Display_Primaries_Y[3]; // display_primaries_x 655*53ee8cc1Swenshuai.xi MS_U16 u16White_Point_X; // display primaries Wx 656*53ee8cc1Swenshuai.xi MS_U16 u16White_Point_Y; // display primaries Wy 657*53ee8cc1Swenshuai.xi MS_U16 u16Max_Display_Mastering_Luminance; // max display mastering luminance 658*53ee8cc1Swenshuai.xi MS_U16 u16Min_Display_Mastering_Luminance; // min display mastering luminance 659*53ee8cc1Swenshuai.xi MS_U16 u16Maximum_Content_Light_Level; // maximum content light level 660*53ee8cc1Swenshuai.xi MS_U16 u16Maximum_Frame_Average_Light_Level; // maximum frame-average light level 661*53ee8cc1Swenshuai.xi } sHDR_METADATA; 662*53ee8cc1Swenshuai.xi 663*53ee8cc1Swenshuai.xi 664*53ee8cc1Swenshuai.xi // HDMI Control structure 665*53ee8cc1Swenshuai.xi /** 666*53ee8cc1Swenshuai.xi * Switch VSDB to HDR packet control parameters. 667*53ee8cc1Swenshuai.xi */ 668*53ee8cc1Swenshuai.xi typedef struct __attribute__((packed)) 669*53ee8cc1Swenshuai.xi { 670*53ee8cc1Swenshuai.xi MS_BOOL bEnableHDR; 671*53ee8cc1Swenshuai.xi } MS_HDMI_Switch_VSDB_to_HDR_Parameters; 672*53ee8cc1Swenshuai.xi 673*53ee8cc1Swenshuai.xi /** 674*53ee8cc1Swenshuai.xi * HDR info-frame get control parameters. 675*53ee8cc1Swenshuai.xi */ 676*53ee8cc1Swenshuai.xi typedef struct __attribute__((packed)) 677*53ee8cc1Swenshuai.xi { 678*53ee8cc1Swenshuai.xi sHDR_METADATA *pstHDRMetadata; 679*53ee8cc1Swenshuai.xi } MS_HDMI_HDR_InfoFrame_Get_Parameters; 680*53ee8cc1Swenshuai.xi 681*53ee8cc1Swenshuai.xi /** 682*53ee8cc1Swenshuai.xi * Extend packet receive get control parameters. 683*53ee8cc1Swenshuai.xi */ 684*53ee8cc1Swenshuai.xi typedef struct __attribute__((packed)) 685*53ee8cc1Swenshuai.xi { 686*53ee8cc1Swenshuai.xi MS_BOOL bEnable; 687*53ee8cc1Swenshuai.xi MS_HDMI_EXTEND_PACKET_RECEIVE_t *pstPacketReceive; 688*53ee8cc1Swenshuai.xi } MS_HDMI_Extend_Packet_Receive_Get_Parameters; 689*53ee8cc1Swenshuai.xi 690*53ee8cc1Swenshuai.xi typedef struct 691*53ee8cc1Swenshuai.xi { 692*53ee8cc1Swenshuai.xi E_MUX_INPUTPORT enInputPortType; 693*53ee8cc1Swenshuai.xi MS_U8 ucHDCPState; 694*53ee8cc1Swenshuai.xi } stCMD_HDMI_CHECK_HDCP_STATE; 695*53ee8cc1Swenshuai.xi 696*53ee8cc1Swenshuai.xi /************************ HDCP Repeater ************************/ 697*53ee8cc1Swenshuai.xi typedef struct 698*53ee8cc1Swenshuai.xi { 699*53ee8cc1Swenshuai.xi E_MUX_INPUTPORT enInputPortType; 700*53ee8cc1Swenshuai.xi MS_U8 ucOffset; 701*53ee8cc1Swenshuai.xi MS_U8 ucData; 702*53ee8cc1Swenshuai.xi } stCMD_HDCP_WRITE_X74; 703*53ee8cc1Swenshuai.xi 704*53ee8cc1Swenshuai.xi typedef struct 705*53ee8cc1Swenshuai.xi { 706*53ee8cc1Swenshuai.xi E_MUX_INPUTPORT enInputPortType; 707*53ee8cc1Swenshuai.xi MS_U8 ucOffset; 708*53ee8cc1Swenshuai.xi MS_U8 ucRetData; 709*53ee8cc1Swenshuai.xi } stCMD_HDCP_READ_X74; 710*53ee8cc1Swenshuai.xi 711*53ee8cc1Swenshuai.xi typedef struct 712*53ee8cc1Swenshuai.xi { 713*53ee8cc1Swenshuai.xi E_MUX_INPUTPORT enInputPortType; 714*53ee8cc1Swenshuai.xi MS_BOOL bIsRepeater; 715*53ee8cc1Swenshuai.xi } stCMD_HDCP_SET_REPEATER; 716*53ee8cc1Swenshuai.xi 717*53ee8cc1Swenshuai.xi typedef struct 718*53ee8cc1Swenshuai.xi { 719*53ee8cc1Swenshuai.xi E_MUX_INPUTPORT enInputPortType; 720*53ee8cc1Swenshuai.xi MS_U16 usBstatus; 721*53ee8cc1Swenshuai.xi } stCMD_HDCP_SET_BSTATUS; 722*53ee8cc1Swenshuai.xi 723*53ee8cc1Swenshuai.xi typedef struct 724*53ee8cc1Swenshuai.xi { 725*53ee8cc1Swenshuai.xi E_MUX_INPUTPORT enInputPortType; 726*53ee8cc1Swenshuai.xi MS_BOOL bHDMIMode; 727*53ee8cc1Swenshuai.xi } stCMD_HDCP_SET_HDMI_MODE; 728*53ee8cc1Swenshuai.xi 729*53ee8cc1Swenshuai.xi typedef struct 730*53ee8cc1Swenshuai.xi { 731*53ee8cc1Swenshuai.xi E_MUX_INPUTPORT enInputPortType; 732*53ee8cc1Swenshuai.xi MS_U8 ucRetIntStatus; 733*53ee8cc1Swenshuai.xi } stCMD_HDCP_GET_INTERRUPT_STATUS; 734*53ee8cc1Swenshuai.xi 735*53ee8cc1Swenshuai.xi typedef struct 736*53ee8cc1Swenshuai.xi { 737*53ee8cc1Swenshuai.xi E_MUX_INPUTPORT enInputPortType; 738*53ee8cc1Swenshuai.xi MS_U8* pucKSV; 739*53ee8cc1Swenshuai.xi MS_U32 ulLen; 740*53ee8cc1Swenshuai.xi } stCMD_HDCP_WRITE_KSV_LIST; 741*53ee8cc1Swenshuai.xi 742*53ee8cc1Swenshuai.xi typedef struct 743*53ee8cc1Swenshuai.xi { 744*53ee8cc1Swenshuai.xi E_MUX_INPUTPORT enInputPortType; 745*53ee8cc1Swenshuai.xi MS_U8* pucVPrime; 746*53ee8cc1Swenshuai.xi } stCMD_HDCP_SET_VPRIME; 747*53ee8cc1Swenshuai.xi /************************ HDCP Repeater ************************/ 748*53ee8cc1Swenshuai.xi 749*53ee8cc1Swenshuai.xi typedef struct 750*53ee8cc1Swenshuai.xi { 751*53ee8cc1Swenshuai.xi E_MUX_INPUTPORT enInputPortType; 752*53ee8cc1Swenshuai.xi MS_U8 ucHDCPENCState; 753*53ee8cc1Swenshuai.xi } stCMD_HDMI_CHECK_HDCP_ENC_STATE; 754*53ee8cc1Swenshuai.xi 755*53ee8cc1Swenshuai.xi typedef enum 756*53ee8cc1Swenshuai.xi { 757*53ee8cc1Swenshuai.xi E_HDMI_GET_HDE, 758*53ee8cc1Swenshuai.xi E_HDMI_GET_VDE, 759*53ee8cc1Swenshuai.xi E_HDMI_GET_HTT, 760*53ee8cc1Swenshuai.xi E_HDMI_GET_VTT, 761*53ee8cc1Swenshuai.xi } E_HDMI_GET_DATA_INFO; 762*53ee8cc1Swenshuai.xi 763*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 764*53ee8cc1Swenshuai.xi // Function and Variable 765*53ee8cc1Swenshuai.xi //------------------------------------------------------------------------------------------------- 766*53ee8cc1Swenshuai.xi 767*53ee8cc1Swenshuai.xi //HDMI/DVI 768*53ee8cc1Swenshuai.xi INTERFACE HDMI_POLLING_STATUS_t g_HdmiPollingStatus; 769*53ee8cc1Swenshuai.xi 770*53ee8cc1Swenshuai.xi //HDCP 771*53ee8cc1Swenshuai.xi INTERFACE HDCP_POLLING_STATUS_t g_HdcpPollingStatus; 772*53ee8cc1Swenshuai.xi 773*53ee8cc1Swenshuai.xi INTERFACE MS_U16 g_AVMUTEMissingCounter; 774*53ee8cc1Swenshuai.xi INTERFACE MS_U16 g_AVIMissingCounter; 775*53ee8cc1Swenshuai.xi INTERFACE MS_U16 g_ACPMissingCounter; 776*53ee8cc1Swenshuai.xi 777*53ee8cc1Swenshuai.xi #ifdef DVI_NEW_Patch 778*53ee8cc1Swenshuai.xi // 20081226 - DVI+HDCP snow noise patch - start ... 779*53ee8cc1Swenshuai.xi INTERFACE MS_U16 g_DVI70MhzPollingCounter; 780*53ee8cc1Swenshuai.xi INTERFACE MS_U8 g_DVI70MhzUnstableCounter; 781*53ee8cc1Swenshuai.xi INTERFACE MS_BOOL g_bDVILess70MHz; 782*53ee8cc1Swenshuai.xi // 20081226 - DVI+HDCP snow noise patch - end ... 783*53ee8cc1Swenshuai.xi #endif 784*53ee8cc1Swenshuai.xi 785*53ee8cc1Swenshuai.xi 786*53ee8cc1Swenshuai.xi //HDMI 787*53ee8cc1Swenshuai.xi INTERFACE MS_U16 MDrv_HDMI_Func_Caps(void); 788*53ee8cc1Swenshuai.xi INTERFACE void MDrv_HDMI_init( void ); 789*53ee8cc1Swenshuai.xi INTERFACE void MDrv_HDMI_Exit( void ); 790*53ee8cc1Swenshuai.xi INTERFACE void MDrv_HDMI_pkt_reset( HDMI_REST_t breset ); 791*53ee8cc1Swenshuai.xi INTERFACE void MDrv_HDMI_pullhpd( MS_BOOL bHighLow, E_MUX_INPUTPORT enInputPortType, MS_BOOL bInverse); 792*53ee8cc1Swenshuai.xi INTERFACE MS_U16 MDrv_HDMI_GC_Info(HDMI_GControl_INFO_t gcontrol); 793*53ee8cc1Swenshuai.xi INTERFACE MS_HDMI_PACKET_VALUE_t MDrv_HDMI_Packet_Received(MS_BOOL bEnable); 794*53ee8cc1Swenshuai.xi INTERFACE MS_HDMI_COLOR_FORMAT MDrv_HDMI_Get_ColorFormat(void); 795*53ee8cc1Swenshuai.xi INTERFACE EN_HDMI_COLOR_RANGE MDrv_HDMI_Get_ColorRange(void); 796*53ee8cc1Swenshuai.xi INTERFACE MS_HDMI_CONTENT_TYPE MDrv_HDMI_Get_Content_Type(void); 797*53ee8cc1Swenshuai.xi INTERFACE MS_HDMI_EXT_COLORIMETRY_FORMAT MDrv_HDMI_Get_ExtColorimetry(void); 798*53ee8cc1Swenshuai.xi 799*53ee8cc1Swenshuai.xi INTERFACE void MDrv_HDMI_Set_EQ(MS_HDMI_EQ enEq, MS_U8 u8EQValue); 800*53ee8cc1Swenshuai.xi INTERFACE MS_BOOL MDrv_HDMI_Set_EQ_To_Port(MS_HDMI_EQ enEq, MS_U8 u8EQValue, E_MUX_INPUTPORT enInputPortType); 801*53ee8cc1Swenshuai.xi INTERFACE void MDrv_HDMI_Audio_MUTE_Enable(MS_U16 u16MuteEvent, MS_U16 u16MuteMask); 802*53ee8cc1Swenshuai.xi INTERFACE void MDrv_HDMI_Audio_Status_Clear(void); 803*53ee8cc1Swenshuai.xi 804*53ee8cc1Swenshuai.xi INTERFACE MS_HDMI_AR_TYPE MDrv_HDMI_Get_AspectRatio(MS_BOOL bEn_PAR, MS_BOOL bEn_AFAR); 805*53ee8cc1Swenshuai.xi INTERFACE MS_HDMI_AR_TYPE MDrv_HDMI_Get_ActiveFormat_AspectRatio(MS_BOOL bEn_AFAR); 806*53ee8cc1Swenshuai.xi INTERFACE EN_AVI_INFOFRAME_VERSION MDrv_HDMI_Get_AVIInfoFrameVer(void); 807*53ee8cc1Swenshuai.xi 808*53ee8cc1Swenshuai.xi INTERFACE MS_U8 MDrv_HDMI_err_status_update(MS_U8 u8value, MS_BOOL bread); 809*53ee8cc1Swenshuai.xi INTERFACE void MDrv_HDMI_Get_PollingStatus(HDMI_POLLING_STATUS_t **pStatus); 810*53ee8cc1Swenshuai.xi INTERFACE MS_BOOL MDrv_HDMI_IsHDMI_Mode(void); 811*53ee8cc1Swenshuai.xi 812*53ee8cc1Swenshuai.xi INTERFACE void MDrv_HDMI_Get_MID_info(MS_U8 * pu8ManufactorData); 813*53ee8cc1Swenshuai.xi INTERFACE MS_BOOL MDrv_HDMI_get_packet_value(MS_HDMI_PACKET_STATE_t u8state, MS_U8 u8byte_idx, MS_U8 *pValue); 814*53ee8cc1Swenshuai.xi 815*53ee8cc1Swenshuai.xi //DVI 816*53ee8cc1Swenshuai.xi INTERFACE MS_U16 MDrv_DVI_ChannelPhaseStatus( MS_DVI_CHANNEL_TYPE u8Channel); 817*53ee8cc1Swenshuai.xi INTERFACE void MDrv_DVI_HF_adjust( void ); 818*53ee8cc1Swenshuai.xi INTERFACE void MDrv_DVI_SoftwareReset( MS_U16 u16Reset ); 819*53ee8cc1Swenshuai.xi INTERFACE void mdrv_dvi_reset(void); 820*53ee8cc1Swenshuai.xi INTERFACE void MDrv_DVI_ClkPullLow(MS_BOOL bPullLow, E_MUX_INPUTPORT enInputPortType); 821*53ee8cc1Swenshuai.xi INTERFACE void MDrv_DVI_SwitchSrc(E_MUX_INPUTPORT enInputPortType); 822*53ee8cc1Swenshuai.xi INTERFACE MS_BOOL MDrv_HDMI_SetForClockLessThan70Mhz( E_MUX_INPUTPORT InputSourceType ); 823*53ee8cc1Swenshuai.xi INTERFACE void MDrv_HDMI_dvi_adjust( MS_BOOL bClockLessThan70MHz); 824*53ee8cc1Swenshuai.xi INTERFACE void MDrv_HDMI_SetUpdatePhaseLineCount(INPUT_SOURCE_TYPE_t enInputSourceType); 825*53ee8cc1Swenshuai.xi INTERFACE MS_U16 MDrv_HDMI_GetTMDSFreq(void); 826*53ee8cc1Swenshuai.xi 827*53ee8cc1Swenshuai.xi 828*53ee8cc1Swenshuai.xi //HDCP 829*53ee8cc1Swenshuai.xi INTERFACE void MDrv_HDCP_Enable(MS_BOOL bEnable); 830*53ee8cc1Swenshuai.xi INTERFACE MS_BOOL MDrv_HDMI_SetHdcpEnable(E_MUX_INPUTPORT enInputPortType,MS_BOOL bEnable); 831*53ee8cc1Swenshuai.xi INTERFACE void MDrv_HDCP_ClearStatus( void ); 832*53ee8cc1Swenshuai.xi INTERFACE void MDrv_HDCP_initproductionkey( MS_U8 * pu8HdcpKeyData ); 833*53ee8cc1Swenshuai.xi INTERFACE MS_HDCP_STATUS_INFO_t* MDrv_HDCP_GetStatus(void ); 834*53ee8cc1Swenshuai.xi INTERFACE void MDrv_HDCP_Vsync_end_en(MS_BOOL bStable); 835*53ee8cc1Swenshuai.xi 836*53ee8cc1Swenshuai.xi //Audio 837*53ee8cc1Swenshuai.xi INTERFACE void MDrv_HDMI_audio_output( MS_BOOL bEnable ); 838*53ee8cc1Swenshuai.xi INTERFACE MS_U8 MDrv_HDMI_audio_cp_hdr_info(void); 839*53ee8cc1Swenshuai.xi INTERFACE MS_U8 MDrv_HDMI_audio_channel_status(MS_U8 u8byte); 840*53ee8cc1Swenshuai.xi 841*53ee8cc1Swenshuai.xi 842*53ee8cc1Swenshuai.xi // Debug 843*53ee8cc1Swenshuai.xi /** 844*53ee8cc1Swenshuai.xi * HDMI Info 845*53ee8cc1Swenshuai.xi */ 846*53ee8cc1Swenshuai.xi typedef struct __attribute__((packed)) 847*53ee8cc1Swenshuai.xi { 848*53ee8cc1Swenshuai.xi MS_U8 u8SupportPorts; 849*53ee8cc1Swenshuai.xi }MS_HDMI_INFO; 850*53ee8cc1Swenshuai.xi 851*53ee8cc1Swenshuai.xi /** 852*53ee8cc1Swenshuai.xi * HDMI Status 853*53ee8cc1Swenshuai.xi */ 854*53ee8cc1Swenshuai.xi typedef struct __attribute__((packed)) 855*53ee8cc1Swenshuai.xi { 856*53ee8cc1Swenshuai.xi MS_BOOL bIsInitialized; 857*53ee8cc1Swenshuai.xi MS_BOOL bIsRunning; 858*53ee8cc1Swenshuai.xi }MS_HDMI_Status; 859*53ee8cc1Swenshuai.xi 860*53ee8cc1Swenshuai.xi INTERFACE HDMI_Ret_Value MDrv_HDMI_GetLibVer(const MSIF_Version **ppVersion); ///< Get version (without Mutex protect) 861*53ee8cc1Swenshuai.xi INTERFACE HDMI_Ret_Value MDrv_HDMI_GetInfo(MS_HDMI_INFO *pInfo); 862*53ee8cc1Swenshuai.xi INTERFACE HDMI_Ret_Value MDrv_HDMI_GetStatus(MS_HDMI_Status *pStatus); 863*53ee8cc1Swenshuai.xi INTERFACE MS_BOOL MDrv_HDMI_Get_AVIInfoActiveInfoPresent(void); 864*53ee8cc1Swenshuai.xi 865*53ee8cc1Swenshuai.xi // DDC Ram 866*53ee8cc1Swenshuai.xi INTERFACE void MDrv_HDMI_READ_DDCRAM(XC_DDCRAM_PROG_INFO *pstDDCRam_Info, MS_U32 u32SizeOfInfo); 867*53ee8cc1Swenshuai.xi INTERFACE void MDrv_HDMI_PROG_DDCRAM(XC_DDCRAM_PROG_INFO *pstDDCRam_Info, MS_U32 u32SizeOfInfo); 868*53ee8cc1Swenshuai.xi INTERFACE MS_U8 MDrv_HDMI_Get_Pixel_Repetition(void); 869*53ee8cc1Swenshuai.xi 870*53ee8cc1Swenshuai.xi //#if defined(CHIP_T8) || defined(CHIP_J2) // HDMI 1.4 new feature 871*53ee8cc1Swenshuai.xi INTERFACE void MDrv_HDMI_3D_4Kx2K_Process(void); 872*53ee8cc1Swenshuai.xi INTERFACE void MDrv_HDMI_AVG_ScaleringDown(MS_BOOL bTrue); 873*53ee8cc1Swenshuai.xi INTERFACE MS_BOOL MDrv_HDMI_Check4K2K(void); 874*53ee8cc1Swenshuai.xi INTERFACE E_HDMI_ADDITIONAL_VIDEO_FORMAT MDrv_HDMI_Check_Additional_Format(void); 875*53ee8cc1Swenshuai.xi INTERFACE E_XC_3D_INPUT_MODE MDrv_HDMI_Get_3D_Structure(void); 876*53ee8cc1Swenshuai.xi INTERFACE E_HDMI_3D_EXT_DATA_T MDrv_HDMI_Get_3D_Ext_Data(void); 877*53ee8cc1Swenshuai.xi INTERFACE void MDrv_HDMI_Get_3D_Meta_Field(sHDMI_3D_META_FIELD *pdata); 878*53ee8cc1Swenshuai.xi INTERFACE MS_U8 MDrv_HDMI_Get_VIC_Code(void); 879*53ee8cc1Swenshuai.xi INTERFACE E_HDMI_VIC_4Kx2K_CODE MDrv_HDMI_Get_4Kx2K_VIC_Code(void); 880*53ee8cc1Swenshuai.xi // HDMI ARC pin control 881*53ee8cc1Swenshuai.xi INTERFACE void MDrv_HDMI_ARC_PINControl(E_MUX_INPUTPORT enInputPortType, MS_BOOL bEnable, MS_BOOL bDrivingHigh); 882*53ee8cc1Swenshuai.xi INTERFACE void MDrv_DVI_Software_Reset(E_MUX_INPUTPORT enInputPortType, MS_U16 u16Reset); 883*53ee8cc1Swenshuai.xi INTERFACE MS_BOOL MDrv_HDMI_CheckHDMI20_Setting(E_MUX_INPUTPORT enInputPortType); 884*53ee8cc1Swenshuai.xi INTERFACE void MDrv_HDMI_StablePolling(void); 885*53ee8cc1Swenshuai.xi INTERFACE MS_U8 MDrv_HDMI_GetSourceVersion(E_MUX_INPUTPORT enInputPortType); 886*53ee8cc1Swenshuai.xi INTERFACE void SYMBOL_WEAK MDrv_HDMI_Set5VDetectGPIOSelect(MS_U32 ul5VDetectGPIOIndex); 887*53ee8cc1Swenshuai.xi INTERFACE MS_BOOL SYMBOL_WEAK MDrv_HDMI_GetDEStableStatus(E_MUX_INPUTPORT enInputPortType); 888*53ee8cc1Swenshuai.xi INTERFACE MS_BOOL SYMBOL_WEAK MDrv_HDMI_CheckHDCP14(void); 889*53ee8cc1Swenshuai.xi INTERFACE E_HDMI_HDCP_STATE MDrv_HDMI_CheckHDCPState(E_MUX_INPUTPORT enInputPortType); 890*53ee8cc1Swenshuai.xi // HDMI common function. If you want to add new function, you shold modify MDrv_HDMI_Ctrl to support new feature. 891*53ee8cc1Swenshuai.xi INTERFACE MS_BOOL SYMBOL_WEAK MDrv_HDMI_Ctrl(MS_U32 u32Cmd, void *pBuf, MS_U32 u32BufSize); 892*53ee8cc1Swenshuai.xi INTERFACE MS_U16 MDrv_HDMI_GetDataInfo(E_HDMI_GET_DATA_INFO enInfo); 893*53ee8cc1Swenshuai.xi 894*53ee8cc1Swenshuai.xi //#endif 895*53ee8cc1Swenshuai.xi 896*53ee8cc1Swenshuai.xi // fast boot 897*53ee8cc1Swenshuai.xi INTERFACE MS_U32 MDrv_HDMI_SetPowerState(EN_POWER_MODE enPowerState); 898*53ee8cc1Swenshuai.xi 899*53ee8cc1Swenshuai.xi /*************************** HDCP22 ***************************/ 900*53ee8cc1Swenshuai.xi INTERFACE void MDrv_HDCP22_FillCipherKey(MS_U8 pucPortIdx, MS_U8 * pucRiv,MS_U8 * pucSessionKey); 901*53ee8cc1Swenshuai.xi INTERFACE void MDrv_HDCP22_InitCBFunc(HDCP22_Recv_CBF pCBFunc, void* pContext); 902*53ee8cc1Swenshuai.xi INTERFACE void MDrv_HDCP22_PortInit(MS_U8 ucPortIdx); 903*53ee8cc1Swenshuai.xi INTERFACE MS_BOOL MDrv_HDCP22_PollingReadDone(MS_U8 ucPortIdx); 904*53ee8cc1Swenshuai.xi INTERFACE void MDrv_HDCP22_EnableCipher(MS_U8 ucPortType, MS_U8 ucPortIdx, MS_BOOL bIsEnable); 905*53ee8cc1Swenshuai.xi INTERFACE void MDrv_HDCP22_SendMsg(MS_U8 ucPortType, MS_U8 ucPortIdx, MS_U8* pucData, MS_U32 dwDataLen, void* pDummy); 906*53ee8cc1Swenshuai.xi INTERFACE void MDrv_HDCP22_Handler(MS_U8 ucPortIdx); 907*53ee8cc1Swenshuai.xi /*************************** HDCP22 ***************************/ 908*53ee8cc1Swenshuai.xi 909*53ee8cc1Swenshuai.xi #if 0 910*53ee8cc1Swenshuai.xi INTERFACE MS_U8 u8PSDVIStableCount[4]; 911*53ee8cc1Swenshuai.xi void MDrv_HDMI_ImmeswitchPS_Handler(void); 912*53ee8cc1Swenshuai.xi void MDrv_DVI_ForceAllPortsEnterPS(void); 913*53ee8cc1Swenshuai.xi #endif 914*53ee8cc1Swenshuai.xi #undef INTERFACE 915*53ee8cc1Swenshuai.xi 916*53ee8cc1Swenshuai.xi 917*53ee8cc1Swenshuai.xi #ifdef __cplusplus 918*53ee8cc1Swenshuai.xi } 919*53ee8cc1Swenshuai.xi #endif 920*53ee8cc1Swenshuai.xi 921*53ee8cc1Swenshuai.xi #endif /* MDRV_HDMI_H */ 922*53ee8cc1Swenshuai.xi 923