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