| /*************************************************************************/ /*! |
| @File |
| @Title RGX initialisation header file |
| @Copyright Copyright (c) Imagination Technologies Ltd. All Rights Reserved |
| @Description Header for the RGX initialisation |
| @License MIT |
| |
| 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. |
| |
| 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. |
| */ /**************************************************************************/ |
| |
| #if !defined(__RGXINIT_H__) |
| #define __RGXINIT_H__ |
| |
| #include "connection_server.h" |
| #include "pvrsrv_error.h" |
| #include "img_types.h" |
| #include "device.h" |
| #include "rgxdevice.h" |
| #include "rgx_bridge.h" |
| |
| |
| /*! |
| ******************************************************************************* |
| |
| @Function PVRSRVRGXInitDevPart2KM |
| |
| @Description |
| |
| Second part of server-side RGX initialisation |
| |
| @Input pvDeviceNode - device node |
| |
| @Return PVRSRV_ERROR |
| |
| ******************************************************************************/ |
| PVRSRV_ERROR PVRSRVRGXInitDevPart2KM (PVRSRV_DEVICE_NODE *psDeviceNode, |
| IMG_UINT32 ui32DeviceFlags, |
| IMG_UINT32 ui32HWPerfHostBufSizeKB, |
| IMG_UINT32 ui32HWPerfHostFilter, |
| RGX_ACTIVEPM_CONF eActivePMConf); |
| |
| PVRSRV_ERROR PVRSRVRGXInitAllocFWImgMemKM(PVRSRV_DEVICE_NODE *psDeviceNode, |
| IMG_DEVMEM_SIZE_T ui32FWCodeLen, |
| IMG_DEVMEM_SIZE_T ui32FWDataLen, |
| IMG_DEVMEM_SIZE_T uiFWCorememLen, |
| PMR **ppsFWCodePMR, |
| IMG_DEV_VIRTADDR *psFWCodeDevVAddrBase, |
| PMR **ppsFWDataPMR, |
| IMG_DEV_VIRTADDR *psFWDataDevVAddrBase, |
| PMR **ppsFWCorememPMR, |
| IMG_DEV_VIRTADDR *psFWCorememDevVAddrBase, |
| RGXFWIF_DEV_VIRTADDR *psFWCorememMetaVAddrBase); |
| |
| PVRSRV_ERROR PVRSRVRGXInitMipsWrapperRegistersKM(PVRSRV_DEVICE_NODE *psDeviceNode, |
| IMG_UINT32 ui32Remap1Config1Offset, |
| IMG_UINT32 ui32Remap1Config2Offset, |
| IMG_UINT32 ui32WrapperConfigOffset, |
| IMG_UINT32 ui32BootCodeOffset); |
| PVRSRV_ERROR PVRSRVRGXPdumpBootldrDataInitKM(PVRSRV_DEVICE_NODE *psDeviceNode, |
| IMG_UINT32 ui32BootConfOffset, |
| IMG_UINT32 ui32ExceptionVectorsBaseAddress); |
| |
| |
| /*! |
| ******************************************************************************* |
| |
| @Function PVRSRVRGXInitFirmwareKM |
| |
| @Description |
| |
| Server-side RGX firmware initialisation |
| |
| @Input pvDeviceNode - device node |
| |
| @Return PVRSRV_ERROR |
| |
| ******************************************************************************/ |
| PVRSRV_ERROR |
| PVRSRVRGXInitFirmwareKM(PVRSRV_DEVICE_NODE *psDeviceNode, |
| RGXFWIF_DEV_VIRTADDR *psRGXFwInit, |
| IMG_BOOL bEnableSignatureChecks, |
| IMG_UINT32 ui32SignatureChecksBufSize, |
| IMG_UINT32 ui32HWPerfFWBufSizeKB, |
| IMG_UINT64 ui64HWPerfFilter, |
| IMG_UINT32 ui32RGXFWAlignChecksArrLength, |
| IMG_UINT32 *pui32RGXFWAlignChecks, |
| IMG_UINT32 ui32ConfigFlags, |
| IMG_UINT32 ui32LogType, |
| IMG_UINT32 ui32FilterFlags, |
| IMG_UINT32 ui32JonesDisableMask, |
| IMG_UINT32 ui32HWRDebugDumpLimit, |
| RGXFWIF_COMPCHECKS_BVNC *psClientBVNC, |
| RGXFWIF_COMPCHECKS_BVNC *psFirmwareBVNC, |
| IMG_UINT32 ui32HWPerfCountersDataSize, |
| PMR **ppsHWPerfPMR, |
| RGX_RD_POWER_ISLAND_CONF eRGXRDPowerIslandingConf, |
| FW_PERF_CONF eFirmwarePerf, |
| IMG_UINT32 ui32ConfigFlagsExt); |
| |
| PVRSRV_ERROR PVRSRVRGXInitReleaseFWInitResourcesKM(PVRSRV_DEVICE_NODE *psDeviceNode, |
| PMR *psFWCodePMR, |
| PMR *psFWDataPMR, |
| PMR *psFWCorePMR, |
| PMR *psHWPerfPMR); |
| |
| /*! |
| ******************************************************************************* |
| |
| @Function PVRSRVRGXInitFinaliseFWImageKM |
| |
| @Description |
| |
| Perform final steps of FW code setup when necessary |
| |
| @Input psDeviceNode - Device node |
| |
| @Return PVRSRV_ERROR |
| |
| ******************************************************************************/ |
| |
| PVRSRV_ERROR |
| PVRSRVRGXInitFinaliseFWImageKM(PVRSRV_DEVICE_NODE *psDeviceNode); |
| |
| /*! |
| ******************************************************************************* |
| |
| @Function PVRSRVRGXInitHWPerfCountersKM |
| |
| @Description |
| |
| Initialisation of the performance counters |
| |
| @Input pvDeviceNode - device node |
| |
| @Return PVRSRV_ERROR |
| |
| ******************************************************************************/ |
| PVRSRV_ERROR PVRSRVRGXInitHWPerfCountersKM (PVRSRV_DEVICE_NODE *psDeviceNode); |
| |
| /*! |
| ******************************************************************************* |
| |
| @Function RGXRegisterDevice |
| |
| @Description |
| |
| Registers the device with the system |
| |
| @Input: psDeviceNode - device node |
| @Output: ppsDevInfo - device info |
| |
| @Return PVRSRV_ERROR : |
| |
| ******************************************************************************/ |
| PVRSRV_ERROR RGXRegisterDevice(PVRSRV_DEVICE_NODE *psDeviceNode, |
| PVRSRV_RGXDEV_INFO **ppsDevInfo); |
| |
| |
| /*! |
| ******************************************************************************* |
| |
| @Function DevDeInitRGX |
| |
| @Description |
| |
| Reset and deinitialise Chip |
| |
| @Input pvDeviceNode - device info. structure |
| |
| @Return PVRSRV_ERROR |
| |
| ******************************************************************************/ |
| PVRSRV_ERROR DevDeInitRGX(PVRSRV_DEVICE_NODE *psDeviceNode); |
| |
| |
| #if !defined(NO_HARDWARE) |
| |
| void RGX_WaitForInterruptsTimeout(PVRSRV_RGXDEV_INFO *psDevInfo); |
| |
| /*! |
| ******************************************************************************* |
| |
| @Function SORgxGpuUtilStatsRegister |
| |
| @Description SO Interface function called from the OS layer implementation. |
| Initialise data used to compute GPU utilisation statistics |
| for a particular user (identified by the handle passed as |
| argument). This function must be called only once for each |
| different user/handle. |
| |
| @Input phGpuUtilUser - Pointer to handle used to identify a user of |
| RGXGetGpuUtilStats |
| |
| @Return PVRSRV_ERROR |
| |
| ******************************************************************************/ |
| PVRSRV_ERROR SORgxGpuUtilStatsRegister(IMG_HANDLE *phGpuUtilUser); |
| |
| |
| /*! |
| ******************************************************************************* |
| |
| @Function SORgxGpuUtilStatsUnregister |
| |
| @Description SO Interface function called from the OS layer implementation. |
| Free data previously used to compute GPU utilisation statistics |
| for a particular user (identified by the handle passed as |
| argument). |
| |
| @Input hGpuUtilUser - Handle used to identify a user of |
| RGXGetGpuUtilStats |
| |
| @Return PVRSRV_ERROR |
| |
| ******************************************************************************/ |
| PVRSRV_ERROR SORgxGpuUtilStatsUnregister(IMG_HANDLE hGpuUtilUser); |
| #endif /* !defined(NO_HARDWARE) */ |
| |
| |
| /*! |
| ******************************************************************************* |
| |
| @Function PVRSRVGPUVIRTPopulateLMASubArenasKM |
| |
| @Description Populates the LMA arenas based on the min max values passed by |
| the client during initialization. GPU Virtualisation Validation |
| only. |
| |
| @Input pvDeviceNode : Pointer to a device info structure. |
| ui32NumElements : Total number of min / max values passed by |
| the client |
| pui32Elements : The array containing all the min / max values |
| passed by the client, all bundled together |
| |
| @Return PVRSRV_ERROR |
| |
| ******************************************************************************/ |
| PVRSRV_ERROR PVRSRVGPUVIRTPopulateLMASubArenasKM(PVRSRV_DEVICE_NODE * psDeviceNode, |
| IMG_UINT32 aui32OSidMin[GPUVIRT_VALIDATION_NUM_REGIONS][GPUVIRT_VALIDATION_NUM_OS], |
| IMG_UINT32 aui32OSidMax[GPUVIRT_VALIDATION_NUM_REGIONS][GPUVIRT_VALIDATION_NUM_OS], |
| IMG_BOOL bEnableTrustedDeviceAceConfig); |
| #endif /* __RGXINIT_H__ */ |