📄 pdpregcontrol.cpp
字号:
/**************************************************************************
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 + -