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 /// @file Mapi_mhl.h 81 /// @author MStar Semiconductor Inc. 82 /// @brief MHL driver Function 83 /////////////////////////////////////////////////////////////////////////////////////////////////// 84 85 /* 86 1. Check whether MHL cable is plugged or not in Rx side 87 2. Disable R-term and output Vbus 88 3. Check whether Cbus is connected(discovery pulse completed) 89 4. Sink -> Source: "SET_HPD" 90 5. Sink -> Source: Write_Stat - "DCAP_RDY" and Write_INT - "DCAP_CHG" 91 6. Sink -> Source: Write_Stat - "PATH_EN" 92 */ 93 94 #ifndef _MDRV_MHL_ST_H_ 95 #define _MDRV_MHL_ST_H_ 96 97 #include "MsTypes.h" 98 #include "MsCommon.h" 99 100 #ifdef __cplusplus 101 extern "C" 102 { 103 #endif 104 105 //------------------------------------------------------------------------------------------------- 106 // Define 107 //------------------------------------------------------------------------------------------------- 108 #define MODIFY_FOR_LG_LAYOUT 0 109 #define DMHL_INT_ENABLE 0 // MHL interrupt enable 110 111 #define DMHL_CTS 1 // MHL setting for CTS 112 #define DMHL_TIMER_POLLING_COUNTER 0 113 #define DMHL_TIMER_POLLING_INTERVAL (!DMHL_TIMER_POLLING_COUNTER) 114 115 #define DEM_POLLING_DELAY 10U // Main Loop Polling interval (ms) 116 #define CBUS_COMMAND_TIMEOUT_SECS 2U // No response for 1 second means we hold off and move 117 #define CBUS_ABORT_PADING_SECS 2U // Allow bus to quieten down when ABORTs are received. 118 #define CBUS_TIMER_CONTROL_MASK 32768U 119 #define CBUS_TIMER_SECOND_COUNT 1010U 120 #define CBUS_MSC_WAIT_TIME_MS 150U 121 #define CBUS_SWITCH_MUX_TIME_MS 3500U 122 #define CBUS_POLLING_TIMER_INTERVAL 10U // Unit ms 123 #define CBUS_WAIT_MSC_RESPONSE_INTERVAL 101U // 10ms one unit 124 #define CBUS_MSG_RCP_RELEASE_INTERVAL 15U // 10ms one unit 125 #define CBUS_CHECK_CONTENT_ON_INTERVAL 101U // 10ms one unit 126 127 #define MHL_CBUS_0_SECOND_TIME 0U // ms 128 #define MHL_CBUS_1_SECOND_TIME 1000U // ms 129 #define MHL_CBUS_2_SECOND_TIME 2000U // ms 130 #define MHL_CBUS_3_SECOND_TIME 3000U // ms 131 #define MHL_CBUS_4_SECOND_TIME 4000U // ms 132 #define MHL_CBUS_IDEL_FREE_TIME 0U // ms 133 #define MHL_CBUS_CONNECT_SILENCE_TIME 50U // ms 134 #define MHL_CBUS_CONNECT_HOLD_TIME 150U // ms 135 #define MHL_CBUS_SEND_SILENCE_TIME MHL_CBUS_2_SECOND_TIME // ms 136 #define MHL_CBUS_ABORT_HOLD_TIME 2040U // ms 137 #define MHL_MSG_WAIT_RESPONSE_TIME MHL_CBUS_1_SECOND_TIME // ms 138 #define MHL_CBUS_RCP_RELEASE_TIME 150 // ms 139 #define MHL_WAIT_WRITE_GRANT_TIME 500U // ms 140 #define MHL_CHECK_RECEIVE_LOSE_TIME 20U // ms 141 #define MHL_MSG_SEND_RESPONSE_TIME 250U // ms 142 #define MHL_CHECK_CONTENT_ON_TIME MHL_CBUS_1_SECOND_TIME // ms 143 #define MHL_AUTO_SWITCH_STOP_TIME MHL_CBUS_2_SECOND_TIME // ms 144 #define MHL_WAIT_ECBUS_LOCK_TIME MHL_CBUS_3_SECOND_TIME // ms 145 #define MHL_AUTO_EQ_PROCESS_TIME 10U // ms 146 #define MHL_WAIT_PATCH_ON_TIME 80U // ms 147 #define MHL_WAIT_PATCH_OFF_TIME 50U // ms 148 149 #define DMHL_ADOPTER_ID 0x02CBU // Mstar: 715 150 #define DMHL_DEVICE_ID 0x0000U // Chip ID? 151 #define DMHL_VENDOR_ID 0x00U // ? 152 153 #define MHL_EDID_TABLE_SIZE 256U 154 #define MHL_DEVICE_CAPABILITY_SIZE 16U 155 #define MHL_XDEVICE_CAPABILITY_SIZE 4U 156 #define MHL_MSC_SCRATCHPAD_SIZE 16U 157 #define MHL_CBUS_DATA_SIZE (MHL_MSC_SCRATCHPAD_SIZE +2) // offset + maxi 16 packets 158 #define DMHL_CBUS_TX_FIFO (MHL_MSC_SCRATCHPAD_SIZE +3) // Write_Burst(0x6C) + offset(0x40 ~ 0x7F) + maxi 16 packets + EOF(0x32) 159 #define MHL_CBUS_TX_QUEUE_NUM 3U 160 #define MHL_CBUS_TOTAL_QUEUE_NUM ((MHL_CBUS_TX_QUEUE_NUM > 0)?(MHL_CBUS_TX_QUEUE_NUM +1):2) 161 #define MHL_CBUS_RX_QUEUE_INDEX (MHL_CBUS_TOTAL_QUEUE_NUM -1) 162 #define MHL_EMSC_DATA_SIZE 256U 163 #define MHL_EMSC_DATA_SIZE_THRESHOLD 150U 164 165 #define DMHL_CTS_HDCP_PATCH DISABLE// for CTS HDCP 2C-04 166 #define DMHL_LG_PRADA_PATCH ENABLE// for LG PRADA patch 167 #define DMHL_IGNORE_USB_PULSE_PATCH ENABLE // for ignore USB pulse patch 168 #define DMHL_DE_UNSTABLE_PATCH ENABLE 169 #define DMHL_WAKE_UP_PULSE_INT ENABLE 170 #define DMHL_CTS_SEND_MSC ENABLE 171 #define DMHL_TEST_HDCP_SOFTWARE_PATCH ENABLE 172 #define DMHL_AUTO_SENT_RAP_POLLING DISABLE 173 174 #define DMHL_TEST_SIGNAL_SUPPORT DISABLE 175 176 #define MHL_INPUT_PORT(a) (a +65) 177 178 #define MASKSET(a, b, c) ((a &~c) | (b &c)) 179 #define ABS_MINUS(a, b) ((a > b)? (a -b): (b -a)) 180 #define GET_BIT(a) (((a) > 0)? 1: 0) 181 182 #define MHL_EDID_BLOCK_LENGTH 128U 183 #define MHL_EDID_DTD_LENGTH 18U 184 #define MHL_EDID_FIRST_DTD_START 0x36U 185 #define MHL_EDID_SECOND_DTD_START 0x48U 186 #define MHL_EDID_EXTENSION_FLAG 0x7EU 187 #define MHL_EDID_RESERVED_DATA_BLOCK 0x82U 188 189 #define MHL_3D_SEQUENCE_LENGTH 5U 190 #define MHL_3D_ITEM_LENGTH 2U 191 #define MHL_3D_DTD_INFORMATION_LENGTH 8U 192 #define MHL_3D_VIC_INFORMATION_LENGTH 16U 193 194 #define MHL_VC_SEQUENCE_LENGTH 3U 195 #define MHL_VC_ITEM_LENGTH 3U 196 #define MHL_VIRTUAL_CHANNEL_LENGTH 7U 197 #define MHL_CBUS1_TIME_SLOT_DEFAULT 1U 198 #define MHL_EMSC_TIME_SLOT_DEFAULT 4U 199 #define MHL_ECBUS_S_TIME_SLOT_TOTAL 25U 200 #define MHL_CBUS_SLOT_NOT_ALLOCATE 0xFFU 201 202 #define MHL_HEV_VIC_SEQUENCE_LENGTH 5U 203 #define MHL_HEV_VIC_ITEM_LENGTH 2U 204 #define MHL_HEV_VIC_TOTAL_ENTRY 3U 205 #define MHL_HEV_VIC_INFORMATION_LENGTH 6U 206 #define MHL_HEV_VIC_INDEX0 0x5DU 207 #define MHL_HEV_VIC_INDEX1 0x5EU 208 #define MHL_HEV_VIC_INDEX2 0x5FU 209 #define MHL_HEV_VIC_INDEX3 0x62U 210 #define MHL_HEV_VIC_INDEX4 0x63U 211 #define MHL_HEV_VIC_INDEX5 0x64U 212 213 #define MHL_HEV_DTD_SEQUENCE_LENGTH 1U 214 #define MHL_HEV_DTD_TOTAL_ENTRY 1U 215 216 #define MHL_AUDIO_TUNNEL_SEQUENCE_LENGTH 3U 217 #define MHL_AUDIO_TUNNEL_ITEM_LENGTH 3U 218 #define MHL_AUDIO_TUNNEL_SAD_RNTRY 1U // Short audio descriptors 219 #define MHL_AUDIO_TUNNEL_SADB_RNTRY 0U // Speaker allocation data block 220 #define MHL_AUDIO_TUNNEL_TOTAL_ENTRY (MHL_AUDIO_TUNNEL_SAD_RNTRY +MHL_AUDIO_TUNNEL_SADB_RNTRY) 221 #define MHL_AUDIO_TUNNEL_INFORMATION_LENGTH 6U 222 #define MHL_AUDIO_TUNNEL_INDEX0 0UL 223 #define MHL_AUDIO_TUNNEL_INDEX1 0UL 224 #define MHL_AUDIO_TUNNEL_INDEX2 0UL 225 #define MHL_AUDIO_TUNNEL_INDEX3 0UL 226 #define MHL_AUDIO_TUNNEL_INDEX4 0UL 227 #define MHL_AUDIO_TUNNEL_INDEX5 0UL 228 229 #define MHL_EMSC_SUPPORT_SEQUENCE_LENGTH 5U 230 #define MHL_EMSC_SUPPORT_ITEM_LENGTH 2U 231 #define MHL_EMSC_SUPPORT_TOTAL_ENTRY 1U 232 #define MHL_EMSC_SUPPORT_INFORMATION_LENGTH 6U 233 #define MHL_EMSC_SUPPORT_BURST_ID0 0x0062U // MHL_BURST_ID_HID_PAYLOAD 234 #define MHL_EMSC_SUPPORT_BURST_ID1 0U 235 #define MHL_EMSC_SUPPORT_BURST_ID2 0U 236 #define MHL_EMSC_SUPPORT_BURST_ID3 0U 237 #define MHL_EMSC_SUPPORT_BURST_ID4 0U 238 #define MHL_EMSC_SUPPORT_BURST_ID5 0U 239 240 #define MHL_ADOPTER_ID_ROKU 0x0411U 241 #define MHL_ADOPTER_ID_HTC 0x016FU 242 243 #define MHL_DEVICE_ID_HTC 0x0000U 244 245 #define MHL_ADOPTER_ID_SONY 0x03A7U 246 247 #define MHL_POLLING_STACK_SIZE 1U 248 #define MHL_POLLING_INTERVAL_NORMAL 20U 249 #define MHL_POLLING_INTERVAL_BUSY 4U 250 251 //------------------------------------------------------------------------------------------------- 252 // Type and Structure 253 //------------------------------------------------------------------------------------------------- 254 enum MHL_QUEUE_STATE_TYPE 255 { 256 MHL_QUEUE_STATE_IDLE = 0, 257 MHL_QUEUE_STATE_SEND, 258 MHL_QUEUE_STATE_PENDING, 259 MHL_QUEUE_STATE_RETRY, 260 }; 261 262 enum MHL_CLEAR_CBUS_FLAG_TYPE 263 { 264 MHL_CLEAR_INITIAL_FLAG = 0, 265 MHL_CLEAR_CABLE_LOSS_FLAG, 266 MHL_CLEAR_CONNECT_LOSS_FLAG, 267 MHL_CLEAR_CBUS_TIME_OUT_FLAG, 268 MHL_CLEAR_MSG_RESPONSE_FLAG, 269 }; 270 271 enum CBUS_HEADER_TYPE 272 { 273 DDC_HEADER = 0, 274 VENDER_HEADER, 275 MSC_HEADER, 276 }; 277 278 enum CBUS_CONTROL_TYPE 279 { 280 CBUS_DATA = 0, 281 CBUS_CONTROL, 282 }; 283 284 enum CBUS_RECEIVE_STATE_TYPE 285 { 286 CBUS_RECEIVE_NORMAL = 0, 287 CBUS_RECEIVE_TIMEOUT, 288 }; 289 290 enum MHL_PHY_CLOCK_MODE_TYPE 291 { 292 MHL_PHY_CLOCK_RESERVED = 0, 293 MHL_PHY_CLOCK_PACKET_PIXEL = 2, 294 MHL_PHY_CLOCK_NORMAL_24BIT, 295 }; 296 297 enum MHL_VIEW_PIXEL_FORMATE_TYPE 298 { 299 MHL_VIEW_PIXEL_FORMATE_24BPP = 0, 300 MHL_VIEW_PIXEL_FORMATE_16BPP, 301 }; 302 303 enum VBUS_CONTROL_TYPE 304 { 305 VBUS_SW_UNCHARGE = 0, 306 VBUS_HW_DETECT, 307 VBUS_SW_CHARGE, 308 }; 309 310 enum MHL_3D_SUPPORT_TYPE 311 { 312 MHL_3D_FS_SUPPORT = BIT(0), 313 MHL_3D_TB_SUPPORT = BIT(1), 314 MHL_3D_LR_SUPPORT = BIT(2), 315 }; 316 317 enum MHL_3D_DTD_NUMBER_TYPE 318 { 319 MHL_3D_FIRST_DTD = 0, 320 MHL_3D_SECOND_DTD, 321 MHL_3D_THIRD_DTD, 322 }; 323 324 enum MHL_3D_DTD_STEREO_TYPE 325 { 326 MHL_3D_DTD_STEREO_NORMAL_DISPLAY = 0, 327 MHL_3D_DTD_STEREO_FIELD_SEQUENTIAL_RIGHT = 2, 328 MHL_3D_DTD_STEREO_FIELD_SEQUENTIAL_LEFT = 4, 329 MHL_3D_DTD_STEREO_2WAY_INTERLEAVED_RIGHT = 3, 330 MHL_3D_DTD_STEREO_2WAY_INTERLEAVED_LEFT = 5, 331 MHL_3D_DTD_STEREO_4WAY_INTERLEAVED = 6, 332 MHL_3D_DTD_STEREO_SIDE_BY_SIDE_INTERLEAVED = 7, 333 }; 334 335 enum MHL_EDID_DATA_BLOCK_CODE_TYPE 336 { 337 MHL_EDID_AUDIO_DATA_BLOCK_CODE = 1, 338 MHL_EDID_VIDEO_DATA_BLOCK_CODE = 2, 339 MHL_EDID_VENDER_SPECIFIC_DATA_BLOCK_CODE = 3, 340 MHL_EDID_SPEAKER_ALLOCATION_DATA_BLOCK_CODE = 4, 341 MHL_EDID_VESA_DTC_DATA_BLOCK_CODE = 5, 342 MHL_EDID_USE_EXTENDED_TAG_BLOCK_CODE = 7, 343 }; 344 345 enum MHL_VIC_PARSING_STATE_TYPE 346 { 347 MHL_VIC_PARSING_START = 0, 348 MHL_VIC_PARSING_CHECK_HDMI_VIDEO_PRESENT, 349 MHL_VIC_PARSING_CHECK_3D_PRESENT, 350 MHL_VIC_PARSING_CHECK_HDMI_VIC, 351 MHL_VIC_PARSING_3D_MULTI_PRESENT_00, 352 MHL_VIC_PARSING_3D_MULTI_PRESENT_01, 353 MHL_VIC_PARSING_3D_MULTI_PRESENT_10, 354 MHL_VIC_PARSING_CHECK_3D_STRUCTURE, 355 MHL_VIC_PARSING_CHECK_3D_PRESENT_TIMING, 356 MHL_VIC_PARSING_FINISH, 357 }; 358 359 enum MHL_3D_PRESENT_TIMING_VIC_TYPE 360 { 361 MHL_3D_PRESENT_VIC_1920x1080p24Hz = 32, 362 MHL_3D_PRESENT_VIC_1280x720p60Hz = 4, 363 MHL_3D_PRESENT_VIC_1920x1080i60Hz = 5, 364 MHL_3D_PRESENT_VIC_1280x720p50Hz = 19, 365 MHL_3D_PRESENT_VIC_1920x1080i50Hz = 20, 366 }; 367 368 typedef enum 369 { 370 RX_HDMI_RTERM = 0, // HDMI mode 371 RX_MHL_RTERM, // MHL mode 372 RX_RTERM_OFF, // R-term off 373 } RXRtermControl_T; 374 375 enum MHL_CBUS_WRITE_BURST_STATE_TYPE 376 { 377 MHL_CBUS_WRITE_BURST_NONE = 0, 378 MHL_CBUS_WRITE_BURST_START, 379 MHL_CBUS_WRITE_BURST_SEND_REQUEST, 380 MHL_CBUS_WRITE_BURST_REVEIVE_GRANT, 381 MHL_CBUS_WRITE_BURST_SEND_DATA, 382 MHL_CBUS_WRITE_BURST_REVEIVE_REQUEST, 383 MHL_CBUS_WRITE_BURST_SEND_GRANT, 384 MHL_CBUS_WRITE_BURST_RECEIVE_DATA, 385 MHL_CBUS_WRITE_BURST_END, 386 }; 387 388 enum MHL_CBUS_SEND_WRITE_BURST_TYPE 389 { 390 MHL_CBUS_SEND_WRITE_BURST_NONE = 0, 391 MHL_CBUS_SEND_WRITE_BURST_USER_DATA, 392 MHL_CBUS_SEND_WRITE_BURST_3D_INFORMATION, 393 MHL_CBUS_SEND_WRITE_BURST_VIRTUAL_CHANNEL, 394 MHL_CBUS_SEND_WRITE_BURST_HIGH_END_VIDEO, 395 MHL_CBUS_SEND_WRITE_BURST_AUDIO_DATA_TUNNEL, 396 MHL_CBUS_SEND_WRITE_BURST_EMSC_DATA_TUNNEL, 397 MHL_CBUS_SEND_WRITE_BURST_BIST_RETURN_STATUS, 398 }; 399 400 enum MHL_CBUS_RUSB_PROCESS_STATE_TYPE 401 { 402 MHL_CBUS_RUSB_NONE = 0, 403 MHL_CBUS_RUSB_START, 404 MHL_CBUS_RUSB_SOURCE_HOST, 405 MHL_CBUS_RUSB_REQUEST_HOST, 406 MHL_CBUS_RUSB_SINK_HOST, 407 MHL_CBUS_RUSB_RELINQUISH, 408 MHL_CBUS_RUSB_END, 409 }; 410 411 enum MHL_CBUS_RHID_PROCESS_STATE_TYPE 412 { 413 MHL_CBUS_RHID_NONE = 0, 414 MHL_CBUS_RHID_START, 415 MHL_CBUS_RHID_SOURCE_HOST, 416 MHL_CBUS_RHID_REQUEST_HOST, 417 MHL_CBUS_RHID_SINK_HOST, 418 MHL_CBUS_RHID_RELINQUISH, 419 MHL_CBUS_RHID_END, 420 }; 421 422 enum MHL_CBUS_BIST_PROCESS_STATE_TYPE 423 { 424 MHL_CBUS_BIST_NONE = 0, 425 MHL_CBUS_BIST_RECEIVE_SETUP, 426 MHL_CBUS_BIST_WAIT_TRIGGER, 427 MHL_CBUS_BIST_RECEIVE_TRIGGER, 428 MHL_CBUS_BIST_ECBUS_SWITCH, 429 MHL_CBUS_BIST_EVENT_FINISH, 430 MHL_CBUS_BIST_REQUEST_STATUS, 431 MHL_CBUS_BIST_RETURN_STATUS, 432 MHL_CBUS_BIST_END, 433 }; 434 435 enum MHL_CBUS_FEATURE_REQUEST_STATE_TYPE 436 { 437 MHL_CBUS_FEATURE_NONE = 0, 438 MHL_CBUS_FEATURE_START, 439 MHL_CBUS_FEATURE_SEND_3D_INFORMATION, 440 MHL_CBUS_FEATURE_SEND_HIGH_END_VIDEO, 441 MHL_CBUS_FEATURE_SEND_AUDIO_DATA_TUNNEL, 442 MHL_CBUS_FEATURE_SEND_EMSC_DATA_TUNNEL, 443 MHL_CBUS_FEATURE_SEND_FEATURE_COMPLETE, 444 MHL_CBUS_FEATURE_SEND_FEATURE_REQUEST, 445 MHL_CBUS_FEATURE_END, 446 }; 447 448 enum MHL_ECBUS_STATE_TYPE 449 { 450 MHL_ECBUS_STATE_NONE = 0, 451 MHL_ECBUS_STATE_RECEIVE_MODE_UP, 452 MHL_ECBUS_STATE_TRIGGER_MODE_UP, 453 MHL_ECBUS_STATE_PROCESS_MODE_UP, 454 MHL_ECBUS_STATE_MODE_UP_CLOCK_LOCK, 455 MHL_ECBUS_STATE_RECEIVE_MODE_DOWN, 456 MHL_ECBUS_STATE_TRIGGER_MODE_DOWN, 457 MHL_ECBUS_STATE_PROCESS_MODE_DOWN, 458 MHL_ECBUS_STATE_STABLE_POLLING, 459 MHL_ECBUS_STATE_UNLOCK_RESET, 460 MHL_ECBUS_STATE_BIST_MODE_UP, 461 MHL_ECBUS_STATE_BIST_MODE_DOWN, 462 MHL_ECBUS_STATE_END, 463 }; 464 465 enum MHL_ECBUS_EVENT_TYPE 466 { 467 MHL_ECBUS_EVENT_NONE = 0, 468 MHL_ECBUS_EVENT_PREPARE_MODE_UP, 469 MHL_ECBUS_EVENT_MODE_UP_PROCESS, 470 MHL_ECBUS_EVENT_PREPARE_MODE_DOWN, 471 MHL_ECBUS_EVENT_MODE_DOWN_PROCESS, 472 MHL_ECBUS_EVENT_UNLOCK_RESET, 473 MHL_ECBUS_EVENT_STUCK_TO_LOW, 474 MHL_ECBUS_EVENT_ECBUS_COMMAND_PARSING, 475 MHL_ECBUS_EVENT_BIST_TRIGGER, 476 MHL_ECBUS_EVENT_POWER_ON_PATCH_ON, 477 MHL_ECBUS_EVENT_POWER_ON_PATCH_OFF, 478 }; 479 480 enum MHL_ECBUS_STATUS_FLAG_TYPE 481 { 482 MHL_ECBUS_STATUS_TRAINING_PASS = BIT(0), 483 MHL_ECBUS_STATUS_CLOCK_LOCK = BIT(1), 484 MHL_ECBUS_STATUS_SLOT_SYNC_DONE = BIT(2), 485 MHL_ECBUS_STATUS_EMSC_SYNC_DONE = BIT(3), 486 MHL_ECBUS_STATUS_RETRY_TIMEOUT = BIT(4), 487 }; 488 489 enum MHL_EMSC_SEND_STATUS_TYPE 490 { 491 MHL_EMSC_SEND_NONE = 0, 492 MHL_EMSC_SEND_DATA, 493 MHL_EMSC_SEND_CHECK, 494 MHL_EMSC_SEND_PASS, 495 MHL_EMSC_SEND_FAIL, 496 }; 497 498 enum MHL_ECBUS_TRAINING_STATE_TYPE 499 { 500 MHL_ECBUS_STATE_DISABLE = 0, 501 MHL_ECBUS_STATE_WAIT_CLOCK_LOCK, 502 MHL_ECBUS_STATE_WAIT_SEND_CLOCK, 503 MHL_ECBUS_STATE_SEND_CLOCK, 504 MHL_ECBUS_STATE_SEND_COMMA1, 505 MHL_ECBUS_STATE_RECEIVE_COMMA2, 506 MHL_ECBUS_STATE_SEND_COMMA2, 507 MHL_ECBUS_STATE_SOURCE_ACTIVE, 508 MHL_ECBUS_STATE_ACTIVE, 509 MHL_ECBUS_STATE_FAIL = 10, 510 MHL_ECBUS_STATE_TRAINING_NONE, 511 }; 512 513 enum MHL_ECBUS_TRAIN_STATE_TYPE 514 { 515 MHL_ECBUS_TRAIN_IDLE = 0, 516 MHL_ECBUS_TRAIN_WAIT_CLOCK_LOCK, 517 MHL_ECBUS_TRAIN_ADJUST_TXLOC, 518 MHL_ECBUS_TRAIN_ADJUST_TXLOC_OK, 519 MHL_ECBUS_TRAIN_DELAY_REVERIFY, 520 MHL_ECBUS_TRAIN_WAIT_RRCEIVE_COMMA2, 521 MHL_ECBUS_TRAIN_ADJUST_CAP, 522 MHL_ECBUS_TRAIN_DONE, 523 MHL_ECBUS_TRAIN_FAIL, 524 }; 525 526 enum 527 { 528 MSC_NONE = 0x00, 529 MSC_ACK = 0x33, // Command/Data byte acknowledged 530 MSC_NACK = 0x34, // Command or Data byte not acknowledge 531 MSC_ABORT = 0x35, // Transaction abort 532 MSC_WRITE_STAT_OR_SET_INT = 0x60, // Write one status or interrupt register 533 MSC_READ_DEVCAP = 0x61, // Read one register 534 MSC_GET_STATE = 0x62, // Read CBUS revision level from follower 535 MSC_GET_VENDOR_ID = 0x63, // Read vendor ID value from follower. 536 MSC_SET_HPD = 0x64, // Set Hot Plug Detect in follower 537 MSC_CLR_HPD = 0x65, // Clear Hot Plug Detect in follower 538 MSC_MSC_MSG = 0x68, // VS command to send RCP sub-commands 539 MSC_GET_SC1_ERRORCODE = 0x69, // Get Vendor-Specific command error code. 540 MSC_GET_DDC_ERRORCODE = 0x6A, // Get DDC channel command error code. 541 MSC_GET_MSC_ERRORCODE = 0x6B, // Get MSC command error code. 542 MSC_WRITE_BURST = 0x6C, // Write 1-16 bytes to responder�s scratchpad. 543 MSC_GET_SC3_ERRORCODE = 0x6D, // Get channel 3 command error code. 544 MSC_WRITE_XSTAT = 0x70, // Extend write one status 545 MSC_READ_XDEVCAP = 0x71, // Extend read device capability 546 MSC_EOF = 0x32, // End of Frame 547 MSC_RESERVED = 0xFF, 548 }; //MscCtrlPkt_T; 549 550 enum 551 { 552 MSC_MSG_MSGE = 0x02, // MSG Error sub-command 553 MSC_MSG_RCP = 0x10, // RCP sub-command 554 MSC_MSG_RCPK = 0x11, // RCP Acknowledge sub-command 555 MSC_MSG_RCPE = 0x12, // RCP Error sub-command 556 MSC_MSG_RAP = 0x20, // Mode Change Warning sub-command 557 MSC_MSG_RAPK = 0x21, // MCW Acknowledge sub-command 558 MSC_MSG_RBP = 0x22, // Remote Button Protocol sub- command 559 MSC_MSG_RBPK = 0x23, // RBP Acknowledge sub-command 560 MSC_MSG_RBPE = 0x24, // RBP Error sub-command 561 MSC_MSG_UCP = 0x30, // UCP sub-command 562 MSC_MSG_UCPK = 0x31, // UCP Acknowledge sub-command 563 MSC_MSG_UCPE = 0x32, // UCP Error sub-command 564 MSC_MSG_RUSB = 0x40, // Request USB host role 565 MSC_MSG_RUSBK = 0x41, // Acknowledge request for USB host role 566 MSC_MSG_RHID = 0x42, // Request HID host role 567 MSC_MSG_RHIDK = 0x43, // Acknowledge request for HID host role 568 MSC_MSG_ATT = 0x50, // Request Attention sub-command 569 MSC_MSG_ATTK = 0x51, // ATT Acknowledge sub-command 570 MSC_MSG_BIST_TRIGGRT = 0x60, // BIST Trigger sub-command 571 MSC_MSG_BIST_REQUEST_STAT = 0x61, // BIST Request Status sub-command 572 MSC_MSG_BIST_READY = 0x62, // BIST Ready sub-command 573 MSC_MSG_BIST_STOP = 0x63, // BIST Stop sub-command 574 MSC_MSG_SI_UNKNOWN = 0xF0, // SI used unknow sub-command 575 MSC_MSG_SI_UNKNOWNK = 0xF1, // SI used unknow acknowledge sub-command 576 }; //MscMsgSubCmd_T; 577 578 enum 579 { 580 MSC_ERRORCODE_NO_ERROR = 0x00, // Normal response, no error 581 MSC_ERRORCODE_RETRY_EXCEEDED = 0x01, // Re-try threshold exceeded 582 MSC_ERRORCODE_PROTOCOL_ERROR = 0x02, // Protocol error 583 MSC_ERRORCODE_PEER_TIMEOUT = 0x04, // Peer timed out 584 MSC_ERRORCODE_INVALID_OPCODE = 0x08, // Invalid op code 585 MSC_ERRORCODE_BAD_OFFSET = 0x10, // Bad offset in command 586 MSC_ERRORCODE_PEER_BUSY = 0x20, // Peer is busy, can't process new request 587 }; 588 589 enum MHL_MSGE_STATUS_CODE 590 { 591 MHL_MSGE_NO_ERROR = 0x00, // MSGE No Error 592 MHL_MSGE_INVALID_SUB_COMMAND_CODE = 0x01, 593 }; 594 595 enum MHL_RCP_STATUS_CODE 596 { 597 MHL_RCP_NO_ERROR = 0x00, // RCP No Error 598 MHL_RCP_INEFFECTIVE_KEY_CODE = 0x01, // The key code in the RCP sub-command is not recognized 599 MHL_RCP_RESPONDER_BUSY = 0x02, // RCP Response busy 600 }; 601 602 enum MHL_RAP_STATUS_CODE 603 { 604 MHL_RAP_NO_ERROR = 0x00, // RAP No Error 605 MHL_RAP_UNRECOGNIZED_ACTION_CODE = 0x01, 606 MHL_RAP_UNSUPPORTED_ACTION_CODE = 0x02, 607 MHL_RAP_RESPONDER_BUSY = 0x03, 608 }; 609 610 enum MHL_UCP_STATUS_CODE 611 { 612 MHL_UCP_NO_ERROR = 0x00, // UCP No Error 613 MHL_UCP_INEFFECTIVE_KEY_CODE = 0x01, // The key code in the UCP sub-command is not recognized 614 }; 615 616 enum MHL_ATT_STATUS_CODE 617 { 618 MHL_ATT_NO_ERROR = 0x00, // ATT No Error 619 MHL_ATT_UNRECOGNIZED_ACTION_CODE = 0x01, // The key code in the ATT sub-command is not recognized 620 MHL_ATT_UNSUPPORTED_ACTION_CODE = 0x02, 621 MHL_ATT_RESPONDER_BUSY = 0x03, 622 }; 623 624 enum MHL_RBP_STATUS_CODE 625 { 626 MHL_RBP_NO_ERROR = 0x00, // RBP No Error 627 MHL_RBP_INEFFECTIVE_BUTTON_CODE = 0x01, // The key code in the RBP sub-command is not recognized 628 MHL_RBP_RESPONDER_BUSY = 0x02, // RBP Response busy 629 }; 630 631 enum MHL_RUSB_STATUS_CODE 632 { 633 MHL_RUSB_NO_ERROR = 0x00, // RUSB No Error 634 MHL_RUSB_INVALID_CODE = 0x01, 635 MHL_RUSB_DENY = 0x02, 636 }; 637 638 enum MHL_RHID_STATUS_CODE 639 { 640 MHL_RHID_NO_ERROR = 0x00, // RHID No Error 641 MHL_RHID_INVALID_CODE = 0x01, 642 MHL_RHID_DENY = 0x02, 643 }; 644 645 enum MHL_BIST_REQ_KEY_TYPE 646 { 647 MHL_BIST_REQ_NOTHING = 0x00, 648 MHL_BIST_REQ_RETURN_STATUS = 0x01, 649 }; 650 651 enum MHL_VC_FEATURE_ID_TYPE 652 { 653 MHL_VC_FEATURE_ID_EMSC = 0x00, 654 MHL_VC_FEATURE_ID_USB = 0x01, 655 MHL_VC_FEATURE_ID_AUDIO = 0x02, 656 MHL_VC_FEATURE_ID_IP_PACKET = 0x03, 657 MHL_VC_FEATURE_ID_COMPRESSED_VIDEO = 0x04, 658 MHL_VC_FEATURE_ID_HID = 0x05, 659 MHL_VC_FEATURE_ID_END, 660 }; 661 662 enum MHL_VC_RESPONSE_CODE_TYPE 663 { 664 MHL_VC_RESPONSE_ACCEPT = 0x00, 665 MHL_VC_RESPONSE_REJECT_NUMBER = 0x01, 666 MHL_VC_RESPONSE_REJECT_FEATURE_ID = 0x02, 667 MHL_VC_RESPONSE_REJECT_CHANNEL_SIZE = 0x03, 668 }; 669 670 enum CBUS_DEVCAP_TYPE 671 { 672 MHL_CBUS_DEV_STATE = 0, 673 MHL_CBUS_VERSION, 674 MHL_CBUS_DEV_CAT, 675 MHL_CBUS_ADOPTER_ID_H, 676 MHL_CBUS_ADOPTER_ID_L, 677 MHL_CBUS_VID_LINK_MODE, 678 MHL_CBUS_AUD_LINK_MODE, 679 MHL_CBUS_VIDEO_TYPE, 680 MHL_CBUS_LOG_DEV_MAP, 681 MHL_CBUS_BANDWIDTH, 682 MHL_CBUS_FEATURE_FLAG, 683 MHL_CBUS_DEVICE_ID_H, 684 MHL_CBUS_DEVICE_ID_L, 685 MHL_CBUS_SCRATCHPAD_SIZE, 686 MHL_CBUS_INT_STAT, 687 MHL_CBUS_RESERVED, 688 MHL_CBUS_ECBUS_SPEEDS, 689 MHL_CBUS_TMDS_SPEEDS, 690 MHL_CBUS_ECBUS_DEV_ROLES, 691 MHL_CBUS_LOG_DEV_MAPX, 692 }; 693 694 enum MHL_DEVICE_TYPE 695 { 696 MHL_DEVICE_SINK = 1, 697 MHL_DEVICE_SOURCE = 2, 698 MHL_DEVICE_DONGLE = 3, 699 MHL_DEVICE_DIRECT_ATTACH_SINK = 5, 700 MHL_DEVICE_DIRECT_ATTACH_SOURCE = 6, 701 }; 702 703 enum MHL_AV_LINK_RATE_TYPE 704 { 705 MHL_AV_LINK_150 = 0, 706 MHL_AV_LINK_300, 707 MHL_AV_LINK_600, 708 MHL_AV_LINK_NONE, 709 }; 710 711 enum MHL_BIST_AV_LINK_RATE_TYPE 712 { 713 MHL_BIST_AV_LINK_RESERVED = 0, 714 MHL_BIST_AV_LINK_150 = 1, 715 MHL_BIST_AV_LINK_300 = 2, 716 MHL_BIST_AV_LINK_600 = 3, 717 }; 718 719 enum MHL_BIST_ECBUS_PATTERN_TYPE 720 { 721 MHL_BIST_ECBUS_PATTERN_RESERVED = 0, 722 MHL_BIST_ECBUS_PATTERN_PRBS = 1, 723 MHL_BIST_ECBUS_PATTERN_FIXED8 = 2, 724 MHL_BIST_ECBUS_PATTERN_FIXED10 = 3, 725 }; 726 727 enum MHL_BIST_LINK_PATTERN_TYPE 728 { 729 MHL_BIST_LINK_PATTERN_RESERVED = 0, 730 MHL_BIST_LINK_PATTERN_PRBS = 1, 731 MHL_BIST_LINK_PATTERN_FIXED8 = 2, 732 MHL_BIST_LINK_PATTERN_FIXED10 = 3, 733 }; 734 735 enum MHL_BIST_IMPEDANCE_MODE_TYPE 736 { 737 MHL_BIST_IMPEDANCE_AV_LINK_TX_LOW = 0, 738 MHL_BIST_IMPEDANCE_AV_LINK_TX_HIGH = 1, 739 MHL_BIST_IMPEDANCE_AV_LINK_RX = 2, 740 MHL_BIST_IMPEDANCE_ECBUS_D_TX_LOW = 4, 741 MHL_BIST_IMPEDANCE_ECBUS_D_TX_HIGH = 5, 742 MHL_BIST_IMPEDANCE_ECBUS_D_RX = 6, 743 MHL_BIST_IMPEDANCE_ECBUS_S_TX_LOW = 8, 744 MHL_BIST_IMPEDANCE_ECBUS_S_TX_HIGH = 9, 745 MHL_BIST_IMPEDANCE_ECBUS_S_RX = 10, 746 }; 747 748 enum MHL_RAP_KEY_TYPE 749 { 750 MHL_RAP_KEY_POLL = 0x00, 751 MHL_RAP_KEY_CONTENT_ON = 0x10, 752 MHL_RAP_KEY_CONTENT_OFF = 0x11, 753 MHL_RAP_KEY_CBUS_MODE_DOWN = 0x20, 754 MHL_RAP_KEY_CBUS_MODE_UP = 0x21, 755 }; 756 757 enum MHL_BURST_ID_TYPE 758 { 759 MHL_BURST_ID_3D_VIC = 0x0010, 760 MHL_BURST_ID_3D_DTD = 0x0011, 761 MHL_BURST_ID_HEV_VIC = 0x0020, 762 MHL_BURST_ID_HEV_DTDA = 0x0021, 763 MHL_BURST_ID_HEV_DTDB = 0x0022, 764 MHL_BURST_ID_VC_ASSIGN = 0x0038, 765 MHL_BURST_ID_VC_CONFIRM = 0x0039, 766 MHL_BURST_ID_AUD_DELAY = 0x0040, 767 MHL_BURST_ID_ADT_BURSTID = 0x0041, 768 MHL_BURST_ID_BIST_SETUP = 0x0051, 769 MHL_BURST_ID_BIST_RETURN_STAT = 0x0052, 770 MHL_BURST_ID_BIST_DISCARD = 0x0053, 771 MHL_BURST_ID_BIST_ECHO_REQUEST = 0x0054, 772 MHL_BURST_ID_BIST_ECHO_RESPONSE = 0x0055, 773 MHL_BURST_ID_EMSC_SUPPORT = 0x0061, 774 MHL_BURST_ID_HID_PAYLOAD = 0x0062, 775 MHL_BURST_ID_BLK_RCV_BUFFER_INFO = 0x0063, 776 MHL_BURST_ID_BITS_PER_PIXEL_FMT = 0x0064, 777 }; 778 779 enum MHL_VIC_INDEX_TYPE 780 { 781 MHL_VIC_INDEX1 = 1, // 640x480p@60 782 MHL_VIC_INDEX2, // 720x480p@60 783 MHL_VIC_INDEX3, // 720x480p@60 784 MHL_VIC_INDEX4, // 1280x720p@60 785 MHL_VIC_INDEX5, // 1920x1080i@60 786 MHL_VIC_INDEX6, // 720x480i@60 787 MHL_VIC_INDEX7, // 720x480i@60 788 MHL_VIC_INDEX16 = 16, // 1920x1080p@60 789 MHL_VIC_INDEX17, // 720x576p@50 790 MHL_VIC_INDEX18, // 720x576p@50 791 MHL_VIC_INDEX19, // 1280x720p@50 792 MHL_VIC_INDEX20, // 1920x1080i@50 793 MHL_VIC_INDEX21, // 720x576i@50 794 MHL_VIC_INDEX22, // 720x576i@50 795 MHL_VIC_INDEX31 = 31, // 1920x1080p@50 796 MHL_VIC_INDEX34 = 34, // 1920x1080p@30 797 MHL_VIC_INDEX63 = 63, // 1920x1080p@120 798 MHL_VIC_INDEX64, // 1920x1080p@100 799 MHL_VIC_INDEX93 = 93, // 3840x2160p@24 800 MHL_VIC_INDEX94, // 3840x2160p@25 801 MHL_VIC_INDEX95, // 3840x2160p@30 802 MHL_VIC_INDEX98 = 98, // 4096x2160p@24 803 MHL_VIC_INDEX99, // 4096x2160p@25 804 MHL_VIC_INDEX100, // 4096x2160p@30 805 }; 806 807 enum MHL_TIMER_EVENT_TYPE 808 { 809 MHL_TIMER_EVENT_CBUS_SILENCE = 0, 810 MHL_TIMER_EVENT_DISPLAY_COMMAND, 811 MHL_TIMER_EVENT_WAIT_MSG_RESPONSE, 812 MHL_TIMER_EVENT_RCP_AUTO_RELEASE, 813 MHL_TIMER_EVENT_WAIT_WRITE_GRANT, 814 MHL_TIMER_EVENT_CHECK_RECEIVE_LOSE, 815 MHL_TIMER_EVENT_SEND_MSG_RESPONSE, 816 MHL_TIMER_EVENT_CHECK_CONTENT_ON, 817 MHL_TIMER_EVENT_AUTO_SWITCH_STOP, 818 MHL_TIMER_EVENT_WAIT_ECBUS_LOCK, 819 MHL_TIMER_EVENT_AUTO_EQ_PROCESS, 820 MHL_TIMER_EVENT_BIST_PROCESS, 821 MHL_TIMER_EVENT_TX_QUQUE_FREEZE, 822 MHL_TIMER_EVENT_POWER_ON_PATCH, 823 MHL_TIMER_EVENT_MASK, 824 }; 825 826 enum MHL_POWER_ON_PATCH_STATE_TYPE 827 { 828 MHL_POWER_ON_PATCH_STATE_NONE = 0, 829 MHL_POWER_ON_PATCH_STATE_START, 830 MHL_POWER_ON_PATCH_STATE_WAIT_PATCH_ON, 831 MHL_POWER_ON_PATCH_STATE_PATCH_ON, 832 MHL_POWER_ON_PATCH_STATE_WAIT_PATCH_OFF, 833 MHL_POWER_ON_PATCH_STATE_PATCH_OFF, 834 MHL_POWER_ON_PATCH_STATE_DONE, 835 }; 836 837 typedef struct 838 { 839 MS_BOOL bEnableFlag; 840 MS_U16 usTimerTick; 841 } stMHL_TIMER_EVENT_INFO; 842 843 typedef struct 844 { 845 MS_U8 ucQueueState; 846 MS_U8 ucData[MHL_CBUS_DATA_SIZE +1]; // Cbus message data 847 MS_U8 ucCommand; // MSC command 848 MS_U8 ucLength; // message length 849 } stMHL_QUEUE_INFO; 850 851 typedef struct 852 { 853 MS_U8 lens; 854 MS_U16 databuf[DMHL_CBUS_TX_FIFO]; 855 } mhalCbusFifo_S; 856 857 typedef struct 858 { 859 MS_BOOL bVCConfirm; 860 MS_U8 ucVCNumber; 861 MS_U8 ucVCSlotSize; 862 MS_U8 ucVCResponseCode; 863 MS_U8 ucVCFeatureID; 864 } stMHL_VIRTUAL_CHANNEL_INFO; 865 866 typedef struct 867 { 868 MS_BOOL bBISTeCbusTxFlag; 869 MS_BOOL bBISTeCbusRxFlag; 870 MS_U8 ucBISTReadyIndex; 871 MS_U8 ucBISTeCbusPattern; 872 MS_U8 ucBISTAVLinkPattern; 873 MS_U8 ucBISTAVLinkRate; 874 MS_U8 ucBISTAVLinkMode; 875 MS_U8 ucBISTAVLinkRateRandomizer; 876 MS_U8 ucBISTImpedanceMode; 877 MS_U16 usBISTeCbusPatternFixed; 878 MS_U16 usBISTeCbusDuration; 879 MS_U16 usBISTeCbusErrorCount; 880 MS_U16 usBISTAVLinkFixed; 881 MS_U16 usBISTAVLinkDuration; 882 MS_U16 usBISTAVLinkErrorCount; 883 } stMHL_BIST_MODE_INFO; 884 885 typedef struct 886 { 887 MS_BOOL bAutoEnableFlag; 888 MS_BOOL bECbusEnableFlag; 889 MS_BOOL bBISTEnableFlag; 890 MS_BOOL bClockStableFlag; 891 MS_BOOL bSignalStableFlag; 892 MS_U8 ucMainLinkRate; 893 MS_U8 ucAutoEQState; 894 MS_U8 ucStableCount; 895 MS_U8 ucECbusTrainState; 896 MS_U8 ucImpedanceValue; 897 MS_U8 ucImpedanceOffset; 898 MS_U8 ucIControlValue; 899 } stMHL_SIGNAL_STATUS_INFO; 900 901 //------------------------------------------------------------------------------------------------- 902 // Type and Structure 903 //------------------------------------------------------------------------------------------------- 904 enum MHL_SYSTEM_FLAG_TYPE 905 { 906 MHL_SYSTEM_CABLE_PLUG_FLAG = BIT(0), 907 MHL_SYSTEM_CBUS_CONNECT_FLAG = BIT(1), 908 MHL_SYSTEM_SOURCE_CHANGE_FLAG = BIT(2), 909 MHL_SYSTEM_CBUS_ENHANCE_FLAG = BIT(3), 910 MHL_SYSTEM_CBUS_NORMAL_FLAG = BIT(4), 911 MHL_SYSTEM_RECEIVE_LOSE_FLAG = BIT(5), 912 MHL_SYSTEM_CBUS_ISR_ATTACH_FLAG = BIT(6), 913 MHL_SYSTEM_ECBUS_ISR_ATTACH_FLAG = BIT(7), 914 MHL_SYSTEM_DISPLAY_COMMAND_ENABLE_FLAG = BIT(8), 915 MHL_SYSTEM_FORCE_SEND_COMMAND_FLAG = BIT(9), 916 MHL_SYSTEM_AUTO_SWITCH_SETTING_FLAG = BIT(11), 917 MHL_SYSTEM_CHECK_CONTENT_ENABLE_FLAG = BIT(12), 918 MHL_SYSTEM_GET_BASE_SUCCESS_FLAG = BIT(13), 919 MHL_SYSTEM_SELF_CREATE_TASK_FLAG = BIT(14), 920 MHL_SYSTEM_TASK_PROCESS_FLAG = BIT(15), 921 MHL_SYSTEM_PREVENT_REINITIAL_FLAG = BIT(16), 922 }; 923 924 enum MHL_CHIP_CAPABILITY_TYPE 925 { 926 MHL_CHIP_FORCE_SEND_COMMAND_FLAG = BIT(0), 927 MHL_CHIP_INTERRUPT_USE_PM_IRQ_FLAG = BIT(1), 928 MHL_CHIP_ECBUS_ENGINE_SUPPORT_FLAG = BIT(2), 929 MHL_CHIP_SELF_CREATE_TASK_FLAG = BIT(3), 930 }; 931 932 enum MHL_TIMER_FLAG_TYPE 933 { 934 MHL_TIMER_CBUS_SILENCE_FLAG = BIT(0), 935 MHL_TIMER_DISPLAY_COMMAND_FLAG = BIT(1), 936 MHL_TIMER_WAIT_MSG_RESPONSE_FLAG = BIT(2), 937 MHL_TIMER_RCP_AUTO_RELEASE_FLAG = BIT(3), 938 MHL_TIMER_WAIT_WRITE_GRANT_FLAG = BIT(4), 939 MHL_TIMER_CHECK_RECEIVE_LOSE_FLAG = BIT(5), 940 MHL_TIMER_SEND_MSG_RESPONSE_FLAG = BIT(6), 941 MHL_TIMER_CHECK_CONTENT_ON_FLAG = BIT(7), 942 MHL_TIMER_AUTO_SWITCH_STOP_FLAG = BIT(8), 943 MHL_TIMER_WAIT_ECBUS_LOCK_FLAG = BIT(9), 944 MHL_TIMER_AUTO_EQ_PROCESS_FLAG = BIT(10), 945 MHL_TIMER_BIST_PROCESS_FLAG = BIT(11), 946 MHL_TIMER_TX_QUEUE_FREEZE_FLAG = BIT(12), 947 MHL_TIMER_POWER_ON_PATCH_FLAG = BIT(13), 948 }; 949 950 enum MHL_CBUS_DISPLAY_FLAG_TYPE 951 { 952 MHL_CBUS_HPD_SET_FLAG = BIT(0), 953 MHL_CBUS_PATH_EN_FLAG = BIT(1), 954 MHL_CBUS_VERSION_CODE_FLAG = BIT(2), 955 MHL_CBUS_DEVCAP_READY_FLAG = BIT(3), 956 MHL_CBUS_DEVCAP_CHANGE_FLAG = BIT(4), 957 MHL_CBUS_LINK_STATUS_NORMAL_FLAG = BIT(5), 958 }; 959 960 enum MHL_PROC_DONE_FLAG_TYPE 961 { 962 MHL_GET_VENDER_ID_DONE_FLAG = BIT(0), 963 MHL_READ_DEVCAP_DONE_FLAG = BIT(1), 964 MHL_READ_XDEVCAP_DONE_FLAG = BIT(2), 965 MHL_AUTO_SWITCH_DONE_FLAG = BIT(3), 966 }; 967 968 enum MHL_ENABLE_FLAG_TYPE 969 { 970 MHL_ENABLE_CBUS_SEND_FLAG = BIT(0), 971 MHL_ENABLE_READ_DEVCAP_FLAG = BIT(1), 972 MHL_ENABLE_READ_XDEVCAP_FLAG = BIT(2), 973 MHL_ENABLE_GET_VENDER_ID_FLAG = BIT(3), 974 MHL_ENABLE_RCP_FUNCTION_FLAG = BIT(4), 975 MHL_ENABLE_RAP_FUNCTION_FLAG = BIT(5), 976 MHL_ENABLE_UCP_FUNCTION_FLAG = BIT(6), 977 MHL_ENABLE_RBP_FUNCTION_FLAG = BIT(7), 978 MHL_ENABLE_ECBUS_FUNCTION_FLAG = BIT(8), 979 MHL_ENABLE_AUTO_SWITCH_FLAG = BIT(9), 980 MHL_ENABLE_CBUS_TX_QUEUE_FREEZE_FLAG = BIT(10), 981 MHL_ENABLE_CHECK_CONTENT_ON_FLAG = BIT(11), 982 MHL_ENABLE_AUTO_SWITCH_STOP_FLAG = BIT(12), 983 MHL_ENABLE_CALLBACK_FUNCTION_FLAG = BIT(13), 984 MHL_ENABLE_AUTO_EQ_FUNCTION_FLAG = BIT(14), 985 MHL_ENABLE_COMMUNICATE_BUSY_FLAG = BIT(15), 986 MHL_ENABLE_CBUS1_FUNCTION_FLAG = BIT(16), 987 MHL_ENABLE_EMSC_FUNCTION_FLAG = BIT(17), 988 }; 989 990 enum MHL_RECEIVE_FLAG_TYPE 991 { 992 MHL_CBUS_RECEIVE_MSC_FLAG = BIT(0), 993 MHL_CBUS_RECEIVE_ACK_FLAG = BIT(1), 994 MHL_CBUS_RECEIVE_ABORT_FLAG = BIT(2), 995 MHL_CBUS_RECEIVE_MSG_FLAG = BIT(3), 996 MHL_CBUS_RECEIVE_WAKE_FLAG = BIT(4), 997 MHL_CBUS_RECEIVE_ERROR_FLAG = BIT(5), 998 MHL_CBUS_RECEIVE_DEVCAP_FLAG = BIT(6), 999 MHL_CBUS_RECEIVE_XDEVCAP_SUPPORT_FLAG = BIT(7), 1000 MHL_CBUS_RECEIVE_PATH_EN_FLAG = BIT(8), 1001 MHL_CBUS_RECEIVE_MUTED_FLAG = BIT(9), 1002 MHL_CBUS_RECEIVE_MHL3_VERSION_FLAG = BIT(10), 1003 MHL_CBUS_RECEIVE_3D_REQ_FLAG = BIT(11), 1004 MHL_CBUS_RECEIVE_VC_ASSIGN_FLAG = BIT(12), 1005 MHL_CBUS_RECEIVE_FEATURE_REQUEST_FLAG = BIT(13), 1006 MHL_CBUS_RECEIVE_FEATURE_COMPLETE_FLAG = BIT(14), 1007 MHL_CBUS_RECEIVE_LINK_RATE_FLAG = BIT(15), 1008 MHL_CBUS_RECEIVE_24BIT_MODE_FLAG = BIT(16), 1009 MHL_CBUS_RECEIVE_PP_MODE_FLAG = BIT(17), 1010 MHL_CBUS_RECEIVE_DSCR_CHANGE_FLAG = BIT(18), 1011 MHL_CBUS_RECEIVE_WRITE_REQUEST_FLAG = BIT(19), 1012 MHL_CBUS_RECEIVE_WRITE_GRANT_FLAG = BIT(20), 1013 MHL_CBUS_RECEIVE_WRITE_BURST_FLAG = BIT(21), 1014 MHL_CBUS_RECEIVE_ECBUS_MODE_FLAG = BIT(22), 1015 }; 1016 1017 enum MHL_SEND_FLAG_TYPE 1018 { 1019 MHL_CBUS_SEND_ASK_DATA_FLAG = BIT(0), 1020 MHL_CBUS_SEND_ASK_FINISH_FLAG = BIT(1), 1021 MHL_CBUS_SEND_RCP_ENABLE_FLAG = BIT(2), 1022 MHL_CBUS_SEND_RAP_ENABLE_FLAG = BIT(3), 1023 MHL_CBUS_SEND_MSG_FINISH_FLAG = BIT(4), 1024 MHL_CBUS_SEND_MSG_COMMAND_FLAG = BIT(5), 1025 MHL_CBUS_SEND_RCP_RELEASE_ENABLE_FLAG = BIT(6), 1026 MHL_CBUS_SEND_CHECK_CONTENT_ON_FLAG = BIT(7), 1027 MHL_CBUS_SEND_READ_DEVCAP_FLAG = BIT(8), 1028 MHL_CBUS_SEND_GET_VENDER_ID_FLAG = BIT(9), 1029 MHL_CBUS_SEND_3D_INFORMATION_FLAG = BIT(10), 1030 MHL_CBUS_SEND_3D_DTD_FLAG = BIT(11), 1031 MHL_CBUS_SEND_3D_VIC_FLAG = BIT(12), 1032 MHL_CBUS_SEND_VC_INFORMATION_FLAG = BIT(13), 1033 MHL_CBUS_SEND_VC_CONFIRM_FLAG = BIT(14), 1034 MHL_CBUS_SEND_HIGH_END_VIDEO_FLAG = BIT(15), 1035 MHL_CBUS_SEND_AUDIO_DATA_TUNNEL_FLAG = BIT(16), 1036 MHL_CBUS_SEND_EMSC_DATA_TUNNEL_FLAG = BIT(17), 1037 MHL_CBUS_SEND_USER_WRITE_BURST_FLAG = BIT(18), 1038 MHL_CBUS_SEND_HEV_VIC_FLAG = BIT(19), 1039 MHL_CBUS_SEND_HEV_DTDA_FLAG = BIT(20), 1040 MHL_CBUS_SEND_HEV_DTDB_FLAG = BIT(21), 1041 MHL_CBUS_SEND_BIST_RETURN_STATUS_FLAG = BIT(22), 1042 MHL_CBUS_SEND_LINK_STATUS_NORMAL_FLAG = BIT(23), 1043 }; 1044 1045 enum MHL_DEVICE_FLAG_TYPE 1046 { 1047 MHL_DEVICE_ROKU_DONGLE_FLAG = BIT(0), 1048 MHL_DEVICE_PHONE_HTC_FLAG = BIT(1), 1049 MHL_DEVICE_PHONE_SONY_FLAG = BIT(2), 1050 }; 1051 1052 enum MHL_CALLBACK_FLAG_TYPE 1053 { 1054 MHL_CALLBACK_RCP_FUNCTION_FLAG = BIT(0), 1055 MHL_CALLBACK_RAP_FUNCTION_FLAG = BIT(1), 1056 MHL_CALLBACK_UCP_FUNCTION_FLAG = BIT(2), 1057 MHL_CALLBACK_ATT_FUNCTION_FLAG = BIT(3), 1058 MHL_CALLBACK_RBP_FUNCTION_FLAG = BIT(4), 1059 }; 1060 1061 #define MHL_CBUS_DISPLAY_MASK (MHL_CBUS_HPD_SET_FLAG |MHL_CBUS_PATH_EN_FLAG |MHL_CBUS_DEVCAP_READY_FLAG) 1062 #define MHL_ECBUS_DISPLAY_MASK (MHL_CBUS_VERSION_CODE_FLAG| MHL_CBUS_DEVCAP_CHANGE_FLAG| MHL_CBUS_LINK_STATUS_NORMAL_FLAG) 1063 #define MHL_CBUS_DISPLAY_MASK_SHIFT 8U 1064 #define MHL_CBUS_DISPLAY_CHECK_MASK (MHL_CBUS_DISPLAY_MASK << MHL_CBUS_DISPLAY_MASK_SHIFT) 1065 #define MHL_3D_SUPPORT_MASK (MHL_3D_FS_SUPPORT |MHL_3D_TB_SUPPORT |MHL_3D_LR_SUPPORT) 1066 1067 //------------------------------------------------------------------------------------------------- 1068 // Global Variables 1069 //------------------------------------------------------------------------------------------------- 1070 1071 //------------------------------------------------------------------------------------------------- 1072 // Macro define 1073 //------------------------------------------------------------------------------------------------- 1074 #define GET_MHL_SYSTEM_FLAG(a, b) (MS_BOOL)((a &b) ?TRUE :FALSE) 1075 #define SET_MHL_SYSTEM_FLAG(a, b) (a |= b) 1076 #define CLR_MHL_SYSTEM_FLAG(a, b) (a &= ~b) 1077 1078 #define GET_MHL_CHIP_FLAG(a, b) (MS_BOOL)((a &b) ?TRUE :FALSE) 1079 #define SET_MHL_CHIP_FLAG(a, b) (a |= b) 1080 #define CLR_MHL_CHIP_FLAG(a, b) (a &= ~b) 1081 1082 #define GET_MHL_TIMER_FLAG(a, b) (MS_BOOL)((a &b) ?TRUE :FALSE) 1083 #define SET_MHL_TIMER_FLAG(a, b) (a |= b) 1084 #define CLR_MHL_TIMER_FLAG(a, b) (a &= ~b) 1085 1086 #define GET_MHL_DISPLAY_FLAG(a, b) (MS_BOOL)((a &b) ?TRUE :FALSE) 1087 #define SET_MHL_DISPLAY_FLAG(a, b) (a |= b) 1088 #define CLR_MHL_DISPLAY_FLAG(a, b) (a &= ~b) 1089 1090 #define GET_MHL_RECEIVE_FLAG(a, b) (MS_BOOL)((a &b) ?TRUE :FALSE) 1091 #define SET_MHL_RECEIVE_FLAG(a, b) (a |= b) 1092 #define CLR_MHL_RECEIVE_FLAG(a, b) (a &= ~b) 1093 1094 #define GET_MHL_SEND_FLAG(a, b) (MS_BOOL)((a &b) ?TRUE :FALSE) 1095 #define SET_MHL_SEND_FLAG(a, b) (a |= b) 1096 #define CLR_MHL_SEND_FLAG(a, b) (a &= ~b) 1097 1098 #define GET_MHL_DONE_FLAG(a, b) (MS_BOOL)((a &b) ?TRUE :FALSE) 1099 #define SET_MHL_DONE_FLAG(a, b) (a |= b) 1100 #define CLR_MHL_DONE_FLAG(a, b) (a &= ~b) 1101 1102 #define GET_MHL_ENABLE_FLAG(a, b) (MS_BOOL)((a &b) ?TRUE :FALSE) 1103 #define SET_MHL_ENABLE_FLAG(a, b) (a |= b) 1104 #define CLR_MHL_ENABLE_FLAG(a, b) (a &= ~b) 1105 1106 #define GET_MHL_DEVICE_FLAG(a, b) (MS_BOOL)((a &b) ?TRUE :FALSE) 1107 #define SET_MHL_DEVICE_FLAG(a, b) (a |= b) 1108 #define CLR_MHL_DEVICE_FLAG(a, b) (a &= ~b) 1109 1110 #define GET_MHL_CALLBACK_FLAG(a, b) (MS_BOOL)((a &b) ?TRUE :FALSE) 1111 #define SET_MHL_CALLBACK_FLAG(a, b) (a |= b) 1112 #define CLR_MHL_CALLBACK_FLAG(a, b) (a &= ~b) 1113 1114 #define GET_MHL_SUPPORT_FLAG(a, b) (MS_BOOL)((a &b) ?TRUE :FALSE) 1115 #define SET_MHL_SUPPORT_FLAG(a, b) (a |= b) 1116 #define CLR_MHL_SUPPORT_FLAG(a, b) (a &= ~b) 1117 1118 #ifdef __cplusplus 1119 } 1120 #endif 1121 1122 #endif //_MDRV_MHL_ST_H_