MS928x.h 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218
  1. /**
  2. ******************************************************************************
  3. * @file MS928X.h
  4. * @author
  5. * @version V2.2.0
  6. * @date 15-Oct-2013
  7. * @brief Definitions for MS928X library.
  8. * @history 11-Nov-2013 Update for MS928X.
  9. *
  10. * Copyright (c) 2009-2013, MacroSilicon Technology Co.,Ltd.
  11. ******************************************************************************/
  12. #ifndef _MACROSILICON_TECH_MS928X_H_
  13. #define _MACROSILICON_TECH_MS928X_H_
  14. // MS928X SDK version.
  15. #define MS928X_MAJOR_VER (0x02)
  16. #define MS928X_MINOR_VER (0x07)
  17. #define MS928X_I2C_ADDR_92 (0x92)
  18. #define MS928X_I2C_ADDR_9A (0x9A)
  19. //
  20. // Video Input sources.
  21. //
  22. typedef enum _ms928x_video_input_format
  23. {
  24. IN_ANALOG_VGA = 0x1,
  25. IN_ANALOG_YPBPR = 0x2,
  26. IN_ANALOG_RGBS = 0x3,
  27. IN_ANALOG_RGB_CS = 0x4
  28. //IN_DIGITAL_RGB = 0x5,
  29. //IN_DIGITAL_YCBCR444 = 0x6,
  30. //IN_DIGITAL_YCBCR422 = 0x7
  31. }eVideoSource;
  32. typedef enum _ms928x_output_color_space
  33. {
  34. OUT_CS_RGB = 0,
  35. OUT_CS_YCBCR444 = 1,
  36. OUT_CS_YCBCR422 = 2
  37. }eOutColorSpace;
  38. // Video Configurations
  39. enum _ms928x_system_configuration
  40. {
  41. SYS_CFG_DEFAULT = 0, // Default configuration.
  42. // Video
  43. SYS_CFG_SIG_CHANNEL_1 = 0x01, // Select channel1 according to system board design
  44. SYS_CFG_SIG_SYNC_SOG_1 = 0x02, // Select SYNC1 and SOG1
  45. SYS_CFG_OUT_COLOR_MODE = 0x04, // output color space user define flag
  46. SYS_CFG_OUT_MODE_DVI = 0x08, // Output sink Mode user define flag, default DVI
  47. //
  48. SYS_CFG_VFE_PLL_OPTION = 0x10, // option VFE pll flag
  49. SYS_CFG_DDC_DISABLED = 0x20, // hdmi tx ddc unuse flag
  50. // For audio
  51. SYS_CFG_RIGHT_JUSTIFY = 0x40, // 0:Left-justify, 1:Right-Justify;
  52. //
  53. SYS_CFG_VP_OPTION = 0x80, // option vertical position precise flag
  54. // For Digital-In
  55. SYS_CFG_DDR = 0x0100, // no use
  56. SYS_CFG_EMBEDDED_SYNC = 0x0200, // no use, For BT.656
  57. SYS_CFG_USER_VIC = 0x0400, // user define VIC
  58. SYS_CFG_AUTO_ADJUST_DISABLE = 0x0800, // disable auto phase and border detection
  59. SYS_CFG_MONO_COLOR_ENABLE = 0x1000, // enable mono color function
  60. SYS_CFG_ADC_HIGH_BANDWIDTH = 0x2000, // adc select high bandwidth
  61. SYS_CFG_ADDPLL_HIGH_REFCLK = 0x4000, // addpll select high reference clock
  62. SYS_CFG_RESERVED = 0x8000 // Reserved.
  63. };
  64. //
  65. // Define the severity status code.
  66. //
  67. #define STATE_SUCCESS (0)
  68. #define STATE_FATAL_ERR (0x80)
  69. #define STATE_CHIP_NOT_EXIST (0x81)
  70. #define STATE_HPD_ERR (0x82)
  71. #define STATE_READ_EDID_ERR (0x83)
  72. #define STATE_MODE_NOT_CHANGED (0x84)
  73. #define STATE_NO_INPUT_SIGNAL (0x85)
  74. #define STATE_INVALID_PARAMETER (0x86)
  75. #define STATE_UNKNOWN (0xFF)
  76. //
  77. // Audio Module, please refer to HDMI 1.3a spec.
  78. //
  79. #define MS928X_AUDIO_DEFAULT (0x0) // Default audio: I2S_48K_2CH_16BITS
  80. // Select audio source.
  81. #define MS928X_AUD_MODE_I2S (0x1)
  82. #define MS928X_AUD_MODE_SPDIF (0x2)
  83. // Sample length
  84. #define MS928X_AUD_LEN_16 (0x2)
  85. #define MS928X_AUD_LEN_24 (0xB)
  86. // Sample Channel
  87. #define MS928X_AUD_CH_2CH (0x1)
  88. #define MS928X_AUD_CH_8CH (0x7)
  89. // Sample rate
  90. #define MS928X_AUD_RATE_44K1 (0x0)
  91. #define MS928X_AUD_RATE_48K (0x2)
  92. #define MS928X_AUD_RATE_32K (0x3)
  93. #define MS928X_AUD_RATE_88K2 (0x8)
  94. #define MS928X_AUD_RATE_96K (0xA)
  95. #define MS928X_AUD_RATE_176K4 (0xC)
  96. #define MS928X_AUD_RATE_192K (0xE)
  97. //
  98. // Defines interface for video/audio
  99. //
  100. typedef struct _ms928x_video_param
  101. {
  102. eVideoSource u8sourceIn;
  103. }VIDEOPARAM_T;
  104. typedef struct _ms928x_audio_param
  105. {
  106. UINT8 u8audMode;
  107. UINT8 u8audRate;
  108. UINT8 u8audBits;
  109. UINT8 u8audChannel;
  110. }AUDIOPARAM_T;
  111. // system parameters.
  112. typedef struct _ms928x_system_param
  113. {
  114. UINT16 u8chipAddr; //set UINT16, align the structure data
  115. UINT16 u16sysConfig;
  116. VIDEOPARAM_T videoParam;
  117. AUDIOPARAM_T audioParam;
  118. UINT8 u8userVIC; // [Digital-In Only]. User will be responsible for setting the VIC.
  119. UINT8 u8HDMIType; // DVI : 0; HDMI: 1
  120. UINT8 u8HDMIColor; //refer to eOutColorSpace
  121. UINT8 u8Phase; //from 0~31
  122. UINT8 u8MnccGain; //set color fix range: 0x10~0x1F(16~31)
  123. }SYSPARAM_T;
  124. typedef struct _ms928x_video_shift
  125. {
  126. UINT16 u16HShift; // H Shift Value
  127. UINT16 u16VShift; // V Shift Value
  128. }VIDEOSHIFT_T;
  129. #ifdef __cplusplus
  130. extern "C" {
  131. #endif
  132. void MS928XInit();
  133. void MS928X_MPI_Init(BOOL bpresskeyflag);
  134. void MS928XService();
  135. // MS928X chip reset and initialization.
  136. UINT8 MS928X_Init(SYSPARAM_T* pstSysParam);
  137. // Determines the running status of the current system.
  138. UINT8 MS928X_Poll(VOID);
  139. //
  140. VOID MS928X_SetVideo(VIDEOSHIFT_T* g_sysVideoShift);
  141. //VOID MS928X_WriteShift(UINT16 u16_h_shift, UINT16 u16_v_shift);
  142. VOID MS928X_Video_SetShift(INT16 i16_h_shift, INT16 i16_v_shift);
  143. // Note: This function should be called after the MS928X_SetVideo function.
  144. //VOID MS928X_SetAudio(VOID);
  145. // Operations
  146. VOID MS928X_Video_Mute(BOOL bmuteON);
  147. VOID MS928X_Audio_Mute(BOOL bmuteON);
  148. // Returns TRUE if the sink device connected.
  149. BOOL MS928X_HPD_Detect(VOID);
  150. // Returns TRUE if MS928x chip exists.
  151. BOOL MS928X_IsValid(VOID);
  152. // Switch I2S/SPDIF audio.
  153. UINT8 MS928X_UpdateAudio(AUDIOPARAM_T* pstAudParam);
  154. // Get current input video mode.
  155. // Returns the corresponding VIC code. Returns 0xFF if no signal detected.
  156. UINT8 MS928X_GetInputVideoMode(VOID);
  157. // HDMI DDC access enable
  158. VOID MS928X_DDC_Enable(BOOL b_enable);
  159. // Horizontal or vertical pixel shift
  160. VOID MS928X_ShiftConfig(UINT8 u8_h_position, UINT8 u8_v_position);
  161. // Do auto phase, or set manual phase
  162. UINT8 MS928X_PhaseConfig(BOOL b_auto_enable, UINT8 u8_phase_sel);
  163. // Adjust brightness
  164. VOID MS928X_SetVideoBrightness(INT8 i8_brightness);
  165. // Adjust contrast
  166. VOID MS928X_SetVideoContrast(UINT8 u8_contrast);
  167. // Adjust tx data driver(max = 0xf)
  168. VOID MS928X_SetHdmiDataDriver(UINT8 u8_main_driver, UINT8 u8_post_driver);
  169. #ifdef __cplusplus
  170. }
  171. #endif
  172. #endif // _MACROSILICON_TECH_MS928X_H_