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

📄 tw88.h

📁 车载DVD osdIC TW8816原厂代码
💻 H
字号:
#ifndef __TW88__
#define __TW88__

#include "main.h"

//Value for register 0x44
//#define DECODER_YCbCr		0x08		//xxxx bbxx
//#define RGB_RGB				0x0C

// decoder input channel
#define YIN0    		0
#define YIN1    		1
#define YIN2    		2
#define YIN3    		3

#define CIN0    		0
#define CIN1    		1
#define CIN2    		2

#define VIN0    		0
#define VIN1    		1

#define NOTUSE   0xF0

// IFSEL
#define D_COMPONENT_P     0x30 //11 = Component video decoding (Progressive input)
#define D_COMPONENT_I     0x20 //10 = Component video decoding (Interlace input)
#define D_SVIDEO                0x10 //01 = S-video decoding
#define D_VIDEO                  0x00 //00 = Composite video decoding
#define D_UNUSED               0x00 // don't change this value



// input data order
#define ORDER_BRG_PrYPb			0                  
#define ORDER_BGR_PrPbY			1
#define ORDER_GRB_PbYPr			2
#define ORDER_GBR_PbPrY			3
#define ORDER_RGB_YPbPr			4
#define ORDER_RBG_YPrPb			5

//Input format selection
#define IF_ITU601_422		0x00        // 00XX          
#define IF_ITU656			0x04        // 01XX
#define IF_YUV_444			0x08        // 10XX
#define IF_RGB_444			0x0c        // 11XX

//Input Video/DTV Source Selection
#define IS_DECODER		0                  
#define IS_DTV			1
#define IS_DTV_1			2
#define IS_ADC			3

//decoder Input format
#define DF_480i			0                  
#define DF_576i			1
#define DF_480p			2
#define DF_576p			3

struct _INPUT_MATRIX {
	CODE_P BYTE  cYSEL;
	CODE_P BYTE  cCSEL;
	CODE_P BYTE  cVSEL;
	CODE_P BYTE  cIFSEL;
	CODE_P BYTE  cDataOrder;
	CODE_P BYTE  cDataFormat;
	CODE_P BYTE  cInputRoute;
};

struct _DECODER_FORMAT {
	CODE_P WORD  ScaleWidth;
	CODE_P WORD  ScaleHeight;
	CODE_P WORD  HActive;
	CODE_P WORD  VActive;
	CODE_P WORD  HDelay;
	CODE_P WORD  VDelay;
};

#define TW88_FPLL0			0xf9
#define TW88_FPLL1			0xfa
#define TW88_FPLL2			0xfb
#define TW88_FSS			0xfc
#define TW88_FSS_PD			0xfd
#define TW88_PLL_DIV		0xfe

//#define TW88_XSCALE			0x5d
//#define TW88_YSCALE			0x5e

#define TW88_XUSCALELO		0x60
#define TW88_XDSCALELO		0x61
#define TW88_YUSCALELO		0x62
#define TW88_XYSCALEHI		0x63
#define TW88_XUSCALEFINE	0x69
#define TW88_YUSCALEFINE	0x6a

//Power Mgt
#define	POWER_OFF			0
#define	POWER_STANDBY		1
#define	POWER_SUSPEND		2
#define	POWER_ON			3

BYTE IsDecoderSource(void);// Hans
//void TWChipsDetect(void);
void SetAutoDetectStd(void);
void ClearAutoDetectStd(BYTE);
void I2CDeviceInitialize( CODE_P BYTE *RegSet);


//0x63.. Register Group
#define GROUP_YCbCr			0x40
#define GROUP_RGB			0
#define SelectPanelAttrRegGroup(A)				WriteTW88(0x70, (ReadTW88(0x70) & 0xbf) | A)

//#if defined TW8801 || defined TW8803
#define FB_MAIN		2
#define FB_NORMAL	1
#define FB_RGB		0
//void SetFBmode( BYTE mode );
//#endif // TW8801


//=============================================================================
//	                             LCD Functions   
//=============================================================================
BYTE GetLCDPowerState(void);
void SetLCDPowerState(BYTE dat);

BYTE IsFreeRun(void);
void PanelFreeRun(BYTE on);
void PanelBlack(BYTE on);

void PanelMute(BYTE on);

void LCDPowerON(BYTE mute); 
void LCDPowerOFF(void);
void LCDPower(void);
void DPMSmodeOFF(void);
void DPMSmodeON(void);
//=============================================================================
//	                        Get PC Parameter Functions   
//=============================================================================
void GetInitPanelAttribute1(void);
//void GetInitPanelAttribute2(void);
void DefaultPanelAttributeForVideo(void);
void SetPVR(WORD pvr);
void SetPHR(WORD phr);
WORD GetPVR(void);
WORD GetPHR(void);
WORD GetHPN(void);
WORD GetVPN(void);

//WORD GetVactive(void);

WORD GetHstart(void);
WORD GetHend(void);
WORD GetVstart(void);
WORD GetVend(void);
void TuneLineBuffer(BYTE field);
void TuneLineBuffer4Video(BYTE field);

#if defined (SUPPORT_DTV)
void SetCoarstForDTV(BYTE en);
#endif

WORD GetHactiveStart(void);
WORD GetHactiveEnd(void);
WORD GetVactiveStart(void);
//WORD GetVactiveLen(void);
BYTE GetVBackPorch(void);
void SetVBackPorch(BYTE val);
WORD GetPHP(void);
void SetPHP(WORD php);
void SetPVP(WORD period);
WORD GetPVP(void);
//void SetPanelRelatedRegisters(void);
//BYTE ChangedHPN(void);
//WORD GetVSUD(void);

void SetDefaultPLL(void);
//void SetDefaultFPHSperiod(void);
//BYTE CalcPHP(DWORD ppf, BYTE tol);
//void ChangeFPHSperiod4DecoderInput(WORD vsud, BYTE tol);

//-------------------------------------------------------------------
//                  Set Active Region Functions
//-------------------------------------------------------------------
void SetHactiveStart(WORD hstart);
void SetHactiveEnd(WORD hend);
void SetVactiveStart(WORD vstart);
//void SetVactiveLen(WORD van, WORD vstart);
void SetVactiveLen(WORD van);
//=============================================================================
//	                   Set Measurement Window Functions   
//=============================================================================
void SetMeasureWindowH(WORD start, WORD stop);
void SetMeasureWindowV(WORD start, WORD stop);
//=============================================================================
//	                        Video Input Functions   
//=============================================================================
BYTE IsVideoInput(void);
BYTE DetectDecoderInput(void);
//=============================================================================
//
//=============================================================================
void AutoPHPCalEnable(void);
void AutoPHPCalDisable(void);

void MakeStartInt(void);
void AVGAInput(void);
void DVIInput(void);
//void DVGAInput(void);
void DisableDVGA(void);
void SCARTInput(void);

//=============================================================================
//                          Measurement Functions
//=============================================================================
///void SetPanelBitOrder(BYTE swap);
//void SetPanelSingleDouble(BYTE single);

BYTE MeasureAndWait(BYTE flag);

//WORD GetHCounter1(BYTE field);
//void SetHInitial(BYTE field, WORD counter);
//=============================================================================
//                          Invert Polarity Functions
//=============================================================================
void InvertHSYNCPolarity(void);
void InvertVSYNCPolarity(void);
//=============================================================================
//            Interrupt / SW Reset Control Functions
//=============================================================================
void SetInt(void);
//void ClearInt(void);
void SetEnDet(void);
void ClearEnDet(void);
void SWReset(void);
//void ClearSYNCLossStatus(void);
//void ClearSYNCChangeStatus(void);
//=============================================================================
//
//=============================================================================
BYTE IsBypassmode(void);
//BYTE IsInteraced(void);
void Clear_bypass(void);
void MaskOnSYNCInt(void);
void MaskOffSYNCInt(void);
//=============================================================================
//	                              ZoomControl
//=============================================================================
void BypassZoom(void);

void XscaleU(DWORD scale);
void XscaleD(DWORD scale);
void XScale2(DWORD scale);
void YScale2(DWORD scale);
WORD GetYScale(void);
//=============================================================================
//
//=============================================================================
WORD GetHSYNCPulse(void);
WORD GetVSYNCPulse(void);
//#if defined TW8801 || defined TW8803
WORD GetRelativePosition(void);
//#endif
//=============================================================================
//								MISC2 for decoder
//=============================================================================
#define	BLUE_DECODER		2
#define BLACK_DECODER		0

BYTE ForceDecoderOutput(BYTE color);
BYTE ClearForcedDecoderOutput(void);
//=============================================================================
//								CC and EDS
//=============================================================================
BYTE GetCCStatus(void);
void DisableCC(void);
void EnableCC(void);
BYTE GetCCData(void);
BYTE IsCCEnabled(void);
void EnableEDS(void);
void DisableEDS(void);
void RecoverCCOverflow(void);

#define CCFIFOHalfFull()			(ReadDecoder(CSTATUS) & 0x04)
//=============================================================================
//								Internal PLL
//=============================================================================
BYTE GetPOST(void);
void SetPLLS(BYTE plls);
BYTE GetREFDM(void);
void SetREFDM(BYTE refdm);
DWORD GetFBDN(void);
void SetFBDN(WORD fbdn, BYTE vcsel);
DWORD GetPPF(void);
void ChangeInternPLL(DWORD _PPF);

//=============================================================================
//								Macros for attribute
//=============================================================================
//#define	GetOSDTransReg()						ReadTW88(0xAE)
//#define SetOSDTransReg(AlphaV)					WriteTW88(0xAE, (BYTE)AlphaV )

#define	GetPanelContrastReg(gccolor)			ReadTW88(0x71+gccolor)
#define	SetPanelContrastReg(sccolor, cval)		WriteTW88(0x71+sccolor,cval)

#define GetPanelBrightnessReg(gbcolor)			ReadTW88(0x74+gbcolor);
#define SetPanelBrightnessReg(sbcolor, bval)	WriteTW88(0x74+sbcolor,bval);

#define SetDTVContrastReg(bval)					WriteTW88(0x71,bval);
#define SetDTVBrightnessReg(bval)				WriteTW88(0x74,bval);

#define GetPanelSaturationReg(gbcolor)			ReadTW88(0x72+gbcolor);
#define SetPanelSaturationReg(sbcolor, bval)	WriteTW88(0x72+sbcolor,bval);

#define SetPanelPeakingReg(bval)				WriteTW88(0x77,((bval&0x07)|0x38) ); // min peaking value is 8 //hans

#define SetPanelSharpnessReg(bval)				WriteTW88(0x78,((bval&0x07)|0x38) );

#define SetPanelHueReg(bval)					WriteTW88(0x70, (ReadTW88(0x70) & 0xc0 | (bval)) );

#define	GetVideoContrastReg()					ReadDecoder(CONTRAST)
#define	SetVideoContrastReg(vcval)				WriteDecoder(CONTRAST, vcval)

#define	GetVideoBrightnessReg()					ReadDecoder(BRIGHT)
#define	SetVideoBrightnessReg(vbval)			WriteDecoder(BRIGHT, vbval )

#define	GetVideoSaturationReg(gvstype)			ReadDecoder(SAT_U+gvstype)
#define	SetVideoSaturationReg(svstype, vsval)	WriteDecoder(SAT_U+svstype,	vsval)

#define	GetVideoHueReg()						ReadDecoder(HUE)
#define	SetVideoHueReg(vhval)					WriteDecoder(HUE,	vhval )

#define	GetVideoSharpnessRegDef					(ReadDecoder(SHARPNESS) & 0x0f) 

#define	GetVideoSharpnessReg()					GetVideoSharpnessRegDef
//#define	SetVideoSharpnessReg(vshval)			WriteDecoder(SHARPNESS, vshval )
#define	SetVideoSharpnessReg(vshval)			WriteDecoder(SHARPNESS, ((ReadDecoder(SHARPNESS) & 0xf0) | (vshval & 0x0f) ) );

#ifdef TW9908
#define	SetVideoVPeakingReg(vshval)
#else
#define	SetVideoVPeakingReg(vshval)				WriteDecoder(V_PEAKING, ((ReadDecoder(V_PEAKING) & 0xf8) | (vshval & 0x07) ) );
#endif

#define SetVideoHfilterReg(val)					WriteDecoder(HFILTER, ((ReadDecoder(HFILTER) & 0xf8) | (val & 0x07) )|0x08 );
//----------------------------------------------------------------------------------
//color type
#define	RED		0
#define	GREEN	1
#define	BLUE	2
#define WHITE	3
//saturation type
#define	U_SAT	0
#define	V_SAT	1

//Alpha Blending Level
#define _0		0
#define _25		0x12
#define _37_5	0x13
#define _50		0x14
#define _100	0x18


/*
BYTE Mapping( int fromValue, struct RegisterInfo fromRange,
                                 int * toValue, struct RegisterInfo toRange );
*/
BYTE Mapping1( int fromValue, CODE_P struct RegisterInfo *fromRange,
                                 int * toValue, CODE_P struct RegisterInfo *toRange );
#ifdef KEILC
#define Mapping2( A, B, C, D )			Mapping1( A, B, C, D )
#define Mapping3( A, B, C, D )			Mapping1( A, B, C, D )
#else
BYTE Mapping2( int fromValue, IDATA_P struct RegisterInfo *fromRange,
                                 int * toValue, CODE_P struct RegisterInfo *toRange );
BYTE Mapping3( int fromValue, CODE_P struct RegisterInfo *fromRange,
                                 int * toValue, IDATA_P struct RegisterInfo *toRange );
#endif

BYTE GetAttributesFromNTSCSettings(BYTE index);

BYTE FindDecodeSettingIndex(cMode); // Hans
void ResetStatusRegs(void); // Hans
void SetDecodeWindow(BYTE cVideoStd);
void InputSetup(void);
void MeasureSetup(void);
BYTE SourceConfigAndDisplay(void);
void InitCCFL(void); // Hans
void ConfigTCON(void); // Hans
void ConfigPanel(void); // Hans

#endif	// __TW88__

⌨️ 快捷键说明

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