blob: eaf45eb3a8379e0100119f1b06c2ccb00d78684b [file] [log] [blame] [edit]
/**********************************************************************
*
* Copyright (C) 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.
* 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. <[email protected]>
* Home Park Estate, Kings Langley, Herts, WD4 8LZ, UK
*
******************************************************************************/
#ifndef __SGXAPI_KM_H__
#define __SGXAPI_KM_H__
#if defined (__cplusplus)
extern "C" {
#endif
#include "sgxdefs.h"
#if defined(__linux__) && !defined(USE_CODE)
#if defined(__KERNEL__)
#include <asm/unistd.h>
#else
#include <unistd.h>
#endif
#endif
/******************************************************************************
Some defines...
******************************************************************************/
/* SGX Heap IDs, note: not all heaps are available to clients */
#define SGX_UNDEFINED_HEAP_ID (~0LU)
#define SGX_GENERAL_HEAP_ID 0
#define SGX_TADATA_HEAP_ID 1
#define SGX_KERNEL_CODE_HEAP_ID 2
#define SGX_KERNEL_DATA_HEAP_ID 3
#define SGX_PIXELSHADER_HEAP_ID 4
#define SGX_VERTEXSHADER_HEAP_ID 5
#define SGX_PDSPIXEL_CODEDATA_HEAP_ID 6
#define SGX_PDSVERTEX_CODEDATA_HEAP_ID 7
#define SGX_SYNCINFO_HEAP_ID 8
#define SGX_SHARED_3DPARAMETERS_HEAP_ID 9
#define SGX_PERCONTEXT_3DPARAMETERS_HEAP_ID 10
#if defined(SUPPORT_SGX_GENERAL_MAPPING_HEAP)
#define SGX_GENERAL_MAPPING_HEAP_ID 11
#endif
#if defined(SGX_FEATURE_2D_HARDWARE)
#define SGX_2D_HEAP_ID 12
#else
#if defined(FIX_HW_BRN_26915)
#define SGX_CGBUFFER_HEAP_ID 13
#endif
#endif
#if defined(SUPPORT_MEMORY_TILING)
#define SGX_VPB_TILED_HEAP_ID 14
#endif
#define SGX_MAX_HEAP_ID 15
/*
* Keep SGX_3DPARAMETERS_HEAP_ID as TQ full custom
* shaders need it to select which heap to write
* their ISP controll stream to.
*/
#if (defined(SUPPORT_PERCONTEXT_PB) || defined(SUPPORT_HYBRID_PB))
#define SGX_3DPARAMETERS_HEAP_ID SGX_PERCONTEXT_3DPARAMETERS_HEAP_ID
#else
#define SGX_3DPARAMETERS_HEAP_ID SGX_SHARED_3DPARAMETERS_HEAP_ID
#endif
/* Define for number of bytes between consecutive code base registers */
#if defined(SGX543) || defined(SGX544) || defined(SGX554)
#define SGX_USE_CODE_SEGMENT_RANGE_BITS 23
#else
#define SGX_USE_CODE_SEGMENT_RANGE_BITS 19
#endif
#define SGX_MAX_TA_STATUS_VALS 32
#define SGX_MAX_3D_STATUS_VALS 4
#if defined(SUPPORT_SGX_GENERALISED_SYNCOBJECTS)
/* sync info structure array size */
#define SGX_MAX_TA_DST_SYNCS 1
#define SGX_MAX_TA_SRC_SYNCS 1
#define SGX_MAX_3D_SRC_SYNCS 4
/* note: there is implicitly 1 3D Dst Sync */
#else
/* sync info structure array size */
#define SGX_MAX_SRC_SYNCS_TA 8
#define SGX_MAX_DST_SYNCS_TA 1
/* note: there is implicitly 1 3D Dst Sync */
#define SGX_MAX_SRC_SYNCS_TQ 8
#define SGX_MAX_DST_SYNCS_TQ 1
#endif
#if defined(SGX_FEATURE_EXTENDED_PERF_COUNTERS)
#define PVRSRV_SGX_HWPERF_NUM_COUNTERS 8
#define PVRSRV_SGX_HWPERF_NUM_MISC_COUNTERS 11
#else
#define PVRSRV_SGX_HWPERF_NUM_COUNTERS 9
#define PVRSRV_SGX_HWPERF_NUM_MISC_COUNTERS 8
#endif /* SGX543 */
#define PVRSRV_SGX_HWPERF_INVALID 0x1
#define PVRSRV_SGX_HWPERF_TRANSFER 0x2
#define PVRSRV_SGX_HWPERF_TA 0x3
#define PVRSRV_SGX_HWPERF_3D 0x4
#define PVRSRV_SGX_HWPERF_2D 0x5
#define PVRSRV_SGX_HWPERF_POWER 0x6
#define PVRSRV_SGX_HWPERF_PERIODIC 0x7
#define PVRSRV_SGX_HWPERF_3DSPM 0x8
#define PVRSRV_SGX_HWPERF_MK_EVENT 0x101
#define PVRSRV_SGX_HWPERF_MK_TA 0x102
#define PVRSRV_SGX_HWPERF_MK_3D 0x103
#define PVRSRV_SGX_HWPERF_MK_2D 0x104
#define PVRSRV_SGX_HWPERF_MK_TRANSFER_DUMMY 0x105
#define PVRSRV_SGX_HWPERF_MK_TA_DUMMY 0x106
#define PVRSRV_SGX_HWPERF_MK_3D_DUMMY 0x107
#define PVRSRV_SGX_HWPERF_MK_2D_DUMMY 0x108
#define PVRSRV_SGX_HWPERF_MK_TA_LOCKUP 0x109
#define PVRSRV_SGX_HWPERF_MK_3D_LOCKUP 0x10A
#define PVRSRV_SGX_HWPERF_MK_2D_LOCKUP 0x10B
#define PVRSRV_SGX_HWPERF_TYPE_STARTEND_BIT 28
#define PVRSRV_SGX_HWPERF_TYPE_OP_MASK ((1UL << PVRSRV_SGX_HWPERF_TYPE_STARTEND_BIT) - 1)
#define PVRSRV_SGX_HWPERF_TYPE_OP_START (0UL << PVRSRV_SGX_HWPERF_TYPE_STARTEND_BIT)
#define PVRSRV_SGX_HWPERF_TYPE_OP_END (1Ul << PVRSRV_SGX_HWPERF_TYPE_STARTEND_BIT)
#define PVRSRV_SGX_HWPERF_TYPE_TRANSFER_START (PVRSRV_SGX_HWPERF_TRANSFER | PVRSRV_SGX_HWPERF_TYPE_OP_START)
#define PVRSRV_SGX_HWPERF_TYPE_TRANSFER_END (PVRSRV_SGX_HWPERF_TRANSFER | PVRSRV_SGX_HWPERF_TYPE_OP_END)
#define PVRSRV_SGX_HWPERF_TYPE_TA_START (PVRSRV_SGX_HWPERF_TA | PVRSRV_SGX_HWPERF_TYPE_OP_START)
#define PVRSRV_SGX_HWPERF_TYPE_TA_END (PVRSRV_SGX_HWPERF_TA | PVRSRV_SGX_HWPERF_TYPE_OP_END)
#define PVRSRV_SGX_HWPERF_TYPE_3D_START (PVRSRV_SGX_HWPERF_3D | PVRSRV_SGX_HWPERF_TYPE_OP_START)
#define PVRSRV_SGX_HWPERF_TYPE_3D_END (PVRSRV_SGX_HWPERF_3D | PVRSRV_SGX_HWPERF_TYPE_OP_END)
#define PVRSRV_SGX_HWPERF_TYPE_2D_START (PVRSRV_SGX_HWPERF_2D | PVRSRV_SGX_HWPERF_TYPE_OP_START)
#define PVRSRV_SGX_HWPERF_TYPE_2D_END (PVRSRV_SGX_HWPERF_2D | PVRSRV_SGX_HWPERF_TYPE_OP_END)
#define PVRSRV_SGX_HWPERF_TYPE_POWER_START (PVRSRV_SGX_HWPERF_POWER | PVRSRV_SGX_HWPERF_TYPE_OP_START)
#define PVRSRV_SGX_HWPERF_TYPE_POWER_END (PVRSRV_SGX_HWPERF_POWER | PVRSRV_SGX_HWPERF_TYPE_OP_END)
#define PVRSRV_SGX_HWPERF_TYPE_PERIODIC (PVRSRV_SGX_HWPERF_PERIODIC)
#define PVRSRV_SGX_HWPERF_TYPE_3DSPM_START (PVRSRV_SGX_HWPERF_3DSPM | PVRSRV_SGX_HWPERF_TYPE_OP_START)
#define PVRSRV_SGX_HWPERF_TYPE_3DSPM_END (PVRSRV_SGX_HWPERF_3DSPM | PVRSRV_SGX_HWPERF_TYPE_OP_END)
#define PVRSRV_SGX_HWPERF_TYPE_MK_TRANSFER_DUMMY_START (PVRSRV_SGX_HWPERF_MK_TRANSFER_DUMMY | PVRSRV_SGX_HWPERF_TYPE_OP_START)
#define PVRSRV_SGX_HWPERF_TYPE_MK_TRANSFER_DUMMY_END (PVRSRV_SGX_HWPERF_MK_TRANSFER_DUMMY | PVRSRV_SGX_HWPERF_TYPE_OP_END)
#define PVRSRV_SGX_HWPERF_TYPE_MK_TA_DUMMY_START (PVRSRV_SGX_HWPERF_MK_TA_DUMMY | PVRSRV_SGX_HWPERF_TYPE_OP_START)
#define PVRSRV_SGX_HWPERF_TYPE_MK_TA_DUMMY_END (PVRSRV_SGX_HWPERF_MK_TA_DUMMY | PVRSRV_SGX_HWPERF_TYPE_OP_END)
#define PVRSRV_SGX_HWPERF_TYPE_MK_3D_DUMMY_START (PVRSRV_SGX_HWPERF_MK_3D_DUMMY | PVRSRV_SGX_HWPERF_TYPE_OP_START)
#define PVRSRV_SGX_HWPERF_TYPE_MK_3D_DUMMY_END (PVRSRV_SGX_HWPERF_MK_3D_DUMMY | PVRSRV_SGX_HWPERF_TYPE_OP_END)
#define PVRSRV_SGX_HWPERF_TYPE_MK_2D_DUMMY_START (PVRSRV_SGX_HWPERF_MK_2D_DUMMY | PVRSRV_SGX_HWPERF_TYPE_OP_START)
#define PVRSRV_SGX_HWPERF_TYPE_MK_2D_DUMMY_END (PVRSRV_SGX_HWPERF_MK_2D_DUMMY | PVRSRV_SGX_HWPERF_TYPE_OP_END)
#define PVRSRV_SGX_HWPERF_TYPE_MK_TA_LOCKUP (PVRSRV_SGX_HWPERF_MK_TA_LOCKUP)
#define PVRSRV_SGX_HWPERF_TYPE_MK_3D_LOCKUP (PVRSRV_SGX_HWPERF_MK_3D_LOCKUP)
#define PVRSRV_SGX_HWPERF_TYPE_MK_2D_LOCKUP (PVRSRV_SGX_HWPERF_MK_2D_LOCKUP)
#define PVRSRV_SGX_HWPERF_TYPE_MK_EVENT_START (PVRSRV_SGX_HWPERF_MK_EVENT | PVRSRV_SGX_HWPERF_TYPE_OP_START)
#define PVRSRV_SGX_HWPERF_TYPE_MK_EVENT_END (PVRSRV_SGX_HWPERF_MK_EVENT | PVRSRV_SGX_HWPERF_TYPE_OP_END)
#define PVRSRV_SGX_HWPERF_TYPE_MK_TA_START (PVRSRV_SGX_HWPERF_MK_TA | PVRSRV_SGX_HWPERF_TYPE_OP_START)
#define PVRSRV_SGX_HWPERF_TYPE_MK_TA_END (PVRSRV_SGX_HWPERF_MK_TA | PVRSRV_SGX_HWPERF_TYPE_OP_END)
#define PVRSRV_SGX_HWPERF_TYPE_MK_3D_START (PVRSRV_SGX_HWPERF_MK_3D | PVRSRV_SGX_HWPERF_TYPE_OP_START)
#define PVRSRV_SGX_HWPERF_TYPE_MK_3D_END (PVRSRV_SGX_HWPERF_MK_3D | PVRSRV_SGX_HWPERF_TYPE_OP_END)
#define PVRSRV_SGX_HWPERF_TYPE_MK_2D_START (PVRSRV_SGX_HWPERF_MK_2D | PVRSRV_SGX_HWPERF_TYPE_OP_START)
#define PVRSRV_SGX_HWPERF_TYPE_MK_2D_END (PVRSRV_SGX_HWPERF_MK_2D | PVRSRV_SGX_HWPERF_TYPE_OP_END)
#define PVRSRV_SGX_HWPERF_STATUS_OFF (0x0)
#define PVRSRV_SGX_HWPERF_STATUS_RESET_COUNTERS (1UL << 0)
#define PVRSRV_SGX_HWPERF_STATUS_GRAPHICS_ON (1UL << 1)
#define PVRSRV_SGX_HWPERF_STATUS_PERIODIC_ON (1UL << 2)
#define PVRSRV_SGX_HWPERF_STATUS_MK_EXECUTION_ON (1UL << 3)
/*!
*****************************************************************************
* One entry in the HWPerf Circular Buffer.
*****************************************************************************/
typedef struct _PVRSRV_SGX_HWPERF_CB_ENTRY_
{
IMG_UINT32 ui32FrameNo;
IMG_UINT32 ui32PID;
IMG_UINT32 ui32RTData;
IMG_UINT32 ui32Type;
IMG_UINT32 ui32Ordinal;
IMG_UINT32 ui32Info;
IMG_UINT32 ui32Clocksx16;
/* NOTE: There should always be at least as many 3D cores as TA cores. */
IMG_UINT32 ui32Counters[SGX_FEATURE_MP_CORE_COUNT_3D][PVRSRV_SGX_HWPERF_NUM_COUNTERS];
IMG_UINT32 ui32MiscCounters[SGX_FEATURE_MP_CORE_COUNT_3D][PVRSRV_SGX_HWPERF_NUM_MISC_COUNTERS];
} PVRSRV_SGX_HWPERF_CB_ENTRY;
/*
Status values control structure
*/
typedef struct _CTL_STATUS_
{
IMG_DEV_VIRTADDR sStatusDevAddr;
IMG_UINT32 ui32StatusValue;
} CTL_STATUS;
/*!
List of possible requests/commands to SGXGetMiscInfo()
*/
typedef enum _SGX_MISC_INFO_REQUEST_
{
SGX_MISC_INFO_REQUEST_CLOCKSPEED = 0,
SGX_MISC_INFO_REQUEST_SGXREV,
SGX_MISC_INFO_REQUEST_DRIVER_SGXREV,
#if defined(SUPPORT_SGX_EDM_MEMORY_DEBUG)
SGX_MISC_INFO_REQUEST_MEMREAD,
SGX_MISC_INFO_REQUEST_MEMCOPY,
#endif /* SUPPORT_SGX_EDM_MEMORY_DEBUG */
SGX_MISC_INFO_REQUEST_SET_HWPERF_STATUS,
#if defined(SGX_FEATURE_DATA_BREAKPOINTS)
SGX_MISC_INFO_REQUEST_SET_BREAKPOINT,
SGX_MISC_INFO_REQUEST_POLL_BREAKPOINT,
SGX_MISC_INFO_REQUEST_RESUME_BREAKPOINT,
#endif /* SGX_FEATURE_DATA_BREAKPOINTS */
SGX_MISC_INFO_DUMP_DEBUG_INFO,
SGX_MISC_INFO_PANIC,
SGX_MISC_INFO_REQUEST_SPM,
SGX_MISC_INFO_REQUEST_ACTIVEPOWER,
SGX_MISC_INFO_REQUEST_LOCKUPS,
SGX_MISC_INFO_REQUEST_FORCE_I16 = 0x7fff
} SGX_MISC_INFO_REQUEST;
/******************************************************************************
* Struct for passing SGX core rev/features from ukernel to driver.
* This is accessed from the kernel part of the driver and microkernel; it is
* only accessed in user space during buffer allocation in srvinit.
******************************************************************************/
typedef struct _PVRSRV_SGX_MISCINFO_FEATURES
{
IMG_UINT32 ui32CoreRev; /*!< SGX Core revision from HW register */
IMG_UINT32 ui32CoreID; /*!< SGX Core ID from HW register */
IMG_UINT32 ui32DDKVersion; /*!< software DDK version */
IMG_UINT32 ui32DDKBuild; /*!< software DDK build no. */
IMG_UINT32 ui32CoreIdSW; /*!< software core version (ID), e.g. SGX535, SGX540 */
IMG_UINT32 ui32CoreRevSW; /*!< software core revision */
IMG_UINT32 ui32BuildOptions; /*!< build options bit-field */
#if defined(SUPPORT_SGX_EDM_MEMORY_DEBUG)
IMG_UINT32 ui32DeviceMemValue; /*!< device mem value read from ukernel */
#endif
#if defined(PVRSRV_USSE_EDM_STATUS_DEBUG)
IMG_DEV_VIRTADDR sDevVAEDMStatusBuffer; /*!< DevVAddr of the EDM status buffer */
IMG_PVOID pvEDMStatusBuffer; /*!< CPUVAddr of the EDM status buffer */
#endif
} PVRSRV_SGX_MISCINFO_FEATURES;
/******************************************************************************
* Struct for getting lock-up stats from the kernel driver
******************************************************************************/
typedef struct _PVRSRV_SGX_MISCINFO_LOCKUPS
{
IMG_UINT32 ui32HostDetectedLockups; /*!< Host timer detected lockups */
IMG_UINT32 ui32uKernelDetectedLockups; /*!< Microkernel detected lockups */
} PVRSRV_SGX_MISCINFO_LOCKUPS;
/******************************************************************************
* Struct for getting lock-up stats from the kernel driver
******************************************************************************/
typedef struct _PVRSRV_SGX_MISCINFO_ACTIVEPOWER
{
IMG_UINT32 ui32NumActivePowerEvents; /*!< active power events */
} PVRSRV_SGX_MISCINFO_ACTIVEPOWER;
/******************************************************************************
* Struct for getting SPM stats fro the kernel driver
******************************************************************************/
typedef struct _PVRSRV_SGX_MISCINFO_SPM
{
IMG_HANDLE hRTDataSet; /*!< render target data set handle returned from SGXAddRenderTarget */
IMG_UINT32 ui32NumOutOfMemSignals; /*!< Number of Out of Mem Signals */
IMG_UINT32 ui32NumSPMRenders; /*!< Number of SPM renders */
} PVRSRV_SGX_MISCINFO_SPM;
#if defined(SGX_FEATURE_DATA_BREAKPOINTS)
/*!
******************************************************************************
* Structure for SGX break points control
*****************************************************************************/
typedef struct _SGX_BREAKPOINT_INFO
{
/* set/clear BP boolean */
IMG_BOOL bBPEnable;
/* Index of BP to set */
IMG_UINT32 ui32BPIndex;
/* On which DataMaster(s) should the breakpoint fire? */
IMG_UINT32 ui32DataMasterMask;
/* DevVAddr of BP to set */
IMG_DEV_VIRTADDR sBPDevVAddr, sBPDevVAddrEnd;
/* Whether or not the desired breakpoint will be trapped */
IMG_BOOL bTrapped;
/* Will the requested breakpoint fire for reads? */
IMG_BOOL bRead;
/* Will the requested breakpoint fire for writes? */
IMG_BOOL bWrite;
/* Has a breakpoint been trapped? */
IMG_BOOL bTrappedBP;
/* Extra information recorded about a trapped breakpoint */
IMG_UINT32 ui32CoreNum;
IMG_DEV_VIRTADDR sTrappedBPDevVAddr;
IMG_UINT32 ui32TrappedBPBurstLength;
IMG_BOOL bTrappedBPRead;
IMG_UINT32 ui32TrappedBPDataMaster;
IMG_UINT32 ui32TrappedBPTag;
} SGX_BREAKPOINT_INFO;
#endif /* SGX_FEATURE_DATA_BREAKPOINTS */
/*!
******************************************************************************
* Structure for setting the hardware performance status
*****************************************************************************/
typedef struct _PVRSRV_SGX_MISCINFO_SET_HWPERF_STATUS
{
/* See PVRSRV_SGX_HWPERF_STATUS_* */
IMG_UINT32 ui32NewHWPerfStatus;
#if defined(SGX_FEATURE_EXTENDED_PERF_COUNTERS)
/* Specifies the HW's active group selectors */
IMG_UINT32 aui32PerfGroup[PVRSRV_SGX_HWPERF_NUM_COUNTERS];
/* Specifies the HW's active bit selectors */
IMG_UINT32 aui32PerfBit[PVRSRV_SGX_HWPERF_NUM_COUNTERS];
#else
/* Specifies the HW's active group */
IMG_UINT32 ui32PerfGroup;
#endif /* SGX_FEATURE_EXTENDED_PERF_COUNTERS */
} PVRSRV_SGX_MISCINFO_SET_HWPERF_STATUS;
/*!
******************************************************************************
* Structure for misc SGX commands in services
*****************************************************************************/
typedef struct _SGX_MISC_INFO_
{
SGX_MISC_INFO_REQUEST eRequest; /*!< Command request to SGXGetMiscInfo() */
IMG_UINT32 ui32Padding;
#if defined(SUPPORT_SGX_EDM_MEMORY_DEBUG)
IMG_DEV_VIRTADDR sDevVAddrSrc; /*!< dev virtual addr for mem read */
IMG_DEV_VIRTADDR sDevVAddrDest; /*!< dev virtual addr for mem write */
IMG_HANDLE hDevMemContext; /*!< device memory context for mem debug */
#endif
union
{
IMG_UINT32 reserved; /*!< Unused: ensures valid code in the case everything else is compiled out */
PVRSRV_SGX_MISCINFO_FEATURES sSGXFeatures;
IMG_UINT32 ui32SGXClockSpeed;
PVRSRV_SGX_MISCINFO_ACTIVEPOWER sActivePower;
PVRSRV_SGX_MISCINFO_LOCKUPS sLockups;
PVRSRV_SGX_MISCINFO_SPM sSPM;
#if defined(SGX_FEATURE_DATA_BREAKPOINTS)
SGX_BREAKPOINT_INFO sSGXBreakpointInfo;
#endif
PVRSRV_SGX_MISCINFO_SET_HWPERF_STATUS sSetHWPerfStatus;
} uData;
} SGX_MISC_INFO;
#if defined(SGX_FEATURE_2D_HARDWARE)
/*
* The largest number of source sync objects that can be associated with a blit
* command. Allows for src, pattern, and mask
*/
#define PVRSRV_MAX_BLT_SRC_SYNCS 3
#endif
#define SGX_KICKTA_DUMPBITMAP_MAX_NAME_LENGTH 256
/*
Structure for dumping bitmaps
*/
typedef struct _SGX_KICKTA_DUMPBITMAP_
{
IMG_DEV_VIRTADDR sDevBaseAddr;
IMG_UINT32 ui32Flags;
IMG_UINT32 ui32Width;
IMG_UINT32 ui32Height;
IMG_UINT32 ui32Stride;
IMG_UINT32 ui32PDUMPFormat;
IMG_UINT32 ui32BytesPP;
IMG_CHAR pszName[SGX_KICKTA_DUMPBITMAP_MAX_NAME_LENGTH];
} SGX_KICKTA_DUMPBITMAP, *PSGX_KICKTA_DUMPBITMAP;
#define PVRSRV_SGX_PDUMP_CONTEXT_MAX_BITMAP_ARRAY_SIZE (16)
/*!
******************************************************************************
* Data required only when dumping parameters
*****************************************************************************/
typedef struct _PVRSRV_SGX_PDUMP_CONTEXT_
{
/* cache control word for micro kernel cache flush/invalidates */
IMG_UINT32 ui32CacheControl;
} PVRSRV_SGX_PDUMP_CONTEXT;
#if !defined (SUPPORT_SID_INTERFACE)
typedef struct _SGX_KICKTA_DUMP_ROFF_
{
IMG_HANDLE hKernelMemInfo; /*< Buffer handle */
IMG_UINT32 uiAllocIndex; /*< Alloc index for LDDM */
IMG_UINT32 ui32Offset; /*< Byte offset to value to dump */
IMG_UINT32 ui32Value; /*< Actual value to dump */
IMG_PCHAR pszName; /*< Name of buffer */
} SGX_KICKTA_DUMP_ROFF, *PSGX_KICKTA_DUMP_ROFF;
#endif
#if defined (SUPPORT_SID_INTERFACE)
typedef struct _SGX_KICKTA_DUMP_BUFFER_KM_
#else
typedef struct _SGX_KICKTA_DUMP_BUFFER_
#endif
{
IMG_UINT32 ui32SpaceUsed;
IMG_UINT32 ui32Start; /*< Byte offset of start to dump */
IMG_UINT32 ui32End; /*< Byte offset of end of dump (non-inclusive) */
IMG_UINT32 ui32BufferSize; /*< Size of buffer */
IMG_UINT32 ui32BackEndLength; /*< Size of back end portion, if End < Start */
IMG_UINT32 uiAllocIndex;
IMG_HANDLE hKernelMemInfo; /*< MemInfo handle for the circular buffer */
IMG_PVOID pvLinAddr;
#if defined(SUPPORT_SGX_NEW_STATUS_VALS)
IMG_HANDLE hCtrlKernelMemInfo; /*< MemInfo handle for the control structure of the
circular buffer */
IMG_DEV_VIRTADDR sCtrlDevVAddr; /*< Device virtual address of the memory in the
control structure to be checked */
#endif
IMG_PCHAR pszName; /*< Name of buffer */
#if defined (SUPPORT_SID_INTERFACE)
} SGX_KICKTA_DUMP_BUFFER_KM, *PSGX_KICKTA_DUMP_BUFFER_KM;
#else
} SGX_KICKTA_DUMP_BUFFER, *PSGX_KICKTA_DUMP_BUFFER;
#endif
#if !defined (SUPPORT_SID_INTERFACE)
#ifdef PDUMP
/*
PDUMP version of above kick structure
*/
typedef struct _SGX_KICKTA_PDUMP_
{
// Bitmaps to dump
PSGX_KICKTA_DUMPBITMAP psPDumpBitmapArray;
IMG_UINT32 ui32PDumpBitmapSize;
// Misc buffers to dump (e.g. TA, PDS etc..)
PSGX_KICKTA_DUMP_BUFFER psBufferArray;
IMG_UINT32 ui32BufferArraySize;
// Roffs to dump
PSGX_KICKTA_DUMP_ROFF psROffArray;
IMG_UINT32 ui32ROffArraySize;
} SGX_KICKTA_PDUMP, *PSGX_KICKTA_PDUMP;
#endif /* PDUMP */
#endif /* #if !defined (SUPPORT_SID_INTERFACE) */
#if defined(TRANSFER_QUEUE)
#if defined(SGX_FEATURE_2D_HARDWARE)
/* Maximum size of ctrl stream for 2d blit command (in 32 bit words) */
#define SGX_MAX_2D_BLIT_CMD_SIZE 26
#define SGX_MAX_2D_SRC_SYNC_OPS 3
#endif
#define SGX_MAX_TRANSFER_STATUS_VALS 2
#define SGX_MAX_TRANSFER_SYNC_OPS 5
#endif
#if defined (__cplusplus)
}
#endif
#endif /* __SGXAPI_KM_H__ */
/******************************************************************************
End of file (sgxapi_km.h)
******************************************************************************/