📄 gsel.h
字号:
/*
$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 + -