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

📄 device.h

📁 Lido PXA270平台开发板的最新BSP,包括源代码
💻 H
字号:
/*******************************************************************************
* Name         : device.h
* Title        : Common Device header
* Author       : Mike Brassington
* Created      : 23rd May 2002
*
* Copyright    : 2002 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  : Device related function templates and defines
*
* Platform     : Generic
*
* Modifications:-
* $Log: device.h $
*
*  --- Revision Logs Removed --- 
*
*  --- Revision Logs Removed --- 
*
*  --- Revision Logs Removed --- 
*
*  --- Revision Logs Removed --- 
*
*  --- Revision Logs Removed --- 
*
*  --- Revision Logs Removed --- 
*
*  --- Revision Logs Removed --- 
*
*  --- Revision Logs Removed --- 
*
*  --- Revision Logs Removed --- 
*
*  --- Revision Logs Removed --- 
*
*  --- Revision Logs Removed --- 
*******************************************************************************/
#if !defined(__DEVICE_H__)
#define __DEVICE_H__


/**************************************** Public interface into device layer */

PVRSRV_ERROR DevInitDevice(PVRSRV_DEV_INFO *psDevInfo);
PVRSRV_ERROR DevDeInitDevice(PVRSRV_DEV_INFO *psDevInfo);
/* PVRSRV_ERROR DevFindLocation(PVRSRV_DEV_INFO *psDevInfo); */
PVRSRV_ERROR IdentifyDevice(PVRSRV_DEV_INFO *psDevInfo);
PVRSRV_ERROR DevReset(PVRSRV_DEV_INFO *psDevInfo);

#define DEV_SDRAM_POWER_SLEEP       0
#define DEV_SDRAM_POWER_SHUTDOWN    1
#define DEV_SDRAM_POWER_ACTIVE      2


typedef enum _DEV_CLOCK_EDGE_
{
	DEV_RISING,
	DEV_FALLING
} DEV_CLOCK_EDGE;

typedef enum _DEV_DRIVE_STRENGTH_
{
	DEV_3MA,
	DEV_6MA_10MA
} DEV_DRIVE_STRENGTH;

typedef enum _DEV_HOST_LCD_FORMAT_
{
	DEV_HOST_LCD_555,
	DEV_HOST_LCD_556,
	DEV_HOST_LCD_565,
	DEV_HOST_LCD_655,
	DEV_HOST_LCD_665,
	DEV_HOST_LCD_666
} DEV_GIB_FORMAT;

typedef enum _DEV_LCD_SOURCE_
{
	DEV_SOURCE_PDP,
	DEV_SOURCE_HOST
} DEV_LCD_SOURCE;

typedef struct _DEV_LCD_CONFIG_
{
	DEV_CLOCK_EDGE eDENPolarity;
	DEV_CLOCK_EDGE eFCLKPolarity;
	DEV_CLOCK_EDGE eLCLKPolarity;
	DEV_CLOCK_EDGE eDataPolarity;

	IMG_BOOL bActive;

	DEV_DRIVE_STRENGTH eDataStrength;
	DEV_DRIVE_STRENGTH eClockStrength;

	DEV_LCD_SOURCE eSource;
} DEV_LCD_CONFIG, *PDEV_LCD_CONFIG;

#ifdef SUPPORT_MARATHON_DEVICE
void DevSDRAMSetState(PPVRSRV_DEV_INFO psDevInfo, DWORD dwMode);
bool DevCoreQuery(PPVRSRV_DEV_INFO psDevInfo, DWORD dwCore);
void DevWriteLEDData(DWORD dwData);
void DevWriteLEDBits(BYTE byData);
BYTE DevReadUserSwitches(void);
DWORD DevSetPixClkFrequency(PPVRSRV_DEV_INFO psDevInfo,DWORD dwFreq);
void  DevSetPowerState(PPVRSRV_DEV_INFO psDevInfo, PVR_POWER_STATE eState);
DWORD DevSetPWM(PPVRSRV_DEV_INFO psDevInfo, DWORD dwPWM,
				DWORD dwPeriod, DWORD dwDutyCycle);
void DevConfigLCD(PPVRSRV_DEV_INFO psDevInfo, DWORD dwLCD,
				  PDEV_LCD_CONFIG psConfig);
void DevConfigHostLCDFormat(PPVRSRV_DEV_INFO psDevInfo, DEV_GIB_FORMAT eFormat);
void DevMemoryDrain(PPVRSRV_DEV_INFO psDevInfo);
#else
#ifdef SUPPORT_KYRO_AS_MBX_DEVICE

#define DevSDRAMSetState(a,b)
bool DevCoreQuery(PPVRSRV_DEV_INFO psDevInfo, DWORD dwCore);
void DevSetPowerState(PPVRSRV_DEV_INFO psDevInfo, PVR_POWER_STATE eState);

#define DevWriteLEDData(a)
#define DevWriteLEDBits(a)
#define DevReadUserSwitches() 0
#define DevSetPixClkFrequency(a,b) 0
#define DevSetPWM(a,b,c,d) 0
#define DevConfigLCD(a,b,c)
#define DevConfigHostLCDFormat(a,b)
#define DevMemoryDrain(a)

#else

#define DevSDRAMSetState(a,b)
#define DevCoreQuery(a,b) TRUE
#define DevWriteLEDData(a)
#define DevWriteLEDBits(a)
#define DevReadUserSwitches() 0
#define DevSetPixClkFrequency(a,b) 0
#define DevSetPowerState(a,b) 0
#define DevSetPWM(a,b,c,d) 0
#define DevConfigLCD(a,b,c)
#define DevConfigHostLCDFormat(a,b)
#define DevMemoryDrain(a)

#endif
#endif


/* IMG_UINT32 DevDisableInterrupts(PPVRSRV_DEV_INFO psDevInfo); */
/* IMG_UINT32 DevEnableInterrupts(PPVRSRV_DEV_INFO psDevInfo); */
/* IMG_UINT32 DevDecodeInterrupts(PPVRSRV_DEV_INFO psDevInfo); */
IMG_VOID DevDisableVBlank(PPVRSRV_DEV_INFO psDevInfo);
IMG_VOID DevEnableVBlank(PPVRSRV_DEV_INFO psDevInfo);

#define DEV_INTERRUPT_TYPE_MBX    1
#define DEV_INTERRUPT_TYPE_M24VA  2
#define DEV_INTERRUPT_TYPE_VBLANK 4


#if defined(USE_INLINE_FASTREGS)
#ifdef PDUMP
extern PDUMPTAGS_REG geDevPDUMPRegTag;
extern DWORD gdwDevPDUMPCoreOffset;
#define PDUMPREGTAG(tag,offset) {geDevPDUMPRegTag=tag; gdwDevPDUMPCoreOffset=offset;}
#define PDUMPREGMBX PDUMPREGTAG(PDUMPTAGS_REG_MBX, MBX_REG_OFFSET);
#else
#define PDUMPREGTAG(tag,offset)
#define PDUMPREGMBX
#endif


/**************************************************************************
 * Function Name  : WriteRegDWORD
 * Inputs         : psDevInfo - identifier for this device
 *                : dwByteOffset - byte offset of write from start of fast regs 
 *                : dwValue - value to write
 * Outputs        : None
 * Returns        : None
 * Globals Used   : None
 * Description    : Fastregs write wrapper so we can keep a log of fast regs writes
 **************************************************************************/	
IMG_VOID INLINE WriteRegDWORD(PPVRSRV_DEV_INFO psDevInfo, IMG_UINT32 ui32ByteOffset, IMG_UINT32 ui32Value)
{
	volatile IMG_UINT32	*pui32FastReg = (IMG_PUINT32)((IMG_PBYTE)psDevInfo->sDevMem.ui32SysRegsLinBase + ui32ByteOffset);

	ASSERT1((ui32ByteOffset & 3) == 0,("WriteRegDWORD : Byte offset MUST be multiple of 4"));

	DPFLX(DBG_FASTREGS, "WriteRegDWORD : Set reg 0x%lx = 0x%lx, device 0x%lx", ui32ByteOffset, ui32Value, psDevInfo);
	
	/* Write value */
	*pui32FastReg = ui32Value;

	PDUMPREG(geDevPDUMPRegTag, ui32ByteOffset - gdwDevPDUMPCoreOffset, ui32Value);
}

/**************************************************************************
 * Function Name  : ReadRegDWORD
 * Inputs         : psDevInfo - identifier for this device
 *                : dwByteOffset - byte offset of write from start of fast regs 
 *                : dwValue - value to write
 * Outputs        : DWORD - The read value
 * Returns        : None
 * Globals Used   : None
 * Description    : Fastregs write wrapper so we can keep a log of fast regs writes
 **************************************************************************/	
INLINE IMG_UINT32 ReadRegDWORD(PPVRSRV_DEV_INFO psDevInfo, IMG_UINT32 ui32ByteOffset)
{
	volatile IMG_UINT32*	pui32FastReg = (IMG_PUINT32)((IMG_PBYTE)psDevInfo->sDevMem.ui32SysRegsLinBase + ui32ByteOffset);
	IMG_UINT32				ui32Value;

	ASSERT1((ui32ByteOffset & 3) == 0,("WriteRegDWORD : Byte offset MUST be multiple of 4"));

	DPFLX(DBG_FASTREGS, "ReadRegDWORD : Read reg 0x%lx, device 0x%lx", ui32ByteOffset, psDevInfo);
	
	/* Read value */
	ui32Value = *pui32FastReg;

	return ui32Value;
}
#endif	/* #if defined(USE_INLINE_FASTREGS) */

#endif /* __DEVICE_H__ */
/*****************************************************************************
 End of file (DEVICE.H)
*****************************************************************************/

⌨️ 快捷键说明

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