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

📄 pdpregcontrol.cpp

📁 Lido PXA270平台开发板的最新BSP,包括源代码
💻 CPP
📖 第 1 页 / 共 2 页
字号:
/**************************************************************************
 Name         : pdpregcontrol.cpp
 Title        : PDP Register Read/write functions
 Author       : Paul Buxton
 Created      : 6 March 2003

 Copyright    : 2003 by Imagination Technologies Limited. All rights reserved.
              : No part of this software, either material or conceptual 
              : may be copied or distributed, transmitted, transcribed,
              : stored in a retrieval system or translated into any 
              : human or computer language in any form by any means,
              : electronic, mechanical, manual or other-wise, or 
              : disclosed to third parties without the express written
              : permission of Imagination Technologies Limited, Unit 8, HomePark
              : Industrial Estate, King's Langley, Hertfordshire,
              : WD4 8LZ, U.K.

 Description  : Register Control for PDP

 Platform     : WinCE
 Version	  : $Revision: 1.2 $
 Modifications	: 
 $Log: pdpregcontrol.cpp $

  --- Revision Logs Removed --- 

  --- Revision Logs Removed --- 
 **************************************************************************/


#undef UNREFERENCED_PARAMETER
#include <windows.h>

extern "C"
{
	#include "services_headers.h"
	#include "pdpal.h"
	#include "pdpdefs.h"

	#ifdef PDUMP
	typedef struct _MEM_INFO_	*PMEM_INFO;
	//uncomment if needed #define PDPPDUMP
	#endif
}

#ifdef SUPPORT_PDP_DISPLAY

/*****************************************************************************
 FUNCTION	: 	Init
    
 Description: 	Initialise the RegControl Class
 			 
 PARAMETERS	: 	 volatile PDWORD pdwRegBase   ; pointer to first Register in PDP Core
 				 DWORD dwListPhysBase		  ; Physical address of listloader buffer
 				 DWORD dwListLinBase          ; Linear address of listloader buffer
 				 WORD wSize		              ; Size of listloader buffer in dwords

 RETURNS	: 	void
*****************************************************************************/
void PDPRegControl::Init ( volatile PDWORD pdwRegBase , DWORD dwListPhysBase, DWORD dwListLinBase,WORD wSize) 
{
	m_pdwRegBase = pdwRegBase;
	m_pdwSTR1Size = CreateRegisterMapping ( m_pdwRegBase , PDP_STR1SIZE ) ;
	m_pdwSTR2Size = CreateRegisterMapping ( m_pdwRegBase , PDP_STR2SIZE ) ;
	m_pdwSTR1Blend = CreateRegisterMapping ( m_pdwRegBase , PDP_STR1BLEND ) ;
	m_pdwSTR2Blend = CreateRegisterMapping ( m_pdwRegBase , PDP_STR2BLEND ) ;
	m_pdwSTR1Mask = CreateRegisterMapping ( m_pdwRegBase , PDP_STR1MASK ) ;
	m_pdwSTR2Mask = CreateRegisterMapping ( m_pdwRegBase , PDP_STR2MASK ) ;
	m_pdwSTR1Base = CreateRegisterMapping ( m_pdwRegBase , PDP_STR1BASE ) ;
	m_pdwSTR2Base = CreateRegisterMapping ( m_pdwRegBase , PDP_STR2BASE ) ;
	m_pdwSTR2UBase = CreateRegisterMapping ( m_pdwRegBase , PDP_STR2UBASE ) ;
	m_pdwSTR2VBase = CreateRegisterMapping ( m_pdwRegBase , PDP_STR2VBASE ) ;
	m_pdwSTR1Start = CreateRegisterMapping ( m_pdwRegBase , PDP_STR1START ) ;
	m_pdwSTR2Start = CreateRegisterMapping ( m_pdwRegBase , PDP_STR2START ) ;
	m_pdwCurBase = CreateRegisterMapping ( m_pdwRegBase , PDP_CURBASE ) ;
	m_pdwCurSize = CreateRegisterMapping ( m_pdwRegBase , PDP_CURSIZE ) ;
	m_pdwCurPos = CreateRegisterMapping ( m_pdwRegBase , PDP_CURPOS ) ;
	m_pdwCurBlend = CreateRegisterMapping ( m_pdwRegBase , PDP_CURBLEND ) ;
	m_pdwCurMask = CreateRegisterMapping ( m_pdwRegBase , PDP_CURMASK ) ;
	m_pdwSyncCtrl = CreateRegisterMapping ( m_pdwRegBase , PDP_SYNCCTRL ) ;
	m_pdwUpdateCtrl = CreateRegisterMapping ( m_pdwRegBase , PDP_UPDATECTRL ) ;
	m_pdwHT1 = CreateRegisterMapping ( m_pdwRegBase , PDP_HT1 ) ;
	m_pdwHT2 = CreateRegisterMapping ( m_pdwRegBase , PDP_HT2 ) ;
	m_pdwHT3 = CreateRegisterMapping ( m_pdwRegBase , PDP_HT3 ) ;
	m_pdwVT1 = CreateRegisterMapping ( m_pdwRegBase , PDP_VT1 ) ;
	m_pdwVT2 = CreateRegisterMapping ( m_pdwRegBase , PDP_VT2 ) ;
	m_pdwVT3 = CreateRegisterMapping ( m_pdwRegBase , PDP_VT3 ) ;
	m_pdwVEvent = CreateRegisterMapping ( m_pdwRegBase , PDP_VEVENT ) ;
	m_pdwHDE = CreateRegisterMapping ( m_pdwRegBase , PDP_HDE ) ;
	m_pdwVDE = CreateRegisterMapping ( m_pdwRegBase , PDP_VDE ) ;
	m_pdwOutputMask = CreateRegisterMapping ( m_pdwRegBase , PDP_OUTPUTMASK ) ;
	m_pdwBorder = CreateRegisterMapping ( m_pdwRegBase , PDP_BORDER ) ;
	m_pdwBackground = CreateRegisterMapping ( m_pdwRegBase , PDP_BACKGROUND ) ;
	m_pdwLineCount = CreateRegisterMapping ( m_pdwRegBase , PDP_LINECOUNT ) ;
	m_pdwVidClip = CreateRegisterMapping ( m_pdwRegBase , PDP_VIDCLIP ) ;
	m_pdwVScale = CreateRegisterMapping ( m_pdwRegBase , PDP_VSCALE ) ;
	m_pdwVInitial = CreateRegisterMapping ( m_pdwRegBase , PDP_VINITIAL ) ;
	m_pdwVCoeff0 = CreateRegisterMapping ( m_pdwRegBase , PDP_VCOEFF0 ) ;
	m_pdwVCoeff1 = CreateRegisterMapping ( m_pdwRegBase , PDP_VCOEFF1 ) ;
	m_pdwVCoeff2 = CreateRegisterMapping ( m_pdwRegBase , PDP_VCOEFF2 ) ;
	m_pdwVCoeff3 = CreateRegisterMapping ( m_pdwRegBase , PDP_VCOEFF3 ) ;
	m_pdwVCoeff4 = CreateRegisterMapping ( m_pdwRegBase , PDP_VCOEFF4 ) ;
	m_pdwHScale = CreateRegisterMapping ( m_pdwRegBase , PDP_HSCALE  ) ;
	m_pdwHCoeff0 = CreateRegisterMapping ( m_pdwRegBase , PDP_HCOEFF0 ) ;
	m_pdwHCoeff1 = CreateRegisterMapping ( m_pdwRegBase , PDP_HCOEFF1 ) ;
	m_pdwHCoeff2 = CreateRegisterMapping ( m_pdwRegBase , PDP_HCOEFF2 ) ;
	m_pdwHCoeff3 = CreateRegisterMapping ( m_pdwRegBase , PDP_HCOEFF3 ) ;
	m_pdwHCoeff4 = CreateRegisterMapping ( m_pdwRegBase , PDP_HCOEFF4 ) ;
	m_pdwHCoeff5 = CreateRegisterMapping ( m_pdwRegBase , PDP_HCOEFF5 ) ;
	m_pdwHCoeff6 = CreateRegisterMapping ( m_pdwRegBase , PDP_HCOEFF6 ) ;
	m_pdwHCoeff7 = CreateRegisterMapping ( m_pdwRegBase , PDP_HCOEFF7 ) ;
	m_pdwHCoeff8 = CreateRegisterMapping ( m_pdwRegBase , PDP_HCOEFF8 ) ;
	m_pdwScaleSize = CreateRegisterMapping ( m_pdwRegBase ,  PDP_SCALESIZE ) ;
	m_pdwVidGamma0 = CreateRegisterMapping ( m_pdwRegBase ,  PDP_VIDGAMMA0 ) ;
	m_pdwVidGamma1 = CreateRegisterMapping ( m_pdwRegBase ,  PDP_VIDGAMMA1 ) ;
	m_pdwVidGamma2 = CreateRegisterMapping ( m_pdwRegBase ,  PDP_VIDGAMMA2 ) ;
	m_pdwVidGamma3 = CreateRegisterMapping ( m_pdwRegBase ,  PDP_VIDGAMMA3 ) ;
	m_pdwVidGamma4 = CreateRegisterMapping ( m_pdwRegBase ,  PDP_VIDGAMMA4 ) ;
	m_pdwVidGamma5 = CreateRegisterMapping ( m_pdwRegBase ,  PDP_VIDGAMMA5 ) ;
	m_pdwVidGamma6 = CreateRegisterMapping ( m_pdwRegBase ,  PDP_VIDGAMMA6 ) ;
	m_pdwVidGamma7 = CreateRegisterMapping ( m_pdwRegBase ,  PDP_VIDGAMMA7 ) ;
	m_pdwVidGamma8 = CreateRegisterMapping ( m_pdwRegBase ,  PDP_VIDGAMMA8 ) ;
	m_pdwVidGamma9 = CreateRegisterMapping ( m_pdwRegBase ,  PDP_VIDGAMMA9 ) ;
	m_pdwVidGamma10 = CreateRegisterMapping ( m_pdwRegBase , PDP_VIDGAMMA10 ) ;
	m_pdwVidGamma11 = CreateRegisterMapping ( m_pdwRegBase , PDP_VIDGAMMA11 ) ;
	m_pdwVidGamma12 = CreateRegisterMapping ( m_pdwRegBase , PDP_VIDGAMMA12 ) ;
	m_pdwVidGamma13 = CreateRegisterMapping ( m_pdwRegBase , PDP_VIDGAMMA13 ) ;
	m_pdwVidGamma14 = CreateRegisterMapping ( m_pdwRegBase , PDP_VIDGAMMA14 ) ;
	m_pdwVidGamma15 = CreateRegisterMapping ( m_pdwRegBase , PDP_VIDGAMMA15 ) ;
	m_pdwVidGamma16 = CreateRegisterMapping ( m_pdwRegBase , PDP_VIDGAMMA16 ) ;
	m_pdwGamma0 = CreateRegisterMapping ( m_pdwRegBase , PDP_GAMMA0 ) ;
	m_pdwGamma1 = CreateRegisterMapping ( m_pdwRegBase , PDP_GAMMA1 ) ;
	m_pdwGamma2 = CreateRegisterMapping ( m_pdwRegBase , PDP_GAMMA2 ) ;
	m_pdwGamma3 = CreateRegisterMapping ( m_pdwRegBase , PDP_GAMMA3 ) ;
	m_pdwGamma4 = CreateRegisterMapping ( m_pdwRegBase , PDP_GAMMA4 ) ;
	m_pdwGamma5 = CreateRegisterMapping ( m_pdwRegBase , PDP_GAMMA5 ) ;
	m_pdwGamma6 = CreateRegisterMapping ( m_pdwRegBase , PDP_GAMMA6 ) ;
	m_pdwGamma7 = CreateRegisterMapping ( m_pdwRegBase , PDP_GAMMA7 ) ;
	m_pdwGamma8 = CreateRegisterMapping ( m_pdwRegBase , PDP_GAMMA8 ) ;
	m_pdwGamma9 = CreateRegisterMapping ( m_pdwRegBase , PDP_GAMMA9 ) ;
	m_pdwGamma10 = CreateRegisterMapping ( m_pdwRegBase , PDP_GAMMA10 ) ;
	m_pdwGamma11 = CreateRegisterMapping ( m_pdwRegBase , PDP_GAMMA11 ) ;
	m_pdwGamma12 = CreateRegisterMapping ( m_pdwRegBase , PDP_GAMMA12 ) ;
	m_pdwGamma13 = CreateRegisterMapping ( m_pdwRegBase , PDP_GAMMA13 ) ;
	m_pdwGamma14 = CreateRegisterMapping ( m_pdwRegBase , PDP_GAMMA14 ) ;
	m_pdwGamma15 = CreateRegisterMapping ( m_pdwRegBase , PDP_GAMMA15 ) ;
	m_pdwGamma16 = CreateRegisterMapping ( m_pdwRegBase , PDP_GAMMA16 ) ;
	m_pdwCSC0 = CreateRegisterMapping ( m_pdwRegBase , PDP_CSC0 ) ;
	m_pdwCSC1 = CreateRegisterMapping ( m_pdwRegBase , PDP_CSC1 ) ;
	m_pdwCSC2 = CreateRegisterMapping ( m_pdwRegBase , PDP_CSC2 ) ;
	m_pdwCSC3 = CreateRegisterMapping ( m_pdwRegBase , PDP_CSC3 ) ;
	m_pdwCSC4 = CreateRegisterMapping ( m_pdwRegBase , PDP_CSC4 ) ;

	m_pdwListStatus = CreateRegisterMapping ( m_pdwRegBase , PDP_LISTSTATUS ) ;
	m_pdwListControl = CreateRegisterMapping ( m_pdwRegBase , PDP_LISTCONTROL ) ;
	m_pdwMemCtrl = CreateRegisterMapping ( m_pdwRegBase , PDP_MEMCTL ) ;

	m_pdwPalette = CreateRegisterMapping ( m_pdwRegBase , PDP_PALETTEDATA ) ;				
	m_pdwIntStatus = CreateRegisterMapping ( m_pdwRegBase , PDP_INTSTATUS ) ;
	m_pdwIntEnable = CreateRegisterMapping ( m_pdwRegBase , PDP_INTENABLE ) ;
	m_pdwIntControl = CreateRegisterMapping ( m_pdwRegBase , PDP_INTCONTROL ) ;
	m_pdwSignature = CreateRegisterMapping ( m_pdwRegBase , PDP_SIGNATURE ) ;
	m_pdwPDPId = CreateRegisterMapping ( m_pdwRegBase , PDP_PDPID ) ;

	m_nBufferNumber=0;
	m_nIndex=0;
	m_aListLoader=(PDWORD)dwListLinBase;
	m_dwListPhysBase=dwListPhysBase;
	m_wSize=wSize;

}
	

/*****************************************************************************
 FUNCTION	: 	CreateRegisterMapping
    
 Description: 	Creates a pointer from a base address and an offset
 			 
 PARAMETERS	: 	 volatile PDWORD m_pdwRegBase , WORD wOffset 		  

 RETURNS	: 	PPDPReg pointer to requested register
*****************************************************************************/
PPDPReg PDPRegControl::CreateRegisterMapping ( volatile PDWORD m_pdwRegBase , WORD wOffset ) 
{
#ifdef	PDUMP
	PPDPReg cTemp;
	cTemp=new PDPReg(m_pdwRegBase,wOffset);
	return cTemp;
#else
	return & ( m_pdwRegBase[wOffset/4] ) ;
#endif
}

/*****************************************************************************
 FUNCTION	: 	WriteReg
    
 Description: 	Writes the given value to the reqested register

⌨️ 快捷键说明

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