⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gsel.h

📁 GM5621原代码
💻 H
📖 第 1 页 / 共 3 页
字号:
/*
	$Workfile:   gsel.h  $
	$Revision:   1.138  $
	$Date:   Aug 23 2006 23:05:56  $
*/

//******************************************************************
//
//		Copyright (C) 2003.  GENESIS MICROCHIP INC.
// All rights reserved.  No part of this program may be reproduced
//
//	Genesis Microchip Inc., 165 Commerce Valley Dr. West
//		Thornhill, Ontario, Canada, L3T 7V8
//
//================================================================
//
// MODULE:      gsel.c
//
// USAGE :      standard gsel include file for 8051 gsel library
//
//******************************************************************

#ifndef	__GSEL_H__
#define	__GSEL_H__

//**************************************************************
//	         G L O B A L   T Y P E D E F S
//**************************************************************
//#define gmd_FALSE	0
//#define gmd_TRUE	0xff

#define BIT0  	0x01
#define BIT1  	0x02
#define BIT2    0x04
#define BIT3    0x08
#define BIT4    0x10
#define BIT5    0x20
#define BIT6    0x40
#define BIT7    0x80
#define BIT8    0x0100
#define BIT9    0x0200
#define BIT10   0x0400
#define BIT11   0x0800
#define BIT12   0x1000
#define BIT13   0x2000
#define BIT14   0x4000
#define BIT15   0x8000
#define BIT16	0x010000
#define BIT17	0x020000
#define BIT18	0x040000
#define BIT19	0x080000
#define BIT20	0x100000
#define BIT21	0x200000
#define BIT22	0x400000
#define BIT23	0x800000
#define BIT24	0x01000000
#define BIT25	0x02000000
#define BIT26	0x04000000
#define BIT27	0x08000000
#define BIT28	0x10000000
#define BIT29	0x20000000
#define BIT30	0x40000000
#define BIT31	0x80000000

#ifdef __C51__
	#define ROM         const code
	#define GlobalMem   xdata
	#define END_MASK(a)	a
	#define FAR_LOC
#else
	#define ROM	        const far
	#define GlobalMem
	#define  xdata
	#define  idata
	#define  data
	#define  bit      BYTE
	#define  _at_(a)
	#define code	const far
	#define END_MASK(a)	((a) & 0x7F)
    #define NULL_PTR    0
	#define FAR_LOC	far

#endif

typedef unsigned char   BYTE;
typedef unsigned int    WORD;
typedef unsigned long   DWORD;
typedef signed char   	SBYTE;
typedef signed int    	SWORD;
typedef signed long   	SDWORD;
typedef signed char 		BOOL;

#ifdef __C51__
	typedef unsigned char BITFIELD; // 8051 uses byte bitfields
	typedef unsigned char    gmt_Timer; // type of timer array (WORD FOR '186 targets
#else
	typedef unsigned int BITFIELD;  // x86 uses ints
	typedef unsigned int    gmt_Timer; // type of timer array (WORD FOR '186 targets
#endif

typedef unsigned char   gmt_REG_BLOCK;

#ifdef __C51__
	#define TIMER_MEMSPACE idata // put all timers and timer control info in idata space to speed up timer isr for 8051
#else
	#define TIMER_MEMSPACE  // for processors other than 8051  use default memory space
#endif

typedef enum
{
	CH_A = 0,						// Physical Channel A
	CH_B,								// Physical Channel B
	CH_PHY_NUM 						// Number of Physical Channels
} gmt_PHY_CH;


// define input sync types
typedef enum
{
	gmd_NO_SYNC_STATE,// no sync
	gmd_DSS_SYNC,		// normal sync
	gmd_DCS_SYNC,		// composit sync
	gmd_SOG_SYNC,		// SOG sync
	gmd_TRI_SYNC,		// Trilevel sync.
	gmd_VPORT_SYNC,		// sweng0119
	gmd_MAX_SYNC_TYPE
} gmt_SYNC_TYPE;

// Input mode types
typedef enum
{
	gmd_NORMAL				= 0x00,
	gmd_SUB_SAMPLE			= BIT0, // if pixel clock to high requiring ADC subsampling.
	gmd_OVERLAPPED350 	= BIT1, // if mode member of 640x350/720x350 overlapped modes.
	gmd_OVERLAPPED400 	= BIT2, // if mode member of 640x400/720x400 overlapped modes.
	gmd_OVERLAPPED_MASK 	= (gmd_OVERLAPPED350 | gmd_OVERLAPPED400),
	gmd_INTERLACED 		= BIT3, // source is an interlaced signal.
	gmd_ESTIMATED		= BIT4, // mode not in standard mode table
	gmd_OUT_RANGE		= BIT5, // source timing violates board timing restrictions.
	gmd_NEG_HSYNC		= BIT6,
	gmd_NEG_VSYNC		= BIT7,
	gmd_SYNC_POL_MASK	= (gmd_NEG_HSYNC | gmd_NEG_VSYNC),
	gmd_CVT_MODE		= BIT8, // if mode is a CVT mode.
    gmd_MODE_SDVIDEO  = BIT9,  // Mode is Standard Definition Video						//sweng0112
    gmd_MODE_HDVIDEO  = BIT10,   // Mode is High Definition Video
    gmd_MODE_EDVIDEO  = (BIT9 | BIT10), // Mode is Extended Definition Video (480p/576p/etc)
    gmd_VIDEO_SRC     = (gmd_MODE_SDVIDEO | gmd_MODE_HDVIDEO | gmd_MODE_EDVIDEO),
//	gmd_VIDEO_SRC 		= BIT9,	// if mode is video (NTCS, PAL, HD etc.)
#ifdef PHOENIX_U
	gmd_CVT_MODE_RB     = BIT11, // CVT reduced blanking mode.
	gmd_SKIP_IF_SYNC_NOT_MATCH = BIT12, // Test 1111
#else
	gmd_CVT_MODE_RB     = BIT11, // CVT reduced blanking mode.
#endif
	gmd_YUV_SRC			= BIT13,
#if defined(PHOENIX_U) //&& defined(CHECK_DVI_OVER_CLK)
	gmd_DVI_OVER_CLK	= BIT14		//sweng0623: For Phoenix_U DVI unstable if over 165Mhz issue	
#endif	
} gmt_MODE_TYPE;


// Display mode types
typedef enum
{
	// gmd_NORMAL,
	gmd_EXPANSION		= BIT0,
	gmd_V_SHRINK		= BIT1,
	gmd_H_SHRINK		= BIT2,
	gmd_VSYNC_DIV2		= BIT3,
	gmd_DISP_MODE_MASK= 0x0f,
	gmd_AUTO_FREERUN	= BIT4,
	gmd_SRC_FREERUN	= BIT5,
	gmd_FORCE_FREERUN	= 0x30,
	gmd_FREERUN_MASK	= 0x30,
	gmd_OUT_INTERLACED= BIT6,
	gmd_RECOVERY		= BIT7
} gmt_DISPLAY_MODE; 


// Extended Custom flag
typedef enum
{
	gmd_FORCE_VERTICAL_2TAPS	= BIT0,			//Force Vetica Filter 2 Taps
	gmd_CAL_DDDS_REF_BY_VTOTAL	= BIT1,			//Calculate Ddds RefVal by VTotal 
	gmd_HDCP_ENABLE				= BIT2			//Enable HDCP function
} gmt_EXT_CUSTOM_FLAG; 					


// Power down control
typedef enum
{
	gmd_POWER_ON_OFF,		// power down by On/Off key
	gmd_POWER_SAVING,		// power down in saving mode
	gmd_POWER_UNSTABLE,	// power down by unstable input timing
	gmd_POWER_UNSUPPORT,	// power down by unsupported input timing
	gmd_MAX_POWER_MODE
} gmt_POWER_DOWN_MODE;


// power up/down condition.
typedef enum
{
	gmd_PWR_NO_CHANNEL,
	gmd_PWR_MAIN,
	gmd_PWR_PIP,
	gmd_PWR_GRAPHICS,
	gmd_PWR_VIDEO,
	gmd_PWR_ALL_CHANNEL,
	gmd_PWR_ANY_CHANNEL
} gmt_POWER_POLICY;

// Bits to indicate which blocks to power up/down
typedef enum
{
	gmd_ADC_BLK 	= 1,
   gmd_IP_BLK,
   gmd_IFM_BLK,
	gmd_DVI_BLK,
	gmd_VPORT_BLK,
	gmd_SDDS_BLK,
	gmd_RCLK_BLK,
	gmd_ALL_BLKS
} gmt_POWER_BLOCKS;




typedef enum
{                        // Error status
	gmd_FALSE = 0,
	gmd_TRUE  = 1,
	gmd_OK    = 0,        	// PDR7021
	gmd_ERR_SEND = 3, 		// Error in sending data
	gmd_ERR_RCV,     			// Error in receiving data
	gmd_ERR_TMO,    			// Timeout error
	gmd_ERR_PARAM,   			// Error in input parameters
	gmd_ERR_READ,           // Error in reading
	gmd_ERR_WRITE,          // Error in writing
	gmd_ERR_COMMAND,			// API command failed
	gmd_ERR_POINTER,			// Pointer not intialized
	gmd_ERR_OVERFLOW,			// Input parameter vlaues over limit
	gmd_ERR_MEMORY,			// Out of SDRAM memory
	gmd_ERR_NO_DATA,			// IR FIFO queue is empty
	gmd_ERR_BUSY,				// Device busy
	gmd_gmd_OSD_INVALID_TILESET,	// Invalid tileset
	gmd_OSD_INVALID_TILE,	// Invalid tile number
	gmd_OSD_DISABLE_TILE,	// tile is disabled, can't draw the control
	gmd_OSD_INVALID_SIZE,	// Invalid control size
	gmd_OSD_INVALID_BPP,		// Invalid color depth
	gmd_OSD_INVALID_FONT_ID,// Invalid font id
	gmd_OSD_TOOBIG_STRING,	// Temporary buffer size is too small for rendering
	gmd_ERR_LIMIT,				// Reach limit of position
	gmd_ERR_ADC_CALIBRATE,	// Error in ADC calibration
	gmd_TMR_ACTIVE,			// Timer is active
	gmd_TMR_TIMED_OUT,		// Timer is timed out
	gmd_TMR_STOPPED,		// Timer is stopped
	gmd_HONVON,				// Hsync on, Vsync on @@@Milton add description - described in function using the values
	gmd_HOFFVON,			// Hsync off, Vsync on
	gmd_HONVOFF,			// etc
	gmd_HOFFVOFF,			// etc
	gmd_CONTINUE,			// gmd_OK to gmd_CONTINUE execution
	gmd_ABORT,				// gmd_ABORT execution
	gmd_ABORTED,			// execution was gmd_ABORTed
	gmd_LOST_FEATURES,	// auto adjust lost features
	gmd_FAIL,				// something failed	   
#ifdef PHOENIX_U
   gmd_ERR_I2C_NOACK,    // i2c slave device returned no-ack during write operation
   gmd_AutoOverRun  
#else
   gmd_ERR_I2C_NOACK    // i2c slave device returned no-ack during write operation
#endif
}gmt_RET_STAT;


typedef enum
{                        // Video Decoder Status
	gmd_LOCKED,
	gmd_UNLOCKED
}gmt_VIDDEC_STAT;

typedef enum
{
	gmd_CHECK_SYNC_PULSE		= BIT1,	// if Hs/Vs pulse changes, declare timing change
	gmd_CHECK_AFR_STABLE		= BIT2,	// if AFR status bit set, declare timing change
	gmd_CHECK_WIDTH_STABLE		= BIT3,	// for dvi only. if width changes, declare timing change
	gmd_CHECK_VTOTAL_STABLE		= BIT4,	// if vtotal changes, declare timing change
	gmd_CHECK_DVI_QS			= BIT5,	// for dvi only. if dvi quality score changes, declare timing change
	gmd_CHECK_HSTART_STABLE		= BIT6,	// for dvi only. if hstart changes, declare timing change
	gmd_CHECK_VSTART_STABLE		= BIT7	// for dvi only. if vstart changes, declare timing change
} gmt_STABLE_PARAM_MASK;

typedef enum
{                                   // passed as a parameter to gm_AutoGeometry()
	gmd_DEFAULT_AUTO = 0,				// whatever the default is

                                    // just one of these should on
   gmd_INSTANT_AUTO = BIT0,			// 1 - instant auto
   gmd_FORCE_WIDTH = BIT1,				// 1 - width & sum of diff

   gmd_STEALTH_MODE = BIT2,			// 1 - use stealth mode (only with instant auto)
   gmd_STEALTH_FREEZE = BIT3,			// 1 - stealth by freezing panel control signals
   											// 0 - stealth by using panel background
   gmd_PHASE_SKEW = BIT4,				// 1 - skew RGB phases for best phase (only with instant auto)
   gmd_AUTO_FILTER = BIT5				// 1 - choose filtering for best phase (only with instant auto)
} gmt_AUTO_ADJ_MODE_MASK;


///////////////////////////////////////////////////////////////////////////////
// 	NVRAM block structures
///////////////////////////////////////////////////////////////////////////////
#define	CRC_FLAG	BIT15
// (PDR#5150) Reconciliation with gsel description
typedef struct
{
	WORD	address;
	WORD	length;
}gmt_BLOCKINFO;

typedef gmt_RET_STAT (FAR_LOC * gmt_Nvram_RW_Function)(WORD address, BYTE *pBlock, WORD length);

///////////////////////////////////////////////////////////////////////////////
// 	Structure describing a buffer allocated by the OSD system
///////////////////////////////////////////////////////////////////////////////
typedef struct
{
	DWORD Address;
	DWORD Size;
}gmt_RAMBuf;

//**************************************************************
//	         G S E L    F U N T I O N   P R O T O T Y P E S
//**************************************************************
//
// timer prototypes
//
void gm_TimerInit(DWORD D_CpuClock, gmt_Timer TIMER_MEMSPACE *UserTimers, BYTE Num10msTimers, BYTE Num100msTimers);
void far gm_TimerStart(BYTE B_Timer, gmt_Timer Value);
BYTE far gm_TimerCheck(BYTE B_Timer);
gmt_Timer far gm_TimerRead(BYTE B_Timer);
void far gm_TimerStop(BYTE B_Timer);
DWORD far gm_ReadSystemTime	(void);
void far gm_Delay1ms	( WORD W_Value);
void far gm_Delay10ms	( WORD W_Value);
void far gm_Delay100ms	( WORD W_Value);

///////////////////////////////////////////////////////////////////////////////
// 	Main While Loop
///////////////////////////////////////////////////////////////////////////////
void gm_HardwareUpdate(void);

///////////////////////////////////////////////////////////////////////////////
// 	Power Handler 
/////////////////////////////////////////////////////////////////////////////// 
void gm_PowerDown(gmt_POWER_BLOCKS B_Block);
void gm_PowerUp(gmt_POWER_BLOCKS B_Block);
void gm_PowerHandler(void);
void gm_SetExtDevicesPowerUpMain(void far (*  FuncPtr) (void));

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -