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

📄 pdpal.h

📁 Lido PXA270平台开发板的最新BSP,包括源代码
💻 H
📖 第 1 页 / 共 3 页
字号:
	// Power Management
	PDP_ERROR PDP_ScreenPowerOff(PDPHANDLE pHandle,BOOL bOff);
	PDP_ERROR PDP_PrePLLChange(PDPHANDLE pHandle);
	PDP_ERROR PDP_PostPLLChange(PDPHANDLE pHandle);

	// used exclusively by the HAL for Direct Draw overlay support
	PDP_ERROR PDP_SetOverlayAttributes(PDPHANDLE pHandle,PPDP_OVERLAYATTRIBS psOverlayAttributes);
	PDP_ERROR PDP_FlipOverlaySurface(PDPHANDLE pHandle,PPDP_OVERLAY psFlipTo);

#ifdef SUPPORT_OVERLAY
	PDP_ERROR PDP_PrepareOverlayFlip(PDPHANDLE pHandle,PPDP_OVERLAY psFlipTo, 
								 IMG_UINT32** ppui32OverlayConfig, IMG_UINT32* pui32OverlayConfigSize);
#endif

	PDP_ERROR PDP_OverlayContrast(PDPHANDLE pHandle,PPDP_CONTRAST pContrast,BOOL bGet);
	PDP_ERROR PDP_OverlayGamma(PDPHANDLE pHandle,PPDP_GAMMA pGamma,BOOL bGet);
	PDP_ERROR PDP_OverlayBrightness(PDPHANDLE pHandle,PPDP_BRIGHTNESS pBrightness,BOOL bGet);

	PDP_ERROR PDP_GetLineCount(PDPHANDLE pHandle,PDWORD pdwLineCount);
	PDP_ERROR PDP_WaitVBlank(PDPHANDLE pHandle,DWORD dwFlags,PDWORD pdwStatus);

	PDP_ERROR PDP_SetCursorRotation(PDPHANDLE pHandle, DWORD dwRotation);
	PDP_ERROR PDP_SetColorspaceConversion(PDPHANDLE pHandle, PPDP_CSCCoeffs psCoeffs);
	PDP_ERROR PDP_ScreenUpdate(PDPHANDLE pHandle);

	PDP_ERROR PDP_CreateHandle(PDPHANDLE *ppHandle);
	PDP_ERROR PDP_DestroyHandle(PDPHANDLE pHandle);
	PDP_ERROR PDP_FlipDisplay(PDPHANDLE pHandle,PDWORD pdwBuffer,BOOL bImmediate);

	PDP_ERROR PDP_EnumerateModeList(PDPHANDLE pHandle,PPDP_EnumerateModesList psModeEnum);

	PDP_ERROR PDP_BacklightControl(PDPHANDLE pHandle,PDWORD pdwBrightness, BOOL bGet);

	PDP_ERROR PDP_CreateHandleCEPCDac(PDPHANDLE *ppHandle);
	PDP_ERROR PDP_CreateHandleJDisplay(PDPHANDLE *ppHandle);
	PDP_ERROR PDP_Deinit(PDPHANDLE *ppHandle);

	extern PDPHANDLE g_PDPHandle;

#ifdef __cplusplus
}
#endif



/********************************* Class Declarations ***********************/

#ifdef __cplusplus

#ifdef PDUMP

class PDPReg
{
	volatile PDWORD m_pdwReg;
	void CreateRegisterMapping(volatile PDWORD pdwRegBase,WORD wOffset);
	WORD m_wOffset;
public:
	PDPReg(volatile PDWORD pdwRegBase,WORD wOffset);
	void PDPReg::operator=(const DWORD dwValue);
	operator DWORD();

};

typedef PDPReg* PPDPReg;

#else

typedef volatile PDWORD PPDPReg; 

#endif

/************************* PDP API interface class (abstract / pure virutal) */

class PDPApi
{
public:

	 // Function Protoyptes
	// Basic funcions
	virtual PDP_ERROR PDP_SetMode (PPDP_SETMODE psModeStruct, BOOL bGet)=0;
	virtual PDP_ERROR PDP_Palette(PPDP_PALETTE psPalette,WORD Start,WORD Count, BOOL bGet)=0;
	virtual PDP_ERROR PDP_CursorPos(PPDP_CURSORPOS psCursorPos, BOOL bGet)=0;
	virtual PDP_ERROR PDP_CursorProperties(PPDP_CURSOR_SHAPEINFO pCursorShapeInfo, BOOL bGet)=0;
	virtual PDP_ERROR PDP_Init()=0;

	// Display Adjustment
	virtual PDP_ERROR PDP_Contrast(PPDP_CONTRAST pContrast, BOOL bGet)=0;
	virtual PDP_ERROR PDP_Gamma(PPDP_GAMMA pGamma, BOOL bGet)=0;
	virtual PDP_ERROR PDP_Brightness(PPDP_BRIGHTNESS pBrightness, BOOL bGet)=0;


	// Power Management
#ifdef SUPPORT_POWER_STATE
	virtual void PDP_Power(PVR_POWER_STATE eState,DWORD dwLoss)=0;
	virtual PDP_ERROR PDP_ScreenPowerOff(BOOL bOff)=0;
#endif
    virtual	PDP_ERROR PDP_PrePLLChange()=0;
	virtual PDP_ERROR PDP_PostPLLChange()=0;

	// used exclusively by the HAL for Direct Draw overlay support
	virtual PDP_ERROR PDP_SetOverlayAttributes(PPDP_OVERLAYATTRIBS psOverlayAttributes)=0;
	virtual PDP_ERROR PDP_FlipOverlaySurface(PPDP_OVERLAY psFlipTo)=0;

#ifdef SUPPORT_OVERLAY
	virtual	PDP_ERROR PDP_PrepareOverlayFlip(PPDP_OVERLAY psFlipTo, IMG_UINT32** ppui32OverlayConfig, 
									 IMG_UINT32* pui32OverlayConfigSize) = 0;
#endif

	virtual PDP_ERROR PDP_OverlayContrast(PPDP_CONTRAST pContrast,BOOL bGet)=0;
	virtual PDP_ERROR PDP_OverlayGamma(PPDP_GAMMA pGamma,BOOL bGet)=0;
	virtual PDP_ERROR PDP_OverlayBrightness(PPDP_BRIGHTNESS pBrightness,BOOL bGet)=0;

	virtual PDP_ERROR PDP_GetLineCount(PDWORD pdwLineCount)=0;
	virtual PDP_ERROR PDP_WaitVBlank(DWORD dwFlags,PDWORD pdwStatus)=0;

	virtual PDP_ERROR PDP_FlipDisplay(PDWORD pdwBuffer,BOOL bImmediate)=0;
	virtual PDP_ERROR PDP_SetCursorRotation(DWORD dwRotation)=0;
	virtual PDP_ERROR PDP_SetColorspaceConversion(PPDP_CSCCoeffs psCoeffs)=0;
	virtual PDP_ERROR PDP_ScreenUpdate()=0;
	virtual PDP_ERROR PDP_EnumerateModeList(PPDP_EnumerateModesList psModeEnum)=0;
	virtual PDP_ERROR PDP_BacklightControl(PDWORD pdwBrightness, BOOL bGet)=0;
	virtual PDP_ERROR PDP_Deinit()=0;
	virtual PDP_ERROR PDP_ActiveRectangle(PPDP_ACTIVERECT psActiveRect,BOOL bGet)=0;
	virtual PDP_ERROR PDP_PixelClock(PDWORD pdwPixClock, BOOL bGet)=0;
	virtual PDP_ERROR PDP_OutputMask(PDWORD pdwLowerPowerMask,PDWORD pdwFullPowerMask,BOOL bReset, BOOL bGet)=0;
	virtual PDP_ERROR PDP_ReducedRefresh(PBYTE pbyUpdateRate,PBOOL pbSingleShot, BOOL bGet)=0;

};


#ifdef SUPPORT_PDP_DISPLAY
/******************************************************* Support PDP display */

/* max displayable size of the hardware cursor */ 
#define DeviceHWCursorSize		32

class PDPRegControl
{
public:
	void Init( volatile PDWORD pdwRegBase , DWORD dwListPhysBase, DWORD dwListLinBase,WORD wSize) ;
	void WriteReg(WORD wOffset,DWORD dwValue);
	void WriteBlockingReg ( WORD wOffset , DWORD dwValue ) ;

	DWORD ReadReg(WORD wOffset);
	DWORD SendRegs();
	DWORD AddReg(WORD wOffset,DWORD dwValue);

	volatile PDWORD m_pdwRegBase;
	PPDPReg m_pdwSTR1Size;
	PPDPReg m_pdwSTR2Size;
	PPDPReg m_pdwSTR1Blend;
	PPDPReg m_pdwSTR2Blend;
	PPDPReg m_pdwSTR1Mask;
	PPDPReg m_pdwSTR2Mask;
	PPDPReg m_pdwSTR1Base;
	PPDPReg m_pdwSTR2Base;
	PPDPReg m_pdwSTR2UBase;
	PPDPReg m_pdwSTR2VBase;
	PPDPReg m_pdwSTR1Start;
	PPDPReg m_pdwSTR2Start;
	PPDPReg m_pdwCurBase;
	PPDPReg m_pdwCurSize;
	PPDPReg m_pdwCurPos;
	PPDPReg m_pdwCurBlend;
	PPDPReg m_pdwCurMask;
	PPDPReg m_pdwSyncCtrl;
	PPDPReg m_pdwUpdateCtrl;
	PPDPReg m_pdwHT1;
	PPDPReg m_pdwHT2;
	PPDPReg m_pdwHT3;
	PPDPReg m_pdwVT1;
	PPDPReg m_pdwVT2;
	PPDPReg m_pdwVT3;
	PPDPReg m_pdwVEvent;
	PPDPReg m_pdwHDE;
	PPDPReg m_pdwVDE;
	PPDPReg m_pdwOutputMask;
	PPDPReg m_pdwBorder;
	PPDPReg m_pdwBackground;
	PPDPReg m_pdwLineCount;
	PPDPReg m_pdwVidClip;
	PPDPReg m_pdwVScale;
	PPDPReg m_pdwVInitial;
	PPDPReg m_pdwVCoeff0;
	PPDPReg m_pdwVCoeff1;
	PPDPReg m_pdwVCoeff2;
	PPDPReg m_pdwVCoeff3;
	PPDPReg m_pdwVCoeff4;
	PPDPReg m_pdwHScale;
	PPDPReg m_pdwHCoeff0;
	PPDPReg m_pdwHCoeff1;
	PPDPReg m_pdwHCoeff2;
	PPDPReg m_pdwHCoeff3;
	PPDPReg m_pdwHCoeff4;
	PPDPReg m_pdwHCoeff5;
	PPDPReg m_pdwHCoeff6;
	PPDPReg m_pdwHCoeff7;
	PPDPReg m_pdwHCoeff8;
	PPDPReg m_pdwScaleSize;
	PPDPReg m_pdwVidGamma0;
	PPDPReg m_pdwVidGamma1;
	PPDPReg m_pdwVidGamma2;
	PPDPReg m_pdwVidGamma3;
	PPDPReg m_pdwVidGamma4;
	PPDPReg m_pdwVidGamma5;
	PPDPReg m_pdwVidGamma6;
	PPDPReg m_pdwVidGamma7;
	PPDPReg m_pdwVidGamma8;
	PPDPReg m_pdwVidGamma9;
	PPDPReg m_pdwVidGamma10;
	PPDPReg m_pdwVidGamma11;
	PPDPReg m_pdwVidGamma12;
	PPDPReg m_pdwVidGamma13;
	PPDPReg m_pdwVidGamma14;
	PPDPReg m_pdwVidGamma15;
	PPDPReg m_pdwVidGamma16;
	PPDPReg m_pdwGamma0;
	PPDPReg m_pdwGamma1;
	PPDPReg m_pdwGamma2;
	PPDPReg m_pdwGamma3;
	PPDPReg m_pdwGamma4;
	PPDPReg m_pdwGamma5;
	PPDPReg m_pdwGamma6;
	PPDPReg m_pdwGamma7;
	PPDPReg m_pdwGamma8;
	PPDPReg m_pdwGamma9;
	PPDPReg m_pdwGamma10;
	PPDPReg m_pdwGamma11;
	PPDPReg m_pdwGamma12;
	PPDPReg m_pdwGamma13;
	PPDPReg m_pdwGamma14;
	PPDPReg m_pdwGamma15;
	PPDPReg m_pdwGamma16;
	PPDPReg m_pdwCSC0;
	PPDPReg m_pdwCSC1;
	PPDPReg m_pdwCSC2;
	PPDPReg m_pdwCSC3;
	PPDPReg m_pdwCSC4;

	PPDPReg m_pdwListControl;
	PPDPReg m_pdwListStatus	;
	PPDPReg m_pdwMemCtrl;

	PPDPReg m_pdwPalette;				
	PPDPReg m_pdwIntStatus;			
	PPDPReg m_pdwIntEnable;			
	PPDPReg m_pdwIntControl;			
	PPDPReg m_pdwSignature;
	PPDPReg m_pdwPDPId;				

private:
	PPDPReg	CreateRegisterMapping(volatile PDWORD pdwRegBase,WORD wOffset);
	
	PDWORD m_aListLoader;
	int m_nBufferNumber;
	int m_nIndex;
	DWORD m_dwListPhysBase;
	WORD m_wSize;
};


class PDPMarathon : public PDPApi
{
public:

	 // Function Protoyptes
	// Basic funcions
	PDP_ERROR PDP_SetMode (PPDP_SETMODE psModeStruct, BOOL bGet);
	PDP_ERROR PDP_Palette(PPDP_PALETTE psPalette,WORD Start,WORD Count, BOOL bGet);
	PDP_ERROR PDP_CursorPos(PPDP_CURSORPOS psCursorPos, BOOL bGet);
	PDP_ERROR PDP_CursorProperties(PPDP_CURSOR_SHAPEINFO pCursorShapeInfo, BOOL bGet);
	PDP_ERROR PDP_Init();

	// Display Adjustment
	PDP_ERROR PDP_Contrast(PPDP_CONTRAST pContrast, BOOL bGet);
	PDP_ERROR PDP_Gamma(PPDP_GAMMA pGamma, BOOL bGet);
	PDP_ERROR PDP_Brightness(PPDP_BRIGHTNESS pBrightness, BOOL bGet);


	// Power Management
#ifdef SUPPORT_POWER_STATE
	void PDP_Power(PVR_POWER_STATE eState,DWORD dwLoss);
	PDP_ERROR PDP_ScreenPowerOff(BOOL bOff);
#endif
	PDP_ERROR PDP_PrePLLChange();
	PDP_ERROR PDP_PostPLLChange();
	
	// used exclusively by the HAL for Direct Draw overlay support
	PDP_ERROR PDP_SetOverlayAttributes(PPDP_OVERLAYATTRIBS psOverlayAttributes);
	PDP_ERROR PDP_FlipOverlaySurface(PPDP_OVERLAY psFlipTo);

	PDP_ERROR PDP_PrepareOverlayFlip(PPDP_OVERLAY psFlipTo, IMG_UINT32** ppui32OverlayConfig, 
									 IMG_UINT32* pui32OverlayConfigSize);

	PDP_ERROR PDP_OverlayContrast(PPDP_CONTRAST pContrast,BOOL bGet);
	PDP_ERROR PDP_OverlayGamma(PPDP_GAMMA pGamma,BOOL bGet);
	PDP_ERROR PDP_OverlayBrightness(PPDP_BRIGHTNESS pBrightness,BOOL bGet);

	PDP_ERROR PDP_GetLineCount(PDWORD pdwLineCount);
	PDP_ERROR PDP_WaitVBlank(DWORD dwFlags,PDWORD pdwStatus);

	PDP_ERROR PDP_FlipDisplay(PDWORD pdwBuffer,BOOL bImmediate);
	PDP_ERROR PDP_SetCursorRotation(DWORD dwRotation);
	PDP_ERROR PDP_SetColorspaceConversion(PPDP_CSCCoeffs psCoeffs);
	PDP_ERROR PDP_ScreenUpdate();
	PDP_ERROR PDP_EnumerateModeList(PPDP_EnumerateModesList psModeEnum);
	PDP_ERROR PDP_BacklightControl(PDWORD pdwBrightness, BOOL bGet);
	PDP_ERROR PDP_Deinit();
	PDP_ERROR PDP_ActiveRectangle(PPDP_ACTIVERECT psActiveRect,BOOL bGet);
	PDP_ERROR PDP_PixelClock(PDWORD pdwPixClock, BOOL bGet);
	PDP_ERROR PDP_ReducedRefresh(PBYTE pbyUpdateRate,PBOOL pbSingleShot, BOOL bGet);
	PDP_ERROR PDP_OutputMask(PDWORD pdwLowerPowerMask,PDWORD pdwFullPowerMask,BOOL bReset, BOOL bGet);

	//Marathon specific functions - dual display 
	PDP_ERROR PDP_GetOtherPanelID(DWORD &dwPanelID);
	PDP_ERROR PDP_EnableOtherPanel(BOOL bEnable, SYS_GIB_FORMAT enumGIBFormat);
	PDP_ERROR PDP_SetPWMForOtherPanel(DWORD dwDutyCycle);

	PDP_ERROR PDP_SwitchPanel();
	PDP_ERROR PDP_ConfigureDisplaySystem(DRVESC_CONFIG_DISPLAY_SYSTEM *psDisplayConfig);

	PDP_ERROR PDP_GetPanelRotation(PPDP_SETMODE psModeStruct,BOOL bInternal,PDWORD pdwRotation);

	PDP_ERROR PDP_IsScreenDirty(BOOL *pbInternal);
	

private:
	// Store the Internal members here.
	PDP_SETMODE			  m_sModeStruct;
	PDP_CURSORPOS		  m_sCursorPos;
//	PDP_CURSOR_PROPERTIES m_sCursorProperties;

	PVRSRV_DEV_DATA		  m_sDevData;
	PVRSRV_MEM_INFO		  *m_pAllocMem;
	PVRSRV_MEM_INFO		  *m_pLoaderMem;

	
	IMG_BOOL			  m_bOverlayConfigMemAllocated; /* Shows whether overlay config buffers have been allocated */

⌨️ 快捷键说明

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