diff options
Diffstat (limited to 'pvr-source/services4/system/include/syscommon.h')
-rwxr-xr-x | pvr-source/services4/system/include/syscommon.h | 397 |
1 files changed, 0 insertions, 397 deletions
diff --git a/pvr-source/services4/system/include/syscommon.h b/pvr-source/services4/system/include/syscommon.h deleted file mode 100755 index 4fd3512..0000000 --- a/pvr-source/services4/system/include/syscommon.h +++ /dev/null @@ -1,397 +0,0 @@ -/*************************************************************************/ /*! -@Title Common System APIs and structures -@Copyright Copyright (c) Imagination Technologies Ltd. All Rights Reserved -@Description This header provides common system-specific declarations and macros - that are supported by all system's -@License Dual MIT/GPLv2 - -The contents of this file are subject to the MIT license as set out below. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -Alternatively, the contents of this file may be used under the terms of -the GNU General Public License Version 2 ("GPL") in which case the provisions -of GPL are applicable instead of those above. - -If you wish to allow use of your version of this file only under the terms of -GPL, and not to allow others to use your version of this file under the terms -of the MIT license, indicate your decision by deleting the provisions above -and replace them with the notice and other provisions required by GPL as set -out in the file called "GPL-COPYING" included in this distribution. If you do -not delete the provisions above, a recipient may use your version of this file -under the terms of either the MIT license or GPL. - -This License is also included in this distribution in the file called -"MIT-COPYING". - -EXCEPT AS OTHERWISE STATED IN A NEGOTIATED AGREEMENT: (A) THE SOFTWARE IS -PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING -BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR -PURPOSE AND NONINFRINGEMENT; AND (B) IN NO EVENT SHALL THE AUTHORS OR -COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER -IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -*/ /**************************************************************************/ - -#ifndef _SYSCOMMON_H -#define _SYSCOMMON_H - -#include "sysconfig.h" /* System specific system defines */ -#include "sysinfo.h" /* globally accessible system info */ -#include "servicesint.h" -#include "queue.h" -#include "power.h" -#include "resman.h" -#include "ra.h" -#include "device.h" -#include "buffer_manager.h" -#include "pvr_debug.h" -#include "services.h" - -#if defined(NO_HARDWARE) && defined(__linux__) && defined(__KERNEL__) -#include <asm/io.h> -#endif - -#if defined (__cplusplus) -extern "C" { -#endif - -/*! - **************************************************************************** - device id management structure - ****************************************************************************/ -typedef struct _SYS_DEVICE_ID_TAG -{ - IMG_UINT32 uiID; - IMG_BOOL bInUse; - -} SYS_DEVICE_ID; - - -/* - the max number of independent local backing stores services supports - (grow this number if ever required) -*/ -#define SYS_MAX_LOCAL_DEVMEM_ARENAS 4 - -typedef IMG_HANDLE (*PFN_HTIMER_CREATE) (IMG_VOID); -typedef IMG_UINT32 (*PFN_HTIMER_GETUS) (IMG_HANDLE); -typedef IMG_VOID (*PFN_HTIMER_DESTROY) (IMG_HANDLE); -/*! - **************************************************************************** - Top level system data structure - ****************************************************************************/ -typedef struct _SYS_DATA_TAG_ -{ - IMG_UINT32 ui32NumDevices; /*!< number of devices in system */ - SYS_DEVICE_ID sDeviceID[SYS_DEVICE_COUNT]; - PVRSRV_DEVICE_NODE *psDeviceNodeList; /*!< list of private device info structures */ - PVRSRV_POWER_DEV *psPowerDeviceList; /*!< list of devices registered with the power manager */ - PVRSRV_RESOURCE sPowerStateChangeResource; /*!< lock for power state transitions */ - PVRSRV_SYS_POWER_STATE eCurrentPowerState; /*!< current Kernel services power state */ - PVRSRV_SYS_POWER_STATE eFailedPowerState; /*!< Kernel services power state (Failed to transition to) */ - IMG_UINT32 ui32CurrentOSPowerState; /*!< current OS specific power state */ - PVRSRV_QUEUE_INFO *psQueueList; /*!< list of all command queues in the system */ - PVRSRV_KERNEL_SYNC_INFO *psSharedSyncInfoList; /*!< list of cross process syncinfos */ - IMG_PVOID pvEnvSpecificData; /*!< Environment specific data */ - IMG_PVOID pvSysSpecificData; /*!< Unique to system, accessible at system layer only */ - PVRSRV_RESOURCE sQProcessResource; /*!< Command Q processing access lock */ - IMG_VOID *pvSOCRegsBase; /*!< SOC registers base linear address */ - IMG_HANDLE hSOCTimerRegisterOSMemHandle; /*!< SOC Timer register (if present) */ - IMG_UINT32 *pvSOCTimerRegisterKM; /*!< SOC Timer register (if present) */ - IMG_VOID *pvSOCClockGateRegsBase; /*!< SOC Clock gating registers (if present) */ - IMG_UINT32 ui32SOCClockGateRegsSize; - - struct _DEVICE_COMMAND_DATA_ *apsDeviceCommandData[SYS_DEVICE_COUNT]; - /*!< command complete data and callback function store for every command for every device */ - - RA_ARENA *apsLocalDevMemArena[SYS_MAX_LOCAL_DEVMEM_ARENAS]; /*!< RA Arenas for local device memory heap management */ - - IMG_CHAR *pszVersionString; /*!< Human readable string showing relevent system version info */ -#if defined (SUPPORT_SID_INTERFACE) - PVRSRV_EVENTOBJECT_KM *psGlobalEventObject; /*!< OS Global Event Object */ -#else - PVRSRV_EVENTOBJECT *psGlobalEventObject; /*!< OS Global Event Object */ -#endif - - PVRSRV_MISC_INFO_CPUCACHEOP_TYPE ePendingCacheOpType; /*!< Deferred CPU cache op control */ - - PFN_HTIMER_CREATE pfnHighResTimerCreate; - PFN_HTIMER_GETUS pfnHighResTimerGetus; - PFN_HTIMER_DESTROY pfnHighResTimerDestroy; -} SYS_DATA; - - -/**************************************************************************** - * common function prototypes - ****************************************************************************/ - -#if defined (CUSTOM_DISPLAY_SEGMENT) -PVRSRV_ERROR SysGetDisplaySegmentAddress (IMG_VOID *pvDevInfo, IMG_VOID *pvPhysicalAddress, IMG_UINT32 *pui32Length); -#endif - -PVRSRV_ERROR SysInitialise(IMG_VOID); -PVRSRV_ERROR SysFinalise(IMG_VOID); - -PVRSRV_ERROR SysDeinitialise(SYS_DATA *psSysData); -PVRSRV_ERROR SysGetDeviceMemoryMap(PVRSRV_DEVICE_TYPE eDeviceType, - IMG_VOID **ppvDeviceMap); - -IMG_VOID SysRegisterExternalDevice(PVRSRV_DEVICE_NODE *psDeviceNode); -IMG_VOID SysRemoveExternalDevice(PVRSRV_DEVICE_NODE *psDeviceNode); - -IMG_UINT32 SysGetInterruptSource(SYS_DATA *psSysData, - PVRSRV_DEVICE_NODE *psDeviceNode); - -IMG_VOID SysClearInterrupts(SYS_DATA* psSysData, IMG_UINT32 ui32ClearBits); - -PVRSRV_ERROR SysResetDevice(IMG_UINT32 ui32DeviceIndex); - -PVRSRV_ERROR SysSystemPrePowerState(PVRSRV_SYS_POWER_STATE eNewPowerState); -PVRSRV_ERROR SysSystemPostPowerState(PVRSRV_SYS_POWER_STATE eNewPowerState); -PVRSRV_ERROR SysDevicePrePowerState(IMG_UINT32 ui32DeviceIndex, - PVRSRV_DEV_POWER_STATE eNewPowerState, - PVRSRV_DEV_POWER_STATE eCurrentPowerState); -PVRSRV_ERROR SysDevicePostPowerState(IMG_UINT32 ui32DeviceIndex, - PVRSRV_DEV_POWER_STATE eNewPowerState, - PVRSRV_DEV_POWER_STATE eCurrentPowerState); - -IMG_VOID SysSGXIdleEntered(IMG_VOID); -IMG_VOID SysSGXCommandPending(IMG_BOOL bSGXIdle); - -#if defined(SYS_CUSTOM_POWERLOCK_WRAP) -PVRSRV_ERROR SysPowerLockWrap(IMG_BOOL bTryLock); -IMG_VOID SysPowerLockUnwrap(IMG_VOID); -#endif - -IMG_VOID SysLockSystemSuspend(IMG_VOID); -IMG_VOID SysUnlockSystemSuspend(IMG_VOID); - -PVRSRV_ERROR SysOEMFunction ( IMG_UINT32 ui32ID, - IMG_VOID *pvIn, - IMG_UINT32 ulInSize, - IMG_VOID *pvOut, - IMG_UINT32 ulOutSize); - - -IMG_DEV_PHYADDR SysCpuPAddrToDevPAddr (PVRSRV_DEVICE_TYPE eDeviceType, IMG_CPU_PHYADDR cpu_paddr); -IMG_DEV_PHYADDR SysSysPAddrToDevPAddr (PVRSRV_DEVICE_TYPE eDeviceType, IMG_SYS_PHYADDR SysPAddr); -IMG_SYS_PHYADDR SysDevPAddrToSysPAddr (PVRSRV_DEVICE_TYPE eDeviceType, IMG_DEV_PHYADDR SysPAddr); -IMG_CPU_PHYADDR SysSysPAddrToCpuPAddr (IMG_SYS_PHYADDR SysPAddr); -IMG_SYS_PHYADDR SysCpuPAddrToSysPAddr (IMG_CPU_PHYADDR cpu_paddr); -#if defined(PVR_LMA) -IMG_BOOL SysVerifyCpuPAddrToDevPAddr (PVRSRV_DEVICE_TYPE eDeviceType, IMG_CPU_PHYADDR CpuPAddr); -IMG_BOOL SysVerifySysPAddrToDevPAddr (PVRSRV_DEVICE_TYPE eDeviceType, IMG_SYS_PHYADDR SysPAddr); -#endif - -extern SYS_DATA* gpsSysData; - - -#if !defined(USE_CODE) - -/*! -****************************************************************************** - - @Function SysAcquireData - - @Description returns reference to to sysdata - creating one on first call - - @Input ppsSysData - pointer to copy reference into - - @Return ppsSysData updated - -******************************************************************************/ -#ifdef INLINE_IS_PRAGMA -#pragma inline(SysAcquireData) -#endif -static INLINE IMG_VOID SysAcquireData(SYS_DATA **ppsSysData) -{ - /* Copy pointer back system information pointer */ - *ppsSysData = gpsSysData; - - /* - Verify we've not been called before being initialised. Instinctively - we should do this check first, but in the failing case we'll just write - null back and the compiler won't warn about an uninitialised varible. - */ - PVR_ASSERT (gpsSysData != IMG_NULL); -} - - -/*! -****************************************************************************** - - @Function SysAcquireDataNoCheck - - @Description returns reference to to sysdata - creating one on first call - - @Input none - - @Return psSysData - pointer to copy reference into - -******************************************************************************/ -#ifdef INLINE_IS_PRAGMA -#pragma inline(SysAcquireDataNoCheck) -#endif -static INLINE SYS_DATA * SysAcquireDataNoCheck(IMG_VOID) -{ - /* return pointer back system information pointer */ - return gpsSysData; -} - - -/*! -****************************************************************************** - - @Function SysInitialiseCommon - - @Description Performs system initialisation common to all systems - - @Input psSysData - pointer to system data - - @Return PVRSRV_ERROR : - -******************************************************************************/ -#ifdef INLINE_IS_PRAGMA -#pragma inline(SysInitialiseCommon) -#endif -static INLINE PVRSRV_ERROR SysInitialiseCommon(SYS_DATA *psSysData) -{ - PVRSRV_ERROR eError; - - /* Initialise Services */ - eError = PVRSRVInit(psSysData); - - return eError; -} - -/*! -****************************************************************************** - - @Function SysDeinitialiseCommon - - @Description Performs system deinitialisation common to all systems - - @Input psSysData - pointer to system data - - @Return PVRSRV_ERROR : - -******************************************************************************/ -#ifdef INLINE_IS_PRAGMA -#pragma inline(SysDeinitialiseCommon) -#endif -static INLINE IMG_VOID SysDeinitialiseCommon(SYS_DATA *psSysData) -{ - /* De-initialise Services */ - PVRSRVDeInit(psSysData); - - OSDestroyResource(&psSysData->sPowerStateChangeResource); -} -#endif /* !defined(USE_CODE) */ - - -/* - * SysReadHWReg and SysWriteHWReg differ from OSReadHWReg and OSWriteHWReg - * in that they are always intended for use with real hardware, even on - * NO_HARDWARE systems. - */ -#if !(defined(NO_HARDWARE) && defined(__linux__) && defined(__KERNEL__)) -#define SysReadHWReg(p, o) OSReadHWReg(p, o) -#define SysWriteHWReg(p, o, v) OSWriteHWReg(p, o, v) -#else /* !(defined(NO_HARDWARE) && defined(__linux__)) */ -/*! -****************************************************************************** - - @Function SysReadHWReg - - @Description - - register read function - - @input pvLinRegBaseAddr : lin addr of register block base - - @input ui32Offset : - - @Return register value - -******************************************************************************/ -static inline IMG_UINT32 SysReadHWReg(IMG_PVOID pvLinRegBaseAddr, IMG_UINT32 ui32Offset) -{ - return (IMG_UINT32) readl(pvLinRegBaseAddr + ui32Offset); -} - -/*! -****************************************************************************** - - @Function SysWriteHWReg - - @Description - - register write function - - @input pvLinRegBaseAddr : lin addr of register block base - - @input ui32Offset : - - @input ui32Value : - - @Return none - -******************************************************************************/ -static inline IMG_VOID SysWriteHWReg(IMG_PVOID pvLinRegBaseAddr, IMG_UINT32 ui32Offset, IMG_UINT32 ui32Value) -{ - writel(ui32Value, pvLinRegBaseAddr + ui32Offset); -} -#endif /* !(defined(NO_HARDWARE) && defined(__linux__)) */ - -#if defined(__cplusplus) -} -#endif - -#ifdef INLINE_IS_PRAGMA -#pragma inline(SysHighResTimerCreate) -#endif -static INLINE IMG_HANDLE SysHighResTimerCreate(IMG_VOID) -{ - SYS_DATA *psSysData; - - SysAcquireData(&psSysData); - return psSysData->pfnHighResTimerCreate(); -} - -#ifdef INLINE_IS_PRAGMA -#pragma inline(SysHighResTimerGetus) -#endif -static INLINE IMG_UINT32 SysHighResTimerGetus(IMG_HANDLE hTimer) -{ - SYS_DATA *psSysData; - - SysAcquireData(&psSysData); - return psSysData->pfnHighResTimerGetus(hTimer); -} - -#ifdef INLINE_IS_PRAGMA -#pragma inline(SysHighResTimerDestroy) -#endif -static INLINE IMG_VOID SysHighResTimerDestroy(IMG_HANDLE hTimer) -{ - SYS_DATA *psSysData; - - SysAcquireData(&psSysData); - psSysData->pfnHighResTimerDestroy(hTimer); -} -#endif - -/***************************************************************************** - End of file (syscommon.h) -*****************************************************************************/ |