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