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

📄 ddcci.h

📁 GM5621原代码
💻 H
字号:
/*
	$Workfile:   ddcci.h  $
	$Revision:   1.13  $
	$Date:   May 17 2006 01:34:42  $
*/
//******************************************************************
//
//		Copyright (C) 2002.  GENESIS MICROCHIP INC.
// All rights reserved.  No part of this program may be reproduced
//
//	Genesis Microchip Corp., 2150 Gold Street
//			Alviso, CA 95002	USA
//	Genesis Microchip Inc., 165 Commerce Valley Dr. West
//		Thornhill, Ontario, Canada, L3T 7V8
//
//================================================================
//
// MODULE:      ddcci.h
//
//******************************************************************
#ifndef __DDC2BI_H__
#define __DDC2BI_H__

/****************************************************************************/
/*  E X T E R N A L    V A R I A B L E S                                    */
/****************************************************************************/

/****************************************************************************/
/*  G L O B A L    D E F I N I T I O N S                                    */
/****************************************************************************/

// commands delegated  to the external rom code handle
typedef enum PARSER_STATUS
{
	NO_MSG_PARSED,
	MSG_PARSED,
	UNKNOWN_MSG_CMD
}PARSER_STATUS_t;


// DDC2Bi standard definitions
#define	DDC2B_DEST_ADDRESS					0x6e
#define	DDC2B_SRC_ADDRESS						0x51
#define	DDC2Bi_PROTOCOL_ID					0x01
#define	DDC2Bi_CONTROL_STATUS_FLAG			0x80
#define	DDC2Bi_DEVICE_DATA_STREAM_FLAG	0x00

//DDC2Bi commands
#define DDC2B_CMD_DEBUG								0xC2
#define DDC2B_CMD_GetVCPFeature					0x01
#define DDC2B_CMD_GetVCPFeature_Reply			0x02
#define DDC2B_CMD_SetVCPFeature					0x03
#define DDC2B_CMD_SaveCurrentSettings			0x0C
#define DDC2B_CMD_CapabilitiesRequest			0xF3
#define DDC2B_CMD_CapabilitiesRequest_Reply	0xE3
#define DDC2B_CMD_GetTimingReport				0x07
#define DDC2B_CMD_GetTimingReport_Reply		0x4E

//Custom commands
#define DDC2B_CMD_CUSTM_GetVCPPage				0xC4
#define DDC2B_CMD_CUSTM_GetVCPPage_Reply		0xC5
#define DDC2B_CMD_CUSTM_GetPagedVCP			0xC6
#define DDC2B_CMD_CUSTM_GetPagedVCP_Reply	0xC7
#define DDC2B_CMD_CUSTM_SetPagedVCP			0xC8
#define DDC2B_CMD_CUSTM_SetPagedVCP_Reply	0xC7
#define DDC2B_CMD_CUSTM_EEPROM					0xC0
#define DDC2B_CMD_CUSTM_EEPROM_Reply			0xC1

//CUSTM EEPROM commands
#define DDC2B_CMD_CUSTM_EEPROMRead				0x09
#define DDC2B_CMD_CUSTM_AssetRead				0x0B
#define DDC2B_CMD_CUSTM_AssetWrite				0x0E

//VCP commands Page0
#define DDC2B_CMD_VCP_NewControlVal			0x02		//To make MCCS 2.0 Compliant - 14June04
#define DDC2B_CMD_VCP_ALLReset				0x04
#define DDC2B_CMD_VCP_BrightContrastReset	0x05   	//To make MCCS 2.0 Compliant - 14June04
#define DDC2B_CMD_VCP_GeometryReset			0x06
#define DDC2B_CMD_VCP_ColorReset				0x08
#define DDC2B_CMD_VCP_Clock					0x0E
#define DDC2B_CMD_VCP_Brightness				0x10
#define DDC2B_CMD_VCP_Contrast				0x12
#define DDC2B_CMD_VCP_SelectColorPreset	0x14
#define DDC2B_CMD_VCP_RedGain					0x16
#define DDC2B_CMD_VCP_GreenGain				0x18
#define DDC2B_CMD_VCP_BlueGain				0x1A
#define DDC2B_CMD_VCP_AutoSetUp				0x1E
#define DDC2B_CMD_VCP_HPosition				0x20
#define DDC2B_CMD_VCP_VPosition				0x30
#define DDC2B_CMD_VCP_ClockPhase				0x3E
#define DDC2B_CMD_VCP_ColorTemp				0x54
#define DDC2B_CMD_VCP_InputSource			0x60  	//To make MCCS 2.0 Compliant - 26July04
#define DDC2B_CMD_VCP_AudioVolume			0x62
#define DDC2B_CMD_VCP_Language				0x68
#define DDC2B_CMD_VCP_TVSaturation			0x8A
#define DDC2B_CMD_VCP_TVSharpness			0x8C
#define DDC2B_CMD_VCP_WindowPosTL_X			0x95
#define DDC2B_CMD_VCP_WindowPosTL_Y       0x96
#define DDC2B_CMD_VCP_WindowPosBR_X       0x97
#define DDC2B_CMD_VCP_WindowPosBR_Y       0x98
#define DDC2B_CMD_VCP_RED						0x9B
#define DDC2B_CMD_VCP_YELLOW					0x9C
#define DDC2B_CMD_VCP_GREEN					0x9D
#define DDC2B_CMD_VCP_CYAN						0x9E
#define DDC2B_CMD_VCP_BLUE						0x9F
#define DDC2B_CMD_VCP_MAGENDA					0xA0
#define DDC2B_CMD_VCP_SyncType				0xA8
#define DDC2B_CMD_VCP_HFreq					0xAC    //To make MCCS 2.0 Compliant - 14June04
#define DDC2B_CMD_VCP_VFreq					0xAE    //To make MCCS 2.0 Compliant - 14June04
#define DDC2B_CMD_VCP_RGBodering				0xB4
#define DDC2B_CMD_VCP_MonitorType			0xB6
#define DDC2B_CMD_VCP_DisplayUsageTime		0xC0    //To make MCCS 2.0 Compliant - 14June04
#define DDC2B_CMD_VCP_ApplnEnKey				0xC6    //To make MCCS 2.0 Compliant - 14June04
#define DDC2B_CMD_VCP_DispControllerType	0xC8    //To make MCCS 2.0 Compliant - 14June04
#define DDC2B_CMD_VCP_DispFirmwareLevel	0xC9    //To make MCCS 2.0 Compliant - 14June04
#define DDC2B_CMD_VCP_OSD						0xCA    //To make MCCS 2.0 Compliant - 14June04
#define DDC2B_CMD_VCP_PowerMode				0xD6    //To make MCCS 2.0 Compliant - 14June04
#define DDC2B_CMD_VCP_MCCSVersion			0xDF    //To make MCCS 2.0 Compliant - 14June04
#define DDC2B_CMD_VCP_ControlLock			0xE3

// for Black level
#ifdef Action_AdjustBlackLevel_WB_Used
#define Red_Video_Black_Level             0x6C
#define Green_Video_Black_Level           0x6E
#define Blue_Video_Black_Level            0x70
#endif

#define DDC2B_ChangeportToVGA	0xF1
#define DDC2B_ChangeportToDVI	0xF2
//VCP commands for theft deterrence
#if THEFT_DETERRENCE_SUPPORT
#define DDC2B_CMD_VCP_ACMOde					0xFA
#define DDC2B_CMD_VCP_ACTimeout				0xFB
#define DDC2B_CMD_VCP_ACPINLow				0xFC
#define DDC2B_CMD_VCP_ACPINHigh				0xFD
#define DDC2B_CMD_VCP_TDState					0xFE
#endif

//VCP commands Page2
#define DDC2B_CMD_VCP_ContrastAuto			0x37
#define DDC2B_CMD_VCP_OSDHPosition			0x38
#define DDC2B_CMD_VCP_OSDVPosition			0x39

// DDCCI color temp
#define DDCCI_sRGB		0x01
#define DDCCI_4000K     0x03
#define DDCCI_5000K     0x04
#define DDCCI_6500K     0x05
#define DDCCI_7500K     0x06
#define DDCCI_9300K		0x08
#define DDCCI_USER1		0x0B

//Thfet states
#if THEFT_DETERRENCE_SUPPORT
#define DDCCI_TDSTATE_NORMAL			0x00
#define DDCCI_TDSTATE_POSSIBLETHEFT	0x01
#define DDCCI_TDSTATE_THEFT			0x02
#define DDCCI_TDSTATE_LOGINTIMEOUT	0x04
#endif

#define	GET_VCP	0
#define	SET_VCP	1

typedef struct VCPAdjusterStruct{
	BYTE vcp_opcode;
	WORD adj_offset;
}VCPAdjOffsetType;

typedef struct DDCCIToRegStruct{
	BYTE opcode;
	WORD reg;
}DDCCIToRegType;


// receive buffer size
#define	BUFFER_SIZE						128

// P0 read or write indicator
#define	P0_RDWR_MASK					0x80

// receive/transmit buffer syntax defines
#define	LENGTH							0
#define	COMMAND							1
#define	PARAMETER						2




typedef struct DDC2Bi_GetVCPFeatureCmdStruct{
	BYTE length;
	BYTE command;
	BYTE vcp_opcode;
	BYTE chk;
}DDC2Bi_GetVCPFeatureCmd_t;

typedef struct VCPFeaturePktBodyStruct
{
	BYTE vcp_opcode;
	BYTE vcp_type;
//	BYTE maxhi;
//	BYTE maxlow;
	WORD max;
//	BYTE valuehi;
//	BYTE valuelow;
	WORD value;
}VCPFeaturePktType;

typedef struct DDC2Bi_GetVCPFeature_ReplyCmdStruct{
	BYTE				length;
	BYTE				command;
	BYTE				result;
	VCPFeaturePktType	a_VCPFeature;
	BYTE chk;
}DDC2Bi_GetVCPFeature_ReplyCmd_t;

typedef struct DDC2Bi_SetVCPFeatureCmdStruct{
	BYTE length;
	BYTE command;
	BYTE vcp_opcode;
//	BYTE valuehi;
//	BYTE valuelow;
	WORD val;
	BYTE chk;
}DDC2Bi_SetVCPFeatureCmd_t;

typedef struct DDC2Bi_GetPagedVCPCmdStruct{
	BYTE length;
	BYTE command;
	BYTE vcp_page;
	BYTE vcp_opcode;
	BYTE chk;
}DDC2Bi_GetPagedVCPCmd_t;

typedef struct DDC2Bi_GetPagedVCP_ReplyCmdStruct{
	BYTE				length;
	BYTE				command;
	BYTE				result;
	BYTE				vcp_page;
	VCPFeaturePktType	b_VCPFeature;
	BYTE chk;
}DDC2Bi_GetPagedVCP_ReplyCmd_t;

typedef struct DDC2Bi_SetPagedVCPCmdStruct{
	BYTE length;
	BYTE command;
	BYTE vcp_page;
	BYTE vcp_opcode;
//	BYTE valuehi;
//	BYTE valuelow;
	WORD value;
	BYTE chk;
}DDC2Bi_SetPagedVCPCmd_t;

typedef struct DDC2Bi_GetVCPPage_ReplyCmdStruct{
	BYTE length;
	BYTE command;
	BYTE vcp_page;
	BYTE vcp_maxpage;
	BYTE chk;
}DDC2Bi_GetVCPPage_ReplyCmd_t;

//CUSTM EEPROM commands definitions
typedef struct DDC2Bi_EEPROMCmdStruct{
	BYTE length;
	BYTE command;
	BYTE eeprom_cmd;
}DDC2Bi_EEPROMCmd_t;

typedef struct DDC2Bi_EEPROMReadCmdStruct{
	BYTE length;
	BYTE command;
	BYTE eeprom_cmd;
	BYTE leng;
//	BYTE addrhi;
//	BYTE addrlow;
	WORD addr;
	BYTE chk;
}DDC2Bi_EEPROMReadCmd_t;

typedef struct DDC2Bi_AssetReadCmdStruct{
	BYTE length;
	BYTE command;
	BYTE eeprom_cmd;
	BYTE offset;
	BYTE leng;
	BYTE chk;
}DDC2Bi_AssetReadCmd_t;

typedef struct DDC2Bi_AssetWriteCmdStruct{
	BYTE length;
	BYTE command;
	BYTE eeprom_cmd;
	BYTE offset;
}DDC2Bi_AssetWriteCmd_t;

//GetCapabilitiesRequest command definitions
typedef struct CapabilitiesRequestStruct{
	BYTE		size;
	BYTE ROM*	str;
}CapabilitiesRequestType;

typedef struct DDC2Bi_GetCpRequestCmdStruct{
	BYTE length;
	BYTE command;
//	BYTE offsethi;
//	BYTE offsetlow;
	WORD offset;
	BYTE chk;
}DDC2Bi_GetCpRequestCmd_t;

#define OutOfRangeBit		BIT7
#define UnstblCountBit		BIT6
#define ReservedBit			BIT5
#define HSyncPolarityBit	BIT1
#define VSyncPolarityBit	BIT0

typedef struct DDC2Bi_GetTiming_ReplyCmd {
	BYTE length;
	BYTE command;
	BYTE status;
	WORD h_freq;
	WORD v_freq;
	BYTE chk;
} DDC2Bi_GetTiming_ReplyCmd_t;





typedef union CommBufferStruct{
	BYTE							buff[128];
	DDC2Bi_GetVCPFeatureCmd_t		DDC2BiGetVCPFeatureCmd;
	DDC2Bi_GetVCPFeature_ReplyCmd_t	DDC2BiGetVCPFeature_ReplyCmd;
	DDC2Bi_SetVCPFeatureCmd_t		DDC2BiSetVCPFeatureCmd;
	DDC2Bi_GetPagedVCPCmd_t			DDC2BiGetPagedVCPCmd;
	DDC2Bi_GetPagedVCP_ReplyCmd_t	DDC2BiGetPagedVCP_ReplyCmd;
	DDC2Bi_SetPagedVCPCmd_t			DDC2BiSetPagedVCPCmd;
	DDC2Bi_GetVCPPage_ReplyCmd_t	DDC2BiGetVCPPage_ReplyCmd;
	DDC2Bi_GetCpRequestCmd_t		DDC2Bi_GetCpRequestCmd;
	DDC2Bi_GetTiming_ReplyCmd_t		DDC2Bi_GetTiming_ReplyCmd;
	DDC2Bi_EEPROMCmd_t				DDC2Bi_EEPROMCmd;
	DDC2Bi_EEPROMReadCmd_t			DDC2Bi_EEPROMReadCmd;
	DDC2Bi_AssetReadCmd_t			DDC2Bi_AssetReadCmd;
	DDC2Bi_AssetWriteCmd_t			DDC2Bi_AssetWriteCmd;
}CommBufferType;



/****************************************************************************/
/*  G L O B A L    F U N C T I O N    P R O T O T Y P E S                   */
/****************************************************************************/

#endif // __DDC2BI_H__

⌨️ 快捷键说明

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