xref: /utopia/UTPA2-700.0.x/modules/hdmi/drv/hdmitx/include/halHDMITx.h (revision 53ee8cc121a030b8d368113ac3e966b4705770ef)
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") 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 #ifndef _HAL_HDMITX_H_
96*53ee8cc1Swenshuai.xi #define _HAL_HDMITX_H_
97*53ee8cc1Swenshuai.xi 
98*53ee8cc1Swenshuai.xi 
99*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
100*53ee8cc1Swenshuai.xi //  Macro and Define
101*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
102*53ee8cc1Swenshuai.xi 
103*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
104*53ee8cc1Swenshuai.xi //  Type and Structure
105*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
106*53ee8cc1Swenshuai.xi 
107*53ee8cc1Swenshuai.xi typedef enum
108*53ee8cc1Swenshuai.xi {
109*53ee8cc1Swenshuai.xi     E_HDMITX_DVIClock_L_HPD_L     = 0,
110*53ee8cc1Swenshuai.xi     E_HDMITX_DVIClock_L_HPD_H     = 1,
111*53ee8cc1Swenshuai.xi     E_HDMITX_DVIClock_H_HPD_L     = 2,
112*53ee8cc1Swenshuai.xi     E_HDMITX_DVIClock_H_HPD_H     = 3,
113*53ee8cc1Swenshuai.xi } MsHDMITX_RX_STATUS;
114*53ee8cc1Swenshuai.xi 
115*53ee8cc1Swenshuai.xi typedef enum
116*53ee8cc1Swenshuai.xi {
117*53ee8cc1Swenshuai.xi     E_HDMITX_SEND_PACKET        = 0x00,   // send packet
118*53ee8cc1Swenshuai.xi     E_HDMITX_CYCLIC_PACKET      = 0x04,   // cyclic packet by frame count
119*53ee8cc1Swenshuai.xi     E_HDMITX_STOP_PACKET        = 0x80,   // stop packet
120*53ee8cc1Swenshuai.xi } MsHDMITX_PACKET_PROCESS;
121*53ee8cc1Swenshuai.xi 
122*53ee8cc1Swenshuai.xi typedef enum
123*53ee8cc1Swenshuai.xi {
124*53ee8cc1Swenshuai.xi     E_HDMITX_NULL_PACKET        = 0x00,
125*53ee8cc1Swenshuai.xi     E_HDMITX_ACR_PACKET         = 0x01,
126*53ee8cc1Swenshuai.xi     E_HDMITX_AS_PACKET          = 0x02,
127*53ee8cc1Swenshuai.xi     E_HDMITX_GC_PACKET          = 0x03,
128*53ee8cc1Swenshuai.xi     E_HDMITX_ACP_PACKET         = 0x04,
129*53ee8cc1Swenshuai.xi     E_HDMITX_ISRC1_PACKET       = 0x05,
130*53ee8cc1Swenshuai.xi     E_HDMITX_ISRC2_PACKET       = 0x06,
131*53ee8cc1Swenshuai.xi     E_HDMITX_DSD_PACKET         = 0x07,
132*53ee8cc1Swenshuai.xi     E_HDMITX_HBR_PACKET         = 0x09,
133*53ee8cc1Swenshuai.xi     E_HDMITX_GM_PACKET         = 0x0A,
134*53ee8cc1Swenshuai.xi 
135*53ee8cc1Swenshuai.xi     E_HDMITX_VS_INFOFRAME       = 0x81,
136*53ee8cc1Swenshuai.xi     E_HDMITX_AVI_INFOFRAME      = 0x82,
137*53ee8cc1Swenshuai.xi     E_HDMITX_SPD_INFOFRAME      = 0x83,
138*53ee8cc1Swenshuai.xi     E_HDMITX_AUDIO_INFOFRAME    = 0x84,
139*53ee8cc1Swenshuai.xi     E_HDMITX_MPEG_INFOFRAME     = 0x85,
140*53ee8cc1Swenshuai.xi     E_HDMITX_HDR_INFOFRAME      = 0x87, //0x86,
141*53ee8cc1Swenshuai.xi } MsHDMITX_PACKET_TYPE;
142*53ee8cc1Swenshuai.xi 
143*53ee8cc1Swenshuai.xi typedef enum
144*53ee8cc1Swenshuai.xi {
145*53ee8cc1Swenshuai.xi     E_HDMITX_GCP_NO_CMD         = 0,
146*53ee8cc1Swenshuai.xi     E_HDMITX_GCP_SET_AVMUTE     = 1,
147*53ee8cc1Swenshuai.xi     E_HDMITX_GCP_CLEAR_AVMUTE   = 2,
148*53ee8cc1Swenshuai.xi     E_HDMITX_GCP_NA             = 3,
149*53ee8cc1Swenshuai.xi } MsHDMITX_PACKET_GCP_STATUS;
150*53ee8cc1Swenshuai.xi 
151*53ee8cc1Swenshuai.xi //*********************//
152*53ee8cc1Swenshuai.xi //             Video   //
153*53ee8cc1Swenshuai.xi //*********************//
154*53ee8cc1Swenshuai.xi 
155*53ee8cc1Swenshuai.xi typedef enum
156*53ee8cc1Swenshuai.xi {
157*53ee8cc1Swenshuai.xi     E_HDMITX_VIDEO_CD_NoID     = 0,
158*53ee8cc1Swenshuai.xi     E_HDMITX_VIDEO_CD_24Bits     = 4,
159*53ee8cc1Swenshuai.xi     E_HDMITX_VIDEO_CD_30Bits     = 5,
160*53ee8cc1Swenshuai.xi     E_HDMITX_VIDEO_CD_36Bits     = 6,
161*53ee8cc1Swenshuai.xi     E_HDMITX_VIDEO_CD_48Bits     = 7,
162*53ee8cc1Swenshuai.xi } MsHDMITX_VIDEO_COLORDEPTH_VAL;
163*53ee8cc1Swenshuai.xi 
164*53ee8cc1Swenshuai.xi typedef enum
165*53ee8cc1Swenshuai.xi {
166*53ee8cc1Swenshuai.xi     E_HDMITX_VIDEO_COLOR_RGB444     = 0,
167*53ee8cc1Swenshuai.xi     E_HDMITX_VIDEO_COLOR_YUV422     = 1,
168*53ee8cc1Swenshuai.xi     E_HDMITX_VIDEO_COLOR_YUV444     = 2,
169*53ee8cc1Swenshuai.xi     E_HDMITX_VIDEO_COLOR_YUV420     = 3,
170*53ee8cc1Swenshuai.xi } MsHDMITX_VIDEO_COLOR_FORMAT;
171*53ee8cc1Swenshuai.xi 
172*53ee8cc1Swenshuai.xi typedef enum //wilson@kano
173*53ee8cc1Swenshuai.xi {
174*53ee8cc1Swenshuai.xi     E_HDMITX_COLORIMETRY_NO_DATA                = 0,
175*53ee8cc1Swenshuai.xi     E_HDMITX_COLORIMETRY_SMPTE170M              = 1,
176*53ee8cc1Swenshuai.xi     E_HDMITX_COLORIMETRY_ITUR709                = 2,
177*53ee8cc1Swenshuai.xi     E_HDMITX_COLORIMETRY_EXTEND                 = 3,
178*53ee8cc1Swenshuai.xi     E_HDMITX_COLORIMETRY_MAX,
179*53ee8cc1Swenshuai.xi } MsHDMITX_COLORIMETRY;
180*53ee8cc1Swenshuai.xi 
181*53ee8cc1Swenshuai.xi typedef enum //wilson@kano
182*53ee8cc1Swenshuai.xi {
183*53ee8cc1Swenshuai.xi     E_HDMITX_EXT_COLORIMETRY_XVYCC601           = 0,
184*53ee8cc1Swenshuai.xi     E_HDMITX_EXT_COLORIMETRY_XVYCC709           = 1,
185*53ee8cc1Swenshuai.xi     E_HDMITX_EXT_COLORIMETRY_SYCC601            = 2,
186*53ee8cc1Swenshuai.xi     E_HDMITX_EXT_COLORIMETRY_ADOBEYCC601        = 3,
187*53ee8cc1Swenshuai.xi     E_HDMITX_EXT_COLORIMETRY_ADOBERGB           = 4,
188*53ee8cc1Swenshuai.xi     E_HDMITX_EXT_COLORIMETRY_BT2020CYCC         = 5, //mapping to ext. colorimetry format BT2020Y'cC'bcC'rc
189*53ee8cc1Swenshuai.xi     E_HDMITX_EXT_COLORIMETRY_BT2020YCC          = 6, //mapping to ext. colorimetry format BT2020 RGB or YCbCr
190*53ee8cc1Swenshuai.xi     E_HDMITX_EXT_COLORIMETRY_BT2020RGB          = 7  //mapping to ext. colorimetry format BT2020 RGB or YCbCr
191*53ee8cc1Swenshuai.xi } MsHDMITX_EXT_COLORIMETRY;
192*53ee8cc1Swenshuai.xi 
193*53ee8cc1Swenshuai.xi typedef enum //wilson@kano
194*53ee8cc1Swenshuai.xi {
195*53ee8cc1Swenshuai.xi     E_HDMITX_YCC_QUANT_LIMIT          = 0x00,
196*53ee8cc1Swenshuai.xi     E_HDMITX_YCC_QUANT_FULL           = 0x01,
197*53ee8cc1Swenshuai.xi     E_HDMITX_YCC_QUANT_RESERVED       = 0x10
198*53ee8cc1Swenshuai.xi } MsHDMITX_YCC_QUANT_RANGE;
199*53ee8cc1Swenshuai.xi 
200*53ee8cc1Swenshuai.xi typedef enum
201*53ee8cc1Swenshuai.xi {
202*53ee8cc1Swenshuai.xi     E_HDMITX_RES_640x480p       = 0,
203*53ee8cc1Swenshuai.xi     E_HDMITX_RES_720x480i       = 1,
204*53ee8cc1Swenshuai.xi     E_HDMITX_RES_720x576i       = 2,
205*53ee8cc1Swenshuai.xi     E_HDMITX_RES_720x480p       = 3,
206*53ee8cc1Swenshuai.xi     E_HDMITX_RES_720x576p       = 4,
207*53ee8cc1Swenshuai.xi     E_HDMITX_RES_1280x720p_50Hz   = 5,
208*53ee8cc1Swenshuai.xi     E_HDMITX_RES_1280x720p_60Hz   = 6,
209*53ee8cc1Swenshuai.xi     E_HDMITX_RES_1920x1080i_50Hz  = 7,
210*53ee8cc1Swenshuai.xi     E_HDMITX_RES_1920x1080i_60Hz  = 8,
211*53ee8cc1Swenshuai.xi     E_HDMITX_RES_1920x1080p_24Hz  = 9,
212*53ee8cc1Swenshuai.xi     E_HDMITX_RES_1920x1080p_25Hz  = 10,
213*53ee8cc1Swenshuai.xi     E_HDMITX_RES_1920x1080p_30Hz  = 11,
214*53ee8cc1Swenshuai.xi     E_HDMITX_RES_1920x1080p_50Hz  = 12,
215*53ee8cc1Swenshuai.xi     E_HDMITX_RES_1920x1080p_60Hz  = 13,
216*53ee8cc1Swenshuai.xi     E_HDMITX_RES_1920x2205p_24Hz  = 14,
217*53ee8cc1Swenshuai.xi     E_HDMITX_RES_1280x1470p_50Hz  = 15,
218*53ee8cc1Swenshuai.xi     E_HDMITX_RES_1280x1470p_60Hz  = 16,
219*53ee8cc1Swenshuai.xi     E_HDMITX_RES_3840x2160p_24Hz  = 17,
220*53ee8cc1Swenshuai.xi     E_HDMITX_RES_3840x2160p_25Hz  = 18,
221*53ee8cc1Swenshuai.xi     E_HDMITX_RES_3840x2160p_30Hz  = 19,
222*53ee8cc1Swenshuai.xi     E_HDMITX_RES_3840x2160p_50Hz  = 20,
223*53ee8cc1Swenshuai.xi     E_HDMITX_RES_3840x2160p_60Hz  = 21,
224*53ee8cc1Swenshuai.xi     E_HDMITX_RES_4096x2160p_24Hz  = 22,
225*53ee8cc1Swenshuai.xi     E_HDMITX_RES_4096x2160p_25Hz  = 23,
226*53ee8cc1Swenshuai.xi     E_HDMITX_RES_4096x2160p_30Hz  = 24,
227*53ee8cc1Swenshuai.xi     E_HDMITX_RES_4096x2160p_50Hz  = 25,
228*53ee8cc1Swenshuai.xi     E_HDMITX_RES_4096x2160p_60Hz  = 26,
229*53ee8cc1Swenshuai.xi     E_HDMITX_RES_1600x1200p_60Hz  = 27,
230*53ee8cc1Swenshuai.xi     E_HDMITX_RES_1440x900p_60Hz   = 28,
231*53ee8cc1Swenshuai.xi     E_HDMITX_RES_1280x1024p_60Hz  = 29,
232*53ee8cc1Swenshuai.xi     E_HDMITX_RES_1024x768p_60Hz   = 30,
233*53ee8cc1Swenshuai.xi     E_HDMITX_RES_MAX,
234*53ee8cc1Swenshuai.xi } MsHDMITX_VIDEO_TIMING;
235*53ee8cc1Swenshuai.xi 
236*53ee8cc1Swenshuai.xi typedef enum
237*53ee8cc1Swenshuai.xi {
238*53ee8cc1Swenshuai.xi     E_HDMITX_VIC_NOT_AVAILABLE       = 0,
239*53ee8cc1Swenshuai.xi     E_HDMITX_VIC_640x480p_60_4_3	 = 1,
240*53ee8cc1Swenshuai.xi     E_HDMITX_VIC_720x480p_60_4_3	 = 2,
241*53ee8cc1Swenshuai.xi     E_HDMITX_VIC_720x480p_60_16_9	 = 3,
242*53ee8cc1Swenshuai.xi     E_HDMITX_VIC_1280x720p_60_16_9	 = 4,
243*53ee8cc1Swenshuai.xi     E_HDMITX_VIC_1920x1080i_60_16_9	 = 5,
244*53ee8cc1Swenshuai.xi     E_HDMITX_VIC_720x480i_60_4_3	 = 6,
245*53ee8cc1Swenshuai.xi     E_HDMITX_VIC_720x480i_60_16_9    = 7,
246*53ee8cc1Swenshuai.xi     E_HDMITX_VIC_720x240p_60_4_3	 = 8,
247*53ee8cc1Swenshuai.xi     E_HDMITX_VIC_720x240p_60_16_9	 = 9,
248*53ee8cc1Swenshuai.xi     E_HDMITX_VIC_2880x480i_60_4_3	 = 10,
249*53ee8cc1Swenshuai.xi     E_HDMITX_VIC_2880x480i_60_16_9	 = 11,
250*53ee8cc1Swenshuai.xi     E_HDMITX_VIC_2880x240p_60_4_3	 = 12,
251*53ee8cc1Swenshuai.xi     E_HDMITX_VIC_2880x240p_60_16_9	 = 13,
252*53ee8cc1Swenshuai.xi     E_HDMITX_VIC_1440x480p_60_4_3    = 14,
253*53ee8cc1Swenshuai.xi     E_HDMITX_VIC_1440x480p_60_16_9	 = 15,
254*53ee8cc1Swenshuai.xi     E_HDMITX_VIC_1920x1080p_60_16_9	 = 16,
255*53ee8cc1Swenshuai.xi     E_HDMITX_VIC_720x576p_50_4_3	 = 17,
256*53ee8cc1Swenshuai.xi     E_HDMITX_VIC_720x576p_50_16_9	 = 18,
257*53ee8cc1Swenshuai.xi     E_HDMITX_VIC_1280x720p_50_16_9	 = 19,
258*53ee8cc1Swenshuai.xi     E_HDMITX_VIC_1920x1080i_50_16_9	 = 20,
259*53ee8cc1Swenshuai.xi     E_HDMITX_VIC_720x576i_50_4_3     = 21,
260*53ee8cc1Swenshuai.xi     E_HDMITX_VIC_720x576i_50_16_9	 = 22,
261*53ee8cc1Swenshuai.xi     E_HDMITX_VIC_720x288p_50_4_3	 = 23,
262*53ee8cc1Swenshuai.xi     E_HDMITX_VIC_720x288p_50_16_9	 = 24,
263*53ee8cc1Swenshuai.xi     E_HDMITX_VIC_2880x576i_50_4_3	 = 25,
264*53ee8cc1Swenshuai.xi     E_HDMITX_VIC_2880x576i_50_16_9	 = 26,
265*53ee8cc1Swenshuai.xi     E_HDMITX_VIC_2880x288p_50_4_3	 = 27,
266*53ee8cc1Swenshuai.xi     E_HDMITX_VIC_2880x288p_50_16_9   = 28,
267*53ee8cc1Swenshuai.xi     E_HDMITX_VIC_1440x576p_50_4_3	 = 29,
268*53ee8cc1Swenshuai.xi     E_HDMITX_VIC_1440x576p_50_16_9	 = 30,
269*53ee8cc1Swenshuai.xi     E_HDMITX_VIC_1920x1080p_50_16_9	 = 31,
270*53ee8cc1Swenshuai.xi     E_HDMITX_VIC_1920x1080p_24_16_9	 = 32,
271*53ee8cc1Swenshuai.xi     E_HDMITX_VIC_1920x1080p_25_16_9	 = 33,
272*53ee8cc1Swenshuai.xi     E_HDMITX_VIC_1920x1080p_30_16_9	 = 34,
273*53ee8cc1Swenshuai.xi     E_HDMITX_VIC_2880x480p_60_4_3    = 35,
274*53ee8cc1Swenshuai.xi     E_HDMITX_VIC_2880x480p_60_16_9	 = 36,
275*53ee8cc1Swenshuai.xi     E_HDMITX_VIC_2880x576p_50_4_3	 = 37,
276*53ee8cc1Swenshuai.xi     E_HDMITX_VIC_2880x576p_50_16_9	 = 38,
277*53ee8cc1Swenshuai.xi     E_HDMITX_VIC_1920x1080i_50_16_9_1250_total	 = 39,
278*53ee8cc1Swenshuai.xi     E_HDMITX_VIC_1920x1080i_100_16_9 = 40,
279*53ee8cc1Swenshuai.xi     E_HDMITX_VIC_1280x720p_100_16_9	 = 41,
280*53ee8cc1Swenshuai.xi     E_HDMITX_VIC_720x576p_100_4_3    = 42,
281*53ee8cc1Swenshuai.xi     E_HDMITX_VIC_720x576p_100_16_9	 = 43,
282*53ee8cc1Swenshuai.xi     E_HDMITX_VIC_720x576i_100_4_3	 = 44,
283*53ee8cc1Swenshuai.xi     E_HDMITX_VIC_720x576i_100_16_9	 = 45,
284*53ee8cc1Swenshuai.xi     E_HDMITX_VIC_1920x1080i_120_16_9 = 46,
285*53ee8cc1Swenshuai.xi     E_HDMITX_VIC_1280x720p_120_16_9	 = 47,
286*53ee8cc1Swenshuai.xi     E_HDMITX_VIC_720x480p_120_4_3	 = 48,
287*53ee8cc1Swenshuai.xi     E_HDMITX_VIC_720x480p_120_16_9   = 49,
288*53ee8cc1Swenshuai.xi     E_HDMITX_VIC_720x480i_120_4_3	 = 50,
289*53ee8cc1Swenshuai.xi     E_HDMITX_VIC_720x480i_120_16_9	 = 51,
290*53ee8cc1Swenshuai.xi     E_HDMITX_VIC_720x576p_200_4_3	 = 52,
291*53ee8cc1Swenshuai.xi     E_HDMITX_VIC_720x576p_200_16_9	 = 53,
292*53ee8cc1Swenshuai.xi     E_HDMITX_VIC_720x576i_200_4_3	 = 54,
293*53ee8cc1Swenshuai.xi     E_HDMITX_VIC_720x576i_200_16_9	 = 55,
294*53ee8cc1Swenshuai.xi     E_HDMITX_VIC_720x480p_240_4_3    = 56,
295*53ee8cc1Swenshuai.xi     E_HDMITX_VIC_720x480p_240_16_9	 = 57,
296*53ee8cc1Swenshuai.xi     E_HDMITX_VIC_720x480i_240_4_3	 = 58,
297*53ee8cc1Swenshuai.xi     E_HDMITX_VIC_720x480i_240_16_9	 = 59,
298*53ee8cc1Swenshuai.xi     E_HDMITX_VIC_1280x720p_24_16_9	 = 60,
299*53ee8cc1Swenshuai.xi     E_HDMITX_VIC_1280x720p_25_16_9	 = 61,
300*53ee8cc1Swenshuai.xi     E_HDMITX_VIC_1280x720p_30_16_9	 = 62,
301*53ee8cc1Swenshuai.xi     E_HDMITX_VIC_1920x1080p_120_16_9 = 63,
302*53ee8cc1Swenshuai.xi     E_HDMITX_VIC_1920x1080p_100_16_9 = 64,
303*53ee8cc1Swenshuai.xi //vvv------------------------------------------- HDMI 2.0 :: 21:9 aspect ratio
304*53ee8cc1Swenshuai.xi     E_HDMITX_VIC_1280x720p_24_21_9   = 65,
305*53ee8cc1Swenshuai.xi     E_HDMITX_VIC_1280x720p_25_21_9   = 66,
306*53ee8cc1Swenshuai.xi     E_HDMITX_VIC_1280x720p_30_21_9   = 67,
307*53ee8cc1Swenshuai.xi     E_HDMITX_VIC_1280x720p_50_21_9   = 68,
308*53ee8cc1Swenshuai.xi     E_HDMITX_VIC_1280x720p_60_21_9   = 69,
309*53ee8cc1Swenshuai.xi     E_HDMITX_VIC_1280x720p_100_21_9  = 70,
310*53ee8cc1Swenshuai.xi     E_HDMITX_VIC_1280x720p_120_21_9  = 71,
311*53ee8cc1Swenshuai.xi     E_HDMITX_VIC_1920x1080p_24_21_9  = 72,
312*53ee8cc1Swenshuai.xi     E_HDMITX_VIC_1920x1080p_25_21_9  = 73,
313*53ee8cc1Swenshuai.xi     E_HDMITX_VIC_1920x1080p_30_21_9  = 74,
314*53ee8cc1Swenshuai.xi     E_HDMITX_VIC_1920x1080p_50_21_9  = 75,
315*53ee8cc1Swenshuai.xi     E_HDMITX_VIC_1920x1080p_60_21_9  = 76,
316*53ee8cc1Swenshuai.xi     E_HDMITX_VIC_1920x1080p_100_21_9 = 77,
317*53ee8cc1Swenshuai.xi     E_HDMITX_VIC_1920x1080p_120_21_9 = 78,
318*53ee8cc1Swenshuai.xi     E_HDMITX_VIC_1680x720p_24_21_9   = 79,
319*53ee8cc1Swenshuai.xi     E_HDMITX_VIC_1680x720p_25_21_9   = 80,
320*53ee8cc1Swenshuai.xi     E_HDMITX_VIC_1680x720p_30_21_9   = 81,
321*53ee8cc1Swenshuai.xi     E_HDMITX_VIC_1680x720p_50_21_9   = 82,
322*53ee8cc1Swenshuai.xi     E_HDMITX_VIC_1680x720p_60_21_9   = 83,
323*53ee8cc1Swenshuai.xi     E_HDMITX_VIC_1680x720p_100_21_9  = 84,
324*53ee8cc1Swenshuai.xi     E_HDMITX_VIC_1680x720p_120_21_9  = 85,
325*53ee8cc1Swenshuai.xi     E_HDMITX_VIC_2560x1080p_24_21_9  = 86,
326*53ee8cc1Swenshuai.xi     E_HDMITX_VIC_2560x1080p_25_21_9  = 87,
327*53ee8cc1Swenshuai.xi     E_HDMITX_VIC_2560x1080p_30_21_9  = 88,
328*53ee8cc1Swenshuai.xi     E_HDMITX_VIC_2560x1080p_50_21_9  = 89,
329*53ee8cc1Swenshuai.xi     E_HDMITX_VIC_2560x1080p_60_21_9  = 90,
330*53ee8cc1Swenshuai.xi     E_HDMITX_VIC_2560x1080p_100_21_9 = 91,
331*53ee8cc1Swenshuai.xi     E_HDMITX_VIC_2560x1080p_120_21_9 = 92,
332*53ee8cc1Swenshuai.xi //^^^------------------------------------------- HDMI 2.0 :: 21:9 aspect ratio
333*53ee8cc1Swenshuai.xi     E_HDMITX_VIC_3840x2160p_24_16_9	= 93,
334*53ee8cc1Swenshuai.xi     E_HDMITX_VIC_3840x2160p_25_16_9	= 94,
335*53ee8cc1Swenshuai.xi     E_HDMITX_VIC_3840x2160p_30_16_9	= 95,
336*53ee8cc1Swenshuai.xi     E_HDMITX_VIC_3840x2160p_50_16_9	= 96,
337*53ee8cc1Swenshuai.xi     E_HDMITX_VIC_3840x2160p_60_16_9	= 97,
338*53ee8cc1Swenshuai.xi     E_HDMITX_VIC_4096x2160p_24_256_135   = 98,
339*53ee8cc1Swenshuai.xi     E_HDMITX_VIC_4096x2160p_25_256_135   = 99,
340*53ee8cc1Swenshuai.xi     E_HDMITX_VIC_4096x2160p_30_256_135   = 100,
341*53ee8cc1Swenshuai.xi     E_HDMITX_VIC_4096x2160p_50_256_135   = 101,
342*53ee8cc1Swenshuai.xi     E_HDMITX_VIC_4096x2160p_60_256_135   = 102,
343*53ee8cc1Swenshuai.xi //vvv------------------------------------------- HDMI 2.0 :: 21:9 aspect ratio
344*53ee8cc1Swenshuai.xi     E_HDMITX_VIC_3840x2160p_24_64_27	= 103,
345*53ee8cc1Swenshuai.xi     E_HDMITX_VIC_3840x2160p_25_64_27	= 104,
346*53ee8cc1Swenshuai.xi     E_HDMITX_VIC_3840x2160p_30_64_27	= 105,
347*53ee8cc1Swenshuai.xi     E_HDMITX_VIC_3840x2160p_50_64_27	= 106,
348*53ee8cc1Swenshuai.xi     E_HDMITX_VIC_3840x2160p_60_64_27	= 107,
349*53ee8cc1Swenshuai.xi //^^^------------------------------------------- HDMI 2.0 :: 21:9 aspect ratio
350*53ee8cc1Swenshuai.xi } MsHDMITX_AVI_VIC;
351*53ee8cc1Swenshuai.xi 
352*53ee8cc1Swenshuai.xi typedef enum
353*53ee8cc1Swenshuai.xi {
354*53ee8cc1Swenshuai.xi     E_HDMITX_VIDEO_AR_Reserved   = 0,
355*53ee8cc1Swenshuai.xi     E_HDMITX_VIDEO_AR_4_3        = 1,
356*53ee8cc1Swenshuai.xi     E_HDMITX_VIDEO_AR_16_9       = 2,
357*53ee8cc1Swenshuai.xi     E_HDMITX_VIDEO_AR_21_9       = 3, //new feature in HDMI 2.0
358*53ee8cc1Swenshuai.xi } MsHDMITX_VIDEO_ASPECT_RATIO;
359*53ee8cc1Swenshuai.xi 
360*53ee8cc1Swenshuai.xi typedef enum
361*53ee8cc1Swenshuai.xi {
362*53ee8cc1Swenshuai.xi     E_HDMITX_VIDEO_SI_NoData    = 0,
363*53ee8cc1Swenshuai.xi     E_HDMITX_VIDEO_SI_Overscanned         = 1,
364*53ee8cc1Swenshuai.xi     E_HDMITX_VIDEO_SI_Underscanned        = 2,
365*53ee8cc1Swenshuai.xi     E_HDMITX_VIDEO_SI_Reserved    = 3,
366*53ee8cc1Swenshuai.xi } MsHDMITX_VIDEO_SCAN_INFO;
367*53ee8cc1Swenshuai.xi 
368*53ee8cc1Swenshuai.xi 
369*53ee8cc1Swenshuai.xi typedef enum
370*53ee8cc1Swenshuai.xi {
371*53ee8cc1Swenshuai.xi     E_HDMITX_VIDEO_AFD_SameAsPictureAR    = 8, // 1000
372*53ee8cc1Swenshuai.xi     E_HDMITX_VIDEO_AFD_4_3_Center         = 9, // 1001
373*53ee8cc1Swenshuai.xi     E_HDMITX_VIDEO_AFD_16_9_Center        = 10, // 1010
374*53ee8cc1Swenshuai.xi     E_HDMITX_VIDEO_AFD_14_9_Center        = 11, // 1011
375*53ee8cc1Swenshuai.xi     E_HDMITx_VIDEO_AFD_Others = 15, // 0000~ 0111, 1100 ~ 1111
376*53ee8cc1Swenshuai.xi } MsHDMITX_VIDEO_AFD_RATIO;
377*53ee8cc1Swenshuai.xi 
378*53ee8cc1Swenshuai.xi 
379*53ee8cc1Swenshuai.xi typedef enum
380*53ee8cc1Swenshuai.xi {
381*53ee8cc1Swenshuai.xi     E_HDMITX_VIDEO_VS_No_Addition    = 0, // 000
382*53ee8cc1Swenshuai.xi     E_HDMITX_VIDEO_VS_4k_2k          = 1, // 001
383*53ee8cc1Swenshuai.xi     E_HDMITX_VIDEO_VS_3D             = 2, // 010
384*53ee8cc1Swenshuai.xi     E_HDMITx_VIDEO_VS_Reserved       = 7, // 011~ 111
385*53ee8cc1Swenshuai.xi } MsHDMITX_VIDEO_VS_FORMAT;
386*53ee8cc1Swenshuai.xi 
387*53ee8cc1Swenshuai.xi 
388*53ee8cc1Swenshuai.xi typedef enum
389*53ee8cc1Swenshuai.xi {
390*53ee8cc1Swenshuai.xi     E_HDMITX_VIDEO_3D_FramePacking     = 0, // 0000
391*53ee8cc1Swenshuai.xi     E_HDMITX_VIDEO_3D_FieldAlternative = 1, // 0001
392*53ee8cc1Swenshuai.xi     E_HDMITX_VIDEO_3D_LineAlternative  = 2, // 0010
393*53ee8cc1Swenshuai.xi     E_HDMITX_VIDEO_3D_SidebySide_FULL  = 3, // 0011
394*53ee8cc1Swenshuai.xi     E_HDMITX_VIDEO_3D_L_Dep            = 4, // 0100
395*53ee8cc1Swenshuai.xi     E_HDMITX_VIDEO_3D_L_Dep_Graphic_Dep= 5, // 0101
396*53ee8cc1Swenshuai.xi     E_HDMITX_VIDEO_3D_TopandBottom     = 6, // 0110
397*53ee8cc1Swenshuai.xi     E_HDMITX_VIDEO_3D_SidebySide_Half  = 8, // 1000
398*53ee8cc1Swenshuai.xi     E_HDMITx_VIDEO_3D_Not_in_Use       = 15, // 1111
399*53ee8cc1Swenshuai.xi } MsHDMITX_VIDEO_3D_STRUCTURE;
400*53ee8cc1Swenshuai.xi 
401*53ee8cc1Swenshuai.xi typedef enum
402*53ee8cc1Swenshuai.xi {
403*53ee8cc1Swenshuai.xi     E_HDMITX_EDID_3D_FramePacking               = 1, // 3D_STRUCTURE_ALL_0
404*53ee8cc1Swenshuai.xi     E_HDMITX_EDID_3D_FieldAlternative           = 2, // 3D_STRUCTURE_ALL_1
405*53ee8cc1Swenshuai.xi     E_HDMITX_EDID_3D_LineAlternative            = 4, // 3D_STRUCTURE_ALL_2
406*53ee8cc1Swenshuai.xi     E_HDMITX_EDID_3D_SidebySide_FULL            = 8, // 3D_STRUCTURE_ALL_3
407*53ee8cc1Swenshuai.xi     E_HDMITX_EDID_3D_L_Dep                      = 16, // 3D_STRUCTURE_ALL_4
408*53ee8cc1Swenshuai.xi     E_HDMITX_EDID_3D_L_Dep_Graphic_Dep          = 32, // 3D_STRUCTURE_ALL_5
409*53ee8cc1Swenshuai.xi     E_HDMITX_EDID_3D_TopandBottom               = 64, // 3D_STRUCTURE_ALL_6
410*53ee8cc1Swenshuai.xi     E_HDMITX_EDID_3D_SidebySide_Half_horizontal = 256, // 3D_STRUCTURE_ALL_8
411*53ee8cc1Swenshuai.xi     E_HDMITX_EDID_3D_SidebySide_Half_quincunx   = 32768, // 3D_STRUCTURE_ALL_15
412*53ee8cc1Swenshuai.xi } MsHDMITX_EDID_3D_STRUCTURE_ALL;
413*53ee8cc1Swenshuai.xi 
414*53ee8cc1Swenshuai.xi typedef enum
415*53ee8cc1Swenshuai.xi {
416*53ee8cc1Swenshuai.xi     E_HDMITX_EDID_Color_RGB_444              = 1, // RGB 4:4:4
417*53ee8cc1Swenshuai.xi     E_HDMITX_EDID_Color_YCbCr_444            = 2, // YCbCr 4:4:4
418*53ee8cc1Swenshuai.xi     E_HDMITX_EDID_Color_YCbCr_422            = 4, // YCbCr 4:2:2
419*53ee8cc1Swenshuai.xi     E_HDMITX_EDID_Color_YCbCr_420            = 8, // YCbCr 4:2:0
420*53ee8cc1Swenshuai.xi } MsHDMITX_EDID_COLOR_FORMAT;
421*53ee8cc1Swenshuai.xi 
422*53ee8cc1Swenshuai.xi typedef enum
423*53ee8cc1Swenshuai.xi {
424*53ee8cc1Swenshuai.xi     E_HDMITx_VIDEO_4k2k_Reserved    = 0, // 0x00
425*53ee8cc1Swenshuai.xi     E_HDMITX_VIDEO_4k2k_30Hz        = 1, // 0x01
426*53ee8cc1Swenshuai.xi     E_HDMITX_VIDEO_4k2k_25Hz        = 2, // 0x02
427*53ee8cc1Swenshuai.xi     E_HDMITX_VIDEO_4k2k_24Hz        = 3, // 0x03
428*53ee8cc1Swenshuai.xi     E_HDMITx_VIDEO_4k2k_24Hz_SMPTE  = 4, // 0x04
429*53ee8cc1Swenshuai.xi } MsHDMITX_VIDEO_4k2k_VIC;
430*53ee8cc1Swenshuai.xi 
431*53ee8cc1Swenshuai.xi 
432*53ee8cc1Swenshuai.xi //*********************//
433*53ee8cc1Swenshuai.xi //             Audio   //
434*53ee8cc1Swenshuai.xi //*********************//
435*53ee8cc1Swenshuai.xi 
436*53ee8cc1Swenshuai.xi typedef enum
437*53ee8cc1Swenshuai.xi {
438*53ee8cc1Swenshuai.xi     E_HDMITX_AUDIO_FREQ_NO_SIG  = 0,
439*53ee8cc1Swenshuai.xi     E_HDMITX_AUDIO_32K          = 1,
440*53ee8cc1Swenshuai.xi     E_HDMITX_AUDIO_44K          = 2,
441*53ee8cc1Swenshuai.xi     E_HDMITX_AUDIO_48K          = 3,
442*53ee8cc1Swenshuai.xi     E_HDMITX_AUDIO_88K          = 4,
443*53ee8cc1Swenshuai.xi     E_HDMITX_AUDIO_96K          = 5,
444*53ee8cc1Swenshuai.xi     E_HDMITX_AUDIO_176K         = 6,
445*53ee8cc1Swenshuai.xi     E_HDMITX_AUDIO_192K         = 7,
446*53ee8cc1Swenshuai.xi     E_HDMITX_AUDIO_FREQ_MAX_NUM = 8,
447*53ee8cc1Swenshuai.xi } MsHDMITX_AUDIO_FREQUENCY;
448*53ee8cc1Swenshuai.xi 
449*53ee8cc1Swenshuai.xi typedef enum
450*53ee8cc1Swenshuai.xi {
451*53ee8cc1Swenshuai.xi     E_HDMITX_AUDIO_FORMAT_PCM   = 0,
452*53ee8cc1Swenshuai.xi     E_HDMITX_AUDIO_FORMAT_DSD   = 1,
453*53ee8cc1Swenshuai.xi     E_HDMITX_AUDIO_FORMAT_HBR   = 2,
454*53ee8cc1Swenshuai.xi     E_HDMITX_AUDIO_FORMAT_NA    = 3,
455*53ee8cc1Swenshuai.xi } MsHDMITX_AUDIO_SOURCE_FORMAT;
456*53ee8cc1Swenshuai.xi 
457*53ee8cc1Swenshuai.xi typedef enum
458*53ee8cc1Swenshuai.xi {
459*53ee8cc1Swenshuai.xi     E_HDMITX_AUDIO_CH_2  = 2, // 2 channels
460*53ee8cc1Swenshuai.xi     E_HDMITX_AUDIO_CH_4  = 4, // 4 channels
461*53ee8cc1Swenshuai.xi     E_HDMITX_AUDIO_CH_6  = 6, // 6 channels
462*53ee8cc1Swenshuai.xi     E_HDMITX_AUDIO_CH_8  = 8, // 8 channels
463*53ee8cc1Swenshuai.xi } MsHDMITX_AUDIO_CHANNEL_COUNT;
464*53ee8cc1Swenshuai.xi 
465*53ee8cc1Swenshuai.xi typedef enum
466*53ee8cc1Swenshuai.xi {
467*53ee8cc1Swenshuai.xi     E_HDMITX_AUDIO_PCM  = 0, // PCM
468*53ee8cc1Swenshuai.xi     E_HDMITX_AUDIO_NONPCM  = 1, // non-PCM
469*53ee8cc1Swenshuai.xi } MsHDMITX_AUDIO_CODING_TYPE;
470*53ee8cc1Swenshuai.xi 
471*53ee8cc1Swenshuai.xi typedef enum
472*53ee8cc1Swenshuai.xi {
473*53ee8cc1Swenshuai.xi     E_HDMITX_IRQ_00             = 0x000001,   // IRQ event 0x00
474*53ee8cc1Swenshuai.xi     E_HDMITX_IRQ_01             = 0x000002,   // IRQ event 0x01
475*53ee8cc1Swenshuai.xi     E_HDMITX_IRQ_02             = 0x000004,   // IRQ event 0x02
476*53ee8cc1Swenshuai.xi     E_HDMITX_IRQ_03             = 0x000008,   // IRQ event 0x03
477*53ee8cc1Swenshuai.xi     E_HDMITX_IRQ_04             = 0x000010,   // IRQ event 0x04
478*53ee8cc1Swenshuai.xi     E_HDMITX_IRQ_05             = 0x000020,   // HDCP 128th Ri
479*53ee8cc1Swenshuai.xi     E_HDMITX_IRQ_06             = 0x000040,   // HDCP 127th Ri
480*53ee8cc1Swenshuai.xi     E_HDMITX_IRQ_07             = 0x000080,   // HDCP Pj
481*53ee8cc1Swenshuai.xi     E_HDMITX_IRQ_08             = 0x000100,   // TMDS timing error
482*53ee8cc1Swenshuai.xi     E_HDMITX_IRQ_09             = 0x000200,   // IRQ event 0x09
483*53ee8cc1Swenshuai.xi     E_HDMITX_IRQ_0A             = 0x000400,  // Video engine image size change
484*53ee8cc1Swenshuai.xi     E_HDMITX_IRQ_0B             = 0x000800,  // Audio FIFO Overflow
485*53ee8cc1Swenshuai.xi     E_HDMITX_IRQ_0C             = 0x001000,  // TMDS_DE_CNT_DIFF, defined by U4
486*53ee8cc1Swenshuai.xi     E_HDMITX_IRQ_0D             = 0x002000,  // IRQ event 0x0D
487*53ee8cc1Swenshuai.xi     E_HDMITX_IRQ_0E             = 0x004000,  // IRQ event 0x0E
488*53ee8cc1Swenshuai.xi     E_HDMITX_IRQ_0F             = 0x008000,  // IRQ event 0x0F
489*53ee8cc1Swenshuai.xi     E_HDMITX_IRQ_10             = 0x010000,  // TMDS detect RX disconnection (Rx sense)
490*53ee8cc1Swenshuai.xi     E_HDMITX_IRQ_11             = 0x020000,  // TMDS detect Rx disconnection in PM
491*53ee8cc1Swenshuai.xi     E_HDMITX_IRQ_12             = 0x040000,  // HPD(real function is in PM_Sleep)
492*53ee8cc1Swenshuai.xi     E_HDMITX_IRQ_13             = 0x080000,  // IRQ event 0x13
493*53ee8cc1Swenshuai.xi     E_HDMITX_IRQ_14             = 0x100000,  // IRQ event 0x14
494*53ee8cc1Swenshuai.xi     E_HDMITX_IRQ_15             = 0x200000,  // IRQ event 0x15
495*53ee8cc1Swenshuai.xi     E_HDMITX_IRQ_16             = 0x400000,  // IRQ event 0x16
496*53ee8cc1Swenshuai.xi     E_HDMITX_IRQ_17             = 0x800000,  // IRQ event 0x17
497*53ee8cc1Swenshuai.xi     E_HDMITX_IRQ_ALL            = 0xFFFFFF, // IRQ all
498*53ee8cc1Swenshuai.xi }MsHDMITX_INTERRUPT_TYPE;
499*53ee8cc1Swenshuai.xi typedef enum
500*53ee8cc1Swenshuai.xi {
501*53ee8cc1Swenshuai.xi     E_HDMITX_VIDEO_INTERLACE_MODE     = 0,
502*53ee8cc1Swenshuai.xi     E_HDMITX_VIDEO_PROGRESSIVE_MODE = 1,
503*53ee8cc1Swenshuai.xi } MDrv_HDMITx_VIDEO_MODE;
504*53ee8cc1Swenshuai.xi 
505*53ee8cc1Swenshuai.xi typedef enum
506*53ee8cc1Swenshuai.xi {
507*53ee8cc1Swenshuai.xi     E_HDMITX_VIDEO_POLARITY_HIGH  = 0,
508*53ee8cc1Swenshuai.xi     E_HDMITX_VIDEO_POLARITY_LOW = 1,
509*53ee8cc1Swenshuai.xi } MDrv_HDMITx_VIDEO_POLARITY;
510*53ee8cc1Swenshuai.xi 
511*53ee8cc1Swenshuai.xi typedef enum
512*53ee8cc1Swenshuai.xi {
513*53ee8cc1Swenshuai.xi     E_HDMITX_INPUT_LESS_60MHZ  =0,
514*53ee8cc1Swenshuai.xi 	E_HDMITX_INPUT_60_to_160MHZ  =1,
515*53ee8cc1Swenshuai.xi     E_HDMITX_INPUT_OVER_160MHZ  =2,
516*53ee8cc1Swenshuai.xi } MsHDMITX_INPUT_FREQ;
517*53ee8cc1Swenshuai.xi 
518*53ee8cc1Swenshuai.xi typedef struct __attribute__ ((packed))
519*53ee8cc1Swenshuai.xi {
520*53ee8cc1Swenshuai.xi     // HDMI Tx Current, Pre-emphasis and Double termination
521*53ee8cc1Swenshuai.xi     MS_U8    tm_txcurrent; // TX current control(U4: 0x11302B[13:12], K1: 0x11302B[13:11])
522*53ee8cc1Swenshuai.xi     MS_U8    tm_pren2; // pre-emphasis mode control, 0x11302D[5]
523*53ee8cc1Swenshuai.xi     MS_U8    tm_precon; // TM_PRECON, 0x11302E[7:4]
524*53ee8cc1Swenshuai.xi     MS_U8    tm_pren; // pre-emphasis enable, 0x11302E[11:8]
525*53ee8cc1Swenshuai.xi     MS_U8    tm_tenpre; // Double termination pre-emphasis enable, 0x11302F[3:0]
526*53ee8cc1Swenshuai.xi     MS_U8    tm_ten; // Double termination enable, 0x11302F[7:4]
527*53ee8cc1Swenshuai.xi     MS_U32   u32AlignDummy;
528*53ee8cc1Swenshuai.xi } MsHDMITX_ANALOG_TUNING;
529*53ee8cc1Swenshuai.xi 
530*53ee8cc1Swenshuai.xi typedef struct
531*53ee8cc1Swenshuai.xi {
532*53ee8cc1Swenshuai.xi     MsHDMITX_AVI_VIC support_timing;
533*53ee8cc1Swenshuai.xi     MsHDMITX_EDID_3D_STRUCTURE_ALL support_3D_structure;
534*53ee8cc1Swenshuai.xi } MsHDMITX_EDID_3D_SUPPORT_TIMING;
535*53ee8cc1Swenshuai.xi 
536*53ee8cc1Swenshuai.xi 
537*53ee8cc1Swenshuai.xi typedef struct //wilson@kano
538*53ee8cc1Swenshuai.xi {
539*53ee8cc1Swenshuai.xi 	MsHDMITX_VIDEO_COLORDEPTH_VAL   enColorDepInfo;
540*53ee8cc1Swenshuai.xi 	//MS_BOOL							enAVMute;
541*53ee8cc1Swenshuai.xi 	MsHDMITX_PACKET_GCP_STATUS      enAVMute;
542*53ee8cc1Swenshuai.xi } stGC_PktPara;
543*53ee8cc1Swenshuai.xi 
544*53ee8cc1Swenshuai.xi typedef struct //wilson@kano
545*53ee8cc1Swenshuai.xi {
546*53ee8cc1Swenshuai.xi 	MsHDMITX_VIDEO_VS_FORMAT 		enVSFmt;
547*53ee8cc1Swenshuai.xi 	MsHDMITX_VIDEO_3D_STRUCTURE		en3DStruct;
548*53ee8cc1Swenshuai.xi 	MsHDMITX_VIDEO_4k2k_VIC			en4k2kVIC;
549*53ee8cc1Swenshuai.xi } stVSInfo_PktPara;
550*53ee8cc1Swenshuai.xi 
551*53ee8cc1Swenshuai.xi typedef struct //wilson@kano
552*53ee8cc1Swenshuai.xi {
553*53ee8cc1Swenshuai.xi 	MS_BOOL							enableAFDoverWrite;
554*53ee8cc1Swenshuai.xi 	MS_U8							A0Value;
555*53ee8cc1Swenshuai.xi 	MsHDMITX_VIDEO_COLOR_FORMAT		enColorFmt;
556*53ee8cc1Swenshuai.xi     MsHDMITX_COLORIMETRY            enColorimetry;
557*53ee8cc1Swenshuai.xi     MsHDMITX_EXT_COLORIMETRY        enExtColorimetry;
558*53ee8cc1Swenshuai.xi     MsHDMITX_YCC_QUANT_RANGE        enYCCQuantRange;
559*53ee8cc1Swenshuai.xi 	MsHDMITX_VIDEO_TIMING		    enVidTiming;
560*53ee8cc1Swenshuai.xi 	MsHDMITX_VIDEO_AFD_RATIO		enAFDRatio;
561*53ee8cc1Swenshuai.xi 	MsHDMITX_VIDEO_SCAN_INFO		enScanInfo;
562*53ee8cc1Swenshuai.xi 	MsHDMITX_VIDEO_ASPECT_RATIO 	enAspectRatio;
563*53ee8cc1Swenshuai.xi } stAVIInfo_PktPara;
564*53ee8cc1Swenshuai.xi 
565*53ee8cc1Swenshuai.xi typedef struct //wilson@kano
566*53ee8cc1Swenshuai.xi {
567*53ee8cc1Swenshuai.xi 	MsHDMITX_AUDIO_CHANNEL_COUNT	enAudChCnt;
568*53ee8cc1Swenshuai.xi 	MsHDMITX_AUDIO_CODING_TYPE		enAudType;
569*53ee8cc1Swenshuai.xi 	MsHDMITX_AUDIO_FREQUENCY		enAudFreq;
570*53ee8cc1Swenshuai.xi 	//MS_BOOL                         bChStatus;
571*53ee8cc1Swenshuai.xi } stAUDInfo_PktPara;
572*53ee8cc1Swenshuai.xi 
573*53ee8cc1Swenshuai.xi typedef struct //wilson@kano
574*53ee8cc1Swenshuai.xi {
575*53ee8cc1Swenshuai.xi 	MS_BOOL 				    EnableUserDef;
576*53ee8cc1Swenshuai.xi 	MS_U8					    FrmCntNum;
577*53ee8cc1Swenshuai.xi 	MsHDMITX_PACKET_PROCESS		enPktCtrl;
578*53ee8cc1Swenshuai.xi 	union
579*53ee8cc1Swenshuai.xi 	{
580*53ee8cc1Swenshuai.xi 		stGC_PktPara		GCPktPara;
581*53ee8cc1Swenshuai.xi 		stVSInfo_PktPara	VSInfoPktPara;
582*53ee8cc1Swenshuai.xi 		stAVIInfo_PktPara	AVIInfoPktPara;
583*53ee8cc1Swenshuai.xi 		stAUDInfo_PktPara	AUDInfoPktPara;
584*53ee8cc1Swenshuai.xi 	} PktPara;
585*53ee8cc1Swenshuai.xi } stHDMITx_PKT_ATTRIBUTE; //wilson@kano
586*53ee8cc1Swenshuai.xi 
587*53ee8cc1Swenshuai.xi typedef struct // Customer info
588*53ee8cc1Swenshuai.xi {
589*53ee8cc1Swenshuai.xi     MDrv_HDMITx_VIDEO_MODE                              i_p_mode;           // interlace / progressive mode
590*53ee8cc1Swenshuai.xi     MDrv_HDMITx_VIDEO_POLARITY                          h_polarity;         // Hsync polarity
591*53ee8cc1Swenshuai.xi     MDrv_HDMITx_VIDEO_POLARITY                          v_polarity;         // Vsync polarity
592*53ee8cc1Swenshuai.xi     MS_U16                                              vs_width;           // Vsync pulse width
593*53ee8cc1Swenshuai.xi     MS_U16                                              vs_bporch;          // Vsync back-porch
594*53ee8cc1Swenshuai.xi     MS_U16                                              vde_width;          // Vde active width
595*53ee8cc1Swenshuai.xi     MS_U16                                              vs_delayline;       // Vsync line delay
596*53ee8cc1Swenshuai.xi     MS_U16                                              vs_delaypixel;      // Vsync pixel delay
597*53ee8cc1Swenshuai.xi     MS_U16                                              hs_width;           // Hsync pulse width
598*53ee8cc1Swenshuai.xi     MS_U16                                              hs_bporch;          // Hsync back-porch
599*53ee8cc1Swenshuai.xi     MS_U16                                              hde_width;          // Hde active width
600*53ee8cc1Swenshuai.xi     MS_U16                                              hs_delay;           // Hsync delay
601*53ee8cc1Swenshuai.xi     MS_U16                                              vtotal;             // Vsync total
602*53ee8cc1Swenshuai.xi     MS_U16                                              htotal;             // Hsync total
603*53ee8cc1Swenshuai.xi 
604*53ee8cc1Swenshuai.xi 
605*53ee8cc1Swenshuai.xi } stHDMITX_TIMING_INFO_BY_CUSTOMER;
606*53ee8cc1Swenshuai.xi 
607*53ee8cc1Swenshuai.xi 
608*53ee8cc1Swenshuai.xi // *************  For customer NDS **************//
609*53ee8cc1Swenshuai.xi typedef enum
610*53ee8cc1Swenshuai.xi {
611*53ee8cc1Swenshuai.xi     E_HDMITX_AVI_PIXEL_FROMAT = 0, // Y[1:0]
612*53ee8cc1Swenshuai.xi     E_HDMITX_AVI_ASPECT_RATIO  = 1, // AR, AFD, TBEL, BBSL, LBEP, RBSP, BIValid, AFDValid, ScanInfo, ScalingInfo
613*53ee8cc1Swenshuai.xi     E_HDMITX_AVI_COLORIMETRY  = 2 // Colormetry and extended colorimetry
614*53ee8cc1Swenshuai.xi } MsHDMITX_AVI_CONTENT_TYPE;
615*53ee8cc1Swenshuai.xi 
616*53ee8cc1Swenshuai.xi 
617*53ee8cc1Swenshuai.xi /////////////Wilson:: for Kano, HDMITX 2.0 architecture @20150702
618*53ee8cc1Swenshuai.xi 
619*53ee8cc1Swenshuai.xi #define HDMITX_COLOR_DEPTH_TYPE_NUM 4
620*53ee8cc1Swenshuai.xi typedef struct
621*53ee8cc1Swenshuai.xi {
622*53ee8cc1Swenshuai.xi     MS_U8       MUX_DIVSEL_POST;
623*53ee8cc1Swenshuai.xi     MS_U8       TXPLL_DIVSEL_POST;
624*53ee8cc1Swenshuai.xi     MS_U8       TXPLL_DIVSEL_PIXEL;
625*53ee8cc1Swenshuai.xi     MS_U8       ICTRL_PREDRV_MAIN_L012;
626*53ee8cc1Swenshuai.xi     MS_U8       ICTRL_DRV_MAIN_L012;
627*53ee8cc1Swenshuai.xi     MS_U8       PD_RT;
628*53ee8cc1Swenshuai.xi     MS_U32      SynthSSCSet;
629*53ee8cc1Swenshuai.xi     //MS_FLOAT    SyncClk;
630*53ee8cc1Swenshuai.xi } stHDMITx_ATOP_SETTING;
631*53ee8cc1Swenshuai.xi 
632*53ee8cc1Swenshuai.xi 
633*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
634*53ee8cc1Swenshuai.xi //  Function and Variable
635*53ee8cc1Swenshuai.xi //-------------------------------------------------------------------------------------------------
636*53ee8cc1Swenshuai.xi #ifdef MHAL_HDMITX_C
637*53ee8cc1Swenshuai.xi #define INTERFACEE
638*53ee8cc1Swenshuai.xi #else
639*53ee8cc1Swenshuai.xi #define INTERFACEE extern
640*53ee8cc1Swenshuai.xi #endif
641*53ee8cc1Swenshuai.xi /*********************************************************************/
642*53ee8cc1Swenshuai.xi /*                                                                                                                     */
643*53ee8cc1Swenshuai.xi /*                                         HDCP22 Relative                                                    */
644*53ee8cc1Swenshuai.xi /*                                                                                                                     */
645*53ee8cc1Swenshuai.xi /*********************************************************************/
646*53ee8cc1Swenshuai.xi INTERFACEE void MHal_HDMITx_HDCP2TxInit(MS_BOOL bEnable);
647*53ee8cc1Swenshuai.xi INTERFACEE void MHal_HDMITx_HDCP2TxEnableEncryptEnable(MS_BOOL bEnable);
648*53ee8cc1Swenshuai.xi INTERFACEE void MHal_HDMITx_HDCP2TxFillCipherKey(MS_U8 *pu8Riv, MS_U8 *pu8KsXORLC128);
649*53ee8cc1Swenshuai.xi 
650*53ee8cc1Swenshuai.xi INTERFACEE void MHal_HDMITx_SetChipVersion(MS_U8 u8ChipVer);
651*53ee8cc1Swenshuai.xi INTERFACEE void Mhal_HDMITx_SetSCDCCapability(MS_BOOL bFlag);
652*53ee8cc1Swenshuai.xi INTERFACEE void MHal_HDMITx_Int_Disable(MS_U32 u32Int);
653*53ee8cc1Swenshuai.xi INTERFACEE void MHal_HDMITx_Int_Enable(MS_U32 u32Int);
654*53ee8cc1Swenshuai.xi INTERFACEE void MHal_HDMITx_Int_Clear(MS_U32 u32Int);
655*53ee8cc1Swenshuai.xi INTERFACEE MS_U32 MHal_HDMITx_Int_Status(void);
656*53ee8cc1Swenshuai.xi INTERFACEE MsHDMITX_RX_STATUS MHal_HDMITx_GetRXStatus(void);
657*53ee8cc1Swenshuai.xi INTERFACEE void MHal_HDMITX_SetHDCPConfig(MS_U8 HDCP_mode);
658*53ee8cc1Swenshuai.xi INTERFACEE MS_U16 MHal_HDMITX_GetM02Bytes(MS_U16 idx);
659*53ee8cc1Swenshuai.xi 
660*53ee8cc1Swenshuai.xi INTERFACEE void MHal_HDMITx_InitSeq(void);
661*53ee8cc1Swenshuai.xi INTERFACEE void MHal_HDMITx_VideoInit(void);
662*53ee8cc1Swenshuai.xi INTERFACEE void MHal_HDMITx_AudioInit(void);
663*53ee8cc1Swenshuai.xi INTERFACEE void MHal_HDMITx_PLLOnOff(MS_BOOL bflag);
664*53ee8cc1Swenshuai.xi INTERFACEE void MHal_HDMITx_PKT_User_Define_Clear(void);
665*53ee8cc1Swenshuai.xi INTERFACEE void MHal_HDMITx_PKT_User_Define(MsHDMITX_PACKET_TYPE packet_type, MS_BOOL def_flag,
666*53ee8cc1Swenshuai.xi         MsHDMITX_PACKET_PROCESS def_process, MS_U8 def_fcnt);
667*53ee8cc1Swenshuai.xi INTERFACEE MS_BOOL MHal_HDMITx_PKT_Content_Define(MsHDMITX_PACKET_TYPE packet_type, MS_U8* data, MS_U8 length);
668*53ee8cc1Swenshuai.xi INTERFACEE void MHal_HDMITx_SetTMDSOnOff(MS_BOOL bRB_Swap, MS_BOOL bTMDS);
669*53ee8cc1Swenshuai.xi INTERFACEE MS_U32 MHal_HDMITx_GetTMDSStatus(void);
670*53ee8cc1Swenshuai.xi INTERFACEE void MHal_HDMITx_SetVideoOnOff(MS_BOOL bVideo, MS_BOOL bCSC, MS_BOOL b709format);
671*53ee8cc1Swenshuai.xi INTERFACEE void MHal_HDMITx_SetColorFormat(MS_BOOL bCSC, MS_BOOL bHdmi422b12, MS_BOOL b709format);
672*53ee8cc1Swenshuai.xi INTERFACEE MS_BOOL MHal_HDMITx_CSC_Support_R2Y(void* pDatatIn);
673*53ee8cc1Swenshuai.xi INTERFACEE MS_BOOL MHal_HDMITx_ColorandRange_Transform(MsHDMITX_VIDEO_COLOR_FORMAT incolor, MsHDMITX_VIDEO_COLOR_FORMAT outcolor, MsHDMITX_YCC_QUANT_RANGE inrange, MsHDMITX_YCC_QUANT_RANGE outrange);
674*53ee8cc1Swenshuai.xi INTERFACEE MS_U8 MHal_HDMITx_InfoFrameCheckSum(MsHDMITX_PACKET_TYPE packet_type);
675*53ee8cc1Swenshuai.xi INTERFACEE void MHal_HDMITx_EnablePacketGen(MS_BOOL bflag);
676*53ee8cc1Swenshuai.xi INTERFACEE void MHal_HDMITx_SetHDMImode(MS_BOOL bflag, MsHDMITX_VIDEO_COLORDEPTH_VAL cd_val);
677*53ee8cc1Swenshuai.xi INTERFACEE void MHal_HDMITx_SetAudioOnOff(MS_BOOL bflag);
678*53ee8cc1Swenshuai.xi INTERFACEE void MHal_HDMITx_SetAudioFrequency(MsHDMITX_AUDIO_FREQUENCY afidx,
679*53ee8cc1Swenshuai.xi         MsHDMITX_AUDIO_CHANNEL_COUNT achidx, MsHDMITX_AUDIO_CODING_TYPE actidx
680*53ee8cc1Swenshuai.xi );
681*53ee8cc1Swenshuai.xi INTERFACEE void MHal_HDMITx_SetAudioSourceFormat(MsHDMITX_AUDIO_SOURCE_FORMAT fmt);
682*53ee8cc1Swenshuai.xi INTERFACEE MS_U32 MHal_HDMITx_GetAudioCTS(void);
683*53ee8cc1Swenshuai.xi INTERFACEE void MHal_HDMITx_MuteAudioFIFO(MS_BOOL bflag);
684*53ee8cc1Swenshuai.xi INTERFACEE void MHal_HDMITx_SetHDCPOnOff(MS_BOOL hdcp_flag, MS_BOOL hdmi_flag);
685*53ee8cc1Swenshuai.xi INTERFACEE void MHal_HDMITx_SendPacket(MsHDMITX_PACKET_TYPE enPktType, MsHDMITX_PACKET_PROCESS packet_process);
686*53ee8cc1Swenshuai.xi INTERFACEE void MHal_HDMITx_SetVideoOutputMode(MsHDMITX_VIDEO_TIMING idx, MS_BOOL bflag, MsHDMITX_VIDEO_COLORDEPTH_VAL cd_val, MsHDMITX_ANALOG_TUNING *pInfo, MS_U8 ubSSCEn);
687*53ee8cc1Swenshuai.xi INTERFACEE void MHal_HDMITx_SetVideoInfoByCustomer(MsHDMITX_VIDEO_TIMING idx, stHDMITX_TIMING_INFO_BY_CUSTOMER stTimingInfo);
688*53ee8cc1Swenshuai.xi INTERFACEE void MHal_HDMITx_Power_OnOff(MS_BOOL bEnable);
689*53ee8cc1Swenshuai.xi INTERFACEE void MHal_HDMITx_SetHPDGpioPin(MS_U8 u8pin);
690*53ee8cc1Swenshuai.xi INTERFACEE MS_BOOL MHal_HDMITx_RxBypass_Mode(MsHDMITX_INPUT_FREQ freq, MS_BOOL bflag);
691*53ee8cc1Swenshuai.xi INTERFACEE MS_BOOL MHal_HDMITx_Disable_RxBypass(void);
692*53ee8cc1Swenshuai.xi INTERFACEE MS_BOOL MHal_HDMITx_IsSupportDVIMode(void);
693*53ee8cc1Swenshuai.xi 
694*53ee8cc1Swenshuai.xi INTERFACEE void MHal_HDMITx_SetGCPParameter(stGC_PktPara stPktPara); //wilson@kano
695*53ee8cc1Swenshuai.xi INTERFACEE void MHal_HDMITx_SetAVIInfoParameter(stAVIInfo_PktPara stPktPara); //wilson@kano
696*53ee8cc1Swenshuai.xi INTERFACEE void MHal_HDMITx_SetVSInfoParameter(stVSInfo_PktPara stPktPara); //wilson@kano
697*53ee8cc1Swenshuai.xi INTERFACEE void MHal_HDMITx_SetAudioInfoParameter(stAUDInfo_PktPara stPktPara); //wilson@kano
698*53ee8cc1Swenshuai.xi 
699*53ee8cc1Swenshuai.xi INTERFACEE void MHal_HDMITx_EnableSSC(MS_BOOL bEnable, MS_U32 uiTMDSCLK);
700*53ee8cc1Swenshuai.xi INTERFACEE MS_U32 MHal_HDMITx_GetPixelClk_ByTiming(MsHDMITX_VIDEO_TIMING idx, MsHDMITX_VIDEO_COLOR_FORMAT color_fmt, MsHDMITX_VIDEO_COLORDEPTH_VAL color_depth);
701*53ee8cc1Swenshuai.xi INTERFACEE MS_U32 MHal_HDMITx_GetMaxPixelClk(void);
702*53ee8cc1Swenshuai.xi 
703*53ee8cc1Swenshuai.xi // *************  For customer NDS **************//
704*53ee8cc1Swenshuai.xi INTERFACEE void MHal_HDMITx_Set_AVI_InfoFrame(MsHDMITX_PACKET_PROCESS packet_process, MsHDMITX_AVI_CONTENT_TYPE content_type, MS_U16 *data);
705*53ee8cc1Swenshuai.xi 
706*53ee8cc1Swenshuai.xi #endif // _HAL_HDMITX_H_
707*53ee8cc1Swenshuai.xi 
708