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 // [mhal_hdmi.h] 96*53ee8cc1Swenshuai.xi // Date: 20081203 97*53ee8cc1Swenshuai.xi // Descriptions: Add a new layer for HW setting 98*53ee8cc1Swenshuai.xi //============================================================================== 99*53ee8cc1Swenshuai.xi #ifndef MHAL_HDMI_H 100*53ee8cc1Swenshuai.xi #define MHAL_HDMI_H 101*53ee8cc1Swenshuai.xi 102*53ee8cc1Swenshuai.xi #include "hwreg_ddc.h" 103*53ee8cc1Swenshuai.xi #include "hwreg_adc_atop.h" 104*53ee8cc1Swenshuai.xi #include "hwreg_adc_dtop.h" 105*53ee8cc1Swenshuai.xi #include "hwreg_hdcp.h" 106*53ee8cc1Swenshuai.xi #include "hwreg_hdmi.h" 107*53ee8cc1Swenshuai.xi #include "hwreg_sc.h" 108*53ee8cc1Swenshuai.xi 109*53ee8cc1Swenshuai.xi #include "drvXC_HDMI_if.h" 110*53ee8cc1Swenshuai.xi #include "apiXC.h" 111*53ee8cc1Swenshuai.xi 112*53ee8cc1Swenshuai.xi //============================================================================== 113*53ee8cc1Swenshuai.xi //============================================================================== 114*53ee8cc1Swenshuai.xi /* DDC SRAM SEL (After T3) */ 115*53ee8cc1Swenshuai.xi #define DDC_RAM_SRAM_DVI 0U 116*53ee8cc1Swenshuai.xi #define DDC_RAM_SRAM_ADC 1U 117*53ee8cc1Swenshuai.xi #define DDC_RAM_SRAM_DVI0 0U 118*53ee8cc1Swenshuai.xi #define DDC_RAM_SRAM_DVI1 1U 119*53ee8cc1Swenshuai.xi #define DDC_RAM_SRAM_DVI2 2U 120*53ee8cc1Swenshuai.xi #define DDC_RAM_SRAM_DVI3 3U 121*53ee8cc1Swenshuai.xi 122*53ee8cc1Swenshuai.xi #define DDC_OFFSET_SRAM_DVI0 0U 123*53ee8cc1Swenshuai.xi #define DDC_OFFSET_SRAM_DVI1 2U 124*53ee8cc1Swenshuai.xi #define DDC_OFFSET_SRAM_DVI2 4U 125*53ee8cc1Swenshuai.xi #define DDC_OFFSET_SRAM_DVI3 6U 126*53ee8cc1Swenshuai.xi #define DDC_OFFSET_SRAM_ADC 8U 127*53ee8cc1Swenshuai.xi 128*53ee8cc1Swenshuai.xi #define INPUT_PORT_DVI_END INPUT_PORT_DVI0 129*53ee8cc1Swenshuai.xi 130*53ee8cc1Swenshuai.xi #define ABS_MINUS(a, b) ((a > b)? (a -b): (b -a)) 131*53ee8cc1Swenshuai.xi 132*53ee8cc1Swenshuai.xi #define HDMI_GET_PORT_SELECT(a) ((MS_U8)(a - INPUT_PORT_DVI0)) 133*53ee8cc1Swenshuai.xi 134*53ee8cc1Swenshuai.xi //============================================================================== 135*53ee8cc1Swenshuai.xi //============================================================================== 136*53ee8cc1Swenshuai.xi 137*53ee8cc1Swenshuai.xi #define IRQ_DVI_CK_CHG BIT(0) //#[0] 138*53ee8cc1Swenshuai.xi #define IRQ_HDMI_MODE_CHG BIT(1) //#[1] 139*53ee8cc1Swenshuai.xi #define IRQ_SCART_ID0_CHG BIT(2) //#[2] 140*53ee8cc1Swenshuai.xi #define IRQ_SCART_ID1_CHG BIT(3) //#[3] 141*53ee8cc1Swenshuai.xi #define IRQ_SAR_DET_UPD BIT(4) //#[4] 142*53ee8cc1Swenshuai.xi #define IRQ_RESERVE (BIT(7)|BIT(6)|BIT(5)) //#[5:7] 143*53ee8cc1Swenshuai.xi #define IRQ_ALL_BIT (BIT(4)|BIT(3)|BIT(2)|BIT(1)|BIT(0)) 144*53ee8cc1Swenshuai.xi 145*53ee8cc1Swenshuai.xi #define TMDS_DIGITAL_LOCK_CNT_POWER 5U 146*53ee8cc1Swenshuai.xi #define TMDS_DIGITAL_LOSE_RANGE 3U 147*53ee8cc1Swenshuai.xi 148*53ee8cc1Swenshuai.xi #define TMDS_POWER_SWITCH_IRQ_ENABLE 0U 149*53ee8cc1Swenshuai.xi 150*53ee8cc1Swenshuai.xi #define TMDS_CLOCK_CMP_VALUE0 0x06U 151*53ee8cc1Swenshuai.xi #define TMDS_CLOCK_CMP_VALUE1 0x65U 152*53ee8cc1Swenshuai.xi 153*53ee8cc1Swenshuai.xi #define TMDS_COARSE_TUNE_14_MIN 0x11U 154*53ee8cc1Swenshuai.xi #define TMDS_COARSE_TUNE_20_MIN 0x00U 155*53ee8cc1Swenshuai.xi #define TMDS_COARSE_TUNE_20_MAX 0x1FU 156*53ee8cc1Swenshuai.xi #define TMDS_COARSE_TUNE_20_START 0x12U 157*53ee8cc1Swenshuai.xi #define TMDS_COARSE_TUNE_14_DETECT_TIME 0xFFU 158*53ee8cc1Swenshuai.xi #define TMDS_COARSE_TUNE_20_DETECT_TIME 0x50U 159*53ee8cc1Swenshuai.xi #define TMDS_COARSE_TUNE_14_AABA_NUMBER 0x50U 160*53ee8cc1Swenshuai.xi #define TMDS_COARSE_TUNE_20_AABA_NUMBER 0x19U 161*53ee8cc1Swenshuai.xi #define TMDS_FINE_TUNE_AABA_14_NUMBER 0x3FFFU 162*53ee8cc1Swenshuai.xi #define TMDS_FINE_TUNE_AABA_20_NUMBER 0x1FFFU 163*53ee8cc1Swenshuai.xi #define TMDS_FINE_TUNE_UNDER_14_THRESHOLD 0x1U 164*53ee8cc1Swenshuai.xi #define TMDS_FINE_TUNE_UNDER_20_THRESHOLD 0x1FFU 165*53ee8cc1Swenshuai.xi #define TMDS_CONTINUE_START 0xFU 166*53ee8cc1Swenshuai.xi #define TMDS_CONTINUOUS_NUMBER 0x350U 167*53ee8cc1Swenshuai.xi 168*53ee8cc1Swenshuai.xi #define HDMI_UNDER_150M_EQ_SETTING_VALUE 3U 169*53ee8cc1Swenshuai.xi #define HDMI_OVER_150M_EQ_SETTING_VALUE 7U 170*53ee8cc1Swenshuai.xi #define HDMI_EQ_14_SETTING_VALUE 14U 171*53ee8cc1Swenshuai.xi #define HDMI_EQ_20_SETTING_VALUE 0x19U 172*53ee8cc1Swenshuai.xi 173*53ee8cc1Swenshuai.xi #define HDMI_MHL_EQ_SETTING_VALUE 4U 174*53ee8cc1Swenshuai.xi 175*53ee8cc1Swenshuai.xi #define TMDS_SCDC_ACCESS_ADDERSS_A8 BIT(6) 176*53ee8cc1Swenshuai.xi 177*53ee8cc1Swenshuai.xi #define HDMI_AUTO_EQ_CHECK_INTERVAL 30U 178*53ee8cc1Swenshuai.xi 179*53ee8cc1Swenshuai.xi #define HDMI_EQ_CAL_TRIGGER_COUNT 1000U 180*53ee8cc1Swenshuai.xi #define HDMI_EQ_CAL_MEASURE_COUNT 250U 181*53ee8cc1Swenshuai.xi 182*53ee8cc1Swenshuai.xi #define TMDS_5V_DETECT_GPIO_ENABLE 1 183*53ee8cc1Swenshuai.xi 184*53ee8cc1Swenshuai.xi #define TMDS_DE_FILTER_HDMI14_VALUE 0xCU 185*53ee8cc1Swenshuai.xi #define TMDS_DE_FILTER_HDMI20_VALUE 0x5U 186*53ee8cc1Swenshuai.xi 187*53ee8cc1Swenshuai.xi #define TMDS_HDCP_WINDOW_END_VALUE 0x3U 188*53ee8cc1Swenshuai.xi #define TMDS_HDCP2_SOURCE_READ_OFFSET 130U 189*53ee8cc1Swenshuai.xi 190*53ee8cc1Swenshuai.xi #define TMDS_14_CHECK_ERROR_INTERVAL 0x1U 191*53ee8cc1Swenshuai.xi #define TMDS_14_CHECK_ERROR_TIMES 0x80U 192*53ee8cc1Swenshuai.xi #define TMDS_20_CHECK_ERROR_INTERVAL 0x1U 193*53ee8cc1Swenshuai.xi #define TMDS_20_CHECK_ERROR_TIMES 0x80U 194*53ee8cc1Swenshuai.xi #define TMDS_AUTO_EQ_PROCESS_INTERVAL 500U 195*53ee8cc1Swenshuai.xi 196*53ee8cc1Swenshuai.xi #define HDMI_DECORD_ERROR_THRESHOLD 0x8006U 197*53ee8cc1Swenshuai.xi #define HDMI_AUTO_EQ_ENABLE_THRESHOLD 140U 198*53ee8cc1Swenshuai.xi #define HDMI_CLOCK_UNSTABLE_OFFSET 2U 199*53ee8cc1Swenshuai.xi 200*53ee8cc1Swenshuai.xi #define HDMI_CHECK_SCRAMBLE_INTERVAL 20U 201*53ee8cc1Swenshuai.xi 202*53ee8cc1Swenshuai.xi typedef struct 203*53ee8cc1Swenshuai.xi { 204*53ee8cc1Swenshuai.xi MS_BOOL bNoInputFlag; 205*53ee8cc1Swenshuai.xi MS_BOOL bHDMI20Flag; 206*53ee8cc1Swenshuai.xi MS_BOOL bYUV420Flag; 207*53ee8cc1Swenshuai.xi MS_BOOL bHDMIModeFlag; 208*53ee8cc1Swenshuai.xi MS_BOOL bAutoEQEnable; 209*53ee8cc1Swenshuai.xi MS_BOOL bAutoEQRetrigger; 210*53ee8cc1Swenshuai.xi MS_BOOL bTimingStableFlag; 211*53ee8cc1Swenshuai.xi MS_BOOL bPowerOnLane; 212*53ee8cc1Swenshuai.xi MS_BOOL bIsRepeater; 213*53ee8cc1Swenshuai.xi MS_BOOL bPowerSavingFlag; 214*53ee8cc1Swenshuai.xi MS_U8 ucAutoEQState; 215*53ee8cc1Swenshuai.xi MS_U8 ucSourceVersion; 216*53ee8cc1Swenshuai.xi MS_U8 ucCheckErrorInterval; 217*53ee8cc1Swenshuai.xi MS_U8 ucAutoEQ14Mode; 218*53ee8cc1Swenshuai.xi MS_U8 ucCheckScrambleCounter; 219*53ee8cc1Swenshuai.xi MS_U8 ucHDCPState; 220*53ee8cc1Swenshuai.xi MS_U8 ucHDCPInt; 221*53ee8cc1Swenshuai.xi MS_U16 usClockCount; 222*53ee8cc1Swenshuai.xi MS_U16 usCheckErrorTimes; 223*53ee8cc1Swenshuai.xi MS_U16 usAutoEQProcCounter; 224*53ee8cc1Swenshuai.xi } stHDMI_POLLING_INFO; 225*53ee8cc1Swenshuai.xi 226*53ee8cc1Swenshuai.xi enum HDMI_AUTO_EQ_STATE_TYPE 227*53ee8cc1Swenshuai.xi { 228*53ee8cc1Swenshuai.xi HDMI_AUTO_EQ_START = 0, 229*53ee8cc1Swenshuai.xi HDMI_AUTO_EQ_WAIT_DONE, 230*53ee8cc1Swenshuai.xi HDMI_AUTO_EQ_FINISH_PROCESS, 231*53ee8cc1Swenshuai.xi HDMI_AUTO_EQ_CHECK_STABLE, 232*53ee8cc1Swenshuai.xi HDMI_AUTO_EQ_CHECK_DONE, 233*53ee8cc1Swenshuai.xi HDMI_AUTO_EQ_14_CLEAR_STATUS, 234*53ee8cc1Swenshuai.xi HDMI_AUTO_EQ_14_CHECK_STATUS, 235*53ee8cc1Swenshuai.xi HDMI_AUTO_EQ_14_CHANGE_SETTING, 236*53ee8cc1Swenshuai.xi HDMI_AUTO_EQ_20_CLEAR_STATUS, 237*53ee8cc1Swenshuai.xi HDMI_AUTO_EQ_20_CHECK_STATUS, 238*53ee8cc1Swenshuai.xi HDMI_AUTO_EQ_STABLE_DONE, 239*53ee8cc1Swenshuai.xi }; 240*53ee8cc1Swenshuai.xi 241*53ee8cc1Swenshuai.xi enum HDMI_SOURCE_VERSION_TYPE 242*53ee8cc1Swenshuai.xi { 243*53ee8cc1Swenshuai.xi HDMI_SOURCE_VERSION_NOT_SURE = 0, 244*53ee8cc1Swenshuai.xi HDMI_SOURCE_VERSION_HDMI14, 245*53ee8cc1Swenshuai.xi HDMI_SOURCE_VERSION_HDMI20, 246*53ee8cc1Swenshuai.xi }; 247*53ee8cc1Swenshuai.xi 248*53ee8cc1Swenshuai.xi enum HDMI_HDCP_STATE 249*53ee8cc1Swenshuai.xi { 250*53ee8cc1Swenshuai.xi HDMI_HDCP_NO_ENCRYPTION = 0, 251*53ee8cc1Swenshuai.xi HDMI_HDCP_1_4, 252*53ee8cc1Swenshuai.xi HDMI_HDCP_2_2, 253*53ee8cc1Swenshuai.xi }; 254*53ee8cc1Swenshuai.xi 255*53ee8cc1Swenshuai.xi enum HDMI_HDCP_ENCRYPTION_STATE 256*53ee8cc1Swenshuai.xi { 257*53ee8cc1Swenshuai.xi HDMI_HDCP_NOT_ENCRYPTION = 0, 258*53ee8cc1Swenshuai.xi HDMI_HDCP_1_4_ENCRYPTION, 259*53ee8cc1Swenshuai.xi HDMI_HDCP_2_2_ENCRYPTION, 260*53ee8cc1Swenshuai.xi }; 261*53ee8cc1Swenshuai.xi 262*53ee8cc1Swenshuai.xi enum HDMI_5V_DETECT_GPIO_TYPE 263*53ee8cc1Swenshuai.xi { 264*53ee8cc1Swenshuai.xi HDMI_5V_DETECT_GPIO_NONE = 0, 265*53ee8cc1Swenshuai.xi HDMI_5V_DETECT_GPIO_INDEX00, 266*53ee8cc1Swenshuai.xi HDMI_5V_DETECT_GPIO_INDEX01, 267*53ee8cc1Swenshuai.xi HDMI_5V_DETECT_GPIO_INDEX02, 268*53ee8cc1Swenshuai.xi HDMI_5V_DETECT_GPIO_INDEX03, 269*53ee8cc1Swenshuai.xi HDMI_5V_DETECT_GPIO_INDEX04, 270*53ee8cc1Swenshuai.xi HDMI_5V_DETECT_GPIO_INDEX05, 271*53ee8cc1Swenshuai.xi HDMI_5V_DETECT_GPIO_INDEX06, 272*53ee8cc1Swenshuai.xi HDMI_5V_DETECT_GPIO_INDEX07, 273*53ee8cc1Swenshuai.xi HDMI_5V_DETECT_GPIO_INDEX08, 274*53ee8cc1Swenshuai.xi HDMI_5V_DETECT_GPIO_INDEX09, 275*53ee8cc1Swenshuai.xi HDMI_5V_DETECT_GPIO_INDEX10, 276*53ee8cc1Swenshuai.xi HDMI_5V_DETECT_GPIO_INDEX11, 277*53ee8cc1Swenshuai.xi HDMI_5V_DETECT_GPIO_INDEX12, 278*53ee8cc1Swenshuai.xi HDMI_5V_DETECT_GPIO_INDEX13, 279*53ee8cc1Swenshuai.xi HDMI_5V_DETECT_GPIO_INDEX14, 280*53ee8cc1Swenshuai.xi HDMI_5V_DETECT_GPIO_INDEX15, 281*53ee8cc1Swenshuai.xi HDMI_5V_DETECT_GPIO_INDEX16, 282*53ee8cc1Swenshuai.xi HDMI_5V_DETECT_GPIO_INDEX17, 283*53ee8cc1Swenshuai.xi HDMI_5V_DETECT_GPIO_INDEX18, 284*53ee8cc1Swenshuai.xi HDMI_5V_DETECT_GPIO_INDEX19, 285*53ee8cc1Swenshuai.xi HDMI_5V_DETECT_GPIO_INDEX20, 286*53ee8cc1Swenshuai.xi HDMI_5V_DETECT_GPIO_INDEX21, 287*53ee8cc1Swenshuai.xi HDMI_5V_DETECT_GPIO_INDEX22, 288*53ee8cc1Swenshuai.xi HDMI_5V_DETECT_GPIO_INDEX23, 289*53ee8cc1Swenshuai.xi HDMI_5V_DETECT_GPIO_INDEX24, 290*53ee8cc1Swenshuai.xi HDMI_5V_DETECT_GPIO_INDEX25, 291*53ee8cc1Swenshuai.xi }; 292*53ee8cc1Swenshuai.xi 293*53ee8cc1Swenshuai.xi enum HDMI_AUTO_EQ_14_MODE_TYPE 294*53ee8cc1Swenshuai.xi { 295*53ee8cc1Swenshuai.xi HDMI_AUTO_EQ_14_MODE0 = 0, 296*53ee8cc1Swenshuai.xi HDMI_AUTO_EQ_14_MODE1, 297*53ee8cc1Swenshuai.xi HDMI_AUTO_EQ_14_MODE_MASK, 298*53ee8cc1Swenshuai.xi }; 299*53ee8cc1Swenshuai.xi 300*53ee8cc1Swenshuai.xi enum HDMI_STATUS_FLAG_TYPE 301*53ee8cc1Swenshuai.xi { 302*53ee8cc1Swenshuai.xi HDMI_STATUS_MPEG_PACKET_RECEIVE_FLAG = BIT(0), 303*53ee8cc1Swenshuai.xi HDMI_STATUS_AUDIO_PACKET_RECEIVE_FLAG = BIT(1), 304*53ee8cc1Swenshuai.xi HDMI_STATUS_SPD_PACKET_RECEIVE_FLAG = BIT(2), 305*53ee8cc1Swenshuai.xi HDMI_STATUS_AVI_PACKET_RECEIVE_FLAG = BIT(3), 306*53ee8cc1Swenshuai.xi HDMI_STATUS_GCP_PACKET_RECEIVE_FLAG = BIT(4), 307*53ee8cc1Swenshuai.xi HDMI_STATUS_AUDIO_SAMPLE_PACKET_RECEIVE_FLAG = BIT(5), 308*53ee8cc1Swenshuai.xi HDMI_STATUS_ACR_PACKET_RECEIVE_FLAG = BIT(6), 309*53ee8cc1Swenshuai.xi HDMI_STATUS_VS_PACKET_RECEIVE_FLAG = BIT(7), 310*53ee8cc1Swenshuai.xi HDMI_STATUS_NULL_PACKET_RECEIVE_FLAG = BIT(8), 311*53ee8cc1Swenshuai.xi HDMI_STATUS_ISRC2_PACKET_RECEIVE_FLAG = BIT(9), 312*53ee8cc1Swenshuai.xi HDMI_STATUS_ISRC1_PACKET_RECEIVE_FLAG = BIT(10), 313*53ee8cc1Swenshuai.xi HDMI_STATUS_ACP_PACKET_RECEIVE_FLAG = BIT(11), 314*53ee8cc1Swenshuai.xi HDMI_STATUS_DSD_PACKET_RECEIVE_FLAG = BIT(12), 315*53ee8cc1Swenshuai.xi HDMI_STATUS_GM_PACKET_RECEIVE_FLAG = BIT(13), 316*53ee8cc1Swenshuai.xi HDMI_STATUS_HBR_PACKET_RECEIVE_FLAG = BIT(14), 317*53ee8cc1Swenshuai.xi HDMI_STATUS_VBI_PACKET_RECEIVE_FLAG = BIT(15), 318*53ee8cc1Swenshuai.xi HDMI_STATUS_HDR_PACKET_RECEIVE_FLAG = BIT(16), 319*53ee8cc1Swenshuai.xi HDMI_STATUS_RESERVED_PACKET_RECEIVE_FLAG = BIT(17), 320*53ee8cc1Swenshuai.xi HDMI_STATUS_EDR_VALID_FLAG = BIT(18), 321*53ee8cc1Swenshuai.xi }; 322*53ee8cc1Swenshuai.xi 323*53ee8cc1Swenshuai.xi enum HDMI_INFO_SOURCE_TYPE 324*53ee8cc1Swenshuai.xi { 325*53ee8cc1Swenshuai.xi HDMI_INFO_SOURCE0 = 0, 326*53ee8cc1Swenshuai.xi HDMI_INFO_SOURCE_MAX, 327*53ee8cc1Swenshuai.xi HDMI_INFO_SOURCE1, 328*53ee8cc1Swenshuai.xi }; 329*53ee8cc1Swenshuai.xi 330*53ee8cc1Swenshuai.xi enum HDMI_CHECK_PACKET_TYPE 331*53ee8cc1Swenshuai.xi { 332*53ee8cc1Swenshuai.xi HDMI_CHECK_PACKET_CLEAR_RECEIVE_STATUS = 0, 333*53ee8cc1Swenshuai.xi HDMI_CHECK_PACKET_WAIT_AVI_PACKET, 334*53ee8cc1Swenshuai.xi HDMI_CHECK_PACKET_MEASURE_PACKET_INTERVAL, 335*53ee8cc1Swenshuai.xi HDMI_CHECK_PACKET_UPDATE_RECEIVE_STATUS, 336*53ee8cc1Swenshuai.xi }; 337*53ee8cc1Swenshuai.xi 338*53ee8cc1Swenshuai.xi #define HDMI_PACKET_RECEIVE_INTERVAL_MIN 4 339*53ee8cc1Swenshuai.xi #define HDMI_PACKET_RECEIVE_INTERVAL_MAX 11 340*53ee8cc1Swenshuai.xi 341*53ee8cc1Swenshuai.xi //============================================================================== 342*53ee8cc1Swenshuai.xi //============================================================================== 343*53ee8cc1Swenshuai.xi #ifdef MHAL_HDMI_C 344*53ee8cc1Swenshuai.xi #define INTERFACE 345*53ee8cc1Swenshuai.xi #else 346*53ee8cc1Swenshuai.xi #define INTERFACE extern 347*53ee8cc1Swenshuai.xi #endif 348*53ee8cc1Swenshuai.xi 349*53ee8cc1Swenshuai.xi INTERFACE MS_BOOL Hal_HDCP_GetEncryptionFlag(E_MUX_INPUTPORT enInputPortType); 350*53ee8cc1Swenshuai.xi INTERFACE MS_U16 Hal_HDMI_Func_Caps(void); 351*53ee8cc1Swenshuai.xi ////--------------> for HDCP 352*53ee8cc1Swenshuai.xi //INTERFACE void Hal_HDCP_clearflag( void ); 353*53ee8cc1Swenshuai.xi INTERFACE void Hal_HDCP_ddc_en(E_MUX_INPUTPORT enInputPortType, MS_BOOL bEnable); 354*53ee8cc1Swenshuai.xi INTERFACE void Hal_HDCP_Vsync_end_en( MS_BOOL bEnalbe ); 355*53ee8cc1Swenshuai.xi 356*53ee8cc1Swenshuai.xi ////--------------> for HDMI 357*53ee8cc1Swenshuai.xi INTERFACE void Hal_HDMI_pullhpd(MS_BOOL bHighLow, E_MUX_INPUTPORT enInputPortType, MS_BOOL bInverse, MS_U8 ucMHLSupportPath); 358*53ee8cc1Swenshuai.xi INTERFACE void Hal_HDMI_init(MS_BOOL bImmeswitchSupport, MS_U8 ucMHLSupportPath); 359*53ee8cc1Swenshuai.xi //INTERFACE void Hal_HDMI_init( void ); 360*53ee8cc1Swenshuai.xi INTERFACE void Hal_HDMI_exit(E_MUX_INPUTPORT enInputPortType); 361*53ee8cc1Swenshuai.xi 362*53ee8cc1Swenshuai.xi INTERFACE void Hal_HDMI_Set_EQ(E_MUX_INPUTPORT enInputPortType, MS_HDMI_EQ enEq, MS_U8 u8EQValue); 363*53ee8cc1Swenshuai.xi INTERFACE void Hal_HDMI_Audio_MUTE_Enable(MS_U16 u16MuteEvent, MS_U16 u16MuteMask); 364*53ee8cc1Swenshuai.xi INTERFACE void Hal_HDMI_Audio_Status_Clear(void); 365*53ee8cc1Swenshuai.xi 366*53ee8cc1Swenshuai.xi INTERFACE MS_U16 Hal_HDMI_gcontrol_info(HDMI_GControl_INFO_t gcontrol, MS_U8 ucHDMIInfoSource); 367*53ee8cc1Swenshuai.xi INTERFACE MS_U16 Hal_HDMI_pll_ctrl1(HDMI_PLL_CTRL_t pllctrl, MS_BOOL bread, MS_U16 u16value); 368*53ee8cc1Swenshuai.xi INTERFACE MS_U16 Hal_HDMI_pll_ctrl2(HDMI_PLL_CTRL2_t pllctrl, MS_BOOL bread, MS_U16 u16value); 369*53ee8cc1Swenshuai.xi INTERFACE MS_U16 Hal_HDMI_GetHDEInfo(MS_U8 ucHDMIInfoSource); 370*53ee8cc1Swenshuai.xi INTERFACE MS_U16 Hal_HDMI_GetDataInfo(E_HDMI_GET_DATA_INFO enInfo, MS_U8 ucHDMIInfoSource); 371*53ee8cc1Swenshuai.xi INTERFACE void Hal_DVI_Accumulator_Monitor( void ); 372*53ee8cc1Swenshuai.xi 373*53ee8cc1Swenshuai.xi INTERFACE void Hal_DVI_HF_adjust( void ); 374*53ee8cc1Swenshuai.xi 375*53ee8cc1Swenshuai.xi ////--------------> for HDMI Audio 376*53ee8cc1Swenshuai.xi INTERFACE void Hal_HDMI_audio_output(MS_BOOL bEnable); 377*53ee8cc1Swenshuai.xi 378*53ee8cc1Swenshuai.xi ////--------------> for DVI 379*53ee8cc1Swenshuai.xi INTERFACE MS_BOOL Hal_DVI_clk_lessthan70mhz_usingportc( MS_BOOL bIsPortC); 380*53ee8cc1Swenshuai.xi INTERFACE MS_U16 Hal_DVI_ChannelPhaseStatus( MS_U8 u8Channel); 381*53ee8cc1Swenshuai.xi INTERFACE MS_BOOL Hal_DVI_clk_stable_usingportc(MS_BOOL bIsPortC); 382*53ee8cc1Swenshuai.xi INTERFACE MS_BOOL Hal_DVI_clklose_det(E_MUX_INPUTPORT enInputPortType); 383*53ee8cc1Swenshuai.xi INTERFACE void Hal_DVI_IMMESWITCH_PS_SW_Path(void); 384*53ee8cc1Swenshuai.xi INTERFACE void Hal_DVI_sw_reset(MS_U16 u16Reset); 385*53ee8cc1Swenshuai.xi INTERFACE MS_U16 Hal_DVI_irq_info(E_MUX_INPUTPORT enInputPortType, MS_U16 irqbit); 386*53ee8cc1Swenshuai.xi INTERFACE void Hal_DVI_irq_mask(E_MUX_INPUTPORT enInputPortType, MS_U16 irqbit); 387*53ee8cc1Swenshuai.xi INTERFACE void Hal_DVI_irq_forcemode(E_MUX_INPUTPORT enInputPortType, MS_U16 irqbit); 388*53ee8cc1Swenshuai.xi INTERFACE void Hal_DVI_irq_clear(E_MUX_INPUTPORT enInputPortType, MS_U16 irqbit); 389*53ee8cc1Swenshuai.xi INTERFACE void Hal_DVI_ClkPullLow(MS_BOOL bPullLow, E_MUX_INPUTPORT enInputPortType); 390*53ee8cc1Swenshuai.xi INTERFACE void Hal_DVI_SwitchSrc(E_MUX_INPUTPORT enInputPortType, MS_U8 ucHDMIInfoSource); 391*53ee8cc1Swenshuai.xi 392*53ee8cc1Swenshuai.xi INTERFACE MS_U8 Hal_HDMI_err_status_update(MS_U8 ucHDMIInfoSource, MS_U8 u8value, MS_BOOL bread); 393*53ee8cc1Swenshuai.xi INTERFACE void Hal_HDMI_pkt_reset(E_MUX_INPUTPORT enInputPortType, HDMI_REST_t breset); 394*53ee8cc1Swenshuai.xi INTERFACE void Hal_HDMI_hpd_en(MS_BOOL benable); 395*53ee8cc1Swenshuai.xi INTERFACE void Hal_HDCP_initproductionkey( MS_U8 * pu8HdcpKeyData ); 396*53ee8cc1Swenshuai.xi INTERFACE void Hal_HDCP_clearflag(E_MUX_INPUTPORT enInputPortType); 397*53ee8cc1Swenshuai.xi INTERFACE void Hal_HDMI_audio_output( MS_BOOL bEnable ); 398*53ee8cc1Swenshuai.xi INTERFACE MS_U32 Hal_HDMI_packet_info(MS_U8 ucHDMIInfoSource); 399*53ee8cc1Swenshuai.xi INTERFACE MS_U8 Hal_HDMI_audio_content_protection_info(MS_U8 ucHDMIInfoSource); 400*53ee8cc1Swenshuai.xi INTERFACE EN_AVI_INFOFRAME_VERSION Hal_HDMI_avi_infoframe_info_ver(MS_U8 ucHDMIInfoSource); 401*53ee8cc1Swenshuai.xi INTERFACE MS_U8 Hal_HDMI_avi_infoframe_info(MS_U8 ucHDMIInfoSource, MS_U8 u8byte); 402*53ee8cc1Swenshuai.xi INTERFACE MS_BOOL Hal_HDMI_get_packet_value(MS_U8 ucHDMIInfoSource, MS_HDMI_PACKET_STATE_t u8state, MS_U8 u8byte_idx, MS_U8 *pu8Value); 403*53ee8cc1Swenshuai.xi 404*53ee8cc1Swenshuai.xi INTERFACE MS_U8 Hal_HDMI_audio_channel_status(MS_U8 ucHDMIInfoSource, MS_U8 u8byte); 405*53ee8cc1Swenshuai.xi INTERFACE MS_U16 Hal_HDCP_getstatus(E_MUX_INPUTPORT enInputPortType); 406*53ee8cc1Swenshuai.xi INTERFACE void Hal_DVI_adc_adjust( MS_BOOL bClockLessThan70MHz); 407*53ee8cc1Swenshuai.xi 408*53ee8cc1Swenshuai.xi INTERFACE void Hal_HDMI_packet_ctrl(MS_U8 ucHDMIInfoSource, MS_U16 u16pkt); 409*53ee8cc1Swenshuai.xi INTERFACE MS_U8 Hal_HDMI_audio_payload_info(MS_U8 ucHDMIInfoSource, MS_U8 u8byte); 410*53ee8cc1Swenshuai.xi 411*53ee8cc1Swenshuai.xi // DDC 412*53ee8cc1Swenshuai.xi INTERFACE void HAL_HDMI_DDCRam_SelectPort(E_XC_DDCRAM_PROG_TYPE eDDCRamType); 413*53ee8cc1Swenshuai.xi INTERFACE void HAL_HDMI_DDCRAM_SetPhyAddr(XC_DDCRAM_PROG_INFO *pstDDCRam_Info); 414*53ee8cc1Swenshuai.xi 415*53ee8cc1Swenshuai.xi 416*53ee8cc1Swenshuai.xi // HDMI 1.4 new feature: 417*53ee8cc1Swenshuai.xi INTERFACE E_HDMI_ADDITIONAL_VIDEO_FORMAT Hal_HDMI_Check_Additional_Format(MS_U8 ucHDMIInfoSource); 418*53ee8cc1Swenshuai.xi INTERFACE E_XC_3D_INPUT_MODE Hal_HDMI_Get_3D_Structure(MS_U8 ucHDMIInfoSource); 419*53ee8cc1Swenshuai.xi INTERFACE E_HDMI_3D_EXT_DATA_T Hal_HDMI_Get_3D_Ext_Data(MS_U8 ucHDMIInfoSource); 420*53ee8cc1Swenshuai.xi INTERFACE void Hal_HDMI_Get_3D_Meta_Field(MS_U8 ucHDMIInfoSource, sHDMI_3D_META_FIELD *pdata); 421*53ee8cc1Swenshuai.xi INTERFACE MS_U8 Hal_HDMI_Get_VIC_Code(MS_U8 ucHDMIInfoSource); 422*53ee8cc1Swenshuai.xi INTERFACE E_HDMI_VIC_4Kx2K_CODE Hal_HDMI_Get_4Kx2K_VIC_Code(MS_U8 ucHDMIInfoSource); 423*53ee8cc1Swenshuai.xi INTERFACE void Hal_HDMI_Set_YUV422to444_Bypass(MS_BOOL btrue); 424*53ee8cc1Swenshuai.xi INTERFACE MS_BOOL Hal_HDMI_Is_Input_Large_166MHz(MS_U8 ucHDMIInfoSource); 425*53ee8cc1Swenshuai.xi INTERFACE void Hal_HDMI_AVG_ScaleringDown(MS_U8 ucHDMIInfoSource, MS_BOOL btrue); 426*53ee8cc1Swenshuai.xi INTERFACE void Hal_HDMI_ARC_PINControl(E_MUX_INPUTPORT enInputPortType, MS_BOOL bEnable, MS_BOOL bDrivingHigh); 427*53ee8cc1Swenshuai.xi INTERFACE void Hal_DVI_Software_Reset(E_MUX_INPUTPORT enInputPortType, MS_U16 u16Reset); 428*53ee8cc1Swenshuai.xi 429*53ee8cc1Swenshuai.xi MS_BOOL Hal_DVI_GetPowerSavingStatus(E_MUX_INPUTPORT enInputPortType); 430*53ee8cc1Swenshuai.xi MS_BOOL Hal_DVI_GetDEStableStatus(E_MUX_INPUTPORT enInputPortType); 431*53ee8cc1Swenshuai.xi void Hal_DVI_EnhanceImmeswitch(E_MUX_INPUTPORT enInputPortType, MS_BOOL bflag); 432*53ee8cc1Swenshuai.xi void Hal_DVI_ForceAllPortsEnterPS(void); 433*53ee8cc1Swenshuai.xi 434*53ee8cc1Swenshuai.xi //EX_ADD 435*53ee8cc1Swenshuai.xi INTERFACE MS_U16 Hal_HDMI_GetTMDSFreq(void); 436*53ee8cc1Swenshuai.xi INTERFACE MS_BOOL Hal_HDMI_CheckHDMI20_Setting(E_MUX_INPUTPORT enInputPortType); 437*53ee8cc1Swenshuai.xi INTERFACE void Hal_HDMI_StablePolling(MS_U8 ucMHLSupportPath, stHDMI_POLLING_INFO *stHDMIPollingInfo); 438*53ee8cc1Swenshuai.xi 439*53ee8cc1Swenshuai.xi INTERFACE void Hal_HDMI_Set5VDetectGPIOSelect(MS_U32 ul5VDetectGPIOIndex); 440*53ee8cc1Swenshuai.xi 441*53ee8cc1Swenshuai.xi INTERFACE void Hal_HDMI_SwitchVSDBtoHDRPacket(MS_BOOL bEnableHDR); 442*53ee8cc1Swenshuai.xi 443*53ee8cc1Swenshuai.xi INTERFACE MS_BOOL Hal_HDMI_Get_InfoFrame(MS_U8 ucHDMIInfoSource, MS_HDMI_PACKET_STATE_t u8state, void *pData); 444*53ee8cc1Swenshuai.xi 445*53ee8cc1Swenshuai.xi //INTERFACE void Hal_HDCP22_InitCBFunc(HDCP22_Recv_CBF pCBFunc, void* pContext); 446*53ee8cc1Swenshuai.xi INTERFACE void Hal_HDCP22_SetReadyBit(MS_U8 ucPortIdx, MS_BOOL bIsReady); 447*53ee8cc1Swenshuai.xi INTERFACE void Hal_HDCP22_PortInit(MS_U8 ucPortIdx); 448*53ee8cc1Swenshuai.xi INTERFACE MS_BOOL Hal_HDCP22_PollingWriteDone(MS_U8 ucPortIdx); 449*53ee8cc1Swenshuai.xi INTERFACE MS_BOOL Hal_HDCP22_PollingReadDone(MS_U8 ucPortIdx); 450*53ee8cc1Swenshuai.xi INTERFACE void Hal_HDCP22_EnableCipher(MS_U8 ucPortType, MS_U8 ucPortIdx, MS_BOOL bIsEnable); 451*53ee8cc1Swenshuai.xi INTERFACE void Hal_HDCP22_FillCipherKey(MS_U8 ucPortIdx, MS_U8 *pucSessionKey, MS_U8 *pucRiv); 452*53ee8cc1Swenshuai.xi INTERFACE void Hal_HDCP22_FetchMsg(MS_U8 ucPortIdx, MS_U8* pucData, MS_U32 dwDataLen); 453*53ee8cc1Swenshuai.xi INTERFACE MS_BOOL Hal_HDCP22_RecvMsg(MS_U8 ucPortIdx, MS_U8 *ucMsgData); 454*53ee8cc1Swenshuai.xi INTERFACE void Hal_HDCP22_SendMsg(MS_U8 ucPortType, MS_U8 ucPortIdx, MS_U8* pucData, MS_U32 dwDataLen, void* pDummy, MS_U8* ubRecIDListSetDone); 455*53ee8cc1Swenshuai.xi /*************************** HDCP Repeater ***************************/ 456*53ee8cc1Swenshuai.xi INTERFACE MS_BOOL Hal_HDCP_WriteX74(E_MUX_INPUTPORT enInputPortType, MS_U8 ubOffset, MS_U8 ubData); 457*53ee8cc1Swenshuai.xi INTERFACE MS_U8 Hal_HDCP_ReadX74(E_MUX_INPUTPORT enInputPortType, MS_U8 ubOffset); 458*53ee8cc1Swenshuai.xi INTERFACE void Hal_HDCP_SetReady(E_MUX_INPUTPORT enInputPortType, MS_BOOL bIsReady); 459*53ee8cc1Swenshuai.xi INTERFACE void Hal_HDCP_WriteKSVList(E_MUX_INPUTPORT enInputPortType, MS_U8* pucData, MS_U32 dwDataLen); 460*53ee8cc1Swenshuai.xi INTERFACE void Hal_HDCP_ClearStatus(E_MUX_INPUTPORT enInputPortType, MS_U16 usInt); 461*53ee8cc1Swenshuai.xi INTERFACE void Hal_HDCP_WriteDoneInterruptEnable(E_MUX_INPUTPORT enInputPortType, MS_BOOL bEnableIRQ); 462*53ee8cc1Swenshuai.xi /*************************** HDCP Repeater ***************************/ 463*53ee8cc1Swenshuai.xi 464*53ee8cc1Swenshuai.xi #undef INTERFACE 465*53ee8cc1Swenshuai.xi #endif /* MHAL_HDMI_H */ 466*53ee8cc1Swenshuai.xi 467