extd_hdmi.h 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207
  1. /* --------------------------------------------------------------------------- */
  2. #ifndef HDMITX_H
  3. #define HDMITX_H
  4. /* /#include "mtkfb.h" */
  5. #include "disp_session.h"
  6. #define MHL_UART_SHARE_PIN
  7. enum HDMI_FACTORY_MODE_TEST {
  8. STEP1_ENABLE,
  9. STEP2_GET_STATUS,
  10. STEP3_START,
  11. STEP3_SUSPEND,
  12. STEP_MAX_NUM
  13. };
  14. enum AUDIO_MAX_CHANNEL {
  15. HDMI_MAX_CHANNEL_2 = 0x2,
  16. HDMI_MAX_CHANNEL_3 = 0x3,
  17. HDMI_MAX_CHANNEL_4 = 0x4,
  18. HDMI_MAX_CHANNEL_5 = 0x5,
  19. HDMI_MAX_CHANNEL_6 = 0x6,
  20. HDMI_MAX_CHANNEL_7 = 0x7,
  21. HDMI_MAX_CHANNEL_8 = 0x8,
  22. };
  23. enum AUDIO_MAX_SAMPLERATE {
  24. HDMI_MAX_SAMPLERATE_32 = 0x1,
  25. HDMI_MAX_SAMPLERATE_44 = 0x2,
  26. HDMI_MAX_SAMPLERATE_48 = 0x3,
  27. HDMI_MAX_SAMPLERATE_96 = 0x4,
  28. HDMI_MAX_SAMPLERATE_192 = 0x5,
  29. };
  30. enum AUDIO_MAX_BITWIDTH {
  31. HDMI_MAX_BITWIDTH_16 = 0x1,
  32. HDMI_MAX_BITWIDTH_24 = 0x2,
  33. };
  34. enum HDMI_CAPABILITY {
  35. HDMI_SCALE_ADJUSTMENT_SUPPORT = 0x01,
  36. HDMI_ONE_RDMA_LIMITATION = 0x02,
  37. HDMI_PHONE_GPIO_REUSAGE = 0x04,
  38. HDMI_FACTORY_MODE_NEW = 0x80,
  39. };
  40. struct hdmi_device_status {
  41. bool is_audio_enabled;
  42. bool is_video_enabled;
  43. };
  44. struct hdmi_device_write {
  45. unsigned long u4Addr;
  46. unsigned long u4Data;
  47. };
  48. struct hdmi_para_setting {
  49. unsigned int u4Data1;
  50. unsigned int u4Data2;
  51. };
  52. struct hdmi_hdcp_key {
  53. unsigned char u1Hdcpkey[287];
  54. };
  55. struct hdmi_hdcp_drmkey {
  56. unsigned char u1Hdcpkey[384];
  57. };
  58. struct send_slt_data {
  59. unsigned char u1sendsltdata[15];
  60. };
  61. typedef struct _HDMI_EDID_T {
  62. unsigned int ui4_ntsc_resolution; /* use EDID_VIDEO_RES_T, there are many resolution */
  63. unsigned int ui4_pal_resolution; /* use EDID_VIDEO_RES_T */
  64. /* use EDID_VIDEO_RES_T, only one NTSC resolution, Zero means none native NTSC resolution is available */
  65. unsigned int ui4_sink_native_ntsc_resolution;
  66. /* use EDID_VIDEO_RES_T, only one resolution, Zero means none native PAL resolution is available */
  67. unsigned int ui4_sink_native_pal_resolution;
  68. unsigned int ui4_sink_cea_ntsc_resolution; /* use EDID_VIDEO_RES_T */
  69. unsigned int ui4_sink_cea_pal_resolution; /* use EDID_VIDEO_RES_T */
  70. unsigned int ui4_sink_dtd_ntsc_resolution; /* use EDID_VIDEO_RES_T */
  71. unsigned int ui4_sink_dtd_pal_resolution; /* use EDID_VIDEO_RES_T */
  72. unsigned int ui4_sink_1st_dtd_ntsc_resolution; /* use EDID_VIDEO_RES_T */
  73. unsigned int ui4_sink_1st_dtd_pal_resolution; /* use EDID_VIDEO_RES_T */
  74. unsigned short ui2_sink_colorimetry; /* use EDID_VIDEO_COLORIMETRY_T */
  75. unsigned char ui1_sink_rgb_color_bit; /* color bit for RGB */
  76. unsigned char ui1_sink_ycbcr_color_bit; /* color bit for YCbCr */
  77. unsigned short ui2_sink_aud_dec; /* use EDID_AUDIO_DECODER_T */
  78. unsigned char ui1_sink_is_plug_in; /* 1: Plug in 0:Plug Out */
  79. unsigned int ui4_hdmi_pcm_ch_type; /* use EDID_A_FMT_CH_TYPE */
  80. unsigned int ui4_hdmi_pcm_ch3ch4ch5ch7_type; /* use EDID_A_FMT_CH_TYPE1 */
  81. unsigned int ui4_dac_pcm_ch_type; /* use EDID_A_FMT_CH_TYPE */
  82. unsigned char ui1_sink_i_latency_present;
  83. unsigned char ui1_sink_p_audio_latency;
  84. unsigned char ui1_sink_p_video_latency;
  85. unsigned char ui1_sink_i_audio_latency;
  86. unsigned char ui1_sink_i_video_latency;
  87. unsigned char ui1ExtEdid_Revision;
  88. unsigned char ui1Edid_Version;
  89. unsigned char ui1Edid_Revision;
  90. unsigned char ui1_Display_Horizontal_Size;
  91. unsigned char ui1_Display_Vertical_Size;
  92. unsigned int ui4_ID_Serial_Number;
  93. unsigned int ui4_sink_cea_3D_resolution;
  94. unsigned char ui1_sink_support_ai; /* 0: not support AI, 1:support AI */
  95. unsigned short ui2_sink_cec_address;
  96. unsigned short ui1_sink_max_tmds_clock;
  97. unsigned short ui2_sink_3D_structure;
  98. unsigned int ui4_sink_cea_FP_SUP_3D_resolution;
  99. unsigned int ui4_sink_cea_TOB_SUP_3D_resolution;
  100. unsigned int ui4_sink_cea_SBS_SUP_3D_resolution;
  101. unsigned short ui2_sink_ID_manufacturer_name; /* (08H~09H) */
  102. unsigned short ui2_sink_ID_product_code; /* (0aH~0bH) */
  103. unsigned int ui4_sink_ID_serial_number; /* (0cH~0fH) */
  104. unsigned char ui1_sink_week_of_manufacture; /* (10H) */
  105. unsigned char ui1_sink_year_of_manufacture; /* (11H) base on year 1990 */
  106. } HDMI_EDID_T;
  107. struct MHL_3D_SUPP_T {
  108. unsigned int ui4_sink_FP_SUP_3D_resolution;
  109. unsigned int ui4_sink_TOB_SUP_3D_resolution;
  110. unsigned int ui4_sink_SBS_SUP_3D_resolution;
  111. };
  112. struct CEC_DRV_ADDR_CFG {
  113. unsigned char ui1_la_num;
  114. unsigned char e_la[3];
  115. unsigned short ui2_pa;
  116. unsigned short h_cecm_svc;
  117. };
  118. struct CEC_HEADER_BLOCK_IO {
  119. unsigned char destination:4;
  120. unsigned char initiator:4;
  121. };
  122. struct CEC_FRAME_BLOCK_IO {
  123. struct CEC_HEADER_BLOCK_IO header;
  124. unsigned char opcode;
  125. unsigned char operand[15];
  126. };
  127. struct CEC_FRAME_DESCRIPTION_IO {
  128. unsigned char size;
  129. unsigned char sendidx;
  130. unsigned char reTXcnt;
  131. void *txtag;
  132. struct CEC_FRAME_BLOCK_IO blocks;
  133. };
  134. struct CEC_FRAME_INFO {
  135. unsigned char ui1_init_addr;
  136. unsigned char ui1_dest_addr;
  137. unsigned short ui2_opcode;
  138. unsigned char aui1_operand[14];
  139. unsigned int z_operand_size;
  140. };
  141. struct CEC_SEND_MSG {
  142. struct CEC_FRAME_INFO t_frame_info;
  143. unsigned char b_enqueue_ok;
  144. };
  145. struct CEC_ADDRESS_IO {
  146. unsigned char ui1_la;
  147. unsigned short ui2_pa;
  148. };
  149. struct CEC_GETSLT_DATA {
  150. unsigned char u1Size;
  151. unsigned char au1Data[14];
  152. };
  153. struct READ_REG_VALUE {
  154. unsigned int u1address;
  155. unsigned int pu1Data;
  156. };
  157. struct HDMITX_AUDIO_PARA {
  158. unsigned char e_hdmi_aud_in;
  159. unsigned char e_iec_frame;
  160. unsigned char e_hdmi_fs;
  161. unsigned char e_aud_code;
  162. unsigned char u1Aud_Input_Chan_Cnt;
  163. unsigned char e_I2sFmt;
  164. unsigned char u1HdmiI2sMclk;
  165. unsigned char bhdmi_LCh_status[5];
  166. unsigned char bhdmi_RCh_status[5];
  167. };
  168. int hdmi_post_init(void);
  169. void hdmi_force_on(int from_uart_drv);
  170. void hdmi_cable_fake_plug_in(void);
  171. void hdmi_cable_fake_plug_out(void);
  172. void hdmi_suspend(void);
  173. void hdmi_resume(void);
  174. void hdmi_power_on(void);
  175. void hdmi_power_off(void);
  176. int hdmi_wait_vsync_debug(int enable);
  177. extern void Extd_DBG_Init(void);
  178. #endif