592 lines
		
	
	
		
			30 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			592 lines
		
	
	
		
			30 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
| /**
 | |
|     Header file for HDMI module
 | |
| 
 | |
|     Header file for HDMI module.
 | |
|     The user can reference this section for the detail description of the each driver API usage
 | |
|     and also the parameter descriptions and its limitations.
 | |
|     The overall combinational usage flow is introduced in the application note document,
 | |
|     and the user must reference to the application note for the driver usage flow.
 | |
| 
 | |
|     @file       hdmitx.h
 | |
|     @ingroup    mIDrvDisp_HDMITx
 | |
|     @note       Nothing.
 | |
| 
 | |
|     Copyright   Novatek Microelectronics Corp. 2017.  All rights reserved.
 | |
| */
 | |
| 
 | |
| #ifndef _HDMITX_H
 | |
| #define _HDMITX_H
 | |
| 
 | |
| #if defined __KERNEL__
 | |
| #include "kwrap/type.h"
 | |
| #elif defined __FREERTOS
 | |
| #include "kwrap/type.h"
 | |
| #else
 | |
| #include "Type.h"
 | |
| #include "Driver.h"
 | |
| #endif
 | |
| 
 | |
| /**
 | |
|     @addtogroup mIDrvDisp_HDMITx
 | |
| */
 | |
| //@{
 | |
| 
 | |
| 
 | |
| /**
 | |
|     HDMI-Tx output Video Format ID
 | |
| 
 | |
|     This enumeration is used in hdmitx_set_config(HDMI_CONFIG_ID_VIDEO) to specify the HDMI output video resolution,
 | |
|     and also used in the display device object control code "SET_HDMIMODE" to specify the video mode.
 | |
|     These definitions are from the TV standard CEA-861D and all of the output timngs such as frame rate/blanking/...
 | |
|     are the same as the CEA-861D listed.
 | |
| */
 | |
| typedef enum {
 | |
| 	HDMI_640X480P60         = 1,    ///< HDMI Video format is 640x480 & Progressive 60fps
 | |
| 	HDMI_720X480P60         = 2,    ///< HDMI Video format is 720x480 & Progressive 60fps & 4:3
 | |
| 	HDMI_720X480P60_16X9    = 3,    ///< HDMI Video format is 720x480 & Progressive 60fps & 16:9
 | |
| 	HDMI_1280X720P60        = 4,    ///< HDMI Video format is 1280x720 & Progressive 60fps
 | |
| 	HDMI_1920X1080I60       = 5,    ///< HDMI Video format is 1920x1080 & Interlaced 60fps
 | |
| 	HDMI_720X480I60         = 6,    ///< HDMI Video format is 720x480 & Interlaced 60fps
 | |
| 	HDMI_720X480I60_16X9    = 7,    ///< HDMI Video format is 720x480 & Interlaced 60fps & 16:9
 | |
| 	HDMI_720X240P60         = 8,    ///< HDMI Video format is 720x240 & Progressive 60fps
 | |
| 	HDMI_720X240P60_16X9    = 9,    ///< HDMI Video format is 720x240 & Progressive 60fps & 16:9
 | |
| 	HDMI_1440X480I60        = 10,   ///< HDMI Video format is 1440x480 & Interlaced 60fps
 | |
| 	HDMI_1440X480I60_16X9   = 11,   ///< HDMI Video format is 1440x480 & Interlaced 60fps & 16:9
 | |
| 	HDMI_1440X240P60        = 12,   ///< HDMI Video format is 1440x240 & Progressive 60fps
 | |
| 	HDMI_1440X240P60_16X9   = 13,   ///< HDMI Video format is 1440x240 & Progressive 60fps & 16:9
 | |
| 	HDMI_1440X480P60        = 14,   ///< HDMI Video format is 1440x480 & Progressive 60fps
 | |
| 	HDMI_1440X480P60_16X9   = 15,   ///< HDMI Video format is 1440x480 & Progressive 60fps & 16:9
 | |
| 	HDMI_1920X1080P60       = 16,   ///< HDMI Video format is 1920x1080 & Progressive 60fps
 | |
| 	HDMI_720X576P50         = 17,   ///< HDMI Video format is 720x576 & Progressive 50fps
 | |
| 	HDMI_720X576P50_16X9    = 18,   ///< HDMI Video format is 720x576 & Progressive 50fps & 16:9
 | |
| 	HDMI_1280X720P50        = 19,   ///< HDMI Video format is 1280x720 & Progressive 50fps
 | |
| 	HDMI_1920X1080I50       = 20,   ///< HDMI Video format is 1920x1080 & Interlaced 50fps
 | |
| 	HDMI_720X576I50         = 21,   ///< HDMI Video format is 720x576 & Interlaced 50fps
 | |
| 	HDMI_720X576I50_16X9    = 22,   ///< HDMI Video format is 720x576 & Interlaced 50fps & 16:9
 | |
| 	HDMI_720X288P50         = 23,   ///< HDMI Video format is 720x288 & Progressive 50fps
 | |
| 	HDMI_720X288P50_16X9    = 24,   ///< HDMI Video format is 720x288 & Progressive 50fps & 16:9
 | |
| 	HDMI_1440X576I50        = 25,   ///< HDMI Video format is 1440x576 & Interlaced 50fps
 | |
| 	HDMI_1440X576I50_16X9   = 26,   ///< HDMI Video format is 1440x576 & Interlaced 50fps & 16:9
 | |
| 	HDMI_1440X288P50        = 27,   ///< HDMI Video format is 1440x288 & Progressive 50fps
 | |
| 	HDMI_1440X288P50_16X9   = 28,   ///< HDMI Video format is 1440x288 & Progressive 50fps & 16:9
 | |
| 	HDMI_1440X576P50        = 29,   ///< HDMI Video format is 1440x576 & Progressive 50fps
 | |
| 	HDMI_1440X576P50_16X9   = 30,   ///< HDMI Video format is 1440x576 & Progressive 50fps & 16:9
 | |
| 	HDMI_1920X1080P50       = 31,   ///< HDMI Video format is 1920x1080 & Progressive 50fps
 | |
| 	HDMI_1920X1080P24       = 32,   ///< HDMI Video format is 1920x1080 & Progressive 24fps
 | |
| 	HDMI_1920X1080P25       = 33,   ///< HDMI Video format is 1920x1080 & Progressive 25fps
 | |
| 	HDMI_1920X1080P30       = 34,   ///< HDMI Video format is 1920x1080 & Progressive 30fps
 | |
| 	HDMI_1920X1080I50_VT1250 = 39,  ///< HDMI Video format is 1920x1080 & Interlaced  50fps & V-total is 1250 lines
 | |
| 	HDMI_1920X1080I100      = 40,   ///< HDMI Video format is 1920x1080 & Interlaced  100fps
 | |
| 	HDMI_1280X720P100       = 41,   ///< HDMI Video format is 1280X720  & Progressive 100fps
 | |
| 	HDMI_720X576P100        = 42,   ///< HDMI Video format is 720X576   & Progressive 100fps
 | |
| 	HDMI_720X576P100_16X9   = 43,   ///< HDMI Video format is 720X576   & Progressive 100fps & 16:9
 | |
| 	HDMI_720X576I100        = 44,   ///< HDMI Video format is 720X576  & Interlaced 100fps
 | |
| 	HDMI_720X576I100_16X9   = 45,   ///< HDMI Video format is 720X576  & Interlaced 100fps & 16:9
 | |
| 	HDMI_1920X1080I120      = 46,   ///< HDMI Video format is 1920X1080 & Interlaced 120fps
 | |
| 	HDMI_1280X720P120       = 47,   ///< HDMI Video format is 1280X720  & Progressive 120fps
 | |
| 	HDMI_720X480P120        = 48,   ///< HDMI Video format is 720X480   & Progressive 120fps
 | |
| 	HDMI_720X480P120_16X9   = 49,   ///< HDMI Video format is 720X480   & Progressive 120fps & 16:9
 | |
| 	HDMI_720X480I120        = 50,   ///< HDMI Video format is 720X480  & Interlaced 120fps
 | |
| 	HDMI_720X480I120_16X9   = 51,   ///< HDMI Video format is 720X480  & Interlaced 120fps & 16:9
 | |
| 	HDMI_720X576P200        = 52,   ///< HDMI Video format is 720X576  & Progressive 200fps
 | |
| 	HDMI_720X576P200_16X9   = 53,   ///< HDMI Video format is 720X576  & Progressive 200fps & 16:9
 | |
| 	HDMI_720X576I200        = 54,   ///< HDMI Video format is 720X576  & Interlaced 200fps
 | |
| 	HDMI_720X576I200_16X9   = 55,   ///< HDMI Video format is 720X576  & Interlaced 200fps & 16:9
 | |
| 	HDMI_720X480P240        = 56,   ///< HDMI Video format is 720X480  & Progressive 240fps
 | |
| 	HDMI_720X480P240_16X9   = 57,   ///< HDMI Video format is 720X480  & Progressive 240fps & 16:9
 | |
| 	HDMI_720X480I240        = 58,   ///< HDMI Video format is 720X480  & Interlaced 240fps
 | |
| 	HDMI_720X480I240_16X9   = 59,   ///< HDMI Video format is 720X480  & Interlaced 240fps & 16:9
 | |
| 
 | |
| 	HDMI_3840X2160P24       = 93,   ///< HDMI Video format is 3840x2160 & Progressive 24fps
 | |
| 	HDMI_3840X2160P25       = 94,   ///< HDMI Video format is 3840x2160 & Progressive 25fps
 | |
| 	HDMI_3840X2160P30       = 95,   ///< HDMI Video format is 3840x2160 & Progressive 30fps
 | |
| 	HDMI_4096X2160P24       = 98,   ///< HDMI Video format is 4096x2160 & Progressive 24fps
 | |
| 	HDMI_4096X2160P25       = 99,   ///< HDMI Video format is 4096x2160 & Progressive 25fps
 | |
| 	HDMI_4096X2160P30       = 100,  ///< HDMI Video format is 4096x2160 & Progressive 30fps
 | |
| 
 | |
| 	HDMI14B_3840X2160P30    = 95+128,///< HDMI 1.4B Extended foramt HDMI_VIC=1. Video format is 3840x2160 & Progressive 30fps
 | |
| 	HDMI14B_3840X2160P25    = 94+128,///< HDMI 1.4B Extended foramt HDMI_VIC=2. Video format is 3840x2160 & Progressive 30fps
 | |
| 	HDMI14B_3840X2160P24    = 93+128,///< HDMI 1.4B Extended foramt HDMI_VIC=3. Video format is 3840x2160 & Progressive 24fps
 | |
| 	HDMI14B_4096X2160P24    = 98+128,///< HDMI 1.4B Extended foramt HDMI_VIC=4. Video format is 4096x2160 & Progressive 24fps
 | |
| 
 | |
| 	// Non-std HDMI formats
 | |
| 	HDMI_1024X768P60        = 35+128,///< HDMI Video format is 1024X768  & Progressive 60fps
 | |
| 	HDMI_1280X1024P60       = 36+128,///< HDMI Video format is 1280X1024  & Progressive 60fps
 | |
| 	HDMI_1600X1200P60       = 37+128,///< HDMI Video format is 1600X1200  & Progressive 60fps
 | |
| 	HDMI_2560X1440P60       = 38+128,///< HDMI Video format is 2560X1440  & Progressive 60fps
 | |
| 
 | |
| 	HDMI_VID_NO_CHANGE      = 0xFF, ///< HDMI Video format use current setting
 | |
| 	ENUM_DUMMY4WORD(HDMI_VIDEOID)
 | |
| } HDMI_VIDEOID;
 | |
| 
 | |
| /**
 | |
|     HDMI-Tx input audio format
 | |
| 
 | |
|     This structure is used in hdmitx_set_config(HDMI_CONFIG_ID_AUDIO) to specify the Audio Sampling Rate in HDMI audio stream.
 | |
|     This definition would be used in the HDMI audio infoFrame. Only these three audio modes are maindatory modes in HDMI specification,
 | |
|     so sampling rates less than 32KHz are not supported in HDMI audio.
 | |
|     Besides, we must also note that the HDMI has only the Stereo Audio Channels. The Mono channel can only playback to left ot right channel
 | |
|     on the HDMI audio. The audio channel number larger than two are not supported in current chip version.
 | |
| */
 | |
| typedef enum {
 | |
| 	HDMI_AUDIO32KHZ,                ///< HDMI Audio sampling rate uses 32KHz.
 | |
| 	HDMI_AUDIO44_1KHZ,              ///< HDMI Audio sampling rate uses 44.1KHz.
 | |
| 	HDMI_AUDIO48KHZ,                ///< HDMI Audio sampling rate uses 48KHz.
 | |
| 
 | |
| 	HDMI_AUDIO_NO_CHANGE  = 0xFF,   ///< Reserve the curretn HDMI audio sampling rate.
 | |
| 	ENUM_DUMMY4WORD(HDMI_AUDIOFMT)
 | |
| } HDMI_AUDIOFMT;
 | |
| 
 | |
| /**
 | |
|     HDMI-Tx Video Ability Structure
 | |
| 
 | |
|     This structure is used in hdmitx_getVideoAbility() to get the 3D abilities of the TV/Display.
 | |
| */
 | |
| typedef struct {
 | |
| 	HDMI_VIDEOID    video_id;        ///< The Video Format which TV supports.
 | |
| 	UINT32          vdo_3d_ability;   ///< The 3D format supported for this video ID. The format uses the "bit-wise OR" of HDMI_3DFMT.
 | |
| 
 | |
| } HDMI_VDOABI, *PHDMI_VDOABI;
 | |
| 
 | |
| /**
 | |
|     HDMI-Tx 3D Format Type
 | |
| 
 | |
|     This is used in hdmitx_set_config(HDMI_CONFIG_ID_3D_FMT) and "HDMI_VDOABI" to specify the HDMI 3D format.
 | |
| */
 | |
| typedef enum {
 | |
| 	HDMI3D_NONE             = 0x00, ///< None of the 3D function.
 | |
| 	HDMI3D_SIDEBYSIDE_HALF  = 0x01, ///< 3D Format: Side-by-Side-half. This results in the half of the horizontal resolution.
 | |
| 	HDMI3D_TOPANDBOTTOM     = 0x02, ///< 3D Format: Top-and-Bottom. This results in the half of the vertical resolution.
 | |
| 
 | |
| 	ENUM_DUMMY4WORD(HDMI_3DFMT)
 | |
| } HDMI_3DFMT;
 | |
| 
 | |
| /**
 | |
|     HDMI EDID flags
 | |
| 
 | |
|     Each bit represents TV device support this feature or not.
 | |
|     These flags are used for hdmitx_get_edid_info() to determine the TV supported audio/video formats.
 | |
|     All the information below is from TV's EDID.
 | |
|     This information is used in the hdmi display device object for function control information.
 | |
| 
 | |
|     @name   HDMI EDID parsing results flags
 | |
| */
 | |
| //@{
 | |
| #define HDMITX_DTD1080P60       0x0001  ///< Video as 1080P60 from EDID's Detailed Timing Descriptor.
 | |
| #define HDMITX_DTD720P60        0x0002  ///< Video as  720P60 from EDID's Detailed Timing Descriptor.
 | |
| #define HDMITX_DTD640X480P60    0x0004  ///< Video as  480P60 from EDID's Detailed Timing Descriptor.
 | |
| #define HDMITX_DTD720X480P60    0x0008  ///< Video as  480P60 from EDID's Detailed Timing Descriptor.
 | |
| #define HDMITX_DTD1080I60       0x0010  ///< Video as 1080I60 from EDID's Detailed Timing Descriptor.
 | |
| #define HDMITX_DTD720X480I60    0x0020  ///< Video as  480I60 from EDID's Detailed Timing Descriptor.
 | |
| #define HDMITX_DTD1080P50       0x0100  ///< Video as 1080P50 from EDID's Detailed Timing Descriptor.
 | |
| #define HDMITX_DTD720P50        0x0200  ///< Video as  720P50 from EDID's Detailed Timing Descriptor.
 | |
| #define HDMITX_DTD576P50        0x0400  ///< Video as  576P50 from EDID's Detailed Timing Descriptor.
 | |
| #define HDMITX_DTD1080I50       0x1000  ///< Video as 1080I50 from EDID's Detailed Timing Descriptor.
 | |
| #define HDMITX_DTD576I50        0x2000  ///< Video as  576I50 from EDID's Detailed Timing Descriptor.
 | |
| #define HDMITX_DTD3840X2160P30  0x10000000  ///< Video as  3840x2160P30 from EDID's Detailed Timing Descriptor.
 | |
| #define HDMITX_DTD4096X2160P30  0x20000000  ///< Video as  3840x2160P30 from EDID's Detailed Timing Descriptor.
 | |
| 
 | |
| #define HDMITX_TV_YCBCR444     0x10000  ///< TV Support Video format: YCbCr-444.
 | |
| #define HDMITX_TV_YCBCR422     0x20000  ///< TV Support Video format: YCbCr-422.
 | |
| #define HDMITX_TV_UNDERSCAN    0x40000  ///< TV Support under_scan.
 | |
| #define HDMITX_TV_HDMI         0x80000  ///< TV Support HDMI. If not, it is DVI device.
 | |
| #define HDMITX_ADO_32KHZ      0x100000  ///< TV Support Audio Sampling Rate 32Khz.
 | |
| #define HDMITX_ADO_44KHZ      0x200000  ///< TV Support Audio Sampling Rate 44.1Khz.
 | |
| #define HDMITX_ADO_48KHZ      0x400000  ///< TV Support Audio Sampling Rate 48Khz.
 | |
| #define HDMITX_ADO_MORE       0x800000  ///< TV Support Advanced Audio Format.
 | |
| //@}
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| //
 | |
| //  HDMI CEC related header
 | |
| //
 | |
| 
 | |
| /**
 | |
|     HDMI CEC configuration identifications
 | |
| 
 | |
|     These definitions are used in the hdmicec_setConfig() and hdmicec_get_config() to configure the CEC functionalities.
 | |
| */
 | |
| typedef enum {
 | |
| 	CEC_CONFIG_ID_FREECNT1,         ///< Configure the Free Count-1 in the CEC Standard. Unit in CEC bit time.
 | |
| 									///< The free-count-1 is previous command sent successfully and want to send another command,
 | |
| 									///< the initiator must wait this duration. Default value is 0x7.
 | |
| 	CEC_CONFIG_ID_FREECNT2,         ///< Configure the Free Count-2 in the CEC Standard. Unit in CEC bit time.
 | |
| 									///< The free-count-2 is the new initiator must wait the bus idle time duration,
 | |
| 									///< and then be allowed to send command. Default value is 0x5.
 | |
| 	CEC_CONFIG_ID_FREECNT3,         ///< Configure the Free Count-3 in the CEC Standard. Unit in CEC bit time.
 | |
| 									///< The free-count-3 is when previous attemp to send failed, the initiator
 | |
| 									///< can wait this duration for the next bus idle time. Default value is 0x3.
 | |
| 	CEC_CONFIG_ID_RETRY_CNT,        ///< Configure the Re-Try times after command transmit failed.
 | |
| 
 | |
| 	CEC_CONFIG_ID_TX_TRIG,          ///< Trigger the CEC command transmit. The interrupt status "CEC_TXFRM" would be triggered after transmitting done.
 | |
| 	CEC_CONFIG_ID_LOCAL_ADDR,       ///< Configure the CEC Local Address. The CEC controller would receive the CEC bus command's destination address matched with the local address.
 | |
| 	CEC_CONFIG_ID_SRC_ADDR,         ///< Configure the CEC source address. After CEC command is sent, the source address is used to notify the destination device where the command is from.
 | |
| 	CEC_CONFIG_ID_DEST_ADDR,        ///< Configure the CEC destination address. This is used to assign the command destination device address.
 | |
| 	CEC_CONFIG_ID_TXRISE_OFS,       ///< Configure the CEC command transmit timing Rise Offset. The value of 128 would be the standard value in the CEC standard. Unit in 10us.
 | |
| 	CEC_CONFIG_ID_TXFALL_OFS,       ///< Configure the CEC command transmit timing Fall Offset. The value of 128 would be the standard value in the CEC standard. Unit in 10us.
 | |
| 
 | |
| 	CEC_CONFIG_ID_RXRISE_OFS,       ///< Configure the CEC command receive timing Rise Offset. The value of 20 would be the standard value in the CEC standard. Unit in 10us.
 | |
| 	CEC_CONFIG_ID_RXFALL_OFS,       ///< Configure the CEC command receive timing Fall Offset. The value of 35 would be the standard value in the CEC standard. Unit in 10us.
 | |
| 	CEC_CONFIG_ID_RXSTART_OFS,      ///< Configure the CEC command receive timing Start Bit Offset. The value of 20 would be the standard value in the CEC standard. Unit in 10us.
 | |
| 	CEC_CONFIG_ID_RXSMPL_OFS,       ///< Configure the CEC command receive sample timing Offset. The value of 128 would be the standard value in the CEC standard. Unit in 10us.
 | |
| 
 | |
| 	CEC_CONFIG_ID_DEGLITCH,         ///< Configure the De-Glitch Time. Unit in 10us.
 | |
| 	CEC_CONFIG_ID_ERROR_LOW,        ///< Please set this value to 0x168 according to the CEC standard.
 | |
| 	CEC_CONFIG_ID_NACK_CTRL,        ///< If the NACK_CTRL is enabled, the CEC controller would NACK the in-coming command and cause the Tx re-transmit.
 | |
| 	CEC_CONFIG_ID_ARBI_RANGE,       ///< Configure the CEC arbitration lost judgement delay. The selection value would be "(ui_config)x20" us. Default value is 3(60us). Valid Range from 0x0 to 0xF.
 | |
| 
 | |
| 	CEC_CONFIG_ID_PHY_ADDR,         ///< Set the CEC physical address, this address is from the TV EDID information.
 | |
| 
 | |
| 	ENUM_DUMMY4WORD(CEC_CONFIG_ID)
 | |
| } CEC_CONFIG_ID;
 | |
| 
 | |
| 
 | |
| /**
 | |
|     HDMI configuration identifications
 | |
| 
 | |
|     These definitions are used in the hdmitx_set_config() and hdmitx_get_config() to configure the HDMI functionalities.
 | |
| */
 | |
| typedef enum {
 | |
| 	HDMI_CONFIG_ID_VIDEO,           ///< Specify the HDMI video format. The input parameter must use one of the HDMI_VIDEOID definition.
 | |
| 	HDMI_CONFIG_ID_AUDIO,           ///< Specify the HDMI audio format. The input parameter must use one of the HDMI_AUDIO32KHZ / HDMI_AUDIO44_1KHZ / HDMI_AUDIO48KHZ.
 | |
| 	HDMI_CONFIG_ID_OE,              ///< Configure HDMI output enable. When setting to disable, the output pad power would be close together for power saving.
 | |
| 
 | |
| 	HDMI_CONFIG_ID_AV_MUTE,         ///< Set the HDMI AV_MUTE flag in the general control packet in the HDMI standard. This would mute both the HDMI video and audio.
 | |
| 	HDMI_CONFIG_ID_AUDIO_MUTE,      ///< Set the Audio Mute Enable/Disable.
 | |
| 	HDMI_CONFIG_ID_AUDIO_STREAM_EN, ///< Enable/Disable the HDMI controller internal audio stream.
 | |
| 	HDMI_CONFIG_ID_SOURCE,          ///< The HDMI can be selected from IDE/IDE2 by the definition "HDMI_SOURCE".
 | |
| 	HDMI_CONFIG_ID_3D_FMT,          ///< This can be used to notify the TV/Display which of the 3D content in the HDMI streaming. Use the "HDMI_3DFMT" as input parameter.
 | |
| 
 | |
| 	HDMI_CONFIG_ID_FORCE_RGB,       ///< Set ENABLE would force the HDMI output as RGB format. If set to DISABLE, the HDMI would output RGB or YUV format accrording to the EDID information.
 | |
| 	HDMI_CONFIG_ID_FORCE_UNDERSCAN, ///< Set ENABLE would force the HDMI output as under_scan. If set to DISABLE, the HDMI would output under_scan or OverScan accrording to the EDID information.
 | |
| 	HDMI_CONFIG_ID_VERIFY_VIDEOID,  ///< Enable/Disable the HDMI driver to verify video ID is supported by the TV/Display. If no support, the driver would map the video format to HDMI basic format.
 | |
| 
 | |
| 	HDMI_CONFIG_ID_MANUFACTURER_ID, ///< Get TV/Display Manufacturer-id from EDID information. This definition is for hdmitx_get_config() only.
 | |
| 
 | |
| 	HDMI_CONFIG_ID_SWING_CTRL,      ///< Set HDMI Output Swing Control Setting value. Please use HDMI_SWING_CTRL as input parameter.
 | |
| 	HDMI_CONFIG_ID_SEL_BGR,         ///< Get Current select BGR Setting value. This can be used in hdmitx_get_config() only.
 | |
| 	HDMI_CONFIG_ID_REG_BGR_EN,      ///< Get Current HDMI PHY REG_BGR_EN Value. This can be used in hdmitx_get_config() only.
 | |
| 	HDMI_CONFIG_ID_BGR_CTRL,        ///< Set HDMI PHY Output Voltage adjustment. Default value is 0x4. Valid range is 0x0 to 0x7.
 | |
| 	HDMI_CONFIG_ID_BGR_TEST,        ///< Get Current HDMI PHY BGR TEST Value. This can be used in hdmitx_get_config() only.
 | |
| 	HDMI_CONFIG_ID_CLKDETECT,       ///< Get HDMI Clock Detect Enable. This can be used in hdmitx_get_config() only.
 | |
| 	HDMI_CONFIG_ID_PHY_PDB,         ///< Get HDMI PHY PDB Bit Status. This can be used in hdmitx_get_config() only.
 | |
| 	HDMI_CONFIG_ID_TERM_EN,         ///< Get HDMI Internal Source Terminator Enable. This can be used in hdmitx_get_config() only.
 | |
| 	HDMI_CONFIG_ID_BW_CTRL,         ///< Get HDMI PHY PLL bandwidth control setup value. This can be used in hdmitx_get_config() only.
 | |
| 	HDMI_CONFIG_ID_CKSW_CTRL,       ///< Get HDMI PHY CKSW Control setup value. This can be used in hdmitx_get_config() only.
 | |
| 	HDMI_CONFIG_ID_PHYREG_PD,       ///< Get HDMI PHY REG_PD setup value. This can be used in hdmitx_get_config() only.
 | |
| 	HDMI_CONFIG_ID_RXSENSE,         ///< Get HDMI Receiver Sense. The return value TRUE means the Rx terminator is ON. This can be used in hdmitx_get_config() only.
 | |
| 
 | |
| 	HDMI_CONFIG_ID_HWDDC,           ///< Select the DDC Channel is using HW I2C controller or SW GPIO control. Default value is TRUE (HW I2C Control).
 | |
| 									///< Input Parameter TRUE is HW I2C controller and FALSE is SW GPIO control and the user must assign the GPIO pin locations.
 | |
| 	HDMI_CONFIG_ID_SWDDC_SCL,       ///< Assign SW DDC SCL pin's GPIO location. This is valid only if HDMI_CONFIG_ID_HWDDC set to FALSE.
 | |
| 	HDMI_CONFIG_ID_SWDDC_SDA,       ///< Assign SW DDC SDA pin's GPIO location. This is valid only if HDMI_CONFIG_ID_HWDDC set to FALSE.
 | |
| 
 | |
| 	HDMI_CONFIG_ID_TRIM_RSEL,       ///< Calibrated Resistor Select value.
 | |
| 
 | |
| 	HDMI_CONFIG_ID_VSYNC_INVERT,    ///< Disable is Active Low. Enable is Active High
 | |
| 	HDMI_CONFIG_ID_HSYNC_INVERT,    ///< Disable is Active Low. Enable is Active High
 | |
| 
 | |
| 	HDMI_CONFIG_ID_COMPONENT0,		///< Set HDMI TX CHANNEL COMPONENT 0 SWAP.
 | |
| 	HDMI_CONFIG_ID_COMPONENT1,		///< Set HDMI TX CHANNEL COMPONENT 1 SWAP.
 | |
| 	HDMI_CONFIG_ID_COMPONENT2,		///< Set HDMI TX CHANNEL COMPONENT 2 SWAP.
 | |
| 
 | |
| 	HDMI_CONFIG_ID_SCRAMBLE_EN,     ///< Enable/Disable the Scrambling function.
 | |
| 	HDMI_CONFIG_ID_PIXCLK_DIVIDE4,  ///< Enable/Disable the PHY PIXCLK Divide by 4.
 | |
| 
 | |
| 	HDMI_CONFIG_ID_SCDC_DUMP,       ///< Dump Connected display device's SCDC registers if device supported.
 | |
| 
 | |
| 	HDMI_CONFIG_ID_SCDC_ENABLE,     ///< SCDC function enable/disable if device support RR.
 | |
| 	HDMI_CONFIG_ID_EDIDMSG,			///< ENABLE/DISABLE the EDID information printing during hdmi open.
 | |
| 
 | |
| 	HDMI_CONFIG_ID_SCDC_WRITE,      //   Valid for verification only. Useless at normal usages.
 | |
| 	ENUM_DUMMY4WORD(HDMI_CONFIG_ID)
 | |
| } HDMI_CONFIG_ID;
 | |
| 
 | |
| 
 | |
| /**
 | |
|     HDMI Video Source
 | |
| 
 | |
|     This is used as the input parameter in the hdmitx_set_config(HDMI_CONFIG_ID_SOURCE) to select the HDMI video source.
 | |
| */
 | |
| typedef enum {
 | |
| 	HDMI_SOURCE_IDE,                ///< Select HDMI video stream source from IDE.
 | |
| 	HDMI_SOURCE_IDE2,               ///< Select HDMI video stream source from IDE2.
 | |
| 
 | |
| 	ENUM_DUMMY4WORD(HDMI_SOURCE)
 | |
| } HDMI_SOURCE;
 | |
| 
 | |
| /**
 | |
|     HDMI Interrupt identifications
 | |
| 
 | |
|     Some of the definitions are used in HDMI-CEC ISR callback identifications.
 | |
| */
 | |
| typedef enum {
 | |
| 	CEC_RXFRM       = 0x00100000,   ///< CEC Receive a command.
 | |
| 	CEC_RXPOLL      = 0x00200000,   ///< CEC Receive a polling command.
 | |
| 	CEC_TXFRM       = 0x00400000,   ///< CEC Transmit a command successfully.
 | |
| 	CEC_RETRY       = 0x00800000,   ///< CEC Transmit a command fail.
 | |
| 	CEC_AL          = 0x01000000,   ///< CEC Transmit a command fail with arbitration lost condition.
 | |
| 	CEC_RXTIMEOUT   = 0x02000000,   ///< CEC Receive command with timeout error occured.
 | |
| 	CEC_ERROR       = 0x04000000,   ///< CEC Bus error.
 | |
| 	CEC_INTALL      = 0x07F00000,   ///< The bit mask of all the CEC interrupt status.
 | |
| 
 | |
| 
 | |
| 	OVER_RUN        = 0x00000001,   ///< Reserved for internal usage.
 | |
| 	RSEN            = 0x00000002,   ///< Reserved for internal usage.
 | |
| 	HPD             = 0x00000004,   ///< Reserved for internal usage.
 | |
| 	VSYNC_REC       = 0x00000008,   ///< Reserved for internal usage.
 | |
| 	PIXCLK_STBL     = 0x00000010,   ///< Reserved for internal usage.
 | |
| 	ACR_OVR         = 0x00000020,   ///< Reserved for internal usage.
 | |
| 	CTS_CHG         = 0x00000040,   ///< Reserved for internal usage.
 | |
| 	GCP_CHG_MUTE    = 0x00000080,   ///< Reserved for internal usage.
 | |
| 	HDMI_INTALL     = 0x000000FF,   ///< Reserved for internal usage.
 | |
| 	ENUM_DUMMY4WORD(HDMI_INT_TYPE)
 | |
| } HDMI_INT_TYPE;
 | |
| 
 | |
| 
 | |
| 
 | |
| //
 | |
| //  HDMI Extern API Definitions
 | |
| //
 | |
| 
 | |
| /**
 | |
|     Open HDMI Transmitter Driver
 | |
| 
 | |
|    Open HDMI Transmitter and then intialize the source clock / DDC / interrupt for usage.
 | |
|    Besides, this would also read the TV/Display's EDID information from DDC channel and parsing the EDID.
 | |
|    The user can get the EDID information after hdmitx_open() by the api hdmitx_get_edid_info().
 | |
|    The driver is opened or not can be checked by the hdmitx_is_opened.
 | |
|    The behavior of the re-open of the HDMI driver in under save protection in the driver design.\n
 | |
|    In the system design, the DDC channel is using the I2C2 controller in normal operation.
 | |
|    The user must remember opening the I2C2 pinmux in the systemInit phase.
 | |
| 
 | |
|     @return
 | |
|      - @b E_OK: Done and success
 | |
| */
 | |
| extern ER       hdmitx_open(void);
 | |
| 
 | |
| /**
 | |
|     Close the HDMI-Tx module
 | |
| 
 | |
|     Close the HDMI-Tx module, this api would power down the hdmi-tx module and also close the I2C2(DDC) usage.
 | |
| 
 | |
|     @return void
 | |
|      - @b E_OK: Done and success
 | |
| */
 | |
| extern ER       hdmitx_close(void);
 | |
| 
 | |
| /**
 | |
|     Check the HDMI-Tx driver is opened or not
 | |
| 
 | |
|     Check the HDMI-Tx driver is opened or not
 | |
| 
 | |
|     @return
 | |
|      - @b TRUE:  Already opened.
 | |
|      - @b FALSE: Have not opened yet.
 | |
| */
 | |
| extern BOOL     hdmitx_is_opened(void);
 | |
| 
 | |
| /**
 | |
|     Set HDMI functionality configuration
 | |
| 
 | |
|     This is used to configure the main functions of the HDMI controller, including the Video/Audio formats, output-enable,
 | |
|     video-source, 3D-format, ...etc. Please reference to the "HDMI_CONFIG_ID" and the application note for the control function details.
 | |
| 
 | |
|     @param[in] config_id     Control function selection ID.
 | |
|     @param[in] ui_config     Please reference to the "HDMI_CONFIG_ID" and the application note for the control function parameter details.
 | |
| 
 | |
|     @return void
 | |
| */
 | |
| extern void     hdmitx_set_config(HDMI_CONFIG_ID config_id, UINT32 ui_config);
 | |
| 
 | |
| /**
 | |
|     Get HDMI functionality configuration
 | |
| 
 | |
|     Use this api to get the current HDMI function configuration.
 | |
| 
 | |
|     @param[in] config_id     Get which Control function configuration selection.
 | |
| 
 | |
|     @return Please reference to the "HDMI_CONFIG_ID" for the control function parameter details.
 | |
| */
 | |
| extern UINT32   hdmitx_get_config(HDMI_CONFIG_ID config_id);
 | |
| 
 | |
| /**
 | |
|     Check if HDMI's video Clock is stable or not
 | |
| 
 | |
|     This api is used in the HDMI display device object to check if the hdmi input video clock is stable or not after
 | |
|     opening the IDE Pixel clock. If the none of the video clock or the clock is not stable, this api would output the
 | |
|     warning message "HDMI Video Clock Not Stable! Timeout!!" on console.
 | |
| 
 | |
|     @return void
 | |
| */
 | |
| extern void     hdmitx_check_video_stable(void);
 | |
| 
 | |
| /**
 | |
|     Check hotplug or not
 | |
| 
 | |
|     This is used to check if the HDMI cable is plugged or not.
 | |
| 
 | |
|     @return
 | |
|      - @b TRUE:  Hotplug attached.
 | |
|      - @b FALSE: Hotplug detached.
 | |
| */
 | |
| extern BOOL     hdmitx_check_hotplug(void);
 | |
| 
 | |
| /**
 | |
|     Get HDMI EDID information
 | |
| 
 | |
|     Get HDMI EDID Parsing results flags.
 | |
|     This information is used in the HDMI display device object to control the hdmi functionality.
 | |
| 
 | |
|     @return The parsing results bit-wise Flags.
 | |
| */
 | |
| //extern UINT32   hdmitx_get_edid_info(void);
 | |
| 
 | |
| /**
 | |
|     Verify HDMI Video ID Validation
 | |
| 
 | |
|     This api would verify the user desired video format is supported by TV/Display or not.
 | |
|     The supported list is from the TV/Display's EDID's Short Timing Descriptor(STD).
 | |
|     If the desired VID is not supported, the basic format would be outputed.(720x480P60 / 640x480P60)
 | |
| 
 | |
|     @param[in,out] vid_code    Video-ID defined in CEA-861D, please refer to hdmitx.h for details.
 | |
| 
 | |
|     @return void
 | |
| */
 | |
| extern void     hdmitx_verify_video_id(HDMI_VIDEOID *vid_code);
 | |
| 
 | |
| /**
 | |
|     Dump HDMI Information
 | |
| 
 | |
|     Dump HDMI debug information. The information includes EDID native and result flags
 | |
|     and also the video format supported by the TV/Display from EDID descriptions.
 | |
| 
 | |
|     @return void
 | |
| */
 | |
| extern void     hdmitx_dump_info(void);
 | |
| 
 | |
| /**
 | |
|     Get the HDMI Video Format Support Ability
 | |
| 
 | |
|     This api is used to get the HDMI Video Format Support Ability inlcudes the 2D/3D format supporting capability.
 | |
|     The user provided "pVdoAbility" buffer should contains at least 30 entries in safety.
 | |
| 
 | |
|     @param[out] pLen            Number of video formats supported by the TV/Display.
 | |
|     @param[out] pVdoAbility     The structure of the supported video format and its 3D ability.
 | |
| 
 | |
|     @return void
 | |
| */
 | |
| //extern void     hdmitx_get_video_ability(UINT32 *p_len, PHDMI_VDOABI vdo_ability);
 | |
| 
 | |
| /**
 | |
|     Check if the HDMI RX's DDC Channel is available or not.
 | |
| 
 | |
|     This api is used to check if the HDMI Rx is available or not.
 | |
| 
 | |
|     @return
 | |
|      - @b TRUE:  The HDMI RX's DDC Channel is available.
 | |
|      - @b FALSE: The HDMI RX's DDC Channel is NOT available.
 | |
| */
 | |
| extern BOOL     hdmitx_check_ddc(void);
 | |
| 
 | |
| 
 | |
| //
 | |
| //  CEC Extern API Definitions
 | |
| //
 | |
| 
 | |
| /**
 | |
|     Open Consumer Electronics Control (CEC) controller Driver
 | |
| 
 | |
|     The user must open HDMI controller by the api hdmitx_open() first.
 | |
|     This api would open the CEC controller needed operating source clock and intialize
 | |
|     the interrupt for cec usage.
 | |
| 
 | |
|     @return
 | |
|      -@b E_OK:  Done and Success.
 | |
|      -@b E_SYS: HDMI is not opened yet! CEC can be opened after HDMI is opened only.
 | |
| */
 | |
| extern ER       hdmicec_open(void);
 | |
| 
 | |
| /**
 | |
|     Close CEC module driver
 | |
| 
 | |
|     It is better to close the CEC driver before the HDMI controller to avoid un-predictable events.
 | |
| 
 | |
|     @return
 | |
|      -@b E_OK: Done and Success.
 | |
| */
 | |
| extern ER       hdmicec_close(void);
 | |
| 
 | |
| /**
 | |
|     Hook CEC ISR callback
 | |
| 
 | |
|     Hook CEC ISR callback handler.
 | |
| 
 | |
|     @param[in] IsrCB    ISR callback function for CEC.
 | |
| 
 | |
|     @return void
 | |
| */
 | |
| //extern void     hdmicec_hook_callback(DRV_CB isr_cb);
 | |
| 
 | |
| /**
 | |
|     Set HDMI CEC functional configurations
 | |
| 
 | |
|     This api is used to configure the function configuration of the CEC controller, including CEC bus transmit/receive timing,
 | |
|     bus free count 1/2/3, retry count, ...etc.
 | |
| 
 | |
|     @param[in] config_id     Control function selection ID.
 | |
|     @param[in] ui_config     Please reference to the "CEC_CONFIG_ID" and the application note for the control function parameter details.
 | |
| 
 | |
|     @return void
 | |
| */
 | |
| extern void     hdmicec_set_config(CEC_CONFIG_ID config_id, UINT32 ui_config);
 | |
| 
 | |
| /**
 | |
|     Get HDMI CEC functional configurations
 | |
| 
 | |
|     Get HDMI CEC functional configurations
 | |
| 
 | |
|     @param[in] config_id     Control function selection ID.
 | |
| 
 | |
|     @return  Please reference to the "CEC_CONFIG_ID" for the control function parameter details.
 | |
| */
 | |
| extern UINT32   hdmicec_get_config(CEC_CONFIG_ID config_id);
 | |
| 
 | |
| /**
 | |
|     Set CEC Transmit Command Data
 | |
| 
 | |
|     Set CEC Transmit Command Data, including the Data Size and the data buffer address.
 | |
|     The first uiTxDataSize bytes of the data buffer address would be assign to the transmit register of the CEC controller.
 | |
|     After using this api, the user should call hdmicec_setConfig(CEC_CONFIG_ID_TX_TRIG, TRUE) to trigger the transmit operation.
 | |
|     After the transmission is done, the interrupt status CEC_TXFRM would be issued and the user can identify it at the callback handler.
 | |
|     If setting the uiTxDataSize to 0x0 means none of the Data Bytes would transmit, this is still the valid packet on the CEC bus because
 | |
|     only the header byte would be sent and this is called the polling or ping command in the CEC standard.
 | |
| 
 | |
|     @param[in] uiTxDataSize     Number of the CEC Tx command bytes. Valid range from 0 to 15.
 | |
|     @param[in] uiDataBufAddr    CEC command data buffer address. The first uiTxDataSize bytes of the data buffer address would be assign to the transmit register of the CEC controller.
 | |
| 
 | |
|     @return void
 | |
| */
 | |
| extern void     hdmicec_set_tx_data(UINT32 ui_tx_data_size, UINT32 ui_data_buf_addr);
 | |
| 
 | |
| /**
 | |
|     Get the CEC received Data Command
 | |
| 
 | |
|     Get CEC Received Command Data, including the Command Data length.
 | |
|     The puiRxDataSize contains the number of received command byte count.
 | |
|     The uiDataBufAddr is the buffer address and the first byte of the buffer contans the CEC header byte which indicating
 | |
|     the source and destination device address. The user can reference to the CEC standard for the details.
 | |
| 
 | |
|     @param[out] puiRxDataSize    Number of the CEC received command bytes. Valid range from 1 to 16.
 | |
|     @param[out] uiDataBufAddr    The returned CEC command data buffer address.
 | |
| 
 | |
|     @return void
 | |
| */
 | |
| extern void     hdmicec_get_rx_data(UINT32 *pui_rx_data_size, UINT32 ui_data_buf_addr);
 | |
| 
 | |
| //@}
 | |
| 
 | |
| #endif
 | 
