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

📄 hostfunc.h

📁 Lido PXA270平台开发板的最新BSP,包括源代码
💻 H
字号:
/*!****************************************************************************
@File			hostfunc.h

@Title			Host functions header

@Author			Imagination Technologies

@date   		23rd May 2002
 
@Copyright     	Copyright 2003-2004 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.

@Platform		generic

@Description	OS specific API definitions

@DoxygenVer		

******************************************************************************/

/******************************************************************************
Modifications :-

$Log: hostfunc.h $
*****************************************************************************/
#ifdef DEBUG_RELEASE_BUILD
#pragma optimize( "", off )
#define DEBUG		1
#endif

#if !defined(__HOSTFUNC_H__)
#define __HOSTFUNC_H__

#if defined (__cplusplus)
extern "C" {
#endif

/*****************************************************************************
 * Static defines
 *****************************************************************************/
#define HOSTFUNC_ISR_ID 0xffffffffL


#define HOST_PAGESIZE			HostGetPageSize
#define HOST_PAGEMASK	        (~(HOST_PAGESIZE()-1))
#define HOST_PAGEALIGN(addr)	(((addr)+HOST_PAGESIZE()-1)&HOST_PAGEMASK)

/****************************************************************************
 *	Host memory heaps
 ****************************************************************************/
#define PVRSRV_HOST_HEAP_MASK			0xf /*!< host heap flags mask */
#define PVRSRV_HOST_PAGEABLE_HEAP		0x0 /*!< pageable host allocation flag */
#define PVRSRV_HOST_NON_PAGEABLE_HEAP	0x1 /*!< non-pageable host allocation flag */
#define PVRSRV_HOST_NON_CACHED_HEAP		0x2 /*!< non-cached host allocation flag */
#define PVRSRV_HOST_MAX_HEAP			0x2 /*!< max heaps */

#define CACHETYPE_UNCACHED			0x00000001 /*!< cache type, uncached */
#define CACHETYPE_CACHED			0x00000002 /*!< cache type, cached */
#define CACHETYPE_WRITECOMBINED		0x00000004 /*!< cache type, writecombined */
#define EXTRA_CACHETYPE_SHARED		0x00000008	 /*!< cache type, shared */
#define EXTRA_CACHETYPE_VIRTUAL		0x00000010	 /*!< cache type, address to map is virtual not phys */

IMG_UINT32 HostGetPageSize(IMG_VOID);
PVRSRV_ERROR HostInstallISR(IMG_UINT32 ui32Irq, const IMG_CHAR *pszISRName, IMG_VOID *pvData, IMG_BOOL bIsSystemISR);
PVRSRV_ERROR HostUnInstallISR(IMG_UINT32 ui32Irq, IMG_VOID *pvData);
IMG_CPU_PHYADDR HostMapLinToCPUPhys(IMG_VOID* pvLinAddr);
IMG_VOID HostMemCopy(IMG_VOID *pvDst, IMG_VOID *pvSrc, IMG_UINT32 ui32Size);
IMG_VOID *HostMapPhysToLin (IMG_CPU_PHYADDR BasePAddr, IMG_UINT32 ui32Bytes, IMG_UINT32 ui32CacheType);
IMG_BOOL  HostUnMapPhysToLin(IMG_VOID *pvLinAddr, IMG_UINT32 ui32Bytes);
IMG_UINT32 HostGetCurrentProcessID(IMG_VOID);
IMG_VOID  HostMemSet(IMG_VOID *pvDest, IMG_UINT8 ui8Value, IMG_UINT32 ui32Size);
IMG_VOID *HostAllocUserModeMem(IMG_UINT32 ui32Size);
IMG_VOID  HostFreeUserModeMem(IMG_VOID *pvMem, IMG_VOID *pvProcess);
IMG_BOOL HostReadRegistryString( IMG_UINT32 ui32DevCookie, IMG_CHAR *pszKey, IMG_CHAR *pszValue, IMG_CHAR *pszOutBuf, IMG_UINT32 ui32OutBufSize );
IMG_BOOL HostReadRegistryBinary( IMG_UINT32 ui32DevCookie, IMG_CHAR *pszKey, IMG_CHAR *pszValue, IMG_VOID *pszOutBuf, IMG_UINT32 *pui32OutBufSize );
IMG_BOOL HostReadRegistryInt( IMG_UINT32 ui32DevCookie, IMG_CHAR *pszKey, IMG_CHAR *pszValue, IMG_UINT32 *pui32Data );
IMG_BOOL HostWriteRegistryString( IMG_UINT32 ui32DevCookie, IMG_CHAR *pszKey, IMG_CHAR *pszValue, IMG_CHAR *pszInBuf );
IMG_BOOL HostWriteRegistryBinary( IMG_UINT32 ui32DevCookie, IMG_CHAR *pszKey, IMG_CHAR *pszValue, IMG_CHAR *pszInBuf, IMG_UINT32 ui32InBufSize );
IMG_VOID *HostPageableByteAlloc(IMG_UINT32 ui32Bytes);
IMG_VOID  HostPageableByteFree(IMG_VOID *pvBase);
PVRSRV_ERROR HostAllocMem(IMG_UINT32 ui32Flags, IMG_UINT32 ui32Size, IMG_PVOID *ppvLinAddr, IMG_UINT32 ui32OwnerAddr);
PVRSRV_ERROR HostFreeMem(IMG_UINT32 ui32Flags, IMG_PVOID pvLinAddr);
PVRSRV_ERROR HostInitEnvData (IMG_PVOID *ppvEnvSpecificData);
PVRSRV_ERROR HostDeInitEnvData (IMG_PVOID pvEnvSpecificData);
IMG_BOOL HostNoResManOnThisProcess(IMG_UINT32 ui32ProcessID);
#ifdef LOCAL_MEMORY_SELF_REFRESH
HANDLE HostWatchLocalMemory(IMG_VOID *psDevInfo); 
IMG_VOID HostLocalMemoryThreadRoutine(IMG_VOID *psDevInfo);
#endif // LOCAL_MEMORY_SELF_REFRESH

/*****************************************************************************************************************/
// FIXME: Marathin hacking
#ifdef SUPPORT_MARATHON_DEVICE
/* Added to work around the writecombining problem at low clock rates */
#define ADJUSTWRITECOMBINING
#endif

#ifdef ADJUSTWRITECOMBINING
extern PVRSRV_ERROR HostDisableWriteCombining ();
extern PVRSRV_ERROR HostEnableWriteCombining ();
#endif

typedef struct _WRITE_COMBINED_MEM_TAG_
{
	IMG_PVOID pvAddress;
	IMG_UINT32 ui32MapSize;
	struct _WRITE_COMBINED_MEM_TAG_ *psNext;
}WRITE_COMBINED_MEM_TAG, *PWRITE_COMBINED_MEM_TAG;

/*******************************************************************************************************************/

PVRSRV_ERROR HostOpenEvent(PVRSRV_MUTEX_HANDLE *phWaitEventHandle);
PVRSRV_ERROR HostCreateEvent (PVRSRV_MUTEX_HANDLE *phEvent);
PVRSRV_ERROR HostSetEvent (PVRSRV_MUTEX_HANDLE hEvent);
PVRSRV_ERROR HostReleaseEvent (PVRSRV_MUTEX_HANDLE hEvent);
PVRSRV_ERROR HostCreateMutex (PVRSRV_MUTEX_HANDLE *phMutex);
PVRSRV_ERROR HostDestroyMutex (PVRSRV_MUTEX_HANDLE *hMutex);
PVRSRV_ERROR HostAcquireMutex (PVRSRV_MUTEX_HANDLE *hMutex, IMG_BOOL bBlock);
PVRSRV_ERROR HostReleaseMutex (PVRSRV_MUTEX_HANDLE * hMutex);
PVRSRV_ERROR HostLockResource (PVRSRV_RES_HANDLE *phResource, IMG_BOOL bBlock);
PVRSRV_ERROR HostUnlockResource (PVRSRV_RES_HANDLE *phResource);		
#ifdef DEBUG
IMG_BOOL HostIsResourceLocked (PVRSRV_RES_HANDLE *phResource);
#endif			
PVRSRV_ERROR HostCreateResource (PVRSRV_RES_HANDLE *phResource);
PVRSRV_ERROR HostDestroyResource (PVRSRV_RES_HANDLE *phResource);
PVRSRV_ERROR HostBreakResource(IMG_UINT32 ui32ProcessID, PVRSRV_RES_HANDLE *phRes);
IMG_UINT32  HostClockus (IMG_VOID);
IMG_VOID  HostWaitus (IMG_UINT32 ui32Timeus);
IMG_VOID  HostReleaseThreadQuanta (IMG_VOID);
IMG_UINT32 HostPCIReadDword(IMG_UINT32 ui32Bus, IMG_UINT32 ui32Dev, IMG_UINT32 ui32Func, IMG_UINT32 ui32Reg);
IMG_VOID HostPCIWriteDword(IMG_UINT32 ui32Bus, IMG_UINT32 ui32Dev, IMG_UINT32 ui32Func, IMG_UINT32 ui32Reg, IMG_UINT32 ui32Value);

IMG_UINT32 HostReadHWReg(IMG_PVOID pvLinRegBaseAddr, IMG_UINT32 ui32Offset);
IMG_VOID HostWriteHWReg(IMG_PVOID pvLinRegBaseAddr, IMG_UINT32 ui32Offset, IMG_UINT32 ui32Value);

#if defined (__cplusplus)
}
#endif

#endif  /* __HOSTFUNC_H__ */

/*--------------------------------- end of file ------------------------------*/

⌨️ 快捷键说明

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