1
/**********************************************************************
3
* Copyright (C) Imagination Technologies Ltd. All rights reserved.
5
* This program is free software; you can redistribute it and/or modify it
6
* under the terms and conditions of the GNU General Public License,
7
* version 2, as published by the Free Software Foundation.
9
* This program is distributed in the hope it will be useful but, except
10
* as otherwise stated in writing, without any warranty; without even the
11
* implied warranty of merchantability or fitness for a particular purpose.
12
* See the GNU General Public License for more details.
14
* You should have received a copy of the GNU General Public License along with
15
* this program; if not, write to the Free Software Foundation, Inc.,
16
* 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
18
* The full GNU General Public License is included in this distribution in
19
* the file called "COPYING".
21
* Contact Information:
22
* Imagination Technologies Ltd. <gpl-support@imgtec.com>
23
* Home Park Estate, Kings Langley, Herts, WD4 8LZ, UK
25
******************************************************************************/
27
#if !defined (__SGXINFO_H__)
30
#include "sgxscript.h"
31
#include "servicesint.h"
33
#if !defined (SUPPORT_SID_INTERFACE)
34
#include "sgxapi_km.h"
36
#include "sgx_mkif_km.h"
39
#define SGX_MAX_DEV_DATA 24
40
#define SGX_MAX_INIT_MEM_HANDLES 18
43
typedef struct _SGX_BRIDGE_INFO_FOR_SRVINIT
45
IMG_DEV_PHYADDR sPDDevPAddr;
46
PVRSRV_HEAP_INFO asHeapInfo[PVRSRV_MAX_CLIENT_HEAPS];
47
} SGX_BRIDGE_INFO_FOR_SRVINIT;
50
typedef enum _SGXMKIF_CMD_TYPE_
53
SGXMKIF_CMD_TRANSFER = 1,
55
SGXMKIF_CMD_POWER = 3,
56
SGXMKIF_CMD_CONTEXTSUSPEND = 4,
57
SGXMKIF_CMD_CLEANUP = 5,
58
SGXMKIF_CMD_GETMISCINFO = 6,
59
SGXMKIF_CMD_PROCESS_QUEUES = 7,
60
SGXMKIF_CMD_DATABREAKPOINT = 8,
61
SGXMKIF_CMD_SETHWPERFSTATUS = 9,
62
SGXMKIF_CMD_FLUSHPDCACHE = 10,
65
SGXMKIF_CMD_FORCE_I32 = -1,
70
typedef struct _SGX_BRIDGE_INIT_INFO_
72
#if defined (SUPPORT_SID_INTERFACE)
73
IMG_SID hKernelCCBMemInfo;
74
IMG_SID hKernelCCBCtlMemInfo;
75
IMG_SID hKernelCCBEventKickerMemInfo;
76
IMG_SID hKernelSGXHostCtlMemInfo;
77
IMG_SID hKernelSGXTA3DCtlMemInfo;
78
IMG_SID hKernelSGXMiscMemInfo;
80
IMG_HANDLE hKernelCCBMemInfo;
81
IMG_HANDLE hKernelCCBCtlMemInfo;
82
IMG_HANDLE hKernelCCBEventKickerMemInfo;
83
IMG_HANDLE hKernelSGXHostCtlMemInfo;
84
IMG_HANDLE hKernelSGXTA3DCtlMemInfo;
85
IMG_HANDLE hKernelSGXMiscMemInfo;
88
IMG_UINT32 aui32HostKickAddr[SGXMKIF_CMD_MAX];
90
SGX_INIT_SCRIPTS sScripts;
92
IMG_UINT32 ui32ClientBuildOptions;
93
SGX_MISCINFO_STRUCT_SIZES sSGXStructSizes;
95
#if defined(SGX_SUPPORT_HWPROFILING)
96
#if defined (SUPPORT_SID_INTERFACE)
97
IMG_SID hKernelHWProfilingMemInfo;
99
IMG_HANDLE hKernelHWProfilingMemInfo;
102
#if defined(SUPPORT_SGX_HWPERF)
103
#if defined (SUPPORT_SID_INTERFACE)
104
IMG_SID hKernelHWPerfCBMemInfo;
106
IMG_HANDLE hKernelHWPerfCBMemInfo;
109
#if defined (SUPPORT_SID_INTERFACE)
110
IMG_SID hKernelTASigBufferMemInfo;
111
IMG_SID hKernel3DSigBufferMemInfo;
113
IMG_HANDLE hKernelTASigBufferMemInfo;
114
IMG_HANDLE hKernel3DSigBufferMemInfo;
117
#if defined(FIX_HW_BRN_29702)
118
#if defined (SUPPORT_SID_INTERFACE)
119
IMG_SID hKernelCFIMemInfo;
121
IMG_HANDLE hKernelCFIMemInfo;
124
#if defined(FIX_HW_BRN_29823)
125
#if defined (SUPPORT_SID_INTERFACE)
126
IMG_SID hKernelDummyTermStreamMemInfo;
128
IMG_HANDLE hKernelDummyTermStreamMemInfo;
132
#if defined(FIX_HW_BRN_31542)
133
#if defined (SUPPORT_SID_INTERFACE)
134
IMG_SID hKernelClearClipWAVDMStreamMemInfo;
135
IMG_SID hKernelClearClipWAIndexStreamMemInfo;
136
IMG_SID hKernelClearClipWAPDSMemInfo;
137
IMG_SID hKernelClearClipWAUSEMemInfo;
138
IMG_SID hKernelClearClipWAParamMemInfo;
139
IMG_SID hKernelClearClipWAPMPTMemInfo;
140
IMG_SID hKernelClearClipWATPCMemInfo;
141
IMG_SID hKernelClearClipWAPSGRgnHdrMemInfo;
143
IMG_HANDLE hKernelClearClipWAVDMStreamMemInfo;
144
IMG_HANDLE hKernelClearClipWAIndexStreamMemInfo;
145
IMG_HANDLE hKernelClearClipWAPDSMemInfo;
146
IMG_HANDLE hKernelClearClipWAUSEMemInfo;
147
IMG_HANDLE hKernelClearClipWAParamMemInfo;
148
IMG_HANDLE hKernelClearClipWAPMPTMemInfo;
149
IMG_HANDLE hKernelClearClipWATPCMemInfo;
150
IMG_HANDLE hKernelClearClipWAPSGRgnHdrMemInfo;
154
#if defined(SGX_FEATURE_VDM_CONTEXT_SWITCH) && defined(FIX_HW_BRN_31425)
155
IMG_HANDLE hKernelVDMSnapShotBufferMemInfo;
156
IMG_HANDLE hKernelVDMCtrlStreamBufferMemInfo;
158
#if defined(PVRSRV_USSE_EDM_STATUS_DEBUG)
159
#if defined (SUPPORT_SID_INTERFACE)
160
IMG_SID hKernelEDMStatusBufferMemInfo;
162
IMG_HANDLE hKernelEDMStatusBufferMemInfo;
165
#if defined(SGX_FEATURE_OVERLAPPED_SPM)
166
#if defined (SUPPORT_SID_INTERFACE)
167
IMG_SID hKernelTmpRgnHeaderMemInfo;
169
IMG_HANDLE hKernelTmpRgnHeaderMemInfo;
172
#if defined(SGX_FEATURE_SPM_MODE_0)
173
#if defined (SUPPORT_SID_INTERFACE)
174
IMG_SID hKernelTmpDPMStateMemInfo;
176
IMG_HANDLE hKernelTmpDPMStateMemInfo;
180
IMG_UINT32 ui32EDMTaskReg0;
181
IMG_UINT32 ui32EDMTaskReg1;
183
IMG_UINT32 ui32ClkGateCtl;
184
IMG_UINT32 ui32ClkGateCtl2;
185
IMG_UINT32 ui32ClkGateStatusReg;
186
IMG_UINT32 ui32ClkGateStatusMask;
187
#if defined(SGX_FEATURE_MP)
188
IMG_UINT32 ui32MasterClkGateStatusReg;
189
IMG_UINT32 ui32MasterClkGateStatusMask;
190
IMG_UINT32 ui32MasterClkGateStatus2Reg;
191
IMG_UINT32 ui32MasterClkGateStatus2Mask;
194
IMG_UINT32 ui32CacheControl;
196
IMG_UINT32 asInitDevData[SGX_MAX_DEV_DATA];
197
#if defined (SUPPORT_SID_INTERFACE)
198
IMG_SID asInitMemHandles[SGX_MAX_INIT_MEM_HANDLES];
200
IMG_HANDLE asInitMemHandles[SGX_MAX_INIT_MEM_HANDLES];
203
} SGX_BRIDGE_INIT_INFO;
206
typedef struct _SGX_DEVICE_SYNC_LIST_
208
PSGXMKIF_HWDEVICE_SYNC_LIST psHWDeviceSyncList;
210
#if defined (SUPPORT_SID_INTERFACE)
211
IMG_SID hKernelHWSyncListMemInfo;
213
IMG_HANDLE hKernelHWSyncListMemInfo;
215
PVRSRV_CLIENT_MEM_INFO *psHWDeviceSyncListClientMemInfo;
216
PVRSRV_CLIENT_MEM_INFO *psAccessResourceClientMemInfo;
218
volatile IMG_UINT32 *pui32Lock;
220
struct _SGX_DEVICE_SYNC_LIST_ *psNext;
223
IMG_UINT32 ui32NumSyncObjects;
224
#if defined (SUPPORT_SID_INTERFACE)
225
IMG_SID ahSyncHandles[1];
227
IMG_HANDLE ahSyncHandles[1];
229
} SGX_DEVICE_SYNC_LIST, *PSGX_DEVICE_SYNC_LIST;
232
typedef struct _SGX_INTERNEL_STATUS_UPDATE_
234
CTL_STATUS sCtlStatus;
235
#if defined (SUPPORT_SID_INTERFACE)
236
IMG_SID hKernelMemInfo;
238
IMG_HANDLE hKernelMemInfo;
240
} SGX_INTERNEL_STATUS_UPDATE;
243
typedef struct _SGX_CCB_KICK_
245
SGXMKIF_COMMAND sCommand;
246
#if defined (SUPPORT_SID_INTERFACE)
247
IMG_SID hCCBKernelMemInfo;
249
IMG_HANDLE hCCBKernelMemInfo;
252
IMG_UINT32 ui32NumDstSyncObjects;
253
#if defined (SUPPORT_SID_INTERFACE)
254
IMG_SID hKernelHWSyncListMemInfo;
256
IMG_HANDLE hKernelHWSyncListMemInfo;
260
#if defined (SUPPORT_SID_INTERFACE)
261
IMG_SID *pahDstSyncHandles;
263
IMG_HANDLE *pahDstSyncHandles;
266
IMG_UINT32 ui32NumTAStatusVals;
267
IMG_UINT32 ui32Num3DStatusVals;
269
#if defined(SUPPORT_SGX_NEW_STATUS_VALS)
270
SGX_INTERNEL_STATUS_UPDATE asTAStatusUpdate[SGX_MAX_TA_STATUS_VALS];
271
SGX_INTERNEL_STATUS_UPDATE as3DStatusUpdate[SGX_MAX_3D_STATUS_VALS];
273
#if defined (SUPPORT_SID_INTERFACE)
274
IMG_SID ahTAStatusSyncInfo[SGX_MAX_TA_STATUS_VALS];
275
IMG_SID ah3DStatusSyncInfo[SGX_MAX_3D_STATUS_VALS];
277
IMG_HANDLE ahTAStatusSyncInfo[SGX_MAX_TA_STATUS_VALS];
278
IMG_HANDLE ah3DStatusSyncInfo[SGX_MAX_3D_STATUS_VALS];
282
IMG_BOOL bFirstKickOrResume;
283
#if (defined(NO_HARDWARE) || defined(PDUMP))
284
IMG_BOOL bTerminateOrAbort;
286
IMG_BOOL bLastInScene;
289
IMG_UINT32 ui32CCBOffset;
291
#if defined(SUPPORT_SGX_GENERALISED_SYNCOBJECTS)
293
IMG_UINT32 ui32NumTASrcSyncs;
294
#if defined (SUPPORT_SID_INTERFACE)
295
IMG_SID ahTASrcKernelSyncInfo[SGX_MAX_TA_SRC_SYNCS];
297
IMG_HANDLE ahTASrcKernelSyncInfo[SGX_MAX_TA_SRC_SYNCS];
299
IMG_UINT32 ui32NumTADstSyncs;
300
#if defined (SUPPORT_SID_INTERFACE)
301
IMG_SID ahTADstKernelSyncInfo[SGX_MAX_TA_DST_SYNCS];
303
IMG_HANDLE ahTADstKernelSyncInfo[SGX_MAX_TA_DST_SYNCS];
305
IMG_UINT32 ui32Num3DSrcSyncs;
306
#if defined (SUPPORT_SID_INTERFACE)
307
IMG_SID ah3DSrcKernelSyncInfo[SGX_MAX_3D_SRC_SYNCS];
309
IMG_HANDLE ah3DSrcKernelSyncInfo[SGX_MAX_3D_SRC_SYNCS];
313
IMG_UINT32 ui32NumSrcSyncs;
314
#if defined (SUPPORT_SID_INTERFACE)
315
IMG_SID ahSrcKernelSyncInfo[SGX_MAX_SRC_SYNCS];
317
IMG_HANDLE ahSrcKernelSyncInfo[SGX_MAX_SRC_SYNCS];
322
IMG_BOOL bTADependency;
323
#if defined (SUPPORT_SID_INTERFACE)
324
IMG_SID hTA3DSyncInfo;
329
IMG_HANDLE hTA3DSyncInfo;
331
IMG_HANDLE hTASyncInfo;
332
IMG_HANDLE h3DSyncInfo;
335
IMG_UINT32 ui32CCBDumpWOff;
337
#if defined(NO_HARDWARE)
338
IMG_UINT32 ui32WriteOpsPendingVal;
340
IMG_HANDLE hDevMemContext;
344
#define SGX_KERNEL_USE_CODE_BASE_INDEX 15
347
typedef struct _SGX_CLIENT_INFO_
349
IMG_UINT32 ui32ProcessID;
351
PVRSRV_MISC_INFO sMiscInfo;
353
IMG_UINT32 asDevData[SGX_MAX_DEV_DATA];
357
typedef struct _SGX_INTERNAL_DEVINFO_
359
IMG_UINT32 ui32Flags;
360
#if defined (SUPPORT_SID_INTERFACE)
361
IMG_SID hHostCtlKernelMemInfoHandle;
363
IMG_HANDLE hHostCtlKernelMemInfoHandle;
365
IMG_BOOL bForcePTOff;
366
} SGX_INTERNAL_DEVINFO;
369
typedef struct _SGX_INTERNAL_DEVINFO_KM_
371
IMG_UINT32 ui32Flags;
372
IMG_HANDLE hHostCtlKernelMemInfoHandle;
373
IMG_BOOL bForcePTOff;
374
} SGX_INTERNAL_DEVINFO_KM;
377
#if defined(TRANSFER_QUEUE)
378
typedef struct _PVRSRV_TRANSFER_SGX_KICK_
380
#if defined (SUPPORT_SID_INTERFACE)
383
IMG_HANDLE hCCBMemInfo;
385
IMG_UINT32 ui32SharedCmdCCBOffset;
387
IMG_DEV_VIRTADDR sHWTransferContextDevVAddr;
389
#if defined (SUPPORT_SID_INTERFACE)
393
IMG_HANDLE hTASyncInfo;
394
IMG_HANDLE h3DSyncInfo;
397
IMG_UINT32 ui32NumSrcSync;
398
#if defined (SUPPORT_SID_INTERFACE)
399
IMG_SID ahSrcSyncInfo[SGX_MAX_TRANSFER_SYNC_OPS];
401
IMG_HANDLE ahSrcSyncInfo[SGX_MAX_TRANSFER_SYNC_OPS];
404
IMG_UINT32 ui32NumDstSync;
405
#if defined (SUPPORT_SID_INTERFACE)
406
IMG_SID ahDstSyncInfo[SGX_MAX_TRANSFER_SYNC_OPS];
408
IMG_HANDLE ahDstSyncInfo[SGX_MAX_TRANSFER_SYNC_OPS];
411
IMG_UINT32 ui32Flags;
413
IMG_UINT32 ui32PDumpFlags;
415
IMG_UINT32 ui32CCBDumpWOff;
417
IMG_HANDLE hDevMemContext;
418
} PVRSRV_TRANSFER_SGX_KICK, *PPVRSRV_TRANSFER_SGX_KICK;
420
#if defined(SGX_FEATURE_2D_HARDWARE)
421
typedef struct _PVRSRV_2D_SGX_KICK_
423
#if defined (SUPPORT_SID_INTERFACE)
426
IMG_HANDLE hCCBMemInfo;
428
IMG_UINT32 ui32SharedCmdCCBOffset;
430
IMG_DEV_VIRTADDR sHW2DContextDevVAddr;
432
IMG_UINT32 ui32NumSrcSync;
433
#if defined (SUPPORT_SID_INTERFACE)
434
IMG_SID ahSrcSyncInfo[SGX_MAX_2D_SRC_SYNC_OPS];
437
IMG_SID hDstSyncInfo;
445
IMG_HANDLE ahSrcSyncInfo[SGX_MAX_2D_SRC_SYNC_OPS];
448
IMG_HANDLE hDstSyncInfo;
451
IMG_HANDLE hTASyncInfo;
454
IMG_HANDLE h3DSyncInfo;
457
IMG_UINT32 ui32PDumpFlags;
459
IMG_UINT32 ui32CCBDumpWOff;
461
IMG_HANDLE hDevMemContext;
462
} PVRSRV_2D_SGX_KICK, *PPVRSRV_2D_SGX_KICK;