/**********************************************************************
*
* Copyright(c) 2008 Imagination Technologies Ltd. All rights reserved.
- *
+ *
* This program is free software; you can redistribute it and/or modify it
* under the terms and conditions of the GNU General Public License,
* version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope it will be useful but, except
- * as otherwise stated in writing, without any warranty; without even the
- * implied warranty of merchantability or fitness for a particular purpose.
+ *
+ * This program is distributed in the hope it will be useful but, except
+ * as otherwise stated in writing, without any warranty; without even the
+ * implied warranty of merchantability or fitness for a particular purpose.
* See the GNU General Public License for more details.
- *
+ *
* You should have received a copy of the GNU General Public License along with
* this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
- *
+ *
* The full GNU General Public License is included in this distribution in
* the file called "COPYING".
*
* Contact Information:
* Imagination Technologies Ltd. <gpl-support@imgtec.com>
- * Home Park Estate, Kings Langley, Herts, WD4 8LZ, UK
+ * Home Park Estate, Kings Langley, Herts, WD4 8LZ, UK
*
******************************************************************************/
#ifndef __OSFUNC_H__
#define __OSFUNC_H__
-
-#ifdef __KERNEL__
+#if defined(__KERNEL__)
+#include <linux/hardirq.h>
#include <linux/string.h>
#endif
+#define PVRSRV_PAGEABLE_SELECT PVRSRV_OS_PAGEABLE_HEAP
+
#define KERNEL_ID 0xffffffffL
-#define POWER_MANAGER_ID 0xfffffffeL
+#define POWER_MANAGER_ID 0xfffffffeL
#define ISR_ID 0xfffffffdL
#define TIMER_ID 0xfffffffcL
#define HOST_PAGESIZE OSGetPageSize
#define HOST_PAGEMASK (~(HOST_PAGESIZE()-1))
-#define HOST_PAGEALIGN(addr) (((addr)+HOST_PAGESIZE()-1)&HOST_PAGEMASK)
-#define PVRSRV_OS_HEAP_MASK 0xf
+#define HOST_PAGEALIGN(addr) (((addr) + HOST_PAGESIZE() - 1) & \
+ HOST_PAGEMASK)
+
+#define PVRSRV_OS_HEAP_MASK 0xf
#define PVRSRV_OS_PAGEABLE_HEAP 0x1
#define PVRSRV_OS_NON_PAGEABLE_HEAP 0x2
- IMG_UINT32 OSClockus(IMG_VOID);
- IMG_UINT32 OSGetPageSize(IMG_VOID);
- PVRSRV_ERROR OSInstallDeviceLISR(IMG_VOID * pvSysData,
- IMG_UINT32 ui32Irq,
- IMG_CHAR * pszISRName,
- IMG_VOID * pvDeviceNode);
- PVRSRV_ERROR OSUninstallDeviceLISR(IMG_VOID * pvSysData);
- PVRSRV_ERROR OSInstallSystemLISR(IMG_VOID * pvSysData,
- IMG_UINT32 ui32Irq);
- PVRSRV_ERROR OSUninstallSystemLISR(IMG_VOID * pvSysData);
- PVRSRV_ERROR OSInstallMISR(IMG_VOID * pvSysData);
- PVRSRV_ERROR OSUninstallMISR(IMG_VOID * pvSysData);
- PVRSRV_ERROR OSInitPerf(IMG_VOID * pvSysData);
- PVRSRV_ERROR OSCleanupPerf(IMG_VOID * pvSysData);
- IMG_CPU_PHYADDR OSMapLinToCPUPhys(IMG_VOID * pvLinAddr);
- IMG_VOID OSMemCopy(IMG_VOID * pvDst, IMG_VOID * pvSrc,
- IMG_UINT32 ui32Size);
- IMG_VOID *OSMapPhysToLin(IMG_CPU_PHYADDR BasePAddr,
- IMG_UINT32 ui32Bytes, IMG_UINT32 ui32Flags,
- IMG_HANDLE * phOSMemHandle);
- IMG_BOOL OSUnMapPhysToLin(IMG_VOID * pvLinAddr, IMG_UINT32 ui32Bytes,
- IMG_UINT32 ui32Flags,
- IMG_HANDLE hOSMemHandle);
-
- PVRSRV_ERROR OSReservePhys(IMG_CPU_PHYADDR BasePAddr,
- IMG_UINT32 ui32Bytes, IMG_UINT32 ui32Flags,
- IMG_VOID ** ppvCpuVAddr,
- IMG_HANDLE * phOSMemHandle);
- PVRSRV_ERROR OSUnReservePhys(IMG_VOID * pvCpuVAddr,
- IMG_UINT32 ui32Bytes, IMG_UINT32 ui32Flags,
- IMG_HANDLE hOSMemHandle);
-
- PVRSRV_ERROR OSRegisterDiscontigMem(IMG_SYS_PHYADDR * pBasePAddr,
- IMG_VOID * pvCpuVAddr,
- IMG_UINT32 ui32Bytes,
- IMG_UINT32 ui32Flags,
- IMG_HANDLE * phOSMemHandle);
- PVRSRV_ERROR OSUnRegisterDiscontigMem(IMG_VOID * pvCpuVAddr,
- IMG_UINT32 ui32Bytes,
- IMG_UINT32 ui32Flags,
- IMG_HANDLE hOSMemHandle);
-
- static INLINE PVRSRV_ERROR OSReserveDiscontigPhys(IMG_SYS_PHYADDR *
- pBasePAddr,
- IMG_UINT32 ui32Bytes,
- IMG_UINT32 ui32Flags,
- IMG_VOID **
- ppvCpuVAddr,
- IMG_HANDLE *
- phOSMemHandle) {
- *ppvCpuVAddr = IMG_NULL;
- return OSRegisterDiscontigMem(pBasePAddr, *ppvCpuVAddr,
- ui32Bytes, ui32Flags,
- phOSMemHandle);
- }
-
- static INLINE PVRSRV_ERROR OSUnReserveDiscontigPhys(IMG_VOID *
- pvCpuVAddr,
- IMG_UINT32
- ui32Bytes,
- IMG_UINT32
- ui32Flags,
- IMG_HANDLE
- hOSMemHandle) {
- OSUnRegisterDiscontigMem(pvCpuVAddr, ui32Bytes, ui32Flags,
- hOSMemHandle);
-
- return PVRSRV_OK;
- }
-
- PVRSRV_ERROR OSRegisterMem(IMG_CPU_PHYADDR BasePAddr,
- IMG_VOID * pvCpuVAddr, IMG_UINT32 ui32Bytes,
- IMG_UINT32 ui32Flags,
- IMG_HANDLE * phOSMemHandle);
- PVRSRV_ERROR OSUnRegisterMem(IMG_VOID * pvCpuVAddr,
- IMG_UINT32 ui32Bytes, IMG_UINT32 ui32Flags,
- IMG_HANDLE hOSMemHandle);
-
- PVRSRV_ERROR OSGetSubMemHandle(IMG_HANDLE hOSMemHandle,
- IMG_UINT32 ui32ByteOffset,
- IMG_UINT32 ui32Bytes,
- IMG_UINT32 ui32Flags,
- IMG_HANDLE * phOSMemHandleRet);
- PVRSRV_ERROR OSReleaseSubMemHandle(IMG_HANDLE hOSMemHandle,
- IMG_UINT32 ui32Flags);
-
- IMG_UINT32 OSGetCurrentProcessIDKM(IMG_VOID);
- IMG_UINT32 OSGetCurrentThreadID(IMG_VOID);
- IMG_VOID OSMemSet(IMG_VOID * pvDest, IMG_UINT8 ui8Value,
- IMG_UINT32 ui32Size);
-
-#ifdef DEBUG_LINUX_MEMORY_ALLOCATIONS
- PVRSRV_ERROR _OSAllocMem(IMG_UINT32 ui32Flags, IMG_UINT32 ui32Size,
- IMG_PVOID * ppvLinAddr,
- IMG_HANDLE * phBlockAlloc,
- IMG_CHAR * pszFilename, IMG_UINT32 ui32Line);
-#define OSAllocMem(ui32Flags, ui32Size, ppvLinAddr, phBlockAlloc) _OSAllocMem(ui32Flags, ui32Size, ppvLinAddr, phBlockAlloc, __FILE__, __LINE__)
- PVRSRV_ERROR _OSFreeMem(IMG_UINT32 ui32Flags, IMG_UINT32 ui32Size,
- IMG_PVOID pvLinAddr, IMG_HANDLE hBlockAlloc,
- IMG_CHAR * pszFilename, IMG_UINT32 ui32Line);
-#define OSFreeMem(ui32Flags, ui32Size, pvLinAddr, phBlockAlloc) _OSFreeMem(ui32Flags, ui32Size, pvLinAddr, phBlockAlloc, __FILE__, __LINE__)
+u32 OSClockus(void);
+u32 OSGetPageSize(void);
+enum PVRSRV_ERROR OSInstallDeviceLISR(void *pvSysData, u32 ui32Irq,
+ char *pszISRName, void *pvDeviceNode);
+enum PVRSRV_ERROR OSUninstallDeviceLISR(void *pvSysData);
+enum PVRSRV_ERROR OSInstallSystemLISR(void *pvSysData, u32 ui32Irq);
+enum PVRSRV_ERROR OSUninstallSystemLISR(void *pvSysData);
+enum PVRSRV_ERROR OSInstallMISR(void *pvSysData);
+enum PVRSRV_ERROR OSUninstallMISR(void *pvSysData);
+enum PVRSRV_ERROR OSInitPerf(void *pvSysData);
+enum PVRSRV_ERROR OSCleanupPerf(void *pvSysData);
+struct IMG_CPU_PHYADDR OSMapLinToCPUPhys(void *pvLinAddr);
+void OSMemCopy(void *pvDst, void *pvSrc, u32 ui32Size);
+void __iomem *OSMapPhysToLin(struct IMG_CPU_PHYADDR BasePAddr,
+ u32 ui32Bytes, u32 ui32MappingFlags, void **phOSMemHandle);
+IMG_BOOL OSUnMapPhysToLin(void __iomem *pvLinAddr, u32 ui32Bytes,
+ u32 ui32MappingFlags, void *hPageAlloc);
+
+enum PVRSRV_ERROR OSReservePhys(struct IMG_CPU_PHYADDR BasePAddr, u32 ui32Bytes,
+ u32 ui32Flags, void **ppvCpuVAddr, void **phOSMemHandle);
+enum PVRSRV_ERROR OSUnReservePhys(void *pvCpuVAddr, u32 ui32Bytes,
+ u32 ui32Flags, void *hOSMemHandle);
+
+enum PVRSRV_ERROR OSRegisterDiscontigMem(struct IMG_SYS_PHYADDR *pBasePAddr,
+ void *pvCpuVAddr, u32 ui32Bytes, u32 ui32Flags,
+ void **phOSMemHandle);
+enum PVRSRV_ERROR OSUnRegisterDiscontigMem(void *pvCpuVAddr, u32 ui32Bytes,
+ u32 ui32Flags, void *hOSMemHandle);
+
+static inline enum PVRSRV_ERROR OSReserveDiscontigPhys(
+ struct IMG_SYS_PHYADDR *pBasePAddr, u32 ui32Bytes,
+ u32 ui32Flags, void **ppvCpuVAddr, void **phOSMemHandle)
+{
+ *ppvCpuVAddr = NULL;
+ return OSRegisterDiscontigMem(pBasePAddr, *ppvCpuVAddr, ui32Bytes,
+ ui32Flags, phOSMemHandle);
+}
+
+static inline enum PVRSRV_ERROR OSUnReserveDiscontigPhys(void *pvCpuVAddr,
+ u32 ui32Bytes, u32 ui32Flags, void *hOSMemHandle)
+{
+ OSUnRegisterDiscontigMem(pvCpuVAddr, ui32Bytes, ui32Flags,
+ hOSMemHandle);
+
+ return PVRSRV_OK;
+}
+
+enum PVRSRV_ERROR OSRegisterMem(struct IMG_CPU_PHYADDR BasePAddr,
+ void *pvCpuVAddr, u32 ui32Bytes, u32 ui32Flags,
+ void **phOSMemHandle);
+enum PVRSRV_ERROR OSUnRegisterMem(void *pvCpuVAddr, u32 ui32Bytes,
+ u32 ui32Flags, void *hOSMemHandle);
+
+enum PVRSRV_ERROR OSGetSubMemHandle(void *hOSMemHandle, u32 ui32ByteOffset,
+ u32 ui32Bytes, u32 ui32Flags, void **phOSMemHandleRet);
+enum PVRSRV_ERROR OSReleaseSubMemHandle(void *hOSMemHandle, u32 ui32Flags);
+
+u32 OSGetCurrentProcessIDKM(void);
+u32 OSGetCurrentThreadID(void);
+void OSMemSet(void *pvDest, u8 ui8Value, u32 ui32Size);
+
+#if defined(DEBUG_LINUX_MEMORY_ALLOCATIONS)
+enum PVRSRV_ERROR _OSAllocMem(u32 ui32Flags, u32 ui32Size, void **ppvLinAddr,
+ void **phBlockAlloc, char *pszFilename, u32 ui32Line);
+#define OSAllocMem(ui32Flags, ui32Size, ppvLinAddr, phBlockAlloc) \
+ _OSAllocMem(ui32Flags, ui32Size, ppvLinAddr, phBlockAlloc, \
+ __FILE__, __LINE__)
+void _OSFreeMem(u32 ui32Flags, u32 ui32Size, void *pvLinAddr,
+ void *hBlockAlloc, char *pszFilename, u32 ui32Line);
+#define OSFreeMem(ui32Flags, ui32Size, pvLinAddr, phBlockAlloc) \
+ _OSFreeMem(ui32Flags, ui32Size, pvLinAddr, phBlockAlloc, \
+ __FILE__, __LINE__)
#else
- PVRSRV_ERROR OSAllocMem(IMG_UINT32 ui32Flags, IMG_UINT32 ui32Size,
- IMG_PVOID * ppvLinAddr,
- IMG_HANDLE * phBlockAlloc);
- PVRSRV_ERROR OSFreeMem(IMG_UINT32 ui32Flags, IMG_UINT32 ui32Size,
- IMG_PVOID pvLinAddr, IMG_HANDLE hBlockAlloc);
+enum PVRSRV_ERROR OSAllocMem(u32 ui32Flags, u32 ui32Size, void **ppvLinAddr,
+ void **phBlockAlloc);
+void OSFreeMem(u32 ui32Flags, u32 ui32Size, void *pvLinAddr, void *hBlockAlloc);
#endif
- PVRSRV_ERROR OSAllocPages(IMG_UINT32 ui32Flags, IMG_UINT32 ui32Size,
- IMG_PVOID * ppvLinAddr,
- IMG_HANDLE * phPageAlloc);
- PVRSRV_ERROR OSFreePages(IMG_UINT32 ui32Flags, IMG_UINT32 ui32Size,
- IMG_PVOID pvLinAddr, IMG_HANDLE hPageAlloc);
- IMG_CPU_PHYADDR OSMemHandleToCpuPAddr(IMG_VOID * hOSMemHandle,
- IMG_UINT32 ui32ByteOffset);
- PVRSRV_ERROR OSInitEnvData(IMG_PVOID * ppvEnvSpecificData);
- PVRSRV_ERROR OSDeInitEnvData(IMG_PVOID pvEnvSpecificData);
- IMG_CHAR *OSStringCopy(IMG_CHAR * pszDest, const IMG_CHAR * pszSrc);
- IMG_INT32 OSSNPrintf(IMG_CHAR * pStr, IMG_UINT32 ui32Size,
- const IMG_CHAR * pszFormat, ...);
+enum PVRSRV_ERROR OSAllocPages(u32 ui32Flags, u32 ui32Size, u32 ui32PageSize,
+ void **ppvLinAddr, void **phPageAlloc);
+enum PVRSRV_ERROR OSFreePages(u32 ui32Flags, u32 ui32Size, void *pvLinAddr,
+ void *hPageAlloc);
+struct IMG_CPU_PHYADDR OSMemHandleToCpuPAddr(void *hOSMemHandle,
+ u32 ui32ByteOffset);
+enum PVRSRV_ERROR OSInitEnvData(void **ppvEnvSpecificData);
+enum PVRSRV_ERROR OSDeInitEnvData(void *pvEnvSpecificData);
+char *OSStringCopy(char *pszDest, const char *pszSrc);
+s32 OSSNPrintf(char *pStr, u32 ui32Size, const char *pszFormat, ...);
#define OSStringLength(pszString) strlen(pszString)
- PVRSRV_ERROR OSEventObjectCreate(const IMG_CHAR * pszName,
- PVRSRV_EVENTOBJECT * psEventObject);
- PVRSRV_ERROR OSEventObjectDestroy(PVRSRV_EVENTOBJECT * psEventObject);
- PVRSRV_ERROR OSEventObjectSignal(IMG_HANDLE hOSEventKM);
- PVRSRV_ERROR OSEventObjectWait(IMG_HANDLE hOSEventKM);
- PVRSRV_ERROR OSEventObjectOpen(PVRSRV_EVENTOBJECT * psEventObject,
- IMG_HANDLE * phOSEvent);
- PVRSRV_ERROR OSEventObjectClose(PVRSRV_EVENTOBJECT * psEventObject,
- IMG_HANDLE hOSEventKM);
-
- PVRSRV_ERROR OSBaseAllocContigMemory(IMG_UINT32 ui32Size,
- IMG_CPU_VIRTADDR * pLinAddr,
- IMG_CPU_PHYADDR * pPhysAddr);
- PVRSRV_ERROR OSBaseFreeContigMemory(IMG_UINT32 ui32Size,
- IMG_CPU_VIRTADDR LinAddr,
- IMG_CPU_PHYADDR PhysAddr);
-
- IMG_PVOID MapUserFromKernel(IMG_PVOID pvLinAddrKM, IMG_UINT32 ui32Size,
- IMG_HANDLE * phMemBlock);
- IMG_PVOID OSMapHWRegsIntoUserSpace(IMG_HANDLE hDevCookie,
- IMG_SYS_PHYADDR sRegAddr,
- IMG_UINT32 ulSize,
- IMG_PVOID * ppvProcess);
- IMG_VOID OSUnmapHWRegsFromUserSpace(IMG_HANDLE hDevCookie,
- IMG_PVOID pvUserAddr,
- IMG_PVOID pvProcess);
-
- IMG_VOID UnmapUserFromKernel(IMG_PVOID pvLinAddrUM, IMG_UINT32 ui32Size,
- IMG_HANDLE hMemBlock);
-
- PVRSRV_ERROR OSMapPhysToUserSpace(IMG_HANDLE hDevCookie,
- IMG_SYS_PHYADDR sCPUPhysAddr,
- IMG_UINT32 uiSizeInBytes,
- IMG_UINT32 ui32CacheFlags,
- IMG_PVOID * ppvUserAddr,
- IMG_UINT32 * puiActualSize,
- IMG_HANDLE hMappingHandle);
-
- PVRSRV_ERROR OSUnmapPhysToUserSpace(IMG_HANDLE hDevCookie,
- IMG_PVOID pvUserAddr,
- IMG_PVOID pvProcess);
-
- PVRSRV_ERROR OSLockResource(PVRSRV_RESOURCE * psResource,
- IMG_UINT32 ui32ID);
- PVRSRV_ERROR OSUnlockResource(PVRSRV_RESOURCE * psResource,
- IMG_UINT32 ui32ID);
- IMG_BOOL OSIsResourceLocked(PVRSRV_RESOURCE * psResource,
- IMG_UINT32 ui32ID);
- PVRSRV_ERROR OSCreateResource(PVRSRV_RESOURCE * psResource);
- PVRSRV_ERROR OSDestroyResource(PVRSRV_RESOURCE * psResource);
- IMG_VOID OSBreakResourceLock(PVRSRV_RESOURCE * psResource,
- IMG_UINT32 ui32ID);
- IMG_VOID OSWaitus(IMG_UINT32 ui32Timeus);
- IMG_VOID OSReleaseThreadQuanta(IMG_VOID);
- IMG_UINT32 OSPCIReadDword(IMG_UINT32 ui32Bus, IMG_UINT32 ui32Dev,
- IMG_UINT32 ui32Func, IMG_UINT32 ui32Reg);
- IMG_VOID OSPCIWriteDword(IMG_UINT32 ui32Bus, IMG_UINT32 ui32Dev,
- IMG_UINT32 ui32Func, IMG_UINT32 ui32Reg,
- IMG_UINT32 ui32Value);
-
- IMG_UINT32 OSReadHWReg(IMG_PVOID pvLinRegBaseAddr,
- IMG_UINT32 ui32Offset);
- IMG_VOID OSWriteHWReg(IMG_PVOID pvLinRegBaseAddr, IMG_UINT32 ui32Offset,
- IMG_UINT32 ui32Value);
-
- typedef IMG_VOID(*PFN_TIMER_FUNC) (IMG_VOID *);
- IMG_HANDLE OSAddTimer(PFN_TIMER_FUNC pfnTimerFunc, IMG_VOID * pvData,
- IMG_UINT32 ui32MsTimeout);
- PVRSRV_ERROR OSRemoveTimer(IMG_HANDLE hTimer);
- PVRSRV_ERROR OSEnableTimer(IMG_HANDLE hTimer);
- PVRSRV_ERROR OSDisableTimer(IMG_HANDLE hTimer);
-
- PVRSRV_ERROR OSGetSysMemSize(IMG_UINT32 * pui32Bytes);
-
- typedef enum _HOST_PCI_INIT_FLAGS_ {
- HOST_PCI_INIT_FLAG_BUS_MASTER = 0x1,
- HOST_PCI_INIT_FLAG_FORCE_I32 = 0x7fffffff
- } HOST_PCI_INIT_FLAGS;
-
- struct _PVRSRV_PCI_DEV_OPAQUE_STRUCT_;
- typedef struct _PVRSRV_PCI_DEV_OPAQUE_STRUCT_ *PVRSRV_PCI_DEV_HANDLE;
-
- PVRSRV_PCI_DEV_HANDLE OSPCIAcquireDev(IMG_UINT16 ui16VendorID,
- IMG_UINT16 ui16DeviceID,
- HOST_PCI_INIT_FLAGS eFlags);
- PVRSRV_PCI_DEV_HANDLE OSPCISetDev(IMG_VOID * pvPCICookie,
- HOST_PCI_INIT_FLAGS eFlags);
- PVRSRV_ERROR OSPCIReleaseDev(PVRSRV_PCI_DEV_HANDLE hPVRPCI);
- PVRSRV_ERROR OSPCIIRQ(PVRSRV_PCI_DEV_HANDLE hPVRPCI,
- IMG_UINT32 * pui32IRQ);
- IMG_UINT32 OSPCIAddrRangeLen(PVRSRV_PCI_DEV_HANDLE hPVRPCI,
- IMG_UINT32 ui32Index);
- IMG_UINT32 OSPCIAddrRangeStart(PVRSRV_PCI_DEV_HANDLE hPVRPCI,
- IMG_UINT32 ui32Index);
- IMG_UINT32 OSPCIAddrRangeEnd(PVRSRV_PCI_DEV_HANDLE hPVRPCI,
- IMG_UINT32 ui32Index);
- PVRSRV_ERROR OSPCIRequestAddrRange(PVRSRV_PCI_DEV_HANDLE hPVRPCI,
- IMG_UINT32 ui32Index);
- PVRSRV_ERROR OSPCIReleaseAddrRange(PVRSRV_PCI_DEV_HANDLE hPVRPCI,
- IMG_UINT32 ui32Index);
- PVRSRV_ERROR OSPCISuspendDev(PVRSRV_PCI_DEV_HANDLE hPVRPCI);
- PVRSRV_ERROR OSPCIResumeDev(PVRSRV_PCI_DEV_HANDLE hPVRPCI);
-
- PVRSRV_ERROR OSScheduleMISR(IMG_VOID * pvSysData);
-
- IMG_BOOL OSProcHasPrivSrvInit(IMG_VOID);
-
- typedef enum _img_verify_test {
- PVR_VERIFY_WRITE = 0,
- PVR_VERIFY_READ
- } IMG_VERIFY_TEST;
-
- IMG_BOOL OSAccessOK(IMG_VERIFY_TEST eVerification, IMG_VOID * pvUserPtr,
- IMG_UINT32 ui32Bytes);
-
- PVRSRV_ERROR OSCopyToUser(IMG_PVOID pvProcess, IMG_VOID * pvDest,
- IMG_VOID * pvSrc, IMG_UINT32 ui32Bytes);
- PVRSRV_ERROR OSCopyFromUser(IMG_PVOID pvProcess, IMG_VOID * pvDest,
- IMG_VOID * pvSrc, IMG_UINT32 ui32Bytes);
-
- PVRSRV_ERROR OSAcquirePhysPageAddr(IMG_VOID * pvCPUVAddr,
- IMG_UINT32 ui32Bytes,
- IMG_SYS_PHYADDR * psSysPAddr,
- IMG_HANDLE * phOSWrapMem);
- PVRSRV_ERROR OSReleasePhysPageAddr(IMG_HANDLE hOSWrapMem);
-
+enum PVRSRV_ERROR OSEventObjectCreate(const char *pszName,
+ struct PVRSRV_EVENTOBJECT *psEventObject);
+enum PVRSRV_ERROR OSEventObjectDestroy(
+ struct PVRSRV_EVENTOBJECT *psEventObject);
+enum PVRSRV_ERROR OSEventObjectSignal(void *hOSEventKM);
+enum PVRSRV_ERROR OSEventObjectWait(void *hOSEventKM);
+enum PVRSRV_ERROR OSEventObjectOpen(struct PVRSRV_EVENTOBJECT *psEventObject,
+ void **phOSEvent);
+enum PVRSRV_ERROR OSEventObjectClose(struct PVRSRV_EVENTOBJECT *psEventObject,
+ void *hOSEventKM);
+
+enum PVRSRV_ERROR OSBaseAllocContigMemory(u32 ui32Size, void **pLinAddr,
+ struct IMG_CPU_PHYADDR *pPhysAddr);
+enum PVRSRV_ERROR OSBaseFreeContigMemory(u32 ui32Size, void *LinAddr,
+ struct IMG_CPU_PHYADDR PhysAddr);
+
+void *MapUserFromKernel(void *pvLinAddrKM, u32 ui32Size, void **phMemBlock);
+void *OSMapHWRegsIntoUserSpace(void *hDevCookie,
+ struct IMG_SYS_PHYADDR sRegAddr, u32 ulSize, void **ppvProcess);
+void OSUnmapHWRegsFromUserSpace(void *hDevCookie, void *pvUserAddr,
+ void *pvProcess);
+
+void UnmapUserFromKernel(void *pvLinAddrUM, u32 ui32Size, void *hMemBlock);
+
+enum PVRSRV_ERROR OSMapPhysToUserSpace(void *hDevCookie,
+ struct IMG_SYS_PHYADDR sCPUPhysAddr, u32 uiSizeInBytes,
+ u32 ui32CacheFlags, void **ppvUserAddr, u32 *puiActualSize,
+ void *hMappingHandle);
+
+enum PVRSRV_ERROR OSUnmapPhysToUserSpace(void *hDevCookie, void *pvUserAddr,
+ void *pvProcess);
+
+void OSWaitus(u32 ui32Timeus);
+void OSReleaseThreadQuanta(void);
+
+u32 OSReadHWReg(void __iomem *pvLinRegBaseAddr, u32 ui32Offset);
+void OSWriteHWReg(void __iomem *pvLinRegBaseAddr, u32 ui32Offset,
+ u32 ui32Value);
+
+void *OSAddTimer(void (*pfnTimerFunc)(void *), void *pvData, u32 ui32MsTimeout);
+enum PVRSRV_ERROR OSRemoveTimer(void *hTimer);
+enum PVRSRV_ERROR OSEnableTimer(void *hTimer);
+enum PVRSRV_ERROR OSDisableTimer(void *hTimer);
+
+enum PVRSRV_ERROR OSGetSysMemSize(u32 *pui32Bytes);
+
+enum HOST_PCI_INIT_FLAGS {
+ HOST_PCI_INIT_FLAG_BUS_MASTER = 0x00000001,
+ HOST_PCI_INIT_FLAG_MSI = 0x00000002,
+ HOST_PCI_INIT_FLAG_FORCE_I32 = 0x7fffffff
+};
+
+enum PVRSRV_ERROR OSScheduleMISR(void *pvSysData);
+
+IMG_BOOL OSProcHasPrivSrvInit(void);
+
+enum IMG_VERIFY_TEST {
+ PVR_VERIFY_WRITE = 0,
+ PVR_VERIFY_READ
+};
+
+IMG_BOOL OSAccessOK(enum IMG_VERIFY_TEST eVerification,
+ const void __user *pvUserPtr, u32 ui32Bytes);
+
+enum PVRSRV_ERROR OSCopyToUser(void *pvProcess, void __user *pvDest,
+ const void *pvSrc, u32 ui32Bytes);
+enum PVRSRV_ERROR OSCopyFromUser(void *pvProcess, void *pvDest,
+ const void __user *pvSrc, u32 ui32Bytes);
+
+enum PVRSRV_ERROR OSAcquirePhysPageAddr(void *pvCPUVAddr, u32 ui32Bytes,
+ struct IMG_SYS_PHYADDR *psSysPAddr,
+ void **phOSWrapMem);
+enum PVRSRV_ERROR OSReleasePhysPageAddr(void *hOSWrapMem);
#endif