///*****************************************
|
// Copyright (C) 2009-2019
|
// ITE Tech. Inc. All Rights Reserved
|
// Proprietary and Confidential
|
///*****************************************
|
// @file <typedef.h>
|
// @author Jau-Chih.Tseng@ite.com.tw
|
// @date 2019/01/03
|
// @fileversion: ITE_HDMITX_SAMPLE_3.27
|
//******************************************/
|
|
#ifndef _TYPEDEF_H_
|
#define _TYPEDEF_H_
|
|
//////////////////////////////////////////////////
|
// data type
|
//////////////////////////////////////////////////
|
#ifdef _MCU_8051_
|
#define _CODE code
|
#define _DATA data
|
#define _XDATA xdata
|
#define _IDATA idata
|
typedef bit BOOL ;
|
#else
|
#define _CODE const
|
#define _DATA
|
#define _IDATA
|
#define _XDATA
|
typedef int BOOL ;
|
#endif // _MCU_8051_
|
|
typedef _CODE unsigned char cBYTE;
|
|
typedef char CHAR, *PCHAR ;
|
typedef unsigned char uchar, *puchar ;
|
typedef unsigned char UCHAR, *PUCHAR ;
|
typedef unsigned char byte, *pbyte ;
|
typedef unsigned char BYTE, *PBYTE ;
|
|
typedef short SHORT, *PSHORT ;
|
typedef unsigned short ushort, *pushort ;
|
typedef unsigned short USHORT, *PUSHORT ;
|
typedef unsigned short word, *pword ;
|
typedef unsigned short WORD, *PWORD ;
|
typedef unsigned int UINT, *PUINT ;
|
|
typedef long LONG, *PLONG ;
|
typedef unsigned long ulong, *pulong ;
|
typedef unsigned long ULONG, *PULONG ;
|
typedef unsigned long dword, *pdword ;
|
typedef unsigned long DWORD, *PDWORD ;
|
|
#define FALSE 0
|
#define TRUE 1
|
|
#define SUCCESS 0
|
#define FAIL -1
|
|
#define ON 1
|
#define OFF 0
|
|
#define LO_ACTIVE TRUE
|
#define HI_ACTIVE FALSE
|
|
typedef enum _SYS_STATUS {
|
ER_SUCCESS = 0,
|
ER_FAIL,
|
ER_RESERVED
|
} SYS_STATUS ;
|
|
#define ABS(x) (((x)>=0)?(x) : (-(x)))
|
|
///////////////////////////////////////////////////////////////////////
|
// Video Data Type
|
///////////////////////////////////////////////////////////////////////
|
|
#define F_MODE_RGB444 0
|
#define F_MODE_YUV422 1
|
#define F_MODE_YUV444 2
|
#define F_MODE_CLRMOD_MASK 3
|
|
#define F_MODE_INTERLACE 1
|
|
#define F_VIDMODE_ITU709 (1 << 4)
|
#define F_VIDMODE_ITU601 0
|
|
#define F_VIDMODE_0_255 0
|
#define F_VIDMODE_16_235 (1 << 5)
|
|
#define F_VIDMODE_EN_UDFILT (1 << 6)
|
#define F_VIDMODE_EN_DITHER (1 << 7)
|
|
#define T_MODE_CCIR656 (1 << 0)
|
#define T_MODE_SYNCEMB (1 << 1)
|
#define T_MODE_INDDR (1 << 2)
|
#define T_MODE_PCLKDIV2 (1 << 3)
|
#define T_MODE_DEGEN (1 << 4)
|
#define T_MODE_SYNCGEN (1 << 5)
|
/////////////////////////////////////////////////////////////////////
|
// Packet and Info Frame definition and datastructure.
|
/////////////////////////////////////////////////////////////////////
|
|
#define VENDORSPEC_INFOFRAME_TYPE 0x81
|
#define AVI_INFOFRAME_TYPE 0x82
|
#define SPD_INFOFRAME_TYPE 0x83
|
#define AUDIO_INFOFRAME_TYPE 0x84
|
#define MPEG_INFOFRAME_TYPE 0x85
|
|
#define VENDORSPEC_INFOFRAME_VER 0x01
|
#define AVI_INFOFRAME_VER 0x02
|
#define SPD_INFOFRAME_VER 0x01
|
#define AUDIO_INFOFRAME_VER 0x01
|
#define MPEG_INFOFRAME_VER 0x01
|
|
#define VENDORSPEC_INFOFRAME_LEN 5
|
#define AVI_INFOFRAME_LEN 13
|
#define SPD_INFOFRAME_LEN 25
|
#define AUDIO_INFOFRAME_LEN 10
|
#define MPEG_INFOFRAME_LEN 10
|
|
#define ACP_PKT_LEN 9
|
#define ISRC1_PKT_LEN 16
|
#define ISRC2_PKT_LEN 16
|
|
typedef union _VendorSpecific_InfoFrame
|
{
|
struct {
|
BYTE Type ;
|
BYTE Ver ;
|
BYTE Len ;
|
|
BYTE CheckSum;
|
|
BYTE IEEE_0;//PB1
|
BYTE IEEE_1;//PB2
|
BYTE IEEE_2;//PB3
|
|
BYTE Rsvd : 5 ;//PB4
|
BYTE HDMI_Video_Format : 3 ;
|
|
BYTE Reserved_PB5 : 4 ;//PB5
|
BYTE _3D_Structure : 4 ;
|
|
BYTE Reserved_PB6 : 4 ;//PB6
|
BYTE _3D_Ext_Data : 4 ;
|
} info ;
|
struct {
|
BYTE VS_HB[3] ;
|
BYTE CheckSum;
|
BYTE VS_DB[28] ;
|
} pktbyte ;
|
} VendorSpecific_InfoFrame ;
|
|
typedef union _AVI_InfoFrame
|
{
|
|
struct {
|
BYTE Type;
|
BYTE Ver;
|
BYTE Len;
|
|
BYTE checksum ;
|
|
BYTE Scan : 2;
|
BYTE BarInfo : 2;
|
BYTE ActiveFmtInfoPresent : 1;
|
BYTE ColorMode : 2;
|
BYTE FU1 : 1;
|
|
BYTE ActiveFormatAspectRatio : 4;
|
BYTE PictureAspectRatio : 2;
|
BYTE Colorimetry : 2;
|
|
BYTE Scaling : 2;
|
BYTE FU2 : 6;
|
|
BYTE VIC : 7;
|
BYTE FU3 : 1;
|
|
BYTE PixelRepetition : 4;
|
BYTE FU4 : 4;
|
|
short Ln_End_Top;
|
short Ln_Start_Bottom;
|
short Pix_End_Left;
|
short Pix_Start_Right;
|
} info;
|
|
struct {
|
BYTE AVI_HB[3];
|
BYTE checksum ;
|
BYTE AVI_DB[AVI_INFOFRAME_LEN];
|
} pktbyte;
|
} AVI_InfoFrame;
|
|
typedef union _Audio_InfoFrame {
|
|
struct {
|
BYTE Type;
|
BYTE Ver;
|
BYTE Len;
|
BYTE checksum ;
|
|
BYTE AudioChannelCount : 3;
|
BYTE RSVD1 : 1;
|
BYTE AudioCodingType : 4;
|
|
BYTE SampleSize : 2;
|
BYTE SampleFreq : 3;
|
BYTE Rsvd2 : 3;
|
|
BYTE FmtCoding;
|
|
BYTE SpeakerPlacement;
|
|
BYTE Rsvd3 : 3;
|
BYTE LevelShiftValue : 4;
|
BYTE DM_INH : 1;
|
} info;
|
|
struct {
|
BYTE AUD_HB[3];
|
BYTE checksum ;
|
BYTE AUD_DB[10];
|
} pktbyte;
|
|
} Audio_InfoFrame;
|
|
typedef union _MPEG_InfoFrame {
|
struct {
|
BYTE Type;
|
BYTE Ver;
|
BYTE Len;
|
BYTE checksum ;
|
|
ULONG MpegBitRate;
|
|
BYTE MpegFrame : 2;
|
BYTE Rvsd1 : 2;
|
BYTE FieldRepeat : 1;
|
BYTE Rvsd2 : 3;
|
} info;
|
struct {
|
BYTE MPG_HB[3];
|
BYTE checksum ;
|
BYTE MPG_DB[MPEG_INFOFRAME_LEN];
|
} pktbyte;
|
} MPEG_InfoFrame;
|
|
typedef union _SPD_InfoFrame {
|
struct {
|
BYTE Type;
|
BYTE Ver;
|
BYTE Len;
|
BYTE checksum ;
|
|
char VN[8];
|
char PD[16];
|
BYTE SourceDeviceInfomation;
|
} info;
|
struct {
|
BYTE SPD_HB[3];
|
BYTE checksum ;
|
BYTE SPD_DB[SPD_INFOFRAME_LEN];
|
} pktbyte;
|
} SPD_InfoFrame;
|
|
///////////////////////////////////////////////////////////////////////////
|
// Using for interface.
|
///////////////////////////////////////////////////////////////////////////
|
|
#define PROG 1
|
#define INTERLACE 0
|
#define Vneg 0
|
#define Hneg 0
|
#define Vpos 1
|
#define Hpos 1
|
|
typedef struct {
|
WORD H_ActiveStart;
|
WORD H_ActiveEnd;
|
WORD H_SyncStart;
|
WORD H_SyncEnd;
|
WORD V_ActiveStart;
|
WORD V_ActiveEnd;
|
WORD V_SyncStart;
|
WORD V_SyncEnd;
|
WORD V2_ActiveStart;
|
WORD V2_ActiveEnd;
|
WORD HTotal;
|
WORD VTotal;
|
} CEAVTiming;
|
|
typedef struct {
|
BYTE VIC ;
|
BYTE PixelRep ;
|
WORD HActive;
|
WORD VActive;
|
WORD HTotal;
|
WORD VTotal;
|
ULONG PCLK;
|
BYTE xCnt;
|
WORD HFrontPorch;
|
WORD HSyncWidth;
|
WORD HBackPorch;
|
BYTE VFrontPorch;
|
BYTE VSyncWidth;
|
BYTE VBackPorch;
|
BYTE ScanMode : 1;
|
BYTE VPolarity : 1;
|
BYTE HPolarity : 1;
|
} HDMI_VTiming;
|
|
//////////////////////////////////////////////////////////////////
|
// Audio relate definition and macro.
|
//////////////////////////////////////////////////////////////////
|
|
// 2008/08/15 added by jj_tseng@chipadvanced
|
#define F_AUDIO_ON (1 << 7)
|
#define F_AUDIO_HBR (1 << 6)
|
#define F_AUDIO_DSD (1 << 5)
|
#define F_AUDIO_NLPCM (1 << 4)
|
#define F_AUDIO_LAYOUT_1 (1 << 3)
|
#define F_AUDIO_LAYOUT_0 (0 << 3)
|
|
// HBR - 1100
|
// DSD - 1010
|
// NLPCM - 1001
|
// LPCM - 1000
|
|
#define T_AUDIO_MASK 0xF0
|
#define T_AUDIO_OFF 0
|
#define T_AUDIO_HBR (F_AUDIO_ON|F_AUDIO_HBR)
|
#define T_AUDIO_DSD (F_AUDIO_ON|F_AUDIO_DSD)
|
#define T_AUDIO_NLPCM (F_AUDIO_ON|F_AUDIO_NLPCM)
|
#define T_AUDIO_LPCM (F_AUDIO_ON)
|
|
// for sample clock
|
#define AUDFS_22p05KHz 4
|
#define AUDFS_44p1KHz 0
|
#define AUDFS_88p2KHz 8
|
#define AUDFS_176p4KHz 12
|
|
#define AUDFS_24KHz 6
|
#define AUDFS_48KHz 2
|
#define AUDFS_96KHz 10
|
#define AUDFS_192KHz 14
|
|
#define AUDFS_768KHz 9
|
|
#define AUDFS_32KHz 3
|
#define AUDFS_OTHER 1
|
|
// Audio Enable
|
#define ENABLE_SPDIF (1 << 4)
|
#define ENABLE_I2S_SRC3 (1 << 3)
|
#define ENABLE_I2S_SRC2 (1 << 2)
|
#define ENABLE_I2S_SRC1 (1 << 1)
|
#define ENABLE_I2S_SRC0 (1 << 0)
|
|
#define AUD_SWL_NOINDICATE 0x0
|
#define AUD_SWL_16 0x2
|
#define AUD_SWL_17 0xC
|
#define AUD_SWL_18 0x4
|
#define AUD_SWL_20 0xA // for maximum 20 bit
|
#define AUD_SWL_21 0xD
|
#define AUD_SWL_22 0x5
|
#define AUD_SWL_23 0x9
|
#define AUD_SWL_24 0xB
|
|
#endif // _TYPEDEF_H_
|