| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218 |
- /**
- ******************************************************************************
- * @file MS928X.h
- * @author
- * @version V2.2.0
- * @date 15-Oct-2013
- * @brief Definitions for MS928X library.
- * @history 11-Nov-2013 Update for MS928X.
- *
- * Copyright (c) 2009-2013, MacroSilicon Technology Co.,Ltd.
- ******************************************************************************/
- #ifndef _MACROSILICON_TECH_MS928X_H_
- #define _MACROSILICON_TECH_MS928X_H_
- // MS928X SDK version.
- #define MS928X_MAJOR_VER (0x02)
- #define MS928X_MINOR_VER (0x07)
- #define MS928X_I2C_ADDR_92 (0x92)
- #define MS928X_I2C_ADDR_9A (0x9A)
- //
- // Video Input sources.
- //
- typedef enum _ms928x_video_input_format
- {
- IN_ANALOG_VGA = 0x1,
- IN_ANALOG_YPBPR = 0x2,
- IN_ANALOG_RGBS = 0x3,
- IN_ANALOG_RGB_CS = 0x4
- //IN_DIGITAL_RGB = 0x5,
- //IN_DIGITAL_YCBCR444 = 0x6,
- //IN_DIGITAL_YCBCR422 = 0x7
- }eVideoSource;
- typedef enum _ms928x_output_color_space
- {
- OUT_CS_RGB = 0,
- OUT_CS_YCBCR444 = 1,
- OUT_CS_YCBCR422 = 2
- }eOutColorSpace;
- // Video Configurations
- enum _ms928x_system_configuration
- {
- SYS_CFG_DEFAULT = 0, // Default configuration.
- // Video
- SYS_CFG_SIG_CHANNEL_1 = 0x01, // Select channel1 according to system board design
- SYS_CFG_SIG_SYNC_SOG_1 = 0x02, // Select SYNC1 and SOG1
- SYS_CFG_OUT_COLOR_MODE = 0x04, // output color space user define flag
- SYS_CFG_OUT_MODE_DVI = 0x08, // Output sink Mode user define flag, default DVI
- //
- SYS_CFG_VFE_PLL_OPTION = 0x10, // option VFE pll flag
- SYS_CFG_DDC_DISABLED = 0x20, // hdmi tx ddc unuse flag
- // For audio
- SYS_CFG_RIGHT_JUSTIFY = 0x40, // 0:Left-justify, 1:Right-Justify;
- //
- SYS_CFG_VP_OPTION = 0x80, // option vertical position precise flag
- // For Digital-In
- SYS_CFG_DDR = 0x0100, // no use
- SYS_CFG_EMBEDDED_SYNC = 0x0200, // no use, For BT.656
- SYS_CFG_USER_VIC = 0x0400, // user define VIC
- SYS_CFG_AUTO_ADJUST_DISABLE = 0x0800, // disable auto phase and border detection
- SYS_CFG_MONO_COLOR_ENABLE = 0x1000, // enable mono color function
- SYS_CFG_ADC_HIGH_BANDWIDTH = 0x2000, // adc select high bandwidth
- SYS_CFG_ADDPLL_HIGH_REFCLK = 0x4000, // addpll select high reference clock
- SYS_CFG_RESERVED = 0x8000 // Reserved.
- };
- //
- // Define the severity status code.
- //
- #define STATE_SUCCESS (0)
- #define STATE_FATAL_ERR (0x80)
- #define STATE_CHIP_NOT_EXIST (0x81)
- #define STATE_HPD_ERR (0x82)
- #define STATE_READ_EDID_ERR (0x83)
- #define STATE_MODE_NOT_CHANGED (0x84)
- #define STATE_NO_INPUT_SIGNAL (0x85)
- #define STATE_INVALID_PARAMETER (0x86)
- #define STATE_UNKNOWN (0xFF)
- //
- // Audio Module, please refer to HDMI 1.3a spec.
- //
- #define MS928X_AUDIO_DEFAULT (0x0) // Default audio: I2S_48K_2CH_16BITS
- // Select audio source.
- #define MS928X_AUD_MODE_I2S (0x1)
- #define MS928X_AUD_MODE_SPDIF (0x2)
- // Sample length
- #define MS928X_AUD_LEN_16 (0x2)
- #define MS928X_AUD_LEN_24 (0xB)
- // Sample Channel
- #define MS928X_AUD_CH_2CH (0x1)
- #define MS928X_AUD_CH_8CH (0x7)
- // Sample rate
- #define MS928X_AUD_RATE_44K1 (0x0)
- #define MS928X_AUD_RATE_48K (0x2)
- #define MS928X_AUD_RATE_32K (0x3)
- #define MS928X_AUD_RATE_88K2 (0x8)
- #define MS928X_AUD_RATE_96K (0xA)
- #define MS928X_AUD_RATE_176K4 (0xC)
- #define MS928X_AUD_RATE_192K (0xE)
- //
- // Defines interface for video/audio
- //
- typedef struct _ms928x_video_param
- {
- eVideoSource u8sourceIn;
- }VIDEOPARAM_T;
- typedef struct _ms928x_audio_param
- {
- UINT8 u8audMode;
- UINT8 u8audRate;
- UINT8 u8audBits;
- UINT8 u8audChannel;
- }AUDIOPARAM_T;
- // system parameters.
- typedef struct _ms928x_system_param
- {
- UINT16 u8chipAddr; //set UINT16, align the structure data
- UINT16 u16sysConfig;
- VIDEOPARAM_T videoParam;
- AUDIOPARAM_T audioParam;
- UINT8 u8userVIC; // [Digital-In Only]. User will be responsible for setting the VIC.
- UINT8 u8HDMIType; // DVI : 0; HDMI: 1
- UINT8 u8HDMIColor; //refer to eOutColorSpace
- UINT8 u8Phase; //from 0~31
- UINT8 u8MnccGain; //set color fix range: 0x10~0x1F(16~31)
- }SYSPARAM_T;
- typedef struct _ms928x_video_shift
- {
- UINT16 u16HShift; // H Shift Value
- UINT16 u16VShift; // V Shift Value
- }VIDEOSHIFT_T;
- #ifdef __cplusplus
- extern "C" {
- #endif
- void MS928XInit();
- void MS928X_MPI_Init(BOOL bpresskeyflag);
- void MS928XService();
- // MS928X chip reset and initialization.
- UINT8 MS928X_Init(SYSPARAM_T* pstSysParam);
- // Determines the running status of the current system.
- UINT8 MS928X_Poll(VOID);
- //
- VOID MS928X_SetVideo(VIDEOSHIFT_T* g_sysVideoShift);
- //VOID MS928X_WriteShift(UINT16 u16_h_shift, UINT16 u16_v_shift);
- VOID MS928X_Video_SetShift(INT16 i16_h_shift, INT16 i16_v_shift);
- // Note: This function should be called after the MS928X_SetVideo function.
- //VOID MS928X_SetAudio(VOID);
- // Operations
- VOID MS928X_Video_Mute(BOOL bmuteON);
- VOID MS928X_Audio_Mute(BOOL bmuteON);
- // Returns TRUE if the sink device connected.
- BOOL MS928X_HPD_Detect(VOID);
- // Returns TRUE if MS928x chip exists.
- BOOL MS928X_IsValid(VOID);
- // Switch I2S/SPDIF audio.
- UINT8 MS928X_UpdateAudio(AUDIOPARAM_T* pstAudParam);
- // Get current input video mode.
- // Returns the corresponding VIC code. Returns 0xFF if no signal detected.
- UINT8 MS928X_GetInputVideoMode(VOID);
- // HDMI DDC access enable
- VOID MS928X_DDC_Enable(BOOL b_enable);
- // Horizontal or vertical pixel shift
- VOID MS928X_ShiftConfig(UINT8 u8_h_position, UINT8 u8_v_position);
- // Do auto phase, or set manual phase
- UINT8 MS928X_PhaseConfig(BOOL b_auto_enable, UINT8 u8_phase_sel);
- // Adjust brightness
- VOID MS928X_SetVideoBrightness(INT8 i8_brightness);
- // Adjust contrast
- VOID MS928X_SetVideoContrast(UINT8 u8_contrast);
- // Adjust tx data driver(max = 0xf)
- VOID MS928X_SetHdmiDataDriver(UINT8 u8_main_driver, UINT8 u8_post_driver);
- #ifdef __cplusplus
- }
- #endif
- #endif // _MACROSILICON_TECH_MS928X_H_
|