diff options
88 files changed, 15497 insertions, 5486 deletions
diff --git a/drivers/gpu/pvr/Makefile b/drivers/gpu/pvr/Makefile index 0dc058d364d..d537d081489 100644 --- a/drivers/gpu/pvr/Makefile +++ b/drivers/gpu/pvr/Makefile | |||
@@ -26,8 +26,12 @@ ccflags-y = -DLINUX -D__linux__ -Idrivers/gpu/pvr \ | |||
26 | -DPVR_LINUX_MISR_USING_PRIVATE_WORKQUEUE \ | 26 | -DPVR_LINUX_MISR_USING_PRIVATE_WORKQUEUE \ |
27 | -DSYS_CUSTOM_POWERLOCK_WRAP \ | 27 | -DSYS_CUSTOM_POWERLOCK_WRAP \ |
28 | -DSUPPORT_SGX_NEW_STATUS_VALS \ | 28 | -DSUPPORT_SGX_NEW_STATUS_VALS \ |
29 | -DSYS_OMAP3430_PIN_MEMORY_BUS_CLOCK \ | 29 | -DSYS_OMAP3430_PIN_MEMORY_BUS_CLOCK \ |
30 | -DSGX_EARLYSUSPEND \ | 30 | -DSGX_EARLYSUSPEND \ |
31 | -DSUPPORT_DBGDRV_EVENT_OBJECTS \ | ||
32 | -DPVR_NO_OMAP_TIMER \ | ||
33 | -DSUPPORT_DYNAMIC_GTF_TIMING \ | ||
34 | -DSUPPORT_SGX_LOW_LATENCY_SCHEDULING \ | ||
31 | -DPVRSRV_MODNAME="\"pvrsrvkm"\" | 35 | -DPVRSRV_MODNAME="\"pvrsrvkm"\" |
32 | 36 | ||
33 | ccflags-$(CONFIG_SGX540) += -Idrivers/gpu/pvr/omap4 -Idrivers/gpu/pvr/sgx \ | 37 | ccflags-$(CONFIG_SGX540) += -Idrivers/gpu/pvr/omap4 -Idrivers/gpu/pvr/sgx \ |
@@ -48,8 +52,7 @@ ccflags-$(CONFIG_SGX_530_BUILD_RELEASE) += \ | |||
48 | -DPVR_BUILD_TYPE="\"release\"" \ | 52 | -DPVR_BUILD_TYPE="\"release\"" \ |
49 | -DRELEASE \ | 53 | -DRELEASE \ |
50 | -DSUPPORT_ACTIVE_POWER_MANAGEMENT \ | 54 | -DSUPPORT_ACTIVE_POWER_MANAGEMENT \ |
51 | -DSUPPORT_HW_RECOVERY \ | 55 | -DSUPPORT_HW_RECOVERY |
52 | -DSUPPORT_SGX_LOW_LATENCY_SCHEDULING | ||
53 | 56 | ||
54 | ccflags-$(CONFIG_SGX_530_BUILD_DEBUG) += \ | 57 | ccflags-$(CONFIG_SGX_530_BUILD_DEBUG) += \ |
55 | -DPVR_BUILD_TYPE="\"debug\"" -DDEBUG \ | 58 | -DPVR_BUILD_TYPE="\"debug\"" -DDEBUG \ |
@@ -65,8 +68,7 @@ ccflags-$(CONFIG_SGX_540_BUILD_RELEASE) += \ | |||
65 | -DPVR_BUILD_TYPE="\"release\"" \ | 68 | -DPVR_BUILD_TYPE="\"release\"" \ |
66 | -DRELEASE \ | 69 | -DRELEASE \ |
67 | -DSUPPORT_ACTIVE_POWER_MANAGEMENT \ | 70 | -DSUPPORT_ACTIVE_POWER_MANAGEMENT \ |
68 | -DPVR_NO_FULL_CACHE_OPS \ | 71 | -DPVR_NO_FULL_CACHE_OPS |
69 | -DSUPPORT_SGX_LOW_LATENCY_SCHEDULING | ||
70 | 72 | ||
71 | ccflags-$(CONFIG_SGX_540_BUILD_DEBUG) += \ | 73 | ccflags-$(CONFIG_SGX_540_BUILD_DEBUG) += \ |
72 | -DPVR_BUILD_TYPE="\"debug\"" -DDEBUG \ | 74 | -DPVR_BUILD_TYPE="\"debug\"" -DDEBUG \ |
diff --git a/drivers/gpu/pvr/bridged_pvr_bridge.c b/drivers/gpu/pvr/bridged_pvr_bridge.c index f0dde100218..b06a7a394a6 100644 --- a/drivers/gpu/pvr/bridged_pvr_bridge.c +++ b/drivers/gpu/pvr/bridged_pvr_bridge.c | |||
@@ -1,26 +1,26 @@ | |||
1 | /********************************************************************** | 1 | /********************************************************************** |
2 | * | 2 | * |
3 | * Copyright(c) 2008 Imagination Technologies Ltd. All rights reserved. | 3 | * Copyright(c) 2008 Imagination Technologies Ltd. All rights reserved. |
4 | * | 4 | * |
5 | * This program is free software; you can redistribute it and/or modify it | 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, | 6 | * under the terms and conditions of the GNU General Public License, |
7 | * version 2, as published by the Free Software Foundation. | 7 | * version 2, as published by the Free Software Foundation. |
8 | * | 8 | * |
9 | * This program is distributed in the hope it will be useful but, except | 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 | 10 | * as otherwise stated in writing, without any warranty; without even the |
11 | * implied warranty of merchantability or fitness for a particular purpose. | 11 | * implied warranty of merchantability or fitness for a particular purpose. |
12 | * See the GNU General Public License for more details. | 12 | * See the GNU General Public License for more details. |
13 | * | 13 | * |
14 | * You should have received a copy of the GNU General Public License along with | 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., | 15 | * this program; if not, write to the Free Software Foundation, Inc., |
16 | * 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA. | 16 | * 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA. |
17 | * | 17 | * |
18 | * The full GNU General Public License is included in this distribution in | 18 | * The full GNU General Public License is included in this distribution in |
19 | * the file called "COPYING". | 19 | * the file called "COPYING". |
20 | * | 20 | * |
21 | * Contact Information: | 21 | * Contact Information: |
22 | * Imagination Technologies Ltd. <gpl-support@imgtec.com> | 22 | * Imagination Technologies Ltd. <gpl-support@imgtec.com> |
23 | * Home Park Estate, Kings Langley, Herts, WD4 8LZ, UK | 23 | * Home Park Estate, Kings Langley, Herts, WD4 8LZ, UK |
24 | * | 24 | * |
25 | ******************************************************************************/ | 25 | ******************************************************************************/ |
26 | 26 | ||
@@ -76,7 +76,7 @@ PVRSRV_BRIDGE_DISPATCH_TABLE_ENTRY g_BridgeDispatchTable[BRIDGE_DISPATCH_TABLE_E | |||
76 | PVRSRV_BRIDGE_GLOBAL_STATS g_BridgeGlobalStats; | 76 | PVRSRV_BRIDGE_GLOBAL_STATS g_BridgeGlobalStats; |
77 | #endif | 77 | #endif |
78 | 78 | ||
79 | #if defined(PVR_SECURE_HANDLES) | 79 | #if defined(PVR_SECURE_HANDLES) || defined (SUPPORT_SID_INTERFACE) |
80 | static IMG_BOOL abSharedDeviceMemHeap[PVRSRV_MAX_CLIENT_HEAPS]; | 80 | static IMG_BOOL abSharedDeviceMemHeap[PVRSRV_MAX_CLIENT_HEAPS]; |
81 | static IMG_BOOL *pbSharedDeviceMemHeap = abSharedDeviceMemHeap; | 81 | static IMG_BOOL *pbSharedDeviceMemHeap = abSharedDeviceMemHeap; |
82 | #else | 82 | #else |
@@ -87,1500 +87,1972 @@ static IMG_BOOL *pbSharedDeviceMemHeap = (IMG_BOOL*)IMG_NULL; | |||
87 | #if defined(DEBUG_BRIDGE_KM) | 87 | #if defined(DEBUG_BRIDGE_KM) |
88 | PVRSRV_ERROR | 88 | PVRSRV_ERROR |
89 | CopyFromUserWrapper(PVRSRV_PER_PROCESS_DATA *pProcData, | 89 | CopyFromUserWrapper(PVRSRV_PER_PROCESS_DATA *pProcData, |
90 | IMG_UINT32 ui32BridgeID, | 90 | IMG_UINT32 ui32BridgeID, |
91 | IMG_VOID *pvDest, | 91 | IMG_VOID *pvDest, |
92 | IMG_VOID *pvSrc, | 92 | IMG_VOID *pvSrc, |
93 | IMG_UINT32 ui32Size) | 93 | IMG_UINT32 ui32Size) |
94 | { | 94 | { |
95 | g_BridgeDispatchTable[ui32BridgeID].ui32CopyFromUserTotalBytes+=ui32Size; | 95 | g_BridgeDispatchTable[ui32BridgeID].ui32CopyFromUserTotalBytes+=ui32Size; |
96 | g_BridgeGlobalStats.ui32TotalCopyFromUserBytes+=ui32Size; | 96 | g_BridgeGlobalStats.ui32TotalCopyFromUserBytes+=ui32Size; |
97 | return OSCopyFromUser(pProcData, pvDest, pvSrc, ui32Size); | 97 | return OSCopyFromUser(pProcData, pvDest, pvSrc, ui32Size); |
98 | } | 98 | } |
99 | PVRSRV_ERROR | 99 | PVRSRV_ERROR |
100 | CopyToUserWrapper(PVRSRV_PER_PROCESS_DATA *pProcData, | 100 | CopyToUserWrapper(PVRSRV_PER_PROCESS_DATA *pProcData, |
101 | IMG_UINT32 ui32BridgeID, | 101 | IMG_UINT32 ui32BridgeID, |
102 | IMG_VOID *pvDest, | 102 | IMG_VOID *pvDest, |
103 | IMG_VOID *pvSrc, | 103 | IMG_VOID *pvSrc, |
104 | IMG_UINT32 ui32Size) | 104 | IMG_UINT32 ui32Size) |
105 | { | 105 | { |
106 | g_BridgeDispatchTable[ui32BridgeID].ui32CopyToUserTotalBytes+=ui32Size; | 106 | g_BridgeDispatchTable[ui32BridgeID].ui32CopyToUserTotalBytes+=ui32Size; |
107 | g_BridgeGlobalStats.ui32TotalCopyToUserBytes+=ui32Size; | 107 | g_BridgeGlobalStats.ui32TotalCopyToUserBytes+=ui32Size; |
108 | return OSCopyToUser(pProcData, pvDest, pvSrc, ui32Size); | 108 | return OSCopyToUser(pProcData, pvDest, pvSrc, ui32Size); |
109 | } | 109 | } |
110 | #endif | 110 | #endif |
111 | 111 | ||
112 | 112 | ||
113 | static IMG_INT | 113 | static IMG_INT |
114 | PVRSRVEnumerateDevicesBW(IMG_UINT32 ui32BridgeID, | 114 | PVRSRVEnumerateDevicesBW(IMG_UINT32 ui32BridgeID, |
115 | IMG_VOID *psBridgeIn, | 115 | IMG_VOID *psBridgeIn, |
116 | PVRSRV_BRIDGE_OUT_ENUMDEVICE *psEnumDeviceOUT, | 116 | PVRSRV_BRIDGE_OUT_ENUMDEVICE *psEnumDeviceOUT, |
117 | PVRSRV_PER_PROCESS_DATA *psPerProc) | 117 | PVRSRV_PER_PROCESS_DATA *psPerProc) |
118 | { | 118 | { |
119 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_ENUM_DEVICES); | 119 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_ENUM_DEVICES); |
120 | 120 | ||
121 | PVR_UNREFERENCED_PARAMETER(psPerProc); | 121 | PVR_UNREFERENCED_PARAMETER(psPerProc); |
122 | PVR_UNREFERENCED_PARAMETER(psBridgeIn); | 122 | PVR_UNREFERENCED_PARAMETER(psBridgeIn); |
123 | 123 | ||
124 | psEnumDeviceOUT->eError = | 124 | psEnumDeviceOUT->eError = |
125 | PVRSRVEnumerateDevicesKM(&psEnumDeviceOUT->ui32NumDevices, | 125 | PVRSRVEnumerateDevicesKM(&psEnumDeviceOUT->ui32NumDevices, |
126 | psEnumDeviceOUT->asDeviceIdentifier); | 126 | psEnumDeviceOUT->asDeviceIdentifier); |
127 | 127 | ||
128 | return 0; | 128 | return 0; |
129 | } | 129 | } |
130 | 130 | ||
131 | static IMG_INT | 131 | static IMG_INT |
132 | PVRSRVAcquireDeviceDataBW(IMG_UINT32 ui32BridgeID, | 132 | PVRSRVAcquireDeviceDataBW(IMG_UINT32 ui32BridgeID, |
133 | PVRSRV_BRIDGE_IN_ACQUIRE_DEVICEINFO *psAcquireDevInfoIN, | 133 | PVRSRV_BRIDGE_IN_ACQUIRE_DEVICEINFO *psAcquireDevInfoIN, |
134 | PVRSRV_BRIDGE_OUT_ACQUIRE_DEVICEINFO *psAcquireDevInfoOUT, | 134 | PVRSRV_BRIDGE_OUT_ACQUIRE_DEVICEINFO *psAcquireDevInfoOUT, |
135 | PVRSRV_PER_PROCESS_DATA *psPerProc) | 135 | PVRSRV_PER_PROCESS_DATA *psPerProc) |
136 | { | 136 | { |
137 | IMG_HANDLE hDevCookieInt; | 137 | IMG_HANDLE hDevCookieInt; |
138 | 138 | ||
139 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_ACQUIRE_DEVICEINFO); | 139 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_ACQUIRE_DEVICEINFO); |
140 | |||
141 | psAcquireDevInfoOUT->eError = | ||
142 | PVRSRVAcquireDeviceDataKM(psAcquireDevInfoIN->uiDevIndex, | ||
143 | psAcquireDevInfoIN->eDeviceType, | ||
144 | &hDevCookieInt); | ||
145 | if(psAcquireDevInfoOUT->eError != PVRSRV_OK) | ||
146 | { | ||
147 | return 0; | ||
148 | } | ||
140 | 149 | ||
141 | psAcquireDevInfoOUT->eError = | ||
142 | PVRSRVAcquireDeviceDataKM(psAcquireDevInfoIN->uiDevIndex, | ||
143 | psAcquireDevInfoIN->eDeviceType, | ||
144 | &hDevCookieInt); | ||
145 | if(psAcquireDevInfoOUT->eError != PVRSRV_OK) | ||
146 | { | ||
147 | return 0; | ||
148 | } | ||
149 | 150 | ||
150 | psAcquireDevInfoOUT->eError = | 151 | psAcquireDevInfoOUT->eError = |
151 | PVRSRVAllocHandle(psPerProc->psHandleBase, | 152 | PVRSRVAllocHandle(psPerProc->psHandleBase, |
152 | &psAcquireDevInfoOUT->hDevCookie, | 153 | &psAcquireDevInfoOUT->hDevCookie, |
153 | hDevCookieInt, | 154 | hDevCookieInt, |
154 | PVRSRV_HANDLE_TYPE_DEV_NODE, | 155 | PVRSRV_HANDLE_TYPE_DEV_NODE, |
155 | PVRSRV_HANDLE_ALLOC_FLAG_SHARED); | 156 | PVRSRV_HANDLE_ALLOC_FLAG_SHARED); |
156 | 157 | ||
157 | return 0; | 158 | return 0; |
158 | } | 159 | } |
159 | 160 | ||
160 | 161 | ||
161 | static IMG_INT | 162 | static IMG_INT |
162 | PVRSRVCreateDeviceMemContextBW(IMG_UINT32 ui32BridgeID, | 163 | PVRSRVCreateDeviceMemContextBW(IMG_UINT32 ui32BridgeID, |
163 | PVRSRV_BRIDGE_IN_CREATE_DEVMEMCONTEXT *psCreateDevMemContextIN, | 164 | PVRSRV_BRIDGE_IN_CREATE_DEVMEMCONTEXT *psCreateDevMemContextIN, |
164 | PVRSRV_BRIDGE_OUT_CREATE_DEVMEMCONTEXT *psCreateDevMemContextOUT, | 165 | PVRSRV_BRIDGE_OUT_CREATE_DEVMEMCONTEXT *psCreateDevMemContextOUT, |
165 | PVRSRV_PER_PROCESS_DATA *psPerProc) | 166 | PVRSRV_PER_PROCESS_DATA *psPerProc) |
166 | { | 167 | { |
167 | IMG_HANDLE hDevCookieInt; | 168 | IMG_HANDLE hDevCookieInt; |
168 | IMG_HANDLE hDevMemContextInt; | 169 | IMG_HANDLE hDevMemContextInt; |
169 | IMG_UINT32 i; | 170 | IMG_UINT32 i; |
170 | IMG_BOOL bCreated; | 171 | IMG_BOOL bCreated; |
171 | 172 | #if defined (SUPPORT_SID_INTERFACE) | |
172 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_CREATE_DEVMEMCONTEXT); | 173 | PVRSRV_HEAP_INFO_KM asHeapInfo[PVRSRV_MAX_CLIENT_HEAPS]; |
173 | 174 | #endif | |
174 | NEW_HANDLE_BATCH_OR_ERROR(psCreateDevMemContextOUT->eError, psPerProc, PVRSRV_MAX_CLIENT_HEAPS + 1) | ||
175 | 175 | ||
176 | psCreateDevMemContextOUT->eError = | 176 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_CREATE_DEVMEMCONTEXT); |
177 | PVRSRVLookupHandle(psPerProc->psHandleBase, &hDevCookieInt, | ||
178 | psCreateDevMemContextIN->hDevCookie, | ||
179 | PVRSRV_HANDLE_TYPE_DEV_NODE); | ||
180 | 177 | ||
181 | if(psCreateDevMemContextOUT->eError != PVRSRV_OK) | ||
182 | { | ||
183 | return 0; | ||
184 | } | ||
185 | 178 | ||
186 | psCreateDevMemContextOUT->eError = | 179 | NEW_HANDLE_BATCH_OR_ERROR(psCreateDevMemContextOUT->eError, psPerProc, PVRSRV_MAX_CLIENT_HEAPS + 1) |
187 | PVRSRVCreateDeviceMemContextKM(hDevCookieInt, | ||
188 | psPerProc, | ||
189 | &hDevMemContextInt, | ||
190 | &psCreateDevMemContextOUT->ui32ClientHeapCount, | ||
191 | &psCreateDevMemContextOUT->sHeapInfo[0], | ||
192 | &bCreated, | ||
193 | pbSharedDeviceMemHeap); | ||
194 | 180 | ||
195 | if(psCreateDevMemContextOUT->eError != PVRSRV_OK) | 181 | psCreateDevMemContextOUT->eError = |
196 | { | 182 | PVRSRVLookupHandle(psPerProc->psHandleBase, &hDevCookieInt, |
197 | return 0; | 183 | psCreateDevMemContextIN->hDevCookie, |
198 | } | 184 | PVRSRV_HANDLE_TYPE_DEV_NODE); |
199 | 185 | ||
186 | if(psCreateDevMemContextOUT->eError != PVRSRV_OK) | ||
187 | { | ||
188 | return 0; | ||
189 | } | ||
200 | 190 | ||
201 | if(bCreated) | 191 | psCreateDevMemContextOUT->eError = |
202 | { | 192 | PVRSRVCreateDeviceMemContextKM(hDevCookieInt, |
203 | PVRSRVAllocHandleNR(psPerProc->psHandleBase, | 193 | psPerProc, |
204 | &psCreateDevMemContextOUT->hDevMemContext, | 194 | &hDevMemContextInt, |
205 | hDevMemContextInt, | 195 | &psCreateDevMemContextOUT->ui32ClientHeapCount, |
206 | PVRSRV_HANDLE_TYPE_DEV_MEM_CONTEXT, | 196 | #if defined (SUPPORT_SID_INTERFACE) |
207 | PVRSRV_HANDLE_ALLOC_FLAG_NONE); | 197 | &asHeapInfo[0], |
208 | } | 198 | #else |
209 | else | 199 | &psCreateDevMemContextOUT->sHeapInfo[0], |
210 | { | 200 | #endif |
211 | psCreateDevMemContextOUT->eError = | 201 | &bCreated, |
212 | PVRSRVFindHandle(psPerProc->psHandleBase, | 202 | pbSharedDeviceMemHeap); |
213 | &psCreateDevMemContextOUT->hDevMemContext, | 203 | |
214 | hDevMemContextInt, | 204 | if(psCreateDevMemContextOUT->eError != PVRSRV_OK) |
215 | PVRSRV_HANDLE_TYPE_DEV_MEM_CONTEXT); | 205 | { |
216 | if(psCreateDevMemContextOUT->eError != PVRSRV_OK) | 206 | return 0; |
217 | { | 207 | } |
218 | return 0; | 208 | |
219 | } | 209 | |
220 | } | 210 | if(bCreated) |
211 | { | ||
212 | PVRSRVAllocHandleNR(psPerProc->psHandleBase, | ||
213 | &psCreateDevMemContextOUT->hDevMemContext, | ||
214 | hDevMemContextInt, | ||
215 | PVRSRV_HANDLE_TYPE_DEV_MEM_CONTEXT, | ||
216 | PVRSRV_HANDLE_ALLOC_FLAG_NONE); | ||
217 | } | ||
218 | else | ||
219 | { | ||
220 | psCreateDevMemContextOUT->eError = | ||
221 | PVRSRVFindHandle(psPerProc->psHandleBase, | ||
222 | &psCreateDevMemContextOUT->hDevMemContext, | ||
223 | hDevMemContextInt, | ||
224 | PVRSRV_HANDLE_TYPE_DEV_MEM_CONTEXT); | ||
225 | if(psCreateDevMemContextOUT->eError != PVRSRV_OK) | ||
226 | { | ||
227 | return 0; | ||
228 | } | ||
229 | } | ||
230 | |||
231 | for(i = 0; i < psCreateDevMemContextOUT->ui32ClientHeapCount; i++) | ||
232 | { | ||
233 | #if defined (SUPPORT_SID_INTERFACE) | ||
234 | IMG_SID hDevMemHeapExt; | ||
235 | #else | ||
236 | IMG_HANDLE hDevMemHeapExt; | ||
237 | #endif | ||
221 | 238 | ||
222 | for(i = 0; i < psCreateDevMemContextOUT->ui32ClientHeapCount; i++) | 239 | #if defined(PVR_SECURE_HANDLES) || defined (SUPPORT_SID_INTERFACE) |
223 | { | 240 | if(abSharedDeviceMemHeap[i]) |
224 | IMG_HANDLE hDevMemHeapExt; | 241 | #endif |
225 | 242 | { | |
226 | #if defined(PVR_SECURE_HANDLES) | 243 | |
227 | if(abSharedDeviceMemHeap[i]) | 244 | #if defined (SUPPORT_SID_INTERFACE) |
228 | #endif | 245 | PVRSRVAllocHandleNR(psPerProc->psHandleBase, |
229 | { | 246 | &hDevMemHeapExt, |
230 | 247 | asHeapInfo[i].hDevMemHeap, | |
231 | PVRSRVAllocHandleNR(psPerProc->psHandleBase, &hDevMemHeapExt, | 248 | PVRSRV_HANDLE_TYPE_DEV_MEM_HEAP, |
232 | psCreateDevMemContextOUT->sHeapInfo[i].hDevMemHeap, | 249 | PVRSRV_HANDLE_ALLOC_FLAG_SHARED); |
233 | PVRSRV_HANDLE_TYPE_DEV_MEM_HEAP, | 250 | #else |
234 | PVRSRV_HANDLE_ALLOC_FLAG_SHARED); | 251 | PVRSRVAllocHandleNR(psPerProc->psHandleBase, &hDevMemHeapExt, |
235 | } | 252 | psCreateDevMemContextOUT->sHeapInfo[i].hDevMemHeap, |
236 | #if defined(PVR_SECURE_HANDLES) | 253 | PVRSRV_HANDLE_TYPE_DEV_MEM_HEAP, |
237 | else | 254 | PVRSRV_HANDLE_ALLOC_FLAG_SHARED); |
238 | { | 255 | #endif |
239 | 256 | } | |
240 | if(bCreated) | 257 | #if defined(PVR_SECURE_HANDLES) || defined (SUPPORT_SID_INTERFACE) |
241 | { | 258 | else |
242 | PVRSRVAllocSubHandleNR(psPerProc->psHandleBase, &hDevMemHeapExt, | 259 | { |
243 | psCreateDevMemContextOUT->sHeapInfo[i].hDevMemHeap, | 260 | |
244 | PVRSRV_HANDLE_TYPE_DEV_MEM_HEAP, | 261 | if(bCreated) |
245 | PVRSRV_HANDLE_ALLOC_FLAG_NONE, | 262 | { |
246 | psCreateDevMemContextOUT->hDevMemContext); | 263 | #if defined (SUPPORT_SID_INTERFACE) |
247 | } | 264 | PVRSRVAllocSubHandleNR(psPerProc->psHandleBase, |
248 | else | 265 | &hDevMemHeapExt, |
249 | { | 266 | asHeapInfo[i].hDevMemHeap, |
250 | psCreateDevMemContextOUT->eError = | 267 | PVRSRV_HANDLE_TYPE_DEV_MEM_HEAP, |
251 | PVRSRVFindHandle(psPerProc->psHandleBase, &hDevMemHeapExt, | 268 | PVRSRV_HANDLE_ALLOC_FLAG_NONE, |
252 | psCreateDevMemContextOUT->sHeapInfo[i].hDevMemHeap, | 269 | psCreateDevMemContextOUT->hDevMemContext); |
253 | PVRSRV_HANDLE_TYPE_DEV_MEM_HEAP); | 270 | #else |
254 | if(psCreateDevMemContextOUT->eError != PVRSRV_OK) | 271 | PVRSRVAllocSubHandleNR(psPerProc->psHandleBase, &hDevMemHeapExt, |
255 | { | 272 | psCreateDevMemContextOUT->sHeapInfo[i].hDevMemHeap, |
256 | return 0; | 273 | PVRSRV_HANDLE_TYPE_DEV_MEM_HEAP, |
257 | } | 274 | PVRSRV_HANDLE_ALLOC_FLAG_NONE, |
258 | } | 275 | psCreateDevMemContextOUT->hDevMemContext); |
259 | } | 276 | #endif |
260 | #endif | 277 | } |
261 | psCreateDevMemContextOUT->sHeapInfo[i].hDevMemHeap = hDevMemHeapExt; | 278 | else |
262 | } | 279 | { |
280 | psCreateDevMemContextOUT->eError = | ||
281 | PVRSRVFindHandle(psPerProc->psHandleBase, | ||
282 | &hDevMemHeapExt, | ||
283 | #if defined (SUPPORT_SID_INTERFACE) | ||
284 | asHeapInfo[i].hDevMemHeap, | ||
285 | #else | ||
286 | psCreateDevMemContextOUT->sHeapInfo[i].hDevMemHeap, | ||
287 | #endif | ||
288 | PVRSRV_HANDLE_TYPE_DEV_MEM_HEAP); | ||
289 | if(psCreateDevMemContextOUT->eError != PVRSRV_OK) | ||
290 | { | ||
291 | return 0; | ||
292 | } | ||
293 | } | ||
294 | } | ||
295 | #endif | ||
296 | psCreateDevMemContextOUT->sHeapInfo[i].hDevMemHeap = hDevMemHeapExt; | ||
297 | #if defined (SUPPORT_SID_INTERFACE) | ||
298 | psCreateDevMemContextOUT->sHeapInfo[i].ui32HeapID = asHeapInfo[i].ui32HeapID; | ||
299 | psCreateDevMemContextOUT->sHeapInfo[i].sDevVAddrBase = asHeapInfo[i].sDevVAddrBase; | ||
300 | psCreateDevMemContextOUT->sHeapInfo[i].ui32HeapByteSize = asHeapInfo[i].ui32HeapByteSize; | ||
301 | psCreateDevMemContextOUT->sHeapInfo[i].ui32Attribs = asHeapInfo[i].ui32Attribs; | ||
302 | psCreateDevMemContextOUT->sHeapInfo[i].ui32XTileStride = asHeapInfo[i].ui32XTileStride; | ||
303 | #endif | ||
304 | } | ||
263 | 305 | ||
264 | COMMIT_HANDLE_BATCH_OR_ERROR(psCreateDevMemContextOUT->eError, psPerProc) | 306 | COMMIT_HANDLE_BATCH_OR_ERROR(psCreateDevMemContextOUT->eError, psPerProc) |
265 | 307 | ||
266 | return 0; | 308 | return 0; |
267 | } | 309 | } |
268 | 310 | ||
269 | static IMG_INT | 311 | static IMG_INT |
270 | PVRSRVDestroyDeviceMemContextBW(IMG_UINT32 ui32BridgeID, | 312 | PVRSRVDestroyDeviceMemContextBW(IMG_UINT32 ui32BridgeID, |
271 | PVRSRV_BRIDGE_IN_DESTROY_DEVMEMCONTEXT *psDestroyDevMemContextIN, | 313 | PVRSRV_BRIDGE_IN_DESTROY_DEVMEMCONTEXT *psDestroyDevMemContextIN, |
272 | PVRSRV_BRIDGE_RETURN *psRetOUT, | 314 | PVRSRV_BRIDGE_RETURN *psRetOUT, |
273 | PVRSRV_PER_PROCESS_DATA *psPerProc) | 315 | PVRSRV_PER_PROCESS_DATA *psPerProc) |
274 | { | 316 | { |
275 | IMG_HANDLE hDevCookieInt; | 317 | IMG_HANDLE hDevCookieInt; |
276 | IMG_HANDLE hDevMemContextInt; | 318 | IMG_HANDLE hDevMemContextInt; |
277 | IMG_BOOL bDestroyed; | 319 | IMG_BOOL bDestroyed; |
278 | 320 | ||
279 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_DESTROY_DEVMEMCONTEXT); | 321 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_DESTROY_DEVMEMCONTEXT); |
280 | 322 | ||
281 | psRetOUT->eError = | 323 | psRetOUT->eError = |
282 | PVRSRVLookupHandle(psPerProc->psHandleBase, &hDevCookieInt, | 324 | PVRSRVLookupHandle(psPerProc->psHandleBase, &hDevCookieInt, |
283 | psDestroyDevMemContextIN->hDevCookie, | 325 | psDestroyDevMemContextIN->hDevCookie, |
284 | PVRSRV_HANDLE_TYPE_DEV_NODE); | 326 | PVRSRV_HANDLE_TYPE_DEV_NODE); |
285 | 327 | ||
286 | if(psRetOUT->eError != PVRSRV_OK) | 328 | if(psRetOUT->eError != PVRSRV_OK) |
287 | { | 329 | { |
288 | return 0; | 330 | return 0; |
289 | } | 331 | } |
290 | 332 | ||
291 | psRetOUT->eError = | 333 | psRetOUT->eError = |
292 | PVRSRVLookupHandle(psPerProc->psHandleBase, &hDevMemContextInt, | 334 | PVRSRVLookupHandle(psPerProc->psHandleBase, &hDevMemContextInt, |
293 | psDestroyDevMemContextIN->hDevMemContext, | 335 | psDestroyDevMemContextIN->hDevMemContext, |
294 | PVRSRV_HANDLE_TYPE_DEV_MEM_CONTEXT); | 336 | PVRSRV_HANDLE_TYPE_DEV_MEM_CONTEXT); |
295 | 337 | ||
296 | if(psRetOUT->eError != PVRSRV_OK) | 338 | if(psRetOUT->eError != PVRSRV_OK) |
297 | { | 339 | { |
298 | return 0; | 340 | return 0; |
299 | } | 341 | } |
300 | 342 | ||
301 | psRetOUT->eError = | 343 | psRetOUT->eError = |
302 | PVRSRVDestroyDeviceMemContextKM(hDevCookieInt, hDevMemContextInt, &bDestroyed); | 344 | PVRSRVDestroyDeviceMemContextKM(hDevCookieInt, hDevMemContextInt, &bDestroyed); |
303 | 345 | ||
304 | if(psRetOUT->eError != PVRSRV_OK) | 346 | if(psRetOUT->eError != PVRSRV_OK) |
305 | { | 347 | { |
306 | return 0; | 348 | return 0; |
307 | } | 349 | } |
308 | 350 | ||
309 | if(bDestroyed) | 351 | if(bDestroyed) |
310 | { | 352 | { |
311 | psRetOUT->eError = | 353 | psRetOUT->eError = |
312 | PVRSRVReleaseHandle(psPerProc->psHandleBase, | 354 | PVRSRVReleaseHandle(psPerProc->psHandleBase, |
313 | psDestroyDevMemContextIN->hDevMemContext, | 355 | psDestroyDevMemContextIN->hDevMemContext, |
314 | PVRSRV_HANDLE_TYPE_DEV_MEM_CONTEXT); | 356 | PVRSRV_HANDLE_TYPE_DEV_MEM_CONTEXT); |
315 | } | 357 | } |
316 | 358 | ||
317 | return 0; | 359 | return 0; |
318 | } | 360 | } |
319 | 361 | ||
320 | 362 | ||
321 | static IMG_INT | 363 | static IMG_INT |
322 | PVRSRVGetDeviceMemHeapInfoBW(IMG_UINT32 ui32BridgeID, | 364 | PVRSRVGetDeviceMemHeapInfoBW(IMG_UINT32 ui32BridgeID, |
323 | PVRSRV_BRIDGE_IN_GET_DEVMEM_HEAPINFO *psGetDevMemHeapInfoIN, | 365 | PVRSRV_BRIDGE_IN_GET_DEVMEM_HEAPINFO *psGetDevMemHeapInfoIN, |
324 | PVRSRV_BRIDGE_OUT_GET_DEVMEM_HEAPINFO *psGetDevMemHeapInfoOUT, | 366 | PVRSRV_BRIDGE_OUT_GET_DEVMEM_HEAPINFO *psGetDevMemHeapInfoOUT, |
325 | PVRSRV_PER_PROCESS_DATA *psPerProc) | 367 | PVRSRV_PER_PROCESS_DATA *psPerProc) |
326 | { | 368 | { |
327 | IMG_HANDLE hDevCookieInt; | 369 | IMG_HANDLE hDevCookieInt; |
328 | IMG_HANDLE hDevMemContextInt; | 370 | IMG_HANDLE hDevMemContextInt; |
329 | IMG_UINT32 i; | 371 | IMG_UINT32 i; |
372 | #if defined (SUPPORT_SID_INTERFACE) | ||
373 | PVRSRV_HEAP_INFO_KM asHeapInfo[PVRSRV_MAX_CLIENT_HEAPS]; | ||
374 | #endif | ||
330 | 375 | ||
331 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_GET_DEVMEM_HEAPINFO); | 376 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_GET_DEVMEM_HEAPINFO); |
332 | 377 | ||
333 | NEW_HANDLE_BATCH_OR_ERROR(psGetDevMemHeapInfoOUT->eError, psPerProc, PVRSRV_MAX_CLIENT_HEAPS) | 378 | NEW_HANDLE_BATCH_OR_ERROR(psGetDevMemHeapInfoOUT->eError, psPerProc, PVRSRV_MAX_CLIENT_HEAPS) |
334 | 379 | ||
335 | psGetDevMemHeapInfoOUT->eError = | 380 | psGetDevMemHeapInfoOUT->eError = |
336 | PVRSRVLookupHandle(psPerProc->psHandleBase, &hDevCookieInt, | 381 | PVRSRVLookupHandle(psPerProc->psHandleBase, &hDevCookieInt, |
337 | psGetDevMemHeapInfoIN->hDevCookie, | 382 | psGetDevMemHeapInfoIN->hDevCookie, |
338 | PVRSRV_HANDLE_TYPE_DEV_NODE); | 383 | PVRSRV_HANDLE_TYPE_DEV_NODE); |
339 | 384 | ||
340 | if(psGetDevMemHeapInfoOUT->eError != PVRSRV_OK) | 385 | if(psGetDevMemHeapInfoOUT->eError != PVRSRV_OK) |
341 | { | 386 | { |
342 | return 0; | 387 | return 0; |
343 | } | 388 | } |
344 | 389 | ||
345 | psGetDevMemHeapInfoOUT->eError = | 390 | psGetDevMemHeapInfoOUT->eError = |
346 | PVRSRVLookupHandle(psPerProc->psHandleBase, &hDevMemContextInt, | 391 | PVRSRVLookupHandle(psPerProc->psHandleBase, &hDevMemContextInt, |
347 | psGetDevMemHeapInfoIN->hDevMemContext, | 392 | psGetDevMemHeapInfoIN->hDevMemContext, |
348 | PVRSRV_HANDLE_TYPE_DEV_MEM_CONTEXT); | 393 | PVRSRV_HANDLE_TYPE_DEV_MEM_CONTEXT); |
349 | 394 | ||
350 | if(psGetDevMemHeapInfoOUT->eError != PVRSRV_OK) | 395 | if(psGetDevMemHeapInfoOUT->eError != PVRSRV_OK) |
351 | { | 396 | { |
352 | return 0; | 397 | return 0; |
353 | } | 398 | } |
354 | 399 | ||
355 | psGetDevMemHeapInfoOUT->eError = | 400 | psGetDevMemHeapInfoOUT->eError = |
356 | PVRSRVGetDeviceMemHeapInfoKM(hDevCookieInt, | 401 | PVRSRVGetDeviceMemHeapInfoKM(hDevCookieInt, |
357 | hDevMemContextInt, | 402 | hDevMemContextInt, |
358 | &psGetDevMemHeapInfoOUT->ui32ClientHeapCount, | 403 | &psGetDevMemHeapInfoOUT->ui32ClientHeapCount, |
359 | &psGetDevMemHeapInfoOUT->sHeapInfo[0], | 404 | #if defined (SUPPORT_SID_INTERFACE) |
360 | pbSharedDeviceMemHeap); | 405 | &asHeapInfo[0], |
406 | #else | ||
407 | &psGetDevMemHeapInfoOUT->sHeapInfo[0], | ||
408 | #endif | ||
409 | pbSharedDeviceMemHeap); | ||
361 | 410 | ||
362 | if(psGetDevMemHeapInfoOUT->eError != PVRSRV_OK) | 411 | if(psGetDevMemHeapInfoOUT->eError != PVRSRV_OK) |
363 | { | 412 | { |
364 | return 0; | 413 | return 0; |
365 | } | 414 | } |
366 | 415 | ||
367 | for(i = 0; i < psGetDevMemHeapInfoOUT->ui32ClientHeapCount; i++) | 416 | for(i = 0; i < psGetDevMemHeapInfoOUT->ui32ClientHeapCount; i++) |
368 | { | 417 | { |
369 | IMG_HANDLE hDevMemHeapExt; | 418 | #if defined (SUPPORT_SID_INTERFACE) |
370 | 419 | IMG_SID hDevMemHeapExt; | |
371 | #if defined(PVR_SECURE_HANDLES) | 420 | #else |
372 | if(abSharedDeviceMemHeap[i]) | 421 | IMG_HANDLE hDevMemHeapExt; |
373 | #endif | 422 | #endif |
374 | { | ||
375 | |||
376 | PVRSRVAllocHandleNR(psPerProc->psHandleBase, &hDevMemHeapExt, | ||
377 | psGetDevMemHeapInfoOUT->sHeapInfo[i].hDevMemHeap, | ||
378 | PVRSRV_HANDLE_TYPE_DEV_MEM_HEAP, | ||
379 | PVRSRV_HANDLE_ALLOC_FLAG_SHARED); | ||
380 | } | ||
381 | #if defined(PVR_SECURE_HANDLES) | ||
382 | else | ||
383 | { | ||
384 | |||
385 | psGetDevMemHeapInfoOUT->eError = | ||
386 | PVRSRVFindHandle(psPerProc->psHandleBase, &hDevMemHeapExt, | ||
387 | psGetDevMemHeapInfoOUT->sHeapInfo[i].hDevMemHeap, | ||
388 | PVRSRV_HANDLE_TYPE_DEV_MEM_HEAP); | ||
389 | if(psGetDevMemHeapInfoOUT->eError != PVRSRV_OK) | ||
390 | { | ||
391 | return 0; | ||
392 | } | ||
393 | } | ||
394 | #endif | ||
395 | psGetDevMemHeapInfoOUT->sHeapInfo[i].hDevMemHeap = hDevMemHeapExt; | ||
396 | } | ||
397 | 423 | ||
398 | COMMIT_HANDLE_BATCH_OR_ERROR(psGetDevMemHeapInfoOUT->eError, psPerProc) | 424 | #if defined(PVR_SECURE_HANDLES) || defined (SUPPORT_SID_INTERFACE) |
425 | if(abSharedDeviceMemHeap[i]) | ||
426 | #endif | ||
427 | { | ||
428 | |||
429 | #if defined (SUPPORT_SID_INTERFACE) | ||
430 | PVRSRVAllocHandleNR(psPerProc->psHandleBase, | ||
431 | &hDevMemHeapExt, | ||
432 | asHeapInfo[i].hDevMemHeap, | ||
433 | PVRSRV_HANDLE_TYPE_DEV_MEM_HEAP, | ||
434 | PVRSRV_HANDLE_ALLOC_FLAG_SHARED); | ||
435 | #else | ||
436 | PVRSRVAllocHandleNR(psPerProc->psHandleBase, &hDevMemHeapExt, | ||
437 | psGetDevMemHeapInfoOUT->sHeapInfo[i].hDevMemHeap, | ||
438 | PVRSRV_HANDLE_TYPE_DEV_MEM_HEAP, | ||
439 | PVRSRV_HANDLE_ALLOC_FLAG_SHARED); | ||
440 | #endif | ||
441 | } | ||
442 | #if defined(PVR_SECURE_HANDLES) || defined (SUPPORT_SID_INTERFACE) | ||
443 | else | ||
444 | { | ||
445 | |||
446 | psGetDevMemHeapInfoOUT->eError = | ||
447 | PVRSRVFindHandle(psPerProc->psHandleBase, | ||
448 | &hDevMemHeapExt, | ||
449 | #if defined (SUPPORT_SID_INTERFACE) | ||
450 | asHeapInfo[i].hDevMemHeap, | ||
451 | #else | ||
452 | psGetDevMemHeapInfoOUT->sHeapInfo[i].hDevMemHeap, | ||
453 | #endif | ||
454 | PVRSRV_HANDLE_TYPE_DEV_MEM_HEAP); | ||
455 | if(psGetDevMemHeapInfoOUT->eError != PVRSRV_OK) | ||
456 | { | ||
457 | return 0; | ||
458 | } | ||
459 | } | ||
460 | #endif | ||
461 | psGetDevMemHeapInfoOUT->sHeapInfo[i].hDevMemHeap = hDevMemHeapExt; | ||
462 | #if defined (SUPPORT_SID_INTERFACE) | ||
463 | psGetDevMemHeapInfoOUT->sHeapInfo[i].ui32HeapID = asHeapInfo[i].ui32HeapID; | ||
464 | psGetDevMemHeapInfoOUT->sHeapInfo[i].sDevVAddrBase = asHeapInfo[i].sDevVAddrBase; | ||
465 | psGetDevMemHeapInfoOUT->sHeapInfo[i].ui32HeapByteSize = asHeapInfo[i].ui32HeapByteSize; | ||
466 | psGetDevMemHeapInfoOUT->sHeapInfo[i].ui32Attribs = asHeapInfo[i].ui32Attribs; | ||
467 | psGetDevMemHeapInfoOUT->sHeapInfo[i].ui32XTileStride = asHeapInfo[i].ui32XTileStride; | ||
468 | #endif | ||
469 | } | ||
399 | 470 | ||
400 | return 0; | 471 | COMMIT_HANDLE_BATCH_OR_ERROR(psGetDevMemHeapInfoOUT->eError, psPerProc) |
472 | |||
473 | return 0; | ||
401 | } | 474 | } |
402 | 475 | ||
403 | 476 | ||
404 | #if defined(OS_PVRSRV_ALLOC_DEVICE_MEM_BW) | 477 | #if defined(OS_PVRSRV_ALLOC_DEVICE_MEM_BW) |
405 | IMG_INT | 478 | IMG_INT |
406 | PVRSRVAllocDeviceMemBW(IMG_UINT32 ui32BridgeID, | 479 | PVRSRVAllocDeviceMemBW(IMG_UINT32 ui32BridgeID, |
407 | PVRSRV_BRIDGE_IN_ALLOCDEVICEMEM *psAllocDeviceMemIN, | 480 | PVRSRV_BRIDGE_IN_ALLOCDEVICEMEM *psAllocDeviceMemIN, |
408 | PVRSRV_BRIDGE_OUT_ALLOCDEVICEMEM *psAllocDeviceMemOUT, | 481 | PVRSRV_BRIDGE_OUT_ALLOCDEVICEMEM *psAllocDeviceMemOUT, |
409 | PVRSRV_PER_PROCESS_DATA *psPerProc); | 482 | PVRSRV_PER_PROCESS_DATA *psPerProc); |
410 | #else | 483 | #else |
411 | static IMG_INT | 484 | static IMG_INT |
412 | PVRSRVAllocDeviceMemBW(IMG_UINT32 ui32BridgeID, | 485 | PVRSRVAllocDeviceMemBW(IMG_UINT32 ui32BridgeID, |
413 | PVRSRV_BRIDGE_IN_ALLOCDEVICEMEM *psAllocDeviceMemIN, | 486 | PVRSRV_BRIDGE_IN_ALLOCDEVICEMEM *psAllocDeviceMemIN, |
414 | PVRSRV_BRIDGE_OUT_ALLOCDEVICEMEM *psAllocDeviceMemOUT, | 487 | PVRSRV_BRIDGE_OUT_ALLOCDEVICEMEM *psAllocDeviceMemOUT, |
415 | PVRSRV_PER_PROCESS_DATA *psPerProc) | 488 | PVRSRV_PER_PROCESS_DATA *psPerProc) |
416 | { | 489 | { |
417 | PVRSRV_KERNEL_MEM_INFO *psMemInfo; | 490 | PVRSRV_KERNEL_MEM_INFO *psMemInfo; |
418 | IMG_HANDLE hDevCookieInt; | 491 | IMG_HANDLE hDevCookieInt; |
419 | IMG_HANDLE hDevMemHeapInt; | 492 | IMG_HANDLE hDevMemHeapInt; |
420 | 493 | IMG_UINT32 ui32ShareIndex; | |
421 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_ALLOC_DEVICEMEM); | 494 | IMG_BOOL bUseShareMemWorkaround; |
422 | 495 | ||
423 | NEW_HANDLE_BATCH_OR_ERROR(psAllocDeviceMemOUT->eError, psPerProc, 2) | 496 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_ALLOC_DEVICEMEM); |
424 | 497 | ||
425 | psAllocDeviceMemOUT->eError = | 498 | NEW_HANDLE_BATCH_OR_ERROR(psAllocDeviceMemOUT->eError, psPerProc, 2) |
426 | PVRSRVLookupHandle(psPerProc->psHandleBase, &hDevCookieInt, | 499 | |
427 | psAllocDeviceMemIN->hDevCookie, | 500 | psAllocDeviceMemOUT->eError = |
428 | PVRSRV_HANDLE_TYPE_DEV_NODE); | 501 | PVRSRVLookupHandle(psPerProc->psHandleBase, &hDevCookieInt, |
429 | 502 | psAllocDeviceMemIN->hDevCookie, | |
430 | if(psAllocDeviceMemOUT->eError != PVRSRV_OK) | 503 | PVRSRV_HANDLE_TYPE_DEV_NODE); |
431 | { | 504 | |
432 | return 0; | 505 | if(psAllocDeviceMemOUT->eError != PVRSRV_OK) |
433 | } | 506 | { |
434 | 507 | return 0; | |
435 | psAllocDeviceMemOUT->eError = | 508 | } |
436 | PVRSRVLookupHandle(psPerProc->psHandleBase, &hDevMemHeapInt, | 509 | |
437 | psAllocDeviceMemIN->hDevMemHeap, | 510 | psAllocDeviceMemOUT->eError = |
438 | PVRSRV_HANDLE_TYPE_DEV_MEM_HEAP); | 511 | PVRSRVLookupHandle(psPerProc->psHandleBase, &hDevMemHeapInt, |
439 | 512 | psAllocDeviceMemIN->hDevMemHeap, | |
440 | if(psAllocDeviceMemOUT->eError != PVRSRV_OK) | 513 | PVRSRV_HANDLE_TYPE_DEV_MEM_HEAP); |
441 | { | 514 | |
442 | return 0; | 515 | if(psAllocDeviceMemOUT->eError != PVRSRV_OK) |
443 | } | 516 | { |
444 | 517 | return 0; | |
445 | psAllocDeviceMemOUT->eError = | 518 | } |
446 | PVRSRVAllocDeviceMemKM(hDevCookieInt, | 519 | |
447 | psPerProc, | 520 | |
448 | hDevMemHeapInt, | 521 | |
449 | psAllocDeviceMemIN->ui32Attribs, | 522 | bUseShareMemWorkaround = ((psAllocDeviceMemIN->ui32Attribs & PVRSRV_MEM_XPROC) != 0) ? IMG_TRUE : IMG_FALSE; |
450 | psAllocDeviceMemIN->ui32Size, | 523 | ui32ShareIndex = 7654321; |
451 | psAllocDeviceMemIN->ui32Alignment, | 524 | |
452 | &psMemInfo, | 525 | if (bUseShareMemWorkaround) |
453 | "" ); | 526 | { |
454 | 527 | ||
455 | if(psAllocDeviceMemOUT->eError != PVRSRV_OK) | 528 | |
456 | { | 529 | |
457 | return 0; | 530 | psAllocDeviceMemOUT->eError = |
458 | } | 531 | BM_XProcWorkaroundFindNewBufferAndSetShareIndex(&ui32ShareIndex); |
459 | 532 | if(psAllocDeviceMemOUT->eError != PVRSRV_OK) | |
460 | OSMemSet(&psAllocDeviceMemOUT->sClientMemInfo, | 533 | { |
461 | 0, | 534 | return 0; |
462 | sizeof(psAllocDeviceMemOUT->sClientMemInfo)); | 535 | } |
463 | 536 | } | |
464 | psAllocDeviceMemOUT->sClientMemInfo.pvLinAddrKM = | 537 | |
465 | psMemInfo->pvLinAddrKM; | 538 | psAllocDeviceMemOUT->eError = |
539 | PVRSRVAllocDeviceMemKM(hDevCookieInt, | ||
540 | psPerProc, | ||
541 | hDevMemHeapInt, | ||
542 | psAllocDeviceMemIN->ui32Attribs, | ||
543 | psAllocDeviceMemIN->ui32Size, | ||
544 | psAllocDeviceMemIN->ui32Alignment, | ||
545 | &psMemInfo, | ||
546 | "" ); | ||
547 | |||
548 | if (bUseShareMemWorkaround) | ||
549 | { | ||
550 | PVR_ASSERT(ui32ShareIndex != 7654321); | ||
551 | BM_XProcWorkaroundUnsetShareIndex(ui32ShareIndex); | ||
552 | } | ||
553 | |||
554 | if(psAllocDeviceMemOUT->eError != PVRSRV_OK) | ||
555 | { | ||
556 | return 0; | ||
557 | } | ||
558 | |||
559 | psMemInfo->sShareMemWorkaround.bInUse = bUseShareMemWorkaround; | ||
560 | if (bUseShareMemWorkaround) | ||
561 | { | ||
562 | PVR_ASSERT(ui32ShareIndex != 7654321); | ||
563 | psMemInfo->sShareMemWorkaround.ui32ShareIndex = ui32ShareIndex; | ||
564 | psMemInfo->sShareMemWorkaround.hDevCookieInt = hDevCookieInt; | ||
565 | psMemInfo->sShareMemWorkaround.ui32OrigReqAttribs = psAllocDeviceMemIN->ui32Attribs; | ||
566 | psMemInfo->sShareMemWorkaround.ui32OrigReqSize = (IMG_UINT32)psAllocDeviceMemIN->ui32Size; | ||
567 | psMemInfo->sShareMemWorkaround.ui32OrigReqAlignment = (IMG_UINT32)psAllocDeviceMemIN->ui32Alignment; | ||
568 | } | ||
569 | |||
570 | OSMemSet(&psAllocDeviceMemOUT->sClientMemInfo, | ||
571 | 0, | ||
572 | sizeof(psAllocDeviceMemOUT->sClientMemInfo)); | ||
573 | |||
574 | psAllocDeviceMemOUT->sClientMemInfo.pvLinAddrKM = | ||
575 | psMemInfo->pvLinAddrKM; | ||
466 | 576 | ||
467 | #if defined (__linux__) | 577 | #if defined (__linux__) |
468 | psAllocDeviceMemOUT->sClientMemInfo.pvLinAddr = 0; | 578 | psAllocDeviceMemOUT->sClientMemInfo.pvLinAddr = 0; |
469 | #else | 579 | #else |
470 | psAllocDeviceMemOUT->sClientMemInfo.pvLinAddr = psMemInfo->pvLinAddrKM; | 580 | psAllocDeviceMemOUT->sClientMemInfo.pvLinAddr = psMemInfo->pvLinAddrKM; |
581 | #endif | ||
582 | psAllocDeviceMemOUT->sClientMemInfo.sDevVAddr = psMemInfo->sDevVAddr; | ||
583 | psAllocDeviceMemOUT->sClientMemInfo.ui32Flags = psMemInfo->ui32Flags; | ||
584 | psAllocDeviceMemOUT->sClientMemInfo.uAllocSize = psMemInfo->uAllocSize; | ||
585 | #if defined (SUPPORT_SID_INTERFACE) | ||
586 | #else | ||
587 | psAllocDeviceMemOUT->sClientMemInfo.hMappingInfo = psMemInfo->sMemBlk.hOSMemHandle; | ||
471 | #endif | 588 | #endif |
472 | psAllocDeviceMemOUT->sClientMemInfo.sDevVAddr = psMemInfo->sDevVAddr; | ||
473 | psAllocDeviceMemOUT->sClientMemInfo.ui32Flags = psMemInfo->ui32Flags; | ||
474 | psAllocDeviceMemOUT->sClientMemInfo.ui32AllocSize = psMemInfo->ui32AllocSize; | ||
475 | psAllocDeviceMemOUT->sClientMemInfo.hMappingInfo = psMemInfo->sMemBlk.hOSMemHandle; | ||
476 | |||
477 | PVRSRVAllocHandleNR(psPerProc->psHandleBase, | ||
478 | &psAllocDeviceMemOUT->sClientMemInfo.hKernelMemInfo, | ||
479 | psMemInfo, | ||
480 | PVRSRV_HANDLE_TYPE_MEM_INFO, | ||
481 | PVRSRV_HANDLE_ALLOC_FLAG_NONE); | ||
482 | |||
483 | if(psAllocDeviceMemIN->ui32Attribs & PVRSRV_MEM_NO_SYNCOBJ) | ||
484 | { | ||
485 | |||
486 | OSMemSet(&psAllocDeviceMemOUT->sClientSyncInfo, | ||
487 | 0, | ||
488 | sizeof (PVRSRV_CLIENT_SYNC_INFO)); | ||
489 | psAllocDeviceMemOUT->sClientMemInfo.psClientSyncInfo = IMG_NULL; | ||
490 | } | ||
491 | else | ||
492 | { | ||
493 | |||
494 | 589 | ||
495 | psAllocDeviceMemOUT->sClientSyncInfo.psSyncData = | 590 | PVRSRVAllocHandleNR(psPerProc->psHandleBase, |
496 | psMemInfo->psKernelSyncInfo->psSyncData; | 591 | &psAllocDeviceMemOUT->sClientMemInfo.hKernelMemInfo, |
497 | psAllocDeviceMemOUT->sClientSyncInfo.sWriteOpsCompleteDevVAddr = | 592 | psMemInfo, |
498 | psMemInfo->psKernelSyncInfo->sWriteOpsCompleteDevVAddr; | 593 | PVRSRV_HANDLE_TYPE_MEM_INFO, |
499 | psAllocDeviceMemOUT->sClientSyncInfo.sReadOpsCompleteDevVAddr = | 594 | PVRSRV_HANDLE_ALLOC_FLAG_NONE); |
500 | psMemInfo->psKernelSyncInfo->sReadOpsCompleteDevVAddr; | 595 | |
596 | #if defined (SUPPORT_SID_INTERFACE) | ||
597 | PVR_ASSERT(psAllocDeviceMemOUT->sClientMemInfo.hKernelMemInfo != 0); | ||
598 | |||
599 | if (psMemInfo->sMemBlk.hOSMemHandle != IMG_NULL) | ||
600 | { | ||
601 | PVRSRVAllocSubHandleNR(psPerProc->psHandleBase, | ||
602 | &psAllocDeviceMemOUT->sClientMemInfo.hMappingInfo, | ||
603 | psMemInfo->sMemBlk.hOSMemHandle, | ||
604 | PVRSRV_HANDLE_TYPE_MEM_INFO, | ||
605 | PVRSRV_HANDLE_ALLOC_FLAG_NONE, | ||
606 | psAllocDeviceMemOUT->sClientMemInfo.hKernelMemInfo); | ||
607 | } | ||
608 | else | ||
609 | { | ||
610 | psAllocDeviceMemOUT->sClientMemInfo.hMappingInfo = 0; | ||
611 | } | ||
612 | #endif | ||
501 | 613 | ||
502 | psAllocDeviceMemOUT->sClientSyncInfo.hMappingInfo = | 614 | if(psAllocDeviceMemIN->ui32Attribs & PVRSRV_MEM_NO_SYNCOBJ) |
503 | psMemInfo->psKernelSyncInfo->psSyncDataMemInfoKM->sMemBlk.hOSMemHandle; | 615 | { |
616 | |||
617 | OSMemSet(&psAllocDeviceMemOUT->sClientSyncInfo, | ||
618 | 0, | ||
619 | sizeof (PVRSRV_CLIENT_SYNC_INFO)); | ||
620 | psAllocDeviceMemOUT->sClientMemInfo.psClientSyncInfo = IMG_NULL; | ||
621 | } | ||
622 | else | ||
623 | { | ||
624 | |||
625 | |||
626 | #if !defined(PVRSRV_DISABLE_UM_SYNCOBJ_MAPPINGS) | ||
627 | psAllocDeviceMemOUT->sClientSyncInfo.psSyncData = | ||
628 | psMemInfo->psKernelSyncInfo->psSyncData; | ||
629 | psAllocDeviceMemOUT->sClientSyncInfo.sWriteOpsCompleteDevVAddr = | ||
630 | psMemInfo->psKernelSyncInfo->sWriteOpsCompleteDevVAddr; | ||
631 | psAllocDeviceMemOUT->sClientSyncInfo.sReadOpsCompleteDevVAddr = | ||
632 | psMemInfo->psKernelSyncInfo->sReadOpsCompleteDevVAddr; | ||
633 | |||
634 | #if defined (SUPPORT_SID_INTERFACE) | ||
635 | if (psMemInfo->psKernelSyncInfo->psSyncDataMemInfoKM->sMemBlk.hOSMemHandle != IMG_NULL) | ||
636 | { | ||
637 | PVRSRVAllocSubHandleNR(psPerProc->psHandleBase, | ||
638 | &psAllocDeviceMemOUT->sClientSyncInfo.hMappingInfo, | ||
639 | psMemInfo->psKernelSyncInfo->psSyncDataMemInfoKM->sMemBlk.hOSMemHandle, | ||
640 | PVRSRV_HANDLE_TYPE_SYNC_INFO, | ||
641 | PVRSRV_HANDLE_ALLOC_FLAG_NONE, | ||
642 | psAllocDeviceMemOUT->sClientMemInfo.hKernelMemInfo); | ||
643 | } | ||
644 | else | ||
645 | { | ||
646 | psAllocDeviceMemOUT->sClientSyncInfo.hMappingInfo = 0; | ||
647 | } | ||
648 | #else | ||
649 | psAllocDeviceMemOUT->sClientSyncInfo.hMappingInfo = | ||
650 | psMemInfo->psKernelSyncInfo->psSyncDataMemInfoKM->sMemBlk.hOSMemHandle; | ||
651 | #endif | ||
652 | #endif | ||
504 | 653 | ||
505 | PVRSRVAllocSubHandleNR(psPerProc->psHandleBase, | 654 | PVRSRVAllocSubHandleNR(psPerProc->psHandleBase, |
506 | &psAllocDeviceMemOUT->sClientSyncInfo.hKernelSyncInfo, | 655 | &psAllocDeviceMemOUT->sClientSyncInfo.hKernelSyncInfo, |
507 | psMemInfo->psKernelSyncInfo, | 656 | psMemInfo->psKernelSyncInfo, |
508 | PVRSRV_HANDLE_TYPE_SYNC_INFO, | 657 | PVRSRV_HANDLE_TYPE_SYNC_INFO, |
509 | PVRSRV_HANDLE_ALLOC_FLAG_NONE, | 658 | PVRSRV_HANDLE_ALLOC_FLAG_NONE, |
510 | psAllocDeviceMemOUT->sClientMemInfo.hKernelMemInfo); | 659 | psAllocDeviceMemOUT->sClientMemInfo.hKernelMemInfo); |
511 | 660 | ||
512 | psAllocDeviceMemOUT->sClientMemInfo.psClientSyncInfo = | 661 | psAllocDeviceMemOUT->sClientMemInfo.psClientSyncInfo = |
513 | &psAllocDeviceMemOUT->sClientSyncInfo; | 662 | &psAllocDeviceMemOUT->sClientSyncInfo; |
514 | 663 | ||
515 | } | 664 | } |
516 | 665 | ||
517 | COMMIT_HANDLE_BATCH_OR_ERROR(psAllocDeviceMemOUT->eError, psPerProc) | 666 | COMMIT_HANDLE_BATCH_OR_ERROR(psAllocDeviceMemOUT->eError, psPerProc) |
518 | 667 | ||
519 | return 0; | 668 | return 0; |
520 | } | 669 | } |
521 | 670 | ||
522 | #endif | 671 | #endif |
523 | 672 | ||
524 | static IMG_INT | 673 | static IMG_INT |
525 | PVRSRVFreeDeviceMemBW(IMG_UINT32 ui32BridgeID, | 674 | PVRSRVFreeDeviceMemBW(IMG_UINT32 ui32BridgeID, |
526 | PVRSRV_BRIDGE_IN_FREEDEVICEMEM *psFreeDeviceMemIN, | 675 | PVRSRV_BRIDGE_IN_FREEDEVICEMEM *psFreeDeviceMemIN, |
527 | PVRSRV_BRIDGE_RETURN *psRetOUT, | 676 | PVRSRV_BRIDGE_RETURN *psRetOUT, |
528 | PVRSRV_PER_PROCESS_DATA *psPerProc) | 677 | PVRSRV_PER_PROCESS_DATA *psPerProc) |
529 | { | 678 | { |
530 | IMG_HANDLE hDevCookieInt; | 679 | IMG_HANDLE hDevCookieInt; |
531 | IMG_VOID *pvKernelMemInfo; | 680 | IMG_VOID *pvKernelMemInfo; |
532 | 681 | ||
533 | 682 | ||
534 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_FREE_DEVICEMEM); | 683 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_FREE_DEVICEMEM); |
535 | 684 | ||
536 | psRetOUT->eError = | 685 | psRetOUT->eError = |
537 | PVRSRVLookupHandle(psPerProc->psHandleBase, &hDevCookieInt, | 686 | PVRSRVLookupHandle(psPerProc->psHandleBase, &hDevCookieInt, |
538 | psFreeDeviceMemIN->hDevCookie, | 687 | psFreeDeviceMemIN->hDevCookie, |
539 | PVRSRV_HANDLE_TYPE_DEV_NODE); | 688 | PVRSRV_HANDLE_TYPE_DEV_NODE); |
540 | 689 | ||
541 | if(psRetOUT->eError != PVRSRV_OK) | 690 | if(psRetOUT->eError != PVRSRV_OK) |
542 | { | 691 | { |
543 | return 0; | 692 | return 0; |
544 | } | 693 | } |
545 | 694 | ||
546 | psRetOUT->eError = | 695 | psRetOUT->eError = |
547 | PVRSRVLookupHandle(psPerProc->psHandleBase, &pvKernelMemInfo, | 696 | PVRSRVLookupHandle(psPerProc->psHandleBase, |
548 | psFreeDeviceMemIN->psKernelMemInfo, | 697 | &pvKernelMemInfo, |
549 | PVRSRV_HANDLE_TYPE_MEM_INFO); | 698 | #if defined (SUPPORT_SID_INTERFACE) |
699 | psFreeDeviceMemIN->hKernelMemInfo, | ||
700 | #else | ||
701 | psFreeDeviceMemIN->psKernelMemInfo, | ||
702 | #endif | ||
703 | PVRSRV_HANDLE_TYPE_MEM_INFO); | ||
550 | 704 | ||
551 | if(psRetOUT->eError != PVRSRV_OK) | 705 | if(psRetOUT->eError != PVRSRV_OK) |
552 | { | 706 | { |
553 | return 0; | 707 | return 0; |
554 | } | 708 | } |
555 | 709 | ||
556 | psRetOUT->eError = PVRSRVFreeDeviceMemKM(hDevCookieInt, pvKernelMemInfo); | 710 | psRetOUT->eError = PVRSRVFreeDeviceMemKM(hDevCookieInt, pvKernelMemInfo); |
557 | 711 | ||
558 | if(psRetOUT->eError != PVRSRV_OK) | 712 | if(psRetOUT->eError != PVRSRV_OK) |
559 | { | 713 | { |
560 | return 0; | 714 | return 0; |
561 | } | 715 | } |
562 | 716 | ||
563 | psRetOUT->eError = | 717 | psRetOUT->eError = |
564 | PVRSRVReleaseHandle(psPerProc->psHandleBase, | 718 | PVRSRVReleaseHandle(psPerProc->psHandleBase, |
565 | psFreeDeviceMemIN->psKernelMemInfo, | 719 | #if defined (SUPPORT_SID_INTERFACE) |
566 | PVRSRV_HANDLE_TYPE_MEM_INFO); | 720 | psFreeDeviceMemIN->hKernelMemInfo, |
721 | #else | ||
722 | psFreeDeviceMemIN->psKernelMemInfo, | ||
723 | #endif | ||
724 | PVRSRV_HANDLE_TYPE_MEM_INFO); | ||
567 | 725 | ||
568 | return 0; | 726 | return 0; |
569 | } | 727 | } |
570 | 728 | ||
571 | 729 | ||
572 | static IMG_INT | 730 | static IMG_INT |
573 | PVRSRVExportDeviceMemBW(IMG_UINT32 ui32BridgeID, | 731 | PVRSRVExportDeviceMemBW(IMG_UINT32 ui32BridgeID, |
574 | PVRSRV_BRIDGE_IN_EXPORTDEVICEMEM *psExportDeviceMemIN, | 732 | PVRSRV_BRIDGE_IN_EXPORTDEVICEMEM *psExportDeviceMemIN, |
575 | PVRSRV_BRIDGE_OUT_EXPORTDEVICEMEM *psExportDeviceMemOUT, | 733 | PVRSRV_BRIDGE_OUT_EXPORTDEVICEMEM *psExportDeviceMemOUT, |
576 | PVRSRV_PER_PROCESS_DATA *psPerProc) | 734 | PVRSRV_PER_PROCESS_DATA *psPerProc) |
577 | { | 735 | { |
578 | IMG_HANDLE hDevCookieInt; | 736 | IMG_HANDLE hDevCookieInt; |
579 | PVRSRV_KERNEL_MEM_INFO *psKernelMemInfo; | 737 | #if defined (SUPPORT_SID_INTERFACE) |
580 | 738 | PVRSRV_KERNEL_MEM_INFO *psKernelMemInfo = IMG_NULL; | |
581 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_EXPORT_DEVICEMEM); | 739 | #else |
582 | 740 | PVRSRV_KERNEL_MEM_INFO *psKernelMemInfo; | |
583 | 741 | #endif | |
584 | psExportDeviceMemOUT->eError = | ||
585 | PVRSRVLookupHandle(psPerProc->psHandleBase, &hDevCookieInt, | ||
586 | psExportDeviceMemIN->hDevCookie, | ||
587 | PVRSRV_HANDLE_TYPE_DEV_NODE); | ||
588 | |||
589 | if(psExportDeviceMemOUT->eError != PVRSRV_OK) | ||
590 | { | ||
591 | PVR_DPF((PVR_DBG_ERROR, "PVRSRVExportDeviceMemBW: can't find devcookie")); | ||
592 | return 0; | ||
593 | } | ||
594 | |||
595 | |||
596 | psExportDeviceMemOUT->eError = | ||
597 | PVRSRVLookupHandle(psPerProc->psHandleBase, (IMG_PVOID *)&psKernelMemInfo, | ||
598 | psExportDeviceMemIN->psKernelMemInfo, | ||
599 | PVRSRV_HANDLE_TYPE_MEM_INFO); | ||
600 | |||
601 | if(psExportDeviceMemOUT->eError != PVRSRV_OK) | ||
602 | { | ||
603 | PVR_DPF((PVR_DBG_ERROR, "PVRSRVExportDeviceMemBW: can't find kernel meminfo")); | ||
604 | return 0; | ||
605 | } | ||
606 | |||
607 | |||
608 | psExportDeviceMemOUT->eError = | ||
609 | PVRSRVFindHandle(KERNEL_HANDLE_BASE, | ||
610 | &psExportDeviceMemOUT->hMemInfo, | ||
611 | psKernelMemInfo, | ||
612 | PVRSRV_HANDLE_TYPE_MEM_INFO); | ||
613 | if(psExportDeviceMemOUT->eError == PVRSRV_OK) | ||
614 | { | ||
615 | |||
616 | PVR_DPF((PVR_DBG_MESSAGE, "PVRSRVExportDeviceMemBW: allocation is already exported")); | ||
617 | return 0; | ||
618 | } | ||
619 | |||
620 | |||
621 | psExportDeviceMemOUT->eError = PVRSRVAllocHandle(KERNEL_HANDLE_BASE, | ||
622 | &psExportDeviceMemOUT->hMemInfo, | ||
623 | psKernelMemInfo, | ||
624 | PVRSRV_HANDLE_TYPE_MEM_INFO, | ||
625 | PVRSRV_HANDLE_ALLOC_FLAG_NONE); | ||
626 | if (psExportDeviceMemOUT->eError != PVRSRV_OK) | ||
627 | { | ||
628 | PVR_DPF((PVR_DBG_ERROR, "PVRSRVExportDeviceMemBW: failed to allocate handle from global handle list")); | ||
629 | return 0; | ||
630 | } | ||
631 | |||
632 | |||
633 | psKernelMemInfo->ui32Flags |= PVRSRV_MEM_EXPORTED; | ||
634 | 742 | ||
635 | return 0; | 743 | PVR_ASSERT(ui32BridgeID == PVRSRV_GET_BRIDGE_ID(PVRSRV_BRIDGE_EXPORT_DEVICEMEM) || |
744 | ui32BridgeID == PVRSRV_GET_BRIDGE_ID(PVRSRV_BRIDGE_EXPORT_DEVICEMEM_2)); | ||
745 | PVR_UNREFERENCED_PARAMETER(ui32BridgeID); | ||
746 | |||
747 | |||
748 | psExportDeviceMemOUT->eError = | ||
749 | PVRSRVLookupHandle(psPerProc->psHandleBase, | ||
750 | &hDevCookieInt, | ||
751 | psExportDeviceMemIN->hDevCookie, | ||
752 | PVRSRV_HANDLE_TYPE_DEV_NODE); | ||
753 | |||
754 | if(psExportDeviceMemOUT->eError != PVRSRV_OK) | ||
755 | { | ||
756 | PVR_DPF((PVR_DBG_ERROR, "PVRSRVExportDeviceMemBW: can't find devcookie")); | ||
757 | return 0; | ||
758 | } | ||
759 | |||
760 | |||
761 | psExportDeviceMemOUT->eError = | ||
762 | PVRSRVLookupHandle(psPerProc->psHandleBase, | ||
763 | (IMG_PVOID *)&psKernelMemInfo, | ||
764 | #if defined (SUPPORT_SID_INTERFACE) | ||
765 | psExportDeviceMemIN->hKernelMemInfo, | ||
766 | #else | ||
767 | psExportDeviceMemIN->psKernelMemInfo, | ||
768 | #endif | ||
769 | PVRSRV_HANDLE_TYPE_MEM_INFO); | ||
770 | |||
771 | if(psExportDeviceMemOUT->eError != PVRSRV_OK) | ||
772 | { | ||
773 | PVR_DPF((PVR_DBG_ERROR, "PVRSRVExportDeviceMemBW: can't find kernel meminfo")); | ||
774 | return 0; | ||
775 | } | ||
776 | |||
777 | |||
778 | psExportDeviceMemOUT->eError = | ||
779 | PVRSRVFindHandle(KERNEL_HANDLE_BASE, | ||
780 | &psExportDeviceMemOUT->hMemInfo, | ||
781 | psKernelMemInfo, | ||
782 | PVRSRV_HANDLE_TYPE_MEM_INFO); | ||
783 | if(psExportDeviceMemOUT->eError == PVRSRV_OK) | ||
784 | { | ||
785 | |||
786 | PVR_DPF((PVR_DBG_MESSAGE, "PVRSRVExportDeviceMemBW: allocation is already exported")); | ||
787 | return 0; | ||
788 | } | ||
789 | |||
790 | |||
791 | psExportDeviceMemOUT->eError = PVRSRVAllocHandle(KERNEL_HANDLE_BASE, | ||
792 | &psExportDeviceMemOUT->hMemInfo, | ||
793 | psKernelMemInfo, | ||
794 | PVRSRV_HANDLE_TYPE_MEM_INFO, | ||
795 | PVRSRV_HANDLE_ALLOC_FLAG_NONE); | ||
796 | if (psExportDeviceMemOUT->eError != PVRSRV_OK) | ||
797 | { | ||
798 | PVR_DPF((PVR_DBG_ERROR, "PVRSRVExportDeviceMemBW: failed to allocate handle from global handle list")); | ||
799 | return 0; | ||
800 | } | ||
801 | |||
802 | |||
803 | psKernelMemInfo->ui32Flags |= PVRSRV_MEM_EXPORTED; | ||
804 | |||
805 | return 0; | ||
636 | } | 806 | } |
637 | 807 | ||
638 | 808 | ||
639 | static IMG_INT | 809 | static IMG_INT |
640 | PVRSRVMapDeviceMemoryBW(IMG_UINT32 ui32BridgeID, | 810 | PVRSRVMapDeviceMemoryBW(IMG_UINT32 ui32BridgeID, |
641 | PVRSRV_BRIDGE_IN_MAP_DEV_MEMORY *psMapDevMemIN, | 811 | PVRSRV_BRIDGE_IN_MAP_DEV_MEMORY *psMapDevMemIN, |
642 | PVRSRV_BRIDGE_OUT_MAP_DEV_MEMORY *psMapDevMemOUT, | 812 | PVRSRV_BRIDGE_OUT_MAP_DEV_MEMORY *psMapDevMemOUT, |
643 | PVRSRV_PER_PROCESS_DATA *psPerProc) | 813 | PVRSRV_PER_PROCESS_DATA *psPerProc) |
644 | { | 814 | { |
645 | PVRSRV_KERNEL_MEM_INFO *psSrcKernelMemInfo = IMG_NULL; | 815 | PVRSRV_KERNEL_MEM_INFO *psSrcKernelMemInfo = IMG_NULL; |
646 | PVRSRV_KERNEL_MEM_INFO *psDstKernelMemInfo = IMG_NULL; | 816 | PVRSRV_KERNEL_MEM_INFO *psDstKernelMemInfo = IMG_NULL; |
647 | IMG_HANDLE hDstDevMemHeap = IMG_NULL; | 817 | IMG_HANDLE hDstDevMemHeap = IMG_NULL; |
648 | 818 | ||
649 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_MAP_DEV_MEMORY); | 819 | PVR_ASSERT(ui32BridgeID == PVRSRV_GET_BRIDGE_ID(PVRSRV_BRIDGE_MAP_DEV_MEMORY) || |
650 | 820 | ui32BridgeID == PVRSRV_GET_BRIDGE_ID(PVRSRV_BRIDGE_MAP_DEV_MEMORY_2)); | |
651 | NEW_HANDLE_BATCH_OR_ERROR(psMapDevMemOUT->eError, psPerProc, 2) | 821 | PVR_UNREFERENCED_PARAMETER(ui32BridgeID); |
652 | 822 | ||
653 | 823 | NEW_HANDLE_BATCH_OR_ERROR(psMapDevMemOUT->eError, psPerProc, 2) | |
654 | psMapDevMemOUT->eError = PVRSRVLookupHandle(KERNEL_HANDLE_BASE, | 824 | |
655 | (IMG_VOID**)&psSrcKernelMemInfo, | 825 | |
656 | psMapDevMemIN->hKernelMemInfo, | 826 | psMapDevMemOUT->eError = PVRSRVLookupHandle(KERNEL_HANDLE_BASE, |
657 | PVRSRV_HANDLE_TYPE_MEM_INFO); | 827 | (IMG_VOID**)&psSrcKernelMemInfo, |
658 | if(psMapDevMemOUT->eError != PVRSRV_OK) | 828 | psMapDevMemIN->hKernelMemInfo, |
659 | { | 829 | PVRSRV_HANDLE_TYPE_MEM_INFO); |
660 | return 0; | 830 | if(psMapDevMemOUT->eError != PVRSRV_OK) |
661 | } | 831 | { |
662 | 832 | return 0; | |
663 | 833 | } | |
664 | psMapDevMemOUT->eError = PVRSRVLookupHandle(psPerProc->psHandleBase, | 834 | |
665 | &hDstDevMemHeap, | 835 | |
666 | psMapDevMemIN->hDstDevMemHeap, | 836 | psMapDevMemOUT->eError = PVRSRVLookupHandle(psPerProc->psHandleBase, |
667 | PVRSRV_HANDLE_TYPE_DEV_MEM_HEAP); | 837 | &hDstDevMemHeap, |
668 | if(psMapDevMemOUT->eError != PVRSRV_OK) | 838 | psMapDevMemIN->hDstDevMemHeap, |
669 | { | 839 | PVRSRV_HANDLE_TYPE_DEV_MEM_HEAP); |
670 | return 0; | 840 | if(psMapDevMemOUT->eError != PVRSRV_OK) |
671 | } | 841 | { |
672 | 842 | return 0; | |
673 | 843 | } | |
674 | psMapDevMemOUT->eError = PVRSRVMapDeviceMemoryKM(psPerProc, | 844 | |
675 | psSrcKernelMemInfo, | 845 | |
676 | hDstDevMemHeap, | 846 | if (psSrcKernelMemInfo->sShareMemWorkaround.bInUse) |
677 | &psDstKernelMemInfo); | 847 | { |
678 | if(psMapDevMemOUT->eError != PVRSRV_OK) | 848 | PVR_DPF((PVR_DBG_MESSAGE, "using the mem wrap workaround.")); |
679 | { | 849 | |
680 | return 0; | 850 | |
681 | } | 851 | |
682 | 852 | ||
683 | OSMemSet(&psMapDevMemOUT->sDstClientMemInfo, | 853 | |
684 | 0, | 854 | |
685 | sizeof(psMapDevMemOUT->sDstClientMemInfo)); | 855 | |
686 | OSMemSet(&psMapDevMemOUT->sDstClientSyncInfo, | 856 | |
687 | 0, | 857 | |
688 | sizeof(psMapDevMemOUT->sDstClientSyncInfo)); | 858 | psMapDevMemOUT->eError = BM_XProcWorkaroundSetShareIndex(psSrcKernelMemInfo->sShareMemWorkaround.ui32ShareIndex); |
689 | 859 | if(psMapDevMemOUT->eError != PVRSRV_OK) | |
690 | psMapDevMemOUT->sDstClientMemInfo.pvLinAddrKM = | 860 | { |
691 | psDstKernelMemInfo->pvLinAddrKM; | 861 | PVR_DPF((PVR_DBG_ERROR, "PVRSRVMapDeviceMemoryBW(): failed to recycle shared buffer")); |
692 | 862 | return 0; | |
693 | psMapDevMemOUT->sDstClientMemInfo.pvLinAddr = 0; | 863 | } |
694 | psMapDevMemOUT->sDstClientMemInfo.sDevVAddr = psDstKernelMemInfo->sDevVAddr; | 864 | |
695 | psMapDevMemOUT->sDstClientMemInfo.ui32Flags = psDstKernelMemInfo->ui32Flags; | 865 | psMapDevMemOUT->eError = |
696 | psMapDevMemOUT->sDstClientMemInfo.ui32AllocSize = psDstKernelMemInfo->ui32AllocSize; | 866 | PVRSRVAllocDeviceMemKM(psSrcKernelMemInfo->sShareMemWorkaround.hDevCookieInt, |
697 | psMapDevMemOUT->sDstClientMemInfo.hMappingInfo = psDstKernelMemInfo->sMemBlk.hOSMemHandle; | 867 | psPerProc, |
698 | 868 | hDstDevMemHeap, | |
869 | psSrcKernelMemInfo->sShareMemWorkaround.ui32OrigReqAttribs | PVRSRV_MEM_NO_SYNCOBJ, | ||
870 | psSrcKernelMemInfo->sShareMemWorkaround.ui32OrigReqSize, | ||
871 | psSrcKernelMemInfo->sShareMemWorkaround.ui32OrigReqAlignment, | ||
872 | &psDstKernelMemInfo, | ||
873 | "" ); | ||
874 | |||
875 | |||
876 | BM_XProcWorkaroundUnsetShareIndex(psSrcKernelMemInfo->sShareMemWorkaround.ui32ShareIndex); | ||
877 | if(psMapDevMemOUT->eError != PVRSRV_OK) | ||
878 | { | ||
879 | PVR_DPF((PVR_DBG_ERROR, "lakjgfgewjlrgebhe")); | ||
880 | return 0; | ||
881 | } | ||
882 | |||
883 | if(psSrcKernelMemInfo->psKernelSyncInfo) | ||
884 | { | ||
885 | psSrcKernelMemInfo->psKernelSyncInfo->ui32RefCount++; | ||
886 | } | ||
887 | |||
888 | psDstKernelMemInfo->psKernelSyncInfo = psSrcKernelMemInfo->psKernelSyncInfo; | ||
889 | } | ||
890 | else | ||
891 | { | ||
892 | |||
893 | psMapDevMemOUT->eError = PVRSRVMapDeviceMemoryKM(psPerProc, | ||
894 | psSrcKernelMemInfo, | ||
895 | hDstDevMemHeap, | ||
896 | &psDstKernelMemInfo); | ||
897 | if(psMapDevMemOUT->eError != PVRSRV_OK) | ||
898 | { | ||
899 | return 0; | ||
900 | } | ||
901 | } | ||
902 | |||
903 | |||
904 | psDstKernelMemInfo->sShareMemWorkaround = psSrcKernelMemInfo->sShareMemWorkaround; | ||
905 | |||
906 | OSMemSet(&psMapDevMemOUT->sDstClientMemInfo, | ||
907 | 0, | ||
908 | sizeof(psMapDevMemOUT->sDstClientMemInfo)); | ||
909 | OSMemSet(&psMapDevMemOUT->sDstClientSyncInfo, | ||
910 | 0, | ||
911 | sizeof(psMapDevMemOUT->sDstClientSyncInfo)); | ||
912 | |||
913 | psMapDevMemOUT->sDstClientMemInfo.pvLinAddrKM = | ||
914 | psDstKernelMemInfo->pvLinAddrKM; | ||
915 | |||
916 | psMapDevMemOUT->sDstClientMemInfo.pvLinAddr = 0; | ||
917 | psMapDevMemOUT->sDstClientMemInfo.sDevVAddr = psDstKernelMemInfo->sDevVAddr; | ||
918 | psMapDevMemOUT->sDstClientMemInfo.ui32Flags = psDstKernelMemInfo->ui32Flags; | ||
919 | psMapDevMemOUT->sDstClientMemInfo.uAllocSize = psDstKernelMemInfo->uAllocSize; | ||
920 | #if defined (SUPPORT_SID_INTERFACE) | ||
921 | #else | ||
922 | psMapDevMemOUT->sDstClientMemInfo.hMappingInfo = psDstKernelMemInfo->sMemBlk.hOSMemHandle; | ||
923 | #endif | ||
699 | 924 | ||
700 | PVRSRVAllocHandleNR(psPerProc->psHandleBase, | 925 | |
701 | &psMapDevMemOUT->sDstClientMemInfo.hKernelMemInfo, | 926 | PVRSRVAllocHandleNR(psPerProc->psHandleBase, |
702 | psDstKernelMemInfo, | 927 | &psMapDevMemOUT->sDstClientMemInfo.hKernelMemInfo, |
703 | PVRSRV_HANDLE_TYPE_MEM_INFO, | 928 | psDstKernelMemInfo, |
704 | PVRSRV_HANDLE_ALLOC_FLAG_NONE); | 929 | PVRSRV_HANDLE_TYPE_MEM_INFO, |
705 | psMapDevMemOUT->sDstClientSyncInfo.hKernelSyncInfo = IMG_NULL; | 930 | PVRSRV_HANDLE_ALLOC_FLAG_NONE); |
931 | psMapDevMemOUT->sDstClientSyncInfo.hKernelSyncInfo = IMG_NULL; | ||
932 | |||
933 | #if defined (SUPPORT_SID_INTERFACE) | ||
934 | |||
935 | if (psDstKernelMemInfo->sMemBlk.hOSMemHandle != IMG_NULL) | ||
936 | { | ||
937 | PVRSRVAllocSubHandleNR(psPerProc->psHandleBase, | ||
938 | &psMapDevMemOUT->sDstClientMemInfo.hMappingInfo, | ||
939 | psDstKernelMemInfo->sMemBlk.hOSMemHandle, | ||
940 | PVRSRV_HANDLE_TYPE_MEM_INFO, | ||
941 | PVRSRV_HANDLE_ALLOC_FLAG_NONE, | ||
942 | psMapDevMemOUT->sDstClientMemInfo.hKernelMemInfo); | ||
943 | } | ||
944 | else | ||
945 | { | ||
946 | psMapDevMemOUT->sDstClientMemInfo.hMappingInfo = 0; | ||
947 | } | ||
948 | #endif | ||
706 | 949 | ||
950 | |||
951 | if(psDstKernelMemInfo->psKernelSyncInfo) | ||
952 | { | ||
953 | #if !defined(PVRSRV_DISABLE_UM_SYNCOBJ_MAPPINGS) | ||
954 | psMapDevMemOUT->sDstClientSyncInfo.psSyncData = | ||
955 | psDstKernelMemInfo->psKernelSyncInfo->psSyncData; | ||
956 | psMapDevMemOUT->sDstClientSyncInfo.sWriteOpsCompleteDevVAddr = | ||
957 | psDstKernelMemInfo->psKernelSyncInfo->sWriteOpsCompleteDevVAddr; | ||
958 | psMapDevMemOUT->sDstClientSyncInfo.sReadOpsCompleteDevVAddr = | ||
959 | psDstKernelMemInfo->psKernelSyncInfo->sReadOpsCompleteDevVAddr; | ||
960 | |||
961 | #if defined (SUPPORT_SID_INTERFACE) | ||
962 | |||
963 | if (psDstKernelMemInfo->psKernelSyncInfo->psSyncDataMemInfoKM->sMemBlk.hOSMemHandle != IMG_NULL) | ||
964 | { | ||
965 | PVRSRVAllocSubHandleNR(psPerProc->psHandleBase, | ||
966 | &psMapDevMemOUT->sDstClientSyncInfo.hMappingInfo, | ||
967 | psDstKernelMemInfo->psKernelSyncInfo->psSyncDataMemInfoKM->sMemBlk.hOSMemHandle, | ||
968 | PVRSRV_HANDLE_TYPE_MEM_INFO, | ||
969 | PVRSRV_HANDLE_ALLOC_FLAG_NONE, | ||
970 | psMapDevMemOUT->sDstClientMemInfo.hKernelMemInfo); | ||
971 | } | ||
972 | else | ||
973 | { | ||
974 | psMapDevMemOUT->sDstClientSyncInfo.hMappingInfo = 0; | ||
975 | } | ||
976 | #else | ||
977 | psMapDevMemOUT->sDstClientSyncInfo.hMappingInfo = | ||
978 | psDstKernelMemInfo->psKernelSyncInfo->psSyncDataMemInfoKM->sMemBlk.hOSMemHandle; | ||
979 | #endif | ||
980 | #endif | ||
707 | 981 | ||
708 | if(psDstKernelMemInfo->psKernelSyncInfo) | 982 | psMapDevMemOUT->sDstClientMemInfo.psClientSyncInfo = &psMapDevMemOUT->sDstClientSyncInfo; |
709 | { | 983 | |
710 | psMapDevMemOUT->sDstClientSyncInfo.psSyncData = | 984 | PVRSRVAllocSubHandleNR(psPerProc->psHandleBase, |
711 | psDstKernelMemInfo->psKernelSyncInfo->psSyncData; | 985 | &psMapDevMemOUT->sDstClientSyncInfo.hKernelSyncInfo, |
712 | psMapDevMemOUT->sDstClientSyncInfo.sWriteOpsCompleteDevVAddr = | 986 | psDstKernelMemInfo->psKernelSyncInfo, |
713 | psDstKernelMemInfo->psKernelSyncInfo->sWriteOpsCompleteDevVAddr; | 987 | PVRSRV_HANDLE_TYPE_SYNC_INFO, |
714 | psMapDevMemOUT->sDstClientSyncInfo.sReadOpsCompleteDevVAddr = | 988 | PVRSRV_HANDLE_ALLOC_FLAG_MULTI, |
715 | psDstKernelMemInfo->psKernelSyncInfo->sReadOpsCompleteDevVAddr; | 989 | psMapDevMemOUT->sDstClientMemInfo.hKernelMemInfo); |
716 | 990 | } | |
717 | psMapDevMemOUT->sDstClientSyncInfo.hMappingInfo = | ||
718 | psDstKernelMemInfo->psKernelSyncInfo->psSyncDataMemInfoKM->sMemBlk.hOSMemHandle; | ||
719 | |||
720 | psMapDevMemOUT->sDstClientMemInfo.psClientSyncInfo = &psMapDevMemOUT->sDstClientSyncInfo; | ||
721 | |||
722 | PVRSRVAllocSubHandleNR(psPerProc->psHandleBase, | ||
723 | &psMapDevMemOUT->sDstClientSyncInfo.hKernelSyncInfo, | ||
724 | psDstKernelMemInfo->psKernelSyncInfo, | ||
725 | PVRSRV_HANDLE_TYPE_SYNC_INFO, | ||
726 | PVRSRV_HANDLE_ALLOC_FLAG_MULTI, | ||
727 | psMapDevMemOUT->sDstClientMemInfo.hKernelMemInfo); | ||
728 | } | ||
729 | 991 | ||
730 | COMMIT_HANDLE_BATCH_OR_ERROR(psMapDevMemOUT->eError, psPerProc) | 992 | COMMIT_HANDLE_BATCH_OR_ERROR(psMapDevMemOUT->eError, psPerProc) |
731 | 993 | ||
732 | return 0; | 994 | return 0; |
733 | } | 995 | } |
734 | 996 | ||
735 | 997 | ||
736 | static IMG_INT | 998 | static IMG_INT |
737 | PVRSRVUnmapDeviceMemoryBW(IMG_UINT32 ui32BridgeID, | 999 | PVRSRVUnmapDeviceMemoryBW(IMG_UINT32 ui32BridgeID, |
738 | PVRSRV_BRIDGE_IN_UNMAP_DEV_MEMORY *psUnmapDevMemIN, | 1000 | PVRSRV_BRIDGE_IN_UNMAP_DEV_MEMORY *psUnmapDevMemIN, |
739 | PVRSRV_BRIDGE_RETURN *psRetOUT, | 1001 | PVRSRV_BRIDGE_RETURN *psRetOUT, |
740 | PVRSRV_PER_PROCESS_DATA *psPerProc) | 1002 | PVRSRV_PER_PROCESS_DATA *psPerProc) |
741 | { | 1003 | { |
742 | PVRSRV_KERNEL_MEM_INFO *psKernelMemInfo = IMG_NULL; | 1004 | PVRSRV_KERNEL_MEM_INFO *psKernelMemInfo = IMG_NULL; |
743 | 1005 | ||
744 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_UNMAP_DEV_MEMORY); | 1006 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_UNMAP_DEV_MEMORY); |
745 | 1007 | ||
746 | psRetOUT->eError = PVRSRVLookupHandle(psPerProc->psHandleBase, | 1008 | psRetOUT->eError = PVRSRVLookupHandle(psPerProc->psHandleBase, |
747 | (IMG_VOID**)&psKernelMemInfo, | 1009 | (IMG_VOID**)&psKernelMemInfo, |
748 | psUnmapDevMemIN->psKernelMemInfo, | 1010 | #if defined (SUPPORT_SID_INTERFACE) |
749 | PVRSRV_HANDLE_TYPE_MEM_INFO); | 1011 | psUnmapDevMemIN->hKernelMemInfo, |
750 | if(psRetOUT->eError != PVRSRV_OK) | 1012 | #else |
751 | { | 1013 | psUnmapDevMemIN->psKernelMemInfo, |
752 | return 0; | 1014 | #endif |
753 | } | 1015 | PVRSRV_HANDLE_TYPE_MEM_INFO); |
754 | 1016 | if(psRetOUT->eError != PVRSRV_OK) | |
755 | psRetOUT->eError = PVRSRVUnmapDeviceMemoryKM(psKernelMemInfo); | 1017 | { |
756 | if(psRetOUT->eError != PVRSRV_OK) | 1018 | return 0; |
757 | { | 1019 | } |
758 | return 0; | 1020 | |
759 | } | 1021 | if (psKernelMemInfo->sShareMemWorkaround.bInUse) |
760 | 1022 | { | |
761 | psRetOUT->eError = PVRSRVReleaseHandle(psPerProc->psHandleBase, | 1023 | psRetOUT->eError = PVRSRVFreeDeviceMemKM(psKernelMemInfo->sShareMemWorkaround.hDevCookieInt, psKernelMemInfo); |
762 | psUnmapDevMemIN->psKernelMemInfo, | 1024 | if(psRetOUT->eError != PVRSRV_OK) |
763 | PVRSRV_HANDLE_TYPE_MEM_INFO); | 1025 | { |
1026 | PVR_DPF((PVR_DBG_ERROR, "PVRSRVUnmapDeviceMemoryBW: internal error, should expect FreeDeviceMem to fail")); | ||
1027 | return 0; | ||
1028 | } | ||
1029 | } | ||
1030 | else | ||
1031 | { | ||
1032 | psRetOUT->eError = PVRSRVUnmapDeviceMemoryKM(psKernelMemInfo); | ||
1033 | if(psRetOUT->eError != PVRSRV_OK) | ||
1034 | { | ||
1035 | return 0; | ||
1036 | } | ||
1037 | } | ||
1038 | |||
1039 | psRetOUT->eError = PVRSRVReleaseHandle(psPerProc->psHandleBase, | ||
1040 | #if defined (SUPPORT_SID_INTERFACE) | ||
1041 | psUnmapDevMemIN->hKernelMemInfo, | ||
1042 | #else | ||
1043 | psUnmapDevMemIN->psKernelMemInfo, | ||
1044 | #endif | ||
1045 | PVRSRV_HANDLE_TYPE_MEM_INFO); | ||
764 | 1046 | ||
765 | return 0; | 1047 | return 0; |
766 | } | 1048 | } |
767 | 1049 | ||
768 | 1050 | ||
769 | 1051 | ||
770 | static IMG_INT | 1052 | static IMG_INT |
771 | PVRSRVMapDeviceClassMemoryBW(IMG_UINT32 ui32BridgeID, | 1053 | PVRSRVMapDeviceClassMemoryBW(IMG_UINT32 ui32BridgeID, |
772 | PVRSRV_BRIDGE_IN_MAP_DEVICECLASS_MEMORY *psMapDevClassMemIN, | 1054 | PVRSRV_BRIDGE_IN_MAP_DEVICECLASS_MEMORY *psMapDevClassMemIN, |
773 | PVRSRV_BRIDGE_OUT_MAP_DEVICECLASS_MEMORY *psMapDevClassMemOUT, | 1055 | PVRSRV_BRIDGE_OUT_MAP_DEVICECLASS_MEMORY *psMapDevClassMemOUT, |
774 | PVRSRV_PER_PROCESS_DATA *psPerProc) | 1056 | PVRSRV_PER_PROCESS_DATA *psPerProc) |
775 | { | 1057 | { |
776 | PVRSRV_KERNEL_MEM_INFO *psMemInfo; | 1058 | PVRSRV_KERNEL_MEM_INFO *psMemInfo; |
777 | IMG_HANDLE hOSMapInfo; | 1059 | IMG_HANDLE hOSMapInfo; |
778 | IMG_HANDLE hDeviceClassBufferInt; | 1060 | IMG_HANDLE hDeviceClassBufferInt; |
779 | IMG_HANDLE hDevMemContextInt; | 1061 | IMG_HANDLE hDevMemContextInt; |
780 | PVRSRV_HANDLE_TYPE eHandleType; | 1062 | PVRSRV_HANDLE_TYPE eHandleType; |
781 | 1063 | ||
782 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_MAP_DEVICECLASS_MEMORY); | 1064 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_MAP_DEVICECLASS_MEMORY); |
783 | 1065 | ||
784 | NEW_HANDLE_BATCH_OR_ERROR(psMapDevClassMemOUT->eError, psPerProc, 2) | 1066 | NEW_HANDLE_BATCH_OR_ERROR(psMapDevClassMemOUT->eError, psPerProc, 2) |
785 | 1067 | ||
786 | 1068 | ||
787 | psMapDevClassMemOUT->eError = | 1069 | psMapDevClassMemOUT->eError = |
788 | PVRSRVLookupHandleAnyType(psPerProc->psHandleBase, &hDeviceClassBufferInt, | 1070 | PVRSRVLookupHandleAnyType(psPerProc->psHandleBase, |
789 | &eHandleType, | 1071 | &hDeviceClassBufferInt, |
790 | psMapDevClassMemIN->hDeviceClassBuffer); | 1072 | &eHandleType, |
791 | 1073 | psMapDevClassMemIN->hDeviceClassBuffer); | |
792 | if(psMapDevClassMemOUT->eError != PVRSRV_OK) | 1074 | |
793 | { | 1075 | if(psMapDevClassMemOUT->eError != PVRSRV_OK) |
794 | return 0; | 1076 | { |
795 | } | 1077 | return 0; |
796 | 1078 | } | |
797 | 1079 | ||
798 | psMapDevClassMemOUT->eError = | 1080 | |
799 | PVRSRVLookupHandle(psPerProc->psHandleBase, &hDevMemContextInt, | 1081 | psMapDevClassMemOUT->eError = |
800 | psMapDevClassMemIN->hDevMemContext, | 1082 | PVRSRVLookupHandle(psPerProc->psHandleBase, |
801 | PVRSRV_HANDLE_TYPE_DEV_MEM_CONTEXT); | 1083 | &hDevMemContextInt, |
802 | 1084 | psMapDevClassMemIN->hDevMemContext, | |
803 | if(psMapDevClassMemOUT->eError != PVRSRV_OK) | 1085 | PVRSRV_HANDLE_TYPE_DEV_MEM_CONTEXT); |
804 | { | 1086 | |
805 | return 0; | 1087 | if(psMapDevClassMemOUT->eError != PVRSRV_OK) |
806 | } | 1088 | { |
807 | 1089 | return 0; | |
808 | 1090 | } | |
809 | switch(eHandleType) | 1091 | |
810 | { | 1092 | |
811 | #if defined(PVR_SECURE_HANDLES) | 1093 | switch(eHandleType) |
812 | case PVRSRV_HANDLE_TYPE_DISP_BUFFER: | 1094 | { |
813 | case PVRSRV_HANDLE_TYPE_BUF_BUFFER: | 1095 | #if defined(PVR_SECURE_HANDLES) || defined (SUPPORT_SID_INTERFACE) |
1096 | case PVRSRV_HANDLE_TYPE_DISP_BUFFER: | ||
1097 | case PVRSRV_HANDLE_TYPE_BUF_BUFFER: | ||
814 | #else | 1098 | #else |
815 | case PVRSRV_HANDLE_TYPE_NONE: | 1099 | case PVRSRV_HANDLE_TYPE_NONE: |
1100 | #endif | ||
1101 | break; | ||
1102 | default: | ||
1103 | psMapDevClassMemOUT->eError = PVRSRV_ERROR_INVALID_HANDLE_TYPE; | ||
1104 | return 0; | ||
1105 | } | ||
1106 | |||
1107 | psMapDevClassMemOUT->eError = | ||
1108 | PVRSRVMapDeviceClassMemoryKM(psPerProc, | ||
1109 | hDevMemContextInt, | ||
1110 | hDeviceClassBufferInt, | ||
1111 | &psMemInfo, | ||
1112 | &hOSMapInfo); | ||
1113 | if(psMapDevClassMemOUT->eError != PVRSRV_OK) | ||
1114 | { | ||
1115 | return 0; | ||
1116 | } | ||
1117 | |||
1118 | OSMemSet(&psMapDevClassMemOUT->sClientMemInfo, | ||
1119 | 0, | ||
1120 | sizeof(psMapDevClassMemOUT->sClientMemInfo)); | ||
1121 | OSMemSet(&psMapDevClassMemOUT->sClientSyncInfo, | ||
1122 | 0, | ||
1123 | sizeof(psMapDevClassMemOUT->sClientSyncInfo)); | ||
1124 | |||
1125 | psMapDevClassMemOUT->sClientMemInfo.pvLinAddrKM = | ||
1126 | psMemInfo->pvLinAddrKM; | ||
1127 | |||
1128 | psMapDevClassMemOUT->sClientMemInfo.pvLinAddr = 0; | ||
1129 | psMapDevClassMemOUT->sClientMemInfo.sDevVAddr = psMemInfo->sDevVAddr; | ||
1130 | psMapDevClassMemOUT->sClientMemInfo.ui32Flags = psMemInfo->ui32Flags; | ||
1131 | psMapDevClassMemOUT->sClientMemInfo.uAllocSize = psMemInfo->uAllocSize; | ||
1132 | #if defined (SUPPORT_SID_INTERFACE) | ||
1133 | if (psMemInfo->sMemBlk.hOSMemHandle != 0) | ||
1134 | { | ||
1135 | PVRSRVAllocSubHandleNR(psPerProc->psHandleBase, | ||
1136 | &psMapDevClassMemOUT->sClientMemInfo.hMappingInfo, | ||
1137 | psMemInfo->sMemBlk.hOSMemHandle, | ||
1138 | PVRSRV_HANDLE_TYPE_MEM_INFO, | ||
1139 | PVRSRV_HANDLE_ALLOC_FLAG_NONE, | ||
1140 | psMapDevClassMemIN->hDeviceClassBuffer); | ||
1141 | } | ||
1142 | else | ||
1143 | { | ||
1144 | psMapDevClassMemOUT->sClientMemInfo.hMappingInfo = 0; | ||
1145 | } | ||
1146 | #else | ||
1147 | psMapDevClassMemOUT->sClientMemInfo.hMappingInfo = psMemInfo->sMemBlk.hOSMemHandle; | ||
816 | #endif | 1148 | #endif |
817 | break; | ||
818 | default: | ||
819 | psMapDevClassMemOUT->eError = PVRSRV_ERROR_INVALID_HANDLE_TYPE; | ||
820 | return 0; | ||
821 | } | ||
822 | 1149 | ||
823 | psMapDevClassMemOUT->eError = | 1150 | PVRSRVAllocSubHandleNR(psPerProc->psHandleBase, |
824 | PVRSRVMapDeviceClassMemoryKM(psPerProc, | 1151 | &psMapDevClassMemOUT->sClientMemInfo.hKernelMemInfo, |
825 | hDevMemContextInt, | 1152 | psMemInfo, |
826 | hDeviceClassBufferInt, | 1153 | PVRSRV_HANDLE_TYPE_MEM_INFO, |
827 | &psMemInfo, | 1154 | PVRSRV_HANDLE_ALLOC_FLAG_NONE, |
828 | &hOSMapInfo); | 1155 | psMapDevClassMemIN->hDeviceClassBuffer); |
829 | if(psMapDevClassMemOUT->eError != PVRSRV_OK) | 1156 | |
830 | { | 1157 | psMapDevClassMemOUT->sClientSyncInfo.hKernelSyncInfo = IMG_NULL; |
831 | return 0; | 1158 | |
832 | } | 1159 | |
1160 | if(psMemInfo->psKernelSyncInfo) | ||
1161 | { | ||
1162 | #if !defined(PVRSRV_DISABLE_UM_SYNCOBJ_MAPPINGS) | ||
1163 | psMapDevClassMemOUT->sClientSyncInfo.psSyncData = | ||
1164 | psMemInfo->psKernelSyncInfo->psSyncData; | ||
1165 | psMapDevClassMemOUT->sClientSyncInfo.sWriteOpsCompleteDevVAddr = | ||
1166 | psMemInfo->psKernelSyncInfo->sWriteOpsCompleteDevVAddr; | ||
1167 | psMapDevClassMemOUT->sClientSyncInfo.sReadOpsCompleteDevVAddr = | ||
1168 | psMemInfo->psKernelSyncInfo->sReadOpsCompleteDevVAddr; | ||
1169 | |||
1170 | #if defined (SUPPORT_SID_INTERFACE) | ||
1171 | if (psMemInfo->psKernelSyncInfo->psSyncDataMemInfoKM->sMemBlk.hOSMemHandle != 0) | ||
1172 | { | ||
1173 | PVRSRVAllocSubHandleNR(psPerProc->psHandleBase, | ||
1174 | &psMapDevClassMemOUT->sClientSyncInfo.hMappingInfo, | ||
1175 | psMemInfo->psKernelSyncInfo->psSyncDataMemInfoKM->sMemBlk.hOSMemHandle, | ||
1176 | PVRSRV_HANDLE_TYPE_SYNC_INFO, | ||
1177 | PVRSRV_HANDLE_ALLOC_FLAG_MULTI, | ||
1178 | psMapDevClassMemOUT->sClientMemInfo.hKernelMemInfo); | ||
1179 | } | ||
1180 | else | ||
1181 | { | ||
1182 | psMapDevClassMemOUT->sClientSyncInfo.hMappingInfo = 0; | ||
1183 | } | ||
1184 | #else | ||
1185 | psMapDevClassMemOUT->sClientSyncInfo.hMappingInfo = | ||
1186 | psMemInfo->psKernelSyncInfo->psSyncDataMemInfoKM->sMemBlk.hOSMemHandle; | ||
1187 | #endif | ||
1188 | #endif | ||
833 | 1189 | ||
834 | OSMemSet(&psMapDevClassMemOUT->sClientMemInfo, | 1190 | psMapDevClassMemOUT->sClientMemInfo.psClientSyncInfo = &psMapDevClassMemOUT->sClientSyncInfo; |
835 | 0, | 1191 | |
836 | sizeof(psMapDevClassMemOUT->sClientMemInfo)); | 1192 | PVRSRVAllocSubHandleNR(psPerProc->psHandleBase, |
837 | OSMemSet(&psMapDevClassMemOUT->sClientSyncInfo, | 1193 | &psMapDevClassMemOUT->sClientSyncInfo.hKernelSyncInfo, |
838 | 0, | 1194 | psMemInfo->psKernelSyncInfo, |
839 | sizeof(psMapDevClassMemOUT->sClientSyncInfo)); | 1195 | PVRSRV_HANDLE_TYPE_SYNC_INFO, |
840 | 1196 | PVRSRV_HANDLE_ALLOC_FLAG_MULTI, | |
841 | psMapDevClassMemOUT->sClientMemInfo.pvLinAddrKM = | 1197 | psMapDevClassMemOUT->sClientMemInfo.hKernelMemInfo); |
842 | psMemInfo->pvLinAddrKM; | 1198 | } |
843 | |||
844 | psMapDevClassMemOUT->sClientMemInfo.pvLinAddr = 0; | ||
845 | psMapDevClassMemOUT->sClientMemInfo.sDevVAddr = psMemInfo->sDevVAddr; | ||
846 | psMapDevClassMemOUT->sClientMemInfo.ui32Flags = psMemInfo->ui32Flags; | ||
847 | psMapDevClassMemOUT->sClientMemInfo.ui32AllocSize = psMemInfo->ui32AllocSize; | ||
848 | psMapDevClassMemOUT->sClientMemInfo.hMappingInfo = psMemInfo->sMemBlk.hOSMemHandle; | ||
849 | |||
850 | PVRSRVAllocSubHandleNR(psPerProc->psHandleBase, | ||
851 | &psMapDevClassMemOUT->sClientMemInfo.hKernelMemInfo, | ||
852 | psMemInfo, | ||
853 | PVRSRV_HANDLE_TYPE_MEM_INFO, | ||
854 | PVRSRV_HANDLE_ALLOC_FLAG_NONE, | ||
855 | psMapDevClassMemIN->hDeviceClassBuffer); | ||
856 | |||
857 | psMapDevClassMemOUT->sClientSyncInfo.hKernelSyncInfo = IMG_NULL; | ||
858 | |||
859 | |||
860 | if(psMemInfo->psKernelSyncInfo) | ||
861 | { | ||
862 | psMapDevClassMemOUT->sClientSyncInfo.psSyncData = | ||
863 | psMemInfo->psKernelSyncInfo->psSyncData; | ||
864 | psMapDevClassMemOUT->sClientSyncInfo.sWriteOpsCompleteDevVAddr = | ||
865 | psMemInfo->psKernelSyncInfo->sWriteOpsCompleteDevVAddr; | ||
866 | psMapDevClassMemOUT->sClientSyncInfo.sReadOpsCompleteDevVAddr = | ||
867 | psMemInfo->psKernelSyncInfo->sReadOpsCompleteDevVAddr; | ||
868 | |||
869 | psMapDevClassMemOUT->sClientSyncInfo.hMappingInfo = | ||
870 | psMemInfo->psKernelSyncInfo->psSyncDataMemInfoKM->sMemBlk.hOSMemHandle; | ||
871 | |||
872 | psMapDevClassMemOUT->sClientMemInfo.psClientSyncInfo = &psMapDevClassMemOUT->sClientSyncInfo; | ||
873 | |||
874 | PVRSRVAllocSubHandleNR(psPerProc->psHandleBase, | ||
875 | &psMapDevClassMemOUT->sClientSyncInfo.hKernelSyncInfo, | ||
876 | psMemInfo->psKernelSyncInfo, | ||
877 | PVRSRV_HANDLE_TYPE_SYNC_INFO, | ||
878 | PVRSRV_HANDLE_ALLOC_FLAG_MULTI, | ||
879 | psMapDevClassMemOUT->sClientMemInfo.hKernelMemInfo); | ||
880 | } | ||
881 | 1199 | ||
882 | COMMIT_HANDLE_BATCH_OR_ERROR(psMapDevClassMemOUT->eError, psPerProc) | 1200 | COMMIT_HANDLE_BATCH_OR_ERROR(psMapDevClassMemOUT->eError, psPerProc) |
883 | 1201 | ||
884 | return 0; | 1202 | return 0; |
885 | } | 1203 | } |
886 | 1204 | ||
887 | static IMG_INT | 1205 | static IMG_INT |
888 | PVRSRVUnmapDeviceClassMemoryBW(IMG_UINT32 ui32BridgeID, | 1206 | PVRSRVUnmapDeviceClassMemoryBW(IMG_UINT32 ui32BridgeID, |
889 | PVRSRV_BRIDGE_IN_UNMAP_DEVICECLASS_MEMORY *psUnmapDevClassMemIN, | 1207 | PVRSRV_BRIDGE_IN_UNMAP_DEVICECLASS_MEMORY *psUnmapDevClassMemIN, |
890 | PVRSRV_BRIDGE_RETURN *psRetOUT, | 1208 | PVRSRV_BRIDGE_RETURN *psRetOUT, |
891 | PVRSRV_PER_PROCESS_DATA *psPerProc) | 1209 | PVRSRV_PER_PROCESS_DATA *psPerProc) |
892 | { | 1210 | { |
893 | IMG_VOID *pvKernelMemInfo; | 1211 | IMG_VOID *pvKernelMemInfo; |
894 | |||
895 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_UNMAP_DEVICECLASS_MEMORY); | ||
896 | |||
897 | psRetOUT->eError = | ||
898 | PVRSRVLookupHandle(psPerProc->psHandleBase, &pvKernelMemInfo, | ||
899 | psUnmapDevClassMemIN->psKernelMemInfo, | ||
900 | PVRSRV_HANDLE_TYPE_MEM_INFO); | ||
901 | if(psRetOUT->eError != PVRSRV_OK) | ||
902 | { | ||
903 | return 0; | ||
904 | } | ||
905 | 1212 | ||
906 | psRetOUT->eError = PVRSRVUnmapDeviceClassMemoryKM(pvKernelMemInfo); | 1213 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_UNMAP_DEVICECLASS_MEMORY); |
907 | 1214 | ||
908 | if(psRetOUT->eError != PVRSRV_OK) | 1215 | psRetOUT->eError = |
909 | { | 1216 | PVRSRVLookupHandle(psPerProc->psHandleBase, &pvKernelMemInfo, |
910 | return 0; | 1217 | #if defined (SUPPORT_SID_INTERFACE) |
911 | } | 1218 | psUnmapDevClassMemIN->hKernelMemInfo, |
912 | 1219 | #else | |
913 | psRetOUT->eError = | 1220 | psUnmapDevClassMemIN->psKernelMemInfo, |
914 | PVRSRVReleaseHandle(psPerProc->psHandleBase, | 1221 | #endif |
915 | psUnmapDevClassMemIN->psKernelMemInfo, | 1222 | PVRSRV_HANDLE_TYPE_MEM_INFO); |
916 | PVRSRV_HANDLE_TYPE_MEM_INFO); | 1223 | if(psRetOUT->eError != PVRSRV_OK) |
1224 | { | ||
1225 | return 0; | ||
1226 | } | ||
1227 | |||
1228 | psRetOUT->eError = PVRSRVUnmapDeviceClassMemoryKM(pvKernelMemInfo); | ||
1229 | |||
1230 | if(psRetOUT->eError != PVRSRV_OK) | ||
1231 | { | ||
1232 | return 0; | ||
1233 | } | ||
1234 | |||
1235 | psRetOUT->eError = | ||
1236 | PVRSRVReleaseHandle(psPerProc->psHandleBase, | ||
1237 | #if defined (SUPPORT_SID_INTERFACE) | ||
1238 | psUnmapDevClassMemIN->hKernelMemInfo, | ||
1239 | #else | ||
1240 | psUnmapDevClassMemIN->psKernelMemInfo, | ||
1241 | #endif | ||
1242 | PVRSRV_HANDLE_TYPE_MEM_INFO); | ||
917 | 1243 | ||
918 | return 0; | 1244 | return 0; |
919 | } | 1245 | } |
920 | 1246 | ||
921 | 1247 | ||
922 | #if defined(OS_PVRSRV_WRAP_EXT_MEM_BW) | 1248 | #if defined(OS_PVRSRV_WRAP_EXT_MEM_BW) |
923 | IMG_INT | 1249 | IMG_INT |
924 | PVRSRVWrapExtMemoryBW(IMG_UINT32 ui32BridgeID, | 1250 | PVRSRVWrapExtMemoryBW(IMG_UINT32 ui32BridgeID, |
925 | PVRSRV_BRIDGE_IN_WRAP_EXT_MEMORY *psWrapExtMemIN, | 1251 | PVRSRV_BRIDGE_IN_WRAP_EXT_MEMORY *psWrapExtMemIN, |
926 | PVRSRV_BRIDGE_OUT_WRAP_EXT_MEMORY *psWrapExtMemOUT, | 1252 | PVRSRV_BRIDGE_OUT_WRAP_EXT_MEMORY *psWrapExtMemOUT, |
927 | PVRSRV_PER_PROCESS_DATA *psPerProc); | 1253 | PVRSRV_PER_PROCESS_DATA *psPerProc); |
928 | #else | 1254 | #else |
929 | static IMG_INT | 1255 | static IMG_INT |
930 | PVRSRVWrapExtMemoryBW(IMG_UINT32 ui32BridgeID, | 1256 | PVRSRVWrapExtMemoryBW(IMG_UINT32 ui32BridgeID, |
931 | PVRSRV_BRIDGE_IN_WRAP_EXT_MEMORY *psWrapExtMemIN, | 1257 | PVRSRV_BRIDGE_IN_WRAP_EXT_MEMORY *psWrapExtMemIN, |
932 | PVRSRV_BRIDGE_OUT_WRAP_EXT_MEMORY *psWrapExtMemOUT, | 1258 | PVRSRV_BRIDGE_OUT_WRAP_EXT_MEMORY *psWrapExtMemOUT, |
933 | PVRSRV_PER_PROCESS_DATA *psPerProc) | 1259 | PVRSRV_PER_PROCESS_DATA *psPerProc) |
934 | { | 1260 | { |
935 | IMG_HANDLE hDevCookieInt; | 1261 | IMG_HANDLE hDevCookieInt; |
936 | IMG_HANDLE hDevMemContextInt; | 1262 | IMG_HANDLE hDevMemContextInt; |
937 | PVRSRV_KERNEL_MEM_INFO *psMemInfo; | 1263 | PVRSRV_KERNEL_MEM_INFO *psMemInfo; |
938 | IMG_SYS_PHYADDR *psSysPAddr = IMG_NULL; | 1264 | IMG_SYS_PHYADDR *psSysPAddr = IMG_NULL; |
939 | IMG_UINT32 ui32PageTableSize = 0; | 1265 | IMG_UINT32 ui32PageTableSize = 0; |
940 | |||
941 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_WRAP_EXT_MEMORY); | ||
942 | |||
943 | NEW_HANDLE_BATCH_OR_ERROR(psWrapExtMemOUT->eError, psPerProc, 2) | ||
944 | |||
945 | |||
946 | psWrapExtMemOUT->eError = | ||
947 | PVRSRVLookupHandle(psPerProc->psHandleBase, &hDevCookieInt, | ||
948 | psWrapExtMemIN->hDevCookie, | ||
949 | PVRSRV_HANDLE_TYPE_DEV_NODE); | ||
950 | if(psWrapExtMemOUT->eError != PVRSRV_OK) | ||
951 | { | ||
952 | return 0; | ||
953 | } | ||
954 | |||
955 | |||
956 | psWrapExtMemOUT->eError = | ||
957 | PVRSRVLookupHandle(psPerProc->psHandleBase, &hDevMemContextInt, | ||
958 | psWrapExtMemIN->hDevMemContext, | ||
959 | PVRSRV_HANDLE_TYPE_DEV_MEM_CONTEXT); | ||
960 | |||
961 | if(psWrapExtMemOUT->eError != PVRSRV_OK) | ||
962 | { | ||
963 | return 0; | ||
964 | } | ||
965 | |||
966 | if(psWrapExtMemIN->ui32NumPageTableEntries) | ||
967 | { | ||
968 | ui32PageTableSize = psWrapExtMemIN->ui32NumPageTableEntries | ||
969 | * sizeof(IMG_SYS_PHYADDR); | ||
970 | |||
971 | ASSIGN_AND_EXIT_ON_ERROR(psWrapExtMemOUT->eError, | ||
972 | OSAllocMem(PVRSRV_OS_PAGEABLE_HEAP, | ||
973 | ui32PageTableSize, | ||
974 | (IMG_VOID **)&psSysPAddr, 0, | ||
975 | "Page Table")); | ||
976 | |||
977 | if(CopyFromUserWrapper(psPerProc, | ||
978 | ui32BridgeID, | ||
979 | psSysPAddr, | ||
980 | psWrapExtMemIN->psSysPAddr, | ||
981 | ui32PageTableSize) != PVRSRV_OK) | ||
982 | { | ||
983 | OSFreeMem(PVRSRV_OS_PAGEABLE_HEAP, ui32PageTableSize, (IMG_VOID *)psSysPAddr, 0); | ||
984 | |||
985 | return -EFAULT; | ||
986 | } | ||
987 | } | ||
988 | |||
989 | psWrapExtMemOUT->eError = | ||
990 | PVRSRVWrapExtMemoryKM(hDevCookieInt, | ||
991 | psPerProc, | ||
992 | hDevMemContextInt, | ||
993 | psWrapExtMemIN->ui32ByteSize, | ||
994 | psWrapExtMemIN->ui32PageOffset, | ||
995 | psWrapExtMemIN->bPhysContig, | ||
996 | psSysPAddr, | ||
997 | psWrapExtMemIN->pvLinAddr, | ||
998 | psWrapExtMemIN->ui32Flags, | ||
999 | &psMemInfo); | ||
1000 | |||
1001 | if(psWrapExtMemIN->ui32NumPageTableEntries) | ||
1002 | { | ||
1003 | OSFreeMem(PVRSRV_OS_PAGEABLE_HEAP, | ||
1004 | ui32PageTableSize, | ||
1005 | (IMG_VOID *)psSysPAddr, 0); | ||
1006 | |||
1007 | } | ||
1008 | |||
1009 | if(psWrapExtMemOUT->eError != PVRSRV_OK) | ||
1010 | { | ||
1011 | return 0; | ||
1012 | } | ||
1013 | |||
1014 | psWrapExtMemOUT->sClientMemInfo.pvLinAddrKM = | ||
1015 | psMemInfo->pvLinAddrKM; | ||
1016 | |||
1017 | |||
1018 | psWrapExtMemOUT->sClientMemInfo.pvLinAddr = 0; | ||
1019 | psWrapExtMemOUT->sClientMemInfo.sDevVAddr = psMemInfo->sDevVAddr; | ||
1020 | psWrapExtMemOUT->sClientMemInfo.ui32Flags = psMemInfo->ui32Flags; | ||
1021 | psWrapExtMemOUT->sClientMemInfo.ui32AllocSize = psMemInfo->ui32AllocSize; | ||
1022 | psWrapExtMemOUT->sClientMemInfo.hMappingInfo = psMemInfo->sMemBlk.hOSMemHandle; | ||
1023 | 1266 | ||
1024 | PVRSRVAllocHandleNR(psPerProc->psHandleBase, | 1267 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_WRAP_EXT_MEMORY); |
1025 | &psWrapExtMemOUT->sClientMemInfo.hKernelMemInfo, | 1268 | |
1026 | psMemInfo, | 1269 | NEW_HANDLE_BATCH_OR_ERROR(psWrapExtMemOUT->eError, psPerProc, 2) |
1027 | PVRSRV_HANDLE_TYPE_MEM_INFO, | 1270 | |
1028 | PVRSRV_HANDLE_ALLOC_FLAG_NONE); | 1271 | |
1272 | psWrapExtMemOUT->eError = | ||
1273 | PVRSRVLookupHandle(psPerProc->psHandleBase, &hDevCookieInt, | ||
1274 | psWrapExtMemIN->hDevCookie, | ||
1275 | PVRSRV_HANDLE_TYPE_DEV_NODE); | ||
1276 | if(psWrapExtMemOUT->eError != PVRSRV_OK) | ||
1277 | { | ||
1278 | return 0; | ||
1279 | } | ||
1280 | |||
1281 | |||
1282 | psWrapExtMemOUT->eError = | ||
1283 | PVRSRVLookupHandle(psPerProc->psHandleBase, &hDevMemContextInt, | ||
1284 | psWrapExtMemIN->hDevMemContext, | ||
1285 | PVRSRV_HANDLE_TYPE_DEV_MEM_CONTEXT); | ||
1286 | |||
1287 | if(psWrapExtMemOUT->eError != PVRSRV_OK) | ||
1288 | { | ||
1289 | return 0; | ||
1290 | } | ||
1291 | |||
1292 | if(psWrapExtMemIN->ui32NumPageTableEntries) | ||
1293 | { | ||
1294 | ui32PageTableSize = psWrapExtMemIN->ui32NumPageTableEntries | ||
1295 | * sizeof(IMG_SYS_PHYADDR); | ||
1296 | |||
1297 | ASSIGN_AND_EXIT_ON_ERROR(psWrapExtMemOUT->eError, | ||
1298 | OSAllocMem(PVRSRV_OS_PAGEABLE_HEAP, | ||
1299 | ui32PageTableSize, | ||
1300 | (IMG_VOID **)&psSysPAddr, 0, | ||
1301 | "Page Table")); | ||
1302 | |||
1303 | if(CopyFromUserWrapper(psPerProc, | ||
1304 | ui32BridgeID, | ||
1305 | psSysPAddr, | ||
1306 | psWrapExtMemIN->psSysPAddr, | ||
1307 | ui32PageTableSize) != PVRSRV_OK) | ||
1308 | { | ||
1309 | OSFreeMem(PVRSRV_OS_PAGEABLE_HEAP, ui32PageTableSize, (IMG_VOID *)psSysPAddr, 0); | ||
1310 | |||
1311 | return -EFAULT; | ||
1312 | } | ||
1313 | } | ||
1314 | |||
1315 | psWrapExtMemOUT->eError = | ||
1316 | PVRSRVWrapExtMemoryKM(hDevCookieInt, | ||
1317 | psPerProc, | ||
1318 | hDevMemContextInt, | ||
1319 | psWrapExtMemIN->ui32ByteSize, | ||
1320 | psWrapExtMemIN->ui32PageOffset, | ||
1321 | psWrapExtMemIN->bPhysContig, | ||
1322 | psSysPAddr, | ||
1323 | psWrapExtMemIN->pvLinAddr, | ||
1324 | psWrapExtMemIN->ui32Flags, | ||
1325 | &psMemInfo); | ||
1326 | |||
1327 | if(psWrapExtMemIN->ui32NumPageTableEntries) | ||
1328 | { | ||
1329 | OSFreeMem(PVRSRV_OS_PAGEABLE_HEAP, | ||
1330 | ui32PageTableSize, | ||
1331 | (IMG_VOID *)psSysPAddr, 0); | ||
1332 | |||
1333 | } | ||
1334 | |||
1335 | if(psWrapExtMemOUT->eError != PVRSRV_OK) | ||
1336 | { | ||
1337 | return 0; | ||
1338 | } | ||
1339 | |||
1340 | psWrapExtMemOUT->sClientMemInfo.pvLinAddrKM = | ||
1341 | psMemInfo->pvLinAddrKM; | ||
1342 | |||
1343 | |||
1344 | psWrapExtMemOUT->sClientMemInfo.pvLinAddr = 0; | ||
1345 | psWrapExtMemOUT->sClientMemInfo.sDevVAddr = psMemInfo->sDevVAddr; | ||
1346 | psWrapExtMemOUT->sClientMemInfo.ui32Flags = psMemInfo->ui32Flags; | ||
1347 | psWrapExtMemOUT->sClientMemInfo.uAllocSize = psMemInfo->uAllocSize; | ||
1348 | #if defined (SUPPORT_SID_INTERFACE) | ||
1349 | #else | ||
1350 | psWrapExtMemOUT->sClientMemInfo.hMappingInfo = psMemInfo->sMemBlk.hOSMemHandle; | ||
1351 | #endif | ||
1029 | 1352 | ||
1030 | 1353 | PVRSRVAllocHandleNR(psPerProc->psHandleBase, | |
1031 | psWrapExtMemOUT->sClientSyncInfo.psSyncData = | 1354 | &psWrapExtMemOUT->sClientMemInfo.hKernelMemInfo, |
1032 | psMemInfo->psKernelSyncInfo->psSyncData; | 1355 | psMemInfo, |
1033 | psWrapExtMemOUT->sClientSyncInfo.sWriteOpsCompleteDevVAddr = | 1356 | PVRSRV_HANDLE_TYPE_MEM_INFO, |
1034 | psMemInfo->psKernelSyncInfo->sWriteOpsCompleteDevVAddr; | 1357 | PVRSRV_HANDLE_ALLOC_FLAG_NONE); |
1035 | psWrapExtMemOUT->sClientSyncInfo.sReadOpsCompleteDevVAddr = | 1358 | |
1036 | psMemInfo->psKernelSyncInfo->sReadOpsCompleteDevVAddr; | 1359 | #if defined (SUPPORT_SID_INTERFACE) |
1360 | |||
1361 | if (psMemInfo->sMemBlk.hOSMemHandle != IMG_NULL) | ||
1362 | { | ||
1363 | PVRSRVAllocSubHandleNR(psPerProc->psHandleBase, | ||
1364 | &psWrapExtMemOUT->sClientMemInfo.hMappingInfo, | ||
1365 | psMemInfo->sMemBlk.hOSMemHandle, | ||
1366 | PVRSRV_HANDLE_TYPE_MEM_INFO, | ||
1367 | PVRSRV_HANDLE_ALLOC_FLAG_NONE, | ||
1368 | psWrapExtMemOUT->sClientMemInfo.hKernelMemInfo); | ||
1369 | } | ||
1370 | else | ||
1371 | { | ||
1372 | psWrapExtMemOUT->sClientMemInfo.hMappingInfo = 0; | ||
1373 | } | ||
1374 | #endif | ||
1037 | 1375 | ||
1038 | psWrapExtMemOUT->sClientSyncInfo.hMappingInfo = | 1376 | |
1039 | psMemInfo->psKernelSyncInfo->psSyncDataMemInfoKM->sMemBlk.hOSMemHandle; | 1377 | #if !defined(PVRSRV_DISABLE_UM_SYNCOBJ_MAPPINGS) |
1378 | psWrapExtMemOUT->sClientSyncInfo.psSyncData = | ||
1379 | psMemInfo->psKernelSyncInfo->psSyncData; | ||
1380 | psWrapExtMemOUT->sClientSyncInfo.sWriteOpsCompleteDevVAddr = | ||
1381 | psMemInfo->psKernelSyncInfo->sWriteOpsCompleteDevVAddr; | ||
1382 | psWrapExtMemOUT->sClientSyncInfo.sReadOpsCompleteDevVAddr = | ||
1383 | psMemInfo->psKernelSyncInfo->sReadOpsCompleteDevVAddr; | ||
1384 | |||
1385 | #if defined (SUPPORT_SID_INTERFACE) | ||
1386 | |||
1387 | if (psMemInfo->psKernelSyncInfo->psSyncDataMemInfoKM->sMemBlk.hOSMemHandle != IMG_NULL) | ||
1388 | { | ||
1389 | PVRSRVAllocSubHandleNR(psPerProc->psHandleBase, | ||
1390 | &psWrapExtMemOUT->sClientSyncInfo.hMappingInfo, | ||
1391 | psMemInfo->psKernelSyncInfo->psSyncDataMemInfoKM->sMemBlk.hOSMemHandle, | ||
1392 | PVRSRV_HANDLE_TYPE_MEM_INFO, | ||
1393 | PVRSRV_HANDLE_ALLOC_FLAG_NONE, | ||
1394 | psWrapExtMemOUT->sClientMemInfo.hKernelMemInfo); | ||
1395 | } | ||
1396 | else | ||
1397 | { | ||
1398 | psWrapExtMemOUT->sClientSyncInfo.hMappingInfo = 0; | ||
1399 | } | ||
1400 | #else | ||
1401 | psWrapExtMemOUT->sClientSyncInfo.hMappingInfo = | ||
1402 | psMemInfo->psKernelSyncInfo->psSyncDataMemInfoKM->sMemBlk.hOSMemHandle; | ||
1403 | #endif | ||
1404 | #endif | ||
1040 | 1405 | ||
1041 | psWrapExtMemOUT->sClientMemInfo.psClientSyncInfo = &psWrapExtMemOUT->sClientSyncInfo; | 1406 | psWrapExtMemOUT->sClientMemInfo.psClientSyncInfo = &psWrapExtMemOUT->sClientSyncInfo; |
1042 | 1407 | ||
1043 | PVRSRVAllocSubHandleNR(psPerProc->psHandleBase, | 1408 | PVRSRVAllocSubHandleNR(psPerProc->psHandleBase, |
1044 | &psWrapExtMemOUT->sClientSyncInfo.hKernelSyncInfo, | 1409 | &psWrapExtMemOUT->sClientSyncInfo.hKernelSyncInfo, |
1045 | (IMG_HANDLE)psMemInfo->psKernelSyncInfo, | 1410 | (IMG_HANDLE)psMemInfo->psKernelSyncInfo, |
1046 | PVRSRV_HANDLE_TYPE_SYNC_INFO, | 1411 | PVRSRV_HANDLE_TYPE_SYNC_INFO, |
1047 | PVRSRV_HANDLE_ALLOC_FLAG_NONE, | 1412 | PVRSRV_HANDLE_ALLOC_FLAG_NONE, |
1048 | psWrapExtMemOUT->sClientMemInfo.hKernelMemInfo); | 1413 | psWrapExtMemOUT->sClientMemInfo.hKernelMemInfo); |
1049 | 1414 | ||
1050 | COMMIT_HANDLE_BATCH_OR_ERROR(psWrapExtMemOUT->eError, psPerProc) | 1415 | COMMIT_HANDLE_BATCH_OR_ERROR(psWrapExtMemOUT->eError, psPerProc) |
1051 | 1416 | ||
1052 | return 0; | 1417 | return 0; |
1053 | } | 1418 | } |
1054 | #endif | 1419 | #endif |
1055 | 1420 | ||
1056 | static IMG_INT | 1421 | static IMG_INT |
1057 | PVRSRVUnwrapExtMemoryBW(IMG_UINT32 ui32BridgeID, | 1422 | PVRSRVUnwrapExtMemoryBW(IMG_UINT32 ui32BridgeID, |
1058 | PVRSRV_BRIDGE_IN_UNWRAP_EXT_MEMORY *psUnwrapExtMemIN, | 1423 | PVRSRV_BRIDGE_IN_UNWRAP_EXT_MEMORY *psUnwrapExtMemIN, |
1059 | PVRSRV_BRIDGE_RETURN *psRetOUT, | 1424 | PVRSRV_BRIDGE_RETURN *psRetOUT, |
1060 | PVRSRV_PER_PROCESS_DATA *psPerProc) | 1425 | PVRSRV_PER_PROCESS_DATA *psPerProc) |
1061 | { | 1426 | { |
1062 | IMG_VOID *pvMemInfo; | 1427 | IMG_VOID *pvMemInfo; |
1063 | 1428 | ||
1064 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_UNWRAP_EXT_MEMORY); | 1429 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_UNWRAP_EXT_MEMORY); |
1065 | 1430 | ||
1066 | psRetOUT->eError = | 1431 | psRetOUT->eError = |
1067 | PVRSRVLookupHandle(psPerProc->psHandleBase, | 1432 | PVRSRVLookupHandle(psPerProc->psHandleBase, |
1068 | &pvMemInfo, | 1433 | &pvMemInfo, |
1069 | psUnwrapExtMemIN->hKernelMemInfo, | 1434 | psUnwrapExtMemIN->hKernelMemInfo, |
1070 | PVRSRV_HANDLE_TYPE_MEM_INFO); | 1435 | PVRSRV_HANDLE_TYPE_MEM_INFO); |
1071 | if(psRetOUT->eError != PVRSRV_OK) | 1436 | if(psRetOUT->eError != PVRSRV_OK) |
1072 | { | 1437 | { |
1073 | return 0; | 1438 | return 0; |
1074 | } | 1439 | } |
1075 | 1440 | ||
1076 | psRetOUT->eError = | 1441 | psRetOUT->eError = |
1077 | PVRSRVUnwrapExtMemoryKM((PVRSRV_KERNEL_MEM_INFO *)pvMemInfo); | 1442 | PVRSRVUnwrapExtMemoryKM((PVRSRV_KERNEL_MEM_INFO *)pvMemInfo); |
1078 | if(psRetOUT->eError != PVRSRV_OK) | 1443 | if(psRetOUT->eError != PVRSRV_OK) |
1079 | { | 1444 | { |
1080 | return 0; | 1445 | return 0; |
1081 | } | 1446 | } |
1082 | 1447 | ||
1083 | psRetOUT->eError = | 1448 | psRetOUT->eError = |
1084 | PVRSRVReleaseHandle(psPerProc->psHandleBase, | 1449 | PVRSRVReleaseHandle(psPerProc->psHandleBase, |
1085 | psUnwrapExtMemIN->hKernelMemInfo, | 1450 | psUnwrapExtMemIN->hKernelMemInfo, |
1086 | PVRSRV_HANDLE_TYPE_MEM_INFO); | 1451 | PVRSRV_HANDLE_TYPE_MEM_INFO); |
1087 | 1452 | ||
1088 | return 0; | 1453 | return 0; |
1089 | } | 1454 | } |
1090 | 1455 | ||
1091 | static IMG_INT | 1456 | static IMG_INT |
1092 | PVRSRVGetFreeDeviceMemBW(IMG_UINT32 ui32BridgeID, | 1457 | PVRSRVGetFreeDeviceMemBW(IMG_UINT32 ui32BridgeID, |
1093 | PVRSRV_BRIDGE_IN_GETFREEDEVICEMEM *psGetFreeDeviceMemIN, | 1458 | PVRSRV_BRIDGE_IN_GETFREEDEVICEMEM *psGetFreeDeviceMemIN, |
1094 | PVRSRV_BRIDGE_OUT_GETFREEDEVICEMEM *psGetFreeDeviceMemOUT, | 1459 | PVRSRV_BRIDGE_OUT_GETFREEDEVICEMEM *psGetFreeDeviceMemOUT, |
1095 | PVRSRV_PER_PROCESS_DATA *psPerProc) | 1460 | PVRSRV_PER_PROCESS_DATA *psPerProc) |
1096 | { | 1461 | { |
1097 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_GETFREE_DEVICEMEM); | 1462 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_GETFREE_DEVICEMEM); |
1098 | 1463 | ||
1099 | PVR_UNREFERENCED_PARAMETER(psPerProc); | 1464 | PVR_UNREFERENCED_PARAMETER(psPerProc); |
1100 | 1465 | ||
1101 | psGetFreeDeviceMemOUT->eError = | 1466 | psGetFreeDeviceMemOUT->eError = |
1102 | PVRSRVGetFreeDeviceMemKM(psGetFreeDeviceMemIN->ui32Flags, | 1467 | PVRSRVGetFreeDeviceMemKM(psGetFreeDeviceMemIN->ui32Flags, |
1103 | &psGetFreeDeviceMemOUT->ui32Total, | 1468 | &psGetFreeDeviceMemOUT->ui32Total, |
1104 | &psGetFreeDeviceMemOUT->ui32Free, | 1469 | &psGetFreeDeviceMemOUT->ui32Free, |
1105 | &psGetFreeDeviceMemOUT->ui32LargestBlock); | 1470 | &psGetFreeDeviceMemOUT->ui32LargestBlock); |
1106 | 1471 | ||
1107 | return 0; | 1472 | return 0; |
1108 | } | 1473 | } |
1109 | 1474 | ||
1110 | static IMG_INT | 1475 | static IMG_INT |
1111 | PVRMMapOSMemHandleToMMapDataBW(IMG_UINT32 ui32BridgeID, | 1476 | PVRMMapOSMemHandleToMMapDataBW(IMG_UINT32 ui32BridgeID, |
1112 | PVRSRV_BRIDGE_IN_MHANDLE_TO_MMAP_DATA *psMMapDataIN, | 1477 | PVRSRV_BRIDGE_IN_MHANDLE_TO_MMAP_DATA *psMMapDataIN, |
1113 | PVRSRV_BRIDGE_OUT_MHANDLE_TO_MMAP_DATA *psMMapDataOUT, | 1478 | PVRSRV_BRIDGE_OUT_MHANDLE_TO_MMAP_DATA *psMMapDataOUT, |
1114 | PVRSRV_PER_PROCESS_DATA *psPerProc) | 1479 | PVRSRV_PER_PROCESS_DATA *psPerProc) |
1115 | { | 1480 | { |
1116 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_MHANDLE_TO_MMAP_DATA); | 1481 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_MHANDLE_TO_MMAP_DATA); |
1117 | 1482 | ||
1118 | #if defined (__linux__) | 1483 | #if defined (__linux__) |
1119 | psMMapDataOUT->eError = | 1484 | psMMapDataOUT->eError = |
1120 | PVRMMapOSMemHandleToMMapData(psPerProc, | 1485 | PVRMMapOSMemHandleToMMapData(psPerProc, |
1121 | psMMapDataIN->hMHandle, | 1486 | psMMapDataIN->hMHandle, |
1122 | &psMMapDataOUT->ui32MMapOffset, | 1487 | &psMMapDataOUT->ui32MMapOffset, |
1123 | &psMMapDataOUT->ui32ByteOffset, | 1488 | &psMMapDataOUT->ui32ByteOffset, |
1124 | &psMMapDataOUT->ui32RealByteSize, | 1489 | &psMMapDataOUT->ui32RealByteSize, |
1125 | &psMMapDataOUT->ui32UserVAddr); | 1490 | &psMMapDataOUT->ui32UserVAddr); |
1126 | #else | 1491 | #else |
1127 | PVR_UNREFERENCED_PARAMETER(psPerProc); | 1492 | PVR_UNREFERENCED_PARAMETER(psPerProc); |
1128 | PVR_UNREFERENCED_PARAMETER(psMMapDataIN); | 1493 | PVR_UNREFERENCED_PARAMETER(psMMapDataIN); |
1129 | 1494 | ||
1130 | psMMapDataOUT->eError = PVRSRV_ERROR_NOT_SUPPORTED; | 1495 | psMMapDataOUT->eError = PVRSRV_ERROR_NOT_SUPPORTED; |
1131 | #endif | 1496 | #endif |
1132 | return 0; | 1497 | return 0; |
1133 | } | 1498 | } |
1134 | 1499 | ||
1135 | 1500 | ||
1136 | static IMG_INT | 1501 | static IMG_INT |
1137 | PVRMMapReleaseMMapDataBW(IMG_UINT32 ui32BridgeID, | 1502 | PVRMMapReleaseMMapDataBW(IMG_UINT32 ui32BridgeID, |
1138 | PVRSRV_BRIDGE_IN_RELEASE_MMAP_DATA *psMMapDataIN, | 1503 | PVRSRV_BRIDGE_IN_RELEASE_MMAP_DATA *psMMapDataIN, |
1139 | PVRSRV_BRIDGE_OUT_RELEASE_MMAP_DATA *psMMapDataOUT, | 1504 | PVRSRV_BRIDGE_OUT_RELEASE_MMAP_DATA *psMMapDataOUT, |
1140 | PVRSRV_PER_PROCESS_DATA *psPerProc) | 1505 | PVRSRV_PER_PROCESS_DATA *psPerProc) |
1141 | { | 1506 | { |
1142 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_RELEASE_MMAP_DATA); | 1507 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_RELEASE_MMAP_DATA); |
1143 | 1508 | ||
1144 | #if defined (__linux__) | 1509 | #if defined (__linux__) |
1145 | psMMapDataOUT->eError = | 1510 | psMMapDataOUT->eError = |
1146 | PVRMMapReleaseMMapData(psPerProc, | 1511 | PVRMMapReleaseMMapData(psPerProc, |
1147 | psMMapDataIN->hMHandle, | 1512 | psMMapDataIN->hMHandle, |
1148 | &psMMapDataOUT->bMUnmap, | 1513 | &psMMapDataOUT->bMUnmap, |
1149 | &psMMapDataOUT->ui32RealByteSize, | 1514 | &psMMapDataOUT->ui32RealByteSize, |
1150 | &psMMapDataOUT->ui32UserVAddr); | 1515 | &psMMapDataOUT->ui32UserVAddr); |
1151 | #else | 1516 | #else |
1152 | |||
1153 | PVR_UNREFERENCED_PARAMETER(psPerProc); | ||
1154 | PVR_UNREFERENCED_PARAMETER(psMMapDataIN); | ||
1155 | 1517 | ||
1156 | psMMapDataOUT->eError = PVRSRV_ERROR_NOT_SUPPORTED; | 1518 | PVR_UNREFERENCED_PARAMETER(psPerProc); |
1157 | #endif | 1519 | PVR_UNREFERENCED_PARAMETER(psMMapDataIN); |
1158 | return 0; | 1520 | |
1521 | psMMapDataOUT->eError = PVRSRV_ERROR_NOT_SUPPORTED; | ||
1522 | #endif | ||
1523 | return 0; | ||
1524 | } | ||
1525 | |||
1526 | |||
1527 | #if defined (SUPPORT_SID_INTERFACE) | ||
1528 | static IMG_INT | ||
1529 | PVRSRVChangeDeviceMemoryAttributesBW(IMG_UINT32 ui32BridgeID, | ||
1530 | PVRSRV_BRIDGE_IN_CHG_DEV_MEM_ATTRIBS *psChgMemAttribIN, | ||
1531 | PVRSRV_BRIDGE_RETURN *psRetOUT, | ||
1532 | PVRSRV_PER_PROCESS_DATA *psPerProc) | ||
1533 | { | ||
1534 | IMG_HANDLE hKernelMemInfo; | ||
1535 | |||
1536 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_CHG_DEV_MEM_ATTRIBS); | ||
1537 | |||
1538 | psRetOUT->eError = | ||
1539 | PVRSRVLookupHandle(psPerProc->psHandleBase, | ||
1540 | &hKernelMemInfo, | ||
1541 | psChgMemAttribIN->hKernelMemInfo, | ||
1542 | PVRSRV_HANDLE_TYPE_MEM_INFO); | ||
1543 | |||
1544 | if(psRetOUT->eError != PVRSRV_OK) | ||
1545 | { | ||
1546 | return 0; | ||
1547 | } | ||
1548 | |||
1549 | psRetOUT->eError = | ||
1550 | PVRSRVChangeDeviceMemoryAttributesKM(hKernelMemInfo, psChgMemAttribIN->ui32Attribs); | ||
1551 | |||
1552 | return 0; | ||
1159 | } | 1553 | } |
1554 | #else | ||
1555 | static IMG_INT | ||
1556 | PVRSRVChangeDeviceMemoryAttributesBW(IMG_UINT32 ui32BridgeID, | ||
1557 | PVRSRV_BRIDGE_IN_CHG_DEV_MEM_ATTRIBS *psChgMemAttribIN, | ||
1558 | PVRSRV_BRIDGE_RETURN *psRetOUT, | ||
1559 | PVRSRV_PER_PROCESS_DATA *psPerProc) | ||
1560 | { | ||
1561 | PVR_UNREFERENCED_PARAMETER(ui32BridgeID); | ||
1562 | PVR_UNREFERENCED_PARAMETER(psChgMemAttribIN); | ||
1563 | PVR_UNREFERENCED_PARAMETER(psRetOUT); | ||
1564 | PVR_UNREFERENCED_PARAMETER(psPerProc); | ||
1160 | 1565 | ||
1566 | return 0; | ||
1567 | } | ||
1568 | #endif | ||
1161 | 1569 | ||
1162 | #ifdef PDUMP | 1570 | #ifdef PDUMP |
1163 | static IMG_INT | 1571 | static IMG_INT |
1164 | PDumpIsCaptureFrameBW(IMG_UINT32 ui32BridgeID, | 1572 | PDumpIsCaptureFrameBW(IMG_UINT32 ui32BridgeID, |
1165 | IMG_VOID *psBridgeIn, | 1573 | IMG_VOID *psBridgeIn, |
1166 | PVRSRV_BRIDGE_OUT_PDUMP_ISCAPTURING *psPDumpIsCapturingOUT, | 1574 | PVRSRV_BRIDGE_OUT_PDUMP_ISCAPTURING *psPDumpIsCapturingOUT, |
1167 | PVRSRV_PER_PROCESS_DATA *psPerProc) | 1575 | PVRSRV_PER_PROCESS_DATA *psPerProc) |
1168 | { | 1576 | { |
1169 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_PDUMP_ISCAPTURING); | 1577 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_PDUMP_ISCAPTURING); |
1170 | PVR_UNREFERENCED_PARAMETER(psBridgeIn); | 1578 | PVR_UNREFERENCED_PARAMETER(psBridgeIn); |
1171 | PVR_UNREFERENCED_PARAMETER(psPerProc); | 1579 | PVR_UNREFERENCED_PARAMETER(psPerProc); |
1172 | 1580 | ||
1173 | psPDumpIsCapturingOUT->bIsCapturing = PDumpIsCaptureFrameKM(); | 1581 | psPDumpIsCapturingOUT->bIsCapturing = PDumpIsCaptureFrameKM(); |
1174 | psPDumpIsCapturingOUT->eError = PVRSRV_OK; | 1582 | psPDumpIsCapturingOUT->eError = PVRSRV_OK; |
1175 | 1583 | ||
1176 | return 0; | 1584 | return 0; |
1177 | } | 1585 | } |
1178 | 1586 | ||
1179 | static IMG_INT | 1587 | static IMG_INT |
1180 | PDumpCommentBW(IMG_UINT32 ui32BridgeID, | 1588 | PDumpCommentBW(IMG_UINT32 ui32BridgeID, |
1181 | PVRSRV_BRIDGE_IN_PDUMP_COMMENT *psPDumpCommentIN, | 1589 | PVRSRV_BRIDGE_IN_PDUMP_COMMENT *psPDumpCommentIN, |
1182 | PVRSRV_BRIDGE_RETURN *psRetOUT, | 1590 | PVRSRV_BRIDGE_RETURN *psRetOUT, |
1183 | PVRSRV_PER_PROCESS_DATA *psPerProc) | 1591 | PVRSRV_PER_PROCESS_DATA *psPerProc) |
1184 | { | 1592 | { |
1185 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_PDUMP_COMMENT); | 1593 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_PDUMP_COMMENT); |
1186 | PVR_UNREFERENCED_PARAMETER(psPerProc); | 1594 | PVR_UNREFERENCED_PARAMETER(psPerProc); |
1187 | 1595 | ||
1188 | psRetOUT->eError = PDumpCommentKM(&psPDumpCommentIN->szComment[0], | 1596 | psRetOUT->eError = PDumpCommentKM(&psPDumpCommentIN->szComment[0], |
1189 | psPDumpCommentIN->ui32Flags); | 1597 | psPDumpCommentIN->ui32Flags); |
1190 | return 0; | 1598 | return 0; |
1191 | } | 1599 | } |
1192 | 1600 | ||
1193 | static IMG_INT | 1601 | static IMG_INT |
1194 | PDumpSetFrameBW(IMG_UINT32 ui32BridgeID, | 1602 | PDumpSetFrameBW(IMG_UINT32 ui32BridgeID, |
1195 | PVRSRV_BRIDGE_IN_PDUMP_SETFRAME *psPDumpSetFrameIN, | 1603 | PVRSRV_BRIDGE_IN_PDUMP_SETFRAME *psPDumpSetFrameIN, |
1196 | PVRSRV_BRIDGE_RETURN *psRetOUT, | 1604 | PVRSRV_BRIDGE_RETURN *psRetOUT, |
1197 | PVRSRV_PER_PROCESS_DATA *psPerProc) | 1605 | PVRSRV_PER_PROCESS_DATA *psPerProc) |
1198 | { | 1606 | { |
1199 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_PDUMP_SETFRAME); | 1607 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_PDUMP_SETFRAME); |
1200 | PVR_UNREFERENCED_PARAMETER(psPerProc); | 1608 | PVR_UNREFERENCED_PARAMETER(psPerProc); |
1201 | 1609 | ||
1202 | psRetOUT->eError = PDumpSetFrameKM(psPDumpSetFrameIN->ui32Frame); | 1610 | psRetOUT->eError = PDumpSetFrameKM(psPDumpSetFrameIN->ui32Frame); |
1203 | 1611 | ||
1204 | return 0; | 1612 | return 0; |
1205 | } | 1613 | } |
1206 | 1614 | ||
1207 | static IMG_INT | 1615 | static IMG_INT |
1208 | PDumpRegWithFlagsBW(IMG_UINT32 ui32BridgeID, | 1616 | PDumpRegWithFlagsBW(IMG_UINT32 ui32BridgeID, |
1209 | PVRSRV_BRIDGE_IN_PDUMP_DUMPREG *psPDumpRegDumpIN, | 1617 | PVRSRV_BRIDGE_IN_PDUMP_DUMPREG *psPDumpRegDumpIN, |
1210 | PVRSRV_BRIDGE_RETURN *psRetOUT, | 1618 | PVRSRV_BRIDGE_RETURN *psRetOUT, |
1211 | PVRSRV_PER_PROCESS_DATA *psPerProc) | 1619 | PVRSRV_PER_PROCESS_DATA *psPerProc) |
1212 | { | 1620 | { |
1213 | PVRSRV_DEVICE_NODE *psDeviceNode; | 1621 | PVRSRV_DEVICE_NODE *psDeviceNode; |
1214 | 1622 | ||
1215 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_PDUMP_REG); | 1623 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_PDUMP_REG); |
1216 | 1624 | ||
1217 | psRetOUT->eError = | 1625 | psRetOUT->eError = |
1218 | PVRSRVLookupHandle(psPerProc->psHandleBase, | 1626 | PVRSRVLookupHandle(psPerProc->psHandleBase, |
1219 | (IMG_VOID **)&psDeviceNode, | 1627 | (IMG_VOID **)&psDeviceNode, |
1220 | psPDumpRegDumpIN->hDevCookie, | 1628 | psPDumpRegDumpIN->hDevCookie, |
1221 | PVRSRV_HANDLE_TYPE_DEV_NODE); | 1629 | PVRSRV_HANDLE_TYPE_DEV_NODE); |
1222 | if(psRetOUT->eError != PVRSRV_OK) | 1630 | if(psRetOUT->eError != PVRSRV_OK) |
1223 | { | 1631 | { |
1224 | return 0; | 1632 | return 0; |
1225 | } | 1633 | } |
1226 | 1634 | ||
1227 | psRetOUT->eError = PDumpRegWithFlagsKM (psPDumpRegDumpIN->szRegRegion, | 1635 | psRetOUT->eError = PDumpRegWithFlagsKM (psPDumpRegDumpIN->szRegRegion, |
1228 | psPDumpRegDumpIN->sHWReg.ui32RegAddr, | 1636 | psPDumpRegDumpIN->sHWReg.ui32RegAddr, |
1229 | psPDumpRegDumpIN->sHWReg.ui32RegVal, | 1637 | psPDumpRegDumpIN->sHWReg.ui32RegVal, |
1230 | psPDumpRegDumpIN->ui32Flags); | 1638 | psPDumpRegDumpIN->ui32Flags); |
1231 | 1639 | ||
1232 | return 0; | 1640 | return 0; |
1233 | } | 1641 | } |
1234 | 1642 | ||
1235 | static IMG_INT | 1643 | static IMG_INT |
1236 | PDumpRegPolBW(IMG_UINT32 ui32BridgeID, | 1644 | PDumpRegPolBW(IMG_UINT32 ui32BridgeID, |
1237 | PVRSRV_BRIDGE_IN_PDUMP_REGPOL *psPDumpRegPolIN, | 1645 | PVRSRV_BRIDGE_IN_PDUMP_REGPOL *psPDumpRegPolIN, |
1238 | PVRSRV_BRIDGE_RETURN *psRetOUT, | 1646 | PVRSRV_BRIDGE_RETURN *psRetOUT, |
1239 | PVRSRV_PER_PROCESS_DATA *psPerProc) | 1647 | PVRSRV_PER_PROCESS_DATA *psPerProc) |
1240 | { | 1648 | { |
1241 | PVRSRV_DEVICE_NODE *psDeviceNode; | 1649 | PVRSRV_DEVICE_NODE *psDeviceNode; |
1242 | 1650 | ||
1243 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_PDUMP_REGPOL); | 1651 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_PDUMP_REGPOL); |
1244 | 1652 | ||
1245 | psRetOUT->eError = | 1653 | psRetOUT->eError = |
1246 | PVRSRVLookupHandle(psPerProc->psHandleBase, | 1654 | PVRSRVLookupHandle(psPerProc->psHandleBase, |
1247 | (IMG_VOID **)&psDeviceNode, | 1655 | (IMG_VOID **)&psDeviceNode, |
1248 | psPDumpRegPolIN->hDevCookie, | 1656 | psPDumpRegPolIN->hDevCookie, |
1249 | PVRSRV_HANDLE_TYPE_DEV_NODE); | 1657 | PVRSRV_HANDLE_TYPE_DEV_NODE); |
1250 | if(psRetOUT->eError != PVRSRV_OK) | 1658 | if(psRetOUT->eError != PVRSRV_OK) |
1251 | { | 1659 | { |
1252 | return 0; | 1660 | return 0; |
1253 | } | 1661 | } |
1254 | 1662 | ||
1255 | 1663 | ||
1256 | psRetOUT->eError = | 1664 | psRetOUT->eError = |
1257 | PDumpRegPolWithFlagsKM(psPDumpRegPolIN->szRegRegion, | 1665 | PDumpRegPolWithFlagsKM(psPDumpRegPolIN->szRegRegion, |
1258 | psPDumpRegPolIN->sHWReg.ui32RegAddr, | 1666 | psPDumpRegPolIN->sHWReg.ui32RegAddr, |
1259 | psPDumpRegPolIN->sHWReg.ui32RegVal, | 1667 | psPDumpRegPolIN->sHWReg.ui32RegVal, |
1260 | psPDumpRegPolIN->ui32Mask, | 1668 | psPDumpRegPolIN->ui32Mask, |
1261 | psPDumpRegPolIN->ui32Flags); | 1669 | psPDumpRegPolIN->ui32Flags, |
1262 | 1670 | PDUMP_POLL_OPERATOR_EQUAL); | |
1263 | return 0; | 1671 | |
1672 | return 0; | ||
1264 | } | 1673 | } |
1265 | 1674 | ||
1266 | static IMG_INT | 1675 | static IMG_INT |
1267 | PDumpMemPolBW(IMG_UINT32 ui32BridgeID, | 1676 | PDumpMemPolBW(IMG_UINT32 ui32BridgeID, |
1268 | PVRSRV_BRIDGE_IN_PDUMP_MEMPOL *psPDumpMemPolIN, | 1677 | PVRSRV_BRIDGE_IN_PDUMP_MEMPOL *psPDumpMemPolIN, |
1269 | PVRSRV_BRIDGE_RETURN *psRetOUT, | 1678 | PVRSRV_BRIDGE_RETURN *psRetOUT, |
1270 | PVRSRV_PER_PROCESS_DATA *psPerProc) | 1679 | PVRSRV_PER_PROCESS_DATA *psPerProc) |
1271 | { | 1680 | { |
1272 | IMG_VOID *pvMemInfo; | 1681 | IMG_VOID *pvMemInfo; |
1273 | |||
1274 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_PDUMP_MEMPOL); | ||
1275 | |||
1276 | psRetOUT->eError = | ||
1277 | PVRSRVLookupHandle(psPerProc->psHandleBase, | ||
1278 | &pvMemInfo, | ||
1279 | psPDumpMemPolIN->psKernelMemInfo, | ||
1280 | PVRSRV_HANDLE_TYPE_MEM_INFO); | ||
1281 | if(psRetOUT->eError != PVRSRV_OK) | ||
1282 | { | ||
1283 | return 0; | ||
1284 | } | ||
1285 | 1682 | ||
1286 | psRetOUT->eError = | 1683 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_PDUMP_MEMPOL); |
1287 | PDumpMemPolKM(((PVRSRV_KERNEL_MEM_INFO *)pvMemInfo), | ||
1288 | psPDumpMemPolIN->ui32Offset, | ||
1289 | psPDumpMemPolIN->ui32Value, | ||
1290 | psPDumpMemPolIN->ui32Mask, | ||
1291 | psPDumpMemPolIN->eOperator, | ||
1292 | psPDumpMemPolIN->ui32Flags, | ||
1293 | MAKEUNIQUETAG(pvMemInfo)); | ||
1294 | 1684 | ||
1295 | return 0; | 1685 | psRetOUT->eError = |
1686 | PVRSRVLookupHandle(psPerProc->psHandleBase, | ||
1687 | &pvMemInfo, | ||
1688 | #if defined (SUPPORT_SID_INTERFACE) | ||
1689 | psPDumpMemPolIN->hKernelMemInfo, | ||
1690 | #else | ||
1691 | psPDumpMemPolIN->psKernelMemInfo, | ||
1692 | #endif | ||
1693 | PVRSRV_HANDLE_TYPE_MEM_INFO); | ||
1694 | if(psRetOUT->eError != PVRSRV_OK) | ||
1695 | { | ||
1696 | return 0; | ||
1697 | } | ||
1698 | |||
1699 | psRetOUT->eError = | ||
1700 | PDumpMemPolKM(((PVRSRV_KERNEL_MEM_INFO *)pvMemInfo), | ||
1701 | psPDumpMemPolIN->ui32Offset, | ||
1702 | psPDumpMemPolIN->ui32Value, | ||
1703 | psPDumpMemPolIN->ui32Mask, | ||
1704 | psPDumpMemPolIN->eOperator, | ||
1705 | psPDumpMemPolIN->ui32Flags, | ||
1706 | MAKEUNIQUETAG(pvMemInfo)); | ||
1707 | |||
1708 | return 0; | ||
1296 | } | 1709 | } |
1297 | 1710 | ||
1298 | static IMG_INT | 1711 | static IMG_INT |
1299 | PDumpMemBW(IMG_UINT32 ui32BridgeID, | 1712 | PDumpMemBW(IMG_UINT32 ui32BridgeID, |
1300 | PVRSRV_BRIDGE_IN_PDUMP_DUMPMEM *psPDumpMemDumpIN, | 1713 | PVRSRV_BRIDGE_IN_PDUMP_DUMPMEM *psPDumpMemDumpIN, |
1301 | PVRSRV_BRIDGE_RETURN *psRetOUT, | 1714 | PVRSRV_BRIDGE_RETURN *psRetOUT, |
1302 | PVRSRV_PER_PROCESS_DATA *psPerProc) | 1715 | PVRSRV_PER_PROCESS_DATA *psPerProc) |
1303 | { | 1716 | { |
1304 | IMG_VOID *pvMemInfo; | 1717 | IMG_VOID *pvMemInfo; |
1305 | |||
1306 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_PDUMP_DUMPMEM); | ||
1307 | |||
1308 | psRetOUT->eError = | ||
1309 | PVRSRVLookupHandle(psPerProc->psHandleBase, | ||
1310 | &pvMemInfo, | ||
1311 | psPDumpMemDumpIN->psKernelMemInfo, | ||
1312 | PVRSRV_HANDLE_TYPE_MEM_INFO); | ||
1313 | if(psRetOUT->eError != PVRSRV_OK) | ||
1314 | { | ||
1315 | return 0; | ||
1316 | } | ||
1317 | 1718 | ||
1318 | psRetOUT->eError = | 1719 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_PDUMP_DUMPMEM); |
1319 | PDumpMemUM(psPerProc, | ||
1320 | psPDumpMemDumpIN->pvAltLinAddr, | ||
1321 | psPDumpMemDumpIN->pvLinAddr, | ||
1322 | pvMemInfo, | ||
1323 | psPDumpMemDumpIN->ui32Offset, | ||
1324 | psPDumpMemDumpIN->ui32Bytes, | ||
1325 | psPDumpMemDumpIN->ui32Flags, | ||
1326 | MAKEUNIQUETAG(pvMemInfo)); | ||
1327 | 1720 | ||
1328 | return 0; | 1721 | psRetOUT->eError = |
1722 | PVRSRVLookupHandle(psPerProc->psHandleBase, | ||
1723 | &pvMemInfo, | ||
1724 | #if defined (SUPPORT_SID_INTERFACE) | ||
1725 | psPDumpMemDumpIN->hKernelMemInfo, | ||
1726 | #else | ||
1727 | psPDumpMemDumpIN->psKernelMemInfo, | ||
1728 | #endif | ||
1729 | PVRSRV_HANDLE_TYPE_MEM_INFO); | ||
1730 | if(psRetOUT->eError != PVRSRV_OK) | ||
1731 | { | ||
1732 | return 0; | ||
1733 | } | ||
1734 | |||
1735 | psRetOUT->eError = | ||
1736 | PDumpMemUM(psPerProc, | ||
1737 | psPDumpMemDumpIN->pvAltLinAddr, | ||
1738 | psPDumpMemDumpIN->pvLinAddr, | ||
1739 | pvMemInfo, | ||
1740 | psPDumpMemDumpIN->ui32Offset, | ||
1741 | psPDumpMemDumpIN->ui32Bytes, | ||
1742 | psPDumpMemDumpIN->ui32Flags, | ||
1743 | MAKEUNIQUETAG(pvMemInfo)); | ||
1744 | |||
1745 | return 0; | ||
1329 | } | 1746 | } |
1330 | 1747 | ||
1331 | static IMG_INT | 1748 | static IMG_INT |
1332 | PDumpBitmapBW(IMG_UINT32 ui32BridgeID, | 1749 | PDumpBitmapBW(IMG_UINT32 ui32BridgeID, |
1333 | PVRSRV_BRIDGE_IN_PDUMP_BITMAP *psPDumpBitmapIN, | 1750 | PVRSRV_BRIDGE_IN_PDUMP_BITMAP *psPDumpBitmapIN, |
1334 | PVRSRV_BRIDGE_RETURN *psRetOUT, | 1751 | PVRSRV_BRIDGE_RETURN *psRetOUT, |
1335 | PVRSRV_PER_PROCESS_DATA *psPerProc) | 1752 | PVRSRV_PER_PROCESS_DATA *psPerProc) |
1336 | { | 1753 | { |
1337 | PVRSRV_DEVICE_NODE *psDeviceNode; | 1754 | PVRSRV_DEVICE_NODE *psDeviceNode; |
1338 | IMG_HANDLE hDevMemContextInt; | 1755 | IMG_HANDLE hDevMemContextInt; |
1339 | 1756 | ||
1340 | PVR_UNREFERENCED_PARAMETER(ui32BridgeID); | 1757 | PVR_UNREFERENCED_PARAMETER(ui32BridgeID); |
1341 | 1758 | ||
1342 | psRetOUT->eError = | 1759 | psRetOUT->eError = |
1343 | PVRSRVLookupHandle(psPerProc->psHandleBase, (IMG_VOID **)&psDeviceNode, | 1760 | PVRSRVLookupHandle(psPerProc->psHandleBase, (IMG_VOID **)&psDeviceNode, |
1344 | psPDumpBitmapIN->hDevCookie, | 1761 | psPDumpBitmapIN->hDevCookie, |
1345 | PVRSRV_HANDLE_TYPE_DEV_NODE); | 1762 | PVRSRV_HANDLE_TYPE_DEV_NODE); |
1346 | 1763 | ||
1347 | psRetOUT->eError = | 1764 | psRetOUT->eError = |
1348 | PVRSRVLookupHandle( psPerProc->psHandleBase, | 1765 | PVRSRVLookupHandle( psPerProc->psHandleBase, |
1349 | &hDevMemContextInt, | 1766 | &hDevMemContextInt, |
1350 | psPDumpBitmapIN->hDevMemContext, | 1767 | psPDumpBitmapIN->hDevMemContext, |
1351 | PVRSRV_HANDLE_TYPE_DEV_MEM_CONTEXT); | 1768 | PVRSRV_HANDLE_TYPE_DEV_MEM_CONTEXT); |
1352 | 1769 | ||
1353 | if(psRetOUT->eError != PVRSRV_OK) | 1770 | if(psRetOUT->eError != PVRSRV_OK) |
1354 | { | 1771 | { |
1355 | return 0; | 1772 | return 0; |
1356 | } | 1773 | } |
1357 | 1774 | ||
1358 | psRetOUT->eError = | 1775 | psRetOUT->eError = |
1359 | PDumpBitmapKM(psDeviceNode, | 1776 | PDumpBitmapKM(psDeviceNode, |
1360 | &psPDumpBitmapIN->szFileName[0], | 1777 | &psPDumpBitmapIN->szFileName[0], |
1361 | psPDumpBitmapIN->ui32FileOffset, | 1778 | psPDumpBitmapIN->ui32FileOffset, |
1362 | psPDumpBitmapIN->ui32Width, | 1779 | psPDumpBitmapIN->ui32Width, |
1363 | psPDumpBitmapIN->ui32Height, | 1780 | psPDumpBitmapIN->ui32Height, |
1364 | psPDumpBitmapIN->ui32StrideInBytes, | 1781 | psPDumpBitmapIN->ui32StrideInBytes, |
1365 | psPDumpBitmapIN->sDevBaseAddr, | 1782 | psPDumpBitmapIN->sDevBaseAddr, |
1366 | hDevMemContextInt, | 1783 | hDevMemContextInt, |
1367 | psPDumpBitmapIN->ui32Size, | 1784 | psPDumpBitmapIN->ui32Size, |
1368 | psPDumpBitmapIN->ePixelFormat, | 1785 | psPDumpBitmapIN->ePixelFormat, |
1369 | psPDumpBitmapIN->eMemFormat, | 1786 | psPDumpBitmapIN->eMemFormat, |
1370 | psPDumpBitmapIN->ui32Flags); | 1787 | psPDumpBitmapIN->ui32Flags); |
1371 | 1788 | ||
1372 | return 0; | 1789 | return 0; |
1373 | } | 1790 | } |
1374 | 1791 | ||
1375 | static IMG_INT | 1792 | static IMG_INT |
1376 | PDumpReadRegBW(IMG_UINT32 ui32BridgeID, | 1793 | PDumpReadRegBW(IMG_UINT32 ui32BridgeID, |
1377 | PVRSRV_BRIDGE_IN_PDUMP_READREG *psPDumpReadRegIN, | 1794 | PVRSRV_BRIDGE_IN_PDUMP_READREG *psPDumpReadRegIN, |
1378 | PVRSRV_BRIDGE_RETURN *psRetOUT, | 1795 | PVRSRV_BRIDGE_RETURN *psRetOUT, |
1379 | PVRSRV_PER_PROCESS_DATA *psPerProc) | 1796 | PVRSRV_PER_PROCESS_DATA *psPerProc) |
1380 | { | 1797 | { |
1381 | PVRSRV_DEVICE_NODE *psDeviceNode; | 1798 | PVRSRV_DEVICE_NODE *psDeviceNode; |
1382 | 1799 | ||
1383 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_PDUMP_DUMPREADREG); | 1800 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_PDUMP_DUMPREADREG); |
1384 | 1801 | ||
1385 | psRetOUT->eError = | 1802 | psRetOUT->eError = |
1386 | PVRSRVLookupHandle(psPerProc->psHandleBase, (IMG_VOID **)&psDeviceNode, | 1803 | PVRSRVLookupHandle(psPerProc->psHandleBase, (IMG_VOID **)&psDeviceNode, |
1387 | psPDumpReadRegIN->hDevCookie, | 1804 | psPDumpReadRegIN->hDevCookie, |
1388 | PVRSRV_HANDLE_TYPE_DEV_NODE); | 1805 | PVRSRV_HANDLE_TYPE_DEV_NODE); |
1389 | 1806 | ||
1390 | psRetOUT->eError = | 1807 | psRetOUT->eError = |
1391 | PDumpReadRegKM(&psPDumpReadRegIN->szRegRegion[0], | 1808 | PDumpReadRegKM(&psPDumpReadRegIN->szRegRegion[0], |
1392 | &psPDumpReadRegIN->szFileName[0], | 1809 | &psPDumpReadRegIN->szFileName[0], |
1393 | psPDumpReadRegIN->ui32FileOffset, | 1810 | psPDumpReadRegIN->ui32FileOffset, |
1394 | psPDumpReadRegIN->ui32Address, | 1811 | psPDumpReadRegIN->ui32Address, |
1395 | psPDumpReadRegIN->ui32Size, | 1812 | psPDumpReadRegIN->ui32Size, |
1396 | psPDumpReadRegIN->ui32Flags); | 1813 | psPDumpReadRegIN->ui32Flags); |
1397 | 1814 | ||
1398 | return 0; | 1815 | return 0; |
1399 | } | 1816 | } |
1400 | 1817 | ||
1401 | static IMG_INT | 1818 | static IMG_INT |
1402 | PDumpDriverInfoBW(IMG_UINT32 ui32BridgeID, | 1819 | PDumpMemPagesBW(IMG_UINT32 ui32BridgeID, |
1403 | PVRSRV_BRIDGE_IN_PDUMP_DRIVERINFO *psPDumpDriverInfoIN, | 1820 | PVRSRV_BRIDGE_IN_PDUMP_MEMPAGES *psPDumpMemPagesIN, |
1404 | PVRSRV_BRIDGE_RETURN *psRetOUT, | 1821 | PVRSRV_BRIDGE_RETURN *psRetOUT, |
1405 | PVRSRV_PER_PROCESS_DATA *psPerProc) | 1822 | PVRSRV_PER_PROCESS_DATA *psPerProc) |
1406 | { | 1823 | { |
1407 | IMG_UINT32 ui32PDumpFlags; | 1824 | PVRSRV_DEVICE_NODE *psDeviceNode; |
1408 | 1825 | ||
1409 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_PDUMP_DRIVERINFO); | 1826 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_PDUMP_MEMPAGES); |
1410 | PVR_UNREFERENCED_PARAMETER(psPerProc); | ||
1411 | 1827 | ||
1412 | ui32PDumpFlags = 0; | 1828 | psRetOUT->eError = |
1413 | if(psPDumpDriverInfoIN->bContinuous) | 1829 | PVRSRVLookupHandle(psPerProc->psHandleBase, |
1414 | { | 1830 | (IMG_VOID **)&psDeviceNode, |
1415 | ui32PDumpFlags |= PDUMP_FLAGS_CONTINUOUS; | 1831 | psPDumpMemPagesIN->hDevCookie, |
1416 | } | 1832 | PVRSRV_HANDLE_TYPE_DEV_NODE); |
1417 | psRetOUT->eError = | ||
1418 | PDumpDriverInfoKM(&psPDumpDriverInfoIN->szString[0], | ||
1419 | ui32PDumpFlags); | ||
1420 | 1833 | ||
1421 | return 0; | 1834 | if(psRetOUT->eError != PVRSRV_OK) |
1835 | { | ||
1836 | return 0; | ||
1837 | } | ||
1838 | |||
1839 | |||
1840 | return 0; | ||
1422 | } | 1841 | } |
1423 | 1842 | ||
1424 | static IMG_INT | 1843 | static IMG_INT |
1425 | PDumpSyncDumpBW(IMG_UINT32 ui32BridgeID, | 1844 | PDumpDriverInfoBW(IMG_UINT32 ui32BridgeID, |
1426 | PVRSRV_BRIDGE_IN_PDUMP_DUMPSYNC *psPDumpSyncDumpIN, | 1845 | PVRSRV_BRIDGE_IN_PDUMP_DRIVERINFO *psPDumpDriverInfoIN, |
1427 | PVRSRV_BRIDGE_RETURN *psRetOUT, | 1846 | PVRSRV_BRIDGE_RETURN *psRetOUT, |
1428 | PVRSRV_PER_PROCESS_DATA *psPerProc) | 1847 | PVRSRV_PER_PROCESS_DATA *psPerProc) |
1429 | { | 1848 | { |
1430 | IMG_UINT32 ui32Bytes = psPDumpSyncDumpIN->ui32Bytes; | 1849 | IMG_UINT32 ui32PDumpFlags; |
1431 | IMG_VOID *pvSyncInfo; | ||
1432 | |||
1433 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_PDUMP_DUMPSYNC); | ||
1434 | 1850 | ||
1435 | psRetOUT->eError = | 1851 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_PDUMP_DRIVERINFO); |
1436 | PVRSRVLookupHandle(psPerProc->psHandleBase, &pvSyncInfo, | 1852 | PVR_UNREFERENCED_PARAMETER(psPerProc); |
1437 | psPDumpSyncDumpIN->psKernelSyncInfo, | ||
1438 | PVRSRV_HANDLE_TYPE_SYNC_INFO); | ||
1439 | if(psRetOUT->eError != PVRSRV_OK) | ||
1440 | { | ||
1441 | return 0; | ||
1442 | } | ||
1443 | 1853 | ||
1444 | psRetOUT->eError = | 1854 | ui32PDumpFlags = 0; |
1445 | PDumpMemUM(psPerProc, | 1855 | if(psPDumpDriverInfoIN->bContinuous) |
1446 | psPDumpSyncDumpIN->pvAltLinAddr, | 1856 | { |
1447 | IMG_NULL, | 1857 | ui32PDumpFlags |= PDUMP_FLAGS_CONTINUOUS; |
1448 | ((PVRSRV_KERNEL_SYNC_INFO *)pvSyncInfo)->psSyncDataMemInfoKM, | 1858 | } |
1449 | psPDumpSyncDumpIN->ui32Offset, | 1859 | psRetOUT->eError = |
1450 | ui32Bytes, | 1860 | PDumpDriverInfoKM(&psPDumpDriverInfoIN->szString[0], |
1451 | 0, | 1861 | ui32PDumpFlags); |
1452 | MAKEUNIQUETAG(((PVRSRV_KERNEL_SYNC_INFO *)pvSyncInfo)->psSyncDataMemInfoKM)); | ||
1453 | 1862 | ||
1454 | return 0; | 1863 | return 0; |
1455 | } | 1864 | } |
1456 | 1865 | ||
1457 | static IMG_INT | 1866 | static IMG_INT |
1458 | PDumpSyncPolBW(IMG_UINT32 ui32BridgeID, | 1867 | PDumpSyncDumpBW(IMG_UINT32 ui32BridgeID, |
1459 | PVRSRV_BRIDGE_IN_PDUMP_SYNCPOL *psPDumpSyncPolIN, | 1868 | PVRSRV_BRIDGE_IN_PDUMP_DUMPSYNC *psPDumpSyncDumpIN, |
1460 | PVRSRV_BRIDGE_RETURN *psRetOUT, | 1869 | PVRSRV_BRIDGE_RETURN *psRetOUT, |
1461 | PVRSRV_PER_PROCESS_DATA *psPerProc) | 1870 | PVRSRV_PER_PROCESS_DATA *psPerProc) |
1462 | { | 1871 | { |
1463 | IMG_UINT32 ui32Offset; | 1872 | IMG_UINT32 ui32Bytes = psPDumpSyncDumpIN->ui32Bytes; |
1464 | IMG_VOID *pvSyncInfo; | 1873 | IMG_VOID *pvSyncInfo; |
1465 | 1874 | ||
1466 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_PDUMP_SYNCPOL); | 1875 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_PDUMP_DUMPSYNC); |
1467 | 1876 | ||
1468 | psRetOUT->eError = | 1877 | psRetOUT->eError = |
1469 | PVRSRVLookupHandle(psPerProc->psHandleBase, &pvSyncInfo, | 1878 | PVRSRVLookupHandle(psPerProc->psHandleBase, &pvSyncInfo, |
1470 | psPDumpSyncPolIN->psKernelSyncInfo, | 1879 | #if defined (SUPPORT_SID_INTERFACE) |
1471 | PVRSRV_HANDLE_TYPE_SYNC_INFO); | 1880 | psPDumpSyncDumpIN->hKernelSyncInfo, |
1472 | if(psRetOUT->eError != PVRSRV_OK) | 1881 | #else |
1473 | { | 1882 | psPDumpSyncDumpIN->psKernelSyncInfo, |
1474 | return 0; | 1883 | #endif |
1475 | } | 1884 | PVRSRV_HANDLE_TYPE_SYNC_INFO); |
1476 | 1885 | if(psRetOUT->eError != PVRSRV_OK) | |
1477 | if(psPDumpSyncPolIN->bIsRead) | 1886 | { |
1478 | { | 1887 | return 0; |
1479 | ui32Offset = offsetof(PVRSRV_SYNC_DATA, ui32ReadOpsComplete); | 1888 | } |
1480 | } | 1889 | |
1481 | else | 1890 | psRetOUT->eError = |
1482 | { | 1891 | PDumpMemUM(psPerProc, |
1483 | ui32Offset = offsetof(PVRSRV_SYNC_DATA, ui32WriteOpsComplete); | 1892 | psPDumpSyncDumpIN->pvAltLinAddr, |
1484 | } | 1893 | IMG_NULL, |
1485 | 1894 | ((PVRSRV_KERNEL_SYNC_INFO *)pvSyncInfo)->psSyncDataMemInfoKM, | |
1486 | psRetOUT->eError = | 1895 | psPDumpSyncDumpIN->ui32Offset, |
1487 | PDumpMemPolKM(((PVRSRV_KERNEL_SYNC_INFO *)pvSyncInfo)->psSyncDataMemInfoKM, | 1896 | ui32Bytes, |
1488 | ui32Offset, | 1897 | 0, |
1489 | psPDumpSyncPolIN->ui32Value, | 1898 | MAKEUNIQUETAG(((PVRSRV_KERNEL_SYNC_INFO *)pvSyncInfo)->psSyncDataMemInfoKM)); |
1490 | psPDumpSyncPolIN->ui32Mask, | 1899 | |
1491 | PDUMP_POLL_OPERATOR_EQUAL, | 1900 | return 0; |
1492 | 0, | 1901 | } |
1493 | MAKEUNIQUETAG(((PVRSRV_KERNEL_SYNC_INFO *)pvSyncInfo)->psSyncDataMemInfoKM)); | ||
1494 | 1902 | ||
1495 | return 0; | 1903 | static IMG_INT |
1904 | PDumpSyncPolBW(IMG_UINT32 ui32BridgeID, | ||
1905 | PVRSRV_BRIDGE_IN_PDUMP_SYNCPOL *psPDumpSyncPolIN, | ||
1906 | PVRSRV_BRIDGE_RETURN *psRetOUT, | ||
1907 | PVRSRV_PER_PROCESS_DATA *psPerProc) | ||
1908 | { | ||
1909 | IMG_UINT32 ui32Offset; | ||
1910 | IMG_VOID *pvSyncInfo; | ||
1911 | IMG_UINT32 ui32Value; | ||
1912 | IMG_UINT32 ui32Mask; | ||
1913 | |||
1914 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_PDUMP_SYNCPOL); | ||
1915 | |||
1916 | psRetOUT->eError = | ||
1917 | PVRSRVLookupHandle(psPerProc->psHandleBase, | ||
1918 | &pvSyncInfo, | ||
1919 | #if defined (SUPPORT_SID_INTERFACE) | ||
1920 | psPDumpSyncPolIN->hKernelSyncInfo, | ||
1921 | #else | ||
1922 | psPDumpSyncPolIN->psKernelSyncInfo, | ||
1923 | #endif | ||
1924 | PVRSRV_HANDLE_TYPE_SYNC_INFO); | ||
1925 | if(psRetOUT->eError != PVRSRV_OK) | ||
1926 | { | ||
1927 | return 0; | ||
1928 | } | ||
1929 | |||
1930 | if(psPDumpSyncPolIN->bIsRead) | ||
1931 | { | ||
1932 | ui32Offset = offsetof(PVRSRV_SYNC_DATA, ui32ReadOpsComplete); | ||
1933 | } | ||
1934 | else | ||
1935 | { | ||
1936 | ui32Offset = offsetof(PVRSRV_SYNC_DATA, ui32WriteOpsComplete); | ||
1937 | } | ||
1938 | |||
1939 | |||
1940 | if (psPDumpSyncPolIN->bUseLastOpDumpVal) | ||
1941 | { | ||
1942 | if(psPDumpSyncPolIN->bIsRead) | ||
1943 | { | ||
1944 | ui32Value = ((PVRSRV_KERNEL_SYNC_INFO *)pvSyncInfo)->psSyncData->ui32LastReadOpDumpVal; | ||
1945 | } | ||
1946 | else | ||
1947 | { | ||
1948 | ui32Value = ((PVRSRV_KERNEL_SYNC_INFO *)pvSyncInfo)->psSyncData->ui32LastOpDumpVal; | ||
1949 | } | ||
1950 | ui32Mask = 0xffffffff; | ||
1951 | } | ||
1952 | else | ||
1953 | { | ||
1954 | ui32Value = psPDumpSyncPolIN->ui32Value; | ||
1955 | ui32Mask = psPDumpSyncPolIN->ui32Mask; | ||
1956 | } | ||
1957 | |||
1958 | psRetOUT->eError = | ||
1959 | PDumpMemPolKM(((PVRSRV_KERNEL_SYNC_INFO *)pvSyncInfo)->psSyncDataMemInfoKM, | ||
1960 | ui32Offset, | ||
1961 | ui32Value, | ||
1962 | ui32Mask, | ||
1963 | PDUMP_POLL_OPERATOR_EQUAL, | ||
1964 | 0, | ||
1965 | MAKEUNIQUETAG(((PVRSRV_KERNEL_SYNC_INFO *)pvSyncInfo)->psSyncDataMemInfoKM)); | ||
1966 | |||
1967 | return 0; | ||
1496 | } | 1968 | } |
1497 | 1969 | ||
1498 | 1970 | ||
1499 | static IMG_INT | 1971 | static IMG_INT |
1500 | PDumpCycleCountRegReadBW(IMG_UINT32 ui32BridgeID, | 1972 | PDumpCycleCountRegReadBW(IMG_UINT32 ui32BridgeID, |
1501 | PVRSRV_BRIDGE_IN_PDUMP_CYCLE_COUNT_REG_READ *psPDumpCycleCountRegReadIN, | 1973 | PVRSRV_BRIDGE_IN_PDUMP_CYCLE_COUNT_REG_READ *psPDumpCycleCountRegReadIN, |
1502 | PVRSRV_BRIDGE_RETURN *psRetOUT, | 1974 | PVRSRV_BRIDGE_RETURN *psRetOUT, |
1503 | PVRSRV_PER_PROCESS_DATA *psPerProc) | 1975 | PVRSRV_PER_PROCESS_DATA *psPerProc) |
1504 | { | 1976 | { |
1505 | PVRSRV_DEVICE_NODE *psDeviceNode; | 1977 | PVRSRV_DEVICE_NODE *psDeviceNode; |
1506 | |||
1507 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_PDUMP_CYCLE_COUNT_REG_READ); | ||
1508 | |||
1509 | psRetOUT->eError = | ||
1510 | PVRSRVLookupHandle(psPerProc->psHandleBase, | ||
1511 | (IMG_VOID **)&psDeviceNode, | ||
1512 | psPDumpCycleCountRegReadIN->hDevCookie, | ||
1513 | PVRSRV_HANDLE_TYPE_DEV_NODE); | ||
1514 | if(psRetOUT->eError != PVRSRV_OK) | ||
1515 | { | ||
1516 | return 0; | ||
1517 | } | ||
1518 | 1978 | ||
1519 | PDumpCycleCountRegRead(&psDeviceNode->sDevId, | 1979 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_PDUMP_CYCLE_COUNT_REG_READ); |
1520 | psPDumpCycleCountRegReadIN->ui32RegOffset, | ||
1521 | psPDumpCycleCountRegReadIN->bLastFrame); | ||
1522 | 1980 | ||
1523 | psRetOUT->eError = PVRSRV_OK; | 1981 | psRetOUT->eError = |
1982 | PVRSRVLookupHandle(psPerProc->psHandleBase, | ||
1983 | (IMG_VOID **)&psDeviceNode, | ||
1984 | psPDumpCycleCountRegReadIN->hDevCookie, | ||
1985 | PVRSRV_HANDLE_TYPE_DEV_NODE); | ||
1986 | if(psRetOUT->eError != PVRSRV_OK) | ||
1987 | { | ||
1988 | return 0; | ||
1989 | } | ||
1524 | 1990 | ||
1525 | return 0; | 1991 | PDumpCycleCountRegRead(&psDeviceNode->sDevId, |
1992 | psPDumpCycleCountRegReadIN->ui32RegOffset, | ||
1993 | psPDumpCycleCountRegReadIN->bLastFrame); | ||
1994 | |||
1995 | psRetOUT->eError = PVRSRV_OK; | ||
1996 | |||
1997 | return 0; | ||
1526 | } | 1998 | } |
1527 | 1999 | ||
1528 | static IMG_INT | 2000 | static IMG_INT |
1529 | PDumpPDDevPAddrBW(IMG_UINT32 ui32BridgeID, | 2001 | PDumpPDDevPAddrBW(IMG_UINT32 ui32BridgeID, |
1530 | PVRSRV_BRIDGE_IN_PDUMP_DUMPPDDEVPADDR *psPDumpPDDevPAddrIN, | 2002 | PVRSRV_BRIDGE_IN_PDUMP_DUMPPDDEVPADDR *psPDumpPDDevPAddrIN, |
1531 | PVRSRV_BRIDGE_RETURN *psRetOUT, | 2003 | PVRSRV_BRIDGE_RETURN *psRetOUT, |
1532 | PVRSRV_PER_PROCESS_DATA *psPerProc) | 2004 | PVRSRV_PER_PROCESS_DATA *psPerProc) |
1533 | { | 2005 | { |
1534 | IMG_VOID *pvMemInfo; | 2006 | IMG_VOID *pvMemInfo; |
1535 | 2007 | ||
1536 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_PDUMP_DUMPPDDEVPADDR); | 2008 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_PDUMP_DUMPPDDEVPADDR); |
1537 | 2009 | ||
1538 | psRetOUT->eError = | 2010 | psRetOUT->eError = |
1539 | PVRSRVLookupHandle(psPerProc->psHandleBase, &pvMemInfo, | 2011 | PVRSRVLookupHandle(psPerProc->psHandleBase, &pvMemInfo, |
1540 | psPDumpPDDevPAddrIN->hKernelMemInfo, | 2012 | psPDumpPDDevPAddrIN->hKernelMemInfo, |
1541 | PVRSRV_HANDLE_TYPE_MEM_INFO); | 2013 | PVRSRV_HANDLE_TYPE_MEM_INFO); |
1542 | if(psRetOUT->eError != PVRSRV_OK) | 2014 | if(psRetOUT->eError != PVRSRV_OK) |
1543 | { | 2015 | { |
1544 | return 0; | 2016 | return 0; |
1545 | } | 2017 | } |
1546 | 2018 | ||
1547 | psRetOUT->eError = | 2019 | psRetOUT->eError = |
1548 | PDumpPDDevPAddrKM((PVRSRV_KERNEL_MEM_INFO *)pvMemInfo, | 2020 | PDumpPDDevPAddrKM((PVRSRV_KERNEL_MEM_INFO *)pvMemInfo, |
1549 | psPDumpPDDevPAddrIN->ui32Offset, | 2021 | psPDumpPDDevPAddrIN->ui32Offset, |
1550 | psPDumpPDDevPAddrIN->sPDDevPAddr, | 2022 | psPDumpPDDevPAddrIN->sPDDevPAddr, |
1551 | MAKEUNIQUETAG(pvMemInfo), | 2023 | MAKEUNIQUETAG(pvMemInfo), |
1552 | PDUMP_PD_UNIQUETAG); | 2024 | PDUMP_PD_UNIQUETAG); |
1553 | return 0; | 2025 | return 0; |
1554 | } | 2026 | } |
1555 | 2027 | ||
1556 | static IMG_INT | 2028 | static IMG_INT |
1557 | PDumpStartInitPhaseBW(IMG_UINT32 ui32BridgeID, | 2029 | PDumpStartInitPhaseBW(IMG_UINT32 ui32BridgeID, |
1558 | IMG_VOID *psBridgeIn, | 2030 | IMG_VOID *psBridgeIn, |
1559 | PVRSRV_BRIDGE_RETURN *psRetOUT, | 2031 | PVRSRV_BRIDGE_RETURN *psRetOUT, |
1560 | PVRSRV_PER_PROCESS_DATA *psPerProc) | 2032 | PVRSRV_PER_PROCESS_DATA *psPerProc) |
1561 | { | 2033 | { |
1562 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_PDUMP_STARTINITPHASE); | 2034 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_PDUMP_STARTINITPHASE); |
1563 | PVR_UNREFERENCED_PARAMETER(psBridgeIn); | 2035 | PVR_UNREFERENCED_PARAMETER(psBridgeIn); |
1564 | PVR_UNREFERENCED_PARAMETER(psPerProc); | 2036 | PVR_UNREFERENCED_PARAMETER(psPerProc); |
1565 | 2037 | ||
1566 | psRetOUT->eError = PDumpStartInitPhaseKM(); | 2038 | psRetOUT->eError = PDumpStartInitPhaseKM(); |
1567 | 2039 | ||
1568 | return 0; | 2040 | return 0; |
1569 | } | 2041 | } |
1570 | 2042 | ||
1571 | static IMG_INT | 2043 | static IMG_INT |
1572 | PDumpStopInitPhaseBW(IMG_UINT32 ui32BridgeID, | 2044 | PDumpStopInitPhaseBW(IMG_UINT32 ui32BridgeID, |
1573 | IMG_VOID *psBridgeIn, | 2045 | IMG_VOID *psBridgeIn, |
1574 | PVRSRV_BRIDGE_RETURN *psRetOUT, | 2046 | PVRSRV_BRIDGE_RETURN *psRetOUT, |
1575 | PVRSRV_PER_PROCESS_DATA *psPerProc) | 2047 | PVRSRV_PER_PROCESS_DATA *psPerProc) |
1576 | { | 2048 | { |
1577 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_PDUMP_STOPINITPHASE); | 2049 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_PDUMP_STOPINITPHASE); |
1578 | PVR_UNREFERENCED_PARAMETER(psBridgeIn); | 2050 | PVR_UNREFERENCED_PARAMETER(psBridgeIn); |
1579 | PVR_UNREFERENCED_PARAMETER(psPerProc); | 2051 | PVR_UNREFERENCED_PARAMETER(psPerProc); |
1580 | 2052 | ||
1581 | psRetOUT->eError = PDumpStopInitPhaseKM(); | 2053 | psRetOUT->eError = PDumpStopInitPhaseKM(); |
1582 | 2054 | ||
1583 | return 0; | 2055 | return 0; |
1584 | } | 2056 | } |
1585 | 2057 | ||
1586 | #endif | 2058 | #endif |
@@ -1588,2307 +2060,2677 @@ PDumpStopInitPhaseBW(IMG_UINT32 ui32BridgeID, | |||
1588 | 2060 | ||
1589 | static IMG_INT | 2061 | static IMG_INT |
1590 | PVRSRVGetMiscInfoBW(IMG_UINT32 ui32BridgeID, | 2062 | PVRSRVGetMiscInfoBW(IMG_UINT32 ui32BridgeID, |
1591 | PVRSRV_BRIDGE_IN_GET_MISC_INFO *psGetMiscInfoIN, | 2063 | PVRSRV_BRIDGE_IN_GET_MISC_INFO *psGetMiscInfoIN, |
1592 | PVRSRV_BRIDGE_OUT_GET_MISC_INFO *psGetMiscInfoOUT, | 2064 | PVRSRV_BRIDGE_OUT_GET_MISC_INFO *psGetMiscInfoOUT, |
1593 | PVRSRV_PER_PROCESS_DATA *psPerProc) | 2065 | PVRSRV_PER_PROCESS_DATA *psPerProc) |
1594 | { | 2066 | { |
1595 | PVRSRV_ERROR eError; | 2067 | #if defined (SUPPORT_SID_INTERFACE) |
2068 | PVRSRV_MISC_INFO_KM sMiscInfo = {0}; | ||
2069 | #endif | ||
2070 | PVRSRV_ERROR eError; | ||
2071 | |||
2072 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_GET_MISC_INFO); | ||
2073 | #if defined (SUPPORT_SID_INTERFACE) | ||
2074 | sMiscInfo.ui32StateRequest = psGetMiscInfoIN->sMiscInfo.ui32StateRequest; | ||
2075 | sMiscInfo.ui32StatePresent = psGetMiscInfoIN->sMiscInfo.ui32StatePresent; | ||
2076 | sMiscInfo.ui32MemoryStrLen = psGetMiscInfoIN->sMiscInfo.ui32MemoryStrLen; | ||
2077 | sMiscInfo.pszMemoryStr = psGetMiscInfoIN->sMiscInfo.pszMemoryStr; | ||
2078 | |||
2079 | OSMemCopy(&sMiscInfo.sCacheOpCtl, | ||
2080 | &psGetMiscInfoIN->sMiscInfo.sCacheOpCtl, | ||
2081 | sizeof(sMiscInfo.sCacheOpCtl)); | ||
2082 | #else | ||
1596 | 2083 | ||
1597 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_GET_MISC_INFO); | 2084 | OSMemCopy(&psGetMiscInfoOUT->sMiscInfo, |
2085 | &psGetMiscInfoIN->sMiscInfo, | ||
2086 | sizeof(PVRSRV_MISC_INFO)); | ||
2087 | #endif | ||
1598 | 2088 | ||
1599 | OSMemCopy(&psGetMiscInfoOUT->sMiscInfo, | 2089 | if (((psGetMiscInfoIN->sMiscInfo.ui32StateRequest & PVRSRV_MISC_INFO_MEMSTATS_PRESENT) != 0) && |
1600 | &psGetMiscInfoIN->sMiscInfo, | 2090 | ((psGetMiscInfoIN->sMiscInfo.ui32StateRequest & PVRSRV_MISC_INFO_DDKVERSION_PRESENT) != 0) && |
1601 | sizeof(PVRSRV_MISC_INFO)); | 2091 | ((psGetMiscInfoIN->sMiscInfo.ui32StateRequest & PVRSRV_MISC_INFO_FREEMEM_PRESENT) != 0)) |
2092 | { | ||
2093 | |||
2094 | psGetMiscInfoOUT->eError = PVRSRV_ERROR_INVALID_PARAMS; | ||
2095 | return 0; | ||
2096 | } | ||
2097 | |||
2098 | if (((psGetMiscInfoIN->sMiscInfo.ui32StateRequest & PVRSRV_MISC_INFO_MEMSTATS_PRESENT) != 0) || | ||
2099 | ((psGetMiscInfoIN->sMiscInfo.ui32StateRequest & PVRSRV_MISC_INFO_DDKVERSION_PRESENT) != 0) || | ||
2100 | ((psGetMiscInfoIN->sMiscInfo.ui32StateRequest & PVRSRV_MISC_INFO_FREEMEM_PRESENT) != 0)) | ||
2101 | { | ||
2102 | |||
2103 | #if defined (SUPPORT_SID_INTERFACE) | ||
2104 | ASSIGN_AND_EXIT_ON_ERROR(psGetMiscInfoOUT->eError, | ||
2105 | OSAllocMem(PVRSRV_OS_PAGEABLE_HEAP, | ||
2106 | psGetMiscInfoOUT->sMiscInfo.ui32MemoryStrLen, | ||
2107 | (IMG_VOID **)&sMiscInfo.pszMemoryStr, 0, | ||
2108 | "Output string buffer")); | ||
2109 | psGetMiscInfoOUT->eError = PVRSRVGetMiscInfoKM(&sMiscInfo); | ||
2110 | |||
2111 | |||
2112 | eError = CopyToUserWrapper(psPerProc, ui32BridgeID, | ||
2113 | psGetMiscInfoIN->sMiscInfo.pszMemoryStr, | ||
2114 | sMiscInfo.pszMemoryStr, | ||
2115 | sMiscInfo.ui32MemoryStrLen); | ||
2116 | #else | ||
2117 | ASSIGN_AND_EXIT_ON_ERROR(psGetMiscInfoOUT->eError, | ||
2118 | OSAllocMem(PVRSRV_OS_PAGEABLE_HEAP, | ||
2119 | psGetMiscInfoOUT->sMiscInfo.ui32MemoryStrLen, | ||
2120 | (IMG_VOID **)&psGetMiscInfoOUT->sMiscInfo.pszMemoryStr, 0, | ||
2121 | "Output string buffer")); | ||
2122 | |||
2123 | psGetMiscInfoOUT->eError = PVRSRVGetMiscInfoKM(&psGetMiscInfoOUT->sMiscInfo); | ||
2124 | |||
2125 | |||
2126 | eError = CopyToUserWrapper(psPerProc, ui32BridgeID, | ||
2127 | psGetMiscInfoIN->sMiscInfo.pszMemoryStr, | ||
2128 | psGetMiscInfoOUT->sMiscInfo.pszMemoryStr, | ||
2129 | psGetMiscInfoOUT->sMiscInfo.ui32MemoryStrLen); | ||
2130 | #endif | ||
1602 | 2131 | ||
1603 | if (((psGetMiscInfoIN->sMiscInfo.ui32StateRequest & PVRSRV_MISC_INFO_MEMSTATS_PRESENT) != 0) && | 2132 | |
1604 | ((psGetMiscInfoIN->sMiscInfo.ui32StateRequest & PVRSRV_MISC_INFO_DDKVERSION_PRESENT) != 0) && | 2133 | #if defined (SUPPORT_SID_INTERFACE) |
1605 | ((psGetMiscInfoIN->sMiscInfo.ui32StateRequest & PVRSRV_MISC_INFO_FREEMEM_PRESENT) != 0)) | 2134 | OSFreeMem(PVRSRV_OS_PAGEABLE_HEAP, |
1606 | { | 2135 | sMiscInfo.ui32MemoryStrLen, |
1607 | 2136 | (IMG_VOID *)sMiscInfo.pszMemoryStr, 0); | |
1608 | psGetMiscInfoOUT->eError = PVRSRV_ERROR_INVALID_PARAMS; | 2137 | #else |
1609 | return 0; | 2138 | OSFreeMem(PVRSRV_OS_PAGEABLE_HEAP, |
1610 | } | 2139 | psGetMiscInfoOUT->sMiscInfo.ui32MemoryStrLen, |
2140 | (IMG_VOID *)psGetMiscInfoOUT->sMiscInfo.pszMemoryStr, 0); | ||
2141 | #endif | ||
1611 | 2142 | ||
1612 | if (((psGetMiscInfoIN->sMiscInfo.ui32StateRequest & PVRSRV_MISC_INFO_MEMSTATS_PRESENT) != 0) || | 2143 | |
1613 | ((psGetMiscInfoIN->sMiscInfo.ui32StateRequest & PVRSRV_MISC_INFO_DDKVERSION_PRESENT) != 0) || | 2144 | psGetMiscInfoOUT->sMiscInfo.pszMemoryStr = psGetMiscInfoIN->sMiscInfo.pszMemoryStr; |
1614 | ((psGetMiscInfoIN->sMiscInfo.ui32StateRequest & PVRSRV_MISC_INFO_FREEMEM_PRESENT) != 0)) | 2145 | |
1615 | { | 2146 | if(eError != PVRSRV_OK) |
1616 | 2147 | { | |
1617 | ASSIGN_AND_EXIT_ON_ERROR(psGetMiscInfoOUT->eError, | 2148 | |
1618 | OSAllocMem(PVRSRV_OS_PAGEABLE_HEAP, | 2149 | PVR_DPF((PVR_DBG_ERROR, "PVRSRVGetMiscInfoBW Error copy to user")); |
1619 | psGetMiscInfoOUT->sMiscInfo.ui32MemoryStrLen, | 2150 | return -EFAULT; |
1620 | (IMG_VOID **)&psGetMiscInfoOUT->sMiscInfo.pszMemoryStr, 0, | 2151 | } |
1621 | "Output string buffer")); | 2152 | } |
1622 | 2153 | else | |
1623 | psGetMiscInfoOUT->eError = PVRSRVGetMiscInfoKM(&psGetMiscInfoOUT->sMiscInfo); | 2154 | { |
1624 | 2155 | #if defined (SUPPORT_SID_INTERFACE) | |
1625 | 2156 | psGetMiscInfoOUT->eError = PVRSRVGetMiscInfoKM(&sMiscInfo); | |
1626 | eError = CopyToUserWrapper(psPerProc, ui32BridgeID, | 2157 | #else |
1627 | psGetMiscInfoIN->sMiscInfo.pszMemoryStr, | 2158 | psGetMiscInfoOUT->eError = PVRSRVGetMiscInfoKM(&psGetMiscInfoOUT->sMiscInfo); |
1628 | psGetMiscInfoOUT->sMiscInfo.pszMemoryStr, | 2159 | #endif |
1629 | psGetMiscInfoOUT->sMiscInfo.ui32MemoryStrLen); | 2160 | } |
1630 | |||
1631 | |||
1632 | OSFreeMem(PVRSRV_OS_PAGEABLE_HEAP, | ||
1633 | psGetMiscInfoOUT->sMiscInfo.ui32MemoryStrLen, | ||
1634 | (IMG_VOID *)psGetMiscInfoOUT->sMiscInfo.pszMemoryStr, 0); | ||
1635 | psGetMiscInfoOUT->sMiscInfo.pszMemoryStr = IMG_NULL; | ||
1636 | |||
1637 | |||
1638 | psGetMiscInfoOUT->sMiscInfo.pszMemoryStr = psGetMiscInfoIN->sMiscInfo.pszMemoryStr; | ||
1639 | |||
1640 | if(eError != PVRSRV_OK) | ||
1641 | { | ||
1642 | |||
1643 | PVR_DPF((PVR_DBG_ERROR, "PVRSRVGetMiscInfoBW Error copy to user")); | ||
1644 | return -EFAULT; | ||
1645 | } | ||
1646 | } | ||
1647 | else | ||
1648 | { | ||
1649 | psGetMiscInfoOUT->eError = PVRSRVGetMiscInfoKM(&psGetMiscInfoOUT->sMiscInfo); | ||
1650 | } | ||
1651 | 2161 | ||
1652 | 2162 | ||
1653 | if (psGetMiscInfoOUT->eError != PVRSRV_OK) | 2163 | if (psGetMiscInfoOUT->eError != PVRSRV_OK) |
1654 | { | 2164 | { |
1655 | return 0; | 2165 | return 0; |
1656 | } | 2166 | } |
1657 | 2167 | ||
1658 | 2168 | ||
1659 | if (psGetMiscInfoIN->sMiscInfo.ui32StateRequest & PVRSRV_MISC_INFO_GLOBALEVENTOBJECT_PRESENT) | 2169 | #if defined (SUPPORT_SID_INTERFACE) |
1660 | { | 2170 | if (sMiscInfo.ui32StateRequest & PVRSRV_MISC_INFO_GLOBALEVENTOBJECT_PRESENT) |
1661 | psGetMiscInfoOUT->eError = PVRSRVAllocHandle(psPerProc->psHandleBase, | 2171 | #else |
1662 | &psGetMiscInfoOUT->sMiscInfo.sGlobalEventObject.hOSEventKM, | 2172 | if (psGetMiscInfoIN->sMiscInfo.ui32StateRequest & PVRSRV_MISC_INFO_GLOBALEVENTOBJECT_PRESENT) |
1663 | psGetMiscInfoOUT->sMiscInfo.sGlobalEventObject.hOSEventKM, | 2173 | #endif |
1664 | PVRSRV_HANDLE_TYPE_SHARED_EVENT_OBJECT, | 2174 | { |
1665 | PVRSRV_HANDLE_ALLOC_FLAG_SHARED); | 2175 | psGetMiscInfoOUT->eError = PVRSRVAllocHandle(psPerProc->psHandleBase, |
1666 | 2176 | &psGetMiscInfoOUT->sMiscInfo.sGlobalEventObject.hOSEventKM, | |
1667 | if (psGetMiscInfoOUT->eError != PVRSRV_OK) | 2177 | #if defined (SUPPORT_SID_INTERFACE) |
1668 | { | 2178 | sMiscInfo.sGlobalEventObject.hOSEventKM, |
1669 | return 0; | 2179 | #else |
1670 | } | 2180 | psGetMiscInfoOUT->sMiscInfo.sGlobalEventObject.hOSEventKM, |
1671 | } | 2181 | #endif |
2182 | PVRSRV_HANDLE_TYPE_SHARED_EVENT_OBJECT, | ||
2183 | PVRSRV_HANDLE_ALLOC_FLAG_SHARED); | ||
1672 | 2184 | ||
1673 | if (psGetMiscInfoOUT->sMiscInfo.hSOCTimerRegisterOSMemHandle) | 2185 | if (psGetMiscInfoOUT->eError != PVRSRV_OK) |
1674 | { | 2186 | { |
1675 | 2187 | return 0; | |
1676 | psGetMiscInfoOUT->eError = PVRSRVAllocHandle(psPerProc->psHandleBase, | 2188 | } |
1677 | &psGetMiscInfoOUT->sMiscInfo.hSOCTimerRegisterOSMemHandle, | 2189 | |
1678 | psGetMiscInfoOUT->sMiscInfo.hSOCTimerRegisterOSMemHandle, | 2190 | #if defined (SUPPORT_SID_INTERFACE) |
1679 | PVRSRV_HANDLE_TYPE_SOC_TIMER, | 2191 | OSMemCopy(&psGetMiscInfoOUT->sMiscInfo.sGlobalEventObject.szName, |
1680 | PVRSRV_HANDLE_ALLOC_FLAG_SHARED); | 2192 | sMiscInfo.sGlobalEventObject.szName, |
1681 | 2193 | EVENTOBJNAME_MAXLENGTH); | |
1682 | if (psGetMiscInfoOUT->eError != PVRSRV_OK) | 2194 | |
1683 | { | 2195 | #endif |
1684 | return 0; | 2196 | } |
1685 | } | ||
1686 | } | ||
1687 | 2197 | ||
1688 | return 0; | 2198 | #if defined (SUPPORT_SID_INTERFACE) |
2199 | if (sMiscInfo.hSOCTimerRegisterOSMemHandle) | ||
2200 | #else | ||
2201 | if (psGetMiscInfoOUT->sMiscInfo.hSOCTimerRegisterOSMemHandle) | ||
2202 | #endif | ||
2203 | { | ||
2204 | |||
2205 | psGetMiscInfoOUT->eError = PVRSRVAllocHandle(psPerProc->psHandleBase, | ||
2206 | &psGetMiscInfoOUT->sMiscInfo.hSOCTimerRegisterOSMemHandle, | ||
2207 | #if defined (SUPPORT_SID_INTERFACE) | ||
2208 | sMiscInfo.hSOCTimerRegisterOSMemHandle, | ||
2209 | #else | ||
2210 | psGetMiscInfoOUT->sMiscInfo.hSOCTimerRegisterOSMemHandle, | ||
2211 | #endif | ||
2212 | PVRSRV_HANDLE_TYPE_SOC_TIMER, | ||
2213 | PVRSRV_HANDLE_ALLOC_FLAG_SHARED); | ||
2214 | |||
2215 | if (psGetMiscInfoOUT->eError != PVRSRV_OK) | ||
2216 | { | ||
2217 | return 0; | ||
2218 | } | ||
2219 | } | ||
2220 | #if defined (SUPPORT_SID_INTERFACE) | ||
2221 | else | ||
2222 | { | ||
2223 | psGetMiscInfoOUT->sMiscInfo.hSOCTimerRegisterOSMemHandle = 0; | ||
2224 | } | ||
2225 | |||
2226 | |||
2227 | psGetMiscInfoOUT->sMiscInfo.ui32StateRequest = sMiscInfo.ui32StateRequest; | ||
2228 | psGetMiscInfoOUT->sMiscInfo.ui32StatePresent = sMiscInfo.ui32StatePresent; | ||
2229 | |||
2230 | psGetMiscInfoOUT->sMiscInfo.pvSOCTimerRegisterKM = sMiscInfo.pvSOCTimerRegisterKM; | ||
2231 | psGetMiscInfoOUT->sMiscInfo.pvSOCTimerRegisterUM = sMiscInfo.pvSOCTimerRegisterUM; | ||
2232 | psGetMiscInfoOUT->sMiscInfo.pvSOCClockGateRegs = sMiscInfo.pvSOCClockGateRegs; | ||
2233 | |||
2234 | psGetMiscInfoOUT->sMiscInfo.ui32SOCClockGateRegsSize = sMiscInfo.ui32SOCClockGateRegsSize; | ||
2235 | |||
2236 | OSMemCopy(&psGetMiscInfoOUT->sMiscInfo.aui32DDKVersion, | ||
2237 | &sMiscInfo.aui32DDKVersion, | ||
2238 | sizeof(psGetMiscInfoOUT->sMiscInfo.aui32DDKVersion)); | ||
2239 | OSMemCopy(&psGetMiscInfoOUT->sMiscInfo.sCacheOpCtl, | ||
2240 | &sMiscInfo.sCacheOpCtl, | ||
2241 | sizeof(psGetMiscInfoOUT->sMiscInfo.sCacheOpCtl)); | ||
2242 | #endif | ||
2243 | |||
2244 | return 0; | ||
1689 | } | 2245 | } |
1690 | 2246 | ||
1691 | static IMG_INT | 2247 | static IMG_INT |
1692 | PVRSRVConnectBW(IMG_UINT32 ui32BridgeID, | 2248 | PVRSRVConnectBW(IMG_UINT32 ui32BridgeID, |
1693 | PVRSRV_BRIDGE_IN_CONNECT_SERVICES *psConnectServicesIN, | 2249 | PVRSRV_BRIDGE_IN_CONNECT_SERVICES *psConnectServicesIN, |
1694 | PVRSRV_BRIDGE_OUT_CONNECT_SERVICES *psConnectServicesOUT, | 2250 | PVRSRV_BRIDGE_OUT_CONNECT_SERVICES *psConnectServicesOUT, |
1695 | PVRSRV_PER_PROCESS_DATA *psPerProc) | 2251 | PVRSRV_PER_PROCESS_DATA *psPerProc) |
1696 | { | 2252 | { |
1697 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_CONNECT_SERVICES); | 2253 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_CONNECT_SERVICES); |
1698 | 2254 | ||
1699 | #if defined(PDUMP) | 2255 | #if defined(PDUMP) |
1700 | 2256 | ||
1701 | psPerProc->bPDumpPersistent |= ( (psConnectServicesIN->ui32Flags & SRV_FLAGS_PERSIST) != 0) ? IMG_TRUE : IMG_FALSE; | 2257 | if ((psConnectServicesIN->ui32Flags & SRV_FLAGS_PERSIST) != 0) |
2258 | { | ||
2259 | psPerProc->bPDumpPersistent = IMG_TRUE; | ||
2260 | } | ||
1702 | 2261 | ||
1703 | #if defined(SUPPORT_PDUMP_MULTI_PROCESS) | 2262 | #if defined(SUPPORT_PDUMP_MULTI_PROCESS) |
1704 | 2263 | ||
1705 | psPerProc->bPDumpActive |= ( (psConnectServicesIN->ui32Flags & SRV_FLAGS_PDUMP_ACTIVE) != 0) ? IMG_TRUE : IMG_FALSE; | 2264 | if ((psConnectServicesIN->ui32Flags & SRV_FLAGS_PDUMP_ACTIVE) != 0) |
1706 | #endif | 2265 | { |
2266 | psPerProc->bPDumpActive = IMG_TRUE; | ||
2267 | } | ||
2268 | #endif | ||
1707 | #else | 2269 | #else |
1708 | PVR_UNREFERENCED_PARAMETER(psConnectServicesIN); | 2270 | PVR_UNREFERENCED_PARAMETER(psConnectServicesIN); |
1709 | #endif | 2271 | #endif |
1710 | psConnectServicesOUT->hKernelServices = psPerProc->hPerProcData; | 2272 | psConnectServicesOUT->hKernelServices = psPerProc->hPerProcData; |
1711 | psConnectServicesOUT->eError = PVRSRV_OK; | 2273 | psConnectServicesOUT->eError = PVRSRV_OK; |
1712 | 2274 | ||
1713 | return 0; | 2275 | return 0; |
1714 | } | 2276 | } |
1715 | 2277 | ||
1716 | static IMG_INT | 2278 | static IMG_INT |
1717 | PVRSRVDisconnectBW(IMG_UINT32 ui32BridgeID, | 2279 | PVRSRVDisconnectBW(IMG_UINT32 ui32BridgeID, |
1718 | IMG_VOID *psBridgeIn, | 2280 | IMG_VOID *psBridgeIn, |
1719 | PVRSRV_BRIDGE_RETURN *psRetOUT, | 2281 | PVRSRV_BRIDGE_RETURN *psRetOUT, |
1720 | PVRSRV_PER_PROCESS_DATA *psPerProc) | 2282 | PVRSRV_PER_PROCESS_DATA *psPerProc) |
1721 | { | 2283 | { |
1722 | PVR_UNREFERENCED_PARAMETER(psPerProc); | 2284 | PVR_UNREFERENCED_PARAMETER(psPerProc); |
1723 | PVR_UNREFERENCED_PARAMETER(psBridgeIn); | 2285 | PVR_UNREFERENCED_PARAMETER(psBridgeIn); |
1724 | |||
1725 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_DISCONNECT_SERVICES); | ||
1726 | 2286 | ||
2287 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_DISCONNECT_SERVICES); | ||
1727 | 2288 | ||
1728 | psRetOUT->eError = PVRSRV_OK; | 2289 | |
2290 | psRetOUT->eError = PVRSRV_OK; | ||
1729 | 2291 | ||
1730 | return 0; | 2292 | return 0; |
1731 | } | 2293 | } |
1732 | 2294 | ||
1733 | static IMG_INT | 2295 | static IMG_INT |
1734 | PVRSRVEnumerateDCBW(IMG_UINT32 ui32BridgeID, | 2296 | PVRSRVEnumerateDCBW(IMG_UINT32 ui32BridgeID, |
1735 | PVRSRV_BRIDGE_IN_ENUMCLASS *psEnumDispClassIN, | 2297 | PVRSRV_BRIDGE_IN_ENUMCLASS *psEnumDispClassIN, |
1736 | PVRSRV_BRIDGE_OUT_ENUMCLASS *psEnumDispClassOUT, | 2298 | PVRSRV_BRIDGE_OUT_ENUMCLASS *psEnumDispClassOUT, |
1737 | PVRSRV_PER_PROCESS_DATA *psPerProc) | 2299 | PVRSRV_PER_PROCESS_DATA *psPerProc) |
1738 | { | 2300 | { |
1739 | PVR_UNREFERENCED_PARAMETER(psPerProc); | 2301 | PVR_UNREFERENCED_PARAMETER(psPerProc); |
1740 | 2302 | ||
1741 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_ENUM_CLASS); | 2303 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_ENUM_CLASS); |
1742 | 2304 | ||
1743 | psEnumDispClassOUT->eError = | 2305 | psEnumDispClassOUT->eError = |
1744 | PVRSRVEnumerateDCKM(psEnumDispClassIN->sDeviceClass, | 2306 | PVRSRVEnumerateDCKM(psEnumDispClassIN->sDeviceClass, |
1745 | &psEnumDispClassOUT->ui32NumDevices, | 2307 | &psEnumDispClassOUT->ui32NumDevices, |
1746 | &psEnumDispClassOUT->ui32DevID[0]); | 2308 | &psEnumDispClassOUT->ui32DevID[0]); |
1747 | 2309 | ||
1748 | return 0; | 2310 | return 0; |
1749 | } | 2311 | } |
1750 | 2312 | ||
1751 | static IMG_INT | 2313 | static IMG_INT |
1752 | PVRSRVOpenDCDeviceBW(IMG_UINT32 ui32BridgeID, | 2314 | PVRSRVOpenDCDeviceBW(IMG_UINT32 ui32BridgeID, |
1753 | PVRSRV_BRIDGE_IN_OPEN_DISPCLASS_DEVICE *psOpenDispClassDeviceIN, | 2315 | PVRSRV_BRIDGE_IN_OPEN_DISPCLASS_DEVICE *psOpenDispClassDeviceIN, |
1754 | PVRSRV_BRIDGE_OUT_OPEN_DISPCLASS_DEVICE *psOpenDispClassDeviceOUT, | 2316 | PVRSRV_BRIDGE_OUT_OPEN_DISPCLASS_DEVICE *psOpenDispClassDeviceOUT, |
1755 | PVRSRV_PER_PROCESS_DATA *psPerProc) | 2317 | PVRSRV_PER_PROCESS_DATA *psPerProc) |
1756 | { | 2318 | { |
1757 | IMG_HANDLE hDevCookieInt; | 2319 | IMG_HANDLE hDevCookieInt; |
1758 | IMG_HANDLE hDispClassInfoInt; | 2320 | IMG_HANDLE hDispClassInfoInt; |
1759 | 2321 | ||
1760 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_OPEN_DISPCLASS_DEVICE); | 2322 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_OPEN_DISPCLASS_DEVICE); |
1761 | 2323 | ||
1762 | NEW_HANDLE_BATCH_OR_ERROR(psOpenDispClassDeviceOUT->eError, psPerProc, 1) | 2324 | NEW_HANDLE_BATCH_OR_ERROR(psOpenDispClassDeviceOUT->eError, psPerProc, 1) |
1763 | 2325 | ||
1764 | psOpenDispClassDeviceOUT->eError = | 2326 | psOpenDispClassDeviceOUT->eError = |
1765 | PVRSRVLookupHandle(psPerProc->psHandleBase, | 2327 | PVRSRVLookupHandle(psPerProc->psHandleBase, |
1766 | &hDevCookieInt, | 2328 | &hDevCookieInt, |
1767 | psOpenDispClassDeviceIN->hDevCookie, | 2329 | psOpenDispClassDeviceIN->hDevCookie, |
1768 | PVRSRV_HANDLE_TYPE_DEV_NODE); | 2330 | PVRSRV_HANDLE_TYPE_DEV_NODE); |
1769 | if(psOpenDispClassDeviceOUT->eError != PVRSRV_OK) | 2331 | if(psOpenDispClassDeviceOUT->eError != PVRSRV_OK) |
1770 | { | 2332 | { |
1771 | return 0; | 2333 | return 0; |
1772 | } | 2334 | } |
1773 | 2335 | ||
1774 | psOpenDispClassDeviceOUT->eError = | 2336 | psOpenDispClassDeviceOUT->eError = |
1775 | PVRSRVOpenDCDeviceKM(psPerProc, | 2337 | PVRSRVOpenDCDeviceKM(psPerProc, |
1776 | psOpenDispClassDeviceIN->ui32DeviceID, | 2338 | psOpenDispClassDeviceIN->ui32DeviceID, |
1777 | hDevCookieInt, | 2339 | hDevCookieInt, |
1778 | &hDispClassInfoInt); | 2340 | &hDispClassInfoInt); |
1779 | 2341 | ||
1780 | if(psOpenDispClassDeviceOUT->eError != PVRSRV_OK) | 2342 | if(psOpenDispClassDeviceOUT->eError != PVRSRV_OK) |
1781 | { | 2343 | { |
1782 | return 0; | 2344 | return 0; |
1783 | } | 2345 | } |
1784 | 2346 | ||
1785 | PVRSRVAllocHandleNR(psPerProc->psHandleBase, | 2347 | PVRSRVAllocHandleNR(psPerProc->psHandleBase, |
1786 | &psOpenDispClassDeviceOUT->hDeviceKM, | 2348 | &psOpenDispClassDeviceOUT->hDeviceKM, |
1787 | hDispClassInfoInt, | 2349 | hDispClassInfoInt, |
1788 | PVRSRV_HANDLE_TYPE_DISP_INFO, | 2350 | PVRSRV_HANDLE_TYPE_DISP_INFO, |
1789 | PVRSRV_HANDLE_ALLOC_FLAG_NONE); | 2351 | PVRSRV_HANDLE_ALLOC_FLAG_NONE); |
1790 | COMMIT_HANDLE_BATCH_OR_ERROR(psOpenDispClassDeviceOUT->eError, psPerProc) | 2352 | COMMIT_HANDLE_BATCH_OR_ERROR(psOpenDispClassDeviceOUT->eError, psPerProc) |
1791 | 2353 | ||
1792 | return 0; | 2354 | return 0; |
1793 | } | 2355 | } |
1794 | 2356 | ||
1795 | static IMG_INT | 2357 | static IMG_INT |
1796 | PVRSRVCloseDCDeviceBW(IMG_UINT32 ui32BridgeID, | 2358 | PVRSRVCloseDCDeviceBW(IMG_UINT32 ui32BridgeID, |
1797 | PVRSRV_BRIDGE_IN_CLOSE_DISPCLASS_DEVICE *psCloseDispClassDeviceIN, | 2359 | PVRSRV_BRIDGE_IN_CLOSE_DISPCLASS_DEVICE *psCloseDispClassDeviceIN, |
1798 | PVRSRV_BRIDGE_RETURN *psRetOUT, | 2360 | PVRSRV_BRIDGE_RETURN *psRetOUT, |
1799 | PVRSRV_PER_PROCESS_DATA *psPerProc) | 2361 | PVRSRV_PER_PROCESS_DATA *psPerProc) |
1800 | { | 2362 | { |
1801 | IMG_VOID *pvDispClassInfoInt; | 2363 | IMG_VOID *pvDispClassInfoInt; |
1802 | 2364 | ||
1803 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_CLOSE_DISPCLASS_DEVICE); | 2365 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_CLOSE_DISPCLASS_DEVICE); |
1804 | 2366 | ||
1805 | psRetOUT->eError = | 2367 | psRetOUT->eError = |
1806 | PVRSRVLookupHandle(psPerProc->psHandleBase, | 2368 | PVRSRVLookupHandle(psPerProc->psHandleBase, |
1807 | &pvDispClassInfoInt, | 2369 | &pvDispClassInfoInt, |
1808 | psCloseDispClassDeviceIN->hDeviceKM, | 2370 | psCloseDispClassDeviceIN->hDeviceKM, |
1809 | PVRSRV_HANDLE_TYPE_DISP_INFO); | 2371 | PVRSRV_HANDLE_TYPE_DISP_INFO); |
1810 | 2372 | ||
1811 | if(psRetOUT->eError != PVRSRV_OK) | 2373 | if(psRetOUT->eError != PVRSRV_OK) |
1812 | { | 2374 | { |
1813 | return 0; | 2375 | return 0; |
1814 | } | 2376 | } |
1815 | 2377 | ||
1816 | psRetOUT->eError = PVRSRVCloseDCDeviceKM(pvDispClassInfoInt, IMG_FALSE); | 2378 | psRetOUT->eError = PVRSRVCloseDCDeviceKM(pvDispClassInfoInt, IMG_FALSE); |
1817 | if(psRetOUT->eError != PVRSRV_OK) | 2379 | if(psRetOUT->eError != PVRSRV_OK) |
1818 | { | 2380 | { |
1819 | return 0; | 2381 | return 0; |
1820 | } | 2382 | } |
1821 | 2383 | ||
1822 | psRetOUT->eError = | 2384 | psRetOUT->eError = |
1823 | PVRSRVReleaseHandle(psPerProc->psHandleBase, | 2385 | PVRSRVReleaseHandle(psPerProc->psHandleBase, |
1824 | psCloseDispClassDeviceIN->hDeviceKM, | 2386 | psCloseDispClassDeviceIN->hDeviceKM, |
1825 | PVRSRV_HANDLE_TYPE_DISP_INFO); | 2387 | PVRSRV_HANDLE_TYPE_DISP_INFO); |
1826 | return 0; | 2388 | return 0; |
1827 | } | 2389 | } |
1828 | 2390 | ||
1829 | static IMG_INT | 2391 | static IMG_INT |
1830 | PVRSRVEnumDCFormatsBW(IMG_UINT32 ui32BridgeID, | 2392 | PVRSRVEnumDCFormatsBW(IMG_UINT32 ui32BridgeID, |
1831 | PVRSRV_BRIDGE_IN_ENUM_DISPCLASS_FORMATS *psEnumDispClassFormatsIN, | 2393 | PVRSRV_BRIDGE_IN_ENUM_DISPCLASS_FORMATS *psEnumDispClassFormatsIN, |
1832 | PVRSRV_BRIDGE_OUT_ENUM_DISPCLASS_FORMATS *psEnumDispClassFormatsOUT, | 2394 | PVRSRV_BRIDGE_OUT_ENUM_DISPCLASS_FORMATS *psEnumDispClassFormatsOUT, |
1833 | PVRSRV_PER_PROCESS_DATA *psPerProc) | 2395 | PVRSRV_PER_PROCESS_DATA *psPerProc) |
1834 | { | 2396 | { |
1835 | IMG_VOID *pvDispClassInfoInt; | 2397 | IMG_VOID *pvDispClassInfoInt; |
1836 | 2398 | ||
1837 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_ENUM_DISPCLASS_FORMATS); | 2399 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_ENUM_DISPCLASS_FORMATS); |
1838 | 2400 | ||
1839 | psEnumDispClassFormatsOUT->eError = | 2401 | psEnumDispClassFormatsOUT->eError = |
1840 | PVRSRVLookupHandle(psPerProc->psHandleBase, | 2402 | PVRSRVLookupHandle(psPerProc->psHandleBase, |
1841 | &pvDispClassInfoInt, | 2403 | &pvDispClassInfoInt, |
1842 | psEnumDispClassFormatsIN->hDeviceKM, | 2404 | psEnumDispClassFormatsIN->hDeviceKM, |
1843 | PVRSRV_HANDLE_TYPE_DISP_INFO); | 2405 | PVRSRV_HANDLE_TYPE_DISP_INFO); |
1844 | if(psEnumDispClassFormatsOUT->eError != PVRSRV_OK) | 2406 | if(psEnumDispClassFormatsOUT->eError != PVRSRV_OK) |
1845 | { | 2407 | { |
1846 | return 0; | 2408 | return 0; |
1847 | } | 2409 | } |
1848 | 2410 | ||
1849 | psEnumDispClassFormatsOUT->eError = | 2411 | psEnumDispClassFormatsOUT->eError = |
1850 | PVRSRVEnumDCFormatsKM(pvDispClassInfoInt, | 2412 | PVRSRVEnumDCFormatsKM(pvDispClassInfoInt, |
1851 | &psEnumDispClassFormatsOUT->ui32Count, | 2413 | &psEnumDispClassFormatsOUT->ui32Count, |
1852 | psEnumDispClassFormatsOUT->asFormat); | 2414 | psEnumDispClassFormatsOUT->asFormat); |
1853 | 2415 | ||
1854 | return 0; | 2416 | return 0; |
1855 | } | 2417 | } |
1856 | 2418 | ||
1857 | static IMG_INT | 2419 | static IMG_INT |
1858 | PVRSRVEnumDCDimsBW(IMG_UINT32 ui32BridgeID, | 2420 | PVRSRVEnumDCDimsBW(IMG_UINT32 ui32BridgeID, |
1859 | PVRSRV_BRIDGE_IN_ENUM_DISPCLASS_DIMS *psEnumDispClassDimsIN, | 2421 | PVRSRV_BRIDGE_IN_ENUM_DISPCLASS_DIMS *psEnumDispClassDimsIN, |
1860 | PVRSRV_BRIDGE_OUT_ENUM_DISPCLASS_DIMS *psEnumDispClassDimsOUT, | 2422 | PVRSRV_BRIDGE_OUT_ENUM_DISPCLASS_DIMS *psEnumDispClassDimsOUT, |
1861 | PVRSRV_PER_PROCESS_DATA *psPerProc) | 2423 | PVRSRV_PER_PROCESS_DATA *psPerProc) |
1862 | { | 2424 | { |
1863 | IMG_VOID *pvDispClassInfoInt; | 2425 | IMG_VOID *pvDispClassInfoInt; |
1864 | 2426 | ||
1865 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_ENUM_DISPCLASS_DIMS); | 2427 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_ENUM_DISPCLASS_DIMS); |
1866 | 2428 | ||
1867 | psEnumDispClassDimsOUT->eError = | 2429 | psEnumDispClassDimsOUT->eError = |
1868 | PVRSRVLookupHandle(psPerProc->psHandleBase, | 2430 | PVRSRVLookupHandle(psPerProc->psHandleBase, |
1869 | &pvDispClassInfoInt, | 2431 | &pvDispClassInfoInt, |
1870 | psEnumDispClassDimsIN->hDeviceKM, | 2432 | psEnumDispClassDimsIN->hDeviceKM, |
1871 | PVRSRV_HANDLE_TYPE_DISP_INFO); | 2433 | PVRSRV_HANDLE_TYPE_DISP_INFO); |
1872 | 2434 | ||
1873 | if(psEnumDispClassDimsOUT->eError != PVRSRV_OK) | 2435 | if(psEnumDispClassDimsOUT->eError != PVRSRV_OK) |
1874 | { | 2436 | { |
1875 | return 0; | 2437 | return 0; |
1876 | } | 2438 | } |
1877 | 2439 | ||
1878 | psEnumDispClassDimsOUT->eError = | 2440 | psEnumDispClassDimsOUT->eError = |
1879 | PVRSRVEnumDCDimsKM(pvDispClassInfoInt, | 2441 | PVRSRVEnumDCDimsKM(pvDispClassInfoInt, |
1880 | &psEnumDispClassDimsIN->sFormat, | 2442 | &psEnumDispClassDimsIN->sFormat, |
1881 | &psEnumDispClassDimsOUT->ui32Count, | 2443 | &psEnumDispClassDimsOUT->ui32Count, |
1882 | psEnumDispClassDimsOUT->asDim); | 2444 | psEnumDispClassDimsOUT->asDim); |
1883 | 2445 | ||
1884 | return 0; | 2446 | return 0; |
1885 | } | 2447 | } |
1886 | 2448 | ||
1887 | static IMG_INT | 2449 | static IMG_INT |
1888 | PVRSRVGetDCSystemBufferBW(IMG_UINT32 ui32BridgeID, | 2450 | PVRSRVGetDCSystemBufferBW(IMG_UINT32 ui32BridgeID, |
1889 | PVRSRV_BRIDGE_IN_GET_DISPCLASS_SYSBUFFER *psGetDispClassSysBufferIN, | 2451 | PVRSRV_BRIDGE_IN_GET_DISPCLASS_SYSBUFFER *psGetDispClassSysBufferIN, |
1890 | PVRSRV_BRIDGE_OUT_GET_DISPCLASS_SYSBUFFER *psGetDispClassSysBufferOUT, | 2452 | PVRSRV_BRIDGE_OUT_GET_DISPCLASS_SYSBUFFER *psGetDispClassSysBufferOUT, |
1891 | PVRSRV_PER_PROCESS_DATA *psPerProc) | 2453 | PVRSRV_PER_PROCESS_DATA *psPerProc) |
1892 | { | 2454 | { |
1893 | IMG_HANDLE hBufferInt; | 2455 | IMG_HANDLE hBufferInt; |
1894 | IMG_VOID *pvDispClassInfoInt; | 2456 | IMG_VOID *pvDispClassInfoInt; |
1895 | 2457 | ||
1896 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_GET_DISPCLASS_SYSBUFFER); | 2458 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_GET_DISPCLASS_SYSBUFFER); |
1897 | 2459 | ||
1898 | NEW_HANDLE_BATCH_OR_ERROR(psGetDispClassSysBufferOUT->eError, psPerProc, 1) | 2460 | NEW_HANDLE_BATCH_OR_ERROR(psGetDispClassSysBufferOUT->eError, psPerProc, 1) |
1899 | 2461 | ||
1900 | psGetDispClassSysBufferOUT->eError = | 2462 | psGetDispClassSysBufferOUT->eError = |
1901 | PVRSRVLookupHandle(psPerProc->psHandleBase, | 2463 | PVRSRVLookupHandle(psPerProc->psHandleBase, |
1902 | &pvDispClassInfoInt, | 2464 | &pvDispClassInfoInt, |
1903 | psGetDispClassSysBufferIN->hDeviceKM, | 2465 | psGetDispClassSysBufferIN->hDeviceKM, |
1904 | PVRSRV_HANDLE_TYPE_DISP_INFO); | 2466 | PVRSRV_HANDLE_TYPE_DISP_INFO); |
1905 | if(psGetDispClassSysBufferOUT->eError != PVRSRV_OK) | 2467 | if(psGetDispClassSysBufferOUT->eError != PVRSRV_OK) |
1906 | { | 2468 | { |
1907 | return 0; | 2469 | return 0; |
1908 | } | 2470 | } |
1909 | 2471 | ||
1910 | psGetDispClassSysBufferOUT->eError = | 2472 | psGetDispClassSysBufferOUT->eError = |
1911 | PVRSRVGetDCSystemBufferKM(pvDispClassInfoInt, | 2473 | PVRSRVGetDCSystemBufferKM(pvDispClassInfoInt, |
1912 | &hBufferInt); | 2474 | &hBufferInt); |
1913 | 2475 | ||
1914 | if(psGetDispClassSysBufferOUT->eError != PVRSRV_OK) | 2476 | if(psGetDispClassSysBufferOUT->eError != PVRSRV_OK) |
1915 | { | 2477 | { |
1916 | return 0; | 2478 | return 0; |
1917 | } | 2479 | } |
1918 | 2480 | ||
1919 | 2481 | ||
1920 | PVRSRVAllocSubHandleNR(psPerProc->psHandleBase, | 2482 | PVRSRVAllocSubHandleNR(psPerProc->psHandleBase, |
1921 | &psGetDispClassSysBufferOUT->hBuffer, | 2483 | &psGetDispClassSysBufferOUT->hBuffer, |
1922 | hBufferInt, | 2484 | hBufferInt, |
1923 | PVRSRV_HANDLE_TYPE_DISP_BUFFER, | 2485 | PVRSRV_HANDLE_TYPE_DISP_BUFFER, |
1924 | (PVRSRV_HANDLE_ALLOC_FLAG)(PVRSRV_HANDLE_ALLOC_FLAG_PRIVATE | PVRSRV_HANDLE_ALLOC_FLAG_SHARED), | 2486 | (PVRSRV_HANDLE_ALLOC_FLAG)(PVRSRV_HANDLE_ALLOC_FLAG_PRIVATE | PVRSRV_HANDLE_ALLOC_FLAG_SHARED), |
1925 | psGetDispClassSysBufferIN->hDeviceKM); | 2487 | psGetDispClassSysBufferIN->hDeviceKM); |
1926 | 2488 | ||
1927 | COMMIT_HANDLE_BATCH_OR_ERROR(psGetDispClassSysBufferOUT->eError, psPerProc) | 2489 | COMMIT_HANDLE_BATCH_OR_ERROR(psGetDispClassSysBufferOUT->eError, psPerProc) |
1928 | 2490 | ||
1929 | return 0; | 2491 | return 0; |
1930 | } | 2492 | } |
1931 | 2493 | ||
1932 | static IMG_INT | 2494 | static IMG_INT |
1933 | PVRSRVGetDCInfoBW(IMG_UINT32 ui32BridgeID, | 2495 | PVRSRVGetDCInfoBW(IMG_UINT32 ui32BridgeID, |
1934 | PVRSRV_BRIDGE_IN_GET_DISPCLASS_INFO *psGetDispClassInfoIN, | 2496 | PVRSRV_BRIDGE_IN_GET_DISPCLASS_INFO *psGetDispClassInfoIN, |
1935 | PVRSRV_BRIDGE_OUT_GET_DISPCLASS_INFO *psGetDispClassInfoOUT, | 2497 | PVRSRV_BRIDGE_OUT_GET_DISPCLASS_INFO *psGetDispClassInfoOUT, |
1936 | PVRSRV_PER_PROCESS_DATA *psPerProc) | 2498 | PVRSRV_PER_PROCESS_DATA *psPerProc) |
1937 | { | 2499 | { |
1938 | IMG_VOID *pvDispClassInfo; | 2500 | IMG_VOID *pvDispClassInfo; |
1939 | 2501 | ||
1940 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_GET_DISPCLASS_INFO); | 2502 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_GET_DISPCLASS_INFO); |
1941 | 2503 | ||
1942 | psGetDispClassInfoOUT->eError = | 2504 | psGetDispClassInfoOUT->eError = |
1943 | PVRSRVLookupHandle(psPerProc->psHandleBase, | 2505 | PVRSRVLookupHandle(psPerProc->psHandleBase, |
1944 | &pvDispClassInfo, | 2506 | &pvDispClassInfo, |
1945 | psGetDispClassInfoIN->hDeviceKM, | 2507 | psGetDispClassInfoIN->hDeviceKM, |
1946 | PVRSRV_HANDLE_TYPE_DISP_INFO); | 2508 | PVRSRV_HANDLE_TYPE_DISP_INFO); |
1947 | if(psGetDispClassInfoOUT->eError != PVRSRV_OK) | 2509 | if(psGetDispClassInfoOUT->eError != PVRSRV_OK) |
1948 | { | 2510 | { |
1949 | return 0; | 2511 | return 0; |
1950 | } | 2512 | } |
1951 | 2513 | ||
1952 | psGetDispClassInfoOUT->eError = | 2514 | psGetDispClassInfoOUT->eError = |
1953 | PVRSRVGetDCInfoKM(pvDispClassInfo, | 2515 | PVRSRVGetDCInfoKM(pvDispClassInfo, |
1954 | &psGetDispClassInfoOUT->sDisplayInfo); | 2516 | &psGetDispClassInfoOUT->sDisplayInfo); |
1955 | 2517 | ||
1956 | return 0; | 2518 | return 0; |
1957 | } | 2519 | } |
1958 | 2520 | ||
1959 | static IMG_INT | 2521 | static IMG_INT |
1960 | PVRSRVCreateDCSwapChainBW(IMG_UINT32 ui32BridgeID, | 2522 | PVRSRVCreateDCSwapChainBW(IMG_UINT32 ui32BridgeID, |
1961 | PVRSRV_BRIDGE_IN_CREATE_DISPCLASS_SWAPCHAIN *psCreateDispClassSwapChainIN, | 2523 | PVRSRV_BRIDGE_IN_CREATE_DISPCLASS_SWAPCHAIN *psCreateDispClassSwapChainIN, |
1962 | PVRSRV_BRIDGE_OUT_CREATE_DISPCLASS_SWAPCHAIN *psCreateDispClassSwapChainOUT, | 2524 | PVRSRV_BRIDGE_OUT_CREATE_DISPCLASS_SWAPCHAIN *psCreateDispClassSwapChainOUT, |
1963 | PVRSRV_PER_PROCESS_DATA *psPerProc) | 2525 | PVRSRV_PER_PROCESS_DATA *psPerProc) |
1964 | { | 2526 | { |
1965 | IMG_VOID *pvDispClassInfo; | 2527 | IMG_VOID *pvDispClassInfo; |
1966 | IMG_HANDLE hSwapChainInt; | 2528 | IMG_HANDLE hSwapChainInt; |
1967 | IMG_UINT32 ui32SwapChainID; | 2529 | IMG_UINT32 ui32SwapChainID; |
1968 | 2530 | ||
1969 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_CREATE_DISPCLASS_SWAPCHAIN); | 2531 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_CREATE_DISPCLASS_SWAPCHAIN); |
1970 | 2532 | ||
1971 | NEW_HANDLE_BATCH_OR_ERROR(psCreateDispClassSwapChainOUT->eError, psPerProc, 1) | 2533 | NEW_HANDLE_BATCH_OR_ERROR(psCreateDispClassSwapChainOUT->eError, psPerProc, 1) |
1972 | 2534 | ||
1973 | psCreateDispClassSwapChainOUT->eError = | 2535 | psCreateDispClassSwapChainOUT->eError = |
1974 | PVRSRVLookupHandle(psPerProc->psHandleBase, | 2536 | PVRSRVLookupHandle(psPerProc->psHandleBase, |
1975 | &pvDispClassInfo, | 2537 | &pvDispClassInfo, |
1976 | psCreateDispClassSwapChainIN->hDeviceKM, | 2538 | psCreateDispClassSwapChainIN->hDeviceKM, |
1977 | PVRSRV_HANDLE_TYPE_DISP_INFO); | 2539 | PVRSRV_HANDLE_TYPE_DISP_INFO); |
1978 | 2540 | ||
1979 | if(psCreateDispClassSwapChainOUT->eError != PVRSRV_OK) | 2541 | if(psCreateDispClassSwapChainOUT->eError != PVRSRV_OK) |
1980 | { | 2542 | { |
1981 | return 0; | 2543 | return 0; |
1982 | } | 2544 | } |
1983 | 2545 | ||
1984 | 2546 | ||
1985 | ui32SwapChainID = psCreateDispClassSwapChainIN->ui32SwapChainID; | 2547 | ui32SwapChainID = psCreateDispClassSwapChainIN->ui32SwapChainID; |
1986 | 2548 | ||
1987 | psCreateDispClassSwapChainOUT->eError = | 2549 | psCreateDispClassSwapChainOUT->eError = |
1988 | PVRSRVCreateDCSwapChainKM(psPerProc, pvDispClassInfo, | 2550 | PVRSRVCreateDCSwapChainKM(psPerProc, pvDispClassInfo, |
1989 | psCreateDispClassSwapChainIN->ui32Flags, | 2551 | psCreateDispClassSwapChainIN->ui32Flags, |
1990 | &psCreateDispClassSwapChainIN->sDstSurfAttrib, | 2552 | &psCreateDispClassSwapChainIN->sDstSurfAttrib, |
1991 | &psCreateDispClassSwapChainIN->sSrcSurfAttrib, | 2553 | &psCreateDispClassSwapChainIN->sSrcSurfAttrib, |
1992 | psCreateDispClassSwapChainIN->ui32BufferCount, | 2554 | psCreateDispClassSwapChainIN->ui32BufferCount, |
1993 | psCreateDispClassSwapChainIN->ui32OEMFlags, | 2555 | psCreateDispClassSwapChainIN->ui32OEMFlags, |
1994 | &hSwapChainInt, | 2556 | &hSwapChainInt, |
1995 | &ui32SwapChainID); | 2557 | &ui32SwapChainID); |
1996 | 2558 | ||
1997 | if(psCreateDispClassSwapChainOUT->eError != PVRSRV_OK) | 2559 | if(psCreateDispClassSwapChainOUT->eError != PVRSRV_OK) |
1998 | { | 2560 | { |
1999 | return 0; | 2561 | return 0; |
2000 | } | 2562 | } |
2001 | 2563 | ||
2002 | 2564 | ||
2003 | psCreateDispClassSwapChainOUT->ui32SwapChainID = ui32SwapChainID; | 2565 | psCreateDispClassSwapChainOUT->ui32SwapChainID = ui32SwapChainID; |
2004 | 2566 | ||
2005 | PVRSRVAllocSubHandleNR(psPerProc->psHandleBase, | 2567 | PVRSRVAllocSubHandleNR(psPerProc->psHandleBase, |
2006 | &psCreateDispClassSwapChainOUT->hSwapChain, | 2568 | &psCreateDispClassSwapChainOUT->hSwapChain, |
2007 | hSwapChainInt, | 2569 | hSwapChainInt, |
2008 | PVRSRV_HANDLE_TYPE_DISP_SWAP_CHAIN, | 2570 | PVRSRV_HANDLE_TYPE_DISP_SWAP_CHAIN, |
2009 | PVRSRV_HANDLE_ALLOC_FLAG_NONE, | 2571 | PVRSRV_HANDLE_ALLOC_FLAG_NONE, |
2010 | psCreateDispClassSwapChainIN->hDeviceKM); | 2572 | psCreateDispClassSwapChainIN->hDeviceKM); |
2011 | 2573 | ||
2012 | COMMIT_HANDLE_BATCH_OR_ERROR(psCreateDispClassSwapChainOUT->eError, psPerProc) | 2574 | COMMIT_HANDLE_BATCH_OR_ERROR(psCreateDispClassSwapChainOUT->eError, psPerProc) |
2013 | 2575 | ||
2014 | return 0; | 2576 | return 0; |
2015 | } | 2577 | } |
2016 | 2578 | ||
2017 | static IMG_INT | 2579 | static IMG_INT |
2018 | PVRSRVDestroyDCSwapChainBW(IMG_UINT32 ui32BridgeID, | 2580 | PVRSRVDestroyDCSwapChainBW(IMG_UINT32 ui32BridgeID, |
2019 | PVRSRV_BRIDGE_IN_DESTROY_DISPCLASS_SWAPCHAIN *psDestroyDispClassSwapChainIN, | 2581 | PVRSRV_BRIDGE_IN_DESTROY_DISPCLASS_SWAPCHAIN *psDestroyDispClassSwapChainIN, |
2020 | PVRSRV_BRIDGE_RETURN *psRetOUT, | 2582 | PVRSRV_BRIDGE_RETURN *psRetOUT, |
2021 | PVRSRV_PER_PROCESS_DATA *psPerProc) | 2583 | PVRSRV_PER_PROCESS_DATA *psPerProc) |
2022 | { | 2584 | { |
2023 | IMG_VOID *pvSwapChain; | 2585 | IMG_VOID *pvSwapChain; |
2024 | 2586 | ||
2025 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_DESTROY_DISPCLASS_SWAPCHAIN); | 2587 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_DESTROY_DISPCLASS_SWAPCHAIN); |
2026 | 2588 | ||
2027 | psRetOUT->eError = | 2589 | psRetOUT->eError = |
2028 | PVRSRVLookupHandle(psPerProc->psHandleBase, &pvSwapChain, | 2590 | PVRSRVLookupHandle(psPerProc->psHandleBase, &pvSwapChain, |
2029 | psDestroyDispClassSwapChainIN->hSwapChain, | 2591 | psDestroyDispClassSwapChainIN->hSwapChain, |
2030 | PVRSRV_HANDLE_TYPE_DISP_SWAP_CHAIN); | 2592 | PVRSRV_HANDLE_TYPE_DISP_SWAP_CHAIN); |
2031 | if(psRetOUT->eError != PVRSRV_OK) | 2593 | if(psRetOUT->eError != PVRSRV_OK) |
2032 | { | 2594 | { |
2033 | return 0; | 2595 | return 0; |
2034 | } | 2596 | } |
2035 | 2597 | ||
2036 | psRetOUT->eError = | 2598 | psRetOUT->eError = |
2037 | PVRSRVDestroyDCSwapChainKM(pvSwapChain); | 2599 | PVRSRVDestroyDCSwapChainKM(pvSwapChain); |
2038 | 2600 | ||
2039 | if(psRetOUT->eError != PVRSRV_OK) | 2601 | if(psRetOUT->eError != PVRSRV_OK) |
2040 | { | 2602 | { |
2041 | return 0; | 2603 | return 0; |
2042 | } | 2604 | } |
2043 | 2605 | ||
2044 | psRetOUT->eError = | 2606 | psRetOUT->eError = |
2045 | PVRSRVReleaseHandle(psPerProc->psHandleBase, | 2607 | PVRSRVReleaseHandle(psPerProc->psHandleBase, |
2046 | psDestroyDispClassSwapChainIN->hSwapChain, | 2608 | psDestroyDispClassSwapChainIN->hSwapChain, |
2047 | PVRSRV_HANDLE_TYPE_DISP_SWAP_CHAIN); | 2609 | PVRSRV_HANDLE_TYPE_DISP_SWAP_CHAIN); |
2048 | 2610 | ||
2049 | return 0; | 2611 | return 0; |
2050 | } | 2612 | } |
2051 | 2613 | ||
2052 | static IMG_INT | 2614 | static IMG_INT |
2053 | PVRSRVSetDCDstRectBW(IMG_UINT32 ui32BridgeID, | 2615 | PVRSRVSetDCDstRectBW(IMG_UINT32 ui32BridgeID, |
2054 | PVRSRV_BRIDGE_IN_SET_DISPCLASS_RECT *psSetDispClassDstRectIN, | 2616 | PVRSRV_BRIDGE_IN_SET_DISPCLASS_RECT *psSetDispClassDstRectIN, |
2055 | PVRSRV_BRIDGE_RETURN *psRetOUT, | 2617 | PVRSRV_BRIDGE_RETURN *psRetOUT, |
2056 | PVRSRV_PER_PROCESS_DATA *psPerProc) | 2618 | PVRSRV_PER_PROCESS_DATA *psPerProc) |
2057 | { | 2619 | { |
2058 | IMG_VOID *pvDispClassInfo; | 2620 | IMG_VOID *pvDispClassInfo; |
2059 | IMG_VOID *pvSwapChain; | 2621 | IMG_VOID *pvSwapChain; |
2060 | 2622 | ||
2061 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_SET_DISPCLASS_DSTRECT); | 2623 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_SET_DISPCLASS_DSTRECT); |
2062 | 2624 | ||
2063 | psRetOUT->eError = | 2625 | psRetOUT->eError = |
2064 | PVRSRVLookupHandle(psPerProc->psHandleBase, | 2626 | PVRSRVLookupHandle(psPerProc->psHandleBase, |
2065 | &pvDispClassInfo, | 2627 | &pvDispClassInfo, |
2066 | psSetDispClassDstRectIN->hDeviceKM, | 2628 | psSetDispClassDstRectIN->hDeviceKM, |
2067 | PVRSRV_HANDLE_TYPE_DISP_INFO); | 2629 | PVRSRV_HANDLE_TYPE_DISP_INFO); |
2068 | if(psRetOUT->eError != PVRSRV_OK) | 2630 | if(psRetOUT->eError != PVRSRV_OK) |
2069 | { | 2631 | { |
2070 | return 0; | 2632 | return 0; |
2071 | } | 2633 | } |
2072 | 2634 | ||
2073 | psRetOUT->eError = | 2635 | psRetOUT->eError = |
2074 | PVRSRVLookupHandle(psPerProc->psHandleBase, | 2636 | PVRSRVLookupHandle(psPerProc->psHandleBase, |
2075 | &pvSwapChain, | 2637 | &pvSwapChain, |
2076 | psSetDispClassDstRectIN->hSwapChain, | 2638 | psSetDispClassDstRectIN->hSwapChain, |
2077 | PVRSRV_HANDLE_TYPE_DISP_SWAP_CHAIN); | 2639 | PVRSRV_HANDLE_TYPE_DISP_SWAP_CHAIN); |
2078 | 2640 | ||
2079 | if(psRetOUT->eError != PVRSRV_OK) | 2641 | if(psRetOUT->eError != PVRSRV_OK) |
2080 | { | 2642 | { |
2081 | return 0; | 2643 | return 0; |
2082 | } | 2644 | } |
2083 | 2645 | ||
2084 | psRetOUT->eError = | 2646 | psRetOUT->eError = |
2085 | PVRSRVSetDCDstRectKM(pvDispClassInfo, | 2647 | PVRSRVSetDCDstRectKM(pvDispClassInfo, |
2086 | pvSwapChain, | 2648 | pvSwapChain, |
2087 | &psSetDispClassDstRectIN->sRect); | 2649 | &psSetDispClassDstRectIN->sRect); |
2088 | 2650 | ||
2089 | return 0; | 2651 | return 0; |
2090 | } | 2652 | } |
2091 | 2653 | ||
2092 | static IMG_INT | 2654 | static IMG_INT |
2093 | PVRSRVSetDCSrcRectBW(IMG_UINT32 ui32BridgeID, | 2655 | PVRSRVSetDCSrcRectBW(IMG_UINT32 ui32BridgeID, |
2094 | PVRSRV_BRIDGE_IN_SET_DISPCLASS_RECT *psSetDispClassSrcRectIN, | 2656 | PVRSRV_BRIDGE_IN_SET_DISPCLASS_RECT *psSetDispClassSrcRectIN, |
2095 | PVRSRV_BRIDGE_RETURN *psRetOUT, | 2657 | PVRSRV_BRIDGE_RETURN *psRetOUT, |
2096 | PVRSRV_PER_PROCESS_DATA *psPerProc) | 2658 | PVRSRV_PER_PROCESS_DATA *psPerProc) |
2097 | { | 2659 | { |
2098 | IMG_VOID *pvDispClassInfo; | 2660 | IMG_VOID *pvDispClassInfo; |
2099 | IMG_VOID *pvSwapChain; | 2661 | IMG_VOID *pvSwapChain; |
2100 | 2662 | ||
2101 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_SET_DISPCLASS_SRCRECT); | 2663 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_SET_DISPCLASS_SRCRECT); |
2102 | 2664 | ||
2103 | psRetOUT->eError = | 2665 | psRetOUT->eError = |
2104 | PVRSRVLookupHandle(psPerProc->psHandleBase, | 2666 | PVRSRVLookupHandle(psPerProc->psHandleBase, |
2105 | &pvDispClassInfo, | 2667 | &pvDispClassInfo, |
2106 | psSetDispClassSrcRectIN->hDeviceKM, | 2668 | psSetDispClassSrcRectIN->hDeviceKM, |
2107 | PVRSRV_HANDLE_TYPE_DISP_INFO); | 2669 | PVRSRV_HANDLE_TYPE_DISP_INFO); |
2108 | if(psRetOUT->eError != PVRSRV_OK) | 2670 | if(psRetOUT->eError != PVRSRV_OK) |
2109 | { | 2671 | { |
2110 | return 0; | 2672 | return 0; |
2111 | } | 2673 | } |
2112 | 2674 | ||
2113 | psRetOUT->eError = | 2675 | psRetOUT->eError = |
2114 | PVRSRVLookupHandle(psPerProc->psHandleBase, | 2676 | PVRSRVLookupHandle(psPerProc->psHandleBase, |
2115 | &pvSwapChain, | 2677 | &pvSwapChain, |
2116 | psSetDispClassSrcRectIN->hSwapChain, | 2678 | psSetDispClassSrcRectIN->hSwapChain, |
2117 | PVRSRV_HANDLE_TYPE_DISP_SWAP_CHAIN); | 2679 | PVRSRV_HANDLE_TYPE_DISP_SWAP_CHAIN); |
2118 | if(psRetOUT->eError != PVRSRV_OK) | 2680 | if(psRetOUT->eError != PVRSRV_OK) |
2119 | { | 2681 | { |
2120 | return 0; | 2682 | return 0; |
2121 | } | 2683 | } |
2122 | 2684 | ||
2123 | psRetOUT->eError = | 2685 | psRetOUT->eError = |
2124 | PVRSRVSetDCSrcRectKM(pvDispClassInfo, | 2686 | PVRSRVSetDCSrcRectKM(pvDispClassInfo, |
2125 | pvSwapChain, | 2687 | pvSwapChain, |
2126 | &psSetDispClassSrcRectIN->sRect); | 2688 | &psSetDispClassSrcRectIN->sRect); |
2127 | 2689 | ||
2128 | return 0; | 2690 | return 0; |
2129 | } | 2691 | } |
2130 | 2692 | ||
2131 | static IMG_INT | 2693 | static IMG_INT |
2132 | PVRSRVSetDCDstColourKeyBW(IMG_UINT32 ui32BridgeID, | 2694 | PVRSRVSetDCDstColourKeyBW(IMG_UINT32 ui32BridgeID, |
2133 | PVRSRV_BRIDGE_IN_SET_DISPCLASS_COLOURKEY *psSetDispClassColKeyIN, | 2695 | PVRSRV_BRIDGE_IN_SET_DISPCLASS_COLOURKEY *psSetDispClassColKeyIN, |
2134 | PVRSRV_BRIDGE_RETURN *psRetOUT, | 2696 | PVRSRV_BRIDGE_RETURN *psRetOUT, |
2135 | PVRSRV_PER_PROCESS_DATA *psPerProc) | 2697 | PVRSRV_PER_PROCESS_DATA *psPerProc) |
2136 | { | 2698 | { |
2137 | IMG_VOID *pvDispClassInfo; | 2699 | IMG_VOID *pvDispClassInfo; |
2138 | IMG_VOID *pvSwapChain; | 2700 | IMG_VOID *pvSwapChain; |
2139 | 2701 | ||
2140 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_SET_DISPCLASS_DSTCOLOURKEY); | 2702 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_SET_DISPCLASS_DSTCOLOURKEY); |
2141 | 2703 | ||
2142 | psRetOUT->eError = | 2704 | psRetOUT->eError = |
2143 | PVRSRVLookupHandle(psPerProc->psHandleBase, | 2705 | PVRSRVLookupHandle(psPerProc->psHandleBase, |
2144 | &pvDispClassInfo, | 2706 | &pvDispClassInfo, |
2145 | psSetDispClassColKeyIN->hDeviceKM, | 2707 | psSetDispClassColKeyIN->hDeviceKM, |
2146 | PVRSRV_HANDLE_TYPE_DISP_INFO); | 2708 | PVRSRV_HANDLE_TYPE_DISP_INFO); |
2147 | if(psRetOUT->eError != PVRSRV_OK) | 2709 | if(psRetOUT->eError != PVRSRV_OK) |
2148 | { | 2710 | { |
2149 | return 0; | 2711 | return 0; |
2150 | } | 2712 | } |
2151 | 2713 | ||
2152 | psRetOUT->eError = | 2714 | psRetOUT->eError = |
2153 | PVRSRVLookupHandle(psPerProc->psHandleBase, | 2715 | PVRSRVLookupHandle(psPerProc->psHandleBase, |
2154 | &pvSwapChain, | 2716 | &pvSwapChain, |
2155 | psSetDispClassColKeyIN->hSwapChain, | 2717 | psSetDispClassColKeyIN->hSwapChain, |
2156 | PVRSRV_HANDLE_TYPE_DISP_SWAP_CHAIN); | 2718 | PVRSRV_HANDLE_TYPE_DISP_SWAP_CHAIN); |
2157 | if(psRetOUT->eError != PVRSRV_OK) | 2719 | if(psRetOUT->eError != PVRSRV_OK) |
2158 | { | 2720 | { |
2159 | return 0; | 2721 | return 0; |
2160 | } | 2722 | } |
2161 | 2723 | ||
2162 | psRetOUT->eError = | 2724 | psRetOUT->eError = |
2163 | PVRSRVSetDCDstColourKeyKM(pvDispClassInfo, | 2725 | PVRSRVSetDCDstColourKeyKM(pvDispClassInfo, |
2164 | pvSwapChain, | 2726 | pvSwapChain, |
2165 | psSetDispClassColKeyIN->ui32CKColour); | 2727 | psSetDispClassColKeyIN->ui32CKColour); |
2166 | 2728 | ||
2167 | return 0; | 2729 | return 0; |
2168 | } | 2730 | } |
2169 | 2731 | ||
2170 | static IMG_INT | 2732 | static IMG_INT |
2171 | PVRSRVSetDCSrcColourKeyBW(IMG_UINT32 ui32BridgeID, | 2733 | PVRSRVSetDCSrcColourKeyBW(IMG_UINT32 ui32BridgeID, |
2172 | PVRSRV_BRIDGE_IN_SET_DISPCLASS_COLOURKEY *psSetDispClassColKeyIN, | 2734 | PVRSRV_BRIDGE_IN_SET_DISPCLASS_COLOURKEY *psSetDispClassColKeyIN, |
2173 | PVRSRV_BRIDGE_RETURN *psRetOUT, | 2735 | PVRSRV_BRIDGE_RETURN *psRetOUT, |
2174 | PVRSRV_PER_PROCESS_DATA *psPerProc) | 2736 | PVRSRV_PER_PROCESS_DATA *psPerProc) |
2175 | { | 2737 | { |
2176 | IMG_VOID *pvDispClassInfo; | 2738 | IMG_VOID *pvDispClassInfo; |
2177 | IMG_VOID *pvSwapChain; | 2739 | IMG_VOID *pvSwapChain; |
2178 | 2740 | ||
2179 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_SET_DISPCLASS_SRCCOLOURKEY); | 2741 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_SET_DISPCLASS_SRCCOLOURKEY); |
2180 | 2742 | ||
2181 | psRetOUT->eError = | 2743 | psRetOUT->eError = |
2182 | PVRSRVLookupHandle(psPerProc->psHandleBase, | 2744 | PVRSRVLookupHandle(psPerProc->psHandleBase, |
2183 | &pvDispClassInfo, | 2745 | &pvDispClassInfo, |
2184 | psSetDispClassColKeyIN->hDeviceKM, | 2746 | psSetDispClassColKeyIN->hDeviceKM, |
2185 | PVRSRV_HANDLE_TYPE_DISP_INFO); | 2747 | PVRSRV_HANDLE_TYPE_DISP_INFO); |
2186 | if(psRetOUT->eError != PVRSRV_OK) | 2748 | if(psRetOUT->eError != PVRSRV_OK) |
2187 | { | 2749 | { |
2188 | return 0; | 2750 | return 0; |
2189 | } | 2751 | } |
2190 | 2752 | ||
2191 | psRetOUT->eError = | 2753 | psRetOUT->eError = |
2192 | PVRSRVLookupHandle(psPerProc->psHandleBase, | 2754 | PVRSRVLookupHandle(psPerProc->psHandleBase, |
2193 | &pvSwapChain, | 2755 | &pvSwapChain, |
2194 | psSetDispClassColKeyIN->hSwapChain, | 2756 | psSetDispClassColKeyIN->hSwapChain, |
2195 | PVRSRV_HANDLE_TYPE_DISP_SWAP_CHAIN); | 2757 | PVRSRV_HANDLE_TYPE_DISP_SWAP_CHAIN); |
2196 | if(psRetOUT->eError != PVRSRV_OK) | 2758 | if(psRetOUT->eError != PVRSRV_OK) |
2197 | { | 2759 | { |
2198 | return 0; | 2760 | return 0; |
2199 | } | 2761 | } |
2200 | 2762 | ||
2201 | psRetOUT->eError = | 2763 | psRetOUT->eError = |
2202 | PVRSRVSetDCSrcColourKeyKM(pvDispClassInfo, | 2764 | PVRSRVSetDCSrcColourKeyKM(pvDispClassInfo, |
2203 | pvSwapChain, | 2765 | pvSwapChain, |
2204 | psSetDispClassColKeyIN->ui32CKColour); | 2766 | psSetDispClassColKeyIN->ui32CKColour); |
2205 | 2767 | ||
2206 | return 0; | 2768 | return 0; |
2207 | } | 2769 | } |
2208 | 2770 | ||
2209 | static IMG_INT | 2771 | static IMG_INT |
2210 | PVRSRVGetDCBuffersBW(IMG_UINT32 ui32BridgeID, | 2772 | PVRSRVGetDCBuffersBW(IMG_UINT32 ui32BridgeID, |
2211 | PVRSRV_BRIDGE_IN_GET_DISPCLASS_BUFFERS *psGetDispClassBuffersIN, | 2773 | PVRSRV_BRIDGE_IN_GET_DISPCLASS_BUFFERS *psGetDispClassBuffersIN, |
2212 | PVRSRV_BRIDGE_OUT_GET_DISPCLASS_BUFFERS *psGetDispClassBuffersOUT, | 2774 | PVRSRV_BRIDGE_OUT_GET_DISPCLASS_BUFFERS *psGetDispClassBuffersOUT, |
2213 | PVRSRV_PER_PROCESS_DATA *psPerProc) | 2775 | PVRSRV_PER_PROCESS_DATA *psPerProc) |
2214 | { | 2776 | { |
2215 | IMG_VOID *pvDispClassInfo; | 2777 | IMG_VOID *pvDispClassInfo; |
2216 | IMG_VOID *pvSwapChain; | 2778 | IMG_VOID *pvSwapChain; |
2217 | IMG_UINT32 i; | 2779 | IMG_UINT32 i; |
2218 | 2780 | #if defined (SUPPORT_SID_INTERFACE) | |
2219 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_GET_DISPCLASS_BUFFERS); | 2781 | IMG_HANDLE *pahBuffer; |
2220 | 2782 | #endif | |
2221 | NEW_HANDLE_BATCH_OR_ERROR(psGetDispClassBuffersOUT->eError, psPerProc, PVRSRV_MAX_DC_SWAPCHAIN_BUFFERS) | ||
2222 | |||
2223 | psGetDispClassBuffersOUT->eError = | ||
2224 | PVRSRVLookupHandle(psPerProc->psHandleBase, | ||
2225 | &pvDispClassInfo, | ||
2226 | psGetDispClassBuffersIN->hDeviceKM, | ||
2227 | PVRSRV_HANDLE_TYPE_DISP_INFO); | ||
2228 | if(psGetDispClassBuffersOUT->eError != PVRSRV_OK) | ||
2229 | { | ||
2230 | return 0; | ||
2231 | } | ||
2232 | 2783 | ||
2233 | psGetDispClassBuffersOUT->eError = | 2784 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_GET_DISPCLASS_BUFFERS); |
2234 | PVRSRVLookupHandle(psPerProc->psHandleBase, | 2785 | |
2235 | &pvSwapChain, | 2786 | NEW_HANDLE_BATCH_OR_ERROR(psGetDispClassBuffersOUT->eError, psPerProc, PVRSRV_MAX_DC_SWAPCHAIN_BUFFERS) |
2236 | psGetDispClassBuffersIN->hSwapChain, | 2787 | |
2237 | PVRSRV_HANDLE_TYPE_DISP_SWAP_CHAIN); | 2788 | psGetDispClassBuffersOUT->eError = |
2238 | if(psGetDispClassBuffersOUT->eError != PVRSRV_OK) | 2789 | PVRSRVLookupHandle(psPerProc->psHandleBase, |
2239 | { | 2790 | &pvDispClassInfo, |
2240 | return 0; | 2791 | psGetDispClassBuffersIN->hDeviceKM, |
2241 | } | 2792 | PVRSRV_HANDLE_TYPE_DISP_INFO); |
2793 | if(psGetDispClassBuffersOUT->eError != PVRSRV_OK) | ||
2794 | { | ||
2795 | return 0; | ||
2796 | } | ||
2797 | |||
2798 | psGetDispClassBuffersOUT->eError = | ||
2799 | PVRSRVLookupHandle(psPerProc->psHandleBase, | ||
2800 | &pvSwapChain, | ||
2801 | psGetDispClassBuffersIN->hSwapChain, | ||
2802 | PVRSRV_HANDLE_TYPE_DISP_SWAP_CHAIN); | ||
2803 | if(psGetDispClassBuffersOUT->eError != PVRSRV_OK) | ||
2804 | { | ||
2805 | return 0; | ||
2806 | } | ||
2807 | |||
2808 | #if defined (SUPPORT_SID_INTERFACE) | ||
2809 | psGetDispClassBuffersOUT->eError = OSAllocMem(PVRSRV_OS_PAGEABLE_HEAP, | ||
2810 | sizeof(IMG_HANDLE) * PVRSRV_MAX_DC_SWAPCHAIN_BUFFERS, | ||
2811 | (IMG_PVOID *)&pahBuffer, 0, | ||
2812 | "Temp Swapchain Buffers"); | ||
2813 | |||
2814 | if (psGetDispClassBuffersOUT->eError != PVRSRV_OK) | ||
2815 | { | ||
2816 | return 0; | ||
2817 | } | ||
2818 | #endif | ||
2242 | 2819 | ||
2243 | psGetDispClassBuffersOUT->eError = | 2820 | psGetDispClassBuffersOUT->eError = |
2244 | PVRSRVGetDCBuffersKM(pvDispClassInfo, | 2821 | PVRSRVGetDCBuffersKM(pvDispClassInfo, |
2245 | pvSwapChain, | 2822 | pvSwapChain, |
2246 | &psGetDispClassBuffersOUT->ui32BufferCount, | 2823 | &psGetDispClassBuffersOUT->ui32BufferCount, |
2247 | psGetDispClassBuffersOUT->ahBuffer); | 2824 | #if defined (SUPPORT_SID_INTERFACE) |
2248 | if (psGetDispClassBuffersOUT->eError != PVRSRV_OK) | 2825 | pahBuffer); |
2249 | { | 2826 | #else |
2250 | return 0; | 2827 | psGetDispClassBuffersOUT->ahBuffer); |
2251 | } | 2828 | #endif |
2829 | if (psGetDispClassBuffersOUT->eError != PVRSRV_OK) | ||
2830 | { | ||
2831 | return 0; | ||
2832 | } | ||
2252 | 2833 | ||
2253 | PVR_ASSERT(psGetDispClassBuffersOUT->ui32BufferCount <= PVRSRV_MAX_DC_SWAPCHAIN_BUFFERS); | 2834 | PVR_ASSERT(psGetDispClassBuffersOUT->ui32BufferCount <= PVRSRV_MAX_DC_SWAPCHAIN_BUFFERS); |
2254 | 2835 | ||
2255 | for(i = 0; i < psGetDispClassBuffersOUT->ui32BufferCount; i++) | 2836 | for(i = 0; i < psGetDispClassBuffersOUT->ui32BufferCount; i++) |
2256 | { | 2837 | { |
2257 | IMG_HANDLE hBufferExt; | 2838 | #if defined (SUPPORT_SID_INTERFACE) |
2839 | IMG_SID hBufferExt; | ||
2840 | #else | ||
2841 | IMG_HANDLE hBufferExt; | ||
2842 | #endif | ||
2258 | 2843 | ||
2844 | |||
2845 | #if defined (SUPPORT_SID_INTERFACE) | ||
2846 | PVRSRVAllocSubHandleNR(psPerProc->psHandleBase, | ||
2847 | &hBufferExt, | ||
2848 | pahBuffer[i], | ||
2849 | PVRSRV_HANDLE_TYPE_DISP_BUFFER, | ||
2850 | (PVRSRV_HANDLE_ALLOC_FLAG)(PVRSRV_HANDLE_ALLOC_FLAG_PRIVATE | PVRSRV_HANDLE_ALLOC_FLAG_SHARED), | ||
2851 | psGetDispClassBuffersIN->hSwapChain); | ||
2852 | #else | ||
2853 | PVRSRVAllocSubHandleNR(psPerProc->psHandleBase, | ||
2854 | &hBufferExt, | ||
2855 | psGetDispClassBuffersOUT->ahBuffer[i], | ||
2856 | PVRSRV_HANDLE_TYPE_DISP_BUFFER, | ||
2857 | (PVRSRV_HANDLE_ALLOC_FLAG)(PVRSRV_HANDLE_ALLOC_FLAG_PRIVATE | PVRSRV_HANDLE_ALLOC_FLAG_SHARED), | ||
2858 | psGetDispClassBuffersIN->hSwapChain); | ||
2859 | #endif | ||
2259 | 2860 | ||
2260 | PVRSRVAllocSubHandleNR(psPerProc->psHandleBase, | 2861 | psGetDispClassBuffersOUT->ahBuffer[i] = hBufferExt; |
2261 | &hBufferExt, | 2862 | } |
2262 | psGetDispClassBuffersOUT->ahBuffer[i], | ||
2263 | PVRSRV_HANDLE_TYPE_DISP_BUFFER, | ||
2264 | (PVRSRV_HANDLE_ALLOC_FLAG)(PVRSRV_HANDLE_ALLOC_FLAG_PRIVATE | PVRSRV_HANDLE_ALLOC_FLAG_SHARED), | ||
2265 | psGetDispClassBuffersIN->hSwapChain); | ||
2266 | 2863 | ||
2267 | psGetDispClassBuffersOUT->ahBuffer[i] = hBufferExt; | 2864 | #if defined (SUPPORT_SID_INTERFACE) |
2268 | } | 2865 | OSFreeMem(PVRSRV_OS_PAGEABLE_HEAP, |
2866 | sizeof(IMG_HANDLE) * PVRSRV_MAX_DC_SWAPCHAIN_BUFFERS, | ||
2867 | (IMG_PVOID)pahBuffer, 0); | ||
2868 | #endif | ||
2269 | 2869 | ||
2270 | COMMIT_HANDLE_BATCH_OR_ERROR(psGetDispClassBuffersOUT->eError, psPerProc) | 2870 | COMMIT_HANDLE_BATCH_OR_ERROR(psGetDispClassBuffersOUT->eError, psPerProc) |
2271 | 2871 | ||
2272 | return 0; | 2872 | return 0; |
2273 | } | 2873 | } |
2274 | 2874 | ||
2275 | static IMG_INT | 2875 | static IMG_INT |
2276 | PVRSRVSwapToDCBufferBW(IMG_UINT32 ui32BridgeID, | 2876 | PVRSRVSwapToDCBufferBW(IMG_UINT32 ui32BridgeID, |
2277 | PVRSRV_BRIDGE_IN_SWAP_DISPCLASS_TO_BUFFER *psSwapDispClassBufferIN, | 2877 | PVRSRV_BRIDGE_IN_SWAP_DISPCLASS_TO_BUFFER *psSwapDispClassBufferIN, |
2278 | PVRSRV_BRIDGE_RETURN *psRetOUT, | 2878 | PVRSRV_BRIDGE_RETURN *psRetOUT, |
2279 | PVRSRV_PER_PROCESS_DATA *psPerProc) | 2879 | PVRSRV_PER_PROCESS_DATA *psPerProc) |
2280 | { | 2880 | { |
2281 | IMG_VOID *pvDispClassInfo; | 2881 | IMG_VOID *pvDispClassInfo; |
2282 | IMG_VOID *pvSwapChainBuf; | 2882 | IMG_VOID *pvSwapChainBuf; |
2283 | 2883 | #if defined (SUPPORT_SID_INTERFACE) | |
2284 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_SWAP_DISPCLASS_TO_BUFFER); | 2884 | IMG_HANDLE hPrivateTag; |
2885 | #endif | ||
2285 | 2886 | ||
2286 | psRetOUT->eError = | 2887 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_SWAP_DISPCLASS_TO_BUFFER); |
2287 | PVRSRVLookupHandle(psPerProc->psHandleBase, | 2888 | |
2288 | &pvDispClassInfo, | 2889 | psRetOUT->eError = |
2289 | psSwapDispClassBufferIN->hDeviceKM, | 2890 | PVRSRVLookupHandle(psPerProc->psHandleBase, |
2290 | PVRSRV_HANDLE_TYPE_DISP_INFO); | 2891 | &pvDispClassInfo, |
2291 | if(psRetOUT->eError != PVRSRV_OK) | 2892 | psSwapDispClassBufferIN->hDeviceKM, |
2292 | { | 2893 | PVRSRV_HANDLE_TYPE_DISP_INFO); |
2293 | return 0; | 2894 | if(psRetOUT->eError != PVRSRV_OK) |
2294 | } | 2895 | { |
2896 | return 0; | ||
2897 | } | ||
2898 | |||
2899 | psRetOUT->eError = | ||
2900 | PVRSRVLookupSubHandle(psPerProc->psHandleBase, | ||
2901 | &pvSwapChainBuf, | ||
2902 | psSwapDispClassBufferIN->hBuffer, | ||
2903 | PVRSRV_HANDLE_TYPE_DISP_BUFFER, | ||
2904 | psSwapDispClassBufferIN->hDeviceKM); | ||
2905 | if(psRetOUT->eError != PVRSRV_OK) | ||
2906 | { | ||
2907 | return 0; | ||
2908 | } | ||
2909 | |||
2910 | #if defined (SUPPORT_SID_INTERFACE) | ||
2911 | if (psSwapDispClassBufferIN->hPrivateTag != 0) | ||
2912 | { | ||
2913 | psRetOUT->eError = | ||
2914 | PVRSRVLookupSubHandle(psPerProc->psHandleBase, | ||
2915 | &hPrivateTag, | ||
2916 | psSwapDispClassBufferIN->hPrivateTag, | ||
2917 | PVRSRV_HANDLE_TYPE_DISP_BUFFER, | ||
2918 | psSwapDispClassBufferIN->hDeviceKM); | ||
2919 | if(psRetOUT->eError != PVRSRV_OK) | ||
2920 | { | ||
2921 | return 0; | ||
2922 | } | ||
2923 | } | ||
2924 | else | ||
2925 | { | ||
2926 | hPrivateTag = IMG_NULL; | ||
2927 | } | ||
2928 | #endif | ||
2295 | 2929 | ||
2296 | psRetOUT->eError = | ||
2297 | PVRSRVLookupSubHandle(psPerProc->psHandleBase, | ||
2298 | &pvSwapChainBuf, | ||
2299 | psSwapDispClassBufferIN->hBuffer, | ||
2300 | PVRSRV_HANDLE_TYPE_DISP_BUFFER, | ||
2301 | psSwapDispClassBufferIN->hDeviceKM); | ||
2302 | if(psRetOUT->eError != PVRSRV_OK) | ||
2303 | { | ||
2304 | return 0; | ||
2305 | } | ||
2306 | 2930 | ||
2307 | psRetOUT->eError = | 2931 | psRetOUT->eError = |
2308 | PVRSRVSwapToDCBufferKM(pvDispClassInfo, | 2932 | PVRSRVSwapToDCBufferKM(pvDispClassInfo, |
2309 | pvSwapChainBuf, | 2933 | pvSwapChainBuf, |
2310 | psSwapDispClassBufferIN->ui32SwapInterval, | 2934 | psSwapDispClassBufferIN->ui32SwapInterval, |
2311 | psSwapDispClassBufferIN->hPrivateTag, | 2935 | #if defined (SUPPORT_SID_INTERFACE) |
2312 | psSwapDispClassBufferIN->ui32ClipRectCount, | 2936 | hPrivateTag, |
2313 | psSwapDispClassBufferIN->sClipRect); | 2937 | #else |
2938 | psSwapDispClassBufferIN->hPrivateTag, | ||
2939 | #endif | ||
2940 | psSwapDispClassBufferIN->ui32ClipRectCount, | ||
2941 | psSwapDispClassBufferIN->sClipRect); | ||
2314 | 2942 | ||
2315 | return 0; | 2943 | return 0; |
2316 | } | 2944 | } |
2317 | 2945 | ||
2318 | static IMG_INT | 2946 | static IMG_INT |
2319 | PVRSRVSwapToDCSystemBW(IMG_UINT32 ui32BridgeID, | 2947 | PVRSRVSwapToDCSystemBW(IMG_UINT32 ui32BridgeID, |
2320 | PVRSRV_BRIDGE_IN_SWAP_DISPCLASS_TO_SYSTEM *psSwapDispClassSystemIN, | 2948 | PVRSRV_BRIDGE_IN_SWAP_DISPCLASS_TO_SYSTEM *psSwapDispClassSystemIN, |
2321 | PVRSRV_BRIDGE_RETURN *psRetOUT, | 2949 | PVRSRV_BRIDGE_RETURN *psRetOUT, |
2322 | PVRSRV_PER_PROCESS_DATA *psPerProc) | 2950 | PVRSRV_PER_PROCESS_DATA *psPerProc) |
2323 | { | 2951 | { |
2324 | IMG_VOID *pvDispClassInfo; | 2952 | IMG_VOID *pvDispClassInfo; |
2325 | IMG_VOID *pvSwapChain; | 2953 | IMG_VOID *pvSwapChain; |
2326 | 2954 | ||
2327 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_SWAP_DISPCLASS_TO_SYSTEM); | 2955 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_SWAP_DISPCLASS_TO_SYSTEM); |
2328 | 2956 | ||
2329 | psRetOUT->eError = | 2957 | psRetOUT->eError = |
2330 | PVRSRVLookupHandle(psPerProc->psHandleBase, | 2958 | PVRSRVLookupHandle(psPerProc->psHandleBase, |
2331 | &pvDispClassInfo, | 2959 | &pvDispClassInfo, |
2332 | psSwapDispClassSystemIN->hDeviceKM, | 2960 | psSwapDispClassSystemIN->hDeviceKM, |
2333 | PVRSRV_HANDLE_TYPE_DISP_INFO); | 2961 | PVRSRV_HANDLE_TYPE_DISP_INFO); |
2334 | if(psRetOUT->eError != PVRSRV_OK) | 2962 | if(psRetOUT->eError != PVRSRV_OK) |
2335 | { | 2963 | { |
2336 | return 0; | 2964 | return 0; |
2337 | } | 2965 | } |
2338 | 2966 | ||
2339 | psRetOUT->eError = | 2967 | psRetOUT->eError = |
2340 | PVRSRVLookupSubHandle(psPerProc->psHandleBase, | 2968 | PVRSRVLookupSubHandle(psPerProc->psHandleBase, |
2341 | &pvSwapChain, | 2969 | &pvSwapChain, |
2342 | psSwapDispClassSystemIN->hSwapChain, | 2970 | psSwapDispClassSystemIN->hSwapChain, |
2343 | PVRSRV_HANDLE_TYPE_DISP_SWAP_CHAIN, | 2971 | PVRSRV_HANDLE_TYPE_DISP_SWAP_CHAIN, |
2344 | psSwapDispClassSystemIN->hDeviceKM); | 2972 | psSwapDispClassSystemIN->hDeviceKM); |
2345 | if(psRetOUT->eError != PVRSRV_OK) | 2973 | if(psRetOUT->eError != PVRSRV_OK) |
2346 | { | 2974 | { |
2347 | return 0; | 2975 | return 0; |
2348 | } | 2976 | } |
2349 | psRetOUT->eError = | 2977 | psRetOUT->eError = |
2350 | PVRSRVSwapToDCSystemKM(pvDispClassInfo, | 2978 | PVRSRVSwapToDCSystemKM(pvDispClassInfo, |
2351 | pvSwapChain); | 2979 | pvSwapChain); |
2352 | 2980 | ||
2353 | return 0; | 2981 | return 0; |
2354 | } | 2982 | } |
2355 | 2983 | ||
2356 | static IMG_INT | 2984 | static IMG_INT |
2357 | PVRSRVOpenBCDeviceBW(IMG_UINT32 ui32BridgeID, | 2985 | PVRSRVOpenBCDeviceBW(IMG_UINT32 ui32BridgeID, |
2358 | PVRSRV_BRIDGE_IN_OPEN_BUFFERCLASS_DEVICE *psOpenBufferClassDeviceIN, | 2986 | PVRSRV_BRIDGE_IN_OPEN_BUFFERCLASS_DEVICE *psOpenBufferClassDeviceIN, |
2359 | PVRSRV_BRIDGE_OUT_OPEN_BUFFERCLASS_DEVICE *psOpenBufferClassDeviceOUT, | 2987 | PVRSRV_BRIDGE_OUT_OPEN_BUFFERCLASS_DEVICE *psOpenBufferClassDeviceOUT, |
2360 | PVRSRV_PER_PROCESS_DATA *psPerProc) | 2988 | PVRSRV_PER_PROCESS_DATA *psPerProc) |
2361 | { | 2989 | { |
2362 | IMG_HANDLE hDevCookieInt; | 2990 | IMG_HANDLE hDevCookieInt; |
2363 | IMG_HANDLE hBufClassInfo; | 2991 | IMG_HANDLE hBufClassInfo; |
2364 | 2992 | ||
2365 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_OPEN_BUFFERCLASS_DEVICE); | 2993 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_OPEN_BUFFERCLASS_DEVICE); |
2366 | 2994 | ||
2367 | NEW_HANDLE_BATCH_OR_ERROR(psOpenBufferClassDeviceOUT->eError, psPerProc, 1) | 2995 | NEW_HANDLE_BATCH_OR_ERROR(psOpenBufferClassDeviceOUT->eError, psPerProc, 1) |
2368 | 2996 | ||
2369 | psOpenBufferClassDeviceOUT->eError = | 2997 | psOpenBufferClassDeviceOUT->eError = |
2370 | PVRSRVLookupHandle(psPerProc->psHandleBase, | 2998 | PVRSRVLookupHandle(psPerProc->psHandleBase, |
2371 | &hDevCookieInt, | 2999 | &hDevCookieInt, |
2372 | psOpenBufferClassDeviceIN->hDevCookie, | 3000 | psOpenBufferClassDeviceIN->hDevCookie, |
2373 | PVRSRV_HANDLE_TYPE_DEV_NODE); | 3001 | PVRSRV_HANDLE_TYPE_DEV_NODE); |
2374 | if(psOpenBufferClassDeviceOUT->eError != PVRSRV_OK) | 3002 | if(psOpenBufferClassDeviceOUT->eError != PVRSRV_OK) |
2375 | { | 3003 | { |
2376 | return 0; | 3004 | return 0; |
2377 | } | 3005 | } |
2378 | 3006 | ||
2379 | psOpenBufferClassDeviceOUT->eError = | 3007 | psOpenBufferClassDeviceOUT->eError = |
2380 | PVRSRVOpenBCDeviceKM(psPerProc, | 3008 | PVRSRVOpenBCDeviceKM(psPerProc, |
2381 | psOpenBufferClassDeviceIN->ui32DeviceID, | 3009 | psOpenBufferClassDeviceIN->ui32DeviceID, |
2382 | hDevCookieInt, | 3010 | hDevCookieInt, |
2383 | &hBufClassInfo); | 3011 | &hBufClassInfo); |
2384 | if(psOpenBufferClassDeviceOUT->eError != PVRSRV_OK) | 3012 | if(psOpenBufferClassDeviceOUT->eError != PVRSRV_OK) |
2385 | { | 3013 | { |
2386 | return 0; | 3014 | return 0; |
2387 | } | 3015 | } |
2388 | 3016 | ||
2389 | PVRSRVAllocHandleNR(psPerProc->psHandleBase, | 3017 | PVRSRVAllocHandleNR(psPerProc->psHandleBase, |
2390 | &psOpenBufferClassDeviceOUT->hDeviceKM, | 3018 | &psOpenBufferClassDeviceOUT->hDeviceKM, |
2391 | hBufClassInfo, | 3019 | hBufClassInfo, |
2392 | PVRSRV_HANDLE_TYPE_BUF_INFO, | 3020 | PVRSRV_HANDLE_TYPE_BUF_INFO, |
2393 | PVRSRV_HANDLE_ALLOC_FLAG_NONE); | 3021 | PVRSRV_HANDLE_ALLOC_FLAG_NONE); |
2394 | 3022 | ||
2395 | COMMIT_HANDLE_BATCH_OR_ERROR(psOpenBufferClassDeviceOUT->eError, psPerProc) | 3023 | COMMIT_HANDLE_BATCH_OR_ERROR(psOpenBufferClassDeviceOUT->eError, psPerProc) |
2396 | 3024 | ||
2397 | return 0; | 3025 | return 0; |
2398 | } | 3026 | } |
2399 | 3027 | ||
2400 | static IMG_INT | 3028 | static IMG_INT |
2401 | PVRSRVCloseBCDeviceBW(IMG_UINT32 ui32BridgeID, | 3029 | PVRSRVCloseBCDeviceBW(IMG_UINT32 ui32BridgeID, |
2402 | PVRSRV_BRIDGE_IN_CLOSE_BUFFERCLASS_DEVICE *psCloseBufferClassDeviceIN, | 3030 | PVRSRV_BRIDGE_IN_CLOSE_BUFFERCLASS_DEVICE *psCloseBufferClassDeviceIN, |
2403 | PVRSRV_BRIDGE_RETURN *psRetOUT, | 3031 | PVRSRV_BRIDGE_RETURN *psRetOUT, |
2404 | PVRSRV_PER_PROCESS_DATA *psPerProc) | 3032 | PVRSRV_PER_PROCESS_DATA *psPerProc) |
2405 | { | 3033 | { |
2406 | IMG_VOID *pvBufClassInfo; | 3034 | IMG_VOID *pvBufClassInfo; |
2407 | 3035 | ||
2408 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_CLOSE_BUFFERCLASS_DEVICE); | 3036 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_CLOSE_BUFFERCLASS_DEVICE); |
2409 | 3037 | ||
2410 | psRetOUT->eError = | 3038 | psRetOUT->eError = |
2411 | PVRSRVLookupHandle(psPerProc->psHandleBase, | 3039 | PVRSRVLookupHandle(psPerProc->psHandleBase, |
2412 | &pvBufClassInfo, | 3040 | &pvBufClassInfo, |
2413 | psCloseBufferClassDeviceIN->hDeviceKM, | 3041 | psCloseBufferClassDeviceIN->hDeviceKM, |
2414 | PVRSRV_HANDLE_TYPE_BUF_INFO); | 3042 | PVRSRV_HANDLE_TYPE_BUF_INFO); |
2415 | if(psRetOUT->eError != PVRSRV_OK) | 3043 | if(psRetOUT->eError != PVRSRV_OK) |
2416 | { | 3044 | { |
2417 | return 0; | 3045 | return 0; |
2418 | } | 3046 | } |
2419 | 3047 | ||
2420 | psRetOUT->eError = | 3048 | psRetOUT->eError = |
2421 | PVRSRVCloseBCDeviceKM(pvBufClassInfo, IMG_FALSE); | 3049 | PVRSRVCloseBCDeviceKM(pvBufClassInfo, IMG_FALSE); |
2422 | 3050 | ||
2423 | if(psRetOUT->eError != PVRSRV_OK) | 3051 | if(psRetOUT->eError != PVRSRV_OK) |
2424 | { | 3052 | { |
2425 | return 0; | 3053 | return 0; |
2426 | } | 3054 | } |
2427 | 3055 | ||
2428 | psRetOUT->eError = PVRSRVReleaseHandle(psPerProc->psHandleBase, | 3056 | psRetOUT->eError = PVRSRVReleaseHandle(psPerProc->psHandleBase, |
2429 | psCloseBufferClassDeviceIN->hDeviceKM, | 3057 | psCloseBufferClassDeviceIN->hDeviceKM, |
2430 | PVRSRV_HANDLE_TYPE_BUF_INFO); | 3058 | PVRSRV_HANDLE_TYPE_BUF_INFO); |
2431 | 3059 | ||
2432 | return 0; | 3060 | return 0; |
2433 | } | 3061 | } |
2434 | 3062 | ||
2435 | static IMG_INT | 3063 | static IMG_INT |
2436 | PVRSRVGetBCInfoBW(IMG_UINT32 ui32BridgeID, | 3064 | PVRSRVGetBCInfoBW(IMG_UINT32 ui32BridgeID, |
2437 | PVRSRV_BRIDGE_IN_GET_BUFFERCLASS_INFO *psGetBufferClassInfoIN, | 3065 | PVRSRV_BRIDGE_IN_GET_BUFFERCLASS_INFO *psGetBufferClassInfoIN, |
2438 | PVRSRV_BRIDGE_OUT_GET_BUFFERCLASS_INFO *psGetBufferClassInfoOUT, | 3066 | PVRSRV_BRIDGE_OUT_GET_BUFFERCLASS_INFO *psGetBufferClassInfoOUT, |
2439 | PVRSRV_PER_PROCESS_DATA *psPerProc) | 3067 | PVRSRV_PER_PROCESS_DATA *psPerProc) |
2440 | { | 3068 | { |
2441 | IMG_VOID *pvBufClassInfo; | 3069 | IMG_VOID *pvBufClassInfo; |
2442 | 3070 | ||
2443 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_GET_BUFFERCLASS_INFO); | 3071 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_GET_BUFFERCLASS_INFO); |
2444 | 3072 | ||
2445 | psGetBufferClassInfoOUT->eError = | 3073 | psGetBufferClassInfoOUT->eError = |
2446 | PVRSRVLookupHandle(psPerProc->psHandleBase, | 3074 | PVRSRVLookupHandle(psPerProc->psHandleBase, |
2447 | &pvBufClassInfo, | 3075 | &pvBufClassInfo, |
2448 | psGetBufferClassInfoIN->hDeviceKM, | 3076 | psGetBufferClassInfoIN->hDeviceKM, |
2449 | PVRSRV_HANDLE_TYPE_BUF_INFO); | 3077 | PVRSRV_HANDLE_TYPE_BUF_INFO); |
2450 | if(psGetBufferClassInfoOUT->eError != PVRSRV_OK) | 3078 | if(psGetBufferClassInfoOUT->eError != PVRSRV_OK) |
2451 | { | 3079 | { |
2452 | return 0; | 3080 | return 0; |
2453 | } | 3081 | } |
2454 | 3082 | ||
2455 | psGetBufferClassInfoOUT->eError = | 3083 | psGetBufferClassInfoOUT->eError = |
2456 | PVRSRVGetBCInfoKM(pvBufClassInfo, | 3084 | PVRSRVGetBCInfoKM(pvBufClassInfo, |
2457 | &psGetBufferClassInfoOUT->sBufferInfo); | 3085 | &psGetBufferClassInfoOUT->sBufferInfo); |
2458 | return 0; | 3086 | return 0; |
2459 | } | 3087 | } |
2460 | 3088 | ||
2461 | static IMG_INT | 3089 | static IMG_INT |
2462 | PVRSRVGetBCBufferBW(IMG_UINT32 ui32BridgeID, | 3090 | PVRSRVGetBCBufferBW(IMG_UINT32 ui32BridgeID, |
2463 | PVRSRV_BRIDGE_IN_GET_BUFFERCLASS_BUFFER *psGetBufferClassBufferIN, | 3091 | PVRSRV_BRIDGE_IN_GET_BUFFERCLASS_BUFFER *psGetBufferClassBufferIN, |
2464 | PVRSRV_BRIDGE_OUT_GET_BUFFERCLASS_BUFFER *psGetBufferClassBufferOUT, | 3092 | PVRSRV_BRIDGE_OUT_GET_BUFFERCLASS_BUFFER *psGetBufferClassBufferOUT, |
2465 | PVRSRV_PER_PROCESS_DATA *psPerProc) | 3093 | PVRSRV_PER_PROCESS_DATA *psPerProc) |
2466 | { | 3094 | { |
2467 | IMG_VOID *pvBufClassInfo; | 3095 | IMG_VOID *pvBufClassInfo; |
2468 | IMG_HANDLE hBufferInt; | 3096 | IMG_HANDLE hBufferInt; |
2469 | 3097 | ||
2470 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_GET_BUFFERCLASS_BUFFER); | 3098 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_GET_BUFFERCLASS_BUFFER); |
2471 | 3099 | ||
2472 | NEW_HANDLE_BATCH_OR_ERROR(psGetBufferClassBufferOUT->eError, psPerProc, 1) | 3100 | NEW_HANDLE_BATCH_OR_ERROR(psGetBufferClassBufferOUT->eError, psPerProc, 1) |
2473 | 3101 | ||
2474 | psGetBufferClassBufferOUT->eError = | 3102 | psGetBufferClassBufferOUT->eError = |
2475 | PVRSRVLookupHandle(psPerProc->psHandleBase, | 3103 | PVRSRVLookupHandle(psPerProc->psHandleBase, |
2476 | &pvBufClassInfo, | 3104 | &pvBufClassInfo, |
2477 | psGetBufferClassBufferIN->hDeviceKM, | 3105 | psGetBufferClassBufferIN->hDeviceKM, |
2478 | PVRSRV_HANDLE_TYPE_BUF_INFO); | 3106 | PVRSRV_HANDLE_TYPE_BUF_INFO); |
2479 | if(psGetBufferClassBufferOUT->eError != PVRSRV_OK) | 3107 | if(psGetBufferClassBufferOUT->eError != PVRSRV_OK) |
2480 | { | 3108 | { |
2481 | return 0; | 3109 | return 0; |
2482 | } | 3110 | } |
2483 | 3111 | ||
2484 | psGetBufferClassBufferOUT->eError = | 3112 | psGetBufferClassBufferOUT->eError = |
2485 | PVRSRVGetBCBufferKM(pvBufClassInfo, | 3113 | PVRSRVGetBCBufferKM(pvBufClassInfo, |
2486 | psGetBufferClassBufferIN->ui32BufferIndex, | 3114 | psGetBufferClassBufferIN->ui32BufferIndex, |
2487 | &hBufferInt); | 3115 | &hBufferInt); |
2488 | 3116 | ||
2489 | if(psGetBufferClassBufferOUT->eError != PVRSRV_OK) | 3117 | if(psGetBufferClassBufferOUT->eError != PVRSRV_OK) |
2490 | { | 3118 | { |
2491 | return 0; | 3119 | return 0; |
2492 | } | 3120 | } |
2493 | 3121 | ||
2494 | 3122 | ||
2495 | PVRSRVAllocSubHandleNR(psPerProc->psHandleBase, | 3123 | PVRSRVAllocSubHandleNR(psPerProc->psHandleBase, |
2496 | &psGetBufferClassBufferOUT->hBuffer, | 3124 | &psGetBufferClassBufferOUT->hBuffer, |
2497 | hBufferInt, | 3125 | hBufferInt, |
2498 | PVRSRV_HANDLE_TYPE_BUF_BUFFER, | 3126 | PVRSRV_HANDLE_TYPE_BUF_BUFFER, |
2499 | (PVRSRV_HANDLE_ALLOC_FLAG)(PVRSRV_HANDLE_ALLOC_FLAG_PRIVATE | PVRSRV_HANDLE_ALLOC_FLAG_SHARED), | 3127 | (PVRSRV_HANDLE_ALLOC_FLAG)(PVRSRV_HANDLE_ALLOC_FLAG_PRIVATE | PVRSRV_HANDLE_ALLOC_FLAG_SHARED), |
2500 | psGetBufferClassBufferIN->hDeviceKM); | 3128 | psGetBufferClassBufferIN->hDeviceKM); |
2501 | 3129 | ||
2502 | COMMIT_HANDLE_BATCH_OR_ERROR(psGetBufferClassBufferOUT->eError, psPerProc) | 3130 | COMMIT_HANDLE_BATCH_OR_ERROR(psGetBufferClassBufferOUT->eError, psPerProc) |
2503 | 3131 | ||
2504 | return 0; | 3132 | return 0; |
2505 | } | 3133 | } |
2506 | 3134 | ||
2507 | 3135 | ||
2508 | static IMG_INT | 3136 | static IMG_INT |
2509 | PVRSRVAllocSharedSysMemoryBW(IMG_UINT32 ui32BridgeID, | 3137 | PVRSRVAllocSharedSysMemoryBW(IMG_UINT32 ui32BridgeID, |
2510 | PVRSRV_BRIDGE_IN_ALLOC_SHARED_SYS_MEM *psAllocSharedSysMemIN, | 3138 | PVRSRV_BRIDGE_IN_ALLOC_SHARED_SYS_MEM *psAllocSharedSysMemIN, |
2511 | PVRSRV_BRIDGE_OUT_ALLOC_SHARED_SYS_MEM *psAllocSharedSysMemOUT, | 3139 | PVRSRV_BRIDGE_OUT_ALLOC_SHARED_SYS_MEM *psAllocSharedSysMemOUT, |
2512 | PVRSRV_PER_PROCESS_DATA *psPerProc) | 3140 | PVRSRV_PER_PROCESS_DATA *psPerProc) |
2513 | { | 3141 | { |
2514 | PVRSRV_KERNEL_MEM_INFO *psKernelMemInfo; | 3142 | PVRSRV_KERNEL_MEM_INFO *psKernelMemInfo; |
2515 | 3143 | ||
2516 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_ALLOC_SHARED_SYS_MEM); | 3144 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_ALLOC_SHARED_SYS_MEM); |
2517 | 3145 | ||
2518 | NEW_HANDLE_BATCH_OR_ERROR(psAllocSharedSysMemOUT->eError, psPerProc, 1) | 3146 | NEW_HANDLE_BATCH_OR_ERROR(psAllocSharedSysMemOUT->eError, psPerProc, 1) |
2519 | 3147 | ||
2520 | psAllocSharedSysMemOUT->eError = | 3148 | psAllocSharedSysMemOUT->eError = |
2521 | PVRSRVAllocSharedSysMemoryKM(psPerProc, | 3149 | PVRSRVAllocSharedSysMemoryKM(psPerProc, |
2522 | psAllocSharedSysMemIN->ui32Flags, | 3150 | psAllocSharedSysMemIN->ui32Flags, |
2523 | psAllocSharedSysMemIN->ui32Size, | 3151 | psAllocSharedSysMemIN->ui32Size, |
2524 | &psKernelMemInfo); | 3152 | &psKernelMemInfo); |
2525 | if(psAllocSharedSysMemOUT->eError != PVRSRV_OK) | 3153 | if(psAllocSharedSysMemOUT->eError != PVRSRV_OK) |
2526 | { | 3154 | { |
2527 | return 0; | 3155 | return 0; |
2528 | } | 3156 | } |
2529 | 3157 | ||
2530 | OSMemSet(&psAllocSharedSysMemOUT->sClientMemInfo, | 3158 | OSMemSet(&psAllocSharedSysMemOUT->sClientMemInfo, |
2531 | 0, | 3159 | 0, |
2532 | sizeof(psAllocSharedSysMemOUT->sClientMemInfo)); | 3160 | sizeof(psAllocSharedSysMemOUT->sClientMemInfo)); |
2533 | 3161 | ||
2534 | psAllocSharedSysMemOUT->sClientMemInfo.pvLinAddrKM = | 3162 | psAllocSharedSysMemOUT->sClientMemInfo.pvLinAddrKM = |
2535 | psKernelMemInfo->pvLinAddrKM; | 3163 | psKernelMemInfo->pvLinAddrKM; |
2536 | 3164 | ||
2537 | psAllocSharedSysMemOUT->sClientMemInfo.pvLinAddr = 0; | 3165 | psAllocSharedSysMemOUT->sClientMemInfo.pvLinAddr = 0; |
2538 | psAllocSharedSysMemOUT->sClientMemInfo.ui32Flags = | 3166 | psAllocSharedSysMemOUT->sClientMemInfo.ui32Flags = |
2539 | psKernelMemInfo->ui32Flags; | 3167 | psKernelMemInfo->ui32Flags; |
2540 | psAllocSharedSysMemOUT->sClientMemInfo.ui32AllocSize = | 3168 | psAllocSharedSysMemOUT->sClientMemInfo.uAllocSize = |
2541 | psKernelMemInfo->ui32AllocSize; | 3169 | psKernelMemInfo->uAllocSize; |
2542 | psAllocSharedSysMemOUT->sClientMemInfo.hMappingInfo = psKernelMemInfo->sMemBlk.hOSMemHandle; | 3170 | #if defined (SUPPORT_SID_INTERFACE) |
3171 | if (psKernelMemInfo->sMemBlk.hOSMemHandle != IMG_NULL) | ||
3172 | { | ||
3173 | PVRSRVAllocHandleNR(psPerProc->psHandleBase, | ||
3174 | &psAllocSharedSysMemOUT->sClientMemInfo.hMappingInfo, | ||
3175 | psKernelMemInfo->sMemBlk.hOSMemHandle, | ||
3176 | PVRSRV_HANDLE_TYPE_SHARED_SYS_MEM_INFO, | ||
3177 | PVRSRV_HANDLE_ALLOC_FLAG_NONE); | ||
3178 | } | ||
3179 | else | ||
3180 | { | ||
3181 | psAllocSharedSysMemOUT->sClientMemInfo.hMappingInfo = 0; | ||
3182 | } | ||
3183 | #else | ||
3184 | psAllocSharedSysMemOUT->sClientMemInfo.hMappingInfo = psKernelMemInfo->sMemBlk.hOSMemHandle; | ||
3185 | #endif | ||
2543 | 3186 | ||
2544 | PVRSRVAllocHandleNR(psPerProc->psHandleBase, | 3187 | PVRSRVAllocHandleNR(psPerProc->psHandleBase, |
2545 | &psAllocSharedSysMemOUT->sClientMemInfo.hKernelMemInfo, | 3188 | &psAllocSharedSysMemOUT->sClientMemInfo.hKernelMemInfo, |
2546 | psKernelMemInfo, | 3189 | psKernelMemInfo, |
2547 | PVRSRV_HANDLE_TYPE_SHARED_SYS_MEM_INFO, | 3190 | PVRSRV_HANDLE_TYPE_SHARED_SYS_MEM_INFO, |
2548 | PVRSRV_HANDLE_ALLOC_FLAG_NONE); | 3191 | PVRSRV_HANDLE_ALLOC_FLAG_NONE); |
2549 | 3192 | ||
2550 | COMMIT_HANDLE_BATCH_OR_ERROR(psAllocSharedSysMemOUT->eError, psPerProc) | 3193 | COMMIT_HANDLE_BATCH_OR_ERROR(psAllocSharedSysMemOUT->eError, psPerProc) |
2551 | 3194 | ||
2552 | return 0; | 3195 | return 0; |
2553 | } | 3196 | } |
2554 | 3197 | ||
2555 | static IMG_INT | 3198 | static IMG_INT |
2556 | PVRSRVFreeSharedSysMemoryBW(IMG_UINT32 ui32BridgeID, | 3199 | PVRSRVFreeSharedSysMemoryBW(IMG_UINT32 ui32BridgeID, |
2557 | PVRSRV_BRIDGE_IN_FREE_SHARED_SYS_MEM *psFreeSharedSysMemIN, | 3200 | PVRSRV_BRIDGE_IN_FREE_SHARED_SYS_MEM *psFreeSharedSysMemIN, |
2558 | PVRSRV_BRIDGE_OUT_FREE_SHARED_SYS_MEM *psFreeSharedSysMemOUT, | 3201 | PVRSRV_BRIDGE_OUT_FREE_SHARED_SYS_MEM *psFreeSharedSysMemOUT, |
2559 | PVRSRV_PER_PROCESS_DATA *psPerProc) | 3202 | PVRSRV_PER_PROCESS_DATA *psPerProc) |
2560 | { | 3203 | { |
2561 | PVRSRV_KERNEL_MEM_INFO *psKernelMemInfo; | 3204 | PVRSRV_KERNEL_MEM_INFO *psKernelMemInfo; |
2562 | |||
2563 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_FREE_SHARED_SYS_MEM); | ||
2564 | 3205 | ||
2565 | psFreeSharedSysMemOUT->eError = | 3206 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_FREE_SHARED_SYS_MEM); |
2566 | PVRSRVLookupHandle(psPerProc->psHandleBase, | ||
2567 | (IMG_VOID **)&psKernelMemInfo, | ||
2568 | psFreeSharedSysMemIN->psKernelMemInfo, | ||
2569 | PVRSRV_HANDLE_TYPE_SHARED_SYS_MEM_INFO); | ||
2570 | 3207 | ||
2571 | if(psFreeSharedSysMemOUT->eError != PVRSRV_OK) | 3208 | psFreeSharedSysMemOUT->eError = |
2572 | return 0; | 3209 | PVRSRVLookupHandle(psPerProc->psHandleBase, |
2573 | 3210 | (IMG_VOID **)&psKernelMemInfo, | |
2574 | psFreeSharedSysMemOUT->eError = | 3211 | #if defined (SUPPORT_SID_INTERFACE) |
2575 | PVRSRVFreeSharedSysMemoryKM(psKernelMemInfo); | 3212 | psFreeSharedSysMemIN->hKernelMemInfo, |
2576 | if(psFreeSharedSysMemOUT->eError != PVRSRV_OK) | 3213 | #else |
2577 | return 0; | 3214 | psFreeSharedSysMemIN->psKernelMemInfo, |
3215 | #endif | ||
3216 | PVRSRV_HANDLE_TYPE_SHARED_SYS_MEM_INFO); | ||
3217 | |||
3218 | if(psFreeSharedSysMemOUT->eError != PVRSRV_OK) | ||
3219 | return 0; | ||
3220 | |||
3221 | psFreeSharedSysMemOUT->eError = | ||
3222 | PVRSRVFreeSharedSysMemoryKM(psKernelMemInfo); | ||
3223 | if(psFreeSharedSysMemOUT->eError != PVRSRV_OK) | ||
3224 | return 0; | ||
3225 | #if defined (SUPPORT_SID_INTERFACE) | ||
3226 | if (psFreeSharedSysMemIN->hMappingInfo != 0) | ||
3227 | { | ||
3228 | psFreeSharedSysMemOUT->eError = | ||
3229 | PVRSRVReleaseHandle(psPerProc->psHandleBase, | ||
3230 | psFreeSharedSysMemIN->hMappingInfo, | ||
3231 | PVRSRV_HANDLE_TYPE_SHARED_SYS_MEM_INFO); | ||
3232 | if(psFreeSharedSysMemOUT->eError != PVRSRV_OK) | ||
3233 | { | ||
3234 | return 0; | ||
3235 | } | ||
3236 | } | ||
3237 | #endif | ||
2578 | 3238 | ||
2579 | psFreeSharedSysMemOUT->eError = | 3239 | psFreeSharedSysMemOUT->eError = |
2580 | PVRSRVReleaseHandle(psPerProc->psHandleBase, | 3240 | PVRSRVReleaseHandle(psPerProc->psHandleBase, |
2581 | psFreeSharedSysMemIN->psKernelMemInfo, | 3241 | #if defined (SUPPORT_SID_INTERFACE) |
2582 | PVRSRV_HANDLE_TYPE_SHARED_SYS_MEM_INFO); | 3242 | psFreeSharedSysMemIN->hKernelMemInfo, |
2583 | return 0; | 3243 | #else |
3244 | psFreeSharedSysMemIN->psKernelMemInfo, | ||
3245 | #endif | ||
3246 | PVRSRV_HANDLE_TYPE_SHARED_SYS_MEM_INFO); | ||
3247 | return 0; | ||
2584 | } | 3248 | } |
2585 | 3249 | ||
2586 | static IMG_INT | 3250 | static IMG_INT |
2587 | PVRSRVMapMemInfoMemBW(IMG_UINT32 ui32BridgeID, | 3251 | PVRSRVMapMemInfoMemBW(IMG_UINT32 ui32BridgeID, |
2588 | PVRSRV_BRIDGE_IN_MAP_MEMINFO_MEM *psMapMemInfoMemIN, | 3252 | PVRSRV_BRIDGE_IN_MAP_MEMINFO_MEM *psMapMemInfoMemIN, |
2589 | PVRSRV_BRIDGE_OUT_MAP_MEMINFO_MEM *psMapMemInfoMemOUT, | 3253 | PVRSRV_BRIDGE_OUT_MAP_MEMINFO_MEM *psMapMemInfoMemOUT, |
2590 | PVRSRV_PER_PROCESS_DATA *psPerProc) | 3254 | PVRSRV_PER_PROCESS_DATA *psPerProc) |
2591 | { | 3255 | { |
2592 | PVRSRV_KERNEL_MEM_INFO *psKernelMemInfo; | 3256 | PVRSRV_KERNEL_MEM_INFO *psKernelMemInfo; |
2593 | PVRSRV_HANDLE_TYPE eHandleType; | 3257 | PVRSRV_HANDLE_TYPE eHandleType; |
2594 | IMG_HANDLE hParent; | 3258 | #if defined (SUPPORT_SID_INTERFACE) |
2595 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_MAP_MEMINFO_MEM); | 3259 | IMG_SID hParent; |
2596 | |||
2597 | NEW_HANDLE_BATCH_OR_ERROR(psMapMemInfoMemOUT->eError, psPerProc, 2) | ||
2598 | |||
2599 | psMapMemInfoMemOUT->eError = | ||
2600 | PVRSRVLookupHandleAnyType(psPerProc->psHandleBase, | ||
2601 | (IMG_VOID **)&psKernelMemInfo, | ||
2602 | &eHandleType, | ||
2603 | psMapMemInfoMemIN->hKernelMemInfo); | ||
2604 | if(psMapMemInfoMemOUT->eError != PVRSRV_OK) | ||
2605 | { | ||
2606 | return 0; | ||
2607 | } | ||
2608 | |||
2609 | switch (eHandleType) | ||
2610 | { | ||
2611 | #if defined(PVR_SECURE_HANDLES) | ||
2612 | case PVRSRV_HANDLE_TYPE_MEM_INFO: | ||
2613 | case PVRSRV_HANDLE_TYPE_MEM_INFO_REF: | ||
2614 | case PVRSRV_HANDLE_TYPE_SHARED_SYS_MEM_INFO: | ||
2615 | #else | 3260 | #else |
2616 | case PVRSRV_HANDLE_TYPE_NONE: | 3261 | IMG_HANDLE hParent; |
3262 | #endif | ||
3263 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_MAP_MEMINFO_MEM); | ||
3264 | |||
3265 | NEW_HANDLE_BATCH_OR_ERROR(psMapMemInfoMemOUT->eError, psPerProc, 2) | ||
3266 | |||
3267 | psMapMemInfoMemOUT->eError = | ||
3268 | PVRSRVLookupHandleAnyType(psPerProc->psHandleBase, | ||
3269 | (IMG_VOID **)&psKernelMemInfo, | ||
3270 | &eHandleType, | ||
3271 | psMapMemInfoMemIN->hKernelMemInfo); | ||
3272 | if(psMapMemInfoMemOUT->eError != PVRSRV_OK) | ||
3273 | { | ||
3274 | return 0; | ||
3275 | } | ||
3276 | |||
3277 | switch (eHandleType) | ||
3278 | { | ||
3279 | #if defined(PVR_SECURE_HANDLES) || defined (SUPPORT_SID_INTERFACE) | ||
3280 | case PVRSRV_HANDLE_TYPE_MEM_INFO: | ||
3281 | case PVRSRV_HANDLE_TYPE_MEM_INFO_REF: | ||
3282 | case PVRSRV_HANDLE_TYPE_SHARED_SYS_MEM_INFO: | ||
3283 | #else | ||
3284 | case PVRSRV_HANDLE_TYPE_NONE: | ||
3285 | #endif | ||
3286 | break; | ||
3287 | default: | ||
3288 | psMapMemInfoMemOUT->eError = PVRSRV_ERROR_INVALID_HANDLE_TYPE; | ||
3289 | return 0; | ||
3290 | } | ||
3291 | |||
3292 | |||
3293 | psMapMemInfoMemOUT->eError = | ||
3294 | PVRSRVGetParentHandle(psPerProc->psHandleBase, | ||
3295 | &hParent, | ||
3296 | psMapMemInfoMemIN->hKernelMemInfo, | ||
3297 | eHandleType); | ||
3298 | if (psMapMemInfoMemOUT->eError != PVRSRV_OK) | ||
3299 | { | ||
3300 | return 0; | ||
3301 | } | ||
3302 | #if defined (SUPPORT_SID_INTERFACE) | ||
3303 | if (hParent == 0) | ||
3304 | #else | ||
3305 | if (hParent == IMG_NULL) | ||
3306 | #endif | ||
3307 | { | ||
3308 | hParent = psMapMemInfoMemIN->hKernelMemInfo; | ||
3309 | } | ||
3310 | |||
3311 | OSMemSet(&psMapMemInfoMemOUT->sClientMemInfo, | ||
3312 | 0, | ||
3313 | sizeof(psMapMemInfoMemOUT->sClientMemInfo)); | ||
3314 | |||
3315 | psMapMemInfoMemOUT->sClientMemInfo.pvLinAddrKM = | ||
3316 | psKernelMemInfo->pvLinAddrKM; | ||
3317 | |||
3318 | psMapMemInfoMemOUT->sClientMemInfo.pvLinAddr = 0; | ||
3319 | psMapMemInfoMemOUT->sClientMemInfo.sDevVAddr = | ||
3320 | psKernelMemInfo->sDevVAddr; | ||
3321 | psMapMemInfoMemOUT->sClientMemInfo.ui32Flags = | ||
3322 | psKernelMemInfo->ui32Flags; | ||
3323 | psMapMemInfoMemOUT->sClientMemInfo.uAllocSize = | ||
3324 | psKernelMemInfo->uAllocSize; | ||
3325 | #if defined (SUPPORT_SID_INTERFACE) | ||
3326 | if (psKernelMemInfo->sMemBlk.hOSMemHandle != IMG_NULL) | ||
3327 | { | ||
3328 | PVRSRVAllocSubHandleNR(psPerProc->psHandleBase, | ||
3329 | &psMapMemInfoMemOUT->sClientMemInfo.hMappingInfo, | ||
3330 | psKernelMemInfo->sMemBlk.hOSMemHandle, | ||
3331 | PVRSRV_HANDLE_TYPE_MEM_INFO_REF, | ||
3332 | PVRSRV_HANDLE_ALLOC_FLAG_MULTI, | ||
3333 | hParent); | ||
3334 | } | ||
3335 | else | ||
3336 | { | ||
3337 | psMapMemInfoMemOUT->sClientMemInfo.hMappingInfo = 0; | ||
3338 | } | ||
3339 | #else | ||
3340 | psMapMemInfoMemOUT->sClientMemInfo.hMappingInfo = psKernelMemInfo->sMemBlk.hOSMemHandle; | ||
2617 | #endif | 3341 | #endif |
2618 | break; | ||
2619 | default: | ||
2620 | psMapMemInfoMemOUT->eError = PVRSRV_ERROR_INVALID_HANDLE_TYPE; | ||
2621 | return 0; | ||
2622 | } | ||
2623 | |||
2624 | |||
2625 | psMapMemInfoMemOUT->eError = | ||
2626 | PVRSRVGetParentHandle(psPerProc->psHandleBase, | ||
2627 | &hParent, | ||
2628 | psMapMemInfoMemIN->hKernelMemInfo, | ||
2629 | eHandleType); | ||
2630 | if (psMapMemInfoMemOUT->eError != PVRSRV_OK) | ||
2631 | { | ||
2632 | return 0; | ||
2633 | } | ||
2634 | if (hParent == IMG_NULL) | ||
2635 | { | ||
2636 | hParent = psMapMemInfoMemIN->hKernelMemInfo; | ||
2637 | } | ||
2638 | |||
2639 | OSMemSet(&psMapMemInfoMemOUT->sClientMemInfo, | ||
2640 | 0, | ||
2641 | sizeof(psMapMemInfoMemOUT->sClientMemInfo)); | ||
2642 | |||
2643 | psMapMemInfoMemOUT->sClientMemInfo.pvLinAddrKM = | ||
2644 | psKernelMemInfo->pvLinAddrKM; | ||
2645 | |||
2646 | psMapMemInfoMemOUT->sClientMemInfo.pvLinAddr = 0; | ||
2647 | psMapMemInfoMemOUT->sClientMemInfo.sDevVAddr = | ||
2648 | psKernelMemInfo->sDevVAddr; | ||
2649 | psMapMemInfoMemOUT->sClientMemInfo.ui32Flags = | ||
2650 | psKernelMemInfo->ui32Flags; | ||
2651 | psMapMemInfoMemOUT->sClientMemInfo.ui32AllocSize = | ||
2652 | psKernelMemInfo->ui32AllocSize; | ||
2653 | psMapMemInfoMemOUT->sClientMemInfo.hMappingInfo = psKernelMemInfo->sMemBlk.hOSMemHandle; | ||
2654 | |||
2655 | PVRSRVAllocSubHandleNR(psPerProc->psHandleBase, | ||
2656 | &psMapMemInfoMemOUT->sClientMemInfo.hKernelMemInfo, | ||
2657 | psKernelMemInfo, | ||
2658 | PVRSRV_HANDLE_TYPE_MEM_INFO_REF, | ||
2659 | PVRSRV_HANDLE_ALLOC_FLAG_MULTI, | ||
2660 | hParent); | ||
2661 | |||
2662 | if(psKernelMemInfo->ui32Flags & PVRSRV_MEM_NO_SYNCOBJ) | ||
2663 | { | ||
2664 | |||
2665 | OSMemSet(&psMapMemInfoMemOUT->sClientSyncInfo, | ||
2666 | 0, | ||
2667 | sizeof (PVRSRV_CLIENT_SYNC_INFO)); | ||
2668 | } | ||
2669 | else | ||
2670 | { | ||
2671 | |||
2672 | psMapMemInfoMemOUT->sClientSyncInfo.psSyncData = | ||
2673 | psKernelMemInfo->psKernelSyncInfo->psSyncData; | ||
2674 | psMapMemInfoMemOUT->sClientSyncInfo.sWriteOpsCompleteDevVAddr = | ||
2675 | psKernelMemInfo->psKernelSyncInfo->sWriteOpsCompleteDevVAddr; | ||
2676 | psMapMemInfoMemOUT->sClientSyncInfo.sReadOpsCompleteDevVAddr = | ||
2677 | psKernelMemInfo->psKernelSyncInfo->sReadOpsCompleteDevVAddr; | ||
2678 | 3342 | ||
2679 | psMapMemInfoMemOUT->sClientSyncInfo.hMappingInfo = | 3343 | PVRSRVAllocSubHandleNR(psPerProc->psHandleBase, |
2680 | psKernelMemInfo->psKernelSyncInfo->psSyncDataMemInfoKM->sMemBlk.hOSMemHandle; | 3344 | &psMapMemInfoMemOUT->sClientMemInfo.hKernelMemInfo, |
3345 | psKernelMemInfo, | ||
3346 | PVRSRV_HANDLE_TYPE_MEM_INFO_REF, | ||
3347 | PVRSRV_HANDLE_ALLOC_FLAG_MULTI, | ||
3348 | hParent); | ||
3349 | |||
3350 | if(psKernelMemInfo->ui32Flags & PVRSRV_MEM_NO_SYNCOBJ) | ||
3351 | { | ||
3352 | |||
3353 | OSMemSet(&psMapMemInfoMemOUT->sClientSyncInfo, | ||
3354 | 0, | ||
3355 | sizeof (PVRSRV_CLIENT_SYNC_INFO)); | ||
3356 | } | ||
3357 | else | ||
3358 | { | ||
3359 | |||
3360 | #if !defined(PVRSRV_DISABLE_UM_SYNCOBJ_MAPPINGS) | ||
3361 | psMapMemInfoMemOUT->sClientSyncInfo.psSyncData = | ||
3362 | psKernelMemInfo->psKernelSyncInfo->psSyncData; | ||
3363 | psMapMemInfoMemOUT->sClientSyncInfo.sWriteOpsCompleteDevVAddr = | ||
3364 | psKernelMemInfo->psKernelSyncInfo->sWriteOpsCompleteDevVAddr; | ||
3365 | psMapMemInfoMemOUT->sClientSyncInfo.sReadOpsCompleteDevVAddr = | ||
3366 | psKernelMemInfo->psKernelSyncInfo->sReadOpsCompleteDevVAddr; | ||
3367 | |||
3368 | #if defined (SUPPORT_SID_INTERFACE) | ||
3369 | if (psKernelMemInfo->psKernelSyncInfo->psSyncDataMemInfoKM->sMemBlk.hOSMemHandle != IMG_NULL) | ||
3370 | { | ||
3371 | PVRSRVAllocSubHandleNR(psPerProc->psHandleBase, | ||
3372 | &psMapMemInfoMemOUT->sClientSyncInfo.hMappingInfo, | ||
3373 | psKernelMemInfo->psKernelSyncInfo->psSyncDataMemInfoKM->sMemBlk.hOSMemHandle, | ||
3374 | PVRSRV_HANDLE_TYPE_SYNC_INFO, | ||
3375 | PVRSRV_HANDLE_ALLOC_FLAG_MULTI, | ||
3376 | psMapMemInfoMemOUT->sClientMemInfo.hKernelMemInfo); | ||
3377 | } | ||
3378 | else | ||
3379 | { | ||
3380 | psMapMemInfoMemOUT->sClientSyncInfo.hMappingInfo = 0; | ||
3381 | } | ||
3382 | #else | ||
3383 | psMapMemInfoMemOUT->sClientSyncInfo.hMappingInfo = | ||
3384 | psKernelMemInfo->psKernelSyncInfo->psSyncDataMemInfoKM->sMemBlk.hOSMemHandle; | ||
3385 | #endif | ||
3386 | #endif | ||
2681 | 3387 | ||
2682 | psMapMemInfoMemOUT->sClientMemInfo.psClientSyncInfo = &psMapMemInfoMemOUT->sClientSyncInfo; | 3388 | psMapMemInfoMemOUT->sClientMemInfo.psClientSyncInfo = &psMapMemInfoMemOUT->sClientSyncInfo; |
2683 | 3389 | ||
2684 | PVRSRVAllocSubHandleNR(psPerProc->psHandleBase, | 3390 | PVRSRVAllocSubHandleNR(psPerProc->psHandleBase, |
2685 | &psMapMemInfoMemOUT->sClientSyncInfo.hKernelSyncInfo, | 3391 | &psMapMemInfoMemOUT->sClientSyncInfo.hKernelSyncInfo, |
2686 | psKernelMemInfo->psKernelSyncInfo, | 3392 | psKernelMemInfo->psKernelSyncInfo, |
2687 | PVRSRV_HANDLE_TYPE_SYNC_INFO, | 3393 | PVRSRV_HANDLE_TYPE_SYNC_INFO, |
2688 | PVRSRV_HANDLE_ALLOC_FLAG_MULTI, | 3394 | PVRSRV_HANDLE_ALLOC_FLAG_MULTI, |
2689 | psMapMemInfoMemOUT->sClientMemInfo.hKernelMemInfo); | 3395 | psMapMemInfoMemOUT->sClientMemInfo.hKernelMemInfo); |
2690 | } | 3396 | } |
2691 | 3397 | ||
2692 | COMMIT_HANDLE_BATCH_OR_ERROR(psMapMemInfoMemOUT->eError, psPerProc) | 3398 | COMMIT_HANDLE_BATCH_OR_ERROR(psMapMemInfoMemOUT->eError, psPerProc) |
2693 | 3399 | ||
2694 | return 0; | 3400 | return 0; |
2695 | } | 3401 | } |
2696 | 3402 | ||
2697 | 3403 | ||
2698 | 3404 | ||
2699 | static IMG_INT | 3405 | static IMG_INT |
2700 | MMU_GetPDDevPAddrBW(IMG_UINT32 ui32BridgeID, | 3406 | MMU_GetPDDevPAddrBW(IMG_UINT32 ui32BridgeID, |
2701 | PVRSRV_BRIDGE_IN_GETMMU_PD_DEVPADDR *psGetMmuPDDevPAddrIN, | 3407 | PVRSRV_BRIDGE_IN_GETMMU_PD_DEVPADDR *psGetMmuPDDevPAddrIN, |
2702 | PVRSRV_BRIDGE_OUT_GETMMU_PD_DEVPADDR *psGetMmuPDDevPAddrOUT, | 3408 | PVRSRV_BRIDGE_OUT_GETMMU_PD_DEVPADDR *psGetMmuPDDevPAddrOUT, |
2703 | PVRSRV_PER_PROCESS_DATA *psPerProc) | 3409 | PVRSRV_PER_PROCESS_DATA *psPerProc) |
2704 | { | 3410 | { |
2705 | IMG_HANDLE hDevMemContextInt; | 3411 | IMG_HANDLE hDevMemContextInt; |
2706 | 3412 | ||
2707 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_GETMMU_PD_DEVPADDR); | 3413 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_GETMMU_PD_DEVPADDR); |
2708 | 3414 | ||
2709 | psGetMmuPDDevPAddrOUT->eError = | 3415 | psGetMmuPDDevPAddrOUT->eError = |
2710 | PVRSRVLookupHandle(psPerProc->psHandleBase, &hDevMemContextInt, | 3416 | PVRSRVLookupHandle(psPerProc->psHandleBase, &hDevMemContextInt, |
2711 | psGetMmuPDDevPAddrIN->hDevMemContext, | 3417 | psGetMmuPDDevPAddrIN->hDevMemContext, |
2712 | PVRSRV_HANDLE_TYPE_DEV_MEM_CONTEXT); | 3418 | PVRSRV_HANDLE_TYPE_DEV_MEM_CONTEXT); |
2713 | if(psGetMmuPDDevPAddrOUT->eError != PVRSRV_OK) | 3419 | if(psGetMmuPDDevPAddrOUT->eError != PVRSRV_OK) |
2714 | { | 3420 | { |
2715 | return 0; | 3421 | return 0; |
2716 | } | 3422 | } |
2717 | 3423 | ||
2718 | psGetMmuPDDevPAddrOUT->sPDDevPAddr = | 3424 | psGetMmuPDDevPAddrOUT->sPDDevPAddr = |
2719 | BM_GetDeviceNode(hDevMemContextInt)->pfnMMUGetPDDevPAddr(BM_GetMMUContextFromMemContext(hDevMemContextInt)); | 3425 | BM_GetDeviceNode(hDevMemContextInt)->pfnMMUGetPDDevPAddr(BM_GetMMUContextFromMemContext(hDevMemContextInt)); |
2720 | if(psGetMmuPDDevPAddrOUT->sPDDevPAddr.uiAddr) | 3426 | if(psGetMmuPDDevPAddrOUT->sPDDevPAddr.uiAddr) |
2721 | { | 3427 | { |
2722 | psGetMmuPDDevPAddrOUT->eError = PVRSRV_OK; | 3428 | psGetMmuPDDevPAddrOUT->eError = PVRSRV_OK; |
2723 | } | 3429 | } |
2724 | else | 3430 | else |
2725 | { | 3431 | { |
2726 | psGetMmuPDDevPAddrOUT->eError = PVRSRV_ERROR_INVALID_PHYS_ADDR; | 3432 | psGetMmuPDDevPAddrOUT->eError = PVRSRV_ERROR_INVALID_PHYS_ADDR; |
2727 | } | 3433 | } |
2728 | return 0; | 3434 | return 0; |
2729 | } | 3435 | } |
2730 | 3436 | ||
2731 | 3437 | ||
2732 | 3438 | ||
2733 | IMG_INT | 3439 | IMG_INT |
2734 | DummyBW(IMG_UINT32 ui32BridgeID, | 3440 | DummyBW(IMG_UINT32 ui32BridgeID, |
2735 | IMG_VOID *psBridgeIn, | 3441 | IMG_VOID *psBridgeIn, |
2736 | IMG_VOID *psBridgeOut, | 3442 | IMG_VOID *psBridgeOut, |
2737 | PVRSRV_PER_PROCESS_DATA *psPerProc) | 3443 | PVRSRV_PER_PROCESS_DATA *psPerProc) |
2738 | { | 3444 | { |
2739 | #if !defined(DEBUG) | 3445 | #if !defined(DEBUG) |
2740 | PVR_UNREFERENCED_PARAMETER(ui32BridgeID); | 3446 | PVR_UNREFERENCED_PARAMETER(ui32BridgeID); |
2741 | #endif | 3447 | #endif |
2742 | PVR_UNREFERENCED_PARAMETER(psBridgeIn); | 3448 | PVR_UNREFERENCED_PARAMETER(psBridgeIn); |
2743 | PVR_UNREFERENCED_PARAMETER(psBridgeOut); | 3449 | PVR_UNREFERENCED_PARAMETER(psBridgeOut); |
2744 | PVR_UNREFERENCED_PARAMETER(psPerProc); | 3450 | PVR_UNREFERENCED_PARAMETER(psPerProc); |
2745 | 3451 | ||
2746 | #if defined(DEBUG_BRIDGE_KM) | 3452 | #if defined(DEBUG_BRIDGE_KM) |
2747 | PVR_DPF((PVR_DBG_ERROR, "%s: BRIDGE ERROR: BridgeID %u (%s) mapped to " | 3453 | PVR_DPF((PVR_DBG_ERROR, "%s: BRIDGE ERROR: BridgeID %u (%s) mapped to " |
2748 | "Dummy Wrapper (probably not what you want!)", | 3454 | "Dummy Wrapper (probably not what you want!)", |
2749 | __FUNCTION__, ui32BridgeID, g_BridgeDispatchTable[ui32BridgeID].pszIOCName)); | 3455 | __FUNCTION__, ui32BridgeID, g_BridgeDispatchTable[ui32BridgeID].pszIOCName)); |
2750 | #else | 3456 | #else |
2751 | PVR_DPF((PVR_DBG_ERROR, "%s: BRIDGE ERROR: BridgeID %u mapped to " | 3457 | PVR_DPF((PVR_DBG_ERROR, "%s: BRIDGE ERROR: BridgeID %u mapped to " |
2752 | "Dummy Wrapper (probably not what you want!)", | 3458 | "Dummy Wrapper (probably not what you want!)", |
2753 | __FUNCTION__, ui32BridgeID)); | 3459 | __FUNCTION__, ui32BridgeID)); |
2754 | #endif | 3460 | #endif |
2755 | return -ENOTTY; | 3461 | return -ENOTTY; |
2756 | } | 3462 | } |
2757 | 3463 | ||
2758 | 3464 | ||
2759 | IMG_VOID | 3465 | IMG_VOID |
2760 | _SetDispatchTableEntry(IMG_UINT32 ui32Index, | 3466 | _SetDispatchTableEntry(IMG_UINT32 ui32Index, |
2761 | const IMG_CHAR *pszIOCName, | 3467 | const IMG_CHAR *pszIOCName, |
2762 | BridgeWrapperFunction pfFunction, | 3468 | BridgeWrapperFunction pfFunction, |
2763 | const IMG_CHAR *pszFunctionName) | 3469 | const IMG_CHAR *pszFunctionName) |
2764 | { | 3470 | { |
2765 | static IMG_UINT32 ui32PrevIndex = ~0UL; | 3471 | static IMG_UINT32 ui32PrevIndex = ~0UL; |
2766 | #if !defined(DEBUG) | 3472 | #if !defined(DEBUG) |
2767 | PVR_UNREFERENCED_PARAMETER(pszIOCName); | 3473 | PVR_UNREFERENCED_PARAMETER(pszIOCName); |
2768 | #endif | 3474 | #endif |
2769 | #if !defined(DEBUG_BRIDGE_KM_DISPATCH_TABLE) && !defined(DEBUG_BRIDGE_KM) | 3475 | #if !defined(DEBUG_BRIDGE_KM_DISPATCH_TABLE) && !defined(DEBUG_BRIDGE_KM) |
2770 | PVR_UNREFERENCED_PARAMETER(pszFunctionName); | 3476 | PVR_UNREFERENCED_PARAMETER(pszFunctionName); |
2771 | #endif | 3477 | #endif |
2772 | 3478 | ||
2773 | #if defined(DEBUG_BRIDGE_KM_DISPATCH_TABLE) | 3479 | #if defined(DEBUG_BRIDGE_KM_DISPATCH_TABLE) |
2774 | 3480 | ||
2775 | PVR_DPF((PVR_DBG_WARNING, "%s: %d %s %s", __FUNCTION__, ui32Index, pszIOCName, pszFunctionName)); | 3481 | PVR_DPF((PVR_DBG_WARNING, "%s: %d %s %s", __FUNCTION__, ui32Index, pszIOCName, pszFunctionName)); |
2776 | #endif | 3482 | #endif |
2777 | 3483 | ||
2778 | 3484 | ||
2779 | if(g_BridgeDispatchTable[ui32Index].pfFunction) | 3485 | if(g_BridgeDispatchTable[ui32Index].pfFunction) |
2780 | { | 3486 | { |
2781 | #if defined(DEBUG_BRIDGE_KM) | 3487 | #if defined(DEBUG_BRIDGE_KM) |
2782 | PVR_DPF((PVR_DBG_ERROR, | 3488 | PVR_DPF((PVR_DBG_ERROR, |
2783 | "%s: BUG!: Adding dispatch table entry for %s clobbers an existing entry for %s", | 3489 | "%s: BUG!: Adding dispatch table entry for %s clobbers an existing entry for %s", |
2784 | __FUNCTION__, pszIOCName, g_BridgeDispatchTable[ui32Index].pszIOCName)); | 3490 | __FUNCTION__, pszIOCName, g_BridgeDispatchTable[ui32Index].pszIOCName)); |
2785 | #else | 3491 | #else |
2786 | PVR_DPF((PVR_DBG_ERROR, | 3492 | PVR_DPF((PVR_DBG_ERROR, |
2787 | "%s: BUG!: Adding dispatch table entry for %s clobbers an existing entry (index=%u)", | 3493 | "%s: BUG!: Adding dispatch table entry for %s clobbers an existing entry (index=%u)", |
2788 | __FUNCTION__, pszIOCName, ui32Index)); | 3494 | __FUNCTION__, pszIOCName, ui32Index)); |
2789 | #endif | 3495 | #endif |
2790 | PVR_DPF((PVR_DBG_ERROR, "NOTE: Enabling DEBUG_BRIDGE_KM_DISPATCH_TABLE may help debug this issue.")); | 3496 | PVR_DPF((PVR_DBG_ERROR, "NOTE: Enabling DEBUG_BRIDGE_KM_DISPATCH_TABLE may help debug this issue.")); |
2791 | } | 3497 | } |
2792 | 3498 | ||
2793 | 3499 | ||
2794 | if((ui32PrevIndex != ~0UL) && | 3500 | if((ui32PrevIndex != ~0UL) && |
2795 | ((ui32Index >= ui32PrevIndex + DISPATCH_TABLE_GAP_THRESHOLD) || | 3501 | ((ui32Index >= ui32PrevIndex + DISPATCH_TABLE_GAP_THRESHOLD) || |
2796 | (ui32Index <= ui32PrevIndex))) | 3502 | (ui32Index <= ui32PrevIndex))) |
2797 | { | 3503 | { |
2798 | #if defined(DEBUG_BRIDGE_KM) | 3504 | #if defined(DEBUG_BRIDGE_KM) |
2799 | PVR_DPF((PVR_DBG_WARNING, | 3505 | PVR_DPF((PVR_DBG_WARNING, |
2800 | "%s: There is a gap in the dispatch table between indices %u (%s) and %u (%s)", | 3506 | "%s: There is a gap in the dispatch table between indices %u (%s) and %u (%s)", |
2801 | __FUNCTION__, ui32PrevIndex, g_BridgeDispatchTable[ui32PrevIndex].pszIOCName, | 3507 | __FUNCTION__, ui32PrevIndex, g_BridgeDispatchTable[ui32PrevIndex].pszIOCName, |
2802 | ui32Index, pszIOCName)); | 3508 | ui32Index, pszIOCName)); |
2803 | #else | 3509 | #else |
2804 | PVR_DPF((PVR_DBG_WARNING, | 3510 | PVR_DPF((PVR_DBG_WARNING, |
2805 | "%s: There is a gap in the dispatch table between indices %u and %u (%s)", | 3511 | "%s: There is a gap in the dispatch table between indices %u and %u (%s)", |
2806 | __FUNCTION__, (IMG_UINT)ui32PrevIndex, (IMG_UINT)ui32Index, pszIOCName)); | 3512 | __FUNCTION__, (IMG_UINT)ui32PrevIndex, (IMG_UINT)ui32Index, pszIOCName)); |
2807 | #endif | 3513 | #endif |
2808 | PVR_DPF((PVR_DBG_ERROR, "NOTE: Enabling DEBUG_BRIDGE_KM_DISPATCH_TABLE may help debug this issue.")); | 3514 | PVR_DPF((PVR_DBG_ERROR, "NOTE: Enabling DEBUG_BRIDGE_KM_DISPATCH_TABLE may help debug this issue.")); |
2809 | } | 3515 | } |
2810 | 3516 | ||
2811 | g_BridgeDispatchTable[ui32Index].pfFunction = pfFunction; | 3517 | g_BridgeDispatchTable[ui32Index].pfFunction = pfFunction; |
2812 | #if defined(DEBUG_BRIDGE_KM) | 3518 | #if defined(DEBUG_BRIDGE_KM) |
2813 | g_BridgeDispatchTable[ui32Index].pszIOCName = pszIOCName; | 3519 | g_BridgeDispatchTable[ui32Index].pszIOCName = pszIOCName; |
2814 | g_BridgeDispatchTable[ui32Index].pszFunctionName = pszFunctionName; | 3520 | g_BridgeDispatchTable[ui32Index].pszFunctionName = pszFunctionName; |
2815 | g_BridgeDispatchTable[ui32Index].ui32CallCount = 0; | 3521 | g_BridgeDispatchTable[ui32Index].ui32CallCount = 0; |
2816 | g_BridgeDispatchTable[ui32Index].ui32CopyFromUserTotalBytes = 0; | 3522 | g_BridgeDispatchTable[ui32Index].ui32CopyFromUserTotalBytes = 0; |
2817 | #endif | 3523 | #endif |
2818 | 3524 | ||
2819 | ui32PrevIndex = ui32Index; | 3525 | ui32PrevIndex = ui32Index; |
2820 | } | 3526 | } |
2821 | 3527 | ||
2822 | static IMG_INT | 3528 | static IMG_INT |
2823 | PVRSRVInitSrvConnectBW(IMG_UINT32 ui32BridgeID, | 3529 | PVRSRVInitSrvConnectBW(IMG_UINT32 ui32BridgeID, |
2824 | IMG_VOID *psBridgeIn, | 3530 | IMG_VOID *psBridgeIn, |
2825 | PVRSRV_BRIDGE_RETURN *psRetOUT, | 3531 | PVRSRV_BRIDGE_RETURN *psRetOUT, |
2826 | PVRSRV_PER_PROCESS_DATA *psPerProc) | 3532 | PVRSRV_PER_PROCESS_DATA *psPerProc) |
2827 | { | 3533 | { |
2828 | PVR_UNREFERENCED_PARAMETER(psBridgeIn); | 3534 | PVR_UNREFERENCED_PARAMETER(psBridgeIn); |
2829 | |||
2830 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_INITSRV_CONNECT); | ||
2831 | PVR_UNREFERENCED_PARAMETER(psBridgeIn); | ||
2832 | 3535 | ||
3536 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_INITSRV_CONNECT); | ||
3537 | PVR_UNREFERENCED_PARAMETER(psBridgeIn); | ||
2833 | 3538 | ||
2834 | if((OSProcHasPrivSrvInit() == IMG_FALSE) || PVRSRVGetInitServerState(PVRSRV_INIT_SERVER_RUNNING) || PVRSRVGetInitServerState(PVRSRV_INIT_SERVER_RAN)) | 3539 | |
2835 | { | 3540 | if((OSProcHasPrivSrvInit() == IMG_FALSE) || PVRSRVGetInitServerState(PVRSRV_INIT_SERVER_RUNNING) || PVRSRVGetInitServerState(PVRSRV_INIT_SERVER_RAN)) |
2836 | psRetOUT->eError = PVRSRV_ERROR_SRV_CONNECT_FAILED; | 3541 | { |
2837 | return 0; | 3542 | psRetOUT->eError = PVRSRV_ERROR_SRV_CONNECT_FAILED; |
2838 | } | 3543 | return 0; |
3544 | } | ||
2839 | 3545 | ||
2840 | #if defined (__linux__) | 3546 | #if defined (__linux__) |
2841 | PVRSRVSetInitServerState(PVRSRV_INIT_SERVER_RUNNING, IMG_TRUE); | 3547 | PVRSRVSetInitServerState(PVRSRV_INIT_SERVER_RUNNING, IMG_TRUE); |
2842 | #endif | 3548 | #endif |
2843 | psPerProc->bInitProcess = IMG_TRUE; | 3549 | psPerProc->bInitProcess = IMG_TRUE; |
2844 | 3550 | ||
2845 | psRetOUT->eError = PVRSRV_OK; | 3551 | psRetOUT->eError = PVRSRV_OK; |
2846 | 3552 | ||
2847 | return 0; | 3553 | return 0; |
2848 | } | 3554 | } |
2849 | 3555 | ||
2850 | 3556 | ||
2851 | static IMG_INT | 3557 | static IMG_INT |
2852 | PVRSRVInitSrvDisconnectBW(IMG_UINT32 ui32BridgeID, | 3558 | PVRSRVInitSrvDisconnectBW(IMG_UINT32 ui32BridgeID, |
2853 | PVRSRV_BRIDGE_IN_INITSRV_DISCONNECT *psInitSrvDisconnectIN, | 3559 | PVRSRV_BRIDGE_IN_INITSRV_DISCONNECT *psInitSrvDisconnectIN, |
2854 | PVRSRV_BRIDGE_RETURN *psRetOUT, | 3560 | PVRSRV_BRIDGE_RETURN *psRetOUT, |
2855 | PVRSRV_PER_PROCESS_DATA *psPerProc) | 3561 | PVRSRV_PER_PROCESS_DATA *psPerProc) |
2856 | { | 3562 | { |
2857 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_INITSRV_DISCONNECT); | 3563 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_INITSRV_DISCONNECT); |
2858 | 3564 | ||
2859 | if(!psPerProc->bInitProcess) | 3565 | if(!psPerProc->bInitProcess) |
2860 | { | 3566 | { |
2861 | psRetOUT->eError = PVRSRV_ERROR_SRV_DISCONNECT_FAILED; | 3567 | psRetOUT->eError = PVRSRV_ERROR_SRV_DISCONNECT_FAILED; |
2862 | return 0; | 3568 | return 0; |
2863 | } | 3569 | } |
2864 | 3570 | ||
2865 | psPerProc->bInitProcess = IMG_FALSE; | 3571 | psPerProc->bInitProcess = IMG_FALSE; |
2866 | 3572 | ||
2867 | PVRSRVSetInitServerState(PVRSRV_INIT_SERVER_RUNNING, IMG_FALSE); | 3573 | PVRSRVSetInitServerState(PVRSRV_INIT_SERVER_RUNNING, IMG_FALSE); |
2868 | PVRSRVSetInitServerState(PVRSRV_INIT_SERVER_RAN, IMG_TRUE); | 3574 | PVRSRVSetInitServerState(PVRSRV_INIT_SERVER_RAN, IMG_TRUE); |
2869 | 3575 | ||
2870 | psRetOUT->eError = PVRSRVFinaliseSystem(psInitSrvDisconnectIN->bInitSuccesful); | 3576 | psRetOUT->eError = PVRSRVFinaliseSystem(psInitSrvDisconnectIN->bInitSuccesful); |
2871 | 3577 | ||
2872 | PVRSRVSetInitServerState( PVRSRV_INIT_SERVER_SUCCESSFUL , | 3578 | PVRSRVSetInitServerState( PVRSRV_INIT_SERVER_SUCCESSFUL , |
2873 | ((psRetOUT->eError == PVRSRV_OK) && (psInitSrvDisconnectIN->bInitSuccesful)) | 3579 | ((psRetOUT->eError == PVRSRV_OK) && (psInitSrvDisconnectIN->bInitSuccesful)) |
2874 | ? IMG_TRUE : IMG_FALSE); | 3580 | ? IMG_TRUE : IMG_FALSE); |
2875 | 3581 | ||
2876 | return 0; | 3582 | return 0; |
2877 | } | 3583 | } |
2878 | 3584 | ||
2879 | 3585 | ||
2880 | static IMG_INT | 3586 | static IMG_INT |
2881 | PVRSRVEventObjectWaitBW(IMG_UINT32 ui32BridgeID, | 3587 | PVRSRVEventObjectWaitBW(IMG_UINT32 ui32BridgeID, |
2882 | PVRSRV_BRIDGE_IN_EVENT_OBJECT_WAIT *psEventObjectWaitIN, | 3588 | PVRSRV_BRIDGE_IN_EVENT_OBJECT_WAIT *psEventObjectWaitIN, |
2883 | PVRSRV_BRIDGE_RETURN *psRetOUT, | 3589 | PVRSRV_BRIDGE_RETURN *psRetOUT, |
2884 | PVRSRV_PER_PROCESS_DATA *psPerProc) | 3590 | PVRSRV_PER_PROCESS_DATA *psPerProc) |
2885 | { | 3591 | { |
2886 | IMG_HANDLE hOSEventKM; | 3592 | IMG_HANDLE hOSEventKM; |
2887 | 3593 | ||
2888 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_EVENT_OBJECT_WAIT); | 3594 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_EVENT_OBJECT_WAIT); |
2889 | 3595 | ||
2890 | psRetOUT->eError = PVRSRVLookupHandle(psPerProc->psHandleBase, | 3596 | psRetOUT->eError = PVRSRVLookupHandle(psPerProc->psHandleBase, |
2891 | &hOSEventKM, | 3597 | &hOSEventKM, |
2892 | psEventObjectWaitIN->hOSEventKM, | 3598 | psEventObjectWaitIN->hOSEventKM, |
2893 | PVRSRV_HANDLE_TYPE_EVENT_OBJECT_CONNECT); | 3599 | PVRSRV_HANDLE_TYPE_EVENT_OBJECT_CONNECT); |
2894 | 3600 | ||
2895 | if(psRetOUT->eError != PVRSRV_OK) | 3601 | if(psRetOUT->eError != PVRSRV_OK) |
2896 | { | 3602 | { |
2897 | return 0; | 3603 | return 0; |
2898 | } | 3604 | } |
2899 | 3605 | ||
2900 | psRetOUT->eError = OSEventObjectWait(hOSEventKM); | 3606 | psRetOUT->eError = OSEventObjectWaitKM(hOSEventKM); |
2901 | 3607 | ||
2902 | return 0; | 3608 | return 0; |
2903 | } | 3609 | } |
2904 | 3610 | ||
2905 | 3611 | ||
2906 | static IMG_INT | 3612 | static IMG_INT |
2907 | PVRSRVEventObjectOpenBW(IMG_UINT32 ui32BridgeID, | 3613 | PVRSRVEventObjectOpenBW(IMG_UINT32 ui32BridgeID, |
2908 | PVRSRV_BRIDGE_IN_EVENT_OBJECT_OPEN *psEventObjectOpenIN, | 3614 | PVRSRV_BRIDGE_IN_EVENT_OBJECT_OPEN *psEventObjectOpenIN, |
2909 | PVRSRV_BRIDGE_OUT_EVENT_OBJECT_OPEN *psEventObjectOpenOUT, | 3615 | PVRSRV_BRIDGE_OUT_EVENT_OBJECT_OPEN *psEventObjectOpenOUT, |
2910 | PVRSRV_PER_PROCESS_DATA *psPerProc) | 3616 | PVRSRV_PER_PROCESS_DATA *psPerProc) |
2911 | { | 3617 | { |
3618 | #if defined (SUPPORT_SID_INTERFACE) | ||
3619 | PVRSRV_EVENTOBJECT_KM sEventObject; | ||
3620 | IMG_HANDLE hOSEvent; | ||
3621 | #endif | ||
2912 | 3622 | ||
2913 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_EVENT_OBJECT_OPEN); | 3623 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_EVENT_OBJECT_OPEN); |
2914 | 3624 | ||
2915 | NEW_HANDLE_BATCH_OR_ERROR(psEventObjectOpenOUT->eError, psPerProc, 1) | 3625 | NEW_HANDLE_BATCH_OR_ERROR(psEventObjectOpenOUT->eError, psPerProc, 1) |
2916 | 3626 | ||
2917 | psEventObjectOpenOUT->eError = | 3627 | psEventObjectOpenOUT->eError = |
2918 | PVRSRVLookupHandle(psPerProc->psHandleBase, | 3628 | PVRSRVLookupHandle(psPerProc->psHandleBase, |
2919 | &psEventObjectOpenIN->sEventObject.hOSEventKM, | 3629 | #if defined (SUPPORT_SID_INTERFACE) |
2920 | psEventObjectOpenIN->sEventObject.hOSEventKM, | 3630 | &sEventObject.hOSEventKM, |
2921 | PVRSRV_HANDLE_TYPE_SHARED_EVENT_OBJECT); | 3631 | #else |
3632 | &psEventObjectOpenIN->sEventObject.hOSEventKM, | ||
3633 | #endif | ||
3634 | psEventObjectOpenIN->sEventObject.hOSEventKM, | ||
3635 | PVRSRV_HANDLE_TYPE_SHARED_EVENT_OBJECT); | ||
2922 | 3636 | ||
2923 | if(psEventObjectOpenOUT->eError != PVRSRV_OK) | 3637 | if(psEventObjectOpenOUT->eError != PVRSRV_OK) |
2924 | { | 3638 | { |
2925 | return 0; | 3639 | return 0; |
2926 | } | 3640 | } |
2927 | 3641 | ||
2928 | psEventObjectOpenOUT->eError = OSEventObjectOpen(&psEventObjectOpenIN->sEventObject, &psEventObjectOpenOUT->hOSEvent); | 3642 | #if defined (SUPPORT_SID_INTERFACE) |
3643 | OSMemCopy(&sEventObject.szName, | ||
3644 | &psEventObjectOpenIN->sEventObject.szName, | ||
3645 | EVENTOBJNAME_MAXLENGTH); | ||
2929 | 3646 | ||
2930 | if(psEventObjectOpenOUT->eError != PVRSRV_OK) | 3647 | psEventObjectOpenOUT->eError = OSEventObjectOpenKM(&sEventObject, &hOSEvent); |
2931 | { | 3648 | #else |
2932 | return 0; | 3649 | psEventObjectOpenOUT->eError = OSEventObjectOpenKM(&psEventObjectOpenIN->sEventObject, &psEventObjectOpenOUT->hOSEvent); |
2933 | } | 3650 | #endif |
2934 | 3651 | ||
2935 | PVRSRVAllocHandleNR(psPerProc->psHandleBase, | 3652 | if(psEventObjectOpenOUT->eError != PVRSRV_OK) |
2936 | &psEventObjectOpenOUT->hOSEvent, | 3653 | { |
2937 | psEventObjectOpenOUT->hOSEvent, | 3654 | return 0; |
2938 | PVRSRV_HANDLE_TYPE_EVENT_OBJECT_CONNECT, | 3655 | } |
2939 | PVRSRV_HANDLE_ALLOC_FLAG_MULTI); | 3656 | |
3657 | #if defined (SUPPORT_SID_INTERFACE) | ||
3658 | #if !defined (WINXP) && !defined(SUPPORT_VISTA) | ||
3659 | PVRSRVAllocHandleNR(psPerProc->psHandleBase, | ||
3660 | &psEventObjectOpenOUT->hOSEvent, | ||
3661 | hOSEvent, | ||
3662 | PVRSRV_HANDLE_TYPE_EVENT_OBJECT_CONNECT, | ||
3663 | PVRSRV_HANDLE_ALLOC_FLAG_MULTI); | ||
3664 | #endif | ||
3665 | #else | ||
3666 | PVRSRVAllocHandleNR(psPerProc->psHandleBase, | ||
3667 | &psEventObjectOpenOUT->hOSEvent, | ||
3668 | psEventObjectOpenOUT->hOSEvent, | ||
3669 | PVRSRV_HANDLE_TYPE_EVENT_OBJECT_CONNECT, | ||
3670 | PVRSRV_HANDLE_ALLOC_FLAG_MULTI); | ||
3671 | #endif | ||
2940 | 3672 | ||
2941 | COMMIT_HANDLE_BATCH_OR_ERROR(psEventObjectOpenOUT->eError, psPerProc) | 3673 | COMMIT_HANDLE_BATCH_OR_ERROR(psEventObjectOpenOUT->eError, psPerProc) |
2942 | 3674 | ||
2943 | return 0; | 3675 | return 0; |
2944 | } | 3676 | } |
2945 | 3677 | ||
2946 | 3678 | ||
2947 | static IMG_INT | 3679 | static IMG_INT |
2948 | PVRSRVEventObjectCloseBW(IMG_UINT32 ui32BridgeID, | 3680 | PVRSRVEventObjectCloseBW(IMG_UINT32 ui32BridgeID, |
2949 | PVRSRV_BRIDGE_IN_EVENT_OBJECT_CLOSE *psEventObjectCloseIN, | 3681 | PVRSRV_BRIDGE_IN_EVENT_OBJECT_CLOSE *psEventObjectCloseIN, |
2950 | PVRSRV_BRIDGE_RETURN *psRetOUT, | 3682 | PVRSRV_BRIDGE_RETURN *psRetOUT, |
2951 | PVRSRV_PER_PROCESS_DATA *psPerProc) | 3683 | PVRSRV_PER_PROCESS_DATA *psPerProc) |
2952 | { | 3684 | { |
2953 | IMG_HANDLE hOSEventKM; | 3685 | IMG_HANDLE hOSEventKM; |
2954 | 3686 | #if defined (SUPPORT_SID_INTERFACE) | |
2955 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_EVENT_OBJECT_CLOSE); | 3687 | PVRSRV_EVENTOBJECT_KM sEventObject; |
2956 | 3688 | #endif | |
2957 | psRetOUT->eError = | ||
2958 | PVRSRVLookupHandle(psPerProc->psHandleBase, | ||
2959 | &psEventObjectCloseIN->sEventObject.hOSEventKM, | ||
2960 | psEventObjectCloseIN->sEventObject.hOSEventKM, | ||
2961 | PVRSRV_HANDLE_TYPE_SHARED_EVENT_OBJECT); | ||
2962 | if(psRetOUT->eError != PVRSRV_OK) | ||
2963 | { | ||
2964 | return 0; | ||
2965 | } | ||
2966 | |||
2967 | psRetOUT->eError = PVRSRVLookupAndReleaseHandle(psPerProc->psHandleBase, | ||
2968 | &hOSEventKM, | ||
2969 | psEventObjectCloseIN->hOSEventKM, | ||
2970 | PVRSRV_HANDLE_TYPE_EVENT_OBJECT_CONNECT); | ||
2971 | 3689 | ||
2972 | if(psRetOUT->eError != PVRSRV_OK) | 3690 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_EVENT_OBJECT_CLOSE); |
2973 | { | ||
2974 | return 0; | ||
2975 | } | ||
2976 | 3691 | ||
2977 | psRetOUT->eError = OSEventObjectClose(&psEventObjectCloseIN->sEventObject, hOSEventKM); | 3692 | psRetOUT->eError = |
3693 | PVRSRVLookupHandle(psPerProc->psHandleBase, | ||
3694 | #if defined (SUPPORT_SID_INTERFACE) | ||
3695 | &sEventObject.hOSEventKM, | ||
3696 | #else | ||
3697 | &psEventObjectCloseIN->sEventObject.hOSEventKM, | ||
3698 | #endif | ||
3699 | psEventObjectCloseIN->sEventObject.hOSEventKM, | ||
3700 | PVRSRV_HANDLE_TYPE_SHARED_EVENT_OBJECT); | ||
3701 | if(psRetOUT->eError != PVRSRV_OK) | ||
3702 | { | ||
3703 | return 0; | ||
3704 | } | ||
3705 | |||
3706 | psRetOUT->eError = PVRSRVLookupAndReleaseHandle(psPerProc->psHandleBase, | ||
3707 | &hOSEventKM, | ||
3708 | psEventObjectCloseIN->hOSEventKM, | ||
3709 | PVRSRV_HANDLE_TYPE_EVENT_OBJECT_CONNECT); | ||
3710 | |||
3711 | if(psRetOUT->eError != PVRSRV_OK) | ||
3712 | { | ||
3713 | return 0; | ||
3714 | } | ||
3715 | |||
3716 | #if defined (SUPPORT_SID_INTERFACE) | ||
3717 | if(CopyFromUserWrapper(psPerProc, ui32BridgeID, | ||
3718 | &sEventObject.szName, | ||
3719 | &psEventObjectCloseIN->sEventObject.szName, | ||
3720 | EVENTOBJNAME_MAXLENGTH) != PVRSRV_OK) | ||
3721 | { | ||
3722 | |||
3723 | return -EFAULT; | ||
3724 | } | ||
3725 | |||
3726 | psRetOUT->eError = OSEventObjectCloseKM(&sEventObject, hOSEventKM); | ||
3727 | #else | ||
3728 | psRetOUT->eError = OSEventObjectCloseKM(&psEventObjectCloseIN->sEventObject, hOSEventKM); | ||
3729 | #endif | ||
2978 | 3730 | ||
2979 | return 0; | 3731 | return 0; |
2980 | } | 3732 | } |
2981 | 3733 | ||
2982 | 3734 | ||
2983 | typedef struct _MODIFY_SYNC_OP_INFO | 3735 | typedef struct _MODIFY_SYNC_OP_INFO |
2984 | { | 3736 | { |
2985 | IMG_HANDLE hResItem; | 3737 | IMG_HANDLE hResItem; |
2986 | PVRSRV_KERNEL_SYNC_INFO *psKernelSyncInfo; | 3738 | PVRSRV_KERNEL_SYNC_INFO *psKernelSyncInfo; |
2987 | IMG_UINT32 ui32ModifyFlags; | 3739 | IMG_UINT32 ui32ModifyFlags; |
2988 | IMG_UINT32 ui32ReadOpsPendingSnapShot; | 3740 | IMG_UINT32 ui32ReadOpsPendingSnapShot; |
2989 | IMG_UINT32 ui32WriteOpsPendingSnapShot; | 3741 | IMG_UINT32 ui32WriteOpsPendingSnapShot; |
2990 | } MODIFY_SYNC_OP_INFO; | 3742 | } MODIFY_SYNC_OP_INFO; |
2991 | 3743 | ||
2992 | 3744 | ||
2993 | static PVRSRV_ERROR DoQuerySyncOpsSatisfied(MODIFY_SYNC_OP_INFO *psModSyncOpInfo) | 3745 | static PVRSRV_ERROR DoQuerySyncOpsSatisfied(PVRSRV_KERNEL_SYNC_INFO *psKernelSyncInfo, |
3746 | IMG_UINT32 ui32ReadOpsPendingSnapShot, | ||
3747 | IMG_UINT32 ui32WriteOpsPendingSnapShot) | ||
2994 | { | 3748 | { |
2995 | PVRSRV_KERNEL_SYNC_INFO *psKernelSyncInfo; | 3749 | IMG_UINT32 ui32WriteOpsPending; |
3750 | IMG_UINT32 ui32ReadOpsPending; | ||
2996 | 3751 | ||
2997 | psKernelSyncInfo = psModSyncOpInfo->psKernelSyncInfo; | 3752 | |
3753 | if (!psKernelSyncInfo) | ||
3754 | { | ||
3755 | return PVRSRV_ERROR_INVALID_PARAMS; | ||
3756 | } | ||
2998 | 3757 | ||
2999 | if (!psKernelSyncInfo) | 3758 | |
3000 | { | ||
3001 | return PVRSRV_ERROR_INVALID_PARAMS; | ||
3002 | } | ||
3003 | 3759 | ||
3004 | if((psModSyncOpInfo->ui32WriteOpsPendingSnapShot == psKernelSyncInfo->psSyncData->ui32WriteOpsComplete) | ||
3005 | && (psModSyncOpInfo->ui32ReadOpsPendingSnapShot == psKernelSyncInfo->psSyncData->ui32ReadOpsComplete)) | ||
3006 | { | ||
3007 | #if defined(PDUMP) | ||
3008 | 3760 | ||
3009 | 3761 | ||
3010 | 3762 | ||
3011 | PDumpComment("Poll for read ops complete to reach value (%u)", psModSyncOpInfo->ui32ReadOpsPendingSnapShot); | ||
3012 | PDumpMemPolKM(psKernelSyncInfo->psSyncDataMemInfoKM, | ||
3013 | offsetof(PVRSRV_SYNC_DATA, ui32ReadOpsComplete), | ||
3014 | psModSyncOpInfo->ui32ReadOpsPendingSnapShot, | ||
3015 | 0xFFFFFFFF, | ||
3016 | PDUMP_POLL_OPERATOR_EQUAL, | ||
3017 | 0, | ||
3018 | MAKEUNIQUETAG(psKernelSyncInfo->psSyncDataMemInfoKM)); | ||
3019 | 3763 | ||
3020 | 3764 | ||
3021 | PDumpComment("Poll for write ops complete to reach value (%u)", psModSyncOpInfo->ui32WriteOpsPendingSnapShot); | ||
3022 | PDumpMemPolKM(psKernelSyncInfo->psSyncDataMemInfoKM, | ||
3023 | offsetof(PVRSRV_SYNC_DATA, ui32WriteOpsComplete), | ||
3024 | psModSyncOpInfo->ui32WriteOpsPendingSnapShot, | ||
3025 | 0xFFFFFFFF, | ||
3026 | PDUMP_POLL_OPERATOR_EQUAL, | ||
3027 | 0, | ||
3028 | MAKEUNIQUETAG(psKernelSyncInfo->psSyncDataMemInfoKM)); | ||
3029 | #endif | ||
3030 | return PVRSRV_OK; | ||
3031 | } | ||
3032 | else | ||
3033 | { | ||
3034 | return PVRSRV_ERROR_RETRY; | ||
3035 | } | ||
3036 | } | ||
3037 | |||
3038 | static PVRSRV_ERROR DoModifyCompleteSyncOps(MODIFY_SYNC_OP_INFO *psModSyncOpInfo) | ||
3039 | { | ||
3040 | PVRSRV_KERNEL_SYNC_INFO *psKernelSyncInfo; | ||
3041 | 3765 | ||
3042 | psKernelSyncInfo = psModSyncOpInfo->psKernelSyncInfo; | ||
3043 | |||
3044 | if (!psKernelSyncInfo) | ||
3045 | { | ||
3046 | return PVRSRV_ERROR_INVALID_PARAMS; | ||
3047 | } | ||
3048 | |||
3049 | |||
3050 | if((psModSyncOpInfo->ui32WriteOpsPendingSnapShot != psKernelSyncInfo->psSyncData->ui32WriteOpsComplete) | ||
3051 | || (psModSyncOpInfo->ui32ReadOpsPendingSnapShot != psKernelSyncInfo->psSyncData->ui32ReadOpsComplete)) | ||
3052 | { | ||
3053 | return PVRSRV_ERROR_BAD_SYNC_STATE; | ||
3054 | } | ||
3055 | 3766 | ||
3056 | 3767 | ||
3057 | if(psModSyncOpInfo->ui32ModifyFlags & PVRSRV_MODIFYSYNCOPS_FLAGS_WO_INC) | 3768 | ui32WriteOpsPending = psKernelSyncInfo->psSyncData->ui32WriteOpsPending; |
3058 | { | 3769 | ui32ReadOpsPending = psKernelSyncInfo->psSyncData->ui32ReadOpsPending; |
3059 | psKernelSyncInfo->psSyncData->ui32WriteOpsComplete++; | ||
3060 | } | ||
3061 | 3770 | ||
3771 | if((ui32WriteOpsPending - ui32WriteOpsPendingSnapShot >= | ||
3772 | ui32WriteOpsPending - psKernelSyncInfo->psSyncData->ui32WriteOpsComplete) && | ||
3773 | (ui32ReadOpsPending - ui32ReadOpsPendingSnapShot >= | ||
3774 | ui32ReadOpsPending - psKernelSyncInfo->psSyncData->ui32ReadOpsComplete)) | ||
3775 | { | ||
3776 | #if defined(PDUMP) && !defined(SUPPORT_VGX) | ||
3777 | |||
3778 | PDumpComment("Poll for read ops complete to reach value (pdump: %u, actual snapshot: %u)", | ||
3779 | psKernelSyncInfo->psSyncData->ui32LastReadOpDumpVal, | ||
3780 | ui32ReadOpsPendingSnapShot); | ||
3781 | PDumpMemPolKM(psKernelSyncInfo->psSyncDataMemInfoKM, | ||
3782 | offsetof(PVRSRV_SYNC_DATA, ui32ReadOpsComplete), | ||
3783 | psKernelSyncInfo->psSyncData->ui32LastReadOpDumpVal, | ||
3784 | 0xFFFFFFFF, | ||
3785 | PDUMP_POLL_OPERATOR_EQUAL, | ||
3786 | 0, | ||
3787 | MAKEUNIQUETAG(psKernelSyncInfo->psSyncDataMemInfoKM)); | ||
3062 | 3788 | ||
3063 | if(psModSyncOpInfo->ui32ModifyFlags & PVRSRV_MODIFYSYNCOPS_FLAGS_RO_INC) | 3789 | |
3064 | { | 3790 | PDumpComment("Poll for write ops complete to reach value (pdump: %u, actual snapshot: %u)", |
3065 | psKernelSyncInfo->psSyncData->ui32ReadOpsComplete++; | 3791 | psKernelSyncInfo->psSyncData->ui32LastOpDumpVal, |
3066 | } | 3792 | ui32WriteOpsPendingSnapShot); |
3793 | PDumpMemPolKM(psKernelSyncInfo->psSyncDataMemInfoKM, | ||
3794 | offsetof(PVRSRV_SYNC_DATA, ui32WriteOpsComplete), | ||
3795 | psKernelSyncInfo->psSyncData->ui32LastOpDumpVal, | ||
3796 | 0xFFFFFFFF, | ||
3797 | PDUMP_POLL_OPERATOR_EQUAL, | ||
3798 | 0, | ||
3799 | MAKEUNIQUETAG(psKernelSyncInfo->psSyncDataMemInfoKM)); | ||
3800 | |||
3067 | 3801 | ||
3068 | return PVRSRV_OK; | 3802 | #endif |
3803 | return PVRSRV_OK; | ||
3804 | } | ||
3805 | else | ||
3806 | { | ||
3807 | return PVRSRV_ERROR_RETRY; | ||
3808 | } | ||
3069 | } | 3809 | } |
3070 | 3810 | ||
3071 | 3811 | ||
3072 | static PVRSRV_ERROR ModifyCompleteSyncOpsCallBack(IMG_PVOID pvParam, | 3812 | static PVRSRV_ERROR DoModifyCompleteSyncOps(MODIFY_SYNC_OP_INFO *psModSyncOpInfo) |
3073 | IMG_UINT32 ui32Param) | ||
3074 | { | 3813 | { |
3075 | MODIFY_SYNC_OP_INFO *psModSyncOpInfo; | 3814 | PVRSRV_KERNEL_SYNC_INFO *psKernelSyncInfo; |
3076 | 3815 | ||
3077 | PVR_UNREFERENCED_PARAMETER(ui32Param); | 3816 | psKernelSyncInfo = psModSyncOpInfo->psKernelSyncInfo; |
3078 | 3817 | ||
3079 | if (!pvParam) | 3818 | if (!psKernelSyncInfo) |
3080 | { | 3819 | { |
3081 | PVR_DPF((PVR_DBG_ERROR, "ModifyCompleteSyncOpsCallBack: invalid parameter")); | 3820 | return PVRSRV_ERROR_INVALID_PARAMS; |
3082 | return PVRSRV_ERROR_INVALID_PARAMS; | 3821 | } |
3083 | } | 3822 | |
3084 | 3823 | ||
3085 | psModSyncOpInfo = (MODIFY_SYNC_OP_INFO*)pvParam; | 3824 | if((psModSyncOpInfo->ui32WriteOpsPendingSnapShot != psKernelSyncInfo->psSyncData->ui32WriteOpsComplete) |
3086 | 3825 | || (psModSyncOpInfo->ui32ReadOpsPendingSnapShot != psKernelSyncInfo->psSyncData->ui32ReadOpsComplete)) | |
3087 | if (psModSyncOpInfo->psKernelSyncInfo) | 3826 | { |
3088 | { | 3827 | return PVRSRV_ERROR_BAD_SYNC_STATE; |
3089 | 3828 | } | |
3090 | LOOP_UNTIL_TIMEOUT(MAX_HW_TIME_US) | 3829 | |
3091 | { | 3830 | |
3092 | if (DoQuerySyncOpsSatisfied(psModSyncOpInfo) == PVRSRV_OK) | 3831 | if(psModSyncOpInfo->ui32ModifyFlags & PVRSRV_MODIFYSYNCOPS_FLAGS_WO_INC) |
3093 | { | 3832 | { |
3094 | goto OpFlushedComplete; | 3833 | psKernelSyncInfo->psSyncData->ui32WriteOpsComplete++; |
3095 | } | 3834 | } |
3096 | PVR_DPF((PVR_DBG_WARNING, "ModifyCompleteSyncOpsCallBack: waiting for current Ops to flush")); | 3835 | |
3097 | OSSleepms(1); | 3836 | |
3098 | } END_LOOP_UNTIL_TIMEOUT(); | 3837 | if(psModSyncOpInfo->ui32ModifyFlags & PVRSRV_MODIFYSYNCOPS_FLAGS_RO_INC) |
3099 | 3838 | { | |
3100 | PVR_DPF((PVR_DBG_ERROR, "ModifyCompleteSyncOpsCallBack: timeout whilst waiting for current Ops to flush.")); | 3839 | psKernelSyncInfo->psSyncData->ui32ReadOpsComplete++; |
3101 | PVR_DPF((PVR_DBG_ERROR, " Write ops pending snapshot = %d, write ops complete = %d", | 3840 | } |
3102 | psModSyncOpInfo->ui32WriteOpsPendingSnapShot, | 3841 | |
3103 | psModSyncOpInfo->psKernelSyncInfo->psSyncData->ui32WriteOpsComplete)); | 3842 | return PVRSRV_OK; |
3104 | PVR_DPF((PVR_DBG_ERROR, " Read ops pending snapshot = %d, write ops complete = %d", | 3843 | } |
3105 | psModSyncOpInfo->ui32ReadOpsPendingSnapShot, | ||
3106 | psModSyncOpInfo->psKernelSyncInfo->psSyncData->ui32ReadOpsComplete)); | ||
3107 | |||
3108 | return PVRSRV_ERROR_TIMEOUT; | ||
3109 | |||
3110 | OpFlushedComplete: | ||
3111 | |||
3112 | DoModifyCompleteSyncOps(psModSyncOpInfo); | ||
3113 | } | ||
3114 | |||
3115 | OSFreeMem(PVRSRV_OS_PAGEABLE_HEAP, sizeof(MODIFY_SYNC_OP_INFO), (IMG_VOID *)psModSyncOpInfo, 0); | ||
3116 | |||
3117 | |||
3118 | 3844 | ||
3119 | PVRSRVScheduleDeviceCallbacks(); | ||
3120 | 3845 | ||
3121 | return PVRSRV_OK; | 3846 | static PVRSRV_ERROR ModifyCompleteSyncOpsCallBack(IMG_PVOID pvParam, |
3847 | IMG_UINT32 ui32Param) | ||
3848 | { | ||
3849 | MODIFY_SYNC_OP_INFO *psModSyncOpInfo; | ||
3850 | |||
3851 | PVR_UNREFERENCED_PARAMETER(ui32Param); | ||
3852 | |||
3853 | if (!pvParam) | ||
3854 | { | ||
3855 | PVR_DPF((PVR_DBG_ERROR, "ModifyCompleteSyncOpsCallBack: invalid parameter")); | ||
3856 | return PVRSRV_ERROR_INVALID_PARAMS; | ||
3857 | } | ||
3858 | |||
3859 | psModSyncOpInfo = (MODIFY_SYNC_OP_INFO*)pvParam; | ||
3860 | |||
3861 | if (psModSyncOpInfo->psKernelSyncInfo) | ||
3862 | { | ||
3863 | |||
3864 | LOOP_UNTIL_TIMEOUT(MAX_HW_TIME_US) | ||
3865 | { | ||
3866 | if (DoQuerySyncOpsSatisfied(psModSyncOpInfo->psKernelSyncInfo, | ||
3867 | psModSyncOpInfo->ui32ReadOpsPendingSnapShot, | ||
3868 | psModSyncOpInfo->ui32WriteOpsPendingSnapShot) == PVRSRV_OK) | ||
3869 | { | ||
3870 | goto OpFlushedComplete; | ||
3871 | } | ||
3872 | PVR_DPF((PVR_DBG_WARNING, "ModifyCompleteSyncOpsCallBack: waiting for current Ops to flush")); | ||
3873 | OSSleepms(1); | ||
3874 | } END_LOOP_UNTIL_TIMEOUT(); | ||
3875 | |||
3876 | PVR_DPF((PVR_DBG_ERROR, "ModifyCompleteSyncOpsCallBack: timeout whilst waiting for current Ops to flush.")); | ||
3877 | PVR_DPF((PVR_DBG_ERROR, " Write ops pending snapshot = %d, write ops complete = %d", | ||
3878 | psModSyncOpInfo->ui32WriteOpsPendingSnapShot, | ||
3879 | psModSyncOpInfo->psKernelSyncInfo->psSyncData->ui32WriteOpsComplete)); | ||
3880 | PVR_DPF((PVR_DBG_ERROR, " Read ops pending snapshot = %d, write ops complete = %d", | ||
3881 | psModSyncOpInfo->ui32ReadOpsPendingSnapShot, | ||
3882 | psModSyncOpInfo->psKernelSyncInfo->psSyncData->ui32ReadOpsComplete)); | ||
3883 | |||
3884 | return PVRSRV_ERROR_TIMEOUT; | ||
3885 | |||
3886 | OpFlushedComplete: | ||
3887 | |||
3888 | DoModifyCompleteSyncOps(psModSyncOpInfo); | ||
3889 | } | ||
3890 | |||
3891 | OSFreeMem(PVRSRV_OS_PAGEABLE_HEAP, sizeof(MODIFY_SYNC_OP_INFO), (IMG_VOID *)psModSyncOpInfo, 0); | ||
3892 | |||
3893 | |||
3894 | |||
3895 | PVRSRVScheduleDeviceCallbacks(); | ||
3896 | |||
3897 | return PVRSRV_OK; | ||
3122 | } | 3898 | } |
3123 | 3899 | ||
3124 | 3900 | ||
3125 | static IMG_INT | 3901 | static IMG_INT |
3126 | PVRSRVCreateSyncInfoModObjBW(IMG_UINT32 ui32BridgeID, | 3902 | PVRSRVCreateSyncInfoModObjBW(IMG_UINT32 ui32BridgeID, |
3127 | IMG_VOID *psBridgeIn, | 3903 | IMG_VOID *psBridgeIn, |
3128 | PVRSRV_BRIDGE_OUT_CREATE_SYNC_INFO_MOD_OBJ *psCreateSyncInfoModObjOUT, | 3904 | PVRSRV_BRIDGE_OUT_CREATE_SYNC_INFO_MOD_OBJ *psCreateSyncInfoModObjOUT, |
3129 | PVRSRV_PER_PROCESS_DATA *psPerProc) | 3905 | PVRSRV_PER_PROCESS_DATA *psPerProc) |
3130 | { | 3906 | { |
3131 | MODIFY_SYNC_OP_INFO *psModSyncOpInfo; | 3907 | MODIFY_SYNC_OP_INFO *psModSyncOpInfo; |
3132 | 3908 | ||
3133 | PVR_UNREFERENCED_PARAMETER(psBridgeIn); | 3909 | PVR_UNREFERENCED_PARAMETER(psBridgeIn); |
3134 | 3910 | ||
3135 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_CREATE_SYNC_INFO_MOD_OBJ); | 3911 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_CREATE_SYNC_INFO_MOD_OBJ); |
3136 | 3912 | ||
3137 | NEW_HANDLE_BATCH_OR_ERROR(psCreateSyncInfoModObjOUT->eError, psPerProc, 1) | 3913 | NEW_HANDLE_BATCH_OR_ERROR(psCreateSyncInfoModObjOUT->eError, psPerProc, 1) |
3138 | 3914 | ||
3139 | ASSIGN_AND_EXIT_ON_ERROR(psCreateSyncInfoModObjOUT->eError, | 3915 | ASSIGN_AND_EXIT_ON_ERROR(psCreateSyncInfoModObjOUT->eError, |
3140 | OSAllocMem(PVRSRV_OS_PAGEABLE_HEAP, | 3916 | OSAllocMem(PVRSRV_OS_PAGEABLE_HEAP, |
3141 | sizeof(MODIFY_SYNC_OP_INFO), | 3917 | sizeof(MODIFY_SYNC_OP_INFO), |
3142 | (IMG_VOID **)&psModSyncOpInfo, 0, | 3918 | (IMG_VOID **)&psModSyncOpInfo, 0, |
3143 | "ModSyncOpInfo (MODIFY_SYNC_OP_INFO)")); | 3919 | "ModSyncOpInfo (MODIFY_SYNC_OP_INFO)")); |
3144 | 3920 | ||
3145 | psModSyncOpInfo->psKernelSyncInfo = IMG_NULL; | 3921 | psModSyncOpInfo->psKernelSyncInfo = IMG_NULL; |
3146 | 3922 | ||
3147 | psCreateSyncInfoModObjOUT->eError = PVRSRVAllocHandle(psPerProc->psHandleBase, | 3923 | psCreateSyncInfoModObjOUT->eError = PVRSRVAllocHandle(psPerProc->psHandleBase, |
3148 | &psCreateSyncInfoModObjOUT->hKernelSyncInfoModObj, | 3924 | &psCreateSyncInfoModObjOUT->hKernelSyncInfoModObj, |
3149 | psModSyncOpInfo, | 3925 | psModSyncOpInfo, |
3150 | PVRSRV_HANDLE_TYPE_SYNC_INFO_MOD_OBJ, | 3926 | PVRSRV_HANDLE_TYPE_SYNC_INFO_MOD_OBJ, |
3151 | PVRSRV_HANDLE_ALLOC_FLAG_PRIVATE); | 3927 | PVRSRV_HANDLE_ALLOC_FLAG_PRIVATE); |
3152 | 3928 | ||
3153 | if (psCreateSyncInfoModObjOUT->eError != PVRSRV_OK) | 3929 | if (psCreateSyncInfoModObjOUT->eError != PVRSRV_OK) |
3154 | { | 3930 | { |
3155 | return 0; | 3931 | return 0; |
3156 | } | 3932 | } |
3157 | 3933 | ||
3158 | psModSyncOpInfo->hResItem = ResManRegisterRes(psPerProc->hResManContext, | 3934 | psModSyncOpInfo->hResItem = ResManRegisterRes(psPerProc->hResManContext, |
3159 | RESMAN_TYPE_MODIFY_SYNC_OPS, | 3935 | RESMAN_TYPE_MODIFY_SYNC_OPS, |
3160 | psModSyncOpInfo, | 3936 | psModSyncOpInfo, |
3161 | 0, | 3937 | 0, |
3162 | &ModifyCompleteSyncOpsCallBack); | 3938 | &ModifyCompleteSyncOpsCallBack); |
3163 | 3939 | ||
3164 | COMMIT_HANDLE_BATCH_OR_ERROR(psCreateSyncInfoModObjOUT->eError, psPerProc) | 3940 | COMMIT_HANDLE_BATCH_OR_ERROR(psCreateSyncInfoModObjOUT->eError, psPerProc) |
3165 | 3941 | ||
3166 | return 0; | 3942 | return 0; |
3167 | } | 3943 | } |
3168 | 3944 | ||
3169 | 3945 | ||
3170 | static IMG_INT | 3946 | static IMG_INT |
3171 | PVRSRVDestroySyncInfoModObjBW(IMG_UINT32 ui32BridgeID, | 3947 | PVRSRVDestroySyncInfoModObjBW(IMG_UINT32 ui32BridgeID, |
3172 | PVRSRV_BRIDGE_IN_DESTROY_SYNC_INFO_MOD_OBJ *psDestroySyncInfoModObjIN, | 3948 | PVRSRV_BRIDGE_IN_DESTROY_SYNC_INFO_MOD_OBJ *psDestroySyncInfoModObjIN, |
3173 | PVRSRV_BRIDGE_RETURN *psDestroySyncInfoModObjOUT, | 3949 | PVRSRV_BRIDGE_RETURN *psDestroySyncInfoModObjOUT, |
3174 | PVRSRV_PER_PROCESS_DATA *psPerProc) | 3950 | PVRSRV_PER_PROCESS_DATA *psPerProc) |
3175 | { | 3951 | { |
3176 | MODIFY_SYNC_OP_INFO *psModSyncOpInfo; | 3952 | MODIFY_SYNC_OP_INFO *psModSyncOpInfo; |
3177 | 3953 | ||
3178 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_DESTROY_SYNC_INFO_MOD_OBJ); | 3954 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_DESTROY_SYNC_INFO_MOD_OBJ); |
3179 | 3955 | ||
3180 | psDestroySyncInfoModObjOUT->eError = PVRSRVLookupHandle(psPerProc->psHandleBase, | 3956 | psDestroySyncInfoModObjOUT->eError = PVRSRVLookupHandle(psPerProc->psHandleBase, |
3181 | (IMG_VOID**)&psModSyncOpInfo, | 3957 | (IMG_VOID**)&psModSyncOpInfo, |
3182 | psDestroySyncInfoModObjIN->hKernelSyncInfoModObj, | 3958 | psDestroySyncInfoModObjIN->hKernelSyncInfoModObj, |
3183 | PVRSRV_HANDLE_TYPE_SYNC_INFO_MOD_OBJ); | 3959 | PVRSRV_HANDLE_TYPE_SYNC_INFO_MOD_OBJ); |
3184 | if (psDestroySyncInfoModObjOUT->eError != PVRSRV_OK) | 3960 | if (psDestroySyncInfoModObjOUT->eError != PVRSRV_OK) |
3185 | { | 3961 | { |
3186 | PVR_DPF((PVR_DBG_ERROR, "PVRSRVDestroySyncInfoModObjBW: PVRSRVLookupHandle failed")); | 3962 | PVR_DPF((PVR_DBG_ERROR, "PVRSRVDestroySyncInfoModObjBW: PVRSRVLookupHandle failed")); |
3187 | return 0; | 3963 | return 0; |
3188 | } | 3964 | } |
3189 | 3965 | ||
3190 | if(psModSyncOpInfo->psKernelSyncInfo != IMG_NULL) | 3966 | if(psModSyncOpInfo->psKernelSyncInfo != IMG_NULL) |
3191 | { | 3967 | { |
3192 | 3968 | ||
3193 | psDestroySyncInfoModObjOUT->eError = PVRSRV_ERROR_INVALID_PARAMS; | 3969 | psDestroySyncInfoModObjOUT->eError = PVRSRV_ERROR_INVALID_PARAMS; |
3194 | return 0; | 3970 | return 0; |
3195 | } | 3971 | } |
3196 | 3972 | ||
3197 | psDestroySyncInfoModObjOUT->eError = PVRSRVReleaseHandle(psPerProc->psHandleBase, | 3973 | psDestroySyncInfoModObjOUT->eError = PVRSRVReleaseHandle(psPerProc->psHandleBase, |
3198 | psDestroySyncInfoModObjIN->hKernelSyncInfoModObj, | 3974 | psDestroySyncInfoModObjIN->hKernelSyncInfoModObj, |
3199 | PVRSRV_HANDLE_TYPE_SYNC_INFO_MOD_OBJ); | 3975 | PVRSRV_HANDLE_TYPE_SYNC_INFO_MOD_OBJ); |
3200 | 3976 | ||
3201 | if (psDestroySyncInfoModObjOUT->eError != PVRSRV_OK) | 3977 | if (psDestroySyncInfoModObjOUT->eError != PVRSRV_OK) |
3202 | { | 3978 | { |
3203 | PVR_DPF((PVR_DBG_ERROR, "PVRSRVDestroySyncInfoModObjBW: PVRSRVReleaseHandle failed")); | 3979 | PVR_DPF((PVR_DBG_ERROR, "PVRSRVDestroySyncInfoModObjBW: PVRSRVReleaseHandle failed")); |
3204 | return 0; | 3980 | return 0; |
3205 | } | 3981 | } |
3206 | 3982 | ||
3207 | psDestroySyncInfoModObjOUT->eError = ResManFreeResByPtr(psModSyncOpInfo->hResItem); | 3983 | psDestroySyncInfoModObjOUT->eError = ResManFreeResByPtr(psModSyncOpInfo->hResItem); |
3208 | if (psDestroySyncInfoModObjOUT->eError != PVRSRV_OK) | 3984 | if (psDestroySyncInfoModObjOUT->eError != PVRSRV_OK) |
3209 | { | 3985 | { |
3210 | PVR_DPF((PVR_DBG_ERROR, "PVRSRVDestroySyncInfoModObjBW: ResManFreeResByPtr failed")); | 3986 | PVR_DPF((PVR_DBG_ERROR, "PVRSRVDestroySyncInfoModObjBW: ResManFreeResByPtr failed")); |
3211 | return 0; | 3987 | return 0; |
3212 | } | 3988 | } |
3213 | 3989 | ||
3214 | return 0; | 3990 | return 0; |
3215 | } | 3991 | } |
3216 | 3992 | ||
3217 | 3993 | ||
3218 | static IMG_INT | 3994 | static IMG_INT |
3219 | PVRSRVModifyPendingSyncOpsBW(IMG_UINT32 ui32BridgeID, | 3995 | PVRSRVModifyPendingSyncOpsBW(IMG_UINT32 ui32BridgeID, |
3220 | PVRSRV_BRIDGE_IN_MODIFY_PENDING_SYNC_OPS *psModifySyncOpsIN, | 3996 | PVRSRV_BRIDGE_IN_MODIFY_PENDING_SYNC_OPS *psModifySyncOpsIN, |
3221 | PVRSRV_BRIDGE_OUT_MODIFY_PENDING_SYNC_OPS *psModifySyncOpsOUT, | 3997 | PVRSRV_BRIDGE_OUT_MODIFY_PENDING_SYNC_OPS *psModifySyncOpsOUT, |
3222 | PVRSRV_PER_PROCESS_DATA *psPerProc) | 3998 | PVRSRV_PER_PROCESS_DATA *psPerProc) |
3223 | { | 3999 | { |
3224 | PVRSRV_KERNEL_SYNC_INFO *psKernelSyncInfo; | 4000 | PVRSRV_KERNEL_SYNC_INFO *psKernelSyncInfo; |
3225 | MODIFY_SYNC_OP_INFO *psModSyncOpInfo; | 4001 | MODIFY_SYNC_OP_INFO *psModSyncOpInfo; |
3226 | 4002 | ||
3227 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_MODIFY_PENDING_SYNC_OPS); | 4003 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_MODIFY_PENDING_SYNC_OPS); |
3228 | 4004 | ||
3229 | psModifySyncOpsOUT->eError = PVRSRVLookupHandle(psPerProc->psHandleBase, | 4005 | psModifySyncOpsOUT->eError = PVRSRVLookupHandle(psPerProc->psHandleBase, |
3230 | (IMG_VOID**)&psModSyncOpInfo, | 4006 | (IMG_VOID**)&psModSyncOpInfo, |
3231 | psModifySyncOpsIN->hKernelSyncInfoModObj, | 4007 | psModifySyncOpsIN->hKernelSyncInfoModObj, |
3232 | PVRSRV_HANDLE_TYPE_SYNC_INFO_MOD_OBJ); | 4008 | PVRSRV_HANDLE_TYPE_SYNC_INFO_MOD_OBJ); |
3233 | if (psModifySyncOpsOUT->eError != PVRSRV_OK) | 4009 | if (psModifySyncOpsOUT->eError != PVRSRV_OK) |
3234 | { | 4010 | { |
3235 | PVR_DPF((PVR_DBG_ERROR, "PVRSRVModifyPendingSyncOpsBW: PVRSRVLookupHandle failed")); | 4011 | PVR_DPF((PVR_DBG_ERROR, "PVRSRVModifyPendingSyncOpsBW: PVRSRVLookupHandle failed")); |
3236 | return 0; | 4012 | return 0; |
3237 | } | 4013 | } |
3238 | 4014 | ||
3239 | psModifySyncOpsOUT->eError = PVRSRVLookupHandle(psPerProc->psHandleBase, | 4015 | psModifySyncOpsOUT->eError = PVRSRVLookupHandle(psPerProc->psHandleBase, |
3240 | (IMG_VOID**)&psKernelSyncInfo, | 4016 | (IMG_VOID**)&psKernelSyncInfo, |
3241 | psModifySyncOpsIN->hKernelSyncInfo, | 4017 | psModifySyncOpsIN->hKernelSyncInfo, |
3242 | PVRSRV_HANDLE_TYPE_SYNC_INFO); | 4018 | PVRSRV_HANDLE_TYPE_SYNC_INFO); |
3243 | if (psModifySyncOpsOUT->eError != PVRSRV_OK) | 4019 | if (psModifySyncOpsOUT->eError != PVRSRV_OK) |
3244 | { | 4020 | { |
3245 | PVR_DPF((PVR_DBG_ERROR, "PVRSRVModifyPendingSyncOpsBW: PVRSRVLookupHandle failed")); | 4021 | PVR_DPF((PVR_DBG_ERROR, "PVRSRVModifyPendingSyncOpsBW: PVRSRVLookupHandle failed")); |
3246 | return 0; | 4022 | return 0; |
3247 | } | 4023 | } |
3248 | 4024 | ||
3249 | if(psModSyncOpInfo->psKernelSyncInfo) | 4025 | if(psModSyncOpInfo->psKernelSyncInfo) |
3250 | { | 4026 | { |
3251 | 4027 | ||
3252 | psModifySyncOpsOUT->eError = PVRSRV_ERROR_RETRY; | 4028 | psModifySyncOpsOUT->eError = PVRSRV_ERROR_RETRY; |
3253 | PVR_DPF((PVR_DBG_VERBOSE, "PVRSRVModifyPendingSyncOpsBW: SyncInfo Modification object is not empty")); | 4029 | PVR_DPF((PVR_DBG_VERBOSE, "PVRSRVModifyPendingSyncOpsBW: SyncInfo Modification object is not empty")); |
3254 | return 0; | 4030 | return 0; |
3255 | } | 4031 | } |
4032 | |||
4033 | |||
4034 | psModSyncOpInfo->psKernelSyncInfo = psKernelSyncInfo; | ||
4035 | psModSyncOpInfo->ui32ModifyFlags = psModifySyncOpsIN->ui32ModifyFlags; | ||
4036 | psModSyncOpInfo->ui32ReadOpsPendingSnapShot = psKernelSyncInfo->psSyncData->ui32ReadOpsPending; | ||
4037 | psModSyncOpInfo->ui32WriteOpsPendingSnapShot = psKernelSyncInfo->psSyncData->ui32WriteOpsPending; | ||
4038 | |||
4039 | |||
4040 | |||
4041 | psModifySyncOpsOUT->ui32ReadOpsPending = psKernelSyncInfo->psSyncData->ui32ReadOpsPending; | ||
4042 | psModifySyncOpsOUT->ui32WriteOpsPending = psKernelSyncInfo->psSyncData->ui32WriteOpsPending; | ||
4043 | |||
4044 | if(psModifySyncOpsIN->ui32ModifyFlags & PVRSRV_MODIFYSYNCOPS_FLAGS_WO_INC) | ||
4045 | { | ||
4046 | psKernelSyncInfo->psSyncData->ui32WriteOpsPending++; | ||
4047 | } | ||
4048 | |||
4049 | if(psModifySyncOpsIN->ui32ModifyFlags & PVRSRV_MODIFYSYNCOPS_FLAGS_RO_INC) | ||
4050 | { | ||
4051 | psKernelSyncInfo->psSyncData->ui32ReadOpsPending++; | ||
4052 | } | ||
4053 | |||
4054 | |||
4055 | psModifySyncOpsOUT->eError = ResManDissociateRes(psModSyncOpInfo->hResItem, | ||
4056 | psPerProc->hResManContext); | ||
4057 | |||
4058 | if (psModifySyncOpsOUT->eError != PVRSRV_OK) | ||
4059 | { | ||
4060 | PVR_DPF((PVR_DBG_ERROR, "PVRSRVModifyPendingSyncOpsBW: PVRSRVLookupHandle failed")); | ||
4061 | return 0; | ||
4062 | } | ||
4063 | |||
4064 | return 0; | ||
4065 | } | ||
3256 | 4066 | ||
3257 | 4067 | ||
3258 | psModSyncOpInfo->psKernelSyncInfo = psKernelSyncInfo; | 4068 | static IMG_INT |
3259 | psModSyncOpInfo->ui32ModifyFlags = psModifySyncOpsIN->ui32ModifyFlags; | 4069 | PVRSRVModifyCompleteSyncOpsBW(IMG_UINT32 ui32BridgeID, |
3260 | psModSyncOpInfo->ui32ReadOpsPendingSnapShot = psKernelSyncInfo->psSyncData->ui32ReadOpsPending; | 4070 | PVRSRV_BRIDGE_IN_MODIFY_COMPLETE_SYNC_OPS *psModifySyncOpsIN, |
3261 | psModSyncOpInfo->ui32WriteOpsPendingSnapShot = psKernelSyncInfo->psSyncData->ui32WriteOpsPending; | 4071 | PVRSRV_BRIDGE_RETURN *psModifySyncOpsOUT, |
4072 | PVRSRV_PER_PROCESS_DATA *psPerProc) | ||
4073 | { | ||
4074 | MODIFY_SYNC_OP_INFO *psModSyncOpInfo; | ||
3262 | 4075 | ||
4076 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_MODIFY_COMPLETE_SYNC_OPS); | ||
3263 | 4077 | ||
4078 | psModifySyncOpsOUT->eError = PVRSRVLookupHandle(psPerProc->psHandleBase, | ||
4079 | (IMG_VOID**)&psModSyncOpInfo, | ||
4080 | psModifySyncOpsIN->hKernelSyncInfoModObj, | ||
4081 | PVRSRV_HANDLE_TYPE_SYNC_INFO_MOD_OBJ); | ||
4082 | if (psModifySyncOpsOUT->eError != PVRSRV_OK) | ||
4083 | { | ||
4084 | PVR_DPF((PVR_DBG_ERROR, "PVRSRVModifyCompleteSyncOpsBW: PVRSRVLookupHandle failed")); | ||
4085 | return 0; | ||
4086 | } | ||
3264 | 4087 | ||
3265 | psModifySyncOpsOUT->ui32ReadOpsPending = psKernelSyncInfo->psSyncData->ui32ReadOpsPending; | 4088 | if(psModSyncOpInfo->psKernelSyncInfo == IMG_NULL) |
3266 | psModifySyncOpsOUT->ui32WriteOpsPending = psKernelSyncInfo->psSyncData->ui32WriteOpsPending; | 4089 | { |
4090 | |||
4091 | psModifySyncOpsOUT->eError = PVRSRV_ERROR_INVALID_PARAMS; | ||
4092 | return 0; | ||
4093 | } | ||
3267 | 4094 | ||
3268 | if(psModifySyncOpsIN->ui32ModifyFlags & PVRSRV_MODIFYSYNCOPS_FLAGS_WO_INC) | 4095 | psModifySyncOpsOUT->eError = DoModifyCompleteSyncOps(psModSyncOpInfo); |
3269 | { | ||
3270 | psKernelSyncInfo->psSyncData->ui32WriteOpsPending++; | ||
3271 | } | ||
3272 | 4096 | ||
3273 | if(psModifySyncOpsIN->ui32ModifyFlags & PVRSRV_MODIFYSYNCOPS_FLAGS_RO_INC) | 4097 | if (psModifySyncOpsOUT->eError != PVRSRV_OK) |
3274 | { | 4098 | { |
3275 | psKernelSyncInfo->psSyncData->ui32ReadOpsPending++; | 4099 | PVR_DPF((PVR_DBG_ERROR, "PVRSRVModifyCompleteSyncOpsBW: DoModifyCompleteSyncOps failed")); |
3276 | } | 4100 | return 0; |
4101 | } | ||
3277 | 4102 | ||
4103 | psModSyncOpInfo->psKernelSyncInfo = IMG_NULL; | ||
3278 | 4104 | ||
3279 | psModifySyncOpsOUT->eError = ResManDissociateRes(psModSyncOpInfo->hResItem, | 4105 | |
3280 | psPerProc->hResManContext); | 4106 | PVRSRVScheduleDeviceCallbacks(); |
3281 | 4107 | ||
3282 | if (psModifySyncOpsOUT->eError != PVRSRV_OK) | 4108 | return 0; |
3283 | { | ||
3284 | PVR_DPF((PVR_DBG_ERROR, "PVRSRVModifyPendingSyncOpsBW: PVRSRVLookupHandle failed")); | ||
3285 | return 0; | ||
3286 | } | ||
3287 | |||
3288 | return 0; | ||
3289 | } | 4109 | } |
3290 | 4110 | ||
3291 | 4111 | ||
3292 | static IMG_INT | 4112 | static IMG_INT |
3293 | PVRSRVModifyCompleteSyncOpsBW(IMG_UINT32 ui32BridgeID, | 4113 | PVRSRVSyncOpsTakeTokenBW(IMG_UINT32 ui32BridgeID, |
3294 | PVRSRV_BRIDGE_IN_MODIFY_COMPLETE_SYNC_OPS *psModifySyncOpsIN, | 4114 | PVRSRV_BRIDGE_IN_SYNC_OPS_TAKE_TOKEN *psSyncOpsTakeTokenIN, |
3295 | PVRSRV_BRIDGE_RETURN *psModifySyncOpsOUT, | 4115 | PVRSRV_BRIDGE_OUT_SYNC_OPS_TAKE_TOKEN *psSyncOpsTakeTokenOUT, |
3296 | PVRSRV_PER_PROCESS_DATA *psPerProc) | 4116 | PVRSRV_PER_PROCESS_DATA *psPerProc) |
3297 | { | 4117 | { |
3298 | MODIFY_SYNC_OP_INFO *psModSyncOpInfo; | 4118 | PVRSRV_KERNEL_SYNC_INFO *psKernelSyncInfo; |
3299 | 4119 | ||
3300 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_MODIFY_COMPLETE_SYNC_OPS); | 4120 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_SYNC_OPS_TAKE_TOKEN); |
3301 | 4121 | ||
3302 | psModifySyncOpsOUT->eError = PVRSRVLookupHandle(psPerProc->psHandleBase, | 4122 | psSyncOpsTakeTokenOUT->eError = PVRSRVLookupHandle(psPerProc->psHandleBase, |
3303 | (IMG_VOID**)&psModSyncOpInfo, | 4123 | (IMG_VOID**)&psKernelSyncInfo, |
3304 | psModifySyncOpsIN->hKernelSyncInfoModObj, | 4124 | psSyncOpsTakeTokenIN->hKernelSyncInfo, |
3305 | PVRSRV_HANDLE_TYPE_SYNC_INFO_MOD_OBJ); | 4125 | PVRSRV_HANDLE_TYPE_SYNC_INFO); |
3306 | if (psModifySyncOpsOUT->eError != PVRSRV_OK) | 4126 | if (psSyncOpsTakeTokenOUT->eError != PVRSRV_OK) |
3307 | { | 4127 | { |
3308 | PVR_DPF((PVR_DBG_ERROR, "PVRSRVModifyCompleteSyncOpsBW: PVRSRVLookupHandle failed")); | 4128 | PVR_DPF((PVR_DBG_ERROR, "PVRSRVSyncOpsTakeTokenBW: PVRSRVLookupHandle failed")); |
3309 | return 0; | 4129 | return 0; |
3310 | } | 4130 | } |
3311 | 4131 | ||
3312 | if(psModSyncOpInfo->psKernelSyncInfo == IMG_NULL) | 4132 | |
3313 | { | ||
3314 | 4133 | ||
3315 | psModifySyncOpsOUT->eError = PVRSRV_ERROR_INVALID_PARAMS; | 4134 | psSyncOpsTakeTokenOUT->ui32ReadOpsPending = psKernelSyncInfo->psSyncData->ui32ReadOpsPending; |
3316 | return 0; | 4135 | psSyncOpsTakeTokenOUT->ui32WriteOpsPending = psKernelSyncInfo->psSyncData->ui32WriteOpsPending; |
3317 | } | ||
3318 | |||
3319 | psModifySyncOpsOUT->eError = DoModifyCompleteSyncOps(psModSyncOpInfo); | ||
3320 | |||
3321 | if (psModifySyncOpsOUT->eError != PVRSRV_OK) | ||
3322 | { | ||
3323 | PVR_DPF((PVR_DBG_ERROR, "PVRSRVModifyCompleteSyncOpsBW: DoModifyCompleteSyncOps failed")); | ||
3324 | return 0; | ||
3325 | } | ||
3326 | |||
3327 | psModSyncOpInfo->psKernelSyncInfo = IMG_NULL; | ||
3328 | 4136 | ||
4137 | return 0; | ||
4138 | } | ||
3329 | 4139 | ||
3330 | PVRSRVScheduleDeviceCallbacks(); | ||
3331 | 4140 | ||
3332 | return 0; | 4141 | static IMG_INT |
4142 | PVRSRVSyncOpsFlushToTokenBW(IMG_UINT32 ui32BridgeID, | ||
4143 | PVRSRV_BRIDGE_IN_SYNC_OPS_FLUSH_TO_TOKEN *psSyncOpsFlushToTokenIN, | ||
4144 | PVRSRV_BRIDGE_RETURN *psSyncOpsFlushToTokenOUT, | ||
4145 | PVRSRV_PER_PROCESS_DATA *psPerProc) | ||
4146 | { | ||
4147 | PVRSRV_KERNEL_SYNC_INFO *psKernelSyncInfo; | ||
4148 | IMG_UINT32 ui32ReadOpsPendingSnapshot; | ||
4149 | IMG_UINT32 ui32WriteOpsPendingSnapshot; | ||
4150 | |||
4151 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_SYNC_OPS_FLUSH_TO_TOKEN); | ||
4152 | |||
4153 | psSyncOpsFlushToTokenOUT->eError = PVRSRVLookupHandle(psPerProc->psHandleBase, | ||
4154 | (IMG_VOID**)&psKernelSyncInfo, | ||
4155 | psSyncOpsFlushToTokenIN->hKernelSyncInfo, | ||
4156 | PVRSRV_HANDLE_TYPE_SYNC_INFO); | ||
4157 | if (psSyncOpsFlushToTokenOUT->eError != PVRSRV_OK) | ||
4158 | { | ||
4159 | PVR_DPF((PVR_DBG_ERROR, "PVRSRVSyncOpsFlushToTokenBW: PVRSRVLookupHandle failed")); | ||
4160 | return 0; | ||
4161 | } | ||
4162 | |||
4163 | ui32ReadOpsPendingSnapshot = psSyncOpsFlushToTokenIN->ui32ReadOpsPendingSnapshot; | ||
4164 | ui32WriteOpsPendingSnapshot = psSyncOpsFlushToTokenIN->ui32WriteOpsPendingSnapshot; | ||
4165 | |||
4166 | psSyncOpsFlushToTokenOUT->eError = DoQuerySyncOpsSatisfied(psKernelSyncInfo, | ||
4167 | ui32ReadOpsPendingSnapshot, | ||
4168 | ui32WriteOpsPendingSnapshot); | ||
4169 | |||
4170 | if (psSyncOpsFlushToTokenOUT->eError != PVRSRV_OK && psSyncOpsFlushToTokenOUT->eError != PVRSRV_ERROR_RETRY) | ||
4171 | { | ||
4172 | PVR_DPF((PVR_DBG_ERROR, "PVRSRVSyncOpsFlushToTokenBW: DoQuerySyncOpsSatisfied failed")); | ||
4173 | return 0; | ||
4174 | } | ||
4175 | |||
4176 | return 0; | ||
3333 | } | 4177 | } |
3334 | 4178 | ||
3335 | 4179 | ||
3336 | static IMG_INT | 4180 | static IMG_INT |
3337 | PVRSRVSyncOpsFlushToModObjBW(IMG_UINT32 ui32BridgeID, | 4181 | PVRSRVSyncOpsFlushToModObjBW(IMG_UINT32 ui32BridgeID, |
3338 | PVRSRV_BRIDGE_IN_SYNC_OPS_FLUSH_TO_MOD_OBJ *psSyncOpsFlushToModObjIN, | 4182 | PVRSRV_BRIDGE_IN_SYNC_OPS_FLUSH_TO_MOD_OBJ *psSyncOpsFlushToModObjIN, |
3339 | PVRSRV_BRIDGE_RETURN *psSyncOpsFlushToModObjOUT, | 4183 | PVRSRV_BRIDGE_RETURN *psSyncOpsFlushToModObjOUT, |
3340 | PVRSRV_PER_PROCESS_DATA *psPerProc) | 4184 | PVRSRV_PER_PROCESS_DATA *psPerProc) |
3341 | { | 4185 | { |
3342 | MODIFY_SYNC_OP_INFO *psModSyncOpInfo; | 4186 | MODIFY_SYNC_OP_INFO *psModSyncOpInfo; |
3343 | 4187 | ||
3344 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_SYNC_OPS_FLUSH_TO_MOD_OBJ); | 4188 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_SYNC_OPS_FLUSH_TO_MOD_OBJ); |
3345 | 4189 | ||
3346 | psSyncOpsFlushToModObjOUT->eError = PVRSRVLookupHandle(psPerProc->psHandleBase, | 4190 | psSyncOpsFlushToModObjOUT->eError = PVRSRVLookupHandle(psPerProc->psHandleBase, |
3347 | (IMG_VOID**)&psModSyncOpInfo, | 4191 | (IMG_VOID**)&psModSyncOpInfo, |
3348 | psSyncOpsFlushToModObjIN->hKernelSyncInfoModObj, | 4192 | psSyncOpsFlushToModObjIN->hKernelSyncInfoModObj, |
3349 | PVRSRV_HANDLE_TYPE_SYNC_INFO_MOD_OBJ); | 4193 | PVRSRV_HANDLE_TYPE_SYNC_INFO_MOD_OBJ); |
3350 | if (psSyncOpsFlushToModObjOUT->eError != PVRSRV_OK) | 4194 | if (psSyncOpsFlushToModObjOUT->eError != PVRSRV_OK) |
3351 | { | 4195 | { |
3352 | PVR_DPF((PVR_DBG_ERROR, "PVRSRVSyncOpsFlushToModObjBW: PVRSRVLookupHandle failed")); | 4196 | PVR_DPF((PVR_DBG_ERROR, "PVRSRVSyncOpsFlushToModObjBW: PVRSRVLookupHandle failed")); |
3353 | return 0; | 4197 | return 0; |
3354 | } | 4198 | } |
3355 | 4199 | ||
3356 | if(psModSyncOpInfo->psKernelSyncInfo == IMG_NULL) | 4200 | if(psModSyncOpInfo->psKernelSyncInfo == IMG_NULL) |
3357 | { | 4201 | { |
3358 | 4202 | ||
3359 | psSyncOpsFlushToModObjOUT->eError = PVRSRV_ERROR_INVALID_PARAMS; | 4203 | psSyncOpsFlushToModObjOUT->eError = PVRSRV_ERROR_INVALID_PARAMS; |
3360 | return 0; | 4204 | return 0; |
3361 | } | 4205 | } |
3362 | 4206 | ||
3363 | psSyncOpsFlushToModObjOUT->eError = DoQuerySyncOpsSatisfied(psModSyncOpInfo); | 4207 | psSyncOpsFlushToModObjOUT->eError = DoQuerySyncOpsSatisfied(psModSyncOpInfo->psKernelSyncInfo, |
3364 | 4208 | psModSyncOpInfo->ui32ReadOpsPendingSnapShot, | |
3365 | if (psSyncOpsFlushToModObjOUT->eError != PVRSRV_OK && psSyncOpsFlushToModObjOUT->eError != PVRSRV_ERROR_RETRY) | 4209 | psModSyncOpInfo->ui32WriteOpsPendingSnapShot); |
3366 | { | 4210 | |
3367 | PVR_DPF((PVR_DBG_ERROR, "PVRSRVSyncOpsFlushToModObjBW: DoQuerySyncOpsSatisfied failed")); | 4211 | if (psSyncOpsFlushToModObjOUT->eError != PVRSRV_OK && psSyncOpsFlushToModObjOUT->eError != PVRSRV_ERROR_RETRY) |
3368 | return 0; | 4212 | { |
3369 | } | 4213 | PVR_DPF((PVR_DBG_ERROR, "PVRSRVSyncOpsFlushToModObjBW: DoQuerySyncOpsSatisfied failed")); |
3370 | 4214 | return 0; | |
3371 | return 0; | 4215 | } |
4216 | |||
4217 | return 0; | ||
3372 | } | 4218 | } |
3373 | 4219 | ||
3374 | 4220 | ||
3375 | static IMG_INT | 4221 | static IMG_INT |
3376 | PVRSRVSyncOpsFlushToDeltaBW(IMG_UINT32 ui32BridgeID, | 4222 | PVRSRVSyncOpsFlushToDeltaBW(IMG_UINT32 ui32BridgeID, |
3377 | PVRSRV_BRIDGE_IN_SYNC_OPS_FLUSH_TO_DELTA *psSyncOpsFlushToDeltaIN, | 4223 | PVRSRV_BRIDGE_IN_SYNC_OPS_FLUSH_TO_DELTA *psSyncOpsFlushToDeltaIN, |
3378 | PVRSRV_BRIDGE_RETURN *psSyncOpsFlushToDeltaOUT, | 4224 | PVRSRV_BRIDGE_RETURN *psSyncOpsFlushToDeltaOUT, |
3379 | PVRSRV_PER_PROCESS_DATA *psPerProc) | 4225 | PVRSRV_PER_PROCESS_DATA *psPerProc) |
3380 | { | 4226 | { |
3381 | PVRSRV_KERNEL_SYNC_INFO *psSyncInfo; | 4227 | PVRSRV_KERNEL_SYNC_INFO *psSyncInfo; |
3382 | IMG_UINT32 ui32DeltaRead; | 4228 | IMG_UINT32 ui32DeltaRead; |
3383 | IMG_UINT32 ui32DeltaWrite; | 4229 | IMG_UINT32 ui32DeltaWrite; |
3384 | 4230 | ||
3385 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_SYNC_OPS_FLUSH_TO_DELTA); | 4231 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_SYNC_OPS_FLUSH_TO_DELTA); |
3386 | 4232 | ||
3387 | psSyncOpsFlushToDeltaOUT->eError = PVRSRVLookupHandle(psPerProc->psHandleBase, | 4233 | psSyncOpsFlushToDeltaOUT->eError = PVRSRVLookupHandle(psPerProc->psHandleBase, |
3388 | (IMG_VOID**)&psSyncInfo, | 4234 | (IMG_VOID**)&psSyncInfo, |
3389 | psSyncOpsFlushToDeltaIN->hKernelSyncInfo, | 4235 | psSyncOpsFlushToDeltaIN->hKernelSyncInfo, |
3390 | PVRSRV_HANDLE_TYPE_SYNC_INFO); | 4236 | PVRSRV_HANDLE_TYPE_SYNC_INFO); |
3391 | if (psSyncOpsFlushToDeltaOUT->eError != PVRSRV_OK) | 4237 | if (psSyncOpsFlushToDeltaOUT->eError != PVRSRV_OK) |
3392 | { | 4238 | { |
3393 | PVR_DPF((PVR_DBG_ERROR, "PVRSRVSyncOpsFlushToDeltaBW: PVRSRVLookupHandle failed")); | 4239 | PVR_DPF((PVR_DBG_ERROR, "PVRSRVSyncOpsFlushToDeltaBW: PVRSRVLookupHandle failed")); |
3394 | return 0; | 4240 | return 0; |
3395 | } | 4241 | } |
3396 | 4242 | ||
3397 | ui32DeltaRead = psSyncInfo->psSyncData->ui32ReadOpsPending - psSyncInfo->psSyncData->ui32ReadOpsComplete; | 4243 | |
3398 | ui32DeltaWrite = psSyncInfo->psSyncData->ui32WriteOpsPending - psSyncInfo->psSyncData->ui32WriteOpsComplete; | 4244 | ui32DeltaRead = psSyncInfo->psSyncData->ui32ReadOpsPending - psSyncInfo->psSyncData->ui32ReadOpsComplete; |
4245 | ui32DeltaWrite = psSyncInfo->psSyncData->ui32WriteOpsPending - psSyncInfo->psSyncData->ui32WriteOpsComplete; | ||
4246 | |||
4247 | if (ui32DeltaRead <= psSyncOpsFlushToDeltaIN->ui32Delta && ui32DeltaWrite <= psSyncOpsFlushToDeltaIN->ui32Delta) | ||
4248 | { | ||
4249 | #if defined(PDUMP) && !defined(SUPPORT_VGX) | ||
4250 | |||
4251 | PDumpComment("Poll for read ops complete to delta (%u)", | ||
4252 | psSyncOpsFlushToDeltaIN->ui32Delta); | ||
4253 | psSyncOpsFlushToDeltaOUT->eError = | ||
4254 | PDumpMemPolKM(psSyncInfo->psSyncDataMemInfoKM, | ||
4255 | offsetof(PVRSRV_SYNC_DATA, ui32ReadOpsComplete), | ||
4256 | psSyncInfo->psSyncData->ui32LastReadOpDumpVal, | ||
4257 | 0xFFFFFFFF, | ||
4258 | PDUMP_POLL_OPERATOR_GREATEREQUAL, | ||
4259 | 0, | ||
4260 | MAKEUNIQUETAG(psSyncInfo->psSyncDataMemInfoKM)); | ||
4261 | |||
4262 | |||
4263 | PDumpComment("Poll for write ops complete to delta (%u)", | ||
4264 | psSyncOpsFlushToDeltaIN->ui32Delta); | ||
4265 | psSyncOpsFlushToDeltaOUT->eError = | ||
4266 | PDumpMemPolKM(psSyncInfo->psSyncDataMemInfoKM, | ||
4267 | offsetof(PVRSRV_SYNC_DATA, ui32WriteOpsComplete), | ||
4268 | psSyncInfo->psSyncData->ui32LastOpDumpVal, | ||
4269 | 0xFFFFFFFF, | ||
4270 | PDUMP_POLL_OPERATOR_GREATEREQUAL, | ||
4271 | 0, | ||
4272 | MAKEUNIQUETAG(psSyncInfo->psSyncDataMemInfoKM)); | ||
4273 | #endif | ||
3399 | 4274 | ||
3400 | if (ui32DeltaRead <= psSyncOpsFlushToDeltaIN->ui32Delta && ui32DeltaWrite <= psSyncOpsFlushToDeltaIN->ui32Delta) | 4275 | psSyncOpsFlushToDeltaOUT->eError = PVRSRV_OK; |
3401 | { | 4276 | } |
3402 | #if defined(PDUMP) | 4277 | else |
3403 | IMG_UINT32 ui32MinimumReadOpsComplete; | 4278 | { |
3404 | 4279 | psSyncOpsFlushToDeltaOUT->eError = PVRSRV_ERROR_RETRY; | |
3405 | ui32MinimumReadOpsComplete = psSyncInfo->psSyncData->ui32ReadOpsPending; | 4280 | } |
3406 | if (ui32MinimumReadOpsComplete < psSyncOpsFlushToDeltaIN->ui32Delta) | ||
3407 | { | ||
3408 | ui32MinimumReadOpsComplete = 0; | ||
3409 | } | ||
3410 | else | ||
3411 | { | ||
3412 | ui32MinimumReadOpsComplete = ui32MinimumReadOpsComplete - psSyncOpsFlushToDeltaIN->ui32Delta; | ||
3413 | } | ||
3414 | |||
3415 | |||
3416 | PDumpComment("Poll for read ops complete to delta (%u)", | ||
3417 | psSyncOpsFlushToDeltaIN->ui32Delta); | ||
3418 | psSyncOpsFlushToDeltaOUT->eError = | ||
3419 | PDumpMemPolKM(psSyncInfo->psSyncDataMemInfoKM, | ||
3420 | offsetof(PVRSRV_SYNC_DATA, ui32ReadOpsComplete), | ||
3421 | psSyncInfo->psSyncData->ui32LastReadOpDumpVal, | ||
3422 | 0xFFFFFFFF, | ||
3423 | PDUMP_POLL_OPERATOR_GREATEREQUAL, | ||
3424 | 0, | ||
3425 | MAKEUNIQUETAG(psSyncInfo->psSyncDataMemInfoKM)); | ||
3426 | |||
3427 | |||
3428 | PDumpComment("Poll for write ops complete to delta (%u)", | ||
3429 | psSyncOpsFlushToDeltaIN->ui32Delta); | ||
3430 | psSyncOpsFlushToDeltaOUT->eError = | ||
3431 | PDumpMemPolKM(psSyncInfo->psSyncDataMemInfoKM, | ||
3432 | offsetof(PVRSRV_SYNC_DATA, ui32WriteOpsComplete), | ||
3433 | psSyncInfo->psSyncData->ui32LastOpDumpVal, | ||
3434 | 0xFFFFFFFF, | ||
3435 | PDUMP_POLL_OPERATOR_GREATEREQUAL, | ||
3436 | 0, | ||
3437 | MAKEUNIQUETAG(psSyncInfo->psSyncDataMemInfoKM)); | ||
3438 | #endif | ||
3439 | |||
3440 | psSyncOpsFlushToDeltaOUT->eError = PVRSRV_OK; | ||
3441 | } | ||
3442 | else | ||
3443 | { | ||
3444 | psSyncOpsFlushToDeltaOUT->eError = PVRSRV_ERROR_RETRY; | ||
3445 | } | ||
3446 | 4281 | ||
3447 | return 0; | 4282 | return 0; |
3448 | } | 4283 | } |
3449 | 4284 | ||
3450 | 4285 | ||
3451 | static PVRSRV_ERROR | 4286 | static PVRSRV_ERROR |
3452 | FreeSyncInfoCallback(IMG_PVOID pvParam, | 4287 | FreeSyncInfoCallback(IMG_PVOID pvParam, |
3453 | IMG_UINT32 ui32Param) | 4288 | IMG_UINT32 ui32Param) |
3454 | { | 4289 | { |
3455 | PVRSRV_KERNEL_SYNC_INFO *psSyncInfo; | 4290 | PVRSRV_KERNEL_SYNC_INFO *psSyncInfo; |
3456 | PVRSRV_ERROR eError; | 4291 | PVRSRV_ERROR eError; |
3457 | 4292 | ||
3458 | PVR_UNREFERENCED_PARAMETER(ui32Param); | 4293 | PVR_UNREFERENCED_PARAMETER(ui32Param); |
3459 | 4294 | ||
3460 | psSyncInfo = (PVRSRV_KERNEL_SYNC_INFO *)pvParam; | 4295 | psSyncInfo = (PVRSRV_KERNEL_SYNC_INFO *)pvParam; |
3461 | 4296 | ||
3462 | eError = PVRSRVFreeSyncInfoKM(psSyncInfo); | 4297 | eError = PVRSRVFreeSyncInfoKM(psSyncInfo); |
3463 | if (eError != PVRSRV_OK) | 4298 | if (eError != PVRSRV_OK) |
3464 | { | 4299 | { |
3465 | return eError; | 4300 | return eError; |
3466 | } | 4301 | } |
3467 | 4302 | ||
3468 | return PVRSRV_OK; | 4303 | return PVRSRV_OK; |
3469 | } | 4304 | } |
3470 | 4305 | ||
3471 | 4306 | ||
3472 | static IMG_INT | 4307 | static IMG_INT |
3473 | PVRSRVAllocSyncInfoBW(IMG_UINT32 ui32BridgeID, | 4308 | PVRSRVAllocSyncInfoBW(IMG_UINT32 ui32BridgeID, |
3474 | PVRSRV_BRIDGE_IN_ALLOC_SYNC_INFO *psAllocSyncInfoIN, | 4309 | PVRSRV_BRIDGE_IN_ALLOC_SYNC_INFO *psAllocSyncInfoIN, |
3475 | PVRSRV_BRIDGE_OUT_ALLOC_SYNC_INFO *psAllocSyncInfoOUT, | 4310 | PVRSRV_BRIDGE_OUT_ALLOC_SYNC_INFO *psAllocSyncInfoOUT, |
3476 | PVRSRV_PER_PROCESS_DATA *psPerProc) | 4311 | PVRSRV_PER_PROCESS_DATA *psPerProc) |
3477 | { | 4312 | { |
3478 | PVRSRV_KERNEL_SYNC_INFO *psSyncInfo; | 4313 | PVRSRV_KERNEL_SYNC_INFO *psSyncInfo; |
3479 | PVRSRV_ERROR eError; | 4314 | PVRSRV_ERROR eError; |
3480 | PVRSRV_DEVICE_NODE *psDeviceNode; | 4315 | PVRSRV_DEVICE_NODE *psDeviceNode; |
3481 | IMG_HANDLE hDevMemContext; | 4316 | IMG_HANDLE hDevMemContext; |
3482 | 4317 | ||
3483 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_ALLOC_SYNC_INFO); | 4318 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_ALLOC_SYNC_INFO); |
3484 | 4319 | ||
3485 | NEW_HANDLE_BATCH_OR_ERROR(psAllocSyncInfoOUT->eError, psPerProc, 1) | 4320 | NEW_HANDLE_BATCH_OR_ERROR(psAllocSyncInfoOUT->eError, psPerProc, 1) |
3486 | 4321 | ||
3487 | eError = PVRSRVLookupHandle(psPerProc->psHandleBase, | 4322 | eError = PVRSRVLookupHandle(psPerProc->psHandleBase, |
3488 | (IMG_HANDLE *)&psDeviceNode, | 4323 | (IMG_HANDLE *)&psDeviceNode, |
3489 | psAllocSyncInfoIN->hDevCookie, | 4324 | psAllocSyncInfoIN->hDevCookie, |
3490 | PVRSRV_HANDLE_TYPE_DEV_NODE); | 4325 | PVRSRV_HANDLE_TYPE_DEV_NODE); |
3491 | if(eError != PVRSRV_OK) | 4326 | if(eError != PVRSRV_OK) |
3492 | { | 4327 | { |
3493 | goto allocsyncinfo_errorexit; | 4328 | goto allocsyncinfo_errorexit; |
3494 | } | 4329 | } |
3495 | 4330 | ||
3496 | hDevMemContext = psDeviceNode->sDevMemoryInfo.pBMKernelContext; | 4331 | hDevMemContext = psDeviceNode->sDevMemoryInfo.pBMKernelContext; |
3497 | 4332 | ||
3498 | eError = PVRSRVAllocSyncInfoKM(psDeviceNode, | 4333 | eError = PVRSRVAllocSyncInfoKM(psDeviceNode, |
3499 | hDevMemContext, | 4334 | hDevMemContext, |
3500 | &psSyncInfo); | 4335 | &psSyncInfo); |
3501 | 4336 | ||
3502 | if (eError != PVRSRV_OK) | 4337 | if (eError != PVRSRV_OK) |
3503 | { | 4338 | { |
3504 | goto allocsyncinfo_errorexit; | 4339 | goto allocsyncinfo_errorexit; |
3505 | } | 4340 | } |
3506 | 4341 | ||
3507 | eError = PVRSRVAllocHandle(psPerProc->psHandleBase, | 4342 | eError = PVRSRVAllocHandle(psPerProc->psHandleBase, |
3508 | &psAllocSyncInfoOUT->hKernelSyncInfo, | 4343 | &psAllocSyncInfoOUT->hKernelSyncInfo, |
3509 | psSyncInfo, | 4344 | psSyncInfo, |
3510 | PVRSRV_HANDLE_TYPE_SYNC_INFO, | 4345 | PVRSRV_HANDLE_TYPE_SYNC_INFO, |
3511 | PVRSRV_HANDLE_ALLOC_FLAG_PRIVATE); | 4346 | PVRSRV_HANDLE_ALLOC_FLAG_PRIVATE); |
3512 | 4347 | ||
3513 | if(eError != PVRSRV_OK) | 4348 | if(eError != PVRSRV_OK) |
3514 | { | 4349 | { |
3515 | goto allocsyncinfo_errorexit_freesyncinfo; | 4350 | goto allocsyncinfo_errorexit_freesyncinfo; |
3516 | } | 4351 | } |
3517 | 4352 | ||
3518 | psSyncInfo->hResItem = ResManRegisterRes(psPerProc->hResManContext, | 4353 | psSyncInfo->hResItem = ResManRegisterRes(psPerProc->hResManContext, |
3519 | RESMAN_TYPE_SYNC_INFO, | 4354 | RESMAN_TYPE_SYNC_INFO, |
3520 | psSyncInfo, | 4355 | psSyncInfo, |
3521 | 0, | 4356 | 0, |
3522 | FreeSyncInfoCallback); | 4357 | FreeSyncInfoCallback); |
3523 | 4358 | ||
3524 | 4359 | ||
3525 | goto allocsyncinfo_commit; | 4360 | goto allocsyncinfo_commit; |
3526 | 4361 | ||
3527 | 4362 | ||
3528 | allocsyncinfo_errorexit_freesyncinfo: | 4363 | allocsyncinfo_errorexit_freesyncinfo: |
3529 | PVRSRVFreeSyncInfoKM(psSyncInfo); | 4364 | PVRSRVFreeSyncInfoKM(psSyncInfo); |
3530 | 4365 | ||
3531 | allocsyncinfo_errorexit: | 4366 | allocsyncinfo_errorexit: |
3532 | 4367 | ||
3533 | 4368 | ||
3534 | allocsyncinfo_commit: | 4369 | allocsyncinfo_commit: |
3535 | psAllocSyncInfoOUT->eError = eError; | 4370 | psAllocSyncInfoOUT->eError = eError; |
3536 | COMMIT_HANDLE_BATCH_OR_ERROR(eError, psPerProc); | 4371 | COMMIT_HANDLE_BATCH_OR_ERROR(eError, psPerProc); |
3537 | 4372 | ||
3538 | return 0; | 4373 | return 0; |
3539 | } | 4374 | } |
3540 | 4375 | ||
3541 | 4376 | ||
3542 | static IMG_INT | 4377 | static IMG_INT |
3543 | PVRSRVFreeSyncInfoBW(IMG_UINT32 ui32BridgeID, | 4378 | PVRSRVFreeSyncInfoBW(IMG_UINT32 ui32BridgeID, |
3544 | PVRSRV_BRIDGE_IN_FREE_SYNC_INFO *psFreeSyncInfoIN, | 4379 | PVRSRV_BRIDGE_IN_FREE_SYNC_INFO *psFreeSyncInfoIN, |
3545 | PVRSRV_BRIDGE_RETURN *psFreeSyncInfoOUT, | 4380 | PVRSRV_BRIDGE_RETURN *psFreeSyncInfoOUT, |
3546 | PVRSRV_PER_PROCESS_DATA *psPerProc) | 4381 | PVRSRV_PER_PROCESS_DATA *psPerProc) |
3547 | { | 4382 | { |
3548 | PVRSRV_KERNEL_SYNC_INFO *psSyncInfo; | 4383 | PVRSRV_KERNEL_SYNC_INFO *psSyncInfo; |
3549 | PVRSRV_ERROR eError; | 4384 | PVRSRV_ERROR eError; |
3550 | 4385 | ||
3551 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_FREE_SYNC_INFO); | 4386 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_FREE_SYNC_INFO); |
3552 | 4387 | ||
3553 | eError = PVRSRVLookupHandle(psPerProc->psHandleBase, | 4388 | eError = PVRSRVLookupHandle(psPerProc->psHandleBase, |
3554 | (IMG_VOID**)&psSyncInfo, | 4389 | (IMG_VOID**)&psSyncInfo, |
3555 | psFreeSyncInfoIN->hKernelSyncInfo, | 4390 | psFreeSyncInfoIN->hKernelSyncInfo, |
3556 | PVRSRV_HANDLE_TYPE_SYNC_INFO); | 4391 | PVRSRV_HANDLE_TYPE_SYNC_INFO); |
3557 | if (eError != PVRSRV_OK) | 4392 | if (eError != PVRSRV_OK) |
3558 | { | 4393 | { |
3559 | PVR_DPF((PVR_DBG_ERROR, "PVRSRVFreeSyncInfoBW: PVRSRVLookupHandle failed")); | 4394 | PVR_DPF((PVR_DBG_ERROR, "PVRSRVFreeSyncInfoBW: PVRSRVLookupHandle failed")); |
3560 | psFreeSyncInfoOUT->eError = eError; | 4395 | psFreeSyncInfoOUT->eError = eError; |
3561 | return 0; | 4396 | return 0; |
3562 | } | 4397 | } |
3563 | 4398 | ||
3564 | eError = PVRSRVReleaseHandle(psPerProc->psHandleBase, | 4399 | eError = PVRSRVReleaseHandle(psPerProc->psHandleBase, |
3565 | psFreeSyncInfoIN->hKernelSyncInfo, | 4400 | psFreeSyncInfoIN->hKernelSyncInfo, |
3566 | PVRSRV_HANDLE_TYPE_SYNC_INFO); | 4401 | PVRSRV_HANDLE_TYPE_SYNC_INFO); |
3567 | 4402 | ||
3568 | if (eError != PVRSRV_OK) | 4403 | if (eError != PVRSRV_OK) |
3569 | { | 4404 | { |
3570 | PVR_DPF((PVR_DBG_ERROR, "PVRSRVFreeSyncInfoBW: PVRSRVReleaseHandle failed")); | 4405 | PVR_DPF((PVR_DBG_ERROR, "PVRSRVFreeSyncInfoBW: PVRSRVReleaseHandle failed")); |
3571 | psFreeSyncInfoOUT->eError = eError; | 4406 | psFreeSyncInfoOUT->eError = eError; |
3572 | return 0; | 4407 | return 0; |
3573 | } | 4408 | } |
3574 | 4409 | ||
3575 | eError = ResManFreeResByPtr(psSyncInfo->hResItem); | 4410 | eError = ResManFreeResByPtr(psSyncInfo->hResItem); |
3576 | if (eError != PVRSRV_OK) | 4411 | if (eError != PVRSRV_OK) |
3577 | { | 4412 | { |
3578 | PVR_DPF((PVR_DBG_ERROR, "PVRSRVFreeSyncInfoBW: ResManFreeResByPtr failed")); | 4413 | PVR_DPF((PVR_DBG_ERROR, "PVRSRVFreeSyncInfoBW: ResManFreeResByPtr failed")); |
3579 | psFreeSyncInfoOUT->eError = eError; | 4414 | psFreeSyncInfoOUT->eError = eError; |
3580 | return 0; | 4415 | return 0; |
3581 | } | 4416 | } |
3582 | 4417 | ||
3583 | return 0; | 4418 | return 0; |
3584 | } | 4419 | } |
3585 | 4420 | ||
3586 | 4421 | ||
3587 | PVRSRV_ERROR | 4422 | PVRSRV_ERROR |
3588 | CommonBridgeInit(IMG_VOID) | 4423 | CommonBridgeInit(IMG_VOID) |
3589 | { | 4424 | { |
3590 | IMG_UINT32 i; | 4425 | IMG_UINT32 i; |
3591 | 4426 | ||
3592 | SetDispatchTableEntry(PVRSRV_BRIDGE_ENUM_DEVICES, PVRSRVEnumerateDevicesBW); | 4427 | SetDispatchTableEntry(PVRSRV_BRIDGE_ENUM_DEVICES, PVRSRVEnumerateDevicesBW); |
3593 | SetDispatchTableEntry(PVRSRV_BRIDGE_ACQUIRE_DEVICEINFO, PVRSRVAcquireDeviceDataBW); | 4428 | SetDispatchTableEntry(PVRSRV_BRIDGE_ACQUIRE_DEVICEINFO, PVRSRVAcquireDeviceDataBW); |
3594 | SetDispatchTableEntry(PVRSRV_BRIDGE_RELEASE_DEVICEINFO, DummyBW); | 4429 | SetDispatchTableEntry(PVRSRV_BRIDGE_RELEASE_DEVICEINFO, DummyBW); |
3595 | SetDispatchTableEntry(PVRSRV_BRIDGE_CREATE_DEVMEMCONTEXT, PVRSRVCreateDeviceMemContextBW); | 4430 | SetDispatchTableEntry(PVRSRV_BRIDGE_CREATE_DEVMEMCONTEXT, PVRSRVCreateDeviceMemContextBW); |
3596 | SetDispatchTableEntry(PVRSRV_BRIDGE_DESTROY_DEVMEMCONTEXT, PVRSRVDestroyDeviceMemContextBW); | 4431 | SetDispatchTableEntry(PVRSRV_BRIDGE_DESTROY_DEVMEMCONTEXT, PVRSRVDestroyDeviceMemContextBW); |
3597 | SetDispatchTableEntry(PVRSRV_BRIDGE_GET_DEVMEM_HEAPINFO, PVRSRVGetDeviceMemHeapInfoBW); | 4432 | SetDispatchTableEntry(PVRSRV_BRIDGE_GET_DEVMEM_HEAPINFO, PVRSRVGetDeviceMemHeapInfoBW); |
3598 | SetDispatchTableEntry(PVRSRV_BRIDGE_ALLOC_DEVICEMEM, PVRSRVAllocDeviceMemBW); | 4433 | SetDispatchTableEntry(PVRSRV_BRIDGE_ALLOC_DEVICEMEM, PVRSRVAllocDeviceMemBW); |
3599 | SetDispatchTableEntry(PVRSRV_BRIDGE_FREE_DEVICEMEM, PVRSRVFreeDeviceMemBW); | 4434 | SetDispatchTableEntry(PVRSRV_BRIDGE_FREE_DEVICEMEM, PVRSRVFreeDeviceMemBW); |
3600 | SetDispatchTableEntry(PVRSRV_BRIDGE_GETFREE_DEVICEMEM, PVRSRVGetFreeDeviceMemBW); | 4435 | SetDispatchTableEntry(PVRSRV_BRIDGE_GETFREE_DEVICEMEM, PVRSRVGetFreeDeviceMemBW); |
3601 | SetDispatchTableEntry(PVRSRV_BRIDGE_CREATE_COMMANDQUEUE, DummyBW); | 4436 | SetDispatchTableEntry(PVRSRV_BRIDGE_CREATE_COMMANDQUEUE, DummyBW); |
3602 | SetDispatchTableEntry(PVRSRV_BRIDGE_DESTROY_COMMANDQUEUE, DummyBW); | 4437 | SetDispatchTableEntry(PVRSRV_BRIDGE_DESTROY_COMMANDQUEUE, DummyBW); |
3603 | SetDispatchTableEntry(PVRSRV_BRIDGE_MHANDLE_TO_MMAP_DATA, PVRMMapOSMemHandleToMMapDataBW); | 4438 | SetDispatchTableEntry(PVRSRV_BRIDGE_MHANDLE_TO_MMAP_DATA, PVRMMapOSMemHandleToMMapDataBW); |
3604 | SetDispatchTableEntry(PVRSRV_BRIDGE_CONNECT_SERVICES, PVRSRVConnectBW); | 4439 | SetDispatchTableEntry(PVRSRV_BRIDGE_CONNECT_SERVICES, PVRSRVConnectBW); |
3605 | SetDispatchTableEntry(PVRSRV_BRIDGE_DISCONNECT_SERVICES, PVRSRVDisconnectBW); | 4440 | SetDispatchTableEntry(PVRSRV_BRIDGE_DISCONNECT_SERVICES, PVRSRVDisconnectBW); |
3606 | SetDispatchTableEntry(PVRSRV_BRIDGE_WRAP_DEVICE_MEM, DummyBW); | 4441 | SetDispatchTableEntry(PVRSRV_BRIDGE_WRAP_DEVICE_MEM, DummyBW); |
3607 | SetDispatchTableEntry(PVRSRV_BRIDGE_GET_DEVICEMEMINFO, DummyBW); | 4442 | SetDispatchTableEntry(PVRSRV_BRIDGE_GET_DEVICEMEMINFO, DummyBW); |
3608 | SetDispatchTableEntry(PVRSRV_BRIDGE_RESERVE_DEV_VIRTMEM , DummyBW); | 4443 | SetDispatchTableEntry(PVRSRV_BRIDGE_RESERVE_DEV_VIRTMEM , DummyBW); |
3609 | SetDispatchTableEntry(PVRSRV_BRIDGE_FREE_DEV_VIRTMEM, DummyBW); | 4444 | SetDispatchTableEntry(PVRSRV_BRIDGE_FREE_DEV_VIRTMEM, DummyBW); |
3610 | SetDispatchTableEntry(PVRSRV_BRIDGE_MAP_EXT_MEMORY, DummyBW); | 4445 | SetDispatchTableEntry(PVRSRV_BRIDGE_MAP_EXT_MEMORY, DummyBW); |
3611 | SetDispatchTableEntry(PVRSRV_BRIDGE_UNMAP_EXT_MEMORY, DummyBW); | 4446 | SetDispatchTableEntry(PVRSRV_BRIDGE_UNMAP_EXT_MEMORY, DummyBW); |
3612 | SetDispatchTableEntry(PVRSRV_BRIDGE_MAP_DEV_MEMORY, PVRSRVMapDeviceMemoryBW); | 4447 | SetDispatchTableEntry(PVRSRV_BRIDGE_MAP_DEV_MEMORY, PVRSRVMapDeviceMemoryBW); |
3613 | SetDispatchTableEntry(PVRSRV_BRIDGE_UNMAP_DEV_MEMORY, PVRSRVUnmapDeviceMemoryBW); | 4448 | SetDispatchTableEntry(PVRSRV_BRIDGE_UNMAP_DEV_MEMORY, PVRSRVUnmapDeviceMemoryBW); |
3614 | SetDispatchTableEntry(PVRSRV_BRIDGE_MAP_DEVICECLASS_MEMORY, PVRSRVMapDeviceClassMemoryBW); | 4449 | SetDispatchTableEntry(PVRSRV_BRIDGE_MAP_DEVICECLASS_MEMORY, PVRSRVMapDeviceClassMemoryBW); |
3615 | SetDispatchTableEntry(PVRSRV_BRIDGE_UNMAP_DEVICECLASS_MEMORY, PVRSRVUnmapDeviceClassMemoryBW); | 4450 | SetDispatchTableEntry(PVRSRV_BRIDGE_UNMAP_DEVICECLASS_MEMORY, PVRSRVUnmapDeviceClassMemoryBW); |
3616 | SetDispatchTableEntry(PVRSRV_BRIDGE_MAP_MEM_INFO_TO_USER, DummyBW); | 4451 | SetDispatchTableEntry(PVRSRV_BRIDGE_MAP_MEM_INFO_TO_USER, DummyBW); |
3617 | SetDispatchTableEntry(PVRSRV_BRIDGE_UNMAP_MEM_INFO_FROM_USER, DummyBW); | 4452 | SetDispatchTableEntry(PVRSRV_BRIDGE_UNMAP_MEM_INFO_FROM_USER, DummyBW); |
3618 | SetDispatchTableEntry(PVRSRV_BRIDGE_EXPORT_DEVICEMEM, PVRSRVExportDeviceMemBW); | 4453 | SetDispatchTableEntry(PVRSRV_BRIDGE_EXPORT_DEVICEMEM, PVRSRVExportDeviceMemBW); |
3619 | SetDispatchTableEntry(PVRSRV_BRIDGE_RELEASE_MMAP_DATA, PVRMMapReleaseMMapDataBW); | 4454 | SetDispatchTableEntry(PVRSRV_BRIDGE_RELEASE_MMAP_DATA, PVRMMapReleaseMMapDataBW); |
3620 | 4455 | SetDispatchTableEntry(PVRSRV_BRIDGE_CHG_DEV_MEM_ATTRIBS, PVRSRVChangeDeviceMemoryAttributesBW); | |
3621 | 4456 | SetDispatchTableEntry(PVRSRV_BRIDGE_MAP_DEV_MEMORY_2, PVRSRVMapDeviceMemoryBW); | |
3622 | SetDispatchTableEntry(PVRSRV_BRIDGE_PROCESS_SIMISR_EVENT, DummyBW); | 4457 | SetDispatchTableEntry(PVRSRV_BRIDGE_EXPORT_DEVICEMEM_2, PVRSRVExportDeviceMemBW); |
3623 | SetDispatchTableEntry(PVRSRV_BRIDGE_REGISTER_SIM_PROCESS, DummyBW); | 4458 | |
3624 | SetDispatchTableEntry(PVRSRV_BRIDGE_UNREGISTER_SIM_PROCESS, DummyBW); | 4459 | |
3625 | 4460 | SetDispatchTableEntry(PVRSRV_BRIDGE_PROCESS_SIMISR_EVENT, DummyBW); | |
3626 | 4461 | SetDispatchTableEntry(PVRSRV_BRIDGE_REGISTER_SIM_PROCESS, DummyBW); | |
3627 | SetDispatchTableEntry(PVRSRV_BRIDGE_MAPPHYSTOUSERSPACE, DummyBW); | 4462 | SetDispatchTableEntry(PVRSRV_BRIDGE_UNREGISTER_SIM_PROCESS, DummyBW); |
3628 | SetDispatchTableEntry(PVRSRV_BRIDGE_UNMAPPHYSTOUSERSPACE, DummyBW); | 4463 | |
3629 | SetDispatchTableEntry(PVRSRV_BRIDGE_GETPHYSTOUSERSPACEMAP, DummyBW); | 4464 | |
3630 | 4465 | SetDispatchTableEntry(PVRSRV_BRIDGE_MAPPHYSTOUSERSPACE, DummyBW); | |
3631 | SetDispatchTableEntry(PVRSRV_BRIDGE_GET_FB_STATS, DummyBW); | 4466 | SetDispatchTableEntry(PVRSRV_BRIDGE_UNMAPPHYSTOUSERSPACE, DummyBW); |
3632 | 4467 | SetDispatchTableEntry(PVRSRV_BRIDGE_GETPHYSTOUSERSPACEMAP, DummyBW); | |
3633 | 4468 | ||
3634 | SetDispatchTableEntry(PVRSRV_BRIDGE_GET_MISC_INFO, PVRSRVGetMiscInfoBW); | 4469 | SetDispatchTableEntry(PVRSRV_BRIDGE_GET_FB_STATS, DummyBW); |
3635 | SetDispatchTableEntry(PVRSRV_BRIDGE_RELEASE_MISC_INFO, DummyBW); | 4470 | |
3636 | 4471 | ||
3637 | 4472 | SetDispatchTableEntry(PVRSRV_BRIDGE_GET_MISC_INFO, PVRSRVGetMiscInfoBW); | |
4473 | SetDispatchTableEntry(PVRSRV_BRIDGE_RELEASE_MISC_INFO, DummyBW); | ||
4474 | |||
4475 | |||
3638 | #if defined (SUPPORT_OVERLAY_ROTATE_BLIT) | 4476 | #if defined (SUPPORT_OVERLAY_ROTATE_BLIT) |
3639 | SetDispatchTableEntry(PVRSRV_BRIDGE_INIT_3D_OVL_BLT_RES, DummyBW); | 4477 | SetDispatchTableEntry(PVRSRV_BRIDGE_INIT_3D_OVL_BLT_RES, DummyBW); |
3640 | SetDispatchTableEntry(PVRSRV_BRIDGE_DEINIT_3D_OVL_BLT_RES, DummyBW); | 4478 | SetDispatchTableEntry(PVRSRV_BRIDGE_DEINIT_3D_OVL_BLT_RES, DummyBW); |
3641 | #endif | 4479 | #endif |
3642 | 4480 | ||
3643 | 4481 | ||
3644 | 4482 | ||
3645 | #if defined(PDUMP) | 4483 | #if defined(PDUMP) |
3646 | SetDispatchTableEntry(PVRSRV_BRIDGE_PDUMP_INIT, DummyBW); | 4484 | SetDispatchTableEntry(PVRSRV_BRIDGE_PDUMP_INIT, DummyBW); |
3647 | SetDispatchTableEntry(PVRSRV_BRIDGE_PDUMP_MEMPOL, PDumpMemPolBW); | 4485 | SetDispatchTableEntry(PVRSRV_BRIDGE_PDUMP_MEMPOL, PDumpMemPolBW); |
3648 | SetDispatchTableEntry(PVRSRV_BRIDGE_PDUMP_DUMPMEM, PDumpMemBW); | 4486 | SetDispatchTableEntry(PVRSRV_BRIDGE_PDUMP_DUMPMEM, PDumpMemBW); |
3649 | SetDispatchTableEntry(PVRSRV_BRIDGE_PDUMP_REG, PDumpRegWithFlagsBW); | 4487 | SetDispatchTableEntry(PVRSRV_BRIDGE_PDUMP_REG, PDumpRegWithFlagsBW); |
3650 | SetDispatchTableEntry(PVRSRV_BRIDGE_PDUMP_REGPOL, PDumpRegPolBW); | 4488 | SetDispatchTableEntry(PVRSRV_BRIDGE_PDUMP_REGPOL, PDumpRegPolBW); |
3651 | SetDispatchTableEntry(PVRSRV_BRIDGE_PDUMP_COMMENT, PDumpCommentBW); | 4489 | SetDispatchTableEntry(PVRSRV_BRIDGE_PDUMP_COMMENT, PDumpCommentBW); |
3652 | SetDispatchTableEntry(PVRSRV_BRIDGE_PDUMP_SETFRAME, PDumpSetFrameBW); | 4490 | SetDispatchTableEntry(PVRSRV_BRIDGE_PDUMP_SETFRAME, PDumpSetFrameBW); |
3653 | SetDispatchTableEntry(PVRSRV_BRIDGE_PDUMP_ISCAPTURING, PDumpIsCaptureFrameBW); | 4491 | SetDispatchTableEntry(PVRSRV_BRIDGE_PDUMP_ISCAPTURING, PDumpIsCaptureFrameBW); |
3654 | SetDispatchTableEntry(PVRSRV_BRIDGE_PDUMP_DUMPBITMAP, PDumpBitmapBW); | 4492 | SetDispatchTableEntry(PVRSRV_BRIDGE_PDUMP_DUMPBITMAP, PDumpBitmapBW); |
3655 | SetDispatchTableEntry(PVRSRV_BRIDGE_PDUMP_DUMPREADREG, PDumpReadRegBW); | 4493 | SetDispatchTableEntry(PVRSRV_BRIDGE_PDUMP_DUMPREADREG, PDumpReadRegBW); |
3656 | SetDispatchTableEntry(PVRSRV_BRIDGE_PDUMP_SYNCPOL, PDumpSyncPolBW); | 4494 | SetDispatchTableEntry(PVRSRV_BRIDGE_PDUMP_SYNCPOL, PDumpSyncPolBW); |
3657 | SetDispatchTableEntry(PVRSRV_BRIDGE_PDUMP_DUMPSYNC, PDumpSyncDumpBW); | 4495 | SetDispatchTableEntry(PVRSRV_BRIDGE_PDUMP_DUMPSYNC, PDumpSyncDumpBW); |
3658 | SetDispatchTableEntry(PVRSRV_BRIDGE_PDUMP_DRIVERINFO, PDumpDriverInfoBW); | 4496 | SetDispatchTableEntry(PVRSRV_BRIDGE_PDUMP_MEMPAGES, PDumpMemPagesBW); |
3659 | SetDispatchTableEntry(PVRSRV_BRIDGE_PDUMP_DUMPPDDEVPADDR, PDumpPDDevPAddrBW); | 4497 | SetDispatchTableEntry(PVRSRV_BRIDGE_PDUMP_DRIVERINFO, PDumpDriverInfoBW); |
3660 | SetDispatchTableEntry(PVRSRV_BRIDGE_PDUMP_CYCLE_COUNT_REG_READ, PDumpCycleCountRegReadBW); | 4498 | SetDispatchTableEntry(PVRSRV_BRIDGE_PDUMP_DUMPPDDEVPADDR, PDumpPDDevPAddrBW); |
3661 | SetDispatchTableEntry(PVRSRV_BRIDGE_PDUMP_STARTINITPHASE, PDumpStartInitPhaseBW); | 4499 | SetDispatchTableEntry(PVRSRV_BRIDGE_PDUMP_CYCLE_COUNT_REG_READ, PDumpCycleCountRegReadBW); |
3662 | SetDispatchTableEntry(PVRSRV_BRIDGE_PDUMP_STOPINITPHASE, PDumpStopInitPhaseBW); | 4500 | SetDispatchTableEntry(PVRSRV_BRIDGE_PDUMP_STARTINITPHASE, PDumpStartInitPhaseBW); |
3663 | #endif | 4501 | SetDispatchTableEntry(PVRSRV_BRIDGE_PDUMP_STOPINITPHASE, PDumpStopInitPhaseBW); |
3664 | 4502 | #endif | |
3665 | 4503 | ||
3666 | SetDispatchTableEntry(PVRSRV_BRIDGE_GET_OEMJTABLE, DummyBW); | 4504 | |
3667 | 4505 | SetDispatchTableEntry(PVRSRV_BRIDGE_GET_OEMJTABLE, DummyBW); | |
3668 | 4506 | ||
3669 | SetDispatchTableEntry(PVRSRV_BRIDGE_ENUM_CLASS, PVRSRVEnumerateDCBW); | 4507 | |
3670 | 4508 | SetDispatchTableEntry(PVRSRV_BRIDGE_ENUM_CLASS, PVRSRVEnumerateDCBW); | |
3671 | 4509 | ||
3672 | SetDispatchTableEntry(PVRSRV_BRIDGE_OPEN_DISPCLASS_DEVICE, PVRSRVOpenDCDeviceBW); | 4510 | |
3673 | SetDispatchTableEntry(PVRSRV_BRIDGE_CLOSE_DISPCLASS_DEVICE, PVRSRVCloseDCDeviceBW); | 4511 | SetDispatchTableEntry(PVRSRV_BRIDGE_OPEN_DISPCLASS_DEVICE, PVRSRVOpenDCDeviceBW); |
3674 | SetDispatchTableEntry(PVRSRV_BRIDGE_ENUM_DISPCLASS_FORMATS, PVRSRVEnumDCFormatsBW); | 4512 | SetDispatchTableEntry(PVRSRV_BRIDGE_CLOSE_DISPCLASS_DEVICE, PVRSRVCloseDCDeviceBW); |
3675 | SetDispatchTableEntry(PVRSRV_BRIDGE_ENUM_DISPCLASS_DIMS, PVRSRVEnumDCDimsBW); | 4513 | SetDispatchTableEntry(PVRSRV_BRIDGE_ENUM_DISPCLASS_FORMATS, PVRSRVEnumDCFormatsBW); |
3676 | SetDispatchTableEntry(PVRSRV_BRIDGE_GET_DISPCLASS_SYSBUFFER, PVRSRVGetDCSystemBufferBW); | 4514 | SetDispatchTableEntry(PVRSRV_BRIDGE_ENUM_DISPCLASS_DIMS, PVRSRVEnumDCDimsBW); |
3677 | SetDispatchTableEntry(PVRSRV_BRIDGE_GET_DISPCLASS_INFO, PVRSRVGetDCInfoBW); | 4515 | SetDispatchTableEntry(PVRSRV_BRIDGE_GET_DISPCLASS_SYSBUFFER, PVRSRVGetDCSystemBufferBW); |
3678 | SetDispatchTableEntry(PVRSRV_BRIDGE_CREATE_DISPCLASS_SWAPCHAIN, PVRSRVCreateDCSwapChainBW); | 4516 | SetDispatchTableEntry(PVRSRV_BRIDGE_GET_DISPCLASS_INFO, PVRSRVGetDCInfoBW); |
3679 | SetDispatchTableEntry(PVRSRV_BRIDGE_DESTROY_DISPCLASS_SWAPCHAIN, PVRSRVDestroyDCSwapChainBW); | 4517 | SetDispatchTableEntry(PVRSRV_BRIDGE_CREATE_DISPCLASS_SWAPCHAIN, PVRSRVCreateDCSwapChainBW); |
3680 | SetDispatchTableEntry(PVRSRV_BRIDGE_SET_DISPCLASS_DSTRECT, PVRSRVSetDCDstRectBW); | 4518 | SetDispatchTableEntry(PVRSRV_BRIDGE_DESTROY_DISPCLASS_SWAPCHAIN, PVRSRVDestroyDCSwapChainBW); |
3681 | SetDispatchTableEntry(PVRSRV_BRIDGE_SET_DISPCLASS_SRCRECT, PVRSRVSetDCSrcRectBW); | 4519 | SetDispatchTableEntry(PVRSRV_BRIDGE_SET_DISPCLASS_DSTRECT, PVRSRVSetDCDstRectBW); |
3682 | SetDispatchTableEntry(PVRSRV_BRIDGE_SET_DISPCLASS_DSTCOLOURKEY, PVRSRVSetDCDstColourKeyBW); | 4520 | SetDispatchTableEntry(PVRSRV_BRIDGE_SET_DISPCLASS_SRCRECT, PVRSRVSetDCSrcRectBW); |
3683 | SetDispatchTableEntry(PVRSRV_BRIDGE_SET_DISPCLASS_SRCCOLOURKEY, PVRSRVSetDCSrcColourKeyBW); | 4521 | SetDispatchTableEntry(PVRSRV_BRIDGE_SET_DISPCLASS_DSTCOLOURKEY, PVRSRVSetDCDstColourKeyBW); |
3684 | SetDispatchTableEntry(PVRSRV_BRIDGE_GET_DISPCLASS_BUFFERS, PVRSRVGetDCBuffersBW); | 4522 | SetDispatchTableEntry(PVRSRV_BRIDGE_SET_DISPCLASS_SRCCOLOURKEY, PVRSRVSetDCSrcColourKeyBW); |
3685 | SetDispatchTableEntry(PVRSRV_BRIDGE_SWAP_DISPCLASS_TO_BUFFER, PVRSRVSwapToDCBufferBW); | 4523 | SetDispatchTableEntry(PVRSRV_BRIDGE_GET_DISPCLASS_BUFFERS, PVRSRVGetDCBuffersBW); |
3686 | SetDispatchTableEntry(PVRSRV_BRIDGE_SWAP_DISPCLASS_TO_SYSTEM, PVRSRVSwapToDCSystemBW); | 4524 | SetDispatchTableEntry(PVRSRV_BRIDGE_SWAP_DISPCLASS_TO_BUFFER, PVRSRVSwapToDCBufferBW); |
3687 | 4525 | SetDispatchTableEntry(PVRSRV_BRIDGE_SWAP_DISPCLASS_TO_SYSTEM, PVRSRVSwapToDCSystemBW); | |
3688 | 4526 | ||
3689 | SetDispatchTableEntry(PVRSRV_BRIDGE_OPEN_BUFFERCLASS_DEVICE, PVRSRVOpenBCDeviceBW); | 4527 | |
3690 | SetDispatchTableEntry(PVRSRV_BRIDGE_CLOSE_BUFFERCLASS_DEVICE, PVRSRVCloseBCDeviceBW); | 4528 | SetDispatchTableEntry(PVRSRV_BRIDGE_OPEN_BUFFERCLASS_DEVICE, PVRSRVOpenBCDeviceBW); |
3691 | SetDispatchTableEntry(PVRSRV_BRIDGE_GET_BUFFERCLASS_INFO, PVRSRVGetBCInfoBW); | 4529 | SetDispatchTableEntry(PVRSRV_BRIDGE_CLOSE_BUFFERCLASS_DEVICE, PVRSRVCloseBCDeviceBW); |
3692 | SetDispatchTableEntry(PVRSRV_BRIDGE_GET_BUFFERCLASS_BUFFER, PVRSRVGetBCBufferBW); | 4530 | SetDispatchTableEntry(PVRSRV_BRIDGE_GET_BUFFERCLASS_INFO, PVRSRVGetBCInfoBW); |
3693 | 4531 | SetDispatchTableEntry(PVRSRV_BRIDGE_GET_BUFFERCLASS_BUFFER, PVRSRVGetBCBufferBW); | |
3694 | 4532 | ||
3695 | SetDispatchTableEntry(PVRSRV_BRIDGE_WRAP_EXT_MEMORY, PVRSRVWrapExtMemoryBW); | 4533 | |
3696 | SetDispatchTableEntry(PVRSRV_BRIDGE_UNWRAP_EXT_MEMORY, PVRSRVUnwrapExtMemoryBW); | 4534 | SetDispatchTableEntry(PVRSRV_BRIDGE_WRAP_EXT_MEMORY, PVRSRVWrapExtMemoryBW); |
3697 | 4535 | SetDispatchTableEntry(PVRSRV_BRIDGE_UNWRAP_EXT_MEMORY, PVRSRVUnwrapExtMemoryBW); | |
3698 | 4536 | ||
3699 | SetDispatchTableEntry(PVRSRV_BRIDGE_ALLOC_SHARED_SYS_MEM, PVRSRVAllocSharedSysMemoryBW); | 4537 | |
3700 | SetDispatchTableEntry(PVRSRV_BRIDGE_FREE_SHARED_SYS_MEM, PVRSRVFreeSharedSysMemoryBW); | 4538 | SetDispatchTableEntry(PVRSRV_BRIDGE_ALLOC_SHARED_SYS_MEM, PVRSRVAllocSharedSysMemoryBW); |
3701 | SetDispatchTableEntry(PVRSRV_BRIDGE_MAP_MEMINFO_MEM, PVRSRVMapMemInfoMemBW); | 4539 | SetDispatchTableEntry(PVRSRV_BRIDGE_FREE_SHARED_SYS_MEM, PVRSRVFreeSharedSysMemoryBW); |
3702 | 4540 | SetDispatchTableEntry(PVRSRV_BRIDGE_MAP_MEMINFO_MEM, PVRSRVMapMemInfoMemBW); | |
3703 | 4541 | ||
3704 | SetDispatchTableEntry(PVRSRV_BRIDGE_GETMMU_PD_DEVPADDR, MMU_GetPDDevPAddrBW); | 4542 | |
3705 | 4543 | SetDispatchTableEntry(PVRSRV_BRIDGE_GETMMU_PD_DEVPADDR, MMU_GetPDDevPAddrBW); | |
3706 | 4544 | ||
3707 | SetDispatchTableEntry(PVRSRV_BRIDGE_INITSRV_CONNECT, &PVRSRVInitSrvConnectBW); | 4545 | |
3708 | SetDispatchTableEntry(PVRSRV_BRIDGE_INITSRV_DISCONNECT, &PVRSRVInitSrvDisconnectBW); | 4546 | SetDispatchTableEntry(PVRSRV_BRIDGE_INITSRV_CONNECT, &PVRSRVInitSrvConnectBW); |
3709 | 4547 | SetDispatchTableEntry(PVRSRV_BRIDGE_INITSRV_DISCONNECT, &PVRSRVInitSrvDisconnectBW); | |
3710 | 4548 | ||
3711 | SetDispatchTableEntry(PVRSRV_BRIDGE_EVENT_OBJECT_WAIT, &PVRSRVEventObjectWaitBW); | 4549 | |
3712 | SetDispatchTableEntry(PVRSRV_BRIDGE_EVENT_OBJECT_OPEN, &PVRSRVEventObjectOpenBW); | 4550 | SetDispatchTableEntry(PVRSRV_BRIDGE_EVENT_OBJECT_WAIT, &PVRSRVEventObjectWaitBW); |
3713 | SetDispatchTableEntry(PVRSRV_BRIDGE_EVENT_OBJECT_CLOSE, &PVRSRVEventObjectCloseBW); | 4551 | SetDispatchTableEntry(PVRSRV_BRIDGE_EVENT_OBJECT_OPEN, &PVRSRVEventObjectOpenBW); |
3714 | 4552 | SetDispatchTableEntry(PVRSRV_BRIDGE_EVENT_OBJECT_CLOSE, &PVRSRVEventObjectCloseBW); | |
3715 | SetDispatchTableEntry(PVRSRV_BRIDGE_CREATE_SYNC_INFO_MOD_OBJ, PVRSRVCreateSyncInfoModObjBW); | 4553 | |
3716 | SetDispatchTableEntry(PVRSRV_BRIDGE_DESTROY_SYNC_INFO_MOD_OBJ, PVRSRVDestroySyncInfoModObjBW); | 4554 | SetDispatchTableEntry(PVRSRV_BRIDGE_CREATE_SYNC_INFO_MOD_OBJ, PVRSRVCreateSyncInfoModObjBW); |
3717 | SetDispatchTableEntry(PVRSRV_BRIDGE_MODIFY_PENDING_SYNC_OPS, PVRSRVModifyPendingSyncOpsBW); | 4555 | SetDispatchTableEntry(PVRSRV_BRIDGE_DESTROY_SYNC_INFO_MOD_OBJ, PVRSRVDestroySyncInfoModObjBW); |
3718 | SetDispatchTableEntry(PVRSRV_BRIDGE_MODIFY_COMPLETE_SYNC_OPS, PVRSRVModifyCompleteSyncOpsBW); | 4556 | SetDispatchTableEntry(PVRSRV_BRIDGE_MODIFY_PENDING_SYNC_OPS, PVRSRVModifyPendingSyncOpsBW); |
3719 | SetDispatchTableEntry(PVRSRV_BRIDGE_SYNC_OPS_FLUSH_TO_MOD_OBJ, PVRSRVSyncOpsFlushToModObjBW); | 4557 | SetDispatchTableEntry(PVRSRV_BRIDGE_MODIFY_COMPLETE_SYNC_OPS, PVRSRVModifyCompleteSyncOpsBW); |
3720 | SetDispatchTableEntry(PVRSRV_BRIDGE_SYNC_OPS_FLUSH_TO_DELTA, PVRSRVSyncOpsFlushToDeltaBW); | 4558 | SetDispatchTableEntry(PVRSRV_BRIDGE_SYNC_OPS_TAKE_TOKEN, PVRSRVSyncOpsTakeTokenBW); |
3721 | SetDispatchTableEntry(PVRSRV_BRIDGE_ALLOC_SYNC_INFO, PVRSRVAllocSyncInfoBW); | 4559 | SetDispatchTableEntry(PVRSRV_BRIDGE_SYNC_OPS_FLUSH_TO_TOKEN, PVRSRVSyncOpsFlushToTokenBW); |
3722 | SetDispatchTableEntry(PVRSRV_BRIDGE_FREE_SYNC_INFO, PVRSRVFreeSyncInfoBW); | 4560 | SetDispatchTableEntry(PVRSRV_BRIDGE_SYNC_OPS_FLUSH_TO_MOD_OBJ, PVRSRVSyncOpsFlushToModObjBW); |
4561 | SetDispatchTableEntry(PVRSRV_BRIDGE_SYNC_OPS_FLUSH_TO_DELTA, PVRSRVSyncOpsFlushToDeltaBW); | ||
4562 | SetDispatchTableEntry(PVRSRV_BRIDGE_ALLOC_SYNC_INFO, PVRSRVAllocSyncInfoBW); | ||
4563 | SetDispatchTableEntry(PVRSRV_BRIDGE_FREE_SYNC_INFO, PVRSRVFreeSyncInfoBW); | ||
3723 | 4564 | ||
3724 | #if defined (SUPPORT_SGX) | 4565 | #if defined (SUPPORT_SGX) |
3725 | SetSGXDispatchTableEntry(); | 4566 | SetSGXDispatchTableEntry(); |
3726 | #endif | 4567 | #endif |
3727 | #if defined (SUPPORT_VGX) | 4568 | #if defined (SUPPORT_VGX) |
3728 | SetVGXDispatchTableEntry(); | 4569 | SetVGXDispatchTableEntry(); |
3729 | #endif | 4570 | #endif |
3730 | #if defined (SUPPORT_MSVDX) | 4571 | #if defined (SUPPORT_MSVDX) |
3731 | SetMSVDXDispatchTableEntry(); | 4572 | SetMSVDXDispatchTableEntry(); |
3732 | #endif | 4573 | #endif |
3733 | 4574 | ||
3734 | 4575 | ||
3735 | 4576 | ||
3736 | 4577 | ||
3737 | for(i=0;i<BRIDGE_DISPATCH_TABLE_ENTRY_COUNT;i++) | 4578 | for(i=0;i<BRIDGE_DISPATCH_TABLE_ENTRY_COUNT;i++) |
3738 | { | 4579 | { |
3739 | if(!g_BridgeDispatchTable[i].pfFunction) | 4580 | if(!g_BridgeDispatchTable[i].pfFunction) |
3740 | { | 4581 | { |
3741 | g_BridgeDispatchTable[i].pfFunction = &DummyBW; | 4582 | g_BridgeDispatchTable[i].pfFunction = &DummyBW; |
3742 | #if defined(DEBUG_BRIDGE_KM) | 4583 | #if defined(DEBUG_BRIDGE_KM) |
3743 | g_BridgeDispatchTable[i].pszIOCName = "_PVRSRV_BRIDGE_DUMMY"; | 4584 | g_BridgeDispatchTable[i].pszIOCName = "_PVRSRV_BRIDGE_DUMMY"; |
3744 | g_BridgeDispatchTable[i].pszFunctionName = "DummyBW"; | 4585 | g_BridgeDispatchTable[i].pszFunctionName = "DummyBW"; |
3745 | g_BridgeDispatchTable[i].ui32CallCount = 0; | 4586 | g_BridgeDispatchTable[i].ui32CallCount = 0; |
3746 | g_BridgeDispatchTable[i].ui32CopyFromUserTotalBytes = 0; | 4587 | g_BridgeDispatchTable[i].ui32CopyFromUserTotalBytes = 0; |
3747 | g_BridgeDispatchTable[i].ui32CopyToUserTotalBytes = 0; | 4588 | g_BridgeDispatchTable[i].ui32CopyToUserTotalBytes = 0; |
3748 | #endif | 4589 | #endif |
3749 | } | 4590 | } |
3750 | } | 4591 | } |
3751 | 4592 | ||
3752 | return PVRSRV_OK; | 4593 | return PVRSRV_OK; |
3753 | } | 4594 | } |
3754 | 4595 | ||
3755 | IMG_INT BridgedDispatchKM(PVRSRV_PER_PROCESS_DATA * psPerProc, | 4596 | IMG_INT BridgedDispatchKM(PVRSRV_PER_PROCESS_DATA * psPerProc, |
3756 | PVRSRV_BRIDGE_PACKAGE * psBridgePackageKM) | 4597 | PVRSRV_BRIDGE_PACKAGE * psBridgePackageKM) |
3757 | { | 4598 | { |
3758 | 4599 | ||
3759 | IMG_VOID * psBridgeIn; | 4600 | IMG_VOID * psBridgeIn; |
3760 | IMG_VOID * psBridgeOut; | 4601 | IMG_VOID * psBridgeOut; |
3761 | BridgeWrapperFunction pfBridgeHandler; | 4602 | BridgeWrapperFunction pfBridgeHandler; |
3762 | IMG_UINT32 ui32BridgeID = psBridgePackageKM->ui32BridgeID; | 4603 | IMG_UINT32 ui32BridgeID = psBridgePackageKM->ui32BridgeID; |
3763 | IMG_INT err = -EFAULT; | 4604 | IMG_INT err = -EFAULT; |
3764 | 4605 | ||
3765 | #if defined(DEBUG_TRACE_BRIDGE_KM) | 4606 | #if defined(DEBUG_TRACE_BRIDGE_KM) |
3766 | PVR_DPF((PVR_DBG_ERROR, "%s: %s", | 4607 | PVR_DPF((PVR_DBG_ERROR, "%s: %s", |
3767 | __FUNCTION__, | 4608 | __FUNCTION__, |
3768 | g_BridgeDispatchTable[ui32BridgeID].pszIOCName)); | 4609 | g_BridgeDispatchTable[ui32BridgeID].pszIOCName)); |
3769 | #endif | 4610 | #endif |
3770 | 4611 | ||
3771 | #if defined(DEBUG_BRIDGE_KM) | 4612 | #if defined(DEBUG_BRIDGE_KM) |
3772 | g_BridgeDispatchTable[ui32BridgeID].ui32CallCount++; | 4613 | g_BridgeDispatchTable[ui32BridgeID].ui32CallCount++; |
3773 | g_BridgeGlobalStats.ui32IOCTLCount++; | 4614 | g_BridgeGlobalStats.ui32IOCTLCount++; |
3774 | #endif | 4615 | #endif |
3775 | 4616 | ||
3776 | if(!psPerProc->bInitProcess) | 4617 | if(!psPerProc->bInitProcess) |
3777 | { | 4618 | { |
3778 | if(PVRSRVGetInitServerState(PVRSRV_INIT_SERVER_RAN)) | 4619 | if(PVRSRVGetInitServerState(PVRSRV_INIT_SERVER_RAN)) |
3779 | { | 4620 | { |
3780 | if(!PVRSRVGetInitServerState(PVRSRV_INIT_SERVER_SUCCESSFUL)) | 4621 | if(!PVRSRVGetInitServerState(PVRSRV_INIT_SERVER_SUCCESSFUL)) |
3781 | { | 4622 | { |
3782 | PVR_DPF((PVR_DBG_ERROR, "%s: Initialisation failed. Driver unusable.", | 4623 | PVR_DPF((PVR_DBG_ERROR, "%s: Initialisation failed. Driver unusable.", |
3783 | __FUNCTION__)); | 4624 | __FUNCTION__)); |
3784 | goto return_fault; | 4625 | goto return_fault; |
3785 | } | 4626 | } |
3786 | } | 4627 | } |
3787 | else | 4628 | else |
3788 | { | 4629 | { |
3789 | if(PVRSRVGetInitServerState(PVRSRV_INIT_SERVER_RUNNING)) | 4630 | if(PVRSRVGetInitServerState(PVRSRV_INIT_SERVER_RUNNING)) |
3790 | { | 4631 | { |
3791 | PVR_DPF((PVR_DBG_ERROR, "%s: Initialisation is in progress", | 4632 | PVR_DPF((PVR_DBG_ERROR, "%s: Initialisation is in progress", |
3792 | __FUNCTION__)); | 4633 | __FUNCTION__)); |
3793 | goto return_fault; | 4634 | goto return_fault; |
3794 | } | 4635 | } |
3795 | else | 4636 | else |
3796 | { | 4637 | { |
3797 | 4638 | ||
3798 | switch(ui32BridgeID) | 4639 | switch(ui32BridgeID) |
3799 | { | 4640 | { |
3800 | case PVRSRV_GET_BRIDGE_ID(PVRSRV_BRIDGE_CONNECT_SERVICES): | 4641 | case PVRSRV_GET_BRIDGE_ID(PVRSRV_BRIDGE_CONNECT_SERVICES): |
3801 | case PVRSRV_GET_BRIDGE_ID(PVRSRV_BRIDGE_DISCONNECT_SERVICES): | 4642 | case PVRSRV_GET_BRIDGE_ID(PVRSRV_BRIDGE_DISCONNECT_SERVICES): |
3802 | case PVRSRV_GET_BRIDGE_ID(PVRSRV_BRIDGE_INITSRV_CONNECT): | 4643 | case PVRSRV_GET_BRIDGE_ID(PVRSRV_BRIDGE_INITSRV_CONNECT): |
3803 | case PVRSRV_GET_BRIDGE_ID(PVRSRV_BRIDGE_INITSRV_DISCONNECT): | 4644 | case PVRSRV_GET_BRIDGE_ID(PVRSRV_BRIDGE_INITSRV_DISCONNECT): |
3804 | break; | 4645 | break; |
3805 | default: | 4646 | default: |
3806 | PVR_DPF((PVR_DBG_ERROR, "%s: Driver initialisation not completed yet.", | 4647 | PVR_DPF((PVR_DBG_ERROR, "%s: Driver initialisation not completed yet.", |
3807 | __FUNCTION__)); | 4648 | __FUNCTION__)); |
3808 | goto return_fault; | 4649 | goto return_fault; |
3809 | } | 4650 | } |
3810 | } | 4651 | } |
3811 | } | 4652 | } |
3812 | } | 4653 | } |
3813 | 4654 | ||
3814 | 4655 | ||
3815 | 4656 | ||
3816 | #if defined(__linux__) | 4657 | #if defined(__linux__) |
3817 | { | 4658 | { |
3818 | 4659 | ||
3819 | SYS_DATA *psSysData; | 4660 | SYS_DATA *psSysData; |
3820 | 4661 | ||
3821 | SysAcquireData(&psSysData); | 4662 | SysAcquireData(&psSysData); |
3822 | 4663 | ||
3823 | 4664 | ||
3824 | psBridgeIn = ((ENV_DATA *)psSysData->pvEnvSpecificData)->pvBridgeData; | 4665 | psBridgeIn = ((ENV_DATA *)psSysData->pvEnvSpecificData)->pvBridgeData; |
3825 | psBridgeOut = (IMG_PVOID)((IMG_PBYTE)psBridgeIn + PVRSRV_MAX_BRIDGE_IN_SIZE); | 4666 | psBridgeOut = (IMG_PVOID)((IMG_PBYTE)psBridgeIn + PVRSRV_MAX_BRIDGE_IN_SIZE); |
3826 | 4667 | ||
3827 | 4668 | ||
3828 | #if defined(DEBUG) | 4669 | #if defined(DEBUG) |
3829 | PVR_ASSERT(psBridgePackageKM->ui32InBufferSize < PVRSRV_MAX_BRIDGE_IN_SIZE); | 4670 | PVR_ASSERT(psBridgePackageKM->ui32InBufferSize < PVRSRV_MAX_BRIDGE_IN_SIZE); |
3830 | PVR_ASSERT(psBridgePackageKM->ui32OutBufferSize < PVRSRV_MAX_BRIDGE_OUT_SIZE); | 4671 | PVR_ASSERT(psBridgePackageKM->ui32OutBufferSize < PVRSRV_MAX_BRIDGE_OUT_SIZE); |
3831 | #endif | 4672 | #endif |
3832 | 4673 | ||
3833 | if(psBridgePackageKM->ui32InBufferSize > 0) | 4674 | if(psBridgePackageKM->ui32InBufferSize > 0) |
3834 | { | 4675 | { |
3835 | if(!OSAccessOK(PVR_VERIFY_READ, | 4676 | if(!OSAccessOK(PVR_VERIFY_READ, |
3836 | psBridgePackageKM->pvParamIn, | 4677 | psBridgePackageKM->pvParamIn, |
3837 | psBridgePackageKM->ui32InBufferSize)) | 4678 | psBridgePackageKM->ui32InBufferSize)) |
3838 | { | 4679 | { |
3839 | PVR_DPF((PVR_DBG_ERROR, "%s: Invalid pvParamIn pointer", __FUNCTION__)); | 4680 | PVR_DPF((PVR_DBG_ERROR, "%s: Invalid pvParamIn pointer", __FUNCTION__)); |
3840 | } | 4681 | } |
3841 | 4682 | ||
3842 | if(CopyFromUserWrapper(psPerProc, | 4683 | if(CopyFromUserWrapper(psPerProc, |
3843 | ui32BridgeID, | 4684 | ui32BridgeID, |
3844 | psBridgeIn, | 4685 | psBridgeIn, |
3845 | psBridgePackageKM->pvParamIn, | 4686 | psBridgePackageKM->pvParamIn, |
3846 | psBridgePackageKM->ui32InBufferSize) | 4687 | psBridgePackageKM->ui32InBufferSize) |
3847 | != PVRSRV_OK) | 4688 | != PVRSRV_OK) |
3848 | { | 4689 | { |
3849 | goto return_fault; | 4690 | goto return_fault; |
3850 | } | 4691 | } |
3851 | } | 4692 | } |
3852 | } | 4693 | } |
3853 | #else | 4694 | #else |
3854 | psBridgeIn = psBridgePackageKM->pvParamIn; | 4695 | psBridgeIn = psBridgePackageKM->pvParamIn; |
3855 | psBridgeOut = psBridgePackageKM->pvParamOut; | 4696 | psBridgeOut = psBridgePackageKM->pvParamOut; |
3856 | #endif | 4697 | #endif |
3857 | 4698 | ||
3858 | if(ui32BridgeID >= (BRIDGE_DISPATCH_TABLE_ENTRY_COUNT)) | 4699 | if(ui32BridgeID >= (BRIDGE_DISPATCH_TABLE_ENTRY_COUNT)) |
3859 | { | 4700 | { |
3860 | PVR_DPF((PVR_DBG_ERROR, "%s: ui32BridgeID = %d is out if range!", | 4701 | PVR_DPF((PVR_DBG_ERROR, "%s: ui32BridgeID = %d is out if range!", |
3861 | __FUNCTION__, ui32BridgeID)); | 4702 | __FUNCTION__, ui32BridgeID)); |
3862 | goto return_fault; | 4703 | goto return_fault; |
3863 | } | 4704 | } |
3864 | pfBridgeHandler = | 4705 | pfBridgeHandler = |
3865 | (BridgeWrapperFunction)g_BridgeDispatchTable[ui32BridgeID].pfFunction; | 4706 | (BridgeWrapperFunction)g_BridgeDispatchTable[ui32BridgeID].pfFunction; |
3866 | err = pfBridgeHandler(ui32BridgeID, | 4707 | err = pfBridgeHandler(ui32BridgeID, |
3867 | psBridgeIn, | 4708 | psBridgeIn, |
3868 | psBridgeOut, | 4709 | psBridgeOut, |
3869 | psPerProc); | 4710 | psPerProc); |
3870 | if(err < 0) | 4711 | if(err < 0) |
3871 | { | 4712 | { |
3872 | goto return_fault; | 4713 | goto return_fault; |
3873 | } | 4714 | } |
3874 | 4715 | ||
3875 | 4716 | ||
3876 | #if defined(__linux__) | 4717 | #if defined(__linux__) |
3877 | 4718 | ||
3878 | if(CopyToUserWrapper(psPerProc, | 4719 | if(CopyToUserWrapper(psPerProc, |
3879 | ui32BridgeID, | 4720 | ui32BridgeID, |
3880 | psBridgePackageKM->pvParamOut, | 4721 | psBridgePackageKM->pvParamOut, |
3881 | psBridgeOut, | 4722 | psBridgeOut, |
3882 | psBridgePackageKM->ui32OutBufferSize) | 4723 | psBridgePackageKM->ui32OutBufferSize) |
3883 | != PVRSRV_OK) | 4724 | != PVRSRV_OK) |
3884 | { | 4725 | { |
3885 | goto return_fault; | 4726 | goto return_fault; |
3886 | } | 4727 | } |
3887 | #endif | 4728 | #endif |
3888 | 4729 | ||
3889 | err = 0; | 4730 | err = 0; |
3890 | return_fault: | 4731 | return_fault: |
3891 | ReleaseHandleBatch(psPerProc); | 4732 | |
3892 | return err; | 4733 | ReleaseHandleBatch(psPerProc); |
4734 | return err; | ||
3893 | } | 4735 | } |
3894 | 4736 | ||
diff --git a/drivers/gpu/pvr/bridged_pvr_bridge.h b/drivers/gpu/pvr/bridged_pvr_bridge.h index 004257429bd..6106e6f8bdb 100644 --- a/drivers/gpu/pvr/bridged_pvr_bridge.h +++ b/drivers/gpu/pvr/bridged_pvr_bridge.h | |||
@@ -83,7 +83,7 @@ CopyToUserWrapper(PVRSRV_PER_PROCESS_DATA *pProcData, | |||
83 | #define ASSIGN_AND_EXIT_ON_ERROR(error, src) \ | 83 | #define ASSIGN_AND_EXIT_ON_ERROR(error, src) \ |
84 | ASSIGN_AND_RETURN_ON_ERROR(error, src, 0) | 84 | ASSIGN_AND_RETURN_ON_ERROR(error, src, 0) |
85 | 85 | ||
86 | #if defined (PVR_SECURE_HANDLES) | 86 | #if defined (PVR_SECURE_HANDLES) || defined (SUPPORT_SID_INTERFACE) |
87 | #ifdef INLINE_IS_PRAGMA | 87 | #ifdef INLINE_IS_PRAGMA |
88 | #pragma inline(NewHandleBatch) | 88 | #pragma inline(NewHandleBatch) |
89 | #endif | 89 | #endif |
diff --git a/drivers/gpu/pvr/bridged_support.c b/drivers/gpu/pvr/bridged_support.c index e10e577121f..de95ef82d0a 100644 --- a/drivers/gpu/pvr/bridged_support.c +++ b/drivers/gpu/pvr/bridged_support.c | |||
@@ -30,7 +30,11 @@ | |||
30 | 30 | ||
31 | 31 | ||
32 | PVRSRV_ERROR | 32 | PVRSRV_ERROR |
33 | #if defined (SUPPORT_SID_INTERFACE) | ||
34 | PVRSRVLookupOSMemHandle(PVRSRV_HANDLE_BASE *psHandleBase, IMG_HANDLE *phOSMemHandle, IMG_SID hMHandle) | ||
35 | #else | ||
33 | PVRSRVLookupOSMemHandle(PVRSRV_HANDLE_BASE *psHandleBase, IMG_HANDLE *phOSMemHandle, IMG_HANDLE hMHandle) | 36 | PVRSRVLookupOSMemHandle(PVRSRV_HANDLE_BASE *psHandleBase, IMG_HANDLE *phOSMemHandle, IMG_HANDLE hMHandle) |
37 | #endif | ||
34 | { | 38 | { |
35 | IMG_HANDLE hMHandleInt; | 39 | IMG_HANDLE hMHandleInt; |
36 | PVRSRV_HANDLE_TYPE eHandleType; | 40 | PVRSRV_HANDLE_TYPE eHandleType; |
@@ -47,7 +51,7 @@ PVRSRVLookupOSMemHandle(PVRSRV_HANDLE_BASE *psHandleBase, IMG_HANDLE *phOSMemHan | |||
47 | 51 | ||
48 | switch(eHandleType) | 52 | switch(eHandleType) |
49 | { | 53 | { |
50 | #if defined(PVR_SECURE_HANDLES) | 54 | #if defined(PVR_SECURE_HANDLES) || defined (SUPPORT_SID_INTERFACE) |
51 | case PVRSRV_HANDLE_TYPE_MEM_INFO: | 55 | case PVRSRV_HANDLE_TYPE_MEM_INFO: |
52 | case PVRSRV_HANDLE_TYPE_MEM_INFO_REF: | 56 | case PVRSRV_HANDLE_TYPE_MEM_INFO_REF: |
53 | case PVRSRV_HANDLE_TYPE_SHARED_SYS_MEM_INFO: | 57 | case PVRSRV_HANDLE_TYPE_SHARED_SYS_MEM_INFO: |
diff --git a/drivers/gpu/pvr/bridged_support.h b/drivers/gpu/pvr/bridged_support.h index 371715d6ea8..3c222e5b351 100644 --- a/drivers/gpu/pvr/bridged_support.h +++ b/drivers/gpu/pvr/bridged_support.h | |||
@@ -33,7 +33,11 @@ | |||
33 | extern "C" { | 33 | extern "C" { |
34 | #endif | 34 | #endif |
35 | 35 | ||
36 | #if defined (SUPPORT_SID_INTERFACE) | ||
37 | PVRSRV_ERROR PVRSRVLookupOSMemHandle(PVRSRV_HANDLE_BASE *psBase, IMG_HANDLE *phOSMemHandle, IMG_SID hMHandle); | ||
38 | #else | ||
36 | PVRSRV_ERROR PVRSRVLookupOSMemHandle(PVRSRV_HANDLE_BASE *psBase, IMG_HANDLE *phOSMemHandle, IMG_HANDLE hMHandle); | 39 | PVRSRV_ERROR PVRSRVLookupOSMemHandle(PVRSRV_HANDLE_BASE *psBase, IMG_HANDLE *phOSMemHandle, IMG_HANDLE hMHandle); |
40 | #endif | ||
37 | 41 | ||
38 | #if defined (__cplusplus) | 42 | #if defined (__cplusplus) |
39 | } | 43 | } |
diff --git a/drivers/gpu/pvr/buffer_manager.c b/drivers/gpu/pvr/buffer_manager.c index 32367e215f8..7026a58d1bc 100644 --- a/drivers/gpu/pvr/buffer_manager.c +++ b/drivers/gpu/pvr/buffer_manager.c | |||
@@ -787,8 +787,11 @@ static PVRSRV_ERROR BM_DestroyContextCallBack(IMG_PVOID pvParam, | |||
787 | } | 787 | } |
788 | else | 788 | else |
789 | { | 789 | { |
790 | 790 | if (pBMContext->ppsThis != IMG_NULL) | |
791 | List_BM_CONTEXT_Remove(pBMContext); | 791 | { |
792 | |||
793 | List_BM_CONTEXT_Remove(pBMContext); | ||
794 | } | ||
792 | } | 795 | } |
793 | 796 | ||
794 | OSFreeMem(PVRSRV_OS_PAGEABLE_HEAP, sizeof(BM_CONTEXT), pBMContext, IMG_NULL); | 797 | OSFreeMem(PVRSRV_OS_PAGEABLE_HEAP, sizeof(BM_CONTEXT), pBMContext, IMG_NULL); |
@@ -1006,6 +1009,11 @@ BM_CreateHeap (IMG_HANDLE hBMContext, | |||
1006 | psDeviceNode = pBMContext->psDeviceNode; | 1009 | psDeviceNode = pBMContext->psDeviceNode; |
1007 | 1010 | ||
1008 | 1011 | ||
1012 | |||
1013 | PVR_ASSERT((psDevMemHeapInfo->ui32HeapSize & (psDevMemHeapInfo->ui32DataPageSize - 1)) == 0); | ||
1014 | PVR_ASSERT(psDevMemHeapInfo->ui32HeapSize > 0); | ||
1015 | |||
1016 | |||
1009 | 1017 | ||
1010 | 1018 | ||
1011 | 1019 | ||
@@ -1096,7 +1104,7 @@ ErrorExit: | |||
1096 | if (psBMHeap->pMMUHeap != IMG_NULL) | 1104 | if (psBMHeap->pMMUHeap != IMG_NULL) |
1097 | { | 1105 | { |
1098 | psDeviceNode->pfnMMUDelete (psBMHeap->pMMUHeap); | 1106 | psDeviceNode->pfnMMUDelete (psBMHeap->pMMUHeap); |
1099 | psDeviceNode->pfnMMUFinalise (pBMContext->psMMUContext); | 1107 | |
1100 | } | 1108 | } |
1101 | 1109 | ||
1102 | 1110 | ||
@@ -1379,6 +1387,11 @@ BM_Wrap ( IMG_HANDLE hDevMemHeap, | |||
1379 | 1387 | ||
1380 | return IMG_TRUE; | 1388 | return IMG_TRUE; |
1381 | } | 1389 | } |
1390 | else | ||
1391 | { | ||
1392 | |||
1393 | HASH_Remove(psBMContext->pBufferHash, (IMG_UINTPTR_T)sHashAddress.uiAddr); | ||
1394 | } | ||
1382 | } | 1395 | } |
1383 | 1396 | ||
1384 | 1397 | ||
@@ -1567,7 +1580,7 @@ DevMemoryAlloc (BM_CONTEXT *pBMContext, | |||
1567 | { | 1580 | { |
1568 | PVRSRV_DEVICE_NODE *psDeviceNode; | 1581 | PVRSRV_DEVICE_NODE *psDeviceNode; |
1569 | #ifdef PDUMP | 1582 | #ifdef PDUMP |
1570 | IMG_UINT32 ui32PDumpSize = pMapping->uSize; | 1583 | IMG_UINT32 ui32PDumpSize = (IMG_UINT32)pMapping->uSize; |
1571 | #endif | 1584 | #endif |
1572 | 1585 | ||
1573 | psDeviceNode = pBMContext->psDeviceNode; | 1586 | psDeviceNode = pBMContext->psDeviceNode; |
@@ -1613,8 +1626,8 @@ DevMemoryAlloc (BM_CONTEXT *pBMContext, | |||
1613 | #if defined(SUPPORT_PDUMP_MULTI_PROCESS) | 1626 | #if defined(SUPPORT_PDUMP_MULTI_PROCESS) |
1614 | psDeviceNode->pfnMMUIsHeapShared(pMapping->pBMHeap->pMMUHeap), | 1627 | psDeviceNode->pfnMMUIsHeapShared(pMapping->pBMHeap->pMMUHeap), |
1615 | #else | 1628 | #else |
1616 | IMG_FALSE, | 1629 | IMG_FALSE, |
1617 | #endif | 1630 | #endif |
1618 | (IMG_HANDLE)pMapping); | 1631 | (IMG_HANDLE)pMapping); |
1619 | #endif | 1632 | #endif |
1620 | 1633 | ||
@@ -1677,35 +1690,321 @@ static IMG_VOID | |||
1677 | DevMemoryFree (BM_MAPPING *pMapping) | 1690 | DevMemoryFree (BM_MAPPING *pMapping) |
1678 | { | 1691 | { |
1679 | PVRSRV_DEVICE_NODE *psDeviceNode; | 1692 | PVRSRV_DEVICE_NODE *psDeviceNode; |
1693 | IMG_DEV_PHYADDR sDevPAddr; | ||
1680 | #ifdef PDUMP | 1694 | #ifdef PDUMP |
1681 | IMG_UINT32 ui32PSize; | 1695 | IMG_UINT32 ui32PSize; |
1682 | #endif | 1696 | #endif |
1683 | 1697 | ||
1698 | psDeviceNode = pMapping->pBMHeap->pBMContext->psDeviceNode; | ||
1699 | sDevPAddr = psDeviceNode->pfnMMUGetPhysPageAddr(pMapping->pBMHeap->pMMUHeap, pMapping->DevVAddr); | ||
1700 | |||
1701 | if (sDevPAddr.uiAddr != 0) | ||
1702 | { | ||
1684 | #ifdef PDUMP | 1703 | #ifdef PDUMP |
1704 | |||
1705 | if(pMapping->ui32Flags & PVRSRV_MEM_DUMMY) | ||
1706 | { | ||
1707 | |||
1708 | ui32PSize = pMapping->pBMHeap->sDevArena.ui32DataPageSize; | ||
1709 | } | ||
1710 | else | ||
1711 | { | ||
1712 | ui32PSize = (IMG_UINT32)pMapping->uSize; | ||
1713 | } | ||
1685 | 1714 | ||
1686 | if(pMapping->ui32Flags & PVRSRV_MEM_DUMMY) | 1715 | PDUMPFREEPAGES(pMapping->pBMHeap, |
1716 | pMapping->DevVAddr, | ||
1717 | ui32PSize, | ||
1718 | pMapping->pBMHeap->sDevArena.ui32DataPageSize, | ||
1719 | (IMG_HANDLE)pMapping, | ||
1720 | (pMapping->ui32Flags & PVRSRV_MEM_INTERLEAVED) ? IMG_TRUE : IMG_FALSE); | ||
1721 | #endif | ||
1722 | } | ||
1723 | psDeviceNode->pfnMMUFree (pMapping->pBMHeap->pMMUHeap, pMapping->DevVAddr, IMG_CAST_TO_DEVVADDR_UINT(pMapping->uSize)); | ||
1724 | } | ||
1725 | |||
1726 | #define XPROC_WORKAROUND_NUM_SHAREABLES 200 | ||
1727 | |||
1728 | #define XPROC_WORKAROUND_BAD_SHAREINDEX 0773407734 | ||
1729 | |||
1730 | static IMG_UINT32 gXProcWorkaroundShareIndex = XPROC_WORKAROUND_BAD_SHAREINDEX; | ||
1731 | |||
1732 | |||
1733 | static struct { | ||
1734 | IMG_UINT32 ui32RefCount; | ||
1735 | IMG_UINT32 ui32AllocFlags; | ||
1736 | IMG_UINT32 ui32Size; | ||
1737 | IMG_UINT32 ui32PageSize; | ||
1738 | RA_ARENA *psArena; | ||
1739 | IMG_SYS_PHYADDR sSysPAddr; | ||
1740 | IMG_VOID *pvCpuVAddr; | ||
1741 | IMG_HANDLE hOSMemHandle; | ||
1742 | } gXProcWorkaroundShareData[XPROC_WORKAROUND_NUM_SHAREABLES] = {{0}}; | ||
1743 | |||
1744 | PVRSRV_ERROR BM_XProcWorkaroundSetShareIndex(IMG_UINT32 ui32Index) | ||
1745 | { | ||
1746 | |||
1747 | |||
1748 | |||
1749 | if (gXProcWorkaroundShareIndex != XPROC_WORKAROUND_BAD_SHAREINDEX) | ||
1687 | { | 1750 | { |
1688 | 1751 | PVR_DPF((PVR_DBG_ERROR, "No, it's already set!")); | |
1689 | ui32PSize = pMapping->pBMHeap->sDevArena.ui32DataPageSize; | 1752 | return PVRSRV_ERROR_INVALID_PARAMS; |
1753 | } | ||
1754 | |||
1755 | gXProcWorkaroundShareIndex = ui32Index; | ||
1756 | |||
1757 | return PVRSRV_OK; | ||
1758 | } | ||
1759 | |||
1760 | PVRSRV_ERROR BM_XProcWorkaroundUnsetShareIndex(IMG_UINT32 ui32Index) | ||
1761 | { | ||
1762 | |||
1763 | |||
1764 | |||
1765 | if (gXProcWorkaroundShareIndex == XPROC_WORKAROUND_BAD_SHAREINDEX) | ||
1766 | { | ||
1767 | PVR_DPF((PVR_DBG_ERROR, "huh? how can it be bad??")); | ||
1768 | return PVRSRV_ERROR_INVALID_PARAMS; | ||
1769 | } | ||
1770 | if (gXProcWorkaroundShareIndex != ui32Index) | ||
1771 | { | ||
1772 | PVR_DPF((PVR_DBG_ERROR, "gXProcWorkaroundShareIndex == 0x%08x != 0x%08x == ui32Index", gXProcWorkaroundShareIndex, ui32Index)); | ||
1773 | return PVRSRV_ERROR_INVALID_PARAMS; | ||
1774 | } | ||
1775 | |||
1776 | gXProcWorkaroundShareIndex = XPROC_WORKAROUND_BAD_SHAREINDEX; | ||
1777 | |||
1778 | return PVRSRV_OK; | ||
1779 | } | ||
1780 | |||
1781 | PVRSRV_ERROR BM_XProcWorkaroundFindNewBufferAndSetShareIndex(IMG_UINT32 *pui32Index) | ||
1782 | { | ||
1783 | |||
1784 | |||
1785 | |||
1786 | if (gXProcWorkaroundShareIndex != XPROC_WORKAROUND_BAD_SHAREINDEX) | ||
1787 | { | ||
1788 | return PVRSRV_ERROR_INVALID_PARAMS; | ||
1789 | } | ||
1790 | |||
1791 | for (*pui32Index = 0; *pui32Index < XPROC_WORKAROUND_NUM_SHAREABLES; (*pui32Index)++) | ||
1792 | { | ||
1793 | if (gXProcWorkaroundShareData[*pui32Index].ui32RefCount == 0) | ||
1794 | { | ||
1795 | gXProcWorkaroundShareIndex = *pui32Index; | ||
1796 | return PVRSRV_OK; | ||
1797 | } | ||
1798 | } | ||
1799 | |||
1800 | PVR_DPF((PVR_DBG_ERROR, "ran out of shared buffers")); | ||
1801 | return PVRSRV_ERROR_OUT_OF_MEMORY; | ||
1802 | } | ||
1803 | |||
1804 | static PVRSRV_ERROR | ||
1805 | XProcWorkaroundAllocShareable(RA_ARENA *psArena, | ||
1806 | IMG_UINT32 ui32AllocFlags, | ||
1807 | IMG_UINT32 ui32Size, | ||
1808 | IMG_UINT32 ui32PageSize, | ||
1809 | IMG_VOID **ppvCpuVAddr, | ||
1810 | IMG_HANDLE *phOSMemHandle) | ||
1811 | { | ||
1812 | if ((ui32AllocFlags & PVRSRV_MEM_XPROC) == 0) | ||
1813 | { | ||
1814 | PVR_DPF((PVR_DBG_VERBOSE, "XProcWorkaroundAllocShareable: bad flags")); | ||
1815 | return PVRSRV_ERROR_INVALID_PARAMS; | ||
1816 | } | ||
1817 | |||
1818 | if (gXProcWorkaroundShareData[gXProcWorkaroundShareIndex].ui32RefCount > 0) | ||
1819 | { | ||
1820 | PVR_DPF((PVR_DBG_VERBOSE, | ||
1821 | "XProcWorkaroundAllocShareable: re-using previously allocated pages")); | ||
1822 | |||
1823 | ui32AllocFlags &= ~PVRSRV_HAP_MAPTYPE_MASK; | ||
1824 | ui32AllocFlags |= PVRSRV_HAP_SINGLE_PROCESS; | ||
1825 | |||
1826 | if (ui32AllocFlags != gXProcWorkaroundShareData[gXProcWorkaroundShareIndex].ui32AllocFlags) | ||
1827 | { | ||
1828 | PVR_DPF((PVR_DBG_ERROR, | ||
1829 | "Can't! Flags don't match! (I had 0x%08x, you gave 0x%08x)", | ||
1830 | gXProcWorkaroundShareData[gXProcWorkaroundShareIndex].ui32AllocFlags, | ||
1831 | ui32AllocFlags)); | ||
1832 | return PVRSRV_ERROR_INVALID_PARAMS; | ||
1833 | } | ||
1834 | |||
1835 | if (ui32Size != gXProcWorkaroundShareData[gXProcWorkaroundShareIndex].ui32Size) | ||
1836 | { | ||
1837 | PVR_DPF((PVR_DBG_ERROR, | ||
1838 | "Can't! Size doesn't match!")); | ||
1839 | return PVRSRV_ERROR_INVALID_PARAMS; | ||
1840 | } | ||
1841 | |||
1842 | if (ui32PageSize != gXProcWorkaroundShareData[gXProcWorkaroundShareIndex].ui32PageSize) | ||
1843 | { | ||
1844 | PVR_DPF((PVR_DBG_ERROR, | ||
1845 | "Can't! Page Size doesn't match!")); | ||
1846 | return PVRSRV_ERROR_INVALID_PARAMS; | ||
1847 | } | ||
1848 | |||
1849 | *ppvCpuVAddr = gXProcWorkaroundShareData[gXProcWorkaroundShareIndex].pvCpuVAddr; | ||
1850 | *phOSMemHandle = gXProcWorkaroundShareData[gXProcWorkaroundShareIndex].hOSMemHandle; | ||
1851 | |||
1852 | gXProcWorkaroundShareData[gXProcWorkaroundShareIndex].ui32RefCount ++; | ||
1853 | |||
1854 | return PVRSRV_OK; | ||
1690 | } | 1855 | } |
1691 | else | 1856 | else |
1692 | { | 1857 | { |
1693 | ui32PSize = pMapping->uSize; | 1858 | if (psArena != IMG_NULL) |
1859 | { | ||
1860 | IMG_CPU_PHYADDR sCpuPAddr; | ||
1861 | IMG_SYS_PHYADDR sSysPAddr; | ||
1862 | |||
1863 | PVR_DPF((PVR_DBG_VERBOSE, | ||
1864 | "XProcWorkaroundAllocShareable: making a NEW allocation from local mem")); | ||
1865 | |||
1866 | if (!RA_Alloc (psArena, | ||
1867 | ui32Size, | ||
1868 | IMG_NULL, | ||
1869 | IMG_NULL, | ||
1870 | 0, | ||
1871 | ui32PageSize, | ||
1872 | 0, | ||
1873 | (IMG_UINTPTR_T *)&sSysPAddr.uiAddr)) | ||
1874 | { | ||
1875 | PVR_DPF((PVR_DBG_ERROR, "XProcWorkaroundAllocShareable: RA_Alloc(0x%x) FAILED", ui32Size)); | ||
1876 | return PVRSRV_ERROR_OUT_OF_MEMORY; | ||
1877 | } | ||
1878 | |||
1879 | sCpuPAddr = SysSysPAddrToCpuPAddr(sSysPAddr); | ||
1880 | if(OSReservePhys(sCpuPAddr, | ||
1881 | ui32Size, | ||
1882 | ui32AllocFlags, | ||
1883 | (IMG_VOID **)&gXProcWorkaroundShareData[gXProcWorkaroundShareIndex].pvCpuVAddr, | ||
1884 | &gXProcWorkaroundShareData[gXProcWorkaroundShareIndex].hOSMemHandle) != PVRSRV_OK) | ||
1885 | { | ||
1886 | PVR_DPF((PVR_DBG_ERROR, "XProcWorkaroundAllocShareable: OSReservePhys failed")); | ||
1887 | return PVRSRV_ERROR_OUT_OF_MEMORY; | ||
1888 | } | ||
1889 | gXProcWorkaroundShareData[gXProcWorkaroundShareIndex].sSysPAddr = sSysPAddr; | ||
1890 | } | ||
1891 | else | ||
1892 | { | ||
1893 | PVR_DPF((PVR_DBG_VERBOSE, | ||
1894 | "XProcWorkaroundAllocShareable: making a NEW allocation from OS")); | ||
1895 | |||
1896 | ui32AllocFlags &= ~PVRSRV_HAP_MAPTYPE_MASK; | ||
1897 | ui32AllocFlags |= PVRSRV_HAP_SINGLE_PROCESS; | ||
1898 | |||
1899 | |||
1900 | if (OSAllocPages(ui32AllocFlags, | ||
1901 | ui32Size, | ||
1902 | ui32PageSize, | ||
1903 | (IMG_VOID **)&gXProcWorkaroundShareData[gXProcWorkaroundShareIndex].pvCpuVAddr, | ||
1904 | &gXProcWorkaroundShareData[gXProcWorkaroundShareIndex].hOSMemHandle) != PVRSRV_OK) | ||
1905 | { | ||
1906 | PVR_DPF((PVR_DBG_ERROR, | ||
1907 | "XProcWorkaroundAllocShareable: OSAllocPages(0x%x) failed", | ||
1908 | ui32PageSize)); | ||
1909 | return PVRSRV_ERROR_OUT_OF_MEMORY; | ||
1910 | } | ||
1911 | } | ||
1912 | |||
1913 | gXProcWorkaroundShareData[gXProcWorkaroundShareIndex].psArena = psArena; | ||
1914 | gXProcWorkaroundShareData[gXProcWorkaroundShareIndex].ui32AllocFlags = ui32AllocFlags; | ||
1915 | gXProcWorkaroundShareData[gXProcWorkaroundShareIndex].ui32Size = ui32Size; | ||
1916 | gXProcWorkaroundShareData[gXProcWorkaroundShareIndex].ui32PageSize = ui32PageSize; | ||
1917 | |||
1918 | *ppvCpuVAddr = gXProcWorkaroundShareData[gXProcWorkaroundShareIndex].pvCpuVAddr; | ||
1919 | *phOSMemHandle = gXProcWorkaroundShareData[gXProcWorkaroundShareIndex].hOSMemHandle; | ||
1920 | |||
1921 | gXProcWorkaroundShareData[gXProcWorkaroundShareIndex].ui32RefCount ++; | ||
1922 | |||
1923 | return PVRSRV_OK; | ||
1694 | } | 1924 | } |
1925 | } | ||
1695 | 1926 | ||
1696 | PDUMPFREEPAGES(pMapping->pBMHeap, | 1927 | static PVRSRV_ERROR XProcWorkaroundHandleToSI(IMG_HANDLE hOSMemHandle, IMG_UINT32 *pui32SI) |
1697 | pMapping->DevVAddr, | 1928 | { |
1698 | ui32PSize, | 1929 | |
1699 | pMapping->pBMHeap->sDevArena.ui32DataPageSize, | 1930 | IMG_UINT32 ui32SI; |
1700 | (IMG_HANDLE)pMapping, | 1931 | IMG_BOOL bFound; |
1701 | (pMapping->ui32Flags & PVRSRV_MEM_INTERLEAVED) ? IMG_TRUE : IMG_FALSE); | 1932 | IMG_BOOL bErrorDups; |
1702 | #endif | ||
1703 | 1933 | ||
1704 | psDeviceNode = pMapping->pBMHeap->pBMContext->psDeviceNode; | 1934 | bFound = IMG_FALSE; |
1935 | bErrorDups = IMG_FALSE; | ||
1705 | 1936 | ||
1706 | psDeviceNode->pfnMMUFree (pMapping->pBMHeap->pMMUHeap, pMapping->DevVAddr, IMG_CAST_TO_DEVVADDR_UINT(pMapping->uSize)); | 1937 | for (ui32SI = 0; ui32SI < XPROC_WORKAROUND_NUM_SHAREABLES; ui32SI++) |
1938 | { | ||
1939 | if (gXProcWorkaroundShareData[ui32SI].ui32RefCount>0 && gXProcWorkaroundShareData[ui32SI].hOSMemHandle == hOSMemHandle) | ||
1940 | { | ||
1941 | if (bFound) | ||
1942 | { | ||
1943 | bErrorDups = IMG_TRUE; | ||
1944 | } | ||
1945 | else | ||
1946 | { | ||
1947 | *pui32SI = ui32SI; | ||
1948 | bFound = IMG_TRUE; | ||
1949 | } | ||
1950 | } | ||
1951 | } | ||
1952 | |||
1953 | if (bErrorDups || !bFound) | ||
1954 | { | ||
1955 | return PVRSRV_ERROR_BM_BAD_SHAREMEM_HANDLE; | ||
1956 | } | ||
1957 | |||
1958 | return PVRSRV_OK; | ||
1959 | } | ||
1960 | |||
1961 | static IMG_VOID XProcWorkaroundFreeShareable(IMG_HANDLE hOSMemHandle) | ||
1962 | { | ||
1963 | IMG_UINT32 ui32SI = (IMG_UINT32)((IMG_UINTPTR_T)hOSMemHandle & 0xffffU); | ||
1964 | PVRSRV_ERROR eError; | ||
1965 | |||
1966 | eError = XProcWorkaroundHandleToSI(hOSMemHandle, &ui32SI); | ||
1967 | if (eError != PVRSRV_OK) | ||
1968 | { | ||
1969 | PVR_DPF((PVR_DBG_ERROR, "bad handle")); | ||
1970 | return; | ||
1971 | } | ||
1972 | |||
1973 | gXProcWorkaroundShareData[ui32SI].ui32RefCount --; | ||
1974 | |||
1975 | PVR_DPF((PVR_DBG_VERBOSE, "Reduced refcount of SI[%d] from %d to %d", | ||
1976 | ui32SI, gXProcWorkaroundShareData[ui32SI].ui32RefCount+1, gXProcWorkaroundShareData[ui32SI].ui32RefCount)); | ||
1977 | |||
1978 | if (gXProcWorkaroundShareData[ui32SI].ui32RefCount == 0) | ||
1979 | { | ||
1980 | if (gXProcWorkaroundShareData[ui32SI].psArena != IMG_NULL) | ||
1981 | { | ||
1982 | IMG_SYS_PHYADDR sSysPAddr; | ||
1983 | |||
1984 | if (gXProcWorkaroundShareData[ui32SI].pvCpuVAddr != IMG_NULL) | ||
1985 | { | ||
1986 | OSUnReservePhys(gXProcWorkaroundShareData[ui32SI].pvCpuVAddr, | ||
1987 | gXProcWorkaroundShareData[ui32SI].ui32Size, | ||
1988 | gXProcWorkaroundShareData[ui32SI].ui32AllocFlags, | ||
1989 | gXProcWorkaroundShareData[ui32SI].hOSMemHandle); | ||
1990 | } | ||
1991 | sSysPAddr = gXProcWorkaroundShareData[ui32SI].sSysPAddr; | ||
1992 | RA_Free (gXProcWorkaroundShareData[ui32SI].psArena, | ||
1993 | sSysPAddr.uiAddr, | ||
1994 | IMG_FALSE); | ||
1995 | } | ||
1996 | else | ||
1997 | { | ||
1998 | PVR_DPF((PVR_DBG_VERBOSE, "freeing OS memory")); | ||
1999 | OSFreePages(gXProcWorkaroundShareData[ui32SI].ui32AllocFlags, | ||
2000 | gXProcWorkaroundShareData[ui32SI].ui32PageSize, | ||
2001 | gXProcWorkaroundShareData[ui32SI].pvCpuVAddr, | ||
2002 | gXProcWorkaroundShareData[ui32SI].hOSMemHandle); | ||
2003 | } | ||
2004 | } | ||
1707 | } | 2005 | } |
1708 | 2006 | ||
2007 | |||
1709 | static IMG_BOOL | 2008 | static IMG_BOOL |
1710 | BM_ImportMemory (IMG_VOID *pH, | 2009 | BM_ImportMemory (IMG_VOID *pH, |
1711 | IMG_SIZE_T uRequestSize, | 2010 | IMG_SIZE_T uRequestSize, |
@@ -1720,7 +2019,7 @@ BM_ImportMemory (IMG_VOID *pH, | |||
1720 | IMG_BOOL bResult; | 2019 | IMG_BOOL bResult; |
1721 | IMG_SIZE_T uSize; | 2020 | IMG_SIZE_T uSize; |
1722 | IMG_SIZE_T uPSize; | 2021 | IMG_SIZE_T uPSize; |
1723 | IMG_UINT32 uDevVAddrAlignment = 0; | 2022 | IMG_SIZE_T uDevVAddrAlignment = 0; |
1724 | 2023 | ||
1725 | PVR_DPF ((PVR_DBG_MESSAGE, | 2024 | PVR_DPF ((PVR_DBG_MESSAGE, |
1726 | "BM_ImportMemory (pBMContext=0x%x, uRequestSize=0x%x, uFlags=0x%x, uAlign=0x%x)", | 2025 | "BM_ImportMemory (pBMContext=0x%x, uRequestSize=0x%x, uFlags=0x%x, uAlign=0x%x)", |
@@ -1771,6 +2070,103 @@ BM_ImportMemory (IMG_VOID *pH, | |||
1771 | uPSize = pMapping->uSize; | 2070 | uPSize = pMapping->uSize; |
1772 | } | 2071 | } |
1773 | 2072 | ||
2073 | if (uFlags & PVRSRV_MEM_XPROC) | ||
2074 | { | ||
2075 | IMG_UINT32 ui32Attribs = pBMHeap->ui32Attribs | PVRSRV_MEM_XPROC; | ||
2076 | IMG_BOOL bBadBackingStoreType; | ||
2077 | |||
2078 | bBadBackingStoreType = IMG_TRUE; | ||
2079 | |||
2080 | if ((ui32Attribs & PVRSRV_BACKINGSTORE_SYSMEM_NONCONTIG) != 0) | ||
2081 | { | ||
2082 | #ifndef MAX | ||
2083 | #define MAX(a,b) ((a) > (b) ? (a) : (b)) | ||
2084 | #endif | ||
2085 | uDevVAddrAlignment = MAX(pBMHeap->sDevArena.ui32DataPageSize, HOST_PAGESIZE()); | ||
2086 | |||
2087 | |||
2088 | if (uPSize % uDevVAddrAlignment != 0) | ||
2089 | { | ||
2090 | PVR_DPF((PVR_DBG_ERROR, "Cannot use use this memory sharing workaround with allocations that might be suballocated")); | ||
2091 | goto fail_mapping_alloc; | ||
2092 | } | ||
2093 | uDevVAddrAlignment = 0; | ||
2094 | |||
2095 | |||
2096 | if (pMapping->ui32Flags & PVRSRV_HAP_CACHETYPE_MASK) | ||
2097 | { | ||
2098 | ui32Attribs &= ~PVRSRV_HAP_CACHETYPE_MASK; | ||
2099 | ui32Attribs |= (pMapping->ui32Flags & PVRSRV_HAP_CACHETYPE_MASK); | ||
2100 | } | ||
2101 | |||
2102 | |||
2103 | if (XProcWorkaroundAllocShareable(IMG_NULL, | ||
2104 | ui32Attribs, | ||
2105 | (IMG_UINT32)uPSize, | ||
2106 | pBMHeap->sDevArena.ui32DataPageSize, | ||
2107 | (IMG_VOID **)&pMapping->CpuVAddr, | ||
2108 | &pMapping->hOSMemHandle) != PVRSRV_OK) | ||
2109 | { | ||
2110 | PVR_DPF((PVR_DBG_ERROR, | ||
2111 | "BM_ImportMemory: XProcWorkaroundAllocShareable(0x%x) failed", | ||
2112 | uPSize)); | ||
2113 | goto fail_mapping_alloc; | ||
2114 | } | ||
2115 | |||
2116 | |||
2117 | |||
2118 | |||
2119 | pMapping->eCpuMemoryOrigin = hm_env; | ||
2120 | bBadBackingStoreType = IMG_FALSE; | ||
2121 | } | ||
2122 | |||
2123 | if ((ui32Attribs & PVRSRV_BACKINGSTORE_LOCALMEM_CONTIG) != 0) | ||
2124 | { | ||
2125 | uDevVAddrAlignment = pBMHeap->sDevArena.ui32DataPageSize; | ||
2126 | |||
2127 | if (uPSize % uDevVAddrAlignment != 0) | ||
2128 | { | ||
2129 | PVR_DPF((PVR_DBG_ERROR, "Cannot use use this memory sharing workaround with allocations that might be suballocated")); | ||
2130 | goto fail_mapping_alloc; | ||
2131 | } | ||
2132 | uDevVAddrAlignment = 0; | ||
2133 | |||
2134 | |||
2135 | if (pMapping->ui32Flags & PVRSRV_HAP_CACHETYPE_MASK) | ||
2136 | { | ||
2137 | ui32Attribs &= ~PVRSRV_HAP_CACHETYPE_MASK; | ||
2138 | ui32Attribs |= (pMapping->ui32Flags & PVRSRV_HAP_CACHETYPE_MASK); | ||
2139 | } | ||
2140 | |||
2141 | |||
2142 | if (XProcWorkaroundAllocShareable(pBMHeap->pLocalDevMemArena, | ||
2143 | ui32Attribs, | ||
2144 | (IMG_UINT32)uPSize, | ||
2145 | pBMHeap->sDevArena.ui32DataPageSize, | ||
2146 | (IMG_VOID **)&pMapping->CpuVAddr, | ||
2147 | &pMapping->hOSMemHandle) != PVRSRV_OK) | ||
2148 | { | ||
2149 | PVR_DPF((PVR_DBG_ERROR, | ||
2150 | "BM_ImportMemory: XProcWorkaroundAllocShareable(0x%x) failed", | ||
2151 | uPSize)); | ||
2152 | goto fail_mapping_alloc; | ||
2153 | } | ||
2154 | |||
2155 | |||
2156 | |||
2157 | |||
2158 | pMapping->eCpuMemoryOrigin = hm_env; | ||
2159 | bBadBackingStoreType = IMG_FALSE; | ||
2160 | } | ||
2161 | |||
2162 | if (bBadBackingStoreType) | ||
2163 | { | ||
2164 | PVR_DPF((PVR_DBG_ERROR, "Cannot use this memory sharing workaround with this type of backing store")); | ||
2165 | goto fail_mapping_alloc; | ||
2166 | } | ||
2167 | } | ||
2168 | else | ||
2169 | |||
1774 | 2170 | ||
1775 | 2171 | ||
1776 | if(pBMHeap->ui32Attribs & PVRSRV_BACKINGSTORE_SYSMEM_NONCONTIG) | 2172 | if(pBMHeap->ui32Attribs & PVRSRV_BACKINGSTORE_SYSMEM_NONCONTIG) |
@@ -1854,7 +2250,7 @@ BM_ImportMemory (IMG_VOID *pH, | |||
1854 | pMapping, | 2250 | pMapping, |
1855 | IMG_NULL, | 2251 | IMG_NULL, |
1856 | uFlags, | 2252 | uFlags, |
1857 | uDevVAddrAlignment, | 2253 | (IMG_UINT32)uDevVAddrAlignment, |
1858 | &pMapping->DevVAddr); | 2254 | &pMapping->DevVAddr); |
1859 | if (!bResult) | 2255 | if (!bResult) |
1860 | { | 2256 | { |
@@ -1892,7 +2288,12 @@ fail_dev_mem_alloc: | |||
1892 | uPSize = pMapping->uSize; | 2288 | uPSize = pMapping->uSize; |
1893 | } | 2289 | } |
1894 | 2290 | ||
1895 | if(pBMHeap->ui32Attribs & PVRSRV_BACKINGSTORE_SYSMEM_NONCONTIG) | 2291 | if (uFlags & PVRSRV_MEM_XPROC) |
2292 | { | ||
2293 | XProcWorkaroundFreeShareable(pMapping->hOSMemHandle); | ||
2294 | } | ||
2295 | else | ||
2296 | if(pBMHeap->ui32Attribs & PVRSRV_BACKINGSTORE_SYSMEM_NONCONTIG) | ||
1896 | { | 2297 | { |
1897 | OSFreePages(pBMHeap->ui32Attribs, | 2298 | OSFreePages(pBMHeap->ui32Attribs, |
1898 | uPSize, | 2299 | uPSize, |
@@ -1959,7 +2360,12 @@ BM_FreeMemory (IMG_VOID *h, IMG_UINTPTR_T _base, BM_MAPPING *psMapping) | |||
1959 | uPSize = psMapping->uSize; | 2360 | uPSize = psMapping->uSize; |
1960 | } | 2361 | } |
1961 | 2362 | ||
1962 | if(pBMHeap->ui32Attribs & PVRSRV_BACKINGSTORE_SYSMEM_NONCONTIG) | 2363 | if (psMapping->ui32Flags & PVRSRV_MEM_XPROC) |
2364 | { | ||
2365 | XProcWorkaroundFreeShareable(psMapping->hOSMemHandle); | ||
2366 | } | ||
2367 | else | ||
2368 | if(pBMHeap->ui32Attribs & PVRSRV_BACKINGSTORE_SYSMEM_NONCONTIG) | ||
1963 | { | 2369 | { |
1964 | OSFreePages(pBMHeap->ui32Attribs, | 2370 | OSFreePages(pBMHeap->ui32Attribs, |
1965 | uPSize, | 2371 | uPSize, |
@@ -2002,6 +2408,7 @@ IMG_VOID BM_GetPhysPageAddr(PVRSRV_KERNEL_MEM_INFO *psMemInfo, | |||
2002 | 2408 | ||
2003 | PVR_ASSERT((sDevVPageAddr.uiAddr & 0xFFF) == 0); | 2409 | PVR_ASSERT((sDevVPageAddr.uiAddr & 0xFFF) == 0); |
2004 | 2410 | ||
2411 | |||
2005 | psDeviceNode = ((BM_BUF*)psMemInfo->sMemBlk.hBuffer)->pMapping->pBMHeap->pBMContext->psDeviceNode; | 2412 | psDeviceNode = ((BM_BUF*)psMemInfo->sMemBlk.hBuffer)->pMapping->pBMHeap->pBMContext->psDeviceNode; |
2006 | 2413 | ||
2007 | *psDevPAddr = psDeviceNode->pfnMMUGetPhysPageAddr(((BM_BUF*)psMemInfo->sMemBlk.hBuffer)->pMapping->pBMHeap->pMMUHeap, | 2414 | *psDevPAddr = psDeviceNode->pfnMMUGetPhysPageAddr(((BM_BUF*)psMemInfo->sMemBlk.hBuffer)->pMapping->pBMHeap->pMMUHeap, |
diff --git a/drivers/gpu/pvr/buffer_manager.h b/drivers/gpu/pvr/buffer_manager.h index 1467cd3939f..b821545e946 100644 --- a/drivers/gpu/pvr/buffer_manager.h +++ b/drivers/gpu/pvr/buffer_manager.h | |||
@@ -202,6 +202,11 @@ IMG_VOID BM_Export(BM_HANDLE hBuf); | |||
202 | 202 | ||
203 | IMG_VOID BM_FreeExport(BM_HANDLE hBuf, IMG_UINT32 ui32Flags); | 203 | IMG_VOID BM_FreeExport(BM_HANDLE hBuf, IMG_UINT32 ui32Flags); |
204 | 204 | ||
205 | PVRSRV_ERROR BM_XProcWorkaroundSetShareIndex(IMG_UINT32 ui32Index); | ||
206 | PVRSRV_ERROR BM_XProcWorkaroundUnsetShareIndex(IMG_UINT32 ui32Index); | ||
207 | PVRSRV_ERROR BM_XProcWorkaroundFindNewBufferAndSetShareIndex(IMG_UINT32 *pui32Index); | ||
208 | |||
209 | |||
205 | #if defined(__cplusplus) | 210 | #if defined(__cplusplus) |
206 | } | 211 | } |
207 | #endif | 212 | #endif |
diff --git a/drivers/gpu/pvr/dbgdrvif.h b/drivers/gpu/pvr/dbgdrvif.h index 6029ef965ee..dab4d13eb48 100644 --- a/drivers/gpu/pvr/dbgdrvif.h +++ b/drivers/gpu/pvr/dbgdrvif.h | |||
@@ -1,26 +1,26 @@ | |||
1 | /********************************************************************** | 1 | /********************************************************************** |
2 | * | 2 | * |
3 | * Copyright(c) 2008 Imagination Technologies Ltd. All rights reserved. | 3 | * Copyright(c) 2008 Imagination Technologies Ltd. All rights reserved. |
4 | * | 4 | * |
5 | * This program is free software; you can redistribute it and/or modify it | 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, | 6 | * under the terms and conditions of the GNU General Public License, |
7 | * version 2, as published by the Free Software Foundation. | 7 | * version 2, as published by the Free Software Foundation. |
8 | * | 8 | * |
9 | * This program is distributed in the hope it will be useful but, except | 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 | 10 | * as otherwise stated in writing, without any warranty; without even the |
11 | * implied warranty of merchantability or fitness for a particular purpose. | 11 | * implied warranty of merchantability or fitness for a particular purpose. |
12 | * See the GNU General Public License for more details. | 12 | * See the GNU General Public License for more details. |
13 | * | 13 | * |
14 | * You should have received a copy of the GNU General Public License along with | 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., | 15 | * this program; if not, write to the Free Software Foundation, Inc., |
16 | * 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA. | 16 | * 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA. |
17 | * | 17 | * |
18 | * The full GNU General Public License is included in this distribution in | 18 | * The full GNU General Public License is included in this distribution in |
19 | * the file called "COPYING". | 19 | * the file called "COPYING". |
20 | * | 20 | * |
21 | * Contact Information: | 21 | * Contact Information: |
22 | * Imagination Technologies Ltd. <gpl-support@imgtec.com> | 22 | * Imagination Technologies Ltd. <gpl-support@imgtec.com> |
23 | * Home Park Estate, Kings Langley, Herts, WD4 8LZ, UK | 23 | * Home Park Estate, Kings Langley, Herts, WD4 8LZ, UK |
24 | * | 24 | * |
25 | ******************************************************************************/ | 25 | ******************************************************************************/ |
26 | 26 | ||
@@ -28,8 +28,21 @@ | |||
28 | #define _DBGDRVIF_ | 28 | #define _DBGDRVIF_ |
29 | 29 | ||
30 | 30 | ||
31 | #if defined(__linux__) | ||
32 | |||
33 | #define FILE_DEVICE_UNKNOWN 0 | ||
34 | #define METHOD_BUFFERED 0 | ||
35 | #define FILE_ANY_ACCESS 0 | ||
36 | |||
37 | #define CTL_CODE( DeviceType, Function, Method, Access ) (Function) | ||
38 | #define MAKEIOCTLINDEX(i) ((i) & 0xFFF) | ||
39 | |||
40 | #else | ||
41 | |||
31 | #include "ioctldef.h" | 42 | #include "ioctldef.h" |
32 | 43 | ||
44 | #endif | ||
45 | |||
33 | #define DEBUG_CAPMODE_FRAMED 0x00000001UL | 46 | #define DEBUG_CAPMODE_FRAMED 0x00000001UL |
34 | #define DEBUG_CAPMODE_CONTINUOUS 0x00000002UL | 47 | #define DEBUG_CAPMODE_CONTINUOUS 0x00000002UL |
35 | #define DEBUG_CAPMODE_HOTKEY 0x00000004UL | 48 | #define DEBUG_CAPMODE_HOTKEY 0x00000004UL |
@@ -238,17 +251,17 @@ typedef struct _DBG_IN_WRITE_LF_ | |||
238 | 251 | ||
239 | typedef struct _DBG_STREAM_CONTROL_ | 252 | typedef struct _DBG_STREAM_CONTROL_ |
240 | { | 253 | { |
241 | IMG_BOOL bInitPhaseComplete; | 254 | IMG_BOOL bInitPhaseComplete; |
242 | IMG_UINT32 ui32Flags; | 255 | IMG_UINT32 ui32Flags; |
243 | 256 | ||
244 | IMG_UINT32 ui32CapMode; | 257 | IMG_UINT32 ui32CapMode; |
245 | IMG_UINT32 ui32OutMode; | 258 | IMG_UINT32 ui32OutMode; |
246 | IMG_UINT32 ui32DebugLevel; | 259 | IMG_UINT32 ui32DebugLevel; |
247 | IMG_UINT32 ui32DefaultMode; | 260 | IMG_UINT32 ui32DefaultMode; |
248 | IMG_UINT32 ui32Start; | 261 | IMG_UINT32 ui32Start; |
249 | IMG_UINT32 ui32End; | 262 | IMG_UINT32 ui32End; |
250 | IMG_UINT32 ui32Current; | 263 | IMG_UINT32 ui32Current; |
251 | IMG_UINT32 ui32SampleRate; | 264 | IMG_UINT32 ui32SampleRate; |
252 | IMG_UINT32 ui32Reserved; | 265 | IMG_UINT32 ui32Reserved; |
253 | } DBG_STREAM_CONTROL, *PDBG_STREAM_CONTROL; | 266 | } DBG_STREAM_CONTROL, *PDBG_STREAM_CONTROL; |
254 | typedef struct _DBG_STREAM_ | 267 | typedef struct _DBG_STREAM_ |
@@ -262,13 +275,13 @@ typedef struct _DBG_STREAM_ | |||
262 | IMG_UINT32 ui32RPtr; | 275 | IMG_UINT32 ui32RPtr; |
263 | IMG_UINT32 ui32WPtr; | 276 | IMG_UINT32 ui32WPtr; |
264 | IMG_UINT32 ui32DataWritten; | 277 | IMG_UINT32 ui32DataWritten; |
265 | IMG_UINT32 ui32Marker; | 278 | IMG_UINT32 ui32Marker; |
266 | IMG_UINT32 ui32InitPhaseWOff; | 279 | IMG_UINT32 ui32InitPhaseWOff; |
267 | 280 | ||
268 | 281 | ||
269 | 282 | ||
270 | 283 | ||
271 | IMG_CHAR szName[30]; | 284 | IMG_CHAR szName[30]; |
272 | } DBG_STREAM,*PDBG_STREAM; | 285 | } DBG_STREAM,*PDBG_STREAM; |
273 | 286 | ||
274 | typedef struct _DBGKM_CONNECT_NOTIFIER_ | 287 | typedef struct _DBGKM_CONNECT_NOTIFIER_ |
@@ -279,36 +292,36 @@ typedef struct _DBGKM_CONNECT_NOTIFIER_ | |||
279 | typedef struct _DBGKM_SERVICE_TABLE_ | 292 | typedef struct _DBGKM_SERVICE_TABLE_ |
280 | { | 293 | { |
281 | IMG_UINT32 ui32Size; | 294 | IMG_UINT32 ui32Size; |
282 | IMG_VOID * (IMG_CALLCONV *pfnCreateStream) (IMG_CHAR * pszName,IMG_UINT32 ui32CapMode,IMG_UINT32 ui32OutMode,IMG_UINT32 ui32Flags,IMG_UINT32 ui32Pages); | 295 | IMG_VOID * (IMG_CALLCONV *pfnCreateStream) (IMG_CHAR * pszName,IMG_UINT32 ui32CapMode,IMG_UINT32 ui32OutMode,IMG_UINT32 ui32Flags,IMG_UINT32 ui32Pages); |
283 | IMG_VOID (IMG_CALLCONV *pfnDestroyStream) (PDBG_STREAM psStream); | 296 | IMG_VOID (IMG_CALLCONV *pfnDestroyStream) (PDBG_STREAM psStream); |
284 | IMG_VOID * (IMG_CALLCONV *pfnFindStream) (IMG_CHAR * pszName, IMG_BOOL bResetInitBuffer); | 297 | IMG_VOID * (IMG_CALLCONV *pfnFindStream) (IMG_CHAR * pszName, IMG_BOOL bResetInitBuffer); |
285 | IMG_UINT32 (IMG_CALLCONV *pfnWriteString) (PDBG_STREAM psStream,IMG_CHAR * pszString,IMG_UINT32 ui32Level); | 298 | IMG_UINT32 (IMG_CALLCONV *pfnWriteString) (PDBG_STREAM psStream,IMG_CHAR * pszString,IMG_UINT32 ui32Level); |
286 | IMG_UINT32 (IMG_CALLCONV *pfnReadString) (PDBG_STREAM psStream,IMG_CHAR * pszString,IMG_UINT32 ui32Limit); | 299 | IMG_UINT32 (IMG_CALLCONV *pfnReadString) (PDBG_STREAM psStream,IMG_CHAR * pszString,IMG_UINT32 ui32Limit); |
287 | IMG_UINT32 (IMG_CALLCONV *pfnWriteBIN) (PDBG_STREAM psStream,IMG_UINT8 *pui8InBuf,IMG_UINT32 ui32InBuffSize,IMG_UINT32 ui32Level); | 300 | IMG_UINT32 (IMG_CALLCONV *pfnWriteBIN) (PDBG_STREAM psStream,IMG_UINT8 *pui8InBuf,IMG_UINT32 ui32InBuffSize,IMG_UINT32 ui32Level); |
288 | IMG_UINT32 (IMG_CALLCONV *pfnReadBIN) (PDBG_STREAM psStream,IMG_BOOL bReadInitBuffer, IMG_UINT32 ui32OutBufferSize,IMG_UINT8 *pui8OutBuf); | 301 | IMG_UINT32 (IMG_CALLCONV *pfnReadBIN) (PDBG_STREAM psStream,IMG_BOOL bReadInitBuffer, IMG_UINT32 ui32OutBufferSize,IMG_UINT8 *pui8OutBuf); |
289 | IMG_VOID (IMG_CALLCONV *pfnSetCaptureMode) (PDBG_STREAM psStream,IMG_UINT32 ui32CapMode,IMG_UINT32 ui32Start,IMG_UINT32 ui32Stop,IMG_UINT32 ui32SampleRate); | 302 | IMG_VOID (IMG_CALLCONV *pfnSetCaptureMode) (PDBG_STREAM psStream,IMG_UINT32 ui32CapMode,IMG_UINT32 ui32Start,IMG_UINT32 ui32Stop,IMG_UINT32 ui32SampleRate); |
290 | IMG_VOID (IMG_CALLCONV *pfnSetOutputMode) (PDBG_STREAM psStream,IMG_UINT32 ui32OutMode); | 303 | IMG_VOID (IMG_CALLCONV *pfnSetOutputMode) (PDBG_STREAM psStream,IMG_UINT32 ui32OutMode); |
291 | IMG_VOID (IMG_CALLCONV *pfnSetDebugLevel) (PDBG_STREAM psStream,IMG_UINT32 ui32DebugLevel); | 304 | IMG_VOID (IMG_CALLCONV *pfnSetDebugLevel) (PDBG_STREAM psStream,IMG_UINT32 ui32DebugLevel); |
292 | IMG_VOID (IMG_CALLCONV *pfnSetFrame) (PDBG_STREAM psStream,IMG_UINT32 ui32Frame); | 305 | IMG_VOID (IMG_CALLCONV *pfnSetFrame) (PDBG_STREAM psStream,IMG_UINT32 ui32Frame); |
293 | IMG_UINT32 (IMG_CALLCONV *pfnGetFrame) (PDBG_STREAM psStream); | 306 | IMG_UINT32 (IMG_CALLCONV *pfnGetFrame) (PDBG_STREAM psStream); |
294 | IMG_VOID (IMG_CALLCONV *pfnOverrideMode) (PDBG_STREAM psStream,IMG_UINT32 ui32Mode); | 307 | IMG_VOID (IMG_CALLCONV *pfnOverrideMode) (PDBG_STREAM psStream,IMG_UINT32 ui32Mode); |
295 | IMG_VOID (IMG_CALLCONV *pfnDefaultMode) (PDBG_STREAM psStream); | 308 | IMG_VOID (IMG_CALLCONV *pfnDefaultMode) (PDBG_STREAM psStream); |
296 | IMG_UINT32 (IMG_CALLCONV *pfnDBGDrivWrite2) (PDBG_STREAM psStream,IMG_UINT8 *pui8InBuf,IMG_UINT32 ui32InBuffSize,IMG_UINT32 ui32Level); | 309 | IMG_UINT32 (IMG_CALLCONV *pfnDBGDrivWrite2) (PDBG_STREAM psStream,IMG_UINT8 *pui8InBuf,IMG_UINT32 ui32InBuffSize,IMG_UINT32 ui32Level); |
297 | IMG_UINT32 (IMG_CALLCONV *pfnWriteStringCM) (PDBG_STREAM psStream,IMG_CHAR * pszString,IMG_UINT32 ui32Level); | 310 | IMG_UINT32 (IMG_CALLCONV *pfnWriteStringCM) (PDBG_STREAM psStream,IMG_CHAR * pszString,IMG_UINT32 ui32Level); |
298 | IMG_UINT32 (IMG_CALLCONV *pfnWriteBINCM) (PDBG_STREAM psStream,IMG_UINT8 *pui8InBuf,IMG_UINT32 ui32InBuffSize,IMG_UINT32 ui32Level); | 311 | IMG_UINT32 (IMG_CALLCONV *pfnWriteBINCM) (PDBG_STREAM psStream,IMG_UINT8 *pui8InBuf,IMG_UINT32 ui32InBuffSize,IMG_UINT32 ui32Level); |
299 | IMG_VOID (IMG_CALLCONV *pfnSetMarker) (PDBG_STREAM psStream,IMG_UINT32 ui32Marker); | 312 | IMG_VOID (IMG_CALLCONV *pfnSetMarker) (PDBG_STREAM psStream,IMG_UINT32 ui32Marker); |
300 | IMG_UINT32 (IMG_CALLCONV *pfnGetMarker) (PDBG_STREAM psStream); | 313 | IMG_UINT32 (IMG_CALLCONV *pfnGetMarker) (PDBG_STREAM psStream); |
301 | IMG_VOID (IMG_CALLCONV *pfnStartInitPhase) (PDBG_STREAM psStream); | 314 | IMG_VOID (IMG_CALLCONV *pfnStartInitPhase) (PDBG_STREAM psStream); |
302 | IMG_VOID (IMG_CALLCONV *pfnStopInitPhase) (PDBG_STREAM psStream); | 315 | IMG_VOID (IMG_CALLCONV *pfnStopInitPhase) (PDBG_STREAM psStream); |
303 | IMG_BOOL (IMG_CALLCONV *pfnIsCaptureFrame) (PDBG_STREAM psStream, IMG_BOOL bCheckPreviousFrame); | 316 | IMG_BOOL (IMG_CALLCONV *pfnIsCaptureFrame) (PDBG_STREAM psStream, IMG_BOOL bCheckPreviousFrame); |
304 | IMG_UINT32 (IMG_CALLCONV *pfnWriteLF) (PDBG_STREAM psStream, IMG_UINT8 *pui8InBuf, IMG_UINT32 ui32InBuffSize, IMG_UINT32 ui32Level, IMG_UINT32 ui32Flags); | 317 | IMG_UINT32 (IMG_CALLCONV *pfnWriteLF) (PDBG_STREAM psStream, IMG_UINT8 *pui8InBuf, IMG_UINT32 ui32InBuffSize, IMG_UINT32 ui32Level, IMG_UINT32 ui32Flags); |
305 | IMG_UINT32 (IMG_CALLCONV *pfnReadLF) (PDBG_STREAM psStream, IMG_UINT32 ui32OutBuffSize, IMG_UINT8 *pui8OutBuf); | 318 | IMG_UINT32 (IMG_CALLCONV *pfnReadLF) (PDBG_STREAM psStream, IMG_UINT32 ui32OutBuffSize, IMG_UINT8 *pui8OutBuf); |
306 | IMG_UINT32 (IMG_CALLCONV *pfnGetStreamOffset) (PDBG_STREAM psStream); | 319 | IMG_UINT32 (IMG_CALLCONV *pfnGetStreamOffset) (PDBG_STREAM psStream); |
307 | IMG_VOID (IMG_CALLCONV *pfnSetStreamOffset) (PDBG_STREAM psStream, IMG_UINT32 ui32StreamOffset); | 320 | IMG_VOID (IMG_CALLCONV *pfnSetStreamOffset) (PDBG_STREAM psStream, IMG_UINT32 ui32StreamOffset); |
308 | IMG_BOOL (IMG_CALLCONV *pfnIsLastCaptureFrame) (PDBG_STREAM psStream); | 321 | IMG_BOOL (IMG_CALLCONV *pfnIsLastCaptureFrame) (PDBG_STREAM psStream); |
309 | IMG_VOID (IMG_CALLCONV *pfnWaitForEvent) (DBG_EVENT eEvent); | 322 | IMG_VOID (IMG_CALLCONV *pfnWaitForEvent) (DBG_EVENT eEvent); |
310 | IMG_VOID (IMG_CALLCONV *pfnSetConnectNotifier) (DBGKM_CONNECT_NOTIFIER fn_notifier); | 323 | IMG_VOID (IMG_CALLCONV *pfnSetConnectNotifier) (DBGKM_CONNECT_NOTIFIER fn_notifier); |
311 | IMG_UINT32 (IMG_CALLCONV *pfnWritePersist) (PDBG_STREAM psStream,IMG_UINT8 *pui8InBuf,IMG_UINT32 ui32InBuffSize,IMG_UINT32 ui32Level); | 324 | IMG_UINT32 (IMG_CALLCONV *pfnWritePersist) (PDBG_STREAM psStream,IMG_UINT8 *pui8InBuf,IMG_UINT32 ui32InBuffSize,IMG_UINT32 ui32Level); |
312 | } DBGKM_SERVICE_TABLE, *PDBGKM_SERVICE_TABLE; | 325 | } DBGKM_SERVICE_TABLE, *PDBGKM_SERVICE_TABLE; |
313 | 326 | ||
314 | 327 | ||
diff --git a/drivers/gpu/pvr/device.h b/drivers/gpu/pvr/device.h index f41bd9e26e6..fbc26a6a66d 100644 --- a/drivers/gpu/pvr/device.h +++ b/drivers/gpu/pvr/device.h | |||
@@ -222,6 +222,8 @@ typedef struct _PVRSRV_DEVICE_NODE_ | |||
222 | #endif | 222 | #endif |
223 | IMG_DEV_PHYADDR (*pfnMMUGetPhysPageAddr)(MMU_HEAP *pMMUHeap, IMG_DEV_VIRTADDR sDevVPageAddr); | 223 | IMG_DEV_PHYADDR (*pfnMMUGetPhysPageAddr)(MMU_HEAP *pMMUHeap, IMG_DEV_VIRTADDR sDevVPageAddr); |
224 | IMG_DEV_PHYADDR (*pfnMMUGetPDDevPAddr)(MMU_CONTEXT *pMMUContext); | 224 | IMG_DEV_PHYADDR (*pfnMMUGetPDDevPAddr)(MMU_CONTEXT *pMMUContext); |
225 | IMG_VOID (*pfnMMUGetCacheFlushRange)(MMU_CONTEXT *pMMUContext, IMG_UINT32 *pui32RangeMask); | ||
226 | IMG_VOID (*pfnMMUGetPDPhysAddr)(MMU_CONTEXT *pMMUContext, IMG_DEV_PHYADDR *psDevPAddr); | ||
225 | 227 | ||
226 | 228 | ||
227 | PVRSRV_ERROR (*pfnAllocMemTilingRange)(struct _PVRSRV_DEVICE_NODE_ *psDeviceNode, | 229 | PVRSRV_ERROR (*pfnAllocMemTilingRange)(struct _PVRSRV_DEVICE_NODE_ *psDeviceNode, |
diff --git a/drivers/gpu/pvr/deviceclass.c b/drivers/gpu/pvr/deviceclass.c index 471ce0cf12b..effcdfbf055 100644 --- a/drivers/gpu/pvr/deviceclass.c +++ b/drivers/gpu/pvr/deviceclass.c | |||
@@ -557,6 +557,17 @@ static PVRSRV_ERROR CloseDCDeviceCallBack(IMG_PVOID pvParam, | |||
557 | psDCPerContextInfo = (PVRSRV_DISPLAYCLASS_PERCONTEXT_INFO *)pvParam; | 557 | psDCPerContextInfo = (PVRSRV_DISPLAYCLASS_PERCONTEXT_INFO *)pvParam; |
558 | psDCInfo = psDCPerContextInfo->psDCInfo; | 558 | psDCInfo = psDCPerContextInfo->psDCInfo; |
559 | 559 | ||
560 | if(psDCInfo->sSystemBuffer.sDeviceClassBuffer.ui32MemMapRefCount != 0) | ||
561 | { | ||
562 | PVR_DPF((PVR_DBG_ERROR,"CloseDCDeviceCallBack: system buffer (0x%p) still mapped (refcount = %d)", | ||
563 | &psDCInfo->sSystemBuffer.sDeviceClassBuffer, | ||
564 | psDCInfo->sSystemBuffer.sDeviceClassBuffer.ui32MemMapRefCount)); | ||
565 | #if 0 | ||
566 | |||
567 | return PVRSRV_ERROR_STILL_MAPPED; | ||
568 | #endif | ||
569 | } | ||
570 | |||
560 | psDCInfo->ui32RefCount--; | 571 | psDCInfo->ui32RefCount--; |
561 | if(psDCInfo->ui32RefCount == 0) | 572 | if(psDCInfo->ui32RefCount == 0) |
562 | { | 573 | { |
@@ -658,6 +669,7 @@ PVRSRV_ERROR PVRSRVOpenDCDeviceKM (PVRSRV_PER_PROCESS_DATA *psPerProc, | |||
658 | } | 669 | } |
659 | 670 | ||
660 | psDCInfo->sSystemBuffer.sDeviceClassBuffer.psKernelSyncInfo->ui32RefCount++; | 671 | psDCInfo->sSystemBuffer.sDeviceClassBuffer.psKernelSyncInfo->ui32RefCount++; |
672 | psDCInfo->sSystemBuffer.sDeviceClassBuffer.ui32MemMapRefCount = 0; | ||
661 | } | 673 | } |
662 | 674 | ||
663 | psDCPerContextInfo->psDCInfo = psDCInfo; | 675 | psDCPerContextInfo->psDCInfo = psDCInfo; |
@@ -812,7 +824,6 @@ static PVRSRV_ERROR DestroyDCSwapChain(PVRSRV_DC_SWAPCHAIN *psSwapChain) | |||
812 | PVRSRV_DISPLAYCLASS_INFO *psDCInfo = psSwapChain->psDCInfo; | 824 | PVRSRV_DISPLAYCLASS_INFO *psDCInfo = psSwapChain->psDCInfo; |
813 | IMG_UINT32 i; | 825 | IMG_UINT32 i; |
814 | 826 | ||
815 | |||
816 | 827 | ||
817 | if( psDCInfo->psDCSwapChainShared ) | 828 | if( psDCInfo->psDCSwapChainShared ) |
818 | { | 829 | { |
@@ -873,9 +884,24 @@ static PVRSRV_ERROR DestroyDCSwapChainRefCallBack(IMG_PVOID pvParam, IMG_UINT32 | |||
873 | { | 884 | { |
874 | PVRSRV_DC_SWAPCHAIN_REF *psSwapChainRef = (PVRSRV_DC_SWAPCHAIN_REF *) pvParam; | 885 | PVRSRV_DC_SWAPCHAIN_REF *psSwapChainRef = (PVRSRV_DC_SWAPCHAIN_REF *) pvParam; |
875 | PVRSRV_ERROR eError = PVRSRV_OK; | 886 | PVRSRV_ERROR eError = PVRSRV_OK; |
887 | IMG_UINT32 i; | ||
876 | 888 | ||
877 | PVR_UNREFERENCED_PARAMETER(ui32Param); | 889 | PVR_UNREFERENCED_PARAMETER(ui32Param); |
878 | 890 | ||
891 | for (i = 0; i < psSwapChainRef->psSwapChain->ui32BufferCount; i++) | ||
892 | { | ||
893 | if (psSwapChainRef->psSwapChain->asBuffer[i].sDeviceClassBuffer.ui32MemMapRefCount != 0) | ||
894 | { | ||
895 | PVR_DPF((PVR_DBG_ERROR, "DestroyDCSwapChainRefCallBack: swapchain (0x%p) still mapped (ui32MemMapRefCount = %d)", | ||
896 | &psSwapChainRef->psSwapChain->asBuffer[i].sDeviceClassBuffer, | ||
897 | psSwapChainRef->psSwapChain->asBuffer[i].sDeviceClassBuffer.ui32MemMapRefCount)); | ||
898 | #if 0 | ||
899 | |||
900 | return PVRSRV_ERROR_STILL_MAPPED; | ||
901 | #endif | ||
902 | } | ||
903 | } | ||
904 | |||
879 | if(--psSwapChainRef->psSwapChain->ui32RefCount == 0) | 905 | if(--psSwapChainRef->psSwapChain->ui32RefCount == 0) |
880 | { | 906 | { |
881 | eError = DestroyDCSwapChain(psSwapChainRef->psSwapChain); | 907 | eError = DestroyDCSwapChain(psSwapChainRef->psSwapChain); |
@@ -1313,6 +1339,7 @@ PVRSRV_ERROR PVRSRVSwapToDCBufferKM(IMG_HANDLE hDeviceKM, | |||
1313 | IMG_UINT32 ui32NumSrcSyncs = 1; | 1339 | IMG_UINT32 ui32NumSrcSyncs = 1; |
1314 | PVRSRV_KERNEL_SYNC_INFO *apsSrcSync[2]; | 1340 | PVRSRV_KERNEL_SYNC_INFO *apsSrcSync[2]; |
1315 | PVRSRV_COMMAND *psCommand; | 1341 | PVRSRV_COMMAND *psCommand; |
1342 | SYS_DATA *psSysData; | ||
1316 | 1343 | ||
1317 | if(!hDeviceKM || !hBuffer || !psClipRect) | 1344 | if(!hDeviceKM || !hBuffer || !psClipRect) |
1318 | { | 1345 | { |
@@ -1320,14 +1347,6 @@ PVRSRV_ERROR PVRSRVSwapToDCBufferKM(IMG_HANDLE hDeviceKM, | |||
1320 | return PVRSRV_ERROR_INVALID_PARAMS; | 1347 | return PVRSRV_ERROR_INVALID_PARAMS; |
1321 | } | 1348 | } |
1322 | 1349 | ||
1323 | #if defined(SUPPORT_LMA) | ||
1324 | eError = PVRSRVPowerLock(KERNEL_ID, IMG_FALSE); | ||
1325 | if(eError != PVRSRV_OK) | ||
1326 | { | ||
1327 | return eError; | ||
1328 | } | ||
1329 | #endif | ||
1330 | |||
1331 | psBuffer = (PVRSRV_DC_BUFFER*)hBuffer; | 1350 | psBuffer = (PVRSRV_DC_BUFFER*)hBuffer; |
1332 | psDCInfo = DCDeviceHandleToDCInfo(hDeviceKM); | 1351 | psDCInfo = DCDeviceHandleToDCInfo(hDeviceKM); |
1333 | 1352 | ||
@@ -1427,28 +1446,15 @@ PVRSRV_ERROR PVRSRVSwapToDCBufferKM(IMG_HANDLE hDeviceKM, | |||
1427 | 1446 | ||
1428 | 1447 | ||
1429 | 1448 | ||
1449 | SysAcquireData(&psSysData); | ||
1450 | eError = OSScheduleMISR(psSysData); | ||
1430 | 1451 | ||
1431 | 1452 | if (eError != PVRSRV_OK) | |
1432 | |||
1433 | |||
1434 | |||
1435 | |||
1436 | |||
1437 | LOOP_UNTIL_TIMEOUT(MAX_HW_TIME_US) | ||
1438 | { | 1453 | { |
1439 | if(PVRSRVProcessQueues(KERNEL_ID, IMG_FALSE) != PVRSRV_ERROR_PROCESSING_BLOCKED) | 1454 | PVR_DPF((PVR_DBG_ERROR,"PVRSRVSwapToDCBufferKM: Failed to schedule MISR")); |
1440 | { | 1455 | goto Exit; |
1441 | goto ProcessedQueues; | 1456 | } |
1442 | } | ||
1443 | OSWaitus(MAX_HW_TIME_US/WAIT_TRY_COUNT); | ||
1444 | } END_LOOP_UNTIL_TIMEOUT(); | ||
1445 | |||
1446 | PVR_DPF((PVR_DBG_ERROR,"PVRSRVSwapToDCBufferKM: Failed to process queues")); | ||
1447 | |||
1448 | eError = PVRSRV_ERROR_FAILED_TO_PROCESS_QUEUE; | ||
1449 | goto Exit; | ||
1450 | 1457 | ||
1451 | ProcessedQueues: | ||
1452 | 1458 | ||
1453 | psBuffer->psSwapChain->psLastFlipBuffer = psBuffer; | 1459 | psBuffer->psSwapChain->psLastFlipBuffer = psBuffer; |
1454 | 1460 | ||
@@ -1459,9 +1465,6 @@ Exit: | |||
1459 | eError = PVRSRV_ERROR_RETRY; | 1465 | eError = PVRSRV_ERROR_RETRY; |
1460 | } | 1466 | } |
1461 | 1467 | ||
1462 | #if defined(SUPPORT_LMA) | ||
1463 | PVRSRVPowerUnlock(KERNEL_ID); | ||
1464 | #endif | ||
1465 | return eError; | 1468 | return eError; |
1466 | } | 1469 | } |
1467 | 1470 | ||
@@ -1481,6 +1484,7 @@ PVRSRV_ERROR PVRSRVSwapToDCSystemKM(IMG_HANDLE hDeviceKM, | |||
1481 | PVRSRV_COMMAND *psCommand; | 1484 | PVRSRV_COMMAND *psCommand; |
1482 | IMG_BOOL bAddReferenceToLast = IMG_TRUE; | 1485 | IMG_BOOL bAddReferenceToLast = IMG_TRUE; |
1483 | IMG_UINT16 ui16SwapCommandID = DC_FLIP_COMMAND; | 1486 | IMG_UINT16 ui16SwapCommandID = DC_FLIP_COMMAND; |
1487 | SYS_DATA *psSysData; | ||
1484 | 1488 | ||
1485 | if(!hDeviceKM || !hSwapChainRef) | 1489 | if(!hDeviceKM || !hSwapChainRef) |
1486 | { | 1490 | { |
@@ -1488,14 +1492,6 @@ PVRSRV_ERROR PVRSRVSwapToDCSystemKM(IMG_HANDLE hDeviceKM, | |||
1488 | return PVRSRV_ERROR_INVALID_PARAMS; | 1492 | return PVRSRV_ERROR_INVALID_PARAMS; |
1489 | } | 1493 | } |
1490 | 1494 | ||
1491 | #if defined(SUPPORT_LMA) | ||
1492 | eError = PVRSRVPowerLock(KERNEL_ID, IMG_FALSE); | ||
1493 | if(eError != PVRSRV_OK) | ||
1494 | { | ||
1495 | return eError; | ||
1496 | } | ||
1497 | #endif | ||
1498 | |||
1499 | psDCInfo = DCDeviceHandleToDCInfo(hDeviceKM); | 1495 | psDCInfo = DCDeviceHandleToDCInfo(hDeviceKM); |
1500 | psSwapChainRef = (PVRSRV_DC_SWAPCHAIN_REF*)hSwapChainRef; | 1496 | psSwapChainRef = (PVRSRV_DC_SWAPCHAIN_REF*)hSwapChainRef; |
1501 | psSwapChain = psSwapChainRef->psSwapChain; | 1497 | psSwapChain = psSwapChainRef->psSwapChain; |
@@ -1581,28 +1577,15 @@ PVRSRV_ERROR PVRSRVSwapToDCSystemKM(IMG_HANDLE hDeviceKM, | |||
1581 | } | 1577 | } |
1582 | 1578 | ||
1583 | 1579 | ||
1580 | SysAcquireData(&psSysData); | ||
1581 | eError = OSScheduleMISR(psSysData); | ||
1584 | 1582 | ||
1585 | 1583 | if (eError != PVRSRV_OK) | |
1586 | |||
1587 | |||
1588 | |||
1589 | |||
1590 | |||
1591 | LOOP_UNTIL_TIMEOUT(MAX_HW_TIME_US) | ||
1592 | { | 1584 | { |
1593 | if(PVRSRVProcessQueues(KERNEL_ID, IMG_FALSE) != PVRSRV_ERROR_PROCESSING_BLOCKED) | 1585 | PVR_DPF((PVR_DBG_ERROR,"PVRSRVSwapToDCSystemKM: Failed to schedule MISR")); |
1594 | { | 1586 | goto Exit; |
1595 | goto ProcessedQueues; | 1587 | } |
1596 | } | ||
1597 | |||
1598 | OSWaitus(MAX_HW_TIME_US/WAIT_TRY_COUNT); | ||
1599 | } END_LOOP_UNTIL_TIMEOUT(); | ||
1600 | |||
1601 | PVR_DPF((PVR_DBG_ERROR,"PVRSRVSwapToDCSystemKM: Failed to process queues")); | ||
1602 | eError = PVRSRV_ERROR_FAILED_TO_PROCESS_QUEUE; | ||
1603 | goto Exit; | ||
1604 | 1588 | ||
1605 | ProcessedQueues: | ||
1606 | 1589 | ||
1607 | psSwapChain->psLastFlipBuffer = &psDCInfo->sSystemBuffer; | 1590 | psSwapChain->psLastFlipBuffer = &psDCInfo->sSystemBuffer; |
1608 | 1591 | ||
@@ -1615,9 +1598,6 @@ Exit: | |||
1615 | eError = PVRSRV_ERROR_RETRY; | 1598 | eError = PVRSRV_ERROR_RETRY; |
1616 | } | 1599 | } |
1617 | 1600 | ||
1618 | #if defined(SUPPORT_LMA) | ||
1619 | PVRSRVPowerUnlock(KERNEL_ID); | ||
1620 | #endif | ||
1621 | return eError; | 1601 | return eError; |
1622 | } | 1602 | } |
1623 | 1603 | ||
@@ -1736,17 +1716,29 @@ static PVRSRV_ERROR CloseBCDeviceCallBack(IMG_PVOID pvParam, | |||
1736 | { | 1716 | { |
1737 | PVRSRV_BUFFERCLASS_PERCONTEXT_INFO *psBCPerContextInfo; | 1717 | PVRSRV_BUFFERCLASS_PERCONTEXT_INFO *psBCPerContextInfo; |
1738 | PVRSRV_BUFFERCLASS_INFO *psBCInfo; | 1718 | PVRSRV_BUFFERCLASS_INFO *psBCInfo; |
1719 | IMG_UINT32 i; | ||
1739 | 1720 | ||
1740 | PVR_UNREFERENCED_PARAMETER(ui32Param); | 1721 | PVR_UNREFERENCED_PARAMETER(ui32Param); |
1741 | 1722 | ||
1742 | psBCPerContextInfo = (PVRSRV_BUFFERCLASS_PERCONTEXT_INFO *)pvParam; | 1723 | psBCPerContextInfo = (PVRSRV_BUFFERCLASS_PERCONTEXT_INFO *)pvParam; |
1724 | |||
1743 | psBCInfo = psBCPerContextInfo->psBCInfo; | 1725 | psBCInfo = psBCPerContextInfo->psBCInfo; |
1744 | 1726 | ||
1727 | for (i = 0; i < psBCInfo->ui32BufferCount; i++) | ||
1728 | { | ||
1729 | if (psBCInfo->psBuffer[i].sDeviceClassBuffer.ui32MemMapRefCount != 0) | ||
1730 | { | ||
1731 | PVR_DPF((PVR_DBG_ERROR, "CloseBCDeviceCallBack: buffer %d (0x%p) still mapped (ui32MemMapRefCount = %d)", | ||
1732 | i, | ||
1733 | &psBCInfo->psBuffer[i].sDeviceClassBuffer, | ||
1734 | psBCInfo->psBuffer[i].sDeviceClassBuffer.ui32MemMapRefCount)); | ||
1735 | return PVRSRV_ERROR_STILL_MAPPED; | ||
1736 | } | ||
1737 | } | ||
1738 | |||
1745 | psBCInfo->ui32RefCount--; | 1739 | psBCInfo->ui32RefCount--; |
1746 | if(psBCInfo->ui32RefCount == 0) | 1740 | if(psBCInfo->ui32RefCount == 0) |
1747 | { | 1741 | { |
1748 | IMG_UINT32 i; | ||
1749 | |||
1750 | 1742 | ||
1751 | psBCInfo->psFuncTable->pfnCloseBCDevice(psBCInfo->ui32DeviceID, psBCInfo->hExtDevice); | 1743 | psBCInfo->psFuncTable->pfnCloseBCDevice(psBCInfo->ui32DeviceID, psBCInfo->hExtDevice); |
1752 | 1744 | ||
@@ -1900,6 +1892,7 @@ PVRSRV_ERROR PVRSRVOpenBCDeviceKM (PVRSRV_PER_PROCESS_DATA *psPerProc, | |||
1900 | psBCInfo->psBuffer[i].sDeviceClassBuffer.pfnGetBufferAddr = psBCInfo->psFuncTable->pfnGetBufferAddr; | 1892 | psBCInfo->psBuffer[i].sDeviceClassBuffer.pfnGetBufferAddr = psBCInfo->psFuncTable->pfnGetBufferAddr; |
1901 | psBCInfo->psBuffer[i].sDeviceClassBuffer.hDevMemContext = psBCInfo->hDevMemContext; | 1893 | psBCInfo->psBuffer[i].sDeviceClassBuffer.hDevMemContext = psBCInfo->hDevMemContext; |
1902 | psBCInfo->psBuffer[i].sDeviceClassBuffer.hExtDevice = psBCInfo->hExtDevice; | 1894 | psBCInfo->psBuffer[i].sDeviceClassBuffer.hExtDevice = psBCInfo->hExtDevice; |
1895 | psBCInfo->psBuffer[i].sDeviceClassBuffer.ui32MemMapRefCount = 0; | ||
1903 | } | 1896 | } |
1904 | } | 1897 | } |
1905 | 1898 | ||
diff --git a/drivers/gpu/pvr/devicemem.c b/drivers/gpu/pvr/devicemem.c index aeba0deb0cb..a14308b9351 100644 --- a/drivers/gpu/pvr/devicemem.c +++ b/drivers/gpu/pvr/devicemem.c | |||
@@ -52,12 +52,18 @@ typedef struct _PVRSRV_DC_MAPINFO_ | |||
52 | PVRSRV_DEVICE_NODE *psDeviceNode; | 52 | PVRSRV_DEVICE_NODE *psDeviceNode; |
53 | IMG_UINT32 ui32RangeIndex; | 53 | IMG_UINT32 ui32RangeIndex; |
54 | IMG_UINT32 ui32TilingStride; | 54 | IMG_UINT32 ui32TilingStride; |
55 | PVRSRV_DEVICECLASS_BUFFER *psDeviceClassBuffer; | ||
55 | } PVRSRV_DC_MAPINFO; | 56 | } PVRSRV_DC_MAPINFO; |
56 | 57 | ||
58 | static IMG_UINT32 g_ui32SyncUID = 0; | ||
57 | 59 | ||
58 | IMG_EXPORT | 60 | IMG_EXPORT |
59 | PVRSRV_ERROR IMG_CALLCONV PVRSRVGetDeviceMemHeapsKM(IMG_HANDLE hDevCookie, | 61 | PVRSRV_ERROR IMG_CALLCONV PVRSRVGetDeviceMemHeapsKM(IMG_HANDLE hDevCookie, |
62 | #if defined (SUPPORT_SID_INTERFACE) | ||
63 | PVRSRV_HEAP_INFO_KM *psHeapInfo) | ||
64 | #else | ||
60 | PVRSRV_HEAP_INFO *psHeapInfo) | 65 | PVRSRV_HEAP_INFO *psHeapInfo) |
66 | #endif | ||
61 | { | 67 | { |
62 | PVRSRV_DEVICE_NODE *psDeviceNode; | 68 | PVRSRV_DEVICE_NODE *psDeviceNode; |
63 | IMG_UINT32 ui32HeapCount; | 69 | IMG_UINT32 ui32HeapCount; |
@@ -105,7 +111,11 @@ PVRSRV_ERROR IMG_CALLCONV PVRSRVCreateDeviceMemContextKM(IMG_HANDLE hDevCook | |||
105 | PVRSRV_PER_PROCESS_DATA *psPerProc, | 111 | PVRSRV_PER_PROCESS_DATA *psPerProc, |
106 | IMG_HANDLE *phDevMemContext, | 112 | IMG_HANDLE *phDevMemContext, |
107 | IMG_UINT32 *pui32ClientHeapCount, | 113 | IMG_UINT32 *pui32ClientHeapCount, |
114 | #if defined (SUPPORT_SID_INTERFACE) | ||
115 | PVRSRV_HEAP_INFO_KM *psHeapInfo, | ||
116 | #else | ||
108 | PVRSRV_HEAP_INFO *psHeapInfo, | 117 | PVRSRV_HEAP_INFO *psHeapInfo, |
118 | #endif | ||
109 | IMG_BOOL *pbCreated, | 119 | IMG_BOOL *pbCreated, |
110 | IMG_BOOL *pbShared) | 120 | IMG_BOOL *pbShared) |
111 | { | 121 | { |
@@ -117,7 +127,7 @@ PVRSRV_ERROR IMG_CALLCONV PVRSRVCreateDeviceMemContextKM(IMG_HANDLE hDevCook | |||
117 | IMG_DEV_PHYADDR sPDDevPAddr; | 127 | IMG_DEV_PHYADDR sPDDevPAddr; |
118 | IMG_UINT32 i; | 128 | IMG_UINT32 i; |
119 | 129 | ||
120 | #if !defined(PVR_SECURE_HANDLES) | 130 | #if !defined(PVR_SECURE_HANDLES) && !defined (SUPPORT_SID_INTERFACE) |
121 | PVR_UNREFERENCED_PARAMETER(pbShared); | 131 | PVR_UNREFERENCED_PARAMETER(pbShared); |
122 | #endif | 132 | #endif |
123 | 133 | ||
@@ -164,7 +174,7 @@ PVRSRV_ERROR IMG_CALLCONV PVRSRVCreateDeviceMemContextKM(IMG_HANDLE hDevCook | |||
164 | psHeapInfo[ui32ClientHeapCount].sDevVAddrBase = psDeviceMemoryHeap[i].sDevVAddrBase; | 174 | psHeapInfo[ui32ClientHeapCount].sDevVAddrBase = psDeviceMemoryHeap[i].sDevVAddrBase; |
165 | psHeapInfo[ui32ClientHeapCount].ui32HeapByteSize = psDeviceMemoryHeap[i].ui32HeapSize; | 175 | psHeapInfo[ui32ClientHeapCount].ui32HeapByteSize = psDeviceMemoryHeap[i].ui32HeapSize; |
166 | psHeapInfo[ui32ClientHeapCount].ui32Attribs = psDeviceMemoryHeap[i].ui32Attribs; | 176 | psHeapInfo[ui32ClientHeapCount].ui32Attribs = psDeviceMemoryHeap[i].ui32Attribs; |
167 | #if defined(PVR_SECURE_HANDLES) | 177 | #if defined(PVR_SECURE_HANDLES) || defined (SUPPORT_SID_INTERFACE) |
168 | pbShared[ui32ClientHeapCount] = IMG_TRUE; | 178 | pbShared[ui32ClientHeapCount] = IMG_TRUE; |
169 | #endif | 179 | #endif |
170 | ui32ClientHeapCount++; | 180 | ui32ClientHeapCount++; |
@@ -172,8 +182,20 @@ PVRSRV_ERROR IMG_CALLCONV PVRSRVCreateDeviceMemContextKM(IMG_HANDLE hDevCook | |||
172 | } | 182 | } |
173 | case DEVICE_MEMORY_HEAP_PERCONTEXT: | 183 | case DEVICE_MEMORY_HEAP_PERCONTEXT: |
174 | { | 184 | { |
175 | hDevMemHeap = BM_CreateHeap(hDevMemContext, | 185 | if (psDeviceMemoryHeap[i].ui32HeapSize > 0) |
176 | &psDeviceMemoryHeap[i]); | 186 | { |
187 | hDevMemHeap = BM_CreateHeap(hDevMemContext, | ||
188 | &psDeviceMemoryHeap[i]); | ||
189 | if (hDevMemHeap == IMG_NULL) | ||
190 | { | ||
191 | BM_DestroyContext(hDevMemContext, IMG_NULL); | ||
192 | return PVRSRV_ERROR_OUT_OF_MEMORY; | ||
193 | } | ||
194 | } | ||
195 | else | ||
196 | { | ||
197 | hDevMemHeap = IMG_NULL; | ||
198 | } | ||
177 | 199 | ||
178 | 200 | ||
179 | psHeapInfo[ui32ClientHeapCount].ui32HeapID = psDeviceMemoryHeap[i].ui32HeapID; | 201 | psHeapInfo[ui32ClientHeapCount].ui32HeapID = psDeviceMemoryHeap[i].ui32HeapID; |
@@ -181,7 +203,7 @@ PVRSRV_ERROR IMG_CALLCONV PVRSRVCreateDeviceMemContextKM(IMG_HANDLE hDevCook | |||
181 | psHeapInfo[ui32ClientHeapCount].sDevVAddrBase = psDeviceMemoryHeap[i].sDevVAddrBase; | 203 | psHeapInfo[ui32ClientHeapCount].sDevVAddrBase = psDeviceMemoryHeap[i].sDevVAddrBase; |
182 | psHeapInfo[ui32ClientHeapCount].ui32HeapByteSize = psDeviceMemoryHeap[i].ui32HeapSize; | 204 | psHeapInfo[ui32ClientHeapCount].ui32HeapByteSize = psDeviceMemoryHeap[i].ui32HeapSize; |
183 | psHeapInfo[ui32ClientHeapCount].ui32Attribs = psDeviceMemoryHeap[i].ui32Attribs; | 205 | psHeapInfo[ui32ClientHeapCount].ui32Attribs = psDeviceMemoryHeap[i].ui32Attribs; |
184 | #if defined(PVR_SECURE_HANDLES) | 206 | #if defined(PVR_SECURE_HANDLES) || defined (SUPPORT_SID_INTERFACE) |
185 | pbShared[ui32ClientHeapCount] = IMG_FALSE; | 207 | pbShared[ui32ClientHeapCount] = IMG_FALSE; |
186 | #endif | 208 | #endif |
187 | 209 | ||
@@ -215,7 +237,11 @@ IMG_EXPORT | |||
215 | PVRSRV_ERROR IMG_CALLCONV PVRSRVGetDeviceMemHeapInfoKM(IMG_HANDLE hDevCookie, | 237 | PVRSRV_ERROR IMG_CALLCONV PVRSRVGetDeviceMemHeapInfoKM(IMG_HANDLE hDevCookie, |
216 | IMG_HANDLE hDevMemContext, | 238 | IMG_HANDLE hDevMemContext, |
217 | IMG_UINT32 *pui32ClientHeapCount, | 239 | IMG_UINT32 *pui32ClientHeapCount, |
240 | #if defined (SUPPORT_SID_INTERFACE) | ||
241 | PVRSRV_HEAP_INFO_KM *psHeapInfo, | ||
242 | #else | ||
218 | PVRSRV_HEAP_INFO *psHeapInfo, | 243 | PVRSRV_HEAP_INFO *psHeapInfo, |
244 | #endif | ||
219 | IMG_BOOL *pbShared) | 245 | IMG_BOOL *pbShared) |
220 | { | 246 | { |
221 | PVRSRV_DEVICE_NODE *psDeviceNode; | 247 | PVRSRV_DEVICE_NODE *psDeviceNode; |
@@ -224,7 +250,7 @@ PVRSRV_ERROR IMG_CALLCONV PVRSRVGetDeviceMemHeapInfoKM(IMG_HANDLE hDevCookie | |||
224 | IMG_HANDLE hDevMemHeap; | 250 | IMG_HANDLE hDevMemHeap; |
225 | IMG_UINT32 i; | 251 | IMG_UINT32 i; |
226 | 252 | ||
227 | #if !defined(PVR_SECURE_HANDLES) | 253 | #if !defined(PVR_SECURE_HANDLES) && !defined (SUPPORT_SID_INTERFACE) |
228 | PVR_UNREFERENCED_PARAMETER(pbShared); | 254 | PVR_UNREFERENCED_PARAMETER(pbShared); |
229 | #endif | 255 | #endif |
230 | 256 | ||
@@ -259,7 +285,7 @@ PVRSRV_ERROR IMG_CALLCONV PVRSRVGetDeviceMemHeapInfoKM(IMG_HANDLE hDevCookie | |||
259 | psHeapInfo[ui32ClientHeapCount].sDevVAddrBase = psDeviceMemoryHeap[i].sDevVAddrBase; | 285 | psHeapInfo[ui32ClientHeapCount].sDevVAddrBase = psDeviceMemoryHeap[i].sDevVAddrBase; |
260 | psHeapInfo[ui32ClientHeapCount].ui32HeapByteSize = psDeviceMemoryHeap[i].ui32HeapSize; | 286 | psHeapInfo[ui32ClientHeapCount].ui32HeapByteSize = psDeviceMemoryHeap[i].ui32HeapSize; |
261 | psHeapInfo[ui32ClientHeapCount].ui32Attribs = psDeviceMemoryHeap[i].ui32Attribs; | 287 | psHeapInfo[ui32ClientHeapCount].ui32Attribs = psDeviceMemoryHeap[i].ui32Attribs; |
262 | #if defined(PVR_SECURE_HANDLES) | 288 | #if defined(PVR_SECURE_HANDLES) || defined (SUPPORT_SID_INTERFACE) |
263 | pbShared[ui32ClientHeapCount] = IMG_TRUE; | 289 | pbShared[ui32ClientHeapCount] = IMG_TRUE; |
264 | #endif | 290 | #endif |
265 | ui32ClientHeapCount++; | 291 | ui32ClientHeapCount++; |
@@ -267,8 +293,20 @@ PVRSRV_ERROR IMG_CALLCONV PVRSRVGetDeviceMemHeapInfoKM(IMG_HANDLE hDevCookie | |||
267 | } | 293 | } |
268 | case DEVICE_MEMORY_HEAP_PERCONTEXT: | 294 | case DEVICE_MEMORY_HEAP_PERCONTEXT: |
269 | { | 295 | { |
270 | hDevMemHeap = BM_CreateHeap(hDevMemContext, | 296 | if (psDeviceMemoryHeap[i].ui32HeapSize > 0) |
271 | &psDeviceMemoryHeap[i]); | 297 | { |
298 | hDevMemHeap = BM_CreateHeap(hDevMemContext, | ||
299 | &psDeviceMemoryHeap[i]); | ||
300 | |||
301 | if (hDevMemHeap == IMG_NULL) | ||
302 | { | ||
303 | return PVRSRV_ERROR_OUT_OF_MEMORY; | ||
304 | } | ||
305 | } | ||
306 | else | ||
307 | { | ||
308 | hDevMemHeap = IMG_NULL; | ||
309 | } | ||
272 | 310 | ||
273 | 311 | ||
274 | psHeapInfo[ui32ClientHeapCount].ui32HeapID = psDeviceMemoryHeap[i].ui32HeapID; | 312 | psHeapInfo[ui32ClientHeapCount].ui32HeapID = psDeviceMemoryHeap[i].ui32HeapID; |
@@ -276,7 +314,7 @@ PVRSRV_ERROR IMG_CALLCONV PVRSRVGetDeviceMemHeapInfoKM(IMG_HANDLE hDevCookie | |||
276 | psHeapInfo[ui32ClientHeapCount].sDevVAddrBase = psDeviceMemoryHeap[i].sDevVAddrBase; | 314 | psHeapInfo[ui32ClientHeapCount].sDevVAddrBase = psDeviceMemoryHeap[i].sDevVAddrBase; |
277 | psHeapInfo[ui32ClientHeapCount].ui32HeapByteSize = psDeviceMemoryHeap[i].ui32HeapSize; | 315 | psHeapInfo[ui32ClientHeapCount].ui32HeapByteSize = psDeviceMemoryHeap[i].ui32HeapSize; |
278 | psHeapInfo[ui32ClientHeapCount].ui32Attribs = psDeviceMemoryHeap[i].ui32Attribs; | 316 | psHeapInfo[ui32ClientHeapCount].ui32Attribs = psDeviceMemoryHeap[i].ui32Attribs; |
279 | #if defined(PVR_SECURE_HANDLES) | 317 | #if defined(PVR_SECURE_HANDLES) || defined (SUPPORT_SID_INTERFACE) |
280 | pbShared[ui32ClientHeapCount] = IMG_FALSE; | 318 | pbShared[ui32ClientHeapCount] = IMG_FALSE; |
281 | #endif | 319 | #endif |
282 | 320 | ||
@@ -354,7 +392,7 @@ static PVRSRV_ERROR AllocDeviceMem(IMG_HANDLE hDevCookie, | |||
354 | 392 | ||
355 | psMemInfo->sDevVAddr = psMemBlock->sDevVirtAddr; | 393 | psMemInfo->sDevVAddr = psMemBlock->sDevVirtAddr; |
356 | 394 | ||
357 | psMemInfo->ui32AllocSize = ui32Size; | 395 | psMemInfo->uAllocSize = ui32Size; |
358 | 396 | ||
359 | 397 | ||
360 | psMemInfo->pvSysBackupBuffer = IMG_NULL; | 398 | psMemInfo->pvSysBackupBuffer = IMG_NULL; |
@@ -387,7 +425,7 @@ static PVRSRV_ERROR FreeDeviceMem2(PVRSRV_KERNEL_MEM_INFO *psMemInfo, IMG_BOOL b | |||
387 | if ((psMemInfo->pvSysBackupBuffer) && bFromAllocator) | 425 | if ((psMemInfo->pvSysBackupBuffer) && bFromAllocator) |
388 | { | 426 | { |
389 | 427 | ||
390 | OSFreeMem(PVRSRV_OS_PAGEABLE_HEAP, psMemInfo->ui32AllocSize, psMemInfo->pvSysBackupBuffer, IMG_NULL); | 428 | OSFreeMem(PVRSRV_OS_PAGEABLE_HEAP, psMemInfo->uAllocSize, psMemInfo->pvSysBackupBuffer, IMG_NULL); |
391 | psMemInfo->pvSysBackupBuffer = IMG_NULL; | 429 | psMemInfo->pvSysBackupBuffer = IMG_NULL; |
392 | } | 430 | } |
393 | 431 | ||
@@ -415,7 +453,7 @@ static PVRSRV_ERROR FreeDeviceMem(PVRSRV_KERNEL_MEM_INFO *psMemInfo) | |||
415 | if(psMemInfo->pvSysBackupBuffer) | 453 | if(psMemInfo->pvSysBackupBuffer) |
416 | { | 454 | { |
417 | 455 | ||
418 | OSFreeMem(PVRSRV_OS_PAGEABLE_HEAP, psMemInfo->ui32AllocSize, psMemInfo->pvSysBackupBuffer, IMG_NULL); | 456 | OSFreeMem(PVRSRV_OS_PAGEABLE_HEAP, psMemInfo->uAllocSize, psMemInfo->pvSysBackupBuffer, IMG_NULL); |
419 | psMemInfo->pvSysBackupBuffer = IMG_NULL; | 457 | psMemInfo->pvSysBackupBuffer = IMG_NULL; |
420 | } | 458 | } |
421 | 459 | ||
@@ -492,13 +530,14 @@ PVRSRV_ERROR IMG_CALLCONV PVRSRVAllocSyncInfoKM(IMG_HANDLE hDevCookie, | |||
492 | PDUMPMEM(psKernelSyncInfo->psSyncDataMemInfoKM->pvLinAddrKM, | 530 | PDUMPMEM(psKernelSyncInfo->psSyncDataMemInfoKM->pvLinAddrKM, |
493 | psKernelSyncInfo->psSyncDataMemInfoKM, | 531 | psKernelSyncInfo->psSyncDataMemInfoKM, |
494 | 0, | 532 | 0, |
495 | psKernelSyncInfo->psSyncDataMemInfoKM->ui32AllocSize, | 533 | (IMG_UINT32)psKernelSyncInfo->psSyncDataMemInfoKM->uAllocSize, |
496 | PDUMP_FLAGS_CONTINUOUS, | 534 | PDUMP_FLAGS_CONTINUOUS, |
497 | MAKEUNIQUETAG(psKernelSyncInfo->psSyncDataMemInfoKM)); | 535 | MAKEUNIQUETAG(psKernelSyncInfo->psSyncDataMemInfoKM)); |
498 | #endif | 536 | #endif |
499 | 537 | ||
500 | psKernelSyncInfo->sWriteOpsCompleteDevVAddr.uiAddr = psKernelSyncInfo->psSyncDataMemInfoKM->sDevVAddr.uiAddr + offsetof(PVRSRV_SYNC_DATA, ui32WriteOpsComplete); | 538 | psKernelSyncInfo->sWriteOpsCompleteDevVAddr.uiAddr = psKernelSyncInfo->psSyncDataMemInfoKM->sDevVAddr.uiAddr + offsetof(PVRSRV_SYNC_DATA, ui32WriteOpsComplete); |
501 | psKernelSyncInfo->sReadOpsCompleteDevVAddr.uiAddr = psKernelSyncInfo->psSyncDataMemInfoKM->sDevVAddr.uiAddr + offsetof(PVRSRV_SYNC_DATA, ui32ReadOpsComplete); | 539 | psKernelSyncInfo->sReadOpsCompleteDevVAddr.uiAddr = psKernelSyncInfo->psSyncDataMemInfoKM->sDevVAddr.uiAddr + offsetof(PVRSRV_SYNC_DATA, ui32ReadOpsComplete); |
540 | psKernelSyncInfo->ui32UID = g_ui32SyncUID++; | ||
502 | 541 | ||
503 | 542 | ||
504 | psKernelSyncInfo->psSyncDataMemInfoKM->psKernelSyncInfo = IMG_NULL; | 543 | psKernelSyncInfo->psSyncDataMemInfoKM->psKernelSyncInfo = IMG_NULL; |
@@ -514,14 +553,14 @@ IMG_EXPORT | |||
514 | PVRSRV_ERROR IMG_CALLCONV PVRSRVFreeSyncInfoKM(PVRSRV_KERNEL_SYNC_INFO *psKernelSyncInfo) | 553 | PVRSRV_ERROR IMG_CALLCONV PVRSRVFreeSyncInfoKM(PVRSRV_KERNEL_SYNC_INFO *psKernelSyncInfo) |
515 | { | 554 | { |
516 | PVRSRV_ERROR eError; | 555 | PVRSRV_ERROR eError; |
517 | 556 | ||
518 | if (psKernelSyncInfo->ui32RefCount != 0) | 557 | if (psKernelSyncInfo->ui32RefCount != 0) |
519 | { | 558 | { |
520 | PVR_DPF((PVR_DBG_ERROR, "oops: sync info ref count not zero at destruction")); | 559 | PVR_DPF((PVR_DBG_ERROR, "oops: sync info ref count not zero at destruction")); |
521 | 560 | ||
522 | return PVRSRV_ERROR_OUT_OF_MEMORY; | 561 | return PVRSRV_ERROR_OUT_OF_MEMORY; |
523 | } | 562 | } |
524 | 563 | ||
525 | eError = FreeDeviceMem(psKernelSyncInfo->psSyncDataMemInfoKM); | 564 | eError = FreeDeviceMem(psKernelSyncInfo->psSyncDataMemInfoKM); |
526 | (IMG_VOID)OSFreeMem(PVRSRV_PAGEABLE_SELECT, sizeof(PVRSRV_KERNEL_SYNC_INFO), psKernelSyncInfo, IMG_NULL); | 565 | (IMG_VOID)OSFreeMem(PVRSRV_PAGEABLE_SELECT, sizeof(PVRSRV_KERNEL_SYNC_INFO), psKernelSyncInfo, IMG_NULL); |
527 | 566 | ||
@@ -558,9 +597,13 @@ static PVRSRV_ERROR FreeMemCallBackCommon(PVRSRV_KERNEL_MEM_INFO *psMemInfo, | |||
558 | psMemInfo->ui32RefCount--; | 597 | psMemInfo->ui32RefCount--; |
559 | 598 | ||
560 | 599 | ||
561 | if((psMemInfo->ui32Flags & PVRSRV_MEM_EXPORTED) && (bFromAllocator == IMG_TRUE)) | 600 | if(((psMemInfo->ui32Flags & PVRSRV_MEM_EXPORTED) != 0) && (bFromAllocator == IMG_TRUE)) |
562 | { | 601 | { |
602 | #if defined (SUPPORT_SID_INTERFACE) | ||
603 | IMG_SID hMemInfo = 0; | ||
604 | #else | ||
563 | IMG_HANDLE hMemInfo = IMG_NULL; | 605 | IMG_HANDLE hMemInfo = IMG_NULL; |
606 | #endif | ||
564 | 607 | ||
565 | 608 | ||
566 | eError = PVRSRVFindHandle(KERNEL_HANDLE_BASE, | 609 | eError = PVRSRVFindHandle(KERNEL_HANDLE_BASE, |
@@ -611,8 +654,10 @@ static PVRSRV_ERROR FreeMemCallBackCommon(PVRSRV_KERNEL_MEM_INFO *psMemInfo, | |||
611 | } | 654 | } |
612 | 655 | ||
613 | 656 | ||
614 | 657 | if (eError == PVRSRV_OK) | |
615 | eError = FreeDeviceMem2(psMemInfo, bFromAllocator); | 658 | { |
659 | eError = FreeDeviceMem2(psMemInfo, bFromAllocator); | ||
660 | } | ||
616 | 661 | ||
617 | return eError; | 662 | return eError; |
618 | } | 663 | } |
@@ -821,8 +866,8 @@ IMG_EXPORT | |||
821 | PVRSRV_ERROR IMG_CALLCONV PVRSRVWrapExtMemoryKM(IMG_HANDLE hDevCookie, | 866 | PVRSRV_ERROR IMG_CALLCONV PVRSRVWrapExtMemoryKM(IMG_HANDLE hDevCookie, |
822 | PVRSRV_PER_PROCESS_DATA *psPerProc, | 867 | PVRSRV_PER_PROCESS_DATA *psPerProc, |
823 | IMG_HANDLE hDevMemContext, | 868 | IMG_HANDLE hDevMemContext, |
824 | IMG_SIZE_T ui32ByteSize, | 869 | IMG_SIZE_T uByteSize, |
825 | IMG_SIZE_T ui32PageOffset, | 870 | IMG_SIZE_T uPageOffset, |
826 | IMG_BOOL bPhysContig, | 871 | IMG_BOOL bPhysContig, |
827 | IMG_SYS_PHYADDR *psExtSysPAddr, | 872 | IMG_SYS_PHYADDR *psExtSysPAddr, |
828 | IMG_VOID *pvLinAddr, | 873 | IMG_VOID *pvLinAddr, |
@@ -842,11 +887,11 @@ PVRSRV_ERROR IMG_CALLCONV PVRSRVWrapExtMemoryKM(IMG_HANDLE hDevCookie, | |||
842 | IMG_VOID *pvPageAlignedCPUVAddr; | 887 | IMG_VOID *pvPageAlignedCPUVAddr; |
843 | IMG_SYS_PHYADDR *psIntSysPAddr = IMG_NULL; | 888 | IMG_SYS_PHYADDR *psIntSysPAddr = IMG_NULL; |
844 | IMG_HANDLE hOSWrapMem = IMG_NULL; | 889 | IMG_HANDLE hOSWrapMem = IMG_NULL; |
845 | DEVICE_MEMORY_HEAP_INFO *psDeviceMemoryHeap; | 890 | DEVICE_MEMORY_HEAP_INFO *psDeviceMemoryHeap; |
846 | IMG_UINT32 i; | 891 | IMG_UINT32 i; |
847 | IMG_SIZE_T ui32PageCount = 0; | 892 | IMG_SIZE_T uPageCount = 0; |
848 | 893 | ||
849 | 894 | ||
850 | psDeviceNode = (PVRSRV_DEVICE_NODE*)hDevCookie; | 895 | psDeviceNode = (PVRSRV_DEVICE_NODE*)hDevCookie; |
851 | PVR_ASSERT(psDeviceNode != IMG_NULL); | 896 | PVR_ASSERT(psDeviceNode != IMG_NULL); |
852 | 897 | ||
@@ -859,15 +904,15 @@ PVRSRV_ERROR IMG_CALLCONV PVRSRVWrapExtMemoryKM(IMG_HANDLE hDevCookie, | |||
859 | if(pvLinAddr) | 904 | if(pvLinAddr) |
860 | { | 905 | { |
861 | 906 | ||
862 | ui32PageOffset = (IMG_UINTPTR_T)pvLinAddr & (ui32HostPageSize - 1); | 907 | uPageOffset = (IMG_UINTPTR_T)pvLinAddr & (ui32HostPageSize - 1); |
863 | 908 | ||
864 | 909 | ||
865 | ui32PageCount = HOST_PAGEALIGN(ui32ByteSize + ui32PageOffset) / ui32HostPageSize; | 910 | uPageCount = HOST_PAGEALIGN(uByteSize + uPageOffset) / ui32HostPageSize; |
866 | pvPageAlignedCPUVAddr = (IMG_VOID *)((IMG_UINTPTR_T)pvLinAddr - ui32PageOffset); | 911 | pvPageAlignedCPUVAddr = (IMG_VOID *)((IMG_UINTPTR_T)pvLinAddr - uPageOffset); |
867 | 912 | ||
868 | 913 | ||
869 | if(OSAllocMem(PVRSRV_OS_PAGEABLE_HEAP, | 914 | if(OSAllocMem(PVRSRV_OS_PAGEABLE_HEAP, |
870 | ui32PageCount * sizeof(IMG_SYS_PHYADDR), | 915 | uPageCount * sizeof(IMG_SYS_PHYADDR), |
871 | (IMG_VOID **)&psIntSysPAddr, IMG_NULL, | 916 | (IMG_VOID **)&psIntSysPAddr, IMG_NULL, |
872 | "Array of Page Addresses") != PVRSRV_OK) | 917 | "Array of Page Addresses") != PVRSRV_OK) |
873 | { | 918 | { |
@@ -876,7 +921,7 @@ PVRSRV_ERROR IMG_CALLCONV PVRSRVWrapExtMemoryKM(IMG_HANDLE hDevCookie, | |||
876 | } | 921 | } |
877 | 922 | ||
878 | eError = OSAcquirePhysPageAddr(pvPageAlignedCPUVAddr, | 923 | eError = OSAcquirePhysPageAddr(pvPageAlignedCPUVAddr, |
879 | ui32PageCount * ui32HostPageSize, | 924 | uPageCount * ui32HostPageSize, |
880 | psIntSysPAddr, | 925 | psIntSysPAddr, |
881 | &hOSWrapMem); | 926 | &hOSWrapMem); |
882 | if(eError != PVRSRV_OK) | 927 | if(eError != PVRSRV_OK) |
@@ -897,7 +942,7 @@ PVRSRV_ERROR IMG_CALLCONV PVRSRVWrapExtMemoryKM(IMG_HANDLE hDevCookie, | |||
897 | { | 942 | { |
898 | 943 | ||
899 | } | 944 | } |
900 | 945 | ||
901 | 946 | ||
902 | psDevMemoryInfo = &((BM_CONTEXT*)hDevMemContext)->psDeviceNode->sDevMemoryInfo; | 947 | psDevMemoryInfo = &((BM_CONTEXT*)hDevMemContext)->psDeviceNode->sDevMemoryInfo; |
903 | psDeviceMemoryHeap = psDevMemoryInfo->psDeviceMemoryHeap; | 948 | psDeviceMemoryHeap = psDevMemoryInfo->psDeviceMemoryHeap; |
@@ -908,7 +953,14 @@ PVRSRV_ERROR IMG_CALLCONV PVRSRVWrapExtMemoryKM(IMG_HANDLE hDevCookie, | |||
908 | if(psDeviceMemoryHeap[i].DevMemHeapType == DEVICE_MEMORY_HEAP_PERCONTEXT) | 953 | if(psDeviceMemoryHeap[i].DevMemHeapType == DEVICE_MEMORY_HEAP_PERCONTEXT) |
909 | { | 954 | { |
910 | 955 | ||
911 | hDevMemHeap = BM_CreateHeap(hDevMemContext, &psDeviceMemoryHeap[i]); | 956 | if (psDeviceMemoryHeap[i].ui32HeapSize > 0) |
957 | { | ||
958 | hDevMemHeap = BM_CreateHeap(hDevMemContext, &psDeviceMemoryHeap[i]); | ||
959 | } | ||
960 | else | ||
961 | { | ||
962 | hDevMemHeap = IMG_NULL; | ||
963 | } | ||
912 | } | 964 | } |
913 | else | 965 | else |
914 | { | 966 | { |
@@ -941,8 +993,8 @@ PVRSRV_ERROR IMG_CALLCONV PVRSRVWrapExtMemoryKM(IMG_HANDLE hDevCookie, | |||
941 | psMemBlock = &(psMemInfo->sMemBlk); | 993 | psMemBlock = &(psMemInfo->sMemBlk); |
942 | 994 | ||
943 | bBMError = BM_Wrap(hDevMemHeap, | 995 | bBMError = BM_Wrap(hDevMemHeap, |
944 | ui32ByteSize, | 996 | uByteSize, |
945 | ui32PageOffset, | 997 | uPageOffset, |
946 | bPhysContig, | 998 | bPhysContig, |
947 | psExtSysPAddr, | 999 | psExtSysPAddr, |
948 | IMG_NULL, | 1000 | IMG_NULL, |
@@ -967,7 +1019,7 @@ PVRSRV_ERROR IMG_CALLCONV PVRSRVWrapExtMemoryKM(IMG_HANDLE hDevCookie, | |||
967 | 1019 | ||
968 | psMemInfo->pvLinAddrKM = BM_HandleToCpuVaddr(hBuffer); | 1020 | psMemInfo->pvLinAddrKM = BM_HandleToCpuVaddr(hBuffer); |
969 | psMemInfo->sDevVAddr = psMemBlock->sDevVirtAddr; | 1021 | psMemInfo->sDevVAddr = psMemBlock->sDevVirtAddr; |
970 | psMemInfo->ui32AllocSize = ui32ByteSize; | 1022 | psMemInfo->uAllocSize = uByteSize; |
971 | 1023 | ||
972 | 1024 | ||
973 | 1025 | ||
@@ -1033,10 +1085,10 @@ ErrorExitPhase2: | |||
1033 | ErrorExitPhase1: | 1085 | ErrorExitPhase1: |
1034 | if(psIntSysPAddr) | 1086 | if(psIntSysPAddr) |
1035 | { | 1087 | { |
1036 | OSFreeMem(PVRSRV_OS_PAGEABLE_HEAP, ui32PageCount * sizeof(IMG_SYS_PHYADDR), psIntSysPAddr, IMG_NULL); | 1088 | OSFreeMem(PVRSRV_OS_PAGEABLE_HEAP, uPageCount * sizeof(IMG_SYS_PHYADDR), psIntSysPAddr, IMG_NULL); |
1037 | 1089 | ||
1038 | } | 1090 | } |
1039 | 1091 | ||
1040 | return eError; | 1092 | return eError; |
1041 | } | 1093 | } |
1042 | 1094 | ||
@@ -1080,7 +1132,7 @@ static PVRSRV_ERROR UnmapDeviceMemoryCallBack(IMG_PVOID pvParam, | |||
1080 | } | 1132 | } |
1081 | } | 1133 | } |
1082 | } | 1134 | } |
1083 | 1135 | ||
1084 | eError = FreeDeviceMem(psMapData->psMemInfo); | 1136 | eError = FreeDeviceMem(psMapData->psMemInfo); |
1085 | if(eError != PVRSRV_OK) | 1137 | if(eError != PVRSRV_OK) |
1086 | { | 1138 | { |
@@ -1106,7 +1158,7 @@ PVRSRV_ERROR IMG_CALLCONV PVRSRVMapDeviceMemoryKM(PVRSRV_PER_PROCESS_DATA *psPer | |||
1106 | { | 1158 | { |
1107 | PVRSRV_ERROR eError; | 1159 | PVRSRV_ERROR eError; |
1108 | IMG_UINT32 i; | 1160 | IMG_UINT32 i; |
1109 | IMG_SIZE_T ui32PageCount, ui32PageOffset; | 1161 | IMG_SIZE_T uPageCount, uPageOffset; |
1110 | IMG_SIZE_T ui32HostPageSize = HOST_PAGESIZE(); | 1162 | IMG_SIZE_T ui32HostPageSize = HOST_PAGESIZE(); |
1111 | IMG_SYS_PHYADDR *psSysPAddr = IMG_NULL; | 1163 | IMG_SYS_PHYADDR *psSysPAddr = IMG_NULL; |
1112 | IMG_DEV_PHYADDR sDevPAddr; | 1164 | IMG_DEV_PHYADDR sDevPAddr; |
@@ -1130,16 +1182,16 @@ PVRSRV_ERROR IMG_CALLCONV PVRSRVMapDeviceMemoryKM(PVRSRV_PER_PROCESS_DATA *psPer | |||
1130 | 1182 | ||
1131 | *ppsDstMemInfo = IMG_NULL; | 1183 | *ppsDstMemInfo = IMG_NULL; |
1132 | 1184 | ||
1133 | ui32PageOffset = psSrcMemInfo->sDevVAddr.uiAddr & (ui32HostPageSize - 1); | 1185 | uPageOffset = psSrcMemInfo->sDevVAddr.uiAddr & (ui32HostPageSize - 1); |
1134 | ui32PageCount = HOST_PAGEALIGN(psSrcMemInfo->ui32AllocSize + ui32PageOffset) / ui32HostPageSize; | 1186 | uPageCount = HOST_PAGEALIGN(psSrcMemInfo->uAllocSize + uPageOffset) / ui32HostPageSize; |
1135 | pvPageAlignedCPUVAddr = (IMG_VOID *)((IMG_UINTPTR_T)psSrcMemInfo->pvLinAddrKM - ui32PageOffset); | 1187 | pvPageAlignedCPUVAddr = (IMG_VOID *)((IMG_UINTPTR_T)psSrcMemInfo->pvLinAddrKM - uPageOffset); |
1136 | 1188 | ||
1137 | 1189 | ||
1138 | 1190 | ||
1139 | 1191 | ||
1140 | 1192 | ||
1141 | if(OSAllocMem(PVRSRV_OS_PAGEABLE_HEAP, | 1193 | if(OSAllocMem(PVRSRV_OS_PAGEABLE_HEAP, |
1142 | ui32PageCount*sizeof(IMG_SYS_PHYADDR), | 1194 | uPageCount*sizeof(IMG_SYS_PHYADDR), |
1143 | (IMG_VOID **)&psSysPAddr, IMG_NULL, | 1195 | (IMG_VOID **)&psSysPAddr, IMG_NULL, |
1144 | "Array of Page Addresses") != PVRSRV_OK) | 1196 | "Array of Page Addresses") != PVRSRV_OK) |
1145 | { | 1197 | { |
@@ -1153,8 +1205,8 @@ PVRSRV_ERROR IMG_CALLCONV PVRSRVMapDeviceMemoryKM(PVRSRV_PER_PROCESS_DATA *psPer | |||
1153 | psDeviceNode = psBuf->pMapping->pBMHeap->pBMContext->psDeviceNode; | 1205 | psDeviceNode = psBuf->pMapping->pBMHeap->pBMContext->psDeviceNode; |
1154 | 1206 | ||
1155 | 1207 | ||
1156 | sDevVAddr.uiAddr = psSrcMemInfo->sDevVAddr.uiAddr - IMG_CAST_TO_DEVVADDR_UINT(ui32PageOffset); | 1208 | sDevVAddr.uiAddr = psSrcMemInfo->sDevVAddr.uiAddr - IMG_CAST_TO_DEVVADDR_UINT(uPageOffset); |
1157 | for(i=0; i<ui32PageCount; i++) | 1209 | for(i=0; i<uPageCount; i++) |
1158 | { | 1210 | { |
1159 | BM_GetPhysPageAddr(psSrcMemInfo, sDevVAddr, &sDevPAddr); | 1211 | BM_GetPhysPageAddr(psSrcMemInfo, sDevVAddr, &sDevPAddr); |
1160 | 1212 | ||
@@ -1176,7 +1228,6 @@ PVRSRV_ERROR IMG_CALLCONV PVRSRVMapDeviceMemoryKM(PVRSRV_PER_PROCESS_DATA *psPer | |||
1176 | goto ErrorExit; | 1228 | goto ErrorExit; |
1177 | } | 1229 | } |
1178 | 1230 | ||
1179 | |||
1180 | if(OSAllocMem(PVRSRV_PAGEABLE_SELECT, | 1231 | if(OSAllocMem(PVRSRV_PAGEABLE_SELECT, |
1181 | sizeof(PVRSRV_KERNEL_MEM_INFO), | 1232 | sizeof(PVRSRV_KERNEL_MEM_INFO), |
1182 | (IMG_VOID **)&psMemInfo, IMG_NULL, | 1233 | (IMG_VOID **)&psMemInfo, IMG_NULL, |
@@ -1193,8 +1244,8 @@ PVRSRV_ERROR IMG_CALLCONV PVRSRVMapDeviceMemoryKM(PVRSRV_PER_PROCESS_DATA *psPer | |||
1193 | psMemBlock = &(psMemInfo->sMemBlk); | 1244 | psMemBlock = &(psMemInfo->sMemBlk); |
1194 | 1245 | ||
1195 | bBMError = BM_Wrap(hDstDevMemHeap, | 1246 | bBMError = BM_Wrap(hDstDevMemHeap, |
1196 | psSrcMemInfo->ui32AllocSize, | 1247 | psSrcMemInfo->uAllocSize, |
1197 | ui32PageOffset, | 1248 | uPageOffset, |
1198 | IMG_FALSE, | 1249 | IMG_FALSE, |
1199 | psSysPAddr, | 1250 | psSysPAddr, |
1200 | pvPageAlignedCPUVAddr, | 1251 | pvPageAlignedCPUVAddr, |
@@ -1223,12 +1274,14 @@ PVRSRV_ERROR IMG_CALLCONV PVRSRVMapDeviceMemoryKM(PVRSRV_PER_PROCESS_DATA *psPer | |||
1223 | 1274 | ||
1224 | 1275 | ||
1225 | psMemInfo->sDevVAddr = psMemBlock->sDevVirtAddr; | 1276 | psMemInfo->sDevVAddr = psMemBlock->sDevVirtAddr; |
1226 | psMemInfo->ui32AllocSize = psSrcMemInfo->ui32AllocSize; | 1277 | psMemInfo->uAllocSize = psSrcMemInfo->uAllocSize; |
1227 | psMemInfo->psKernelSyncInfo = psSrcMemInfo->psKernelSyncInfo; | 1278 | psMemInfo->psKernelSyncInfo = psSrcMemInfo->psKernelSyncInfo; |
1228 | 1279 | ||
1229 | 1280 | ||
1230 | if( psMemInfo->psKernelSyncInfo ) | 1281 | if(psMemInfo->psKernelSyncInfo) |
1282 | { | ||
1231 | psMemInfo->psKernelSyncInfo->ui32RefCount++; | 1283 | psMemInfo->psKernelSyncInfo->ui32RefCount++; |
1284 | } | ||
1232 | 1285 | ||
1233 | 1286 | ||
1234 | 1287 | ||
@@ -1324,6 +1377,11 @@ static PVRSRV_ERROR UnmapDeviceClassMemoryCallBack(IMG_PVOID pvParam, | |||
1324 | } | 1377 | } |
1325 | #endif | 1378 | #endif |
1326 | 1379 | ||
1380 | (psDCMapInfo->psDeviceClassBuffer->ui32MemMapRefCount)--; | ||
1381 | PVR_TRACE(("decrementing (0x%p) psDCMapInfo->psDeviceClassBuffer->ui32MemMapRefCount... == %d", | ||
1382 | psDCMapInfo->psDeviceClassBuffer, | ||
1383 | psDCMapInfo->psDeviceClassBuffer->ui32MemMapRefCount)); | ||
1384 | |||
1327 | OSFreeMem(PVRSRV_OS_PAGEABLE_HEAP, sizeof(PVRSRV_DC_MAPINFO), psDCMapInfo, IMG_NULL); | 1385 | OSFreeMem(PVRSRV_OS_PAGEABLE_HEAP, sizeof(PVRSRV_DC_MAPINFO), psDCMapInfo, IMG_NULL); |
1328 | 1386 | ||
1329 | return FreeMemCallBackCommon(psMemInfo, ui32Param, IMG_TRUE); | 1387 | return FreeMemCallBackCommon(psMemInfo, ui32Param, IMG_TRUE); |
@@ -1348,7 +1406,7 @@ PVRSRV_ERROR IMG_CALLCONV PVRSRVMapDeviceClassMemoryKM(PVRSRV_PER_PROCESS_DATA * | |||
1348 | DEVICE_MEMORY_INFO *psDevMemoryInfo; | 1406 | DEVICE_MEMORY_INFO *psDevMemoryInfo; |
1349 | DEVICE_MEMORY_HEAP_INFO *psDeviceMemoryHeap; | 1407 | DEVICE_MEMORY_HEAP_INFO *psDeviceMemoryHeap; |
1350 | IMG_HANDLE hDevMemHeap = IMG_NULL; | 1408 | IMG_HANDLE hDevMemHeap = IMG_NULL; |
1351 | IMG_SIZE_T ui32ByteSize; | 1409 | IMG_SIZE_T uByteSize; |
1352 | IMG_SIZE_T ui32Offset; | 1410 | IMG_SIZE_T ui32Offset; |
1353 | IMG_SIZE_T ui32PageSize = HOST_PAGESIZE(); | 1411 | IMG_SIZE_T ui32PageSize = HOST_PAGESIZE(); |
1354 | BM_HANDLE hBuffer; | 1412 | BM_HANDLE hBuffer; |
@@ -1398,7 +1456,7 @@ PVRSRV_ERROR IMG_CALLCONV PVRSRVMapDeviceClassMemoryKM(PVRSRV_PER_PROCESS_DATA * | |||
1398 | eError = psDeviceClassBuffer->pfnGetBufferAddr(psDeviceClassBuffer->hExtDevice, | 1456 | eError = psDeviceClassBuffer->pfnGetBufferAddr(psDeviceClassBuffer->hExtDevice, |
1399 | psDeviceClassBuffer->hExtBuffer, | 1457 | psDeviceClassBuffer->hExtBuffer, |
1400 | &psSysPAddr, | 1458 | &psSysPAddr, |
1401 | &ui32ByteSize, | 1459 | &uByteSize, |
1402 | &pvCPUVAddr, | 1460 | &pvCPUVAddr, |
1403 | phOSMapInfo, | 1461 | phOSMapInfo, |
1404 | &bPhysContig, | 1462 | &bPhysContig, |
@@ -1421,7 +1479,14 @@ PVRSRV_ERROR IMG_CALLCONV PVRSRVMapDeviceClassMemoryKM(PVRSRV_PER_PROCESS_DATA * | |||
1421 | if(psDeviceMemoryHeap[i].DevMemHeapType == DEVICE_MEMORY_HEAP_PERCONTEXT) | 1479 | if(psDeviceMemoryHeap[i].DevMemHeapType == DEVICE_MEMORY_HEAP_PERCONTEXT) |
1422 | { | 1480 | { |
1423 | 1481 | ||
1424 | hDevMemHeap = BM_CreateHeap(hDevMemContext, &psDeviceMemoryHeap[i]); | 1482 | if (psDeviceMemoryHeap[i].ui32HeapSize > 0) |
1483 | { | ||
1484 | hDevMemHeap = BM_CreateHeap(hDevMemContext, &psDeviceMemoryHeap[i]); | ||
1485 | } | ||
1486 | else | ||
1487 | { | ||
1488 | hDevMemHeap = IMG_NULL; | ||
1489 | } | ||
1425 | } | 1490 | } |
1426 | else | 1491 | else |
1427 | { | 1492 | { |
@@ -1457,7 +1522,7 @@ PVRSRV_ERROR IMG_CALLCONV PVRSRVMapDeviceClassMemoryKM(PVRSRV_PER_PROCESS_DATA * | |||
1457 | psMemBlock = &(psMemInfo->sMemBlk); | 1522 | psMemBlock = &(psMemInfo->sMemBlk); |
1458 | 1523 | ||
1459 | bBMError = BM_Wrap(hDevMemHeap, | 1524 | bBMError = BM_Wrap(hDevMemHeap, |
1460 | ui32ByteSize, | 1525 | uByteSize, |
1461 | ui32Offset, | 1526 | ui32Offset, |
1462 | bPhysContig, | 1527 | bPhysContig, |
1463 | psSysPAddr, | 1528 | psSysPAddr, |
@@ -1486,7 +1551,7 @@ PVRSRV_ERROR IMG_CALLCONV PVRSRVMapDeviceClassMemoryKM(PVRSRV_PER_PROCESS_DATA * | |||
1486 | 1551 | ||
1487 | 1552 | ||
1488 | psMemInfo->sDevVAddr = psMemBlock->sDevVirtAddr; | 1553 | psMemInfo->sDevVAddr = psMemBlock->sDevVirtAddr; |
1489 | psMemInfo->ui32AllocSize = ui32ByteSize; | 1554 | psMemInfo->uAllocSize = uByteSize; |
1490 | psMemInfo->psKernelSyncInfo = psDeviceClassBuffer->psKernelSyncInfo; | 1555 | psMemInfo->psKernelSyncInfo = psDeviceClassBuffer->psKernelSyncInfo; |
1491 | 1556 | ||
1492 | 1557 | ||
@@ -1495,6 +1560,7 @@ PVRSRV_ERROR IMG_CALLCONV PVRSRVMapDeviceClassMemoryKM(PVRSRV_PER_PROCESS_DATA * | |||
1495 | 1560 | ||
1496 | 1561 | ||
1497 | psDCMapInfo->psMemInfo = psMemInfo; | 1562 | psDCMapInfo->psMemInfo = psMemInfo; |
1563 | psDCMapInfo->psDeviceClassBuffer = psDeviceClassBuffer; | ||
1498 | 1564 | ||
1499 | #if defined(SUPPORT_MEMORY_TILING) | 1565 | #if defined(SUPPORT_MEMORY_TILING) |
1500 | psDCMapInfo->psDeviceNode = psDeviceNode; | 1566 | psDCMapInfo->psDeviceNode = psDeviceNode; |
@@ -1521,6 +1587,11 @@ PVRSRV_ERROR IMG_CALLCONV PVRSRVMapDeviceClassMemoryKM(PVRSRV_PER_PROCESS_DATA * | |||
1521 | 0, | 1587 | 0, |
1522 | &UnmapDeviceClassMemoryCallBack); | 1588 | &UnmapDeviceClassMemoryCallBack); |
1523 | 1589 | ||
1590 | (psDeviceClassBuffer->ui32MemMapRefCount)++; | ||
1591 | PVR_TRACE(("incrementing (0x%p) psDeviceClassBuffer->ui32MemMapRefCount... == %d", | ||
1592 | psDeviceClassBuffer, | ||
1593 | psDeviceClassBuffer->ui32MemMapRefCount)); | ||
1594 | |||
1524 | psMemInfo->ui32RefCount++; | 1595 | psMemInfo->ui32RefCount++; |
1525 | 1596 | ||
1526 | psMemInfo->memType = PVRSRV_MEMTYPE_DEVICECLASS; | 1597 | psMemInfo->memType = PVRSRV_MEMTYPE_DEVICECLASS; |
@@ -1529,9 +1600,9 @@ PVRSRV_ERROR IMG_CALLCONV PVRSRVMapDeviceClassMemoryKM(PVRSRV_PER_PROCESS_DATA * | |||
1529 | *ppsMemInfo = psMemInfo; | 1600 | *ppsMemInfo = psMemInfo; |
1530 | 1601 | ||
1531 | #if defined(SUPPORT_PDUMP_MULTI_PROCESS) | 1602 | #if defined(SUPPORT_PDUMP_MULTI_PROCESS) |
1532 | 1603 | ||
1533 | PDUMPCOMMENT("Dump display surface"); | 1604 | PDUMPCOMMENT("Dump display surface"); |
1534 | PDUMPMEM(IMG_NULL, psMemInfo, ui32Offset, psMemInfo->ui32AllocSize, PDUMP_FLAGS_CONTINUOUS, ((BM_BUF*)psMemInfo->sMemBlk.hBuffer)->pMapping); | 1605 | PDUMPMEM(IMG_NULL, psMemInfo, ui32Offset, psMemInfo->uAllocSize, PDUMP_FLAGS_CONTINUOUS, ((BM_BUF*)psMemInfo->sMemBlk.hBuffer)->pMapping); |
1535 | #endif | 1606 | #endif |
1536 | return PVRSRV_OK; | 1607 | return PVRSRV_OK; |
1537 | 1608 | ||
@@ -1562,3 +1633,29 @@ ErrorExitPhase1: | |||
1562 | return eError; | 1633 | return eError; |
1563 | } | 1634 | } |
1564 | 1635 | ||
1636 | |||
1637 | IMG_EXPORT | ||
1638 | PVRSRV_ERROR IMG_CALLCONV PVRSRVChangeDeviceMemoryAttributesKM(IMG_HANDLE hKernelMemInfo, IMG_UINT32 ui32Attribs) | ||
1639 | { | ||
1640 | PVRSRV_KERNEL_MEM_INFO *psKMMemInfo; | ||
1641 | |||
1642 | if (hKernelMemInfo == IMG_NULL) | ||
1643 | { | ||
1644 | return PVRSRV_ERROR_INVALID_PARAMS; | ||
1645 | } | ||
1646 | |||
1647 | psKMMemInfo = (PVRSRV_KERNEL_MEM_INFO *)hKernelMemInfo; | ||
1648 | |||
1649 | if (ui32Attribs & PVRSRV_CHANGEDEVMEM_ATTRIBS_CACHECOHERENT) | ||
1650 | { | ||
1651 | psKMMemInfo->ui32Flags |= PVRSRV_MEM_CACHE_CONSISTENT; | ||
1652 | } | ||
1653 | else | ||
1654 | { | ||
1655 | psKMMemInfo->ui32Flags &= ~PVRSRV_MEM_CACHE_CONSISTENT; | ||
1656 | } | ||
1657 | |||
1658 | return PVRSRV_OK; | ||
1659 | } | ||
1660 | |||
1661 | |||
diff --git a/drivers/gpu/pvr/handle.c b/drivers/gpu/pvr/handle.c index 5e34af5b280..de80394384c 100644 --- a/drivers/gpu/pvr/handle.c +++ b/drivers/gpu/pvr/handle.c | |||
@@ -24,7 +24,7 @@ | |||
24 | * | 24 | * |
25 | ******************************************************************************/ | 25 | ******************************************************************************/ |
26 | 26 | ||
27 | #ifdef PVR_SECURE_HANDLES | 27 | #if defined(PVR_SECURE_HANDLES) || defined (SUPPORT_SID_INTERFACE) |
28 | #include <stddef.h> | 28 | #include <stddef.h> |
29 | 29 | ||
30 | #include "services_headers.h" | 30 | #include "services_headers.h" |
@@ -47,8 +47,14 @@ | |||
47 | 47 | ||
48 | #define INDEX_IS_VALID(psBase, i) ((i) < (psBase)->ui32TotalHandCount) | 48 | #define INDEX_IS_VALID(psBase, i) ((i) < (psBase)->ui32TotalHandCount) |
49 | 49 | ||
50 | #define INDEX_TO_HANDLE(i) ((IMG_HANDLE)((i) + 1)) | 50 | #if defined (SUPPORT_SID_INTERFACE) |
51 | #define INDEX_TO_HANDLE(i) ((IMG_SID)((i) + 1)) | ||
51 | #define HANDLE_TO_INDEX(h) ((IMG_UINT32)(h) - 1) | 52 | #define HANDLE_TO_INDEX(h) ((IMG_UINT32)(h) - 1) |
53 | #else | ||
54 | #define INDEX_TO_HANDLE(i) ((IMG_HANDLE)((IMG_UINTPTR_T)(i) + 1)) | ||
55 | #define HANDLE_TO_INDEX(h) ((IMG_UINT32)(IMG_UINTPTR_T)(h) - 1) | ||
56 | |||
57 | #endif | ||
52 | 58 | ||
53 | #define INDEX_TO_BLOCK_INDEX(i) DIVIDE_BY_BLOCK_SIZE(i) | 59 | #define INDEX_TO_BLOCK_INDEX(i) DIVIDE_BY_BLOCK_SIZE(i) |
54 | #define BLOCK_INDEX_TO_INDEX(i) MULTIPLY_BY_BLOCK_SIZE(i) | 60 | #define BLOCK_INDEX_TO_INDEX(i) MULTIPLY_BY_BLOCK_SIZE(i) |
@@ -108,7 +114,11 @@ struct sHandleList | |||
108 | { | 114 | { |
109 | IMG_UINT32 ui32Prev; | 115 | IMG_UINT32 ui32Prev; |
110 | IMG_UINT32 ui32Next; | 116 | IMG_UINT32 ui32Next; |
117 | #if defined (SUPPORT_SID_INTERFACE) | ||
118 | IMG_SID hParent; | ||
119 | #else | ||
111 | IMG_HANDLE hParent; | 120 | IMG_HANDLE hParent; |
121 | #endif | ||
112 | }; | 122 | }; |
113 | 123 | ||
114 | enum ePVRSRVInternalHandleFlag | 124 | enum ePVRSRVInternalHandleFlag |
@@ -217,7 +227,11 @@ typedef IMG_UINTPTR_T HAND_KEY[HAND_KEY_LEN]; | |||
217 | #pragma inline(HandleListInit) | 227 | #pragma inline(HandleListInit) |
218 | #endif | 228 | #endif |
219 | static INLINE | 229 | static INLINE |
230 | #if defined (SUPPORT_SID_INTERFACE) | ||
231 | IMG_VOID HandleListInit(IMG_UINT32 ui32Index, struct sHandleList *psList, IMG_SID hParent) | ||
232 | #else | ||
220 | IMG_VOID HandleListInit(IMG_UINT32 ui32Index, struct sHandleList *psList, IMG_HANDLE hParent) | 233 | IMG_VOID HandleListInit(IMG_UINT32 ui32Index, struct sHandleList *psList, IMG_HANDLE hParent) |
234 | #endif | ||
221 | { | 235 | { |
222 | psList->ui32Next = ui32Index; | 236 | psList->ui32Next = ui32Index; |
223 | psList->ui32Prev = ui32Index; | 237 | psList->ui32Prev = ui32Index; |
@@ -259,7 +273,7 @@ IMG_BOOL HandleListIsEmpty(IMG_UINT32 ui32Index, struct sHandleList *psList) | |||
259 | IMG_BOOL bIsEmpty2; | 273 | IMG_BOOL bIsEmpty2; |
260 | 274 | ||
261 | bIsEmpty2 = (IMG_BOOL)(psList->ui32Prev == ui32Index); | 275 | bIsEmpty2 = (IMG_BOOL)(psList->ui32Prev == ui32Index); |
262 | PVR_ASSERT(bIsEmpty == bIsEmpty2); | 276 | PVR_ASSERT(bIsEmpty == bIsEmpty2) |
263 | } | 277 | } |
264 | #endif | 278 | #endif |
265 | 279 | ||
@@ -273,7 +287,7 @@ IMG_BOOL HandleListIsEmpty(IMG_UINT32 ui32Index, struct sHandleList *psList) | |||
273 | static INLINE | 287 | static INLINE |
274 | IMG_BOOL NoChildren(struct sHandle *psHandle) | 288 | IMG_BOOL NoChildren(struct sHandle *psHandle) |
275 | { | 289 | { |
276 | PVR_ASSERT(psHandle->sChildren.hParent == HANDLE_PTR_TO_HANDLE(psHandle)); | 290 | PVR_ASSERT(psHandle->sChildren.hParent == HANDLE_PTR_TO_HANDLE(psHandle)) |
277 | 291 | ||
278 | return HandleListIsEmpty(HANDLE_PTR_TO_INDEX(psHandle), &psHandle->sChildren); | 292 | return HandleListIsEmpty(HANDLE_PTR_TO_INDEX(psHandle), &psHandle->sChildren); |
279 | } | 293 | } |
@@ -286,13 +300,13 @@ IMG_BOOL NoParent(struct sHandle *psHandle) | |||
286 | { | 300 | { |
287 | if (HandleListIsEmpty(HANDLE_PTR_TO_INDEX(psHandle), &psHandle->sSiblings)) | 301 | if (HandleListIsEmpty(HANDLE_PTR_TO_INDEX(psHandle), &psHandle->sSiblings)) |
288 | { | 302 | { |
289 | PVR_ASSERT(psHandle->sSiblings.hParent == IMG_NULL); | 303 | PVR_ASSERT(psHandle->sSiblings.hParent == IMG_NULL) |
290 | 304 | ||
291 | return IMG_TRUE; | 305 | return IMG_TRUE; |
292 | } | 306 | } |
293 | else | 307 | else |
294 | { | 308 | { |
295 | PVR_ASSERT(psHandle->sSiblings.hParent != IMG_NULL); | 309 | PVR_ASSERT(psHandle->sSiblings.hParent != IMG_NULL) |
296 | } | 310 | } |
297 | return IMG_FALSE; | 311 | return IMG_FALSE; |
298 | } | 312 | } |
@@ -301,7 +315,11 @@ IMG_BOOL NoParent(struct sHandle *psHandle) | |||
301 | #pragma inline(ParentHandle) | 315 | #pragma inline(ParentHandle) |
302 | #endif | 316 | #endif |
303 | static INLINE | 317 | static INLINE |
318 | #if defined (SUPPORT_SID_INTERFACE) | ||
319 | IMG_SID ParentHandle(struct sHandle *psHandle) | ||
320 | #else | ||
304 | IMG_HANDLE ParentHandle(struct sHandle *psHandle) | 321 | IMG_HANDLE ParentHandle(struct sHandle *psHandle) |
322 | #endif | ||
305 | { | 323 | { |
306 | return psHandle->sSiblings.hParent; | 324 | return psHandle->sSiblings.hParent; |
307 | } | 325 | } |
@@ -318,9 +336,9 @@ IMG_VOID HandleListInsertBefore(PVRSRV_HANDLE_BASE *psBase, IMG_UINT32 ui32InsIn | |||
318 | 336 | ||
319 | struct sHandleList *psPrevIns = LIST_PTR_FROM_INDEX_AND_OFFSET(psBase, psIns->ui32Prev, ui32ParentIndex, uiParentOffset, uiEntryOffset); | 337 | struct sHandleList *psPrevIns = LIST_PTR_FROM_INDEX_AND_OFFSET(psBase, psIns->ui32Prev, ui32ParentIndex, uiParentOffset, uiEntryOffset); |
320 | 338 | ||
321 | PVR_ASSERT(psEntry->hParent == IMG_NULL); | 339 | PVR_ASSERT(psEntry->hParent == IMG_NULL) |
322 | PVR_ASSERT(ui32InsIndex == psPrevIns->ui32Next); | 340 | PVR_ASSERT(ui32InsIndex == psPrevIns->ui32Next) |
323 | PVR_ASSERT(LIST_PTR_FROM_INDEX_AND_OFFSET(psBase, ui32ParentIndex, ui32ParentIndex, uiParentOffset, uiParentOffset)->hParent == INDEX_TO_HANDLE(ui32ParentIndex)); | 341 | PVR_ASSERT(LIST_PTR_FROM_INDEX_AND_OFFSET(psBase, ui32ParentIndex, ui32ParentIndex, uiParentOffset, uiParentOffset)->hParent == INDEX_TO_HANDLE(ui32ParentIndex)) |
324 | 342 | ||
325 | psEntry->ui32Prev = psIns->ui32Prev; | 343 | psEntry->ui32Prev = psIns->ui32Prev; |
326 | psIns->ui32Prev = ui32EntryIndex; | 344 | psIns->ui32Prev = ui32EntryIndex; |
@@ -338,7 +356,7 @@ IMG_VOID AdoptChild(PVRSRV_HANDLE_BASE *psBase, struct sHandle *psParent, struct | |||
338 | { | 356 | { |
339 | IMG_UINT32 ui32Parent = HANDLE_TO_INDEX(psParent->sChildren.hParent); | 357 | IMG_UINT32 ui32Parent = HANDLE_TO_INDEX(psParent->sChildren.hParent); |
340 | 358 | ||
341 | PVR_ASSERT(ui32Parent == HANDLE_PTR_TO_INDEX(psParent)); | 359 | PVR_ASSERT(ui32Parent == HANDLE_PTR_TO_INDEX(psParent)) |
342 | 360 | ||
343 | HandleListInsertBefore(psBase, ui32Parent, &psParent->sChildren, offsetof(struct sHandle, sChildren), HANDLE_PTR_TO_INDEX(psChild), &psChild->sSiblings, offsetof(struct sHandle, sSiblings), ui32Parent); | 361 | HandleListInsertBefore(psBase, ui32Parent, &psParent->sChildren, offsetof(struct sHandle, sChildren), HANDLE_PTR_TO_INDEX(psChild), &psChild->sSiblings, offsetof(struct sHandle, sSiblings), ui32Parent); |
344 | 362 | ||
@@ -357,7 +375,7 @@ IMG_VOID HandleListRemove(PVRSRV_HANDLE_BASE *psBase, IMG_UINT32 ui32EntryIndex, | |||
357 | struct sHandleList *psNext = LIST_PTR_FROM_INDEX_AND_OFFSET(psBase, psEntry->ui32Next, HANDLE_TO_INDEX(psEntry->hParent), uiParentOffset, uiEntryOffset); | 375 | struct sHandleList *psNext = LIST_PTR_FROM_INDEX_AND_OFFSET(psBase, psEntry->ui32Next, HANDLE_TO_INDEX(psEntry->hParent), uiParentOffset, uiEntryOffset); |
358 | 376 | ||
359 | 377 | ||
360 | PVR_ASSERT(psEntry->hParent != IMG_NULL); | 378 | PVR_ASSERT(psEntry->hParent != IMG_NULL) |
361 | 379 | ||
362 | psPrev->ui32Next = psEntry->ui32Next; | 380 | psPrev->ui32Next = psEntry->ui32Next; |
363 | psNext->ui32Prev = psEntry->ui32Prev; | 381 | psNext->ui32Prev = psEntry->ui32Prev; |
@@ -384,7 +402,7 @@ PVRSRV_ERROR HandleListIterate(PVRSRV_HANDLE_BASE *psBase, struct sHandleList *p | |||
384 | IMG_UINT32 ui32Index; | 402 | IMG_UINT32 ui32Index; |
385 | IMG_UINT32 ui32Parent = HANDLE_TO_INDEX(psHead->hParent); | 403 | IMG_UINT32 ui32Parent = HANDLE_TO_INDEX(psHead->hParent); |
386 | 404 | ||
387 | PVR_ASSERT(psHead->hParent != IMG_NULL); | 405 | PVR_ASSERT(psHead->hParent != IMG_NULL) |
388 | 406 | ||
389 | 407 | ||
390 | for(ui32Index = psHead->ui32Next; ui32Index != ui32Parent; ) | 408 | for(ui32Index = psHead->ui32Next; ui32Index != ui32Parent; ) |
@@ -394,7 +412,7 @@ PVRSRV_ERROR HandleListIterate(PVRSRV_HANDLE_BASE *psBase, struct sHandleList *p | |||
394 | struct sHandleList *psEntry = LIST_PTR_FROM_INDEX_AND_OFFSET(psBase, ui32Index, ui32Parent, uiParentOffset, uiEntryOffset); | 412 | struct sHandleList *psEntry = LIST_PTR_FROM_INDEX_AND_OFFSET(psBase, ui32Index, ui32Parent, uiParentOffset, uiEntryOffset); |
395 | PVRSRV_ERROR eError; | 413 | PVRSRV_ERROR eError; |
396 | 414 | ||
397 | PVR_ASSERT(psEntry->hParent == psHead->hParent); | 415 | PVR_ASSERT(psEntry->hParent == psHead->hParent) |
398 | 416 | ||
399 | ui32Index = psEntry->ui32Next; | 417 | ui32Index = psEntry->ui32Next; |
400 | 418 | ||
@@ -421,7 +439,11 @@ PVRSRV_ERROR IterateOverChildren(PVRSRV_HANDLE_BASE *psBase, struct sHandle *psP | |||
421 | #pragma inline(GetHandleStructure) | 439 | #pragma inline(GetHandleStructure) |
422 | #endif | 440 | #endif |
423 | static INLINE | 441 | static INLINE |
442 | #if defined (SUPPORT_SID_INTERFACE) | ||
443 | PVRSRV_ERROR GetHandleStructure(PVRSRV_HANDLE_BASE *psBase, struct sHandle **ppsHandle, IMG_SID hHandle, PVRSRV_HANDLE_TYPE eType) | ||
444 | #else | ||
424 | PVRSRV_ERROR GetHandleStructure(PVRSRV_HANDLE_BASE *psBase, struct sHandle **ppsHandle, IMG_HANDLE hHandle, PVRSRV_HANDLE_TYPE eType) | 445 | PVRSRV_ERROR GetHandleStructure(PVRSRV_HANDLE_BASE *psBase, struct sHandle **ppsHandle, IMG_HANDLE hHandle, PVRSRV_HANDLE_TYPE eType) |
446 | #endif | ||
425 | { | 447 | { |
426 | IMG_UINT32 ui32Index = HANDLE_TO_INDEX(hHandle); | 448 | IMG_UINT32 ui32Index = HANDLE_TO_INDEX(hHandle); |
427 | struct sHandle *psHandle; | 449 | struct sHandle *psHandle; |
@@ -430,6 +452,9 @@ PVRSRV_ERROR GetHandleStructure(PVRSRV_HANDLE_BASE *psBase, struct sHandle **pps | |||
430 | if (!INDEX_IS_VALID(psBase, ui32Index)) | 452 | if (!INDEX_IS_VALID(psBase, ui32Index)) |
431 | { | 453 | { |
432 | PVR_DPF((PVR_DBG_ERROR, "GetHandleStructure: Handle index out of range (%u >= %u)", ui32Index, psBase->ui32TotalHandCount)); | 454 | PVR_DPF((PVR_DBG_ERROR, "GetHandleStructure: Handle index out of range (%u >= %u)", ui32Index, psBase->ui32TotalHandCount)); |
455 | #if defined (SUPPORT_SID_INTERFACE) | ||
456 | PVR_DBG_BREAK | ||
457 | #endif | ||
433 | return PVRSRV_ERROR_HANDLE_INDEX_OUT_OF_RANGE; | 458 | return PVRSRV_ERROR_HANDLE_INDEX_OUT_OF_RANGE; |
434 | } | 459 | } |
435 | 460 | ||
@@ -437,6 +462,9 @@ PVRSRV_ERROR GetHandleStructure(PVRSRV_HANDLE_BASE *psBase, struct sHandle **pps | |||
437 | if (psHandle->eType == PVRSRV_HANDLE_TYPE_NONE) | 462 | if (psHandle->eType == PVRSRV_HANDLE_TYPE_NONE) |
438 | { | 463 | { |
439 | PVR_DPF((PVR_DBG_ERROR, "GetHandleStructure: Handle not allocated (index: %u)", ui32Index)); | 464 | PVR_DPF((PVR_DBG_ERROR, "GetHandleStructure: Handle not allocated (index: %u)", ui32Index)); |
465 | #if defined (SUPPORT_SID_INTERFACE) | ||
466 | PVR_DBG_BREAK | ||
467 | #endif | ||
440 | return PVRSRV_ERROR_HANDLE_NOT_ALLOCATED; | 468 | return PVRSRV_ERROR_HANDLE_NOT_ALLOCATED; |
441 | } | 469 | } |
442 | 470 | ||
@@ -444,6 +472,9 @@ PVRSRV_ERROR GetHandleStructure(PVRSRV_HANDLE_BASE *psBase, struct sHandle **pps | |||
444 | if (eType != PVRSRV_HANDLE_TYPE_NONE && eType != psHandle->eType) | 472 | if (eType != PVRSRV_HANDLE_TYPE_NONE && eType != psHandle->eType) |
445 | { | 473 | { |
446 | PVR_DPF((PVR_DBG_ERROR, "GetHandleStructure: Handle type mismatch (%d != %d)", eType, psHandle->eType)); | 474 | PVR_DPF((PVR_DBG_ERROR, "GetHandleStructure: Handle type mismatch (%d != %d)", eType, psHandle->eType)); |
475 | #if defined (SUPPORT_SID_INTERFACE) | ||
476 | PVR_DBG_BREAK | ||
477 | #endif | ||
447 | return PVRSRV_ERROR_HANDLE_TYPE_MISMATCH; | 478 | return PVRSRV_ERROR_HANDLE_TYPE_MISMATCH; |
448 | } | 479 | } |
449 | 480 | ||
@@ -457,7 +488,11 @@ PVRSRV_ERROR GetHandleStructure(PVRSRV_HANDLE_BASE *psBase, struct sHandle **pps | |||
457 | #pragma inline(ParentIfPrivate) | 488 | #pragma inline(ParentIfPrivate) |
458 | #endif | 489 | #endif |
459 | static INLINE | 490 | static INLINE |
491 | #if defined (SUPPORT_SID_INTERFACE) | ||
492 | IMG_SID ParentIfPrivate(struct sHandle *psHandle) | ||
493 | #else | ||
460 | IMG_HANDLE ParentIfPrivate(struct sHandle *psHandle) | 494 | IMG_HANDLE ParentIfPrivate(struct sHandle *psHandle) |
495 | #endif | ||
461 | { | 496 | { |
462 | return TEST_ALLOC_FLAG(psHandle, PVRSRV_HANDLE_ALLOC_FLAG_PRIVATE) ? | 497 | return TEST_ALLOC_FLAG(psHandle, PVRSRV_HANDLE_ALLOC_FLAG_PRIVATE) ? |
463 | ParentHandle(psHandle) : IMG_NULL; | 498 | ParentHandle(psHandle) : IMG_NULL; |
@@ -467,7 +502,11 @@ IMG_HANDLE ParentIfPrivate(struct sHandle *psHandle) | |||
467 | #pragma inline(InitKey) | 502 | #pragma inline(InitKey) |
468 | #endif | 503 | #endif |
469 | static INLINE | 504 | static INLINE |
505 | #if defined (SUPPORT_SID_INTERFACE) | ||
506 | IMG_VOID InitKey(HAND_KEY aKey, PVRSRV_HANDLE_BASE *psBase, IMG_VOID *pvData, PVRSRV_HANDLE_TYPE eType, IMG_SID hParent) | ||
507 | #else | ||
470 | IMG_VOID InitKey(HAND_KEY aKey, PVRSRV_HANDLE_BASE *psBase, IMG_VOID *pvData, PVRSRV_HANDLE_TYPE eType, IMG_HANDLE hParent) | 508 | IMG_VOID InitKey(HAND_KEY aKey, PVRSRV_HANDLE_BASE *psBase, IMG_VOID *pvData, PVRSRV_HANDLE_TYPE eType, IMG_HANDLE hParent) |
509 | #endif | ||
471 | { | 510 | { |
472 | PVR_UNREFERENCED_PARAMETER(psBase); | 511 | PVR_UNREFERENCED_PARAMETER(psBase); |
473 | 512 | ||
@@ -502,8 +541,8 @@ PVRSRV_ERROR ReallocHandleArray(PVRSRV_HANDLE_BASE *psBase, IMG_UINT32 ui32NewCo | |||
502 | if (((ui32OldCount % HANDLE_BLOCK_SIZE) != 0) || | 541 | if (((ui32OldCount % HANDLE_BLOCK_SIZE) != 0) || |
503 | ((ui32NewCount % HANDLE_BLOCK_SIZE) != 0)) | 542 | ((ui32NewCount % HANDLE_BLOCK_SIZE) != 0)) |
504 | { | 543 | { |
505 | PVR_ASSERT((ui32OldCount % HANDLE_BLOCK_SIZE) == 0); | 544 | PVR_ASSERT((ui32OldCount % HANDLE_BLOCK_SIZE) == 0) |
506 | PVR_ASSERT((ui32NewCount % HANDLE_BLOCK_SIZE) == 0); | 545 | PVR_ASSERT((ui32NewCount % HANDLE_BLOCK_SIZE) == 0) |
507 | 546 | ||
508 | return PVRSRV_ERROR_INVALID_PARAMS; | 547 | return PVRSRV_ERROR_INVALID_PARAMS; |
509 | } | 548 | } |
@@ -511,7 +550,7 @@ PVRSRV_ERROR ReallocHandleArray(PVRSRV_HANDLE_BASE *psBase, IMG_UINT32 ui32NewCo | |||
511 | if (ui32NewCount != 0) | 550 | if (ui32NewCount != 0) |
512 | { | 551 | { |
513 | 552 | ||
514 | eError = OSAllocMem(PVRSRV_OS_PAGEABLE_HEAP, | 553 | eError = OSAllocMem(PVRSRV_OS_NON_PAGEABLE_HEAP, |
515 | HANDLE_ARRAY_SIZE(ui32NewCount) * sizeof(struct sHandleIndex), | 554 | HANDLE_ARRAY_SIZE(ui32NewCount) * sizeof(struct sHandleIndex), |
516 | (IMG_VOID **)&psNewArray, | 555 | (IMG_VOID **)&psNewArray, |
517 | &hNewArrayBlockAlloc, | 556 | &hNewArrayBlockAlloc, |
@@ -550,7 +589,7 @@ PVRSRV_ERROR ReallocHandleArray(PVRSRV_HANDLE_BASE *psBase, IMG_UINT32 ui32NewCo | |||
550 | 589 | ||
551 | struct sHandleIndex *psIndex = INDEX_TO_INDEX_STRUCT_PTR(psNewArray, ui32Index); | 590 | struct sHandleIndex *psIndex = INDEX_TO_INDEX_STRUCT_PTR(psNewArray, ui32Index); |
552 | 591 | ||
553 | eError = OSAllocMem(PVRSRV_OS_PAGEABLE_HEAP, | 592 | eError = OSAllocMem(PVRSRV_OS_NON_PAGEABLE_HEAP, |
554 | sizeof(struct sHandle) * HANDLE_BLOCK_SIZE, | 593 | sizeof(struct sHandle) * HANDLE_BLOCK_SIZE, |
555 | (IMG_VOID **)&psIndex->psHandle, | 594 | (IMG_VOID **)&psIndex->psHandle, |
556 | &psIndex->hBlockAlloc, | 595 | &psIndex->hBlockAlloc, |
@@ -658,12 +697,12 @@ PVRSRV_ERROR ReallocHandleArray(PVRSRV_HANDLE_BASE *psBase, IMG_UINT32 ui32NewCo | |||
658 | } | 697 | } |
659 | } | 698 | } |
660 | 699 | ||
661 | PVR_ASSERT(psBase->ui32FirstFreeIndex <= psBase->ui32TotalHandCount); | 700 | PVR_ASSERT(psBase->ui32FirstFreeIndex <= psBase->ui32TotalHandCount) |
662 | 701 | ||
663 | return PVRSRV_OK; | 702 | return PVRSRV_OK; |
664 | 703 | ||
665 | error: | 704 | error: |
666 | PVR_ASSERT(eReturn != PVRSRV_OK); | 705 | PVR_ASSERT(eReturn != PVRSRV_OK) |
667 | 706 | ||
668 | if (psNewArray != IMG_NULL) | 707 | if (psNewArray != IMG_NULL) |
669 | { | 708 | { |
@@ -714,11 +753,17 @@ static PVRSRV_ERROR FreeHandle(PVRSRV_HANDLE_BASE *psBase, struct sHandle *psHan | |||
714 | 753 | ||
715 | if (!TEST_ALLOC_FLAG(psHandle, PVRSRV_HANDLE_ALLOC_FLAG_MULTI) && !BATCHED_HANDLE_PARTIALLY_FREE(psHandle)) | 754 | if (!TEST_ALLOC_FLAG(psHandle, PVRSRV_HANDLE_ALLOC_FLAG_MULTI) && !BATCHED_HANDLE_PARTIALLY_FREE(psHandle)) |
716 | { | 755 | { |
756 | #if defined (SUPPORT_SID_INTERFACE) | ||
757 | IMG_SID hHandle; | ||
758 | hHandle = (IMG_SID) HASH_Remove_Extended(psBase->psHashTab, aKey); | ||
759 | #else | ||
717 | IMG_HANDLE hHandle; | 760 | IMG_HANDLE hHandle; |
718 | hHandle = (IMG_HANDLE) HASH_Remove_Extended(psBase->psHashTab, aKey); | 761 | hHandle = (IMG_HANDLE) HASH_Remove_Extended(psBase->psHashTab, aKey); |
719 | 762 | ||
720 | PVR_ASSERT(hHandle != IMG_NULL); | 763 | #endif |
721 | PVR_ASSERT(hHandle == INDEX_TO_HANDLE(ui32Index)); | 764 | |
765 | PVR_ASSERT(hHandle != IMG_NULL) | ||
766 | PVR_ASSERT(hHandle == INDEX_TO_HANDLE(ui32Index)) | ||
722 | PVR_UNREFERENCED_PARAMETER(hHandle); | 767 | PVR_UNREFERENCED_PARAMETER(hHandle); |
723 | } | 768 | } |
724 | 769 | ||
@@ -749,20 +794,20 @@ static PVRSRV_ERROR FreeHandle(PVRSRV_HANDLE_BASE *psBase, struct sHandle *psHan | |||
749 | { | 794 | { |
750 | if (psBase->ui32FreeHandCount == 0) | 795 | if (psBase->ui32FreeHandCount == 0) |
751 | { | 796 | { |
752 | PVR_ASSERT(psBase->ui32FirstFreeIndex == 0); | 797 | PVR_ASSERT(psBase->ui32FirstFreeIndex == 0) |
753 | PVR_ASSERT(psBase->ui32LastFreeIndexPlusOne == 0); | 798 | PVR_ASSERT(psBase->ui32LastFreeIndexPlusOne == 0) |
754 | 799 | ||
755 | psBase->ui32FirstFreeIndex = ui32Index; | 800 | psBase->ui32FirstFreeIndex = ui32Index; |
756 | } | 801 | } |
757 | else | 802 | else |
758 | { | 803 | { |
759 | 804 | ||
760 | PVR_ASSERT(psBase->ui32LastFreeIndexPlusOne != 0); | 805 | PVR_ASSERT(psBase->ui32LastFreeIndexPlusOne != 0) |
761 | PVR_ASSERT(INDEX_TO_HANDLE_STRUCT_PTR(psBase, psBase->ui32LastFreeIndexPlusOne - 1)->ui32NextIndexPlusOne == 0); | 806 | PVR_ASSERT(INDEX_TO_HANDLE_STRUCT_PTR(psBase, psBase->ui32LastFreeIndexPlusOne - 1)->ui32NextIndexPlusOne == 0) |
762 | INDEX_TO_HANDLE_STRUCT_PTR(psBase, psBase->ui32LastFreeIndexPlusOne - 1)->ui32NextIndexPlusOne = ui32Index + 1; | 807 | INDEX_TO_HANDLE_STRUCT_PTR(psBase, psBase->ui32LastFreeIndexPlusOne - 1)->ui32NextIndexPlusOne = ui32Index + 1; |
763 | } | 808 | } |
764 | 809 | ||
765 | PVR_ASSERT(psHandle->ui32NextIndexPlusOne == 0); | 810 | PVR_ASSERT(psHandle->ui32NextIndexPlusOne == 0) |
766 | 811 | ||
767 | 812 | ||
768 | psBase->ui32LastFreeIndexPlusOne = ui32Index + 1; | 813 | psBase->ui32LastFreeIndexPlusOne = ui32Index + 1; |
@@ -771,7 +816,7 @@ static PVRSRV_ERROR FreeHandle(PVRSRV_HANDLE_BASE *psBase, struct sHandle *psHan | |||
771 | psBase->ui32FreeHandCount++; | 816 | psBase->ui32FreeHandCount++; |
772 | INDEX_TO_FREE_HAND_BLOCK_COUNT(psBase, ui32Index)++; | 817 | INDEX_TO_FREE_HAND_BLOCK_COUNT(psBase, ui32Index)++; |
773 | 818 | ||
774 | PVR_ASSERT(INDEX_TO_FREE_HAND_BLOCK_COUNT(psBase, ui32Index)<= HANDLE_BLOCK_SIZE); | 819 | PVR_ASSERT(INDEX_TO_FREE_HAND_BLOCK_COUNT(psBase, ui32Index)<= HANDLE_BLOCK_SIZE) |
775 | 820 | ||
776 | #ifdef DEBUG | 821 | #ifdef DEBUG |
777 | { | 822 | { |
@@ -783,7 +828,7 @@ static PVRSRV_ERROR FreeHandle(PVRSRV_HANDLE_BASE *psBase, struct sHandle *psHan | |||
783 | ui32FreeHandCount += INDEX_TO_FREE_HAND_BLOCK_COUNT(psBase, ui32BlockedIndex); | 828 | ui32FreeHandCount += INDEX_TO_FREE_HAND_BLOCK_COUNT(psBase, ui32BlockedIndex); |
784 | } | 829 | } |
785 | 830 | ||
786 | PVR_ASSERT(ui32FreeHandCount == psBase->ui32FreeHandCount); | 831 | PVR_ASSERT(ui32FreeHandCount == psBase->ui32FreeHandCount) |
787 | } | 832 | } |
788 | #endif | 833 | #endif |
789 | 834 | ||
@@ -875,15 +920,23 @@ static PVRSRV_ERROR FreeHandleBase(PVRSRV_HANDLE_BASE *psBase) | |||
875 | #pragma inline(FindHandle) | 920 | #pragma inline(FindHandle) |
876 | #endif | 921 | #endif |
877 | static INLINE | 922 | static INLINE |
923 | #if defined (SUPPORT_SID_INTERFACE) | ||
924 | IMG_SID FindHandle(PVRSRV_HANDLE_BASE *psBase, IMG_VOID *pvData, PVRSRV_HANDLE_TYPE eType, IMG_SID hParent) | ||
925 | #else | ||
878 | IMG_HANDLE FindHandle(PVRSRV_HANDLE_BASE *psBase, IMG_VOID *pvData, PVRSRV_HANDLE_TYPE eType, IMG_HANDLE hParent) | 926 | IMG_HANDLE FindHandle(PVRSRV_HANDLE_BASE *psBase, IMG_VOID *pvData, PVRSRV_HANDLE_TYPE eType, IMG_HANDLE hParent) |
927 | #endif | ||
879 | { | 928 | { |
880 | HAND_KEY aKey; | 929 | HAND_KEY aKey; |
881 | 930 | ||
882 | PVR_ASSERT(eType != PVRSRV_HANDLE_TYPE_NONE); | 931 | PVR_ASSERT(eType != PVRSRV_HANDLE_TYPE_NONE) |
883 | 932 | ||
884 | InitKey(aKey, psBase, pvData, eType, hParent); | 933 | InitKey(aKey, psBase, pvData, eType, hParent); |
885 | 934 | ||
935 | #if defined (SUPPORT_SID_INTERFACE) | ||
936 | return (IMG_SID) HASH_Retrieve_Extended(psBase->psHashTab, aKey); | ||
937 | #else | ||
886 | return (IMG_HANDLE) HASH_Retrieve_Extended(psBase->psHashTab, aKey); | 938 | return (IMG_HANDLE) HASH_Retrieve_Extended(psBase->psHashTab, aKey); |
939 | #endif | ||
887 | } | 940 | } |
888 | 941 | ||
889 | static PVRSRV_ERROR IncreaseHandleArraySize(PVRSRV_HANDLE_BASE *psBase, IMG_UINT32 ui32Delta) | 942 | static PVRSRV_ERROR IncreaseHandleArraySize(PVRSRV_HANDLE_BASE *psBase, IMG_UINT32 ui32Delta) |
@@ -893,7 +946,7 @@ static PVRSRV_ERROR IncreaseHandleArraySize(PVRSRV_HANDLE_BASE *psBase, IMG_UINT | |||
893 | IMG_UINT32 ui32NewTotalHandCount = psBase->ui32TotalHandCount + ui32DeltaAdjusted; | 946 | IMG_UINT32 ui32NewTotalHandCount = psBase->ui32TotalHandCount + ui32DeltaAdjusted; |
894 | ; | 947 | ; |
895 | 948 | ||
896 | PVR_ASSERT(ui32Delta != 0); | 949 | PVR_ASSERT(ui32Delta != 0) |
897 | 950 | ||
898 | 951 | ||
899 | if (ui32NewTotalHandCount > psBase->ui32MaxIndexPlusOne || ui32NewTotalHandCount <= psBase->ui32TotalHandCount) | 952 | if (ui32NewTotalHandCount > psBase->ui32MaxIndexPlusOne || ui32NewTotalHandCount <= psBase->ui32TotalHandCount) |
@@ -909,7 +962,7 @@ static PVRSRV_ERROR IncreaseHandleArraySize(PVRSRV_HANDLE_BASE *psBase, IMG_UINT | |||
909 | } | 962 | } |
910 | } | 963 | } |
911 | 964 | ||
912 | PVR_ASSERT(ui32DeltaAdjusted >= ui32Delta); | 965 | PVR_ASSERT(ui32DeltaAdjusted >= ui32Delta) |
913 | 966 | ||
914 | 967 | ||
915 | eError = ReallocHandleArray(psBase, ui32NewTotalHandCount); | 968 | eError = ReallocHandleArray(psBase, ui32NewTotalHandCount); |
@@ -941,28 +994,36 @@ static PVRSRV_ERROR EnsureFreeHandles(PVRSRV_HANDLE_BASE *psBase, IMG_UINT32 ui3 | |||
941 | return PVRSRV_OK; | 994 | return PVRSRV_OK; |
942 | } | 995 | } |
943 | 996 | ||
997 | #if defined (SUPPORT_SID_INTERFACE) | ||
998 | static PVRSRV_ERROR AllocHandle(PVRSRV_HANDLE_BASE *psBase, IMG_SID *phHandle, IMG_VOID *pvData, PVRSRV_HANDLE_TYPE eType, PVRSRV_HANDLE_ALLOC_FLAG eFlag, IMG_SID hParent) | ||
999 | #else | ||
944 | static PVRSRV_ERROR AllocHandle(PVRSRV_HANDLE_BASE *psBase, IMG_HANDLE *phHandle, IMG_VOID *pvData, PVRSRV_HANDLE_TYPE eType, PVRSRV_HANDLE_ALLOC_FLAG eFlag, IMG_HANDLE hParent) | 1000 | static PVRSRV_ERROR AllocHandle(PVRSRV_HANDLE_BASE *psBase, IMG_HANDLE *phHandle, IMG_VOID *pvData, PVRSRV_HANDLE_TYPE eType, PVRSRV_HANDLE_ALLOC_FLAG eFlag, IMG_HANDLE hParent) |
1001 | #endif | ||
945 | { | 1002 | { |
946 | IMG_UINT32 ui32NewIndex = DEFAULT_MAX_INDEX_PLUS_ONE; | 1003 | IMG_UINT32 ui32NewIndex = DEFAULT_MAX_INDEX_PLUS_ONE; |
947 | struct sHandle *psNewHandle = IMG_NULL; | 1004 | struct sHandle *psNewHandle = IMG_NULL; |
1005 | #if defined (SUPPORT_SID_INTERFACE) | ||
1006 | IMG_SID hHandle; | ||
1007 | #else | ||
948 | IMG_HANDLE hHandle; | 1008 | IMG_HANDLE hHandle; |
1009 | #endif | ||
949 | HAND_KEY aKey; | 1010 | HAND_KEY aKey; |
950 | PVRSRV_ERROR eError; | 1011 | PVRSRV_ERROR eError; |
951 | 1012 | ||
952 | 1013 | ||
953 | PVR_ASSERT(eType != PVRSRV_HANDLE_TYPE_NONE); | 1014 | PVR_ASSERT(eType != PVRSRV_HANDLE_TYPE_NONE) |
954 | PVR_ASSERT(psBase != IMG_NULL); | 1015 | PVR_ASSERT(psBase != IMG_NULL) |
955 | PVR_ASSERT(psBase->psHashTab != IMG_NULL); | 1016 | PVR_ASSERT(psBase->psHashTab != IMG_NULL) |
956 | 1017 | ||
957 | if (!TEST_FLAG(eFlag, PVRSRV_HANDLE_ALLOC_FLAG_MULTI)) | 1018 | if (!TEST_FLAG(eFlag, PVRSRV_HANDLE_ALLOC_FLAG_MULTI)) |
958 | { | 1019 | { |
959 | 1020 | ||
960 | PVR_ASSERT(FindHandle(psBase, pvData, eType, hParent) == IMG_NULL); | 1021 | PVR_ASSERT(FindHandle(psBase, pvData, eType, hParent) == IMG_NULL) |
961 | } | 1022 | } |
962 | 1023 | ||
963 | if (psBase->ui32FreeHandCount == 0 && HANDLES_BATCHED(psBase)) | 1024 | if (psBase->ui32FreeHandCount == 0 && HANDLES_BATCHED(psBase)) |
964 | { | 1025 | { |
965 | PVR_DPF((PVR_DBG_WARNING, "AllocHandle: Handle batch size (%u) was too small, allocating additional space", psBase->ui32HandBatchSize)); | 1026 | PVR_DPF((PVR_DBG_WARNING, "AllocHandle: Handle batch size (%u) was too small, allocating additional space", psBase->ui32HandBatchSize)); |
966 | } | 1027 | } |
967 | 1028 | ||
968 | 1029 | ||
@@ -988,7 +1049,7 @@ static PVRSRV_ERROR AllocHandle(PVRSRV_HANDLE_BASE *psBase, IMG_HANDLE *phHandle | |||
988 | 1049 | ||
989 | 1050 | ||
990 | 1051 | ||
991 | PVR_ASSERT((psBase->ui32FirstFreeIndex % HANDLE_BLOCK_SIZE) == 0); | 1052 | PVR_ASSERT((psBase->ui32FirstFreeIndex % HANDLE_BLOCK_SIZE) == 0) |
992 | 1053 | ||
993 | for (ui32BlockedIndex = ROUND_DOWN_TO_MULTIPLE_OF_BLOCK_SIZE(psBase->ui32FirstFreeIndex); ui32BlockedIndex < psBase->ui32TotalHandCount; ui32BlockedIndex += HANDLE_BLOCK_SIZE) | 1054 | for (ui32BlockedIndex = ROUND_DOWN_TO_MULTIPLE_OF_BLOCK_SIZE(psBase->ui32FirstFreeIndex); ui32BlockedIndex < psBase->ui32TotalHandCount; ui32BlockedIndex += HANDLE_BLOCK_SIZE) |
994 | { | 1055 | { |
@@ -1009,9 +1070,9 @@ static PVRSRV_ERROR AllocHandle(PVRSRV_HANDLE_BASE *psBase, IMG_HANDLE *phHandle | |||
1009 | } | 1070 | } |
1010 | } | 1071 | } |
1011 | psBase->ui32FirstFreeIndex = 0; | 1072 | psBase->ui32FirstFreeIndex = 0; |
1012 | PVR_ASSERT(ui32NewIndex < psBase->ui32TotalHandCount); | 1073 | PVR_ASSERT(ui32NewIndex < psBase->ui32TotalHandCount) |
1013 | } | 1074 | } |
1014 | PVR_ASSERT(psNewHandle != IMG_NULL); | 1075 | PVR_ASSERT(psNewHandle != IMG_NULL) |
1015 | 1076 | ||
1016 | 1077 | ||
1017 | hHandle = INDEX_TO_HANDLE(ui32NewIndex); | 1078 | hHandle = INDEX_TO_HANDLE(ui32NewIndex); |
@@ -1033,8 +1094,8 @@ static PVRSRV_ERROR AllocHandle(PVRSRV_HANDLE_BASE *psBase, IMG_HANDLE *phHandle | |||
1033 | 1094 | ||
1034 | psBase->ui32FreeHandCount--; | 1095 | psBase->ui32FreeHandCount--; |
1035 | 1096 | ||
1036 | PVR_ASSERT(INDEX_TO_FREE_HAND_BLOCK_COUNT(psBase, ui32NewIndex) <= HANDLE_BLOCK_SIZE); | 1097 | PVR_ASSERT(INDEX_TO_FREE_HAND_BLOCK_COUNT(psBase, ui32NewIndex) <= HANDLE_BLOCK_SIZE) |
1037 | PVR_ASSERT(INDEX_TO_FREE_HAND_BLOCK_COUNT(psBase, ui32NewIndex) > 0); | 1098 | PVR_ASSERT(INDEX_TO_FREE_HAND_BLOCK_COUNT(psBase, ui32NewIndex) > 0) |
1038 | 1099 | ||
1039 | INDEX_TO_FREE_HAND_BLOCK_COUNT(psBase, ui32NewIndex)--; | 1100 | INDEX_TO_FREE_HAND_BLOCK_COUNT(psBase, ui32NewIndex)--; |
1040 | 1101 | ||
@@ -1044,8 +1105,8 @@ static PVRSRV_ERROR AllocHandle(PVRSRV_HANDLE_BASE *psBase, IMG_HANDLE *phHandle | |||
1044 | 1105 | ||
1045 | if (psBase->ui32FreeHandCount == 0) | 1106 | if (psBase->ui32FreeHandCount == 0) |
1046 | { | 1107 | { |
1047 | PVR_ASSERT(psBase->ui32FirstFreeIndex == ui32NewIndex); | 1108 | PVR_ASSERT(psBase->ui32FirstFreeIndex == ui32NewIndex) |
1048 | PVR_ASSERT(psBase->ui32LastFreeIndexPlusOne == (ui32NewIndex + 1)); | 1109 | PVR_ASSERT(psBase->ui32LastFreeIndexPlusOne == (ui32NewIndex + 1)) |
1049 | 1110 | ||
1050 | psBase->ui32LastFreeIndexPlusOne = 0; | 1111 | psBase->ui32LastFreeIndexPlusOne = 0; |
1051 | psBase->ui32FirstFreeIndex = 0; | 1112 | psBase->ui32FirstFreeIndex = 0; |
@@ -1060,7 +1121,7 @@ static PVRSRV_ERROR AllocHandle(PVRSRV_HANDLE_BASE *psBase, IMG_HANDLE *phHandle | |||
1060 | } | 1121 | } |
1061 | 1122 | ||
1062 | 1123 | ||
1063 | PVR_ASSERT(psNewHandle->ui32Index == ui32NewIndex); | 1124 | PVR_ASSERT(psNewHandle->ui32Index == ui32NewIndex) |
1064 | 1125 | ||
1065 | 1126 | ||
1066 | psNewHandle->eType = eType; | 1127 | psNewHandle->eType = eType; |
@@ -1070,12 +1131,12 @@ static PVRSRV_ERROR AllocHandle(PVRSRV_HANDLE_BASE *psBase, IMG_HANDLE *phHandle | |||
1070 | 1131 | ||
1071 | InitParentList(psNewHandle); | 1132 | InitParentList(psNewHandle); |
1072 | #if defined(DEBUG) | 1133 | #if defined(DEBUG) |
1073 | PVR_ASSERT(NoChildren(psNewHandle)); | 1134 | PVR_ASSERT(NoChildren(psNewHandle)) |
1074 | #endif | 1135 | #endif |
1075 | 1136 | ||
1076 | InitChildEntry(psNewHandle); | 1137 | InitChildEntry(psNewHandle); |
1077 | #if defined(DEBUG) | 1138 | #if defined(DEBUG) |
1078 | PVR_ASSERT(NoParent(psNewHandle)); | 1139 | PVR_ASSERT(NoParent(psNewHandle)) |
1079 | #endif | 1140 | #endif |
1080 | 1141 | ||
1081 | if (HANDLES_BATCHED(psBase)) | 1142 | if (HANDLES_BATCHED(psBase)) |
@@ -1099,12 +1160,24 @@ static PVRSRV_ERROR AllocHandle(PVRSRV_HANDLE_BASE *psBase, IMG_HANDLE *phHandle | |||
1099 | return PVRSRV_OK; | 1160 | return PVRSRV_OK; |
1100 | } | 1161 | } |
1101 | 1162 | ||
1163 | #if defined (SUPPORT_SID_INTERFACE) | ||
1164 | PVRSRV_ERROR PVRSRVAllocHandle(PVRSRV_HANDLE_BASE *psBase, IMG_SID *phHandle, IMG_VOID *pvData, PVRSRV_HANDLE_TYPE eType, PVRSRV_HANDLE_ALLOC_FLAG eFlag) | ||
1165 | #else | ||
1102 | PVRSRV_ERROR PVRSRVAllocHandle(PVRSRV_HANDLE_BASE *psBase, IMG_HANDLE *phHandle, IMG_VOID *pvData, PVRSRV_HANDLE_TYPE eType, PVRSRV_HANDLE_ALLOC_FLAG eFlag) | 1166 | PVRSRV_ERROR PVRSRVAllocHandle(PVRSRV_HANDLE_BASE *psBase, IMG_HANDLE *phHandle, IMG_VOID *pvData, PVRSRV_HANDLE_TYPE eType, PVRSRV_HANDLE_ALLOC_FLAG eFlag) |
1167 | #endif | ||
1103 | { | 1168 | { |
1169 | #if defined (SUPPORT_SID_INTERFACE) | ||
1170 | IMG_SID hHandle; | ||
1171 | #else | ||
1104 | IMG_HANDLE hHandle; | 1172 | IMG_HANDLE hHandle; |
1173 | #endif | ||
1105 | PVRSRV_ERROR eError; | 1174 | PVRSRV_ERROR eError; |
1106 | 1175 | ||
1176 | #if defined (SUPPORT_SID_INTERFACE) | ||
1177 | *phHandle = 0; | ||
1178 | #else | ||
1107 | *phHandle = IMG_NULL; | 1179 | *phHandle = IMG_NULL; |
1180 | #endif | ||
1108 | 1181 | ||
1109 | if (HANDLES_BATCHED(psBase)) | 1182 | if (HANDLES_BATCHED(psBase)) |
1110 | { | 1183 | { |
@@ -1113,13 +1186,17 @@ PVRSRV_ERROR PVRSRVAllocHandle(PVRSRV_HANDLE_BASE *psBase, IMG_HANDLE *phHandle, | |||
1113 | } | 1186 | } |
1114 | 1187 | ||
1115 | 1188 | ||
1116 | PVR_ASSERT(eType != PVRSRV_HANDLE_TYPE_NONE); | 1189 | PVR_ASSERT(eType != PVRSRV_HANDLE_TYPE_NONE) |
1117 | 1190 | ||
1118 | if (!TEST_FLAG(eFlag, PVRSRV_HANDLE_ALLOC_FLAG_MULTI)) | 1191 | if (!TEST_FLAG(eFlag, PVRSRV_HANDLE_ALLOC_FLAG_MULTI)) |
1119 | { | 1192 | { |
1120 | 1193 | ||
1121 | hHandle = FindHandle(psBase, pvData, eType, IMG_NULL); | 1194 | hHandle = FindHandle(psBase, pvData, eType, IMG_NULL); |
1195 | #if defined (SUPPORT_SID_INTERFACE) | ||
1196 | if (hHandle != 0) | ||
1197 | #else | ||
1122 | if (hHandle != IMG_NULL) | 1198 | if (hHandle != IMG_NULL) |
1199 | #endif | ||
1123 | { | 1200 | { |
1124 | struct sHandle *psHandle; | 1201 | struct sHandle *psHandle; |
1125 | 1202 | ||
@@ -1137,12 +1214,16 @@ PVRSRV_ERROR PVRSRVAllocHandle(PVRSRV_HANDLE_BASE *psBase, IMG_HANDLE *phHandle, | |||
1137 | eError = PVRSRV_OK; | 1214 | eError = PVRSRV_OK; |
1138 | goto exit_ok; | 1215 | goto exit_ok; |
1139 | } | 1216 | } |
1217 | |||
1218 | #if defined (SUPPORT_SID_INTERFACE) | ||
1219 | PVR_DBG_BREAK | ||
1220 | #endif | ||
1140 | return PVRSRV_ERROR_HANDLE_NOT_SHAREABLE; | 1221 | return PVRSRV_ERROR_HANDLE_NOT_SHAREABLE; |
1141 | } | 1222 | } |
1142 | } | 1223 | } |
1143 | 1224 | ||
1144 | eError = AllocHandle(psBase, phHandle, pvData, eType, eFlag, IMG_NULL); | 1225 | eError = AllocHandle(psBase, phHandle, pvData, eType, eFlag, IMG_NULL); |
1145 | 1226 | ||
1146 | exit_ok: | 1227 | exit_ok: |
1147 | if (HANDLES_BATCHED(psBase) && (eError == PVRSRV_OK)) | 1228 | if (HANDLES_BATCHED(psBase) && (eError == PVRSRV_OK)) |
1148 | { | 1229 | { |
@@ -1152,15 +1233,26 @@ exit_ok: | |||
1152 | return eError; | 1233 | return eError; |
1153 | } | 1234 | } |
1154 | 1235 | ||
1236 | #if defined (SUPPORT_SID_INTERFACE) | ||
1237 | PVRSRV_ERROR PVRSRVAllocSubHandle(PVRSRV_HANDLE_BASE *psBase, IMG_SID *phHandle, IMG_VOID *pvData, PVRSRV_HANDLE_TYPE eType, PVRSRV_HANDLE_ALLOC_FLAG eFlag, IMG_SID hParent) | ||
1238 | #else | ||
1155 | PVRSRV_ERROR PVRSRVAllocSubHandle(PVRSRV_HANDLE_BASE *psBase, IMG_HANDLE *phHandle, IMG_VOID *pvData, PVRSRV_HANDLE_TYPE eType, PVRSRV_HANDLE_ALLOC_FLAG eFlag, IMG_HANDLE hParent) | 1239 | PVRSRV_ERROR PVRSRVAllocSubHandle(PVRSRV_HANDLE_BASE *psBase, IMG_HANDLE *phHandle, IMG_VOID *pvData, PVRSRV_HANDLE_TYPE eType, PVRSRV_HANDLE_ALLOC_FLAG eFlag, IMG_HANDLE hParent) |
1240 | #endif | ||
1156 | { | 1241 | { |
1157 | struct sHandle *psPHand; | 1242 | struct sHandle *psPHand; |
1158 | struct sHandle *psCHand; | 1243 | struct sHandle *psCHand; |
1159 | PVRSRV_ERROR eError; | 1244 | PVRSRV_ERROR eError; |
1245 | #if defined (SUPPORT_SID_INTERFACE) | ||
1246 | IMG_SID hParentKey; | ||
1247 | IMG_SID hHandle; | ||
1248 | |||
1249 | *phHandle = 0; | ||
1250 | #else | ||
1160 | IMG_HANDLE hParentKey; | 1251 | IMG_HANDLE hParentKey; |
1161 | IMG_HANDLE hHandle; | 1252 | IMG_HANDLE hHandle; |
1162 | 1253 | ||
1163 | *phHandle = IMG_NULL; | 1254 | *phHandle = IMG_NULL; |
1255 | #endif | ||
1164 | 1256 | ||
1165 | if (HANDLES_BATCHED(psBase)) | 1257 | if (HANDLES_BATCHED(psBase)) |
1166 | { | 1258 | { |
@@ -1169,7 +1261,7 @@ PVRSRV_ERROR PVRSRVAllocSubHandle(PVRSRV_HANDLE_BASE *psBase, IMG_HANDLE *phHand | |||
1169 | } | 1261 | } |
1170 | 1262 | ||
1171 | 1263 | ||
1172 | PVR_ASSERT(eType != PVRSRV_HANDLE_TYPE_NONE); | 1264 | PVR_ASSERT(eType != PVRSRV_HANDLE_TYPE_NONE) |
1173 | 1265 | ||
1174 | hParentKey = TEST_FLAG(eFlag, PVRSRV_HANDLE_ALLOC_FLAG_PRIVATE) ? | 1266 | hParentKey = TEST_FLAG(eFlag, PVRSRV_HANDLE_ALLOC_FLAG_PRIVATE) ? |
1175 | hParent : IMG_NULL; | 1267 | hParent : IMG_NULL; |
@@ -1185,7 +1277,11 @@ PVRSRV_ERROR PVRSRVAllocSubHandle(PVRSRV_HANDLE_BASE *psBase, IMG_HANDLE *phHand | |||
1185 | { | 1277 | { |
1186 | 1278 | ||
1187 | hHandle = FindHandle(psBase, pvData, eType, hParentKey); | 1279 | hHandle = FindHandle(psBase, pvData, eType, hParentKey); |
1280 | #if defined (SUPPORT_SID_INTERFACE) | ||
1281 | if (hHandle != 0) | ||
1282 | #else | ||
1188 | if (hHandle != IMG_NULL) | 1283 | if (hHandle != IMG_NULL) |
1284 | #endif | ||
1189 | { | 1285 | { |
1190 | struct sHandle *psCHandle; | 1286 | struct sHandle *psCHandle; |
1191 | PVRSRV_ERROR eErr; | 1287 | PVRSRV_ERROR eErr; |
@@ -1197,7 +1293,7 @@ PVRSRV_ERROR PVRSRVAllocSubHandle(PVRSRV_HANDLE_BASE *psBase, IMG_HANDLE *phHand | |||
1197 | return eErr; | 1293 | return eErr; |
1198 | } | 1294 | } |
1199 | 1295 | ||
1200 | PVR_ASSERT(hParentKey != IMG_NULL && ParentHandle(HANDLE_TO_HANDLE_STRUCT_PTR(psBase, hHandle)) == hParent); | 1296 | PVR_ASSERT(hParentKey != IMG_NULL && ParentHandle(HANDLE_TO_HANDLE_STRUCT_PTR(psBase, hHandle)) == hParent) |
1201 | 1297 | ||
1202 | 1298 | ||
1203 | if (TEST_FLAG(psCHandle->eFlag & eFlag, PVRSRV_HANDLE_ALLOC_FLAG_SHARED) && ParentHandle(HANDLE_TO_HANDLE_STRUCT_PTR(psBase, hHandle)) == hParent) | 1299 | if (TEST_FLAG(psCHandle->eFlag & eFlag, PVRSRV_HANDLE_ALLOC_FLAG_SHARED) && ParentHandle(HANDLE_TO_HANDLE_STRUCT_PTR(psBase, hHandle)) == hParent) |
@@ -1205,6 +1301,9 @@ PVRSRV_ERROR PVRSRVAllocSubHandle(PVRSRV_HANDLE_BASE *psBase, IMG_HANDLE *phHand | |||
1205 | *phHandle = hHandle; | 1301 | *phHandle = hHandle; |
1206 | goto exit_ok; | 1302 | goto exit_ok; |
1207 | } | 1303 | } |
1304 | #if defined (SUPPORT_SID_INTERFACE) | ||
1305 | PVR_DBG_BREAK | ||
1306 | #endif | ||
1208 | return PVRSRV_ERROR_HANDLE_NOT_SHAREABLE; | 1307 | return PVRSRV_ERROR_HANDLE_NOT_SHAREABLE; |
1209 | } | 1308 | } |
1210 | } | 1309 | } |
@@ -1233,14 +1332,26 @@ exit_ok: | |||
1233 | return PVRSRV_OK; | 1332 | return PVRSRV_OK; |
1234 | } | 1333 | } |
1235 | 1334 | ||
1335 | #if defined (SUPPORT_SID_INTERFACE) | ||
1336 | PVRSRV_ERROR PVRSRVFindHandle(PVRSRV_HANDLE_BASE *psBase, IMG_SID *phHandle, IMG_VOID *pvData, PVRSRV_HANDLE_TYPE eType) | ||
1337 | #else | ||
1236 | PVRSRV_ERROR PVRSRVFindHandle(PVRSRV_HANDLE_BASE *psBase, IMG_HANDLE *phHandle, IMG_VOID *pvData, PVRSRV_HANDLE_TYPE eType) | 1338 | PVRSRV_ERROR PVRSRVFindHandle(PVRSRV_HANDLE_BASE *psBase, IMG_HANDLE *phHandle, IMG_VOID *pvData, PVRSRV_HANDLE_TYPE eType) |
1339 | #endif | ||
1237 | { | 1340 | { |
1341 | #if defined (SUPPORT_SID_INTERFACE) | ||
1342 | IMG_SID hHandle; | ||
1343 | #else | ||
1238 | IMG_HANDLE hHandle; | 1344 | IMG_HANDLE hHandle; |
1345 | #endif | ||
1239 | 1346 | ||
1240 | PVR_ASSERT(eType != PVRSRV_HANDLE_TYPE_NONE); | 1347 | PVR_ASSERT(eType != PVRSRV_HANDLE_TYPE_NONE) |
1241 | 1348 | ||
1242 | 1349 | ||
1350 | #if defined (SUPPORT_SID_INTERFACE) | ||
1351 | hHandle = (IMG_SID) FindHandle(psBase, pvData, eType, IMG_NULL); | ||
1352 | #else | ||
1243 | hHandle = (IMG_HANDLE) FindHandle(psBase, pvData, eType, IMG_NULL); | 1353 | hHandle = (IMG_HANDLE) FindHandle(psBase, pvData, eType, IMG_NULL); |
1354 | #endif | ||
1244 | if (hHandle == IMG_NULL) | 1355 | if (hHandle == IMG_NULL) |
1245 | { | 1356 | { |
1246 | return PVRSRV_ERROR_HANDLE_NOT_FOUND; | 1357 | return PVRSRV_ERROR_HANDLE_NOT_FOUND; |
@@ -1251,7 +1362,11 @@ PVRSRV_ERROR PVRSRVFindHandle(PVRSRV_HANDLE_BASE *psBase, IMG_HANDLE *phHandle, | |||
1251 | return PVRSRV_OK; | 1362 | return PVRSRV_OK; |
1252 | } | 1363 | } |
1253 | 1364 | ||
1365 | #if defined (SUPPORT_SID_INTERFACE) | ||
1366 | PVRSRV_ERROR PVRSRVLookupHandleAnyType(PVRSRV_HANDLE_BASE *psBase, IMG_PVOID *ppvData, PVRSRV_HANDLE_TYPE *peType, IMG_SID hHandle) | ||
1367 | #else | ||
1254 | PVRSRV_ERROR PVRSRVLookupHandleAnyType(PVRSRV_HANDLE_BASE *psBase, IMG_PVOID *ppvData, PVRSRV_HANDLE_TYPE *peType, IMG_HANDLE hHandle) | 1368 | PVRSRV_ERROR PVRSRVLookupHandleAnyType(PVRSRV_HANDLE_BASE *psBase, IMG_PVOID *ppvData, PVRSRV_HANDLE_TYPE *peType, IMG_HANDLE hHandle) |
1369 | #endif | ||
1255 | { | 1370 | { |
1256 | struct sHandle *psHandle; | 1371 | struct sHandle *psHandle; |
1257 | PVRSRV_ERROR eError; | 1372 | PVRSRV_ERROR eError; |
@@ -1260,6 +1375,9 @@ PVRSRV_ERROR PVRSRVLookupHandleAnyType(PVRSRV_HANDLE_BASE *psBase, IMG_PVOID *pp | |||
1260 | if (eError != PVRSRV_OK) | 1375 | if (eError != PVRSRV_OK) |
1261 | { | 1376 | { |
1262 | PVR_DPF((PVR_DBG_ERROR, "PVRSRVLookupHandleAnyType: Error looking up handle (%d)", eError)); | 1377 | PVR_DPF((PVR_DBG_ERROR, "PVRSRVLookupHandleAnyType: Error looking up handle (%d)", eError)); |
1378 | #if defined (SUPPORT_SID_INTERFACE) | ||
1379 | PVR_DBG_BREAK | ||
1380 | #endif | ||
1263 | return eError; | 1381 | return eError; |
1264 | } | 1382 | } |
1265 | 1383 | ||
@@ -1269,17 +1387,27 @@ PVRSRV_ERROR PVRSRVLookupHandleAnyType(PVRSRV_HANDLE_BASE *psBase, IMG_PVOID *pp | |||
1269 | return PVRSRV_OK; | 1387 | return PVRSRV_OK; |
1270 | } | 1388 | } |
1271 | 1389 | ||
1390 | #if defined (SUPPORT_SID_INTERFACE) | ||
1391 | PVRSRV_ERROR PVRSRVLookupHandle(PVRSRV_HANDLE_BASE *psBase, IMG_PVOID *ppvData, IMG_SID hHandle, PVRSRV_HANDLE_TYPE eType) | ||
1392 | #else | ||
1272 | PVRSRV_ERROR PVRSRVLookupHandle(PVRSRV_HANDLE_BASE *psBase, IMG_PVOID *ppvData, IMG_HANDLE hHandle, PVRSRV_HANDLE_TYPE eType) | 1393 | PVRSRV_ERROR PVRSRVLookupHandle(PVRSRV_HANDLE_BASE *psBase, IMG_PVOID *ppvData, IMG_HANDLE hHandle, PVRSRV_HANDLE_TYPE eType) |
1394 | #endif | ||
1273 | { | 1395 | { |
1274 | struct sHandle *psHandle; | 1396 | struct sHandle *psHandle; |
1275 | PVRSRV_ERROR eError; | 1397 | PVRSRV_ERROR eError; |
1276 | 1398 | ||
1277 | PVR_ASSERT(eType != PVRSRV_HANDLE_TYPE_NONE); | 1399 | PVR_ASSERT(eType != PVRSRV_HANDLE_TYPE_NONE) |
1400 | #if defined (SUPPORT_SID_INTERFACE) | ||
1401 | PVR_ASSERT(hHandle != 0) | ||
1402 | #endif | ||
1278 | 1403 | ||
1279 | eError = GetHandleStructure(psBase, &psHandle, hHandle, eType); | 1404 | eError = GetHandleStructure(psBase, &psHandle, hHandle, eType); |
1280 | if (eError != PVRSRV_OK) | 1405 | if (eError != PVRSRV_OK) |
1281 | { | 1406 | { |
1282 | PVR_DPF((PVR_DBG_ERROR, "PVRSRVLookupHandle: Error looking up handle (%d)", eError)); | 1407 | PVR_DPF((PVR_DBG_ERROR, "PVRSRVLookupHandle: Error looking up handle (%d)", eError)); |
1408 | #if defined (SUPPORT_SID_INTERFACE) | ||
1409 | PVR_DBG_BREAK | ||
1410 | #endif | ||
1283 | return eError; | 1411 | return eError; |
1284 | } | 1412 | } |
1285 | 1413 | ||
@@ -1288,13 +1416,20 @@ PVRSRV_ERROR PVRSRVLookupHandle(PVRSRV_HANDLE_BASE *psBase, IMG_PVOID *ppvData, | |||
1288 | return PVRSRV_OK; | 1416 | return PVRSRV_OK; |
1289 | } | 1417 | } |
1290 | 1418 | ||
1419 | #if defined (SUPPORT_SID_INTERFACE) | ||
1420 | PVRSRV_ERROR PVRSRVLookupSubHandle(PVRSRV_HANDLE_BASE *psBase, IMG_PVOID *ppvData, IMG_SID hHandle, PVRSRV_HANDLE_TYPE eType, IMG_SID hAncestor) | ||
1421 | #else | ||
1291 | PVRSRV_ERROR PVRSRVLookupSubHandle(PVRSRV_HANDLE_BASE *psBase, IMG_PVOID *ppvData, IMG_HANDLE hHandle, PVRSRV_HANDLE_TYPE eType, IMG_HANDLE hAncestor) | 1422 | PVRSRV_ERROR PVRSRVLookupSubHandle(PVRSRV_HANDLE_BASE *psBase, IMG_PVOID *ppvData, IMG_HANDLE hHandle, PVRSRV_HANDLE_TYPE eType, IMG_HANDLE hAncestor) |
1423 | #endif | ||
1292 | { | 1424 | { |
1293 | struct sHandle *psPHand; | 1425 | struct sHandle *psPHand; |
1294 | struct sHandle *psCHand; | 1426 | struct sHandle *psCHand; |
1295 | PVRSRV_ERROR eError; | 1427 | PVRSRV_ERROR eError; |
1296 | 1428 | ||
1297 | PVR_ASSERT(eType != PVRSRV_HANDLE_TYPE_NONE); | 1429 | PVR_ASSERT(eType != PVRSRV_HANDLE_TYPE_NONE) |
1430 | #if defined (SUPPORT_SID_INTERFACE) | ||
1431 | PVR_ASSERT(hHandle != 0) | ||
1432 | #endif | ||
1298 | 1433 | ||
1299 | eError = GetHandleStructure(psBase, &psCHand, hHandle, eType); | 1434 | eError = GetHandleStructure(psBase, &psCHand, hHandle, eType); |
1300 | if (eError != PVRSRV_OK) | 1435 | if (eError != PVRSRV_OK) |
@@ -1319,12 +1454,16 @@ PVRSRV_ERROR PVRSRVLookupSubHandle(PVRSRV_HANDLE_BASE *psBase, IMG_PVOID *ppvDat | |||
1319 | return PVRSRV_OK; | 1454 | return PVRSRV_OK; |
1320 | } | 1455 | } |
1321 | 1456 | ||
1457 | #if defined (SUPPORT_SID_INTERFACE) | ||
1458 | PVRSRV_ERROR PVRSRVGetParentHandle(PVRSRV_HANDLE_BASE *psBase, IMG_SID *phParent, IMG_SID hHandle, PVRSRV_HANDLE_TYPE eType) | ||
1459 | #else | ||
1322 | PVRSRV_ERROR PVRSRVGetParentHandle(PVRSRV_HANDLE_BASE *psBase, IMG_PVOID *phParent, IMG_HANDLE hHandle, PVRSRV_HANDLE_TYPE eType) | 1460 | PVRSRV_ERROR PVRSRVGetParentHandle(PVRSRV_HANDLE_BASE *psBase, IMG_PVOID *phParent, IMG_HANDLE hHandle, PVRSRV_HANDLE_TYPE eType) |
1461 | #endif | ||
1323 | { | 1462 | { |
1324 | struct sHandle *psHandle; | 1463 | struct sHandle *psHandle; |
1325 | PVRSRV_ERROR eError; | 1464 | PVRSRV_ERROR eError; |
1326 | 1465 | ||
1327 | PVR_ASSERT(eType != PVRSRV_HANDLE_TYPE_NONE); | 1466 | PVR_ASSERT(eType != PVRSRV_HANDLE_TYPE_NONE) |
1328 | 1467 | ||
1329 | eError = GetHandleStructure(psBase, &psHandle, hHandle, eType); | 1468 | eError = GetHandleStructure(psBase, &psHandle, hHandle, eType); |
1330 | if (eError != PVRSRV_OK) | 1469 | if (eError != PVRSRV_OK) |
@@ -1338,17 +1477,24 @@ PVRSRV_ERROR PVRSRVGetParentHandle(PVRSRV_HANDLE_BASE *psBase, IMG_PVOID *phPare | |||
1338 | return PVRSRV_OK; | 1477 | return PVRSRV_OK; |
1339 | } | 1478 | } |
1340 | 1479 | ||
1480 | #if defined (SUPPORT_SID_INTERFACE) | ||
1481 | PVRSRV_ERROR PVRSRVLookupAndReleaseHandle(PVRSRV_HANDLE_BASE *psBase, IMG_PVOID *ppvData, IMG_SID hHandle, PVRSRV_HANDLE_TYPE eType) | ||
1482 | #else | ||
1341 | PVRSRV_ERROR PVRSRVLookupAndReleaseHandle(PVRSRV_HANDLE_BASE *psBase, IMG_PVOID *ppvData, IMG_HANDLE hHandle, PVRSRV_HANDLE_TYPE eType) | 1483 | PVRSRV_ERROR PVRSRVLookupAndReleaseHandle(PVRSRV_HANDLE_BASE *psBase, IMG_PVOID *ppvData, IMG_HANDLE hHandle, PVRSRV_HANDLE_TYPE eType) |
1484 | #endif | ||
1342 | { | 1485 | { |
1343 | struct sHandle *psHandle; | 1486 | struct sHandle *psHandle; |
1344 | PVRSRV_ERROR eError; | 1487 | PVRSRV_ERROR eError; |
1345 | 1488 | ||
1346 | PVR_ASSERT(eType != PVRSRV_HANDLE_TYPE_NONE); | 1489 | PVR_ASSERT(eType != PVRSRV_HANDLE_TYPE_NONE) |
1347 | 1490 | ||
1348 | eError = GetHandleStructure(psBase, &psHandle, hHandle, eType); | 1491 | eError = GetHandleStructure(psBase, &psHandle, hHandle, eType); |
1349 | if (eError != PVRSRV_OK) | 1492 | if (eError != PVRSRV_OK) |
1350 | { | 1493 | { |
1351 | PVR_DPF((PVR_DBG_ERROR, "PVRSRVLookupAndReleaseHandle: Error looking up handle (%d)", eError)); | 1494 | PVR_DPF((PVR_DBG_ERROR, "PVRSRVLookupAndReleaseHandle: Error looking up handle (%d)", eError)); |
1495 | #if defined (SUPPORT_SID_INTERFACE) | ||
1496 | PVR_DBG_BREAK | ||
1497 | #endif | ||
1352 | return eError; | 1498 | return eError; |
1353 | } | 1499 | } |
1354 | 1500 | ||
@@ -1359,12 +1505,16 @@ PVRSRV_ERROR PVRSRVLookupAndReleaseHandle(PVRSRV_HANDLE_BASE *psBase, IMG_PVOID | |||
1359 | return eError; | 1505 | return eError; |
1360 | } | 1506 | } |
1361 | 1507 | ||
1508 | #if defined (SUPPORT_SID_INTERFACE) | ||
1509 | PVRSRV_ERROR PVRSRVReleaseHandle(PVRSRV_HANDLE_BASE *psBase, IMG_SID hHandle, PVRSRV_HANDLE_TYPE eType) | ||
1510 | #else | ||
1362 | PVRSRV_ERROR PVRSRVReleaseHandle(PVRSRV_HANDLE_BASE *psBase, IMG_HANDLE hHandle, PVRSRV_HANDLE_TYPE eType) | 1511 | PVRSRV_ERROR PVRSRVReleaseHandle(PVRSRV_HANDLE_BASE *psBase, IMG_HANDLE hHandle, PVRSRV_HANDLE_TYPE eType) |
1512 | #endif | ||
1363 | { | 1513 | { |
1364 | struct sHandle *psHandle; | 1514 | struct sHandle *psHandle; |
1365 | PVRSRV_ERROR eError; | 1515 | PVRSRV_ERROR eError; |
1366 | 1516 | ||
1367 | PVR_ASSERT(eType != PVRSRV_HANDLE_TYPE_NONE); | 1517 | PVR_ASSERT(eType != PVRSRV_HANDLE_TYPE_NONE) |
1368 | 1518 | ||
1369 | eError = GetHandleStructure(psBase, &psHandle, hHandle, eType); | 1519 | eError = GetHandleStructure(psBase, &psHandle, hHandle, eType); |
1370 | if (eError != PVRSRV_OK) | 1520 | if (eError != PVRSRV_OK) |
@@ -1406,11 +1556,11 @@ PVRSRV_ERROR PVRSRVNewHandleBatch(PVRSRV_HANDLE_BASE *psBase, IMG_UINT32 ui32Bat | |||
1406 | 1556 | ||
1407 | psBase->ui32TotalHandCountPreBatch = psBase->ui32TotalHandCount; | 1557 | psBase->ui32TotalHandCountPreBatch = psBase->ui32TotalHandCount; |
1408 | 1558 | ||
1409 | PVR_ASSERT(psBase->ui32BatchHandAllocFailures == 0); | 1559 | PVR_ASSERT(psBase->ui32BatchHandAllocFailures == 0) |
1410 | 1560 | ||
1411 | PVR_ASSERT(psBase->ui32FirstBatchIndexPlusOne == 0); | 1561 | PVR_ASSERT(psBase->ui32FirstBatchIndexPlusOne == 0) |
1412 | 1562 | ||
1413 | PVR_ASSERT(HANDLES_BATCHED(psBase)); | 1563 | PVR_ASSERT(HANDLES_BATCHED(psBase)) |
1414 | 1564 | ||
1415 | return PVRSRV_OK; | 1565 | return PVRSRV_OK; |
1416 | } | 1566 | } |
@@ -1437,14 +1587,14 @@ static PVRSRV_ERROR PVRSRVHandleBatchCommitOrRelease(PVRSRV_HANDLE_BASE *psBase, | |||
1437 | bCommitBatch = IMG_FALSE; | 1587 | bCommitBatch = IMG_FALSE; |
1438 | } | 1588 | } |
1439 | 1589 | ||
1440 | PVR_ASSERT(psBase->ui32BatchHandAllocFailures == 0 || !bCommit); | 1590 | PVR_ASSERT(psBase->ui32BatchHandAllocFailures == 0 || !bCommit) |
1441 | 1591 | ||
1442 | ui32IndexPlusOne = psBase->ui32FirstBatchIndexPlusOne; | 1592 | ui32IndexPlusOne = psBase->ui32FirstBatchIndexPlusOne; |
1443 | while(ui32IndexPlusOne != 0) | 1593 | while(ui32IndexPlusOne != 0) |
1444 | { | 1594 | { |
1445 | struct sHandle *psHandle = INDEX_TO_HANDLE_STRUCT_PTR(psBase, ui32IndexPlusOne - 1); | 1595 | struct sHandle *psHandle = INDEX_TO_HANDLE_STRUCT_PTR(psBase, ui32IndexPlusOne - 1); |
1446 | IMG_UINT32 ui32NextIndexPlusOne = psHandle->ui32NextIndexPlusOne; | 1596 | IMG_UINT32 ui32NextIndexPlusOne = psHandle->ui32NextIndexPlusOne; |
1447 | PVR_ASSERT(BATCHED_HANDLE(psHandle)); | 1597 | PVR_ASSERT(BATCHED_HANDLE(psHandle)) |
1448 | 1598 | ||
1449 | psHandle->ui32NextIndexPlusOne = 0; | 1599 | psHandle->ui32NextIndexPlusOne = 0; |
1450 | 1600 | ||
@@ -1464,7 +1614,7 @@ static PVRSRV_ERROR PVRSRVHandleBatchCommitOrRelease(PVRSRV_HANDLE_BASE *psBase, | |||
1464 | { | 1614 | { |
1465 | PVR_DPF((PVR_DBG_ERROR, "PVRSRVHandleBatchCommitOrRelease: Error freeing handle (%d)", eError)); | 1615 | PVR_DPF((PVR_DBG_ERROR, "PVRSRVHandleBatchCommitOrRelease: Error freeing handle (%d)", eError)); |
1466 | } | 1616 | } |
1467 | PVR_ASSERT(eError == PVRSRV_OK); | 1617 | PVR_ASSERT(eError == PVRSRV_OK) |
1468 | } | 1618 | } |
1469 | else | 1619 | else |
1470 | { | 1620 | { |
@@ -1480,7 +1630,7 @@ static PVRSRV_ERROR PVRSRVHandleBatchCommitOrRelease(PVRSRV_HANDLE_BASE *psBase, | |||
1480 | { | 1630 | { |
1481 | IMG_UINT32 ui32Delta = psBase->ui32TotalHandCount - psBase->ui32TotalHandCountPreBatch; | 1631 | IMG_UINT32 ui32Delta = psBase->ui32TotalHandCount - psBase->ui32TotalHandCountPreBatch; |
1482 | 1632 | ||
1483 | PVR_ASSERT(psBase->ui32TotalHandCount > psBase->ui32TotalHandCountPreBatch); | 1633 | PVR_ASSERT(psBase->ui32TotalHandCount > psBase->ui32TotalHandCountPreBatch) |
1484 | 1634 | ||
1485 | PVR_DPF((PVR_DBG_WARNING, "PVRSRVHandleBatchCommitOrRelease: The batch size was too small. Batch size was %u, but needs to be %u", psBase->ui32HandBatchSize, psBase->ui32HandBatchSize + ui32Delta)); | 1635 | PVR_DPF((PVR_DBG_WARNING, "PVRSRVHandleBatchCommitOrRelease: The batch size was too small. Batch size was %u, but needs to be %u", psBase->ui32HandBatchSize, psBase->ui32HandBatchSize + ui32Delta)); |
1486 | 1636 | ||
@@ -1494,7 +1644,7 @@ static PVRSRV_ERROR PVRSRVHandleBatchCommitOrRelease(PVRSRV_HANDLE_BASE *psBase, | |||
1494 | 1644 | ||
1495 | if (psBase->ui32BatchHandAllocFailures != 0 && bCommit) | 1645 | if (psBase->ui32BatchHandAllocFailures != 0 && bCommit) |
1496 | { | 1646 | { |
1497 | PVR_ASSERT(!bCommitBatch); | 1647 | PVR_ASSERT(!bCommitBatch) |
1498 | 1648 | ||
1499 | return PVRSRV_ERROR_HANDLE_BATCH_COMMIT_FAILURE; | 1649 | return PVRSRV_ERROR_HANDLE_BATCH_COMMIT_FAILURE; |
1500 | } | 1650 | } |
@@ -1546,9 +1696,9 @@ PVRSRV_ERROR PVRSRVSetMaxHandle(PVRSRV_HANDLE_BASE *psBase, IMG_UINT32 ui32MaxHa | |||
1546 | psBase->ui32MaxIndexPlusOne = ui32MaxHandleRounded; | 1696 | psBase->ui32MaxIndexPlusOne = ui32MaxHandleRounded; |
1547 | } | 1697 | } |
1548 | 1698 | ||
1549 | PVR_ASSERT(psBase->ui32MaxIndexPlusOne != 0); | 1699 | PVR_ASSERT(psBase->ui32MaxIndexPlusOne != 0) |
1550 | PVR_ASSERT(psBase->ui32MaxIndexPlusOne <= DEFAULT_MAX_INDEX_PLUS_ONE); | 1700 | PVR_ASSERT(psBase->ui32MaxIndexPlusOne <= DEFAULT_MAX_INDEX_PLUS_ONE) |
1551 | PVR_ASSERT((psBase->ui32MaxIndexPlusOne % HANDLE_BLOCK_SIZE) == 0); | 1701 | PVR_ASSERT((psBase->ui32MaxIndexPlusOne % HANDLE_BLOCK_SIZE) == 0) |
1552 | 1702 | ||
1553 | return PVRSRV_OK; | 1703 | return PVRSRV_OK; |
1554 | } | 1704 | } |
@@ -1595,7 +1745,7 @@ PVRSRV_ERROR PVRSRVPurgeHandles(PVRSRV_HANDLE_BASE *psBase) | |||
1595 | return PVRSRV_ERROR_INVALID_PARAMS; | 1745 | return PVRSRV_ERROR_INVALID_PARAMS; |
1596 | } | 1746 | } |
1597 | 1747 | ||
1598 | PVR_ASSERT((psBase->ui32TotalHandCount % HANDLE_BLOCK_SIZE) == 0); | 1748 | PVR_ASSERT((psBase->ui32TotalHandCount % HANDLE_BLOCK_SIZE) == 0) |
1599 | 1749 | ||
1600 | for (ui32BlockIndex = INDEX_TO_BLOCK_INDEX(psBase->ui32TotalHandCount); ui32BlockIndex != 0; ui32BlockIndex--) | 1750 | for (ui32BlockIndex = INDEX_TO_BLOCK_INDEX(psBase->ui32TotalHandCount); ui32BlockIndex != 0; ui32BlockIndex--) |
1601 | { | 1751 | { |
@@ -1629,7 +1779,7 @@ PVRSRV_ERROR PVRSRVAllocHandleBase(PVRSRV_HANDLE_BASE **ppsBase) | |||
1629 | IMG_HANDLE hBlockAlloc; | 1779 | IMG_HANDLE hBlockAlloc; |
1630 | PVRSRV_ERROR eError; | 1780 | PVRSRV_ERROR eError; |
1631 | 1781 | ||
1632 | eError = OSAllocMem(PVRSRV_OS_PAGEABLE_HEAP, | 1782 | eError = OSAllocMem(PVRSRV_OS_NON_PAGEABLE_HEAP, |
1633 | sizeof(*psBase), | 1783 | sizeof(*psBase), |
1634 | (IMG_PVOID *)&psBase, | 1784 | (IMG_PVOID *)&psBase, |
1635 | &hBlockAlloc, | 1785 | &hBlockAlloc, |
@@ -1663,7 +1813,7 @@ PVRSRV_ERROR PVRSRVFreeHandleBase(PVRSRV_HANDLE_BASE *psBase) | |||
1663 | { | 1813 | { |
1664 | PVRSRV_ERROR eError; | 1814 | PVRSRV_ERROR eError; |
1665 | 1815 | ||
1666 | PVR_ASSERT(psBase != gpsKernelHandleBase); | 1816 | PVR_ASSERT(psBase != gpsKernelHandleBase) |
1667 | 1817 | ||
1668 | eError = FreeHandleBase(psBase); | 1818 | eError = FreeHandleBase(psBase); |
1669 | if (eError != PVRSRV_OK) | 1819 | if (eError != PVRSRV_OK) |
@@ -1678,7 +1828,7 @@ PVRSRV_ERROR PVRSRVHandleInit(IMG_VOID) | |||
1678 | { | 1828 | { |
1679 | PVRSRV_ERROR eError; | 1829 | PVRSRV_ERROR eError; |
1680 | 1830 | ||
1681 | PVR_ASSERT(gpsKernelHandleBase == IMG_NULL); | 1831 | PVR_ASSERT(gpsKernelHandleBase == IMG_NULL) |
1682 | 1832 | ||
1683 | eError = PVRSRVAllocHandleBase(&gpsKernelHandleBase); | 1833 | eError = PVRSRVAllocHandleBase(&gpsKernelHandleBase); |
1684 | if (eError != PVRSRV_OK) | 1834 | if (eError != PVRSRV_OK) |
diff --git a/drivers/gpu/pvr/handle.h b/drivers/gpu/pvr/handle.h index 56de04aede0..43f34a0cafd 100644 --- a/drivers/gpu/pvr/handle.h +++ b/drivers/gpu/pvr/handle.h | |||
@@ -59,7 +59,8 @@ typedef enum | |||
59 | PVRSRV_HANDLE_TYPE_EVENT_OBJECT_CONNECT, | 59 | PVRSRV_HANDLE_TYPE_EVENT_OBJECT_CONNECT, |
60 | PVRSRV_HANDLE_TYPE_MMAP_INFO, | 60 | PVRSRV_HANDLE_TYPE_MMAP_INFO, |
61 | PVRSRV_HANDLE_TYPE_SOC_TIMER, | 61 | PVRSRV_HANDLE_TYPE_SOC_TIMER, |
62 | PVRSRV_HANDLE_TYPE_SYNC_INFO_MOD_OBJ | 62 | PVRSRV_HANDLE_TYPE_SYNC_INFO_MOD_OBJ, |
63 | PVRSRV_HANDLE_TYPE_RESITEM_INFO | ||
63 | } PVRSRV_HANDLE_TYPE; | 64 | } PVRSRV_HANDLE_TYPE; |
64 | 65 | ||
65 | typedef enum | 66 | typedef enum |
@@ -77,11 +78,30 @@ typedef enum | |||
77 | struct _PVRSRV_HANDLE_BASE_; | 78 | struct _PVRSRV_HANDLE_BASE_; |
78 | typedef struct _PVRSRV_HANDLE_BASE_ PVRSRV_HANDLE_BASE; | 79 | typedef struct _PVRSRV_HANDLE_BASE_ PVRSRV_HANDLE_BASE; |
79 | 80 | ||
80 | #ifdef PVR_SECURE_HANDLES | 81 | #if defined (PVR_SECURE_HANDLES) || defined (SUPPORT_SID_INTERFACE) |
81 | extern PVRSRV_HANDLE_BASE *gpsKernelHandleBase; | 82 | extern PVRSRV_HANDLE_BASE *gpsKernelHandleBase; |
82 | 83 | ||
83 | #define KERNEL_HANDLE_BASE (gpsKernelHandleBase) | 84 | #define KERNEL_HANDLE_BASE (gpsKernelHandleBase) |
84 | 85 | ||
86 | #if defined (SUPPORT_SID_INTERFACE) | ||
87 | PVRSRV_ERROR PVRSRVAllocHandle(PVRSRV_HANDLE_BASE *psBase, IMG_SID *phHandle, IMG_VOID *pvData, PVRSRV_HANDLE_TYPE eType, PVRSRV_HANDLE_ALLOC_FLAG eFlag); | ||
88 | |||
89 | PVRSRV_ERROR PVRSRVAllocSubHandle(PVRSRV_HANDLE_BASE *psBase, IMG_SID *phHandle, IMG_VOID *pvData, PVRSRV_HANDLE_TYPE eType, PVRSRV_HANDLE_ALLOC_FLAG eFlag, IMG_SID hParent); | ||
90 | |||
91 | PVRSRV_ERROR PVRSRVFindHandle(PVRSRV_HANDLE_BASE *psBase, IMG_SID *phHandle, IMG_VOID *pvData, PVRSRV_HANDLE_TYPE eType); | ||
92 | |||
93 | PVRSRV_ERROR PVRSRVLookupHandleAnyType(PVRSRV_HANDLE_BASE *psBase, IMG_PVOID *ppvData, PVRSRV_HANDLE_TYPE *peType, IMG_SID hHandle); | ||
94 | |||
95 | PVRSRV_ERROR PVRSRVLookupHandle(PVRSRV_HANDLE_BASE *psBase, IMG_PVOID *ppvData, IMG_SID hHandle, PVRSRV_HANDLE_TYPE eType); | ||
96 | |||
97 | PVRSRV_ERROR PVRSRVLookupSubHandle(PVRSRV_HANDLE_BASE *psBase, IMG_PVOID *ppvData, IMG_SID hHandle, PVRSRV_HANDLE_TYPE eType, IMG_SID hAncestor); | ||
98 | |||
99 | PVRSRV_ERROR PVRSRVGetParentHandle(PVRSRV_HANDLE_BASE *psBase, IMG_SID *phParent, IMG_SID hHandle, PVRSRV_HANDLE_TYPE eType); | ||
100 | |||
101 | PVRSRV_ERROR PVRSRVLookupAndReleaseHandle(PVRSRV_HANDLE_BASE *psBase, IMG_PVOID *ppvData, IMG_SID hHandle, PVRSRV_HANDLE_TYPE eType); | ||
102 | |||
103 | PVRSRV_ERROR PVRSRVReleaseHandle(PVRSRV_HANDLE_BASE *psBase, IMG_SID hHandle, PVRSRV_HANDLE_TYPE eType); | ||
104 | #else | ||
85 | PVRSRV_ERROR PVRSRVAllocHandle(PVRSRV_HANDLE_BASE *psBase, IMG_HANDLE *phHandle, IMG_VOID *pvData, PVRSRV_HANDLE_TYPE eType, PVRSRV_HANDLE_ALLOC_FLAG eFlag); | 105 | PVRSRV_ERROR PVRSRVAllocHandle(PVRSRV_HANDLE_BASE *psBase, IMG_HANDLE *phHandle, IMG_VOID *pvData, PVRSRV_HANDLE_TYPE eType, PVRSRV_HANDLE_ALLOC_FLAG eFlag); |
86 | 106 | ||
87 | PVRSRV_ERROR PVRSRVAllocSubHandle(PVRSRV_HANDLE_BASE *psBase, IMG_HANDLE *phHandle, IMG_VOID *pvData, PVRSRV_HANDLE_TYPE eType, PVRSRV_HANDLE_ALLOC_FLAG eFlag, IMG_HANDLE hParent); | 107 | PVRSRV_ERROR PVRSRVAllocSubHandle(PVRSRV_HANDLE_BASE *psBase, IMG_HANDLE *phHandle, IMG_VOID *pvData, PVRSRV_HANDLE_TYPE eType, PVRSRV_HANDLE_ALLOC_FLAG eFlag, IMG_HANDLE hParent); |
@@ -99,6 +119,7 @@ PVRSRV_ERROR PVRSRVGetParentHandle(PVRSRV_HANDLE_BASE *psBase, IMG_PVOID *phPare | |||
99 | PVRSRV_ERROR PVRSRVLookupAndReleaseHandle(PVRSRV_HANDLE_BASE *psBase, IMG_PVOID *ppvData, IMG_HANDLE hHandle, PVRSRV_HANDLE_TYPE eType); | 119 | PVRSRV_ERROR PVRSRVLookupAndReleaseHandle(PVRSRV_HANDLE_BASE *psBase, IMG_PVOID *ppvData, IMG_HANDLE hHandle, PVRSRV_HANDLE_TYPE eType); |
100 | 120 | ||
101 | PVRSRV_ERROR PVRSRVReleaseHandle(PVRSRV_HANDLE_BASE *psBase, IMG_HANDLE hHandle, PVRSRV_HANDLE_TYPE eType); | 121 | PVRSRV_ERROR PVRSRVReleaseHandle(PVRSRV_HANDLE_BASE *psBase, IMG_HANDLE hHandle, PVRSRV_HANDLE_TYPE eType); |
122 | #endif | ||
102 | 123 | ||
103 | PVRSRV_ERROR PVRSRVNewHandleBatch(PVRSRV_HANDLE_BASE *psBase, IMG_UINT32 ui32BatchSize); | 124 | PVRSRV_ERROR PVRSRVNewHandleBatch(PVRSRV_HANDLE_BASE *psBase, IMG_UINT32 ui32BatchSize); |
104 | 125 | ||
diff --git a/drivers/gpu/pvr/hash.c b/drivers/gpu/pvr/hash.c index 32b0779d456..488bf1b20e6 100644 --- a/drivers/gpu/pvr/hash.c +++ b/drivers/gpu/pvr/hash.c | |||
@@ -80,7 +80,7 @@ IMG_UINT32 | |||
80 | HASH_Func_Default (IMG_SIZE_T uKeySize, IMG_VOID *pKey, IMG_UINT32 uHashTabLen) | 80 | HASH_Func_Default (IMG_SIZE_T uKeySize, IMG_VOID *pKey, IMG_UINT32 uHashTabLen) |
81 | { | 81 | { |
82 | IMG_UINTPTR_T *p = (IMG_UINTPTR_T *)pKey; | 82 | IMG_UINTPTR_T *p = (IMG_UINTPTR_T *)pKey; |
83 | IMG_UINT32 uKeyLen = uKeySize / sizeof(IMG_UINTPTR_T); | 83 | IMG_UINT32 uKeyLen = (IMG_UINT32)(uKeySize / sizeof(IMG_UINTPTR_T)); |
84 | IMG_UINT32 ui; | 84 | IMG_UINT32 ui; |
85 | IMG_UINT32 uHashKey = 0; | 85 | IMG_UINT32 uHashKey = 0; |
86 | 86 | ||
@@ -112,7 +112,7 @@ HASH_Key_Comp_Default (IMG_SIZE_T uKeySize, IMG_VOID *pKey1, IMG_VOID *pKey2) | |||
112 | { | 112 | { |
113 | IMG_UINTPTR_T *p1 = (IMG_UINTPTR_T *)pKey1; | 113 | IMG_UINTPTR_T *p1 = (IMG_UINTPTR_T *)pKey1; |
114 | IMG_UINTPTR_T *p2 = (IMG_UINTPTR_T *)pKey2; | 114 | IMG_UINTPTR_T *p2 = (IMG_UINTPTR_T *)pKey2; |
115 | IMG_UINT32 uKeyLen = uKeySize / sizeof(IMG_UINTPTR_T); | 115 | IMG_UINT32 uKeyLen = (IMG_UINT32)(uKeySize / sizeof(IMG_UINTPTR_T)); |
116 | IMG_UINT32 ui; | 116 | IMG_UINT32 ui; |
117 | 117 | ||
118 | PVR_ASSERT((uKeySize % sizeof(IMG_UINTPTR_T)) == 0); | 118 | PVR_ASSERT((uKeySize % sizeof(IMG_UINTPTR_T)) == 0); |
@@ -228,7 +228,7 @@ HASH_TABLE * HASH_Create_Extended (IMG_UINT32 uInitialLen, IMG_SIZE_T uKeySize, | |||
228 | pHash->uCount = 0; | 228 | pHash->uCount = 0; |
229 | pHash->uSize = uInitialLen; | 229 | pHash->uSize = uInitialLen; |
230 | pHash->uMinimumSize = uInitialLen; | 230 | pHash->uMinimumSize = uInitialLen; |
231 | pHash->uKeySize = uKeySize; | 231 | pHash->uKeySize = (IMG_UINT32)uKeySize; |
232 | pHash->pfnHashFunc = pfnHashFunc; | 232 | pHash->pfnHashFunc = pfnHashFunc; |
233 | pHash->pfnKeyComp = pfnKeyComp; | 233 | pHash->pfnKeyComp = pfnKeyComp; |
234 | 234 | ||
@@ -305,6 +305,9 @@ HASH_Insert_Extended (HASH_TABLE *pHash, IMG_VOID *pKey, IMG_UINTPTR_T v) | |||
305 | OSMemCopy(pBucket->k, pKey, pHash->uKeySize); | 305 | OSMemCopy(pBucket->k, pKey, pHash->uKeySize); |
306 | if (_ChainInsert (pHash, pBucket, pHash->ppBucketTable, pHash->uSize) != PVRSRV_OK) | 306 | if (_ChainInsert (pHash, pBucket, pHash->ppBucketTable, pHash->uSize) != PVRSRV_OK) |
307 | { | 307 | { |
308 | OSFreeMem(PVRSRV_PAGEABLE_SELECT, | ||
309 | sizeof(BUCKET) + pHash->uKeySize, | ||
310 | pBucket, IMG_NULL); | ||
308 | return IMG_FALSE; | 311 | return IMG_FALSE; |
309 | } | 312 | } |
310 | 313 | ||
@@ -444,6 +447,31 @@ HASH_Retrieve (HASH_TABLE *pHash, IMG_UINTPTR_T k) | |||
444 | return HASH_Retrieve_Extended(pHash, &k); | 447 | return HASH_Retrieve_Extended(pHash, &k); |
445 | } | 448 | } |
446 | 449 | ||
450 | PVRSRV_ERROR | ||
451 | HASH_Iterate(HASH_TABLE *pHash, HASH_pfnCallback pfnCallback) | ||
452 | { | ||
453 | IMG_UINT32 uIndex; | ||
454 | for (uIndex=0; uIndex < pHash->uSize; uIndex++) | ||
455 | { | ||
456 | BUCKET *pBucket; | ||
457 | pBucket = pHash->ppBucketTable[uIndex]; | ||
458 | while (pBucket != IMG_NULL) | ||
459 | { | ||
460 | PVRSRV_ERROR eError; | ||
461 | BUCKET *pNextBucket = pBucket->pNext; | ||
462 | |||
463 | eError = pfnCallback((IMG_UINTPTR_T) ((IMG_VOID *) *(pBucket->k)), (IMG_UINTPTR_T) pBucket->v); | ||
464 | |||
465 | |||
466 | if (eError != PVRSRV_OK) | ||
467 | return eError; | ||
468 | |||
469 | pBucket = pNextBucket; | ||
470 | } | ||
471 | } | ||
472 | return PVRSRV_OK; | ||
473 | } | ||
474 | |||
447 | #ifdef HASH_TRACE | 475 | #ifdef HASH_TRACE |
448 | IMG_VOID | 476 | IMG_VOID |
449 | HASH_Dump (HASH_TABLE *pHash) | 477 | HASH_Dump (HASH_TABLE *pHash) |
diff --git a/drivers/gpu/pvr/hash.h b/drivers/gpu/pvr/hash.h index d45f4a98dda..24b7da07b91 100644 --- a/drivers/gpu/pvr/hash.h +++ b/drivers/gpu/pvr/hash.h | |||
@@ -39,6 +39,11 @@ typedef IMG_BOOL HASH_KEY_COMP(IMG_SIZE_T uKeySize, IMG_VOID *pKey1, IMG_VOID *p | |||
39 | 39 | ||
40 | typedef struct _HASH_TABLE_ HASH_TABLE; | 40 | typedef struct _HASH_TABLE_ HASH_TABLE; |
41 | 41 | ||
42 | typedef PVRSRV_ERROR (*HASH_pfnCallback) ( | ||
43 | IMG_UINTPTR_T k, | ||
44 | IMG_UINTPTR_T v | ||
45 | ); | ||
46 | |||
42 | IMG_UINT32 HASH_Func_Default (IMG_SIZE_T uKeySize, IMG_VOID *pKey, IMG_UINT32 uHashTabLen); | 47 | IMG_UINT32 HASH_Func_Default (IMG_SIZE_T uKeySize, IMG_VOID *pKey, IMG_UINT32 uHashTabLen); |
43 | 48 | ||
44 | IMG_BOOL HASH_Key_Comp_Default (IMG_SIZE_T uKeySize, IMG_VOID *pKey1, IMG_VOID *pKey2); | 49 | IMG_BOOL HASH_Key_Comp_Default (IMG_SIZE_T uKeySize, IMG_VOID *pKey1, IMG_VOID *pKey2); |
@@ -61,6 +66,8 @@ IMG_UINTPTR_T HASH_Retrieve_Extended (HASH_TABLE *pHash, IMG_VOID *pKey); | |||
61 | 66 | ||
62 | IMG_UINTPTR_T HASH_Retrieve (HASH_TABLE *pHash, IMG_UINTPTR_T k); | 67 | IMG_UINTPTR_T HASH_Retrieve (HASH_TABLE *pHash, IMG_UINTPTR_T k); |
63 | 68 | ||
69 | PVRSRV_ERROR HASH_Iterate(HASH_TABLE *pHash, HASH_pfnCallback pfnCallback); | ||
70 | |||
64 | #ifdef HASH_TRACE | 71 | #ifdef HASH_TRACE |
65 | IMG_VOID HASH_Dump (HASH_TABLE *pHash); | 72 | IMG_VOID HASH_Dump (HASH_TABLE *pHash); |
66 | #endif | 73 | #endif |
diff --git a/drivers/gpu/pvr/img_types.h b/drivers/gpu/pvr/img_types.h index 31962aaedbb..4401f4dd92c 100644 --- a/drivers/gpu/pvr/img_types.h +++ b/drivers/gpu/pvr/img_types.h | |||
@@ -56,16 +56,19 @@ typedef signed long IMG_INT32, *IMG_PINT32; | |||
56 | #define IMG_UINT32_MAX 0xFFFFFFFFUL | 56 | #define IMG_UINT32_MAX 0xFFFFFFFFUL |
57 | #endif | 57 | #endif |
58 | 58 | ||
59 | #if defined(USE_CODE) | ||
60 | |||
61 | typedef unsigned __int64 IMG_UINT64, *IMG_PUINT64; | ||
62 | typedef __int64 IMG_INT64, *IMG_PINT64; | ||
63 | |||
64 | #else | ||
59 | #if (defined(LINUX) || defined(__METAG)) | 65 | #if (defined(LINUX) || defined(__METAG)) |
60 | #if !defined(USE_CODE) | ||
61 | typedef unsigned long long IMG_UINT64, *IMG_PUINT64; | 66 | typedef unsigned long long IMG_UINT64, *IMG_PUINT64; |
62 | typedef long long IMG_INT64, *IMG_PINT64; | 67 | typedef long long IMG_INT64, *IMG_PINT64; |
63 | #endif | ||
64 | #else | 68 | #else |
65 | |||
66 | #error("define an OS") | 69 | #error("define an OS") |
67 | |||
68 | #endif | 70 | #endif |
71 | #endif | ||
69 | 72 | ||
70 | #if !(defined(LINUX) && defined (__KERNEL__)) | 73 | #if !(defined(LINUX) && defined (__KERNEL__)) |
71 | typedef float IMG_FLOAT, *IMG_PFLOAT; | 74 | typedef float IMG_FLOAT, *IMG_PFLOAT; |
@@ -84,22 +87,23 @@ typedef void IMG_VOID, *IMG_PVOID; | |||
84 | typedef IMG_INT32 IMG_RESULT; | 87 | typedef IMG_INT32 IMG_RESULT; |
85 | 88 | ||
86 | #if defined(_WIN64) | 89 | #if defined(_WIN64) |
87 | typedef unsigned __int64 IMG_UINTPTR_T; | 90 | typedef unsigned __int64 IMG_UINTPTR_T; |
91 | typedef signed __int64 IMG_PTRDIFF_T; | ||
92 | typedef IMG_UINT64 IMG_SIZE_T; | ||
88 | #else | 93 | #else |
89 | typedef unsigned int IMG_UINTPTR_T; | 94 | typedef unsigned int IMG_UINTPTR_T; |
95 | typedef IMG_UINT32 IMG_SIZE_T; | ||
90 | #endif | 96 | #endif |
91 | 97 | ||
92 | typedef IMG_PVOID IMG_HANDLE; | 98 | typedef IMG_PVOID IMG_HANDLE; |
93 | 99 | ||
94 | typedef void** IMG_HVOID, * IMG_PHVOID; | 100 | typedef void** IMG_HVOID, * IMG_PHVOID; |
95 | 101 | ||
96 | typedef IMG_UINT32 IMG_SIZE_T; | ||
97 | |||
98 | #define IMG_NULL 0 | 102 | #define IMG_NULL 0 |
99 | 103 | ||
100 | typedef IMG_UINT32 IMG_SID; | 104 | typedef IMG_UINT32 IMG_SID; |
101 | 105 | ||
102 | 106 | typedef IMG_UINT32 IMG_EVENTSID; | |
103 | typedef IMG_PVOID IMG_CPU_VIRTADDR; | 107 | typedef IMG_PVOID IMG_CPU_VIRTADDR; |
104 | 108 | ||
105 | typedef struct _IMG_DEV_VIRTADDR | 109 | typedef struct _IMG_DEV_VIRTADDR |
@@ -110,6 +114,8 @@ typedef struct _IMG_DEV_VIRTADDR | |||
110 | 114 | ||
111 | } IMG_DEV_VIRTADDR; | 115 | } IMG_DEV_VIRTADDR; |
112 | 116 | ||
117 | typedef IMG_UINT32 IMG_DEVMEM_SIZE_T; | ||
118 | |||
113 | typedef struct _IMG_CPU_PHYADDR | 119 | typedef struct _IMG_CPU_PHYADDR |
114 | { | 120 | { |
115 | 121 | ||
diff --git a/drivers/gpu/pvr/ioctldef.h b/drivers/gpu/pvr/ioctldef.h deleted file mode 100644 index 4b23ad437a7..00000000000 --- a/drivers/gpu/pvr/ioctldef.h +++ /dev/null | |||
@@ -1,98 +0,0 @@ | |||
1 | /********************************************************************** | ||
2 | * | ||
3 | * Copyright(c) 2008 Imagination Technologies Ltd. All rights reserved. | ||
4 | * | ||
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. | ||
8 | * | ||
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. | ||
13 | * | ||
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. | ||
17 | * | ||
18 | * The full GNU General Public License is included in this distribution in | ||
19 | * the file called "COPYING". | ||
20 | * | ||
21 | * Contact Information: | ||
22 | * Imagination Technologies Ltd. <gpl-support@imgtec.com> | ||
23 | * Home Park Estate, Kings Langley, Herts, WD4 8LZ, UK | ||
24 | * | ||
25 | ******************************************************************************/ | ||
26 | |||
27 | #ifndef __IOCTLDEF_H__ | ||
28 | #define __IOCTLDEF_H__ | ||
29 | |||
30 | #define MAKEIOCTLINDEX(i) (((i) >> 2) & 0xFFF) | ||
31 | |||
32 | #ifndef CTL_CODE | ||
33 | |||
34 | #define DEVICE_TYPE ULONG | ||
35 | |||
36 | #define FILE_DEVICE_BEEP 0x00000001 | ||
37 | #define FILE_DEVICE_CD_ROM 0x00000002 | ||
38 | #define FILE_DEVICE_CD_ROM_FILE_SYSTEM 0x00000003 | ||
39 | #define FILE_DEVICE_CONTROLLER 0x00000004 | ||
40 | #define FILE_DEVICE_DATALINK 0x00000005 | ||
41 | #define FILE_DEVICE_DFS 0x00000006 | ||
42 | #define FILE_DEVICE_DISK 0x00000007 | ||
43 | #define FILE_DEVICE_DISK_FILE_SYSTEM 0x00000008 | ||
44 | #define FILE_DEVICE_FILE_SYSTEM 0x00000009 | ||
45 | #define FILE_DEVICE_INPORT_PORT 0x0000000a | ||
46 | #define FILE_DEVICE_KEYBOARD 0x0000000b | ||
47 | #define FILE_DEVICE_MAILSLOT 0x0000000c | ||
48 | #define FILE_DEVICE_MIDI_IN 0x0000000d | ||
49 | #define FILE_DEVICE_MIDI_OUT 0x0000000e | ||
50 | #define FILE_DEVICE_MOUSE 0x0000000f | ||
51 | #define FILE_DEVICE_MULTI_UNC_PROVIDER 0x00000010 | ||
52 | #define FILE_DEVICE_NAMED_PIPE 0x00000011 | ||
53 | #define FILE_DEVICE_NETWORK 0x00000012 | ||
54 | #define FILE_DEVICE_NETWORK_BROWSER 0x00000013 | ||
55 | #define FILE_DEVICE_NETWORK_FILE_SYSTEM 0x00000014 | ||
56 | #define FILE_DEVICE_NULL 0x00000015 | ||
57 | #define FILE_DEVICE_PARALLEL_PORT 0x00000016 | ||
58 | #define FILE_DEVICE_PHYSICAL_NETCARD 0x00000017 | ||
59 | #define FILE_DEVICE_PRINTER 0x00000018 | ||
60 | #define FILE_DEVICE_SCANNER 0x00000019 | ||
61 | #define FILE_DEVICE_SERIAL_MOUSE_PORT 0x0000001a | ||
62 | #define FILE_DEVICE_SERIAL_PORT 0x0000001b | ||
63 | #define FILE_DEVICE_SCREEN 0x0000001c | ||
64 | #define FILE_DEVICE_SOUND 0x0000001d | ||
65 | #define FILE_DEVICE_STREAMS 0x0000001e | ||
66 | #define FILE_DEVICE_TAPE 0x0000001f | ||
67 | #define FILE_DEVICE_TAPE_FILE_SYSTEM 0x00000020 | ||
68 | #define FILE_DEVICE_TRANSPORT 0x00000021 | ||
69 | #define FILE_DEVICE_UNKNOWN 0x00000022 | ||
70 | #define FILE_DEVICE_VIDEO 0x00000023 | ||
71 | #define FILE_DEVICE_VIRTUAL_DISK 0x00000024 | ||
72 | #define FILE_DEVICE_WAVE_IN 0x00000025 | ||
73 | #define FILE_DEVICE_WAVE_OUT 0x00000026 | ||
74 | #define FILE_DEVICE_8042_PORT 0x00000027 | ||
75 | #define FILE_DEVICE_NETWORK_REDIRECTOR 0x00000028 | ||
76 | #define FILE_DEVICE_BATTERY 0x00000029 | ||
77 | #define FILE_DEVICE_BUS_EXTENDER 0x0000002a | ||
78 | #define FILE_DEVICE_MODEM 0x0000002b | ||
79 | #define FILE_DEVICE_VDM 0x0000002c | ||
80 | #define FILE_DEVICE_MASS_STORAGE 0x0000002d | ||
81 | |||
82 | #define CTL_CODE( DeviceType, Function, Method, Access ) ( \ | ||
83 | ((DeviceType) << 16) | ((Access) << 14) | ((Function) << 2) | (Method) \ | ||
84 | ) | ||
85 | |||
86 | #define METHOD_BUFFERED 0 | ||
87 | #define METHOD_IN_DIRECT 1 | ||
88 | #define METHOD_OUT_DIRECT 2 | ||
89 | #define METHOD_NEITHER 3 | ||
90 | |||
91 | #define FILE_ANY_ACCESS 0 | ||
92 | #define FILE_READ_ACCESS ( 0x0001 ) | ||
93 | #define FILE_WRITE_ACCESS ( 0x0002 ) | ||
94 | |||
95 | #endif | ||
96 | |||
97 | #endif | ||
98 | |||
diff --git a/drivers/gpu/pvr/mem.c b/drivers/gpu/pvr/mem.c index a2673d53c23..8bf28bfe122 100644 --- a/drivers/gpu/pvr/mem.c +++ b/drivers/gpu/pvr/mem.c | |||
@@ -37,7 +37,7 @@ FreeSharedSysMemCallBack(IMG_PVOID pvParam, | |||
37 | PVR_UNREFERENCED_PARAMETER(ui32Param); | 37 | PVR_UNREFERENCED_PARAMETER(ui32Param); |
38 | 38 | ||
39 | OSFreePages(psKernelMemInfo->ui32Flags, | 39 | OSFreePages(psKernelMemInfo->ui32Flags, |
40 | psKernelMemInfo->ui32AllocSize, | 40 | psKernelMemInfo->uAllocSize, |
41 | psKernelMemInfo->pvLinAddrKM, | 41 | psKernelMemInfo->pvLinAddrKM, |
42 | psKernelMemInfo->sMemBlk.hOSMemHandle); | 42 | psKernelMemInfo->sMemBlk.hOSMemHandle); |
43 | 43 | ||
@@ -54,7 +54,7 @@ FreeSharedSysMemCallBack(IMG_PVOID pvParam, | |||
54 | IMG_EXPORT PVRSRV_ERROR | 54 | IMG_EXPORT PVRSRV_ERROR |
55 | PVRSRVAllocSharedSysMemoryKM(PVRSRV_PER_PROCESS_DATA *psPerProc, | 55 | PVRSRVAllocSharedSysMemoryKM(PVRSRV_PER_PROCESS_DATA *psPerProc, |
56 | IMG_UINT32 ui32Flags, | 56 | IMG_UINT32 ui32Flags, |
57 | IMG_SIZE_T ui32Size, | 57 | IMG_SIZE_T uSize, |
58 | PVRSRV_KERNEL_MEM_INFO **ppsKernelMemInfo) | 58 | PVRSRV_KERNEL_MEM_INFO **ppsKernelMemInfo) |
59 | { | 59 | { |
60 | PVRSRV_KERNEL_MEM_INFO *psKernelMemInfo; | 60 | PVRSRV_KERNEL_MEM_INFO *psKernelMemInfo; |
@@ -73,11 +73,11 @@ PVRSRVAllocSharedSysMemoryKM(PVRSRV_PER_PROCESS_DATA *psPerProc, | |||
73 | ui32Flags &= ~PVRSRV_HAP_MAPTYPE_MASK; | 73 | ui32Flags &= ~PVRSRV_HAP_MAPTYPE_MASK; |
74 | ui32Flags |= PVRSRV_HAP_MULTI_PROCESS; | 74 | ui32Flags |= PVRSRV_HAP_MULTI_PROCESS; |
75 | psKernelMemInfo->ui32Flags = ui32Flags; | 75 | psKernelMemInfo->ui32Flags = ui32Flags; |
76 | psKernelMemInfo->ui32AllocSize = ui32Size; | 76 | psKernelMemInfo->uAllocSize = uSize; |
77 | 77 | ||
78 | if(OSAllocPages(psKernelMemInfo->ui32Flags, | 78 | if(OSAllocPages(psKernelMemInfo->ui32Flags, |
79 | psKernelMemInfo->ui32AllocSize, | 79 | psKernelMemInfo->uAllocSize, |
80 | HOST_PAGESIZE(), | 80 | (IMG_UINT32)HOST_PAGESIZE(), |
81 | &psKernelMemInfo->pvLinAddrKM, | 81 | &psKernelMemInfo->pvLinAddrKM, |
82 | &psKernelMemInfo->sMemBlk.hOSMemHandle) | 82 | &psKernelMemInfo->sMemBlk.hOSMemHandle) |
83 | != PVRSRV_OK) | 83 | != PVRSRV_OK) |
diff --git a/drivers/gpu/pvr/mm.c b/drivers/gpu/pvr/mm.c index ecaba8e1015..39efdb0c846 100644 --- a/drivers/gpu/pvr/mm.c +++ b/drivers/gpu/pvr/mm.c | |||
@@ -335,10 +335,10 @@ LinuxMMCleanup(IMG_VOID) | |||
335 | 335 | ||
336 | 336 | ||
337 | IMG_VOID * | 337 | IMG_VOID * |
338 | _KMallocWrapper(IMG_UINT32 ui32ByteSize, IMG_CHAR *pszFileName, IMG_UINT32 ui32Line) | 338 | _KMallocWrapper(IMG_UINT32 ui32ByteSize, gfp_t uFlags, IMG_CHAR *pszFileName, IMG_UINT32 ui32Line) |
339 | { | 339 | { |
340 | IMG_VOID *pvRet; | 340 | IMG_VOID *pvRet; |
341 | pvRet = kmalloc(ui32ByteSize, GFP_KERNEL); | 341 | pvRet = kmalloc(ui32ByteSize, uFlags); |
342 | #if defined(DEBUG_LINUX_MEMORY_ALLOCATIONS) | 342 | #if defined(DEBUG_LINUX_MEMORY_ALLOCATIONS) |
343 | if(pvRet) | 343 | if(pvRet) |
344 | { | 344 | { |
@@ -395,7 +395,7 @@ DebugMemAllocRecordAdd(DEBUG_MEM_ALLOC_TYPE eAllocType, | |||
395 | psRecord->pvCpuVAddr = pvCpuVAddr; | 395 | psRecord->pvCpuVAddr = pvCpuVAddr; |
396 | psRecord->ulCpuPAddr = ulCpuPAddr; | 396 | psRecord->ulCpuPAddr = ulCpuPAddr; |
397 | psRecord->pvPrivateData = pvPrivateData; | 397 | psRecord->pvPrivateData = pvPrivateData; |
398 | psRecord->pid = current->pid; | 398 | psRecord->pid = OSGetCurrentProcessIDKM(); |
399 | psRecord->ui32Bytes = ui32Bytes; | 399 | psRecord->ui32Bytes = ui32Bytes; |
400 | psRecord->pszFileName = pszFileName; | 400 | psRecord->pszFileName = pszFileName; |
401 | psRecord->ui32Line = ui32Line; | 401 | psRecord->ui32Line = ui32Line; |
@@ -1318,7 +1318,7 @@ DebugLinuxMemAreaRecordAdd(LinuxMemArea *psLinuxMemArea, IMG_UINT32 ui32Flags) | |||
1318 | 1318 | ||
1319 | psNewRecord->psLinuxMemArea = psLinuxMemArea; | 1319 | psNewRecord->psLinuxMemArea = psLinuxMemArea; |
1320 | psNewRecord->ui32Flags = ui32Flags; | 1320 | psNewRecord->ui32Flags = ui32Flags; |
1321 | psNewRecord->pid = current->pid; | 1321 | psNewRecord->pid = OSGetCurrentProcessIDKM(); |
1322 | 1322 | ||
1323 | List_DEBUG_LINUX_MEM_AREA_REC_Insert(&g_LinuxMemAreaRecords, psNewRecord); | 1323 | List_DEBUG_LINUX_MEM_AREA_REC_Insert(&g_LinuxMemAreaRecords, psNewRecord); |
1324 | } | 1324 | } |
diff --git a/drivers/gpu/pvr/mm.h b/drivers/gpu/pvr/mm.h index 047b3ad540c..62aa079dcc6 100644 --- a/drivers/gpu/pvr/mm.h +++ b/drivers/gpu/pvr/mm.h | |||
@@ -160,11 +160,11 @@ IMG_VOID LinuxMMCleanup(IMG_VOID); | |||
160 | 160 | ||
161 | 161 | ||
162 | #if defined(DEBUG_LINUX_MEMORY_ALLOCATIONS) | 162 | #if defined(DEBUG_LINUX_MEMORY_ALLOCATIONS) |
163 | #define KMallocWrapper(ui32ByteSize) _KMallocWrapper(ui32ByteSize, __FILE__, __LINE__) | 163 | #define KMallocWrapper(ui32ByteSize, uFlags) _KMallocWrapper(ui32ByteSize, uFlags, __FILE__, __LINE__) |
164 | #else | 164 | #else |
165 | #define KMallocWrapper(ui32ByteSize) _KMallocWrapper(ui32ByteSize, NULL, 0) | 165 | #define KMallocWrapper(ui32ByteSize, uFlags) _KMallocWrapper(ui32ByteSize, uFlags, NULL, 0) |
166 | #endif | 166 | #endif |
167 | IMG_VOID *_KMallocWrapper(IMG_UINT32 ui32ByteSize, IMG_CHAR *szFileName, IMG_UINT32 ui32Line); | 167 | IMG_VOID *_KMallocWrapper(IMG_UINT32 ui32ByteSize, gfp_t uFlags, IMG_CHAR *szFileName, IMG_UINT32 ui32Line); |
168 | 168 | ||
169 | 169 | ||
170 | #if defined(DEBUG_LINUX_MEMORY_ALLOCATIONS) | 170 | #if defined(DEBUG_LINUX_MEMORY_ALLOCATIONS) |
diff --git a/drivers/gpu/pvr/mmap.c b/drivers/gpu/pvr/mmap.c index 66cef26e522..c9a30f1c8d4 100644 --- a/drivers/gpu/pvr/mmap.c +++ b/drivers/gpu/pvr/mmap.c | |||
@@ -67,7 +67,7 @@ | |||
67 | #include "pvr_drm.h" | 67 | #include "pvr_drm.h" |
68 | #endif | 68 | #endif |
69 | 69 | ||
70 | #if !defined(PVR_SECURE_HANDLES) | 70 | #if !defined(PVR_SECURE_HANDLES) && !defined (SUPPORT_SID_INTERFACE) |
71 | #error "The mmap code requires PVR_SECURE_HANDLES" | 71 | #error "The mmap code requires PVR_SECURE_HANDLES" |
72 | #endif | 72 | #endif |
73 | 73 | ||
@@ -146,7 +146,11 @@ MMapOffsetToHandle(IMG_UINT32 pfn) | |||
146 | #endif | 146 | #endif |
147 | 147 | ||
148 | static inline IMG_UINT32 | 148 | static inline IMG_UINT32 |
149 | #if defined (SUPPORT_SID_INTERFACE) | ||
150 | HandleToMMapOffset(IMG_SID hHandle) | ||
151 | #else | ||
149 | HandleToMMapOffset(IMG_HANDLE hHandle) | 152 | HandleToMMapOffset(IMG_HANDLE hHandle) |
153 | #endif | ||
150 | { | 154 | { |
151 | IMG_UINT32 ulHandle = (IMG_UINT32)hHandle; | 155 | IMG_UINT32 ulHandle = (IMG_UINT32)hHandle; |
152 | 156 | ||
@@ -270,11 +274,15 @@ DetermineUsersSizeAndByteOffset(LinuxMemArea *psLinuxMemArea, | |||
270 | 274 | ||
271 | PVRSRV_ERROR | 275 | PVRSRV_ERROR |
272 | PVRMMapOSMemHandleToMMapData(PVRSRV_PER_PROCESS_DATA *psPerProc, | 276 | PVRMMapOSMemHandleToMMapData(PVRSRV_PER_PROCESS_DATA *psPerProc, |
273 | IMG_HANDLE hMHandle, | 277 | #if defined (SUPPORT_SID_INTERFACE) |
274 | IMG_UINT32 *pui32MMapOffset, | 278 | IMG_SID hMHandle, |
275 | IMG_UINT32 *pui32ByteOffset, | 279 | #else |
276 | IMG_UINT32 *pui32RealByteSize, | 280 | IMG_HANDLE hMHandle, |
277 | IMG_UINT32 *pui32UserVAddr) | 281 | #endif |
282 | IMG_UINT32 *pui32MMapOffset, | ||
283 | IMG_UINT32 *pui32ByteOffset, | ||
284 | IMG_UINT32 *pui32RealByteSize, | ||
285 | IMG_UINT32 *pui32UserVAddr) | ||
278 | { | 286 | { |
279 | LinuxMemArea *psLinuxMemArea; | 287 | LinuxMemArea *psLinuxMemArea; |
280 | PKV_OFFSET_STRUCT psOffsetStruct; | 288 | PKV_OFFSET_STRUCT psOffsetStruct; |
@@ -288,9 +296,13 @@ PVRMMapOSMemHandleToMMapData(PVRSRV_PER_PROCESS_DATA *psPerProc, | |||
288 | eError = PVRSRVLookupOSMemHandle(psPerProc->psHandleBase, &hOSMemHandle, hMHandle); | 296 | eError = PVRSRVLookupOSMemHandle(psPerProc->psHandleBase, &hOSMemHandle, hMHandle); |
289 | if (eError != PVRSRV_OK) | 297 | if (eError != PVRSRV_OK) |
290 | { | 298 | { |
291 | PVR_DPF((PVR_DBG_ERROR, "%s: Lookup of handle %p failed", __FUNCTION__, hMHandle)); | 299 | #if defined (SUPPORT_SID_INTERFACE) |
300 | PVR_DPF((PVR_DBG_ERROR, "%s: Lookup of handle %x failed", __FUNCTION__, hMHandle)); | ||
301 | #else | ||
302 | PVR_DPF((PVR_DBG_ERROR, "%s: Lookup of handle %p failed", __FUNCTION__, hMHandle)); | ||
303 | #endif | ||
292 | 304 | ||
293 | goto exit_unlock; | 305 | goto exit_unlock; |
294 | } | 306 | } |
295 | 307 | ||
296 | psLinuxMemArea = (LinuxMemArea *)hOSMemHandle; | 308 | psLinuxMemArea = (LinuxMemArea *)hOSMemHandle; |
@@ -364,7 +376,11 @@ exit_unlock: | |||
364 | 376 | ||
365 | PVRSRV_ERROR | 377 | PVRSRV_ERROR |
366 | PVRMMapReleaseMMapData(PVRSRV_PER_PROCESS_DATA *psPerProc, | 378 | PVRMMapReleaseMMapData(PVRSRV_PER_PROCESS_DATA *psPerProc, |
379 | #if defined (SUPPORT_SID_INTERFACE) | ||
380 | IMG_SID hMHandle, | ||
381 | #else | ||
367 | IMG_HANDLE hMHandle, | 382 | IMG_HANDLE hMHandle, |
383 | #endif | ||
368 | IMG_BOOL *pbMUnmap, | 384 | IMG_BOOL *pbMUnmap, |
369 | IMG_UINT32 *pui32RealByteSize, | 385 | IMG_UINT32 *pui32RealByteSize, |
370 | IMG_UINT32 *pui32UserVAddr) | 386 | IMG_UINT32 *pui32UserVAddr) |
@@ -382,7 +398,11 @@ PVRMMapReleaseMMapData(PVRSRV_PER_PROCESS_DATA *psPerProc, | |||
382 | eError = PVRSRVLookupOSMemHandle(psPerProc->psHandleBase, &hOSMemHandle, hMHandle); | 398 | eError = PVRSRVLookupOSMemHandle(psPerProc->psHandleBase, &hOSMemHandle, hMHandle); |
383 | if (eError != PVRSRV_OK) | 399 | if (eError != PVRSRV_OK) |
384 | { | 400 | { |
401 | #if defined (SUPPORT_SID_INTERFACE) | ||
402 | PVR_DPF((PVR_DBG_ERROR, "%s: Lookup of handle %x failed", __FUNCTION__, hMHandle)); | ||
403 | #else | ||
385 | PVR_DPF((PVR_DBG_ERROR, "%s: Lookup of handle %p failed", __FUNCTION__, hMHandle)); | 404 | PVR_DPF((PVR_DBG_ERROR, "%s: Lookup of handle %p failed", __FUNCTION__, hMHandle)); |
405 | #endif | ||
386 | 406 | ||
387 | goto exit_unlock; | 407 | goto exit_unlock; |
388 | } | 408 | } |
@@ -414,7 +434,11 @@ PVRMMapReleaseMMapData(PVRSRV_PER_PROCESS_DATA *psPerProc, | |||
414 | } | 434 | } |
415 | 435 | ||
416 | 436 | ||
437 | #if defined (SUPPORT_SID_INTERFACE) | ||
438 | PVR_DPF((PVR_DBG_ERROR, "%s: Mapping data not found for handle %x (memory area %p)", __FUNCTION__, hMHandle, psLinuxMemArea)); | ||
439 | #else | ||
417 | PVR_DPF((PVR_DBG_ERROR, "%s: Mapping data not found for handle %p (memory area %p)", __FUNCTION__, hMHandle, psLinuxMemArea)); | 440 | PVR_DPF((PVR_DBG_ERROR, "%s: Mapping data not found for handle %p (memory area %p)", __FUNCTION__, hMHandle, psLinuxMemArea)); |
441 | #endif | ||
418 | 442 | ||
419 | eError = PVRSRV_ERROR_MAPPING_NOT_FOUND; | 443 | eError = PVRSRV_ERROR_MAPPING_NOT_FOUND; |
420 | 444 | ||
@@ -590,10 +614,6 @@ MMapVOpenNoLock(struct vm_area_struct* ps_vma) | |||
590 | psOffsetStruct->ui32MMapOffset, | 614 | psOffsetStruct->ui32MMapOffset, |
591 | psOffsetStruct->ui32Mapped)); | 615 | psOffsetStruct->ui32Mapped)); |
592 | #endif | 616 | #endif |
593 | |||
594 | #if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0)) | ||
595 | MOD_INC_USE_COUNT; | ||
596 | #endif | ||
597 | } | 617 | } |
598 | 618 | ||
599 | 619 | ||
@@ -637,10 +657,6 @@ MMapVCloseNoLock(struct vm_area_struct* ps_vma) | |||
637 | } | 657 | } |
638 | 658 | ||
639 | ps_vma->vm_private_data = NULL; | 659 | ps_vma->vm_private_data = NULL; |
640 | |||
641 | #if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0)) | ||
642 | MOD_DEC_USE_COUNT; | ||
643 | #endif | ||
644 | } | 660 | } |
645 | 661 | ||
646 | static void | 662 | static void |
diff --git a/drivers/gpu/pvr/mmap.h b/drivers/gpu/pvr/mmap.h index 486154a241f..9330da15170 100644 --- a/drivers/gpu/pvr/mmap.h +++ b/drivers/gpu/pvr/mmap.h | |||
@@ -94,14 +94,23 @@ PVRSRV_ERROR PVRMMapRemoveRegisteredArea(LinuxMemArea *psLinuxMemArea); | |||
94 | 94 | ||
95 | 95 | ||
96 | PVRSRV_ERROR PVRMMapOSMemHandleToMMapData(PVRSRV_PER_PROCESS_DATA *psPerProc, | 96 | PVRSRV_ERROR PVRMMapOSMemHandleToMMapData(PVRSRV_PER_PROCESS_DATA *psPerProc, |
97 | IMG_HANDLE hMHandle, | 97 | #if defined (SUPPORT_SID_INTERFACE) |
98 | IMG_UINT32 *pui32MMapOffset, | 98 | IMG_SID hMHandle, |
99 | IMG_UINT32 *pui32ByteOffset, | 99 | #else |
100 | IMG_UINT32 *pui32RealByteSize, IMG_UINT32 *pui32UserVAddr); | 100 | IMG_HANDLE hMHandle, |
101 | #endif | ||
102 | IMG_UINT32 *pui32MMapOffset, | ||
103 | IMG_UINT32 *pui32ByteOffset, | ||
104 | IMG_UINT32 *pui32RealByteSize, | ||
105 | IMG_UINT32 *pui32UserVAddr); | ||
101 | 106 | ||
102 | PVRSRV_ERROR | 107 | PVRSRV_ERROR |
103 | PVRMMapReleaseMMapData(PVRSRV_PER_PROCESS_DATA *psPerProc, | 108 | PVRMMapReleaseMMapData(PVRSRV_PER_PROCESS_DATA *psPerProc, |
109 | #if defined (SUPPORT_SID_INTERFACE) | ||
110 | IMG_SID hMHandle, | ||
111 | #else | ||
104 | IMG_HANDLE hMHandle, | 112 | IMG_HANDLE hMHandle, |
113 | #endif | ||
105 | IMG_BOOL *pbMUnmap, | 114 | IMG_BOOL *pbMUnmap, |
106 | IMG_UINT32 *pui32RealByteSize, | 115 | IMG_UINT32 *pui32RealByteSize, |
107 | IMG_UINT32 *pui32UserVAddr); | 116 | IMG_UINT32 *pui32UserVAddr); |
diff --git a/drivers/gpu/pvr/module.c b/drivers/gpu/pvr/module.c index d0c6eb14e3d..c9fc0cf44e5 100644 --- a/drivers/gpu/pvr/module.c +++ b/drivers/gpu/pvr/module.c | |||
@@ -47,8 +47,6 @@ | |||
47 | #include <linux/version.h> | 47 | #include <linux/version.h> |
48 | #include <linux/fs.h> | 48 | #include <linux/fs.h> |
49 | #include <linux/proc_fs.h> | 49 | #include <linux/proc_fs.h> |
50 | #include <linux/pm_runtime.h> | ||
51 | #include <plat/gpu.h> | ||
52 | 50 | ||
53 | #if defined(SUPPORT_DRI_DRM) | 51 | #if defined(SUPPORT_DRI_DRM) |
54 | #include <drm/drmP.h> | 52 | #include <drm/drmP.h> |
@@ -127,11 +125,11 @@ static int PVRSRVRelease(struct inode* pInode, struct file* pFile); | |||
127 | 125 | ||
128 | static struct file_operations pvrsrv_fops = | 126 | static struct file_operations pvrsrv_fops = |
129 | { | 127 | { |
130 | .owner = THIS_MODULE, | 128 | .owner=THIS_MODULE, |
131 | .unlocked_ioctl = PVRSRV_BridgeDispatchKM, | 129 | .unlocked_ioctl = PVRSRV_BridgeDispatchKM, |
132 | .open = PVRSRVOpen, | 130 | .open=PVRSRVOpen, |
133 | .release = PVRSRVRelease, | 131 | .release=PVRSRVRelease, |
134 | .mmap = PVRMMap, | 132 | .mmap=PVRMMap, |
135 | }; | 133 | }; |
136 | #endif | 134 | #endif |
137 | 135 | ||
@@ -201,9 +199,24 @@ static LDM_DRV powervr_driver = { | |||
201 | .shutdown = PVRSRVDriverShutdown, | 199 | .shutdown = PVRSRVDriverShutdown, |
202 | }; | 200 | }; |
203 | 201 | ||
204 | struct gpu_platform_data *gpsSgxPlatformData; | ||
205 | LDM_DEV *gpsPVRLDMDev; | 202 | LDM_DEV *gpsPVRLDMDev; |
206 | 203 | ||
204 | #if defined(MODULE) && defined(PVR_LDM_PLATFORM_MODULE) | ||
205 | |||
206 | static IMG_VOID PVRSRVDeviceRelease(struct device unref__ *pDevice) | ||
207 | { | ||
208 | } | ||
209 | |||
210 | static struct platform_device powervr_device = { | ||
211 | .name = DEVNAME, | ||
212 | .id = -1, | ||
213 | .dev = { | ||
214 | .release = PVRSRVDeviceRelease | ||
215 | } | ||
216 | }; | ||
217 | |||
218 | #endif | ||
219 | |||
207 | #if defined(PVR_LDM_PLATFORM_MODULE) | 220 | #if defined(PVR_LDM_PLATFORM_MODULE) |
208 | static int PVRSRVDriverProbe(LDM_DEV *pDevice) | 221 | static int PVRSRVDriverProbe(LDM_DEV *pDevice) |
209 | #endif | 222 | #endif |
@@ -221,16 +234,8 @@ static int __devinit PVRSRVDriverProbe(LDM_DEV *pDevice, const struct pci_device | |||
221 | { | 234 | { |
222 | return -EINVAL; | 235 | return -EINVAL; |
223 | } | 236 | } |
224 | #endif | 237 | #endif |
225 | |||
226 | gpsSgxPlatformData = pDevice->dev.platform_data; | ||
227 | if(!gpsSgxPlatformData) | ||
228 | { | ||
229 | PVR_TRACE(("No SGX platform device data.")); | ||
230 | } | ||
231 | 238 | ||
232 | pm_runtime_enable(&pDevice->dev); | ||
233 | |||
234 | psSysData = SysAcquireDataNoCheck(); | 239 | psSysData = SysAcquireDataNoCheck(); |
235 | if ( psSysData == IMG_NULL) | 240 | if ( psSysData == IMG_NULL) |
236 | { | 241 | { |
@@ -269,8 +274,6 @@ static void __devexit PVRSRVDriverRemove(LDM_DEV *pDevice) | |||
269 | } | 274 | } |
270 | #endif | 275 | #endif |
271 | (IMG_VOID)SysDeinitialise(psSysData); | 276 | (IMG_VOID)SysDeinitialise(psSysData); |
272 | |||
273 | pm_runtime_disable(&pDevice->dev); | ||
274 | 277 | ||
275 | gpsPVRLDMDev = IMG_NULL; | 278 | gpsPVRLDMDev = IMG_NULL; |
276 | 279 | ||
@@ -425,7 +428,9 @@ static int PVRSRVOpen(struct inode unref__ * pInode, struct file *pFile) | |||
425 | if(eError != PVRSRV_OK) | 428 | if(eError != PVRSRV_OK) |
426 | goto err_unlock; | 429 | goto err_unlock; |
427 | 430 | ||
428 | #if defined(PVR_SECURE_FD_EXPORT) | 431 | #if defined (SUPPORT_SID_INTERFACE) |
432 | psPrivateData->hKernelMemInfo = 0; | ||
433 | #else | ||
429 | psPrivateData->hKernelMemInfo = NULL; | 434 | psPrivateData->hKernelMemInfo = NULL; |
430 | #endif | 435 | #endif |
431 | #if defined(SUPPORT_DRI_DRM) && defined(PVR_SECURE_DRM_AUTH_EXPORT) | 436 | #if defined(SUPPORT_DRI_DRM) && defined(PVR_SECURE_DRM_AUTH_EXPORT) |
@@ -464,7 +469,7 @@ static int PVRSRVRelease(struct inode unref__ * pInode, struct file *pFile) | |||
464 | list_del(&psPrivateData->sDRMAuthListItem); | 469 | list_del(&psPrivateData->sDRMAuthListItem); |
465 | #endif | 470 | #endif |
466 | 471 | ||
467 | 472 | ||
468 | gui32ReleasePID = psPrivateData->ui32OpenPID; | 473 | gui32ReleasePID = psPrivateData->ui32OpenPID; |
469 | PVRSRVProcessDisconnect(psPrivateData->ui32OpenPID); | 474 | PVRSRVProcessDisconnect(psPrivateData->ui32OpenPID); |
470 | gui32ReleasePID = 0; | 475 | gui32ReleasePID = 0; |
@@ -474,7 +479,7 @@ static int PVRSRVRelease(struct inode unref__ * pInode, struct file *pFile) | |||
474 | psPrivateData, psPrivateData->hBlockAlloc); | 479 | psPrivateData, psPrivateData->hBlockAlloc); |
475 | 480 | ||
476 | #if !defined(SUPPORT_DRI_DRM) | 481 | #if !defined(SUPPORT_DRI_DRM) |
477 | PRIVATE_DATA(pFile) = IMG_NULL; | 482 | PRIVATE_DATA(pFile) = IMG_NULL; |
478 | #endif | 483 | #endif |
479 | } | 484 | } |
480 | 485 | ||
@@ -541,6 +546,16 @@ static int __init PVRCore_Init(IMG_VOID) | |||
541 | goto init_failed; | 546 | goto init_failed; |
542 | } | 547 | } |
543 | 548 | ||
549 | #if defined(MODULE) | ||
550 | if ((error = platform_device_register(&powervr_device)) != 0) | ||
551 | { | ||
552 | platform_driver_unregister(&powervr_driver); | ||
553 | |||
554 | PVR_DPF((PVR_DBG_ERROR, "PVRCore_Init: unable to register platform device (%d)", error)); | ||
555 | |||
556 | goto init_failed; | ||
557 | } | ||
558 | #endif | ||
544 | #endif | 559 | #endif |
545 | 560 | ||
546 | #if defined(PVR_LDM_PCI_MODULE) | 561 | #if defined(PVR_LDM_PCI_MODULE) |
@@ -623,6 +638,9 @@ sys_deinit: | |||
623 | #endif | 638 | #endif |
624 | 639 | ||
625 | #if defined (PVR_LDM_PLATFORM_MODULE) | 640 | #if defined (PVR_LDM_PLATFORM_MODULE) |
641 | #if defined (MODULE) | ||
642 | platform_device_unregister(&powervr_device); | ||
643 | #endif | ||
626 | platform_driver_unregister(&powervr_driver); | 644 | platform_driver_unregister(&powervr_driver); |
627 | #endif | 645 | #endif |
628 | 646 | ||
@@ -689,6 +707,9 @@ static void __exit PVRCore_Cleanup(void) | |||
689 | #endif | 707 | #endif |
690 | 708 | ||
691 | #if defined (PVR_LDM_PLATFORM_MODULE) | 709 | #if defined (PVR_LDM_PLATFORM_MODULE) |
710 | #if defined (MODULE) | ||
711 | platform_device_unregister(&powervr_device); | ||
712 | #endif | ||
692 | platform_driver_unregister(&powervr_driver); | 713 | platform_driver_unregister(&powervr_driver); |
693 | #endif | 714 | #endif |
694 | 715 | ||
diff --git a/drivers/gpu/pvr/omap4/sysconfig.c b/drivers/gpu/pvr/omap4/sysconfig.c index 56ecb5ab9db..4904f2acb01 100644 --- a/drivers/gpu/pvr/omap4/sysconfig.c +++ b/drivers/gpu/pvr/omap4/sysconfig.c | |||
@@ -63,97 +63,6 @@ IMG_UINT32 PVRSRV_BridgeDispatchKM(IMG_UINT32 Ioctl, | |||
63 | IMG_UINT32 OutBufLen, | 63 | IMG_UINT32 OutBufLen, |
64 | IMG_UINT32 *pdwBytesTransferred); | 64 | IMG_UINT32 *pdwBytesTransferred); |
65 | 65 | ||
66 | #if defined(DEBUG) && defined(DUMP_OMAP34xx_CLOCKS) && defined(__linux__) | ||
67 | |||
68 | #pragma GCC diagnostic ignored "-Wstrict-prototypes" | ||
69 | #include <mach/clock.h> | ||
70 | |||
71 | #if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,29)) | ||
72 | #include <../mach-omap2/clock_34xx.h> | ||
73 | #define ONCHIP_CLKS onchip_clks | ||
74 | #else | ||
75 | #include <../mach-omap2/clock34xx.h> | ||
76 | #define ONCHIP_CLKS onchip_34xx_clks | ||
77 | #endif | ||
78 | |||
79 | static void omap3_clk_recalc(struct clk *clk) {} | ||
80 | static void omap3_followparent_recalc(struct clk *clk) {} | ||
81 | static void omap3_propagate_rate(struct clk *clk) {} | ||
82 | static void omap3_table_recalc(struct clk *clk) {} | ||
83 | static long omap3_round_to_table_rate(struct clk *clk, unsigned long rate) { return 0; } | ||
84 | static int omap3_select_table_rate(struct clk *clk, unsigned long rate) { return 0; } | ||
85 | |||
86 | #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,29)) | ||
87 | static void omap3_dpll_recalc(struct clk *clk, unsigned long parent_rate, | ||
88 | u8 rate_storage) {} | ||
89 | static void omap3_clkoutx2_recalc(struct clk *clk, unsigned long parent_rate, | ||
90 | u8 rate_storage) {} | ||
91 | static void omap3_dpll_allow_idle(struct clk *clk) {} | ||
92 | static void omap3_dpll_deny_idle(struct clk *clk) {} | ||
93 | static u32 omap3_dpll_autoidle_read(struct clk *clk) { return 0; } | ||
94 | static int omap3_noncore_dpll_enable(struct clk *clk) { return 0; } | ||
95 | static void omap3_noncore_dpll_disable(struct clk *clk) {} | ||
96 | static int omap3_noncore_dpll_set_rate(struct clk *clk, unsigned long rate) { return 0; } | ||
97 | static int omap3_core_dpll_m2_set_rate(struct clk *clk, unsigned long rate) { return 0; } | ||
98 | void followparent_recalc(struct clk *clk, unsigned long new_parent_rate, | ||
99 | u8 rate_storage) {} | ||
100 | long omap2_dpll_round_rate(struct clk *clk, unsigned long target_rate) { return 0; } | ||
101 | void omap2_clksel_recalc(struct clk *clk, unsigned long new_parent_rate, | ||
102 | u8 rate_storage) {} | ||
103 | long omap2_clksel_round_rate(struct clk *clk, unsigned long target_rate) { return 0; } | ||
104 | int omap2_clksel_set_rate(struct clk *clk, unsigned long rate) { return 0; } | ||
105 | void omap2_fixed_divisor_recalc(struct clk *clk, unsigned long new_parent_rate, | ||
106 | u8 rate_storage) {} | ||
107 | void omap2_init_clksel_parent(struct clk *clk) {} | ||
108 | #endif | ||
109 | |||
110 | static void dump_omap34xx_clocks(void) | ||
111 | { | ||
112 | struct clk **c; | ||
113 | #if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,29)) | ||
114 | struct vdd_prcm_config *t1 = vdd1_rate_table; | ||
115 | struct vdd_prcm_config *t2 = vdd2_rate_table; | ||
116 | |||
117 | t1 = t1; | ||
118 | t2 = t2; | ||
119 | #else | ||
120 | |||
121 | omap3_dpll_allow_idle(0); | ||
122 | omap3_dpll_deny_idle(0); | ||
123 | omap3_dpll_autoidle_read(0); | ||
124 | omap3_clk_recalc(0); | ||
125 | omap3_followparent_recalc(0); | ||
126 | omap3_propagate_rate(0); | ||
127 | omap3_table_recalc(0); | ||
128 | omap3_round_to_table_rate(0, 0); | ||
129 | omap3_select_table_rate(0, 0); | ||
130 | #endif | ||
131 | |||
132 | for(c = ONCHIP_CLKS; c < ONCHIP_CLKS + ARRAY_SIZE(ONCHIP_CLKS); c++) | ||
133 | { | ||
134 | struct clk *cp = *c, *copy; | ||
135 | unsigned long rate; | ||
136 | copy = clk_get(NULL, cp->name); | ||
137 | if(!copy) | ||
138 | continue; | ||
139 | rate = clk_get_rate(copy); | ||
140 | if (rate < 1000000) | ||
141 | { | ||
142 | PVR_DPF((PVR_DBG_ERROR, "%s: clock %s is %lu KHz (%lu Hz)", __func__, cp->name, rate/1000, rate)); | ||
143 | } | ||
144 | else | ||
145 | { | ||
146 | PVR_DPF((PVR_DBG_ERROR, "%s: clock %s is %lu MHz (%lu Hz)", __func__, cp->name, rate/1000000, rate)); | ||
147 | } | ||
148 | } | ||
149 | } | ||
150 | |||
151 | #else | ||
152 | |||
153 | static INLINE void dump_omap34xx_clocks(void) {} | ||
154 | |||
155 | #endif | ||
156 | |||
157 | #if defined(SGX_OCP_REGS_ENABLED) | 66 | #if defined(SGX_OCP_REGS_ENABLED) |
158 | 67 | ||
159 | #define SYS_OMAP4430_OCP_REGS_SYS_PHYS_BASE (SYS_OMAP4430_SGX_REGS_SYS_PHYS_BASE + EUR_CR_OCP_REVISION) | 68 | #define SYS_OMAP4430_OCP_REGS_SYS_PHYS_BASE (SYS_OMAP4430_SGX_REGS_SYS_PHYS_BASE + EUR_CR_OCP_REVISION) |
@@ -168,6 +77,9 @@ static PVRSRV_ERROR EnableSGXClocksWrap(SYS_DATA *psSysData) | |||
168 | if(eError == PVRSRV_OK) | 77 | if(eError == PVRSRV_OK) |
169 | { | 78 | { |
170 | OSWriteHWReg(gpvOCPRegsLinAddr, | 79 | OSWriteHWReg(gpvOCPRegsLinAddr, |
80 | EUR_CR_OCP_SYSCONFIG - EUR_CR_OCP_REVISION, | ||
81 | 0x14); | ||
82 | OSWriteHWReg(gpvOCPRegsLinAddr, | ||
171 | EUR_CR_OCP_DEBUG_CONFIG - EUR_CR_OCP_REVISION, | 83 | EUR_CR_OCP_DEBUG_CONFIG - EUR_CR_OCP_REVISION, |
172 | EUR_CR_OCP_DEBUG_CONFIG_THALIA_INT_BYPASS_MASK); | 84 | EUR_CR_OCP_DEBUG_CONFIG_THALIA_INT_BYPASS_MASK); |
173 | } | 85 | } |
@@ -175,14 +87,14 @@ static PVRSRV_ERROR EnableSGXClocksWrap(SYS_DATA *psSysData) | |||
175 | return eError; | 87 | return eError; |
176 | } | 88 | } |
177 | 89 | ||
178 | #else | 90 | #else |
179 | 91 | ||
180 | static INLINE PVRSRV_ERROR EnableSGXClocksWrap(SYS_DATA *psSysData) | 92 | static INLINE PVRSRV_ERROR EnableSGXClocksWrap(SYS_DATA *psSysData) |
181 | { | 93 | { |
182 | return EnableSGXClocks(psSysData); | 94 | return EnableSGXClocks(psSysData); |
183 | } | 95 | } |
184 | 96 | ||
185 | #endif | 97 | #endif |
186 | 98 | ||
187 | static INLINE PVRSRV_ERROR EnableSystemClocksWrap(SYS_DATA *psSysData) | 99 | static INLINE PVRSRV_ERROR EnableSystemClocksWrap(SYS_DATA *psSysData) |
188 | { | 100 | { |
@@ -191,7 +103,7 @@ static INLINE PVRSRV_ERROR EnableSystemClocksWrap(SYS_DATA *psSysData) | |||
191 | #if !defined(SUPPORT_ACTIVE_POWER_MANAGEMENT) | 103 | #if !defined(SUPPORT_ACTIVE_POWER_MANAGEMENT) |
192 | if(eError == PVRSRV_OK) | 104 | if(eError == PVRSRV_OK) |
193 | { | 105 | { |
194 | 106 | ||
195 | EnableSGXClocksWrap(psSysData); | 107 | EnableSGXClocksWrap(psSysData); |
196 | } | 108 | } |
197 | #endif | 109 | #endif |
@@ -208,13 +120,13 @@ static PVRSRV_ERROR SysLocateDevices(SYS_DATA *psSysData) | |||
208 | 120 | ||
209 | PVR_UNREFERENCED_PARAMETER(psSysData); | 121 | PVR_UNREFERENCED_PARAMETER(psSysData); |
210 | 122 | ||
211 | 123 | ||
212 | gsSGXDeviceMap.ui32Flags = 0x0; | 124 | gsSGXDeviceMap.ui32Flags = 0x0; |
213 | 125 | ||
214 | #if defined(NO_HARDWARE) | 126 | #if defined(NO_HARDWARE) |
215 | 127 | ||
216 | 128 | ||
217 | eError = OSBaseAllocContigMemory(SYS_OMAP4430_SGX_REGS_SIZE, | 129 | eError = OSBaseAllocContigMemory(SYS_OMAP4430_SGX_REGS_SIZE, |
218 | &gsSGXRegsCPUVAddr, | 130 | &gsSGXRegsCPUVAddr, |
219 | &sCpuPAddr); | 131 | &sCpuPAddr); |
220 | if(eError != PVRSRV_OK) | 132 | if(eError != PVRSRV_OK) |
@@ -225,21 +137,21 @@ static PVRSRV_ERROR SysLocateDevices(SYS_DATA *psSysData) | |||
225 | gsSGXDeviceMap.sRegsSysPBase = SysCpuPAddrToSysPAddr(gsSGXDeviceMap.sRegsCpuPBase); | 137 | gsSGXDeviceMap.sRegsSysPBase = SysCpuPAddrToSysPAddr(gsSGXDeviceMap.sRegsCpuPBase); |
226 | gsSGXDeviceMap.ui32RegsSize = SYS_OMAP4430_SGX_REGS_SIZE; | 138 | gsSGXDeviceMap.ui32RegsSize = SYS_OMAP4430_SGX_REGS_SIZE; |
227 | #if defined(__linux__) | 139 | #if defined(__linux__) |
228 | 140 | ||
229 | gsSGXDeviceMap.pvRegsCpuVBase = gsSGXRegsCPUVAddr; | 141 | gsSGXDeviceMap.pvRegsCpuVBase = gsSGXRegsCPUVAddr; |
230 | #else | 142 | #else |
231 | 143 | ||
232 | gsSGXDeviceMap.pvRegsCpuVBase = IMG_NULL; | 144 | gsSGXDeviceMap.pvRegsCpuVBase = IMG_NULL; |
233 | #endif | 145 | #endif |
234 | 146 | ||
235 | OSMemSet(gsSGXRegsCPUVAddr, 0, SYS_OMAP4430_SGX_REGS_SIZE); | 147 | OSMemSet(gsSGXRegsCPUVAddr, 0, SYS_OMAP4430_SGX_REGS_SIZE); |
236 | 148 | ||
237 | 149 | ||
238 | 150 | ||
239 | 151 | ||
240 | gsSGXDeviceMap.ui32IRQ = 0; | 152 | gsSGXDeviceMap.ui32IRQ = 0; |
241 | 153 | ||
242 | #else | 154 | #else |
243 | 155 | ||
244 | gsSGXDeviceMap.sRegsSysPBase.uiAddr = SYS_OMAP4430_SGX_REGS_SYS_PHYS_BASE; | 156 | gsSGXDeviceMap.sRegsSysPBase.uiAddr = SYS_OMAP4430_SGX_REGS_SYS_PHYS_BASE; |
245 | gsSGXDeviceMap.sRegsCpuPBase = SysSysPAddrToCpuPAddr(gsSGXDeviceMap.sRegsSysPBase); | 157 | gsSGXDeviceMap.sRegsCpuPBase = SysSysPAddrToCpuPAddr(gsSGXDeviceMap.sRegsSysPBase); |
@@ -251,11 +163,14 @@ static PVRSRV_ERROR SysLocateDevices(SYS_DATA *psSysData) | |||
251 | 163 | ||
252 | #if defined(PDUMP) | 164 | #if defined(PDUMP) |
253 | { | 165 | { |
166 | |||
254 | static IMG_CHAR pszPDumpDevName[] = "SGXMEM"; | 167 | static IMG_CHAR pszPDumpDevName[] = "SGXMEM"; |
255 | gsSGXDeviceMap.pszPDumpDevName = pszPDumpDevName; | 168 | gsSGXDeviceMap.pszPDumpDevName = pszPDumpDevName; |
256 | } | 169 | } |
257 | #endif | 170 | #endif |
258 | 171 | ||
172 | |||
173 | |||
259 | 174 | ||
260 | return PVRSRV_OK; | 175 | return PVRSRV_OK; |
261 | } | 176 | } |
@@ -318,7 +233,7 @@ PVRSRV_ERROR SysInitialise(IMG_VOID) | |||
318 | IMG_UINT32 i; | 233 | IMG_UINT32 i; |
319 | PVRSRV_ERROR eError; | 234 | PVRSRV_ERROR eError; |
320 | PVRSRV_DEVICE_NODE *psDeviceNode; | 235 | PVRSRV_DEVICE_NODE *psDeviceNode; |
321 | #if !defined(NO_OMAP_TIMER) | 236 | #if !defined(PVR_NO_OMAP_TIMER) |
322 | IMG_CPU_PHYADDR TimerRegPhysBase; | 237 | IMG_CPU_PHYADDR TimerRegPhysBase; |
323 | #endif | 238 | #endif |
324 | #if !defined(SGX_DYNAMIC_TIMING_INFO) | 239 | #if !defined(SGX_DYNAMIC_TIMING_INFO) |
@@ -344,7 +259,7 @@ PVRSRV_ERROR SysInitialise(IMG_VOID) | |||
344 | 259 | ||
345 | gpsSysData->ui32NumDevices = SYS_DEVICE_COUNT; | 260 | gpsSysData->ui32NumDevices = SYS_DEVICE_COUNT; |
346 | 261 | ||
347 | 262 | ||
348 | for(i=0; i<SYS_DEVICE_COUNT; i++) | 263 | for(i=0; i<SYS_DEVICE_COUNT; i++) |
349 | { | 264 | { |
350 | gpsSysData->sDeviceID[i].uiID = i; | 265 | gpsSysData->sDeviceID[i].uiID = i; |
@@ -363,8 +278,8 @@ PVRSRV_ERROR SysInitialise(IMG_VOID) | |||
363 | return eError; | 278 | return eError; |
364 | } | 279 | } |
365 | 280 | ||
366 | #if !defined(NO_OMAP_TIMER) | 281 | #if !defined(PVR_NO_OMAP_TIMER) |
367 | TimerRegPhysBase.uiAddr = SYS_OMAP3430_GP11TIMER_REGS_SYS_PHYS_BASE; | 282 | TimerRegPhysBase.uiAddr = SYS_OMAP4430_GP11TIMER_REGS_SYS_PHYS_BASE; |
368 | gpsSysData->pvSOCTimerRegisterKM = IMG_NULL; | 283 | gpsSysData->pvSOCTimerRegisterKM = IMG_NULL; |
369 | gpsSysData->hSOCTimerRegisterOSMemHandle = 0; | 284 | gpsSysData->hSOCTimerRegisterOSMemHandle = 0; |
370 | OSReservePhys(TimerRegPhysBase, | 285 | OSReservePhys(TimerRegPhysBase, |
@@ -372,27 +287,27 @@ PVRSRV_ERROR SysInitialise(IMG_VOID) | |||
372 | PVRSRV_HAP_MULTI_PROCESS|PVRSRV_HAP_UNCACHED, | 287 | PVRSRV_HAP_MULTI_PROCESS|PVRSRV_HAP_UNCACHED, |
373 | (IMG_VOID **)&gpsSysData->pvSOCTimerRegisterKM, | 288 | (IMG_VOID **)&gpsSysData->pvSOCTimerRegisterKM, |
374 | &gpsSysData->hSOCTimerRegisterOSMemHandle); | 289 | &gpsSysData->hSOCTimerRegisterOSMemHandle); |
375 | #endif | 290 | #endif |
376 | 291 | ||
377 | #if !defined(SGX_DYNAMIC_TIMING_INFO) | 292 | #if !defined(SGX_DYNAMIC_TIMING_INFO) |
378 | 293 | ||
379 | psTimingInfo = &gsSGXDeviceMap.sTimingInfo; | 294 | psTimingInfo = &gsSGXDeviceMap.sTimingInfo; |
380 | psTimingInfo->ui32CoreClockSpeed = SYS_SGX_CLOCK_SPEED; | 295 | psTimingInfo->ui32CoreClockSpeed = SYS_SGX_CLOCK_SPEED; |
381 | psTimingInfo->ui32HWRecoveryFreq = SYS_SGX_HWRECOVERY_TIMEOUT_FREQ; | 296 | psTimingInfo->ui32HWRecoveryFreq = SYS_SGX_HWRECOVERY_TIMEOUT_FREQ; |
382 | #if defined(SUPPORT_ACTIVE_POWER_MANAGEMENT) | 297 | #if defined(SUPPORT_ACTIVE_POWER_MANAGEMENT) |
383 | psTimingInfo->bEnableActivePM = IMG_TRUE; | 298 | psTimingInfo->bEnableActivePM = IMG_TRUE; |
384 | #else | 299 | #else |
385 | psTimingInfo->bEnableActivePM = IMG_FALSE; | 300 | psTimingInfo->bEnableActivePM = IMG_FALSE; |
386 | #endif | 301 | #endif |
387 | psTimingInfo->ui32ActivePowManLatencyms = SYS_SGX_ACTIVE_POWER_LATENCY_MS; | 302 | psTimingInfo->ui32ActivePowManLatencyms = SYS_SGX_ACTIVE_POWER_LATENCY_MS; |
388 | psTimingInfo->ui32uKernelFreq = SYS_SGX_PDS_TIMER_FREQ; | 303 | psTimingInfo->ui32uKernelFreq = SYS_SGX_PDS_TIMER_FREQ; |
389 | #endif | 304 | #endif |
390 | 305 | ||
391 | 306 | ||
392 | 307 | ||
393 | gpsSysSpecificData->ui32SrcClockDiv = 3; | 308 | gpsSysSpecificData->ui32SrcClockDiv = 3; |
394 | 309 | ||
395 | 310 | ||
396 | 311 | ||
397 | 312 | ||
398 | 313 | ||
@@ -428,6 +343,18 @@ PVRSRV_ERROR SysInitialise(IMG_VOID) | |||
428 | } | 343 | } |
429 | #endif | 344 | #endif |
430 | 345 | ||
346 | eError = SysPMRuntimeRegister(); | ||
347 | if (eError != PVRSRV_OK) | ||
348 | { | ||
349 | PVR_DPF((PVR_DBG_ERROR,"SysInitialise: Failed to register with OSPM!")); | ||
350 | (IMG_VOID)SysDeinitialise(gpsSysData); | ||
351 | gpsSysData = IMG_NULL; | ||
352 | return eError; | ||
353 | } | ||
354 | SYS_SPECIFIC_DATA_SET(&gsSysSpecificData, SYS_SPECIFIC_DATA_ENABLE_PM_RUNTIME); | ||
355 | |||
356 | |||
357 | |||
431 | 358 | ||
432 | eError = PVRSRVRegisterDevice(gpsSysData, SGXRegisterDevice, | 359 | eError = PVRSRVRegisterDevice(gpsSysData, SGXRegisterDevice, |
433 | DEVICE_SGX_INTERRUPT, &gui32SGXDeviceID); | 360 | DEVICE_SGX_INTERRUPT, &gui32SGXDeviceID); |
@@ -440,13 +367,14 @@ PVRSRV_ERROR SysInitialise(IMG_VOID) | |||
440 | } | 367 | } |
441 | SYS_SPECIFIC_DATA_SET(&gsSysSpecificData, SYS_SPECIFIC_DATA_ENABLE_REGDEV); | 368 | SYS_SPECIFIC_DATA_SET(&gsSysSpecificData, SYS_SPECIFIC_DATA_ENABLE_REGDEV); |
442 | 369 | ||
370 | |||
443 | 371 | ||
444 | 372 | ||
445 | 373 | ||
446 | psDeviceNode = gpsSysData->psDeviceNodeList; | 374 | psDeviceNode = gpsSysData->psDeviceNodeList; |
447 | while(psDeviceNode) | 375 | while(psDeviceNode) |
448 | { | 376 | { |
449 | 377 | ||
450 | switch(psDeviceNode->sDevId.eDeviceType) | 378 | switch(psDeviceNode->sDevId.eDeviceType) |
451 | { | 379 | { |
452 | case PVRSRV_DEVICE_TYPE_SGX: | 380 | case PVRSRV_DEVICE_TYPE_SGX: |
@@ -454,16 +382,16 @@ PVRSRV_ERROR SysInitialise(IMG_VOID) | |||
454 | DEVICE_MEMORY_INFO *psDevMemoryInfo; | 382 | DEVICE_MEMORY_INFO *psDevMemoryInfo; |
455 | DEVICE_MEMORY_HEAP_INFO *psDeviceMemoryHeap; | 383 | DEVICE_MEMORY_HEAP_INFO *psDeviceMemoryHeap; |
456 | 384 | ||
457 | 385 | ||
458 | 386 | ||
459 | 387 | ||
460 | psDeviceNode->psLocalDevMemArena = IMG_NULL; | 388 | psDeviceNode->psLocalDevMemArena = IMG_NULL; |
461 | 389 | ||
462 | 390 | ||
463 | psDevMemoryInfo = &psDeviceNode->sDevMemoryInfo; | 391 | psDevMemoryInfo = &psDeviceNode->sDevMemoryInfo; |
464 | psDeviceMemoryHeap = psDevMemoryInfo->psDeviceMemoryHeap; | 392 | psDeviceMemoryHeap = psDevMemoryInfo->psDeviceMemoryHeap; |
465 | 393 | ||
466 | 394 | ||
467 | for(i=0; i<psDevMemoryInfo->ui32HeapCount; i++) | 395 | for(i=0; i<psDevMemoryInfo->ui32HeapCount; i++) |
468 | { | 396 | { |
469 | psDeviceMemoryHeap[i].ui32Attribs |= PVRSRV_BACKINGSTORE_SYSMEM_NONCONTIG; | 397 | psDeviceMemoryHeap[i].ui32Attribs |= PVRSRV_BACKINGSTORE_SYSMEM_NONCONTIG; |
@@ -479,7 +407,7 @@ PVRSRV_ERROR SysInitialise(IMG_VOID) | |||
479 | return PVRSRV_ERROR_INIT_FAILURE; | 407 | return PVRSRV_ERROR_INIT_FAILURE; |
480 | } | 408 | } |
481 | 409 | ||
482 | 410 | ||
483 | psDeviceNode = psDeviceNode->psNext; | 411 | psDeviceNode = psDeviceNode->psNext; |
484 | } | 412 | } |
485 | 413 | ||
@@ -501,9 +429,7 @@ PVRSRV_ERROR SysInitialise(IMG_VOID) | |||
501 | gpsSysData = IMG_NULL; | 429 | gpsSysData = IMG_NULL; |
502 | return eError; | 430 | return eError; |
503 | } | 431 | } |
504 | #endif | 432 | #endif |
505 | |||
506 | dump_omap34xx_clocks(); | ||
507 | 433 | ||
508 | eError = PVRSRVInitialiseDevice(gui32SGXDeviceID); | 434 | eError = PVRSRVInitialiseDevice(gui32SGXDeviceID); |
509 | if (eError != PVRSRV_OK) | 435 | if (eError != PVRSRV_OK) |
@@ -516,9 +442,9 @@ PVRSRV_ERROR SysInitialise(IMG_VOID) | |||
516 | SYS_SPECIFIC_DATA_SET(&gsSysSpecificData, SYS_SPECIFIC_DATA_ENABLE_INITDEV); | 442 | SYS_SPECIFIC_DATA_SET(&gsSysSpecificData, SYS_SPECIFIC_DATA_ENABLE_INITDEV); |
517 | 443 | ||
518 | #if defined(SUPPORT_ACTIVE_POWER_MANAGEMENT) | 444 | #if defined(SUPPORT_ACTIVE_POWER_MANAGEMENT) |
519 | 445 | ||
520 | DisableSGXClocks(gpsSysData); | 446 | DisableSGXClocks(gpsSysData); |
521 | #endif | 447 | #endif |
522 | 448 | ||
523 | return PVRSRV_OK; | 449 | return PVRSRV_OK; |
524 | } | 450 | } |
@@ -535,7 +461,7 @@ PVRSRV_ERROR SysFinalise(IMG_VOID) | |||
535 | PVR_DPF((PVR_DBG_ERROR,"SysInitialise: Failed to Enable SGX clocks (%d)", eError)); | 461 | PVR_DPF((PVR_DBG_ERROR,"SysInitialise: Failed to Enable SGX clocks (%d)", eError)); |
536 | return eError; | 462 | return eError; |
537 | } | 463 | } |
538 | #endif | 464 | #endif |
539 | 465 | ||
540 | eError = OSInstallMISR(gpsSysData); | 466 | eError = OSInstallMISR(gpsSysData); |
541 | if (eError != PVRSRV_OK) | 467 | if (eError != PVRSRV_OK) |
@@ -546,7 +472,7 @@ PVRSRV_ERROR SysFinalise(IMG_VOID) | |||
546 | SYS_SPECIFIC_DATA_SET(&gsSysSpecificData, SYS_SPECIFIC_DATA_ENABLE_MISR); | 472 | SYS_SPECIFIC_DATA_SET(&gsSysSpecificData, SYS_SPECIFIC_DATA_ENABLE_MISR); |
547 | 473 | ||
548 | #if defined(SYS_USING_INTERRUPTS) | 474 | #if defined(SYS_USING_INTERRUPTS) |
549 | 475 | ||
550 | eError = OSInstallDeviceLISR(gpsSysData, gsSGXDeviceMap.ui32IRQ, "SGX ISR", gpsSGXDevNode); | 476 | eError = OSInstallDeviceLISR(gpsSysData, gsSGXDeviceMap.ui32IRQ, "SGX ISR", gpsSGXDevNode); |
551 | if (eError != PVRSRV_OK) | 477 | if (eError != PVRSRV_OK) |
552 | { | 478 | { |
@@ -554,9 +480,10 @@ PVRSRV_ERROR SysFinalise(IMG_VOID) | |||
554 | return eError; | 480 | return eError; |
555 | } | 481 | } |
556 | SYS_SPECIFIC_DATA_SET(&gsSysSpecificData, SYS_SPECIFIC_DATA_ENABLE_LISR); | 482 | SYS_SPECIFIC_DATA_SET(&gsSysSpecificData, SYS_SPECIFIC_DATA_ENABLE_LISR); |
557 | #endif | 483 | #endif |
558 | |||
559 | 484 | ||
485 | #if defined(__linux__) | ||
486 | |||
560 | gpsSysData->pszVersionString = SysCreateVersionString(gsSGXDeviceMap.sRegsCpuPBase); | 487 | gpsSysData->pszVersionString = SysCreateVersionString(gsSGXDeviceMap.sRegsCpuPBase); |
561 | if (!gpsSysData->pszVersionString) | 488 | if (!gpsSysData->pszVersionString) |
562 | { | 489 | { |
@@ -566,11 +493,12 @@ PVRSRV_ERROR SysFinalise(IMG_VOID) | |||
566 | { | 493 | { |
567 | PVR_DPF((PVR_DBG_WARNING, "SysFinalise: Version string: %s", gpsSysData->pszVersionString)); | 494 | PVR_DPF((PVR_DBG_WARNING, "SysFinalise: Version string: %s", gpsSysData->pszVersionString)); |
568 | } | 495 | } |
496 | #endif | ||
569 | 497 | ||
570 | #if defined(SUPPORT_ACTIVE_POWER_MANAGEMENT) | 498 | #if defined(SUPPORT_ACTIVE_POWER_MANAGEMENT) |
571 | 499 | ||
572 | DisableSGXClocks(gpsSysData); | 500 | DisableSGXClocks(gpsSysData); |
573 | #endif | 501 | #endif |
574 | 502 | ||
575 | gpsSysSpecificData->bSGXInitComplete = IMG_TRUE; | 503 | gpsSysSpecificData->bSGXInitComplete = IMG_TRUE; |
576 | 504 | ||
@@ -592,7 +520,7 @@ PVRSRV_ERROR SysDeinitialise (SYS_DATA *psSysData) | |||
592 | return eError; | 520 | return eError; |
593 | } | 521 | } |
594 | } | 522 | } |
595 | #endif | 523 | #endif |
596 | 524 | ||
597 | if (SYS_SPECIFIC_DATA_TEST(gpsSysSpecificData, SYS_SPECIFIC_DATA_ENABLE_MISR)) | 525 | if (SYS_SPECIFIC_DATA_TEST(gpsSysSpecificData, SYS_SPECIFIC_DATA_ENABLE_MISR)) |
598 | { | 526 | { |
@@ -625,14 +553,26 @@ PVRSRV_ERROR SysDeinitialise (SYS_DATA *psSysData) | |||
625 | return eError; | 553 | return eError; |
626 | } | 554 | } |
627 | } | 555 | } |
628 | 556 | ||
557 | if (SYS_SPECIFIC_DATA_TEST(gpsSysSpecificData, SYS_SPECIFIC_DATA_ENABLE_PM_RUNTIME)) | ||
558 | { | ||
559 | eError = SysPMRuntimeUnregister(); | ||
560 | if (eError != PVRSRV_OK) | ||
561 | { | ||
562 | PVR_DPF((PVR_DBG_ERROR,"SysDeinitialise: Failed to unregister with OSPM!")); | ||
563 | (IMG_VOID)SysDeinitialise(gpsSysData); | ||
564 | gpsSysData = IMG_NULL; | ||
565 | return eError; | ||
566 | } | ||
567 | } | ||
568 | |||
629 | #if defined(SGX_OCP_REGS_ENABLED) | 569 | #if defined(SGX_OCP_REGS_ENABLED) |
630 | if (SYS_SPECIFIC_DATA_TEST(gpsSysSpecificData, SYS_SPECIFIC_DATA_ENABLE_OCPREGS)) | 570 | if (SYS_SPECIFIC_DATA_TEST(gpsSysSpecificData, SYS_SPECIFIC_DATA_ENABLE_OCPREGS)) |
631 | { | 571 | { |
632 | OSUnMapPhysToLin(gpvOCPRegsLinAddr, | 572 | OSUnMapPhysToLin(gpvOCPRegsLinAddr, |
633 | SYS_OMAP4430_OCP_REGS_SIZE, | 573 | SYS_OMAP4430_OCP_REGS_SIZE, |
634 | PVRSRV_HAP_UNCACHED|PVRSRV_HAP_KERNEL_ONLY, | 574 | PVRSRV_HAP_UNCACHED|PVRSRV_HAP_KERNEL_ONLY, |
635 | IMG_NULL); | 575 | IMG_NULL); |
636 | } | 576 | } |
637 | #endif | 577 | #endif |
638 | 578 | ||
@@ -644,7 +584,7 @@ PVRSRV_ERROR SysDeinitialise (SYS_DATA *psSysData) | |||
644 | } | 584 | } |
645 | 585 | ||
646 | if (SYS_SPECIFIC_DATA_TEST(gpsSysSpecificData, SYS_SPECIFIC_DATA_ENABLE_ENVDATA)) | 586 | if (SYS_SPECIFIC_DATA_TEST(gpsSysSpecificData, SYS_SPECIFIC_DATA_ENABLE_ENVDATA)) |
647 | { | 587 | { |
648 | eError = OSDeInitEnvData(gpsSysData->pvEnvSpecificData); | 588 | eError = OSDeInitEnvData(gpsSysData->pvEnvSpecificData); |
649 | if (eError != PVRSRV_OK) | 589 | if (eError != PVRSRV_OK) |
650 | { | 590 | { |
@@ -653,7 +593,6 @@ PVRSRV_ERROR SysDeinitialise (SYS_DATA *psSysData) | |||
653 | } | 593 | } |
654 | } | 594 | } |
655 | 595 | ||
656 | #if !defined(NO_OMAP_TIMER) | ||
657 | if(gpsSysData->pvSOCTimerRegisterKM) | 596 | if(gpsSysData->pvSOCTimerRegisterKM) |
658 | { | 597 | { |
659 | OSUnReservePhys(gpsSysData->pvSOCTimerRegisterKM, | 598 | OSUnReservePhys(gpsSysData->pvSOCTimerRegisterKM, |
@@ -661,18 +600,18 @@ PVRSRV_ERROR SysDeinitialise (SYS_DATA *psSysData) | |||
661 | PVRSRV_HAP_MULTI_PROCESS|PVRSRV_HAP_UNCACHED, | 600 | PVRSRV_HAP_MULTI_PROCESS|PVRSRV_HAP_UNCACHED, |
662 | gpsSysData->hSOCTimerRegisterOSMemHandle); | 601 | gpsSysData->hSOCTimerRegisterOSMemHandle); |
663 | } | 602 | } |
664 | #endif | ||
665 | 603 | ||
666 | SysDeinitialiseCommon(gpsSysData); | 604 | SysDeinitialiseCommon(gpsSysData); |
667 | 605 | ||
668 | #if defined(NO_HARDWARE) | 606 | #if defined(NO_HARDWARE) |
669 | if(SYS_SPECIFIC_DATA_TEST(gpsSysSpecificData, SYS_SPECIFIC_DATA_ENABLE_LOCATEDEV)) | 607 | if(SYS_SPECIFIC_DATA_TEST(gpsSysSpecificData, SYS_SPECIFIC_DATA_ENABLE_LOCATEDEV)) |
670 | { | 608 | { |
671 | 609 | ||
672 | OSBaseFreeContigMemory(SYS_OMAP4430_SGX_REGS_SIZE, gsSGXRegsCPUVAddr, gsSGXDeviceMap.sRegsCpuPBase); | 610 | OSBaseFreeContigMemory(SYS_OMAP4430_SGX_REGS_SIZE, gsSGXRegsCPUVAddr, gsSGXDeviceMap.sRegsCpuPBase); |
673 | } | 611 | } |
674 | #endif | 612 | #endif |
675 | 613 | ||
614 | |||
676 | gpsSysSpecificData->ui32SysSpecificData = 0; | 615 | gpsSysSpecificData->ui32SysSpecificData = 0; |
677 | gpsSysSpecificData->bSGXInitComplete = IMG_FALSE; | 616 | gpsSysSpecificData->bSGXInitComplete = IMG_FALSE; |
678 | 617 | ||
@@ -690,7 +629,7 @@ PVRSRV_ERROR SysGetDeviceMemoryMap(PVRSRV_DEVICE_TYPE eDeviceType, | |||
690 | { | 629 | { |
691 | case PVRSRV_DEVICE_TYPE_SGX: | 630 | case PVRSRV_DEVICE_TYPE_SGX: |
692 | { | 631 | { |
693 | 632 | ||
694 | *ppvDeviceMap = (IMG_VOID*)&gsSGXDeviceMap; | 633 | *ppvDeviceMap = (IMG_VOID*)&gsSGXDeviceMap; |
695 | 634 | ||
696 | break; | 635 | break; |
@@ -711,9 +650,9 @@ IMG_DEV_PHYADDR SysCpuPAddrToDevPAddr(PVRSRV_DEVICE_TYPE eDeviceType, | |||
711 | 650 | ||
712 | PVR_UNREFERENCED_PARAMETER(eDeviceType); | 651 | PVR_UNREFERENCED_PARAMETER(eDeviceType); |
713 | 652 | ||
714 | 653 | ||
715 | DevPAddr.uiAddr = CpuPAddr.uiAddr; | 654 | DevPAddr.uiAddr = CpuPAddr.uiAddr; |
716 | 655 | ||
717 | return DevPAddr; | 656 | return DevPAddr; |
718 | } | 657 | } |
719 | 658 | ||
@@ -721,7 +660,7 @@ IMG_CPU_PHYADDR SysSysPAddrToCpuPAddr (IMG_SYS_PHYADDR sys_paddr) | |||
721 | { | 660 | { |
722 | IMG_CPU_PHYADDR cpu_paddr; | 661 | IMG_CPU_PHYADDR cpu_paddr; |
723 | 662 | ||
724 | 663 | ||
725 | cpu_paddr.uiAddr = sys_paddr.uiAddr; | 664 | cpu_paddr.uiAddr = sys_paddr.uiAddr; |
726 | return cpu_paddr; | 665 | return cpu_paddr; |
727 | } | 666 | } |
@@ -730,7 +669,7 @@ IMG_SYS_PHYADDR SysCpuPAddrToSysPAddr (IMG_CPU_PHYADDR cpu_paddr) | |||
730 | { | 669 | { |
731 | IMG_SYS_PHYADDR sys_paddr; | 670 | IMG_SYS_PHYADDR sys_paddr; |
732 | 671 | ||
733 | 672 | ||
734 | sys_paddr.uiAddr = cpu_paddr.uiAddr; | 673 | sys_paddr.uiAddr = cpu_paddr.uiAddr; |
735 | return sys_paddr; | 674 | return sys_paddr; |
736 | } | 675 | } |
@@ -742,7 +681,7 @@ IMG_DEV_PHYADDR SysSysPAddrToDevPAddr(PVRSRV_DEVICE_TYPE eDeviceType, IMG_SYS_PH | |||
742 | 681 | ||
743 | PVR_UNREFERENCED_PARAMETER(eDeviceType); | 682 | PVR_UNREFERENCED_PARAMETER(eDeviceType); |
744 | 683 | ||
745 | 684 | ||
746 | DevPAddr.uiAddr = SysPAddr.uiAddr; | 685 | DevPAddr.uiAddr = SysPAddr.uiAddr; |
747 | 686 | ||
748 | return DevPAddr; | 687 | return DevPAddr; |
@@ -755,7 +694,7 @@ IMG_SYS_PHYADDR SysDevPAddrToSysPAddr(PVRSRV_DEVICE_TYPE eDeviceType, IMG_DEV_PH | |||
755 | 694 | ||
756 | PVR_UNREFERENCED_PARAMETER(eDeviceType); | 695 | PVR_UNREFERENCED_PARAMETER(eDeviceType); |
757 | 696 | ||
758 | 697 | ||
759 | SysPAddr.uiAddr = DevPAddr.uiAddr; | 698 | SysPAddr.uiAddr = DevPAddr.uiAddr; |
760 | 699 | ||
761 | return SysPAddr; | 700 | return SysPAddr; |
@@ -779,10 +718,10 @@ IMG_UINT32 SysGetInterruptSource(SYS_DATA *psSysData, | |||
779 | { | 718 | { |
780 | PVR_UNREFERENCED_PARAMETER(psSysData); | 719 | PVR_UNREFERENCED_PARAMETER(psSysData); |
781 | #if defined(NO_HARDWARE) | 720 | #if defined(NO_HARDWARE) |
782 | 721 | ||
783 | return 0xFFFFFFFF; | 722 | return 0xFFFFFFFF; |
784 | #else | 723 | #else |
785 | 724 | ||
786 | return psDeviceNode->ui32SOCInterruptBit; | 725 | return psDeviceNode->ui32SOCInterruptBit; |
787 | #endif | 726 | #endif |
788 | } | 727 | } |
@@ -793,7 +732,7 @@ IMG_VOID SysClearInterrupts(SYS_DATA* psSysData, IMG_UINT32 ui32ClearBits) | |||
793 | PVR_UNREFERENCED_PARAMETER(psSysData); | 732 | PVR_UNREFERENCED_PARAMETER(psSysData); |
794 | PVR_UNREFERENCED_PARAMETER(ui32ClearBits); | 733 | PVR_UNREFERENCED_PARAMETER(ui32ClearBits); |
795 | 734 | ||
796 | 735 | ||
797 | OSReadHWReg(((PVRSRV_SGXDEV_INFO *)gpsSGXDevNode->pvDevice)->pvRegsBaseKM, | 736 | OSReadHWReg(((PVRSRV_SGXDEV_INFO *)gpsSGXDevNode->pvDevice)->pvRegsBaseKM, |
798 | EUR_CR_EVENT_HOST_CLEAR); | 737 | EUR_CR_EVENT_HOST_CLEAR); |
799 | } | 738 | } |
@@ -908,9 +847,9 @@ PVRSRV_ERROR SysDevicePrePowerState(IMG_UINT32 ui32DeviceIndex, | |||
908 | PVR_DPF((PVR_DBG_MESSAGE, "SysDevicePrePowerState: SGX Entering state D3")); | 847 | PVR_DPF((PVR_DBG_MESSAGE, "SysDevicePrePowerState: SGX Entering state D3")); |
909 | DisableSGXClocks(gpsSysData); | 848 | DisableSGXClocks(gpsSysData); |
910 | } | 849 | } |
911 | #else | 850 | #else |
912 | PVR_UNREFERENCED_PARAMETER(eNewPowerState ); | 851 | PVR_UNREFERENCED_PARAMETER(eNewPowerState ); |
913 | #endif | 852 | #endif |
914 | return PVRSRV_OK; | 853 | return PVRSRV_OK; |
915 | } | 854 | } |
916 | 855 | ||
@@ -934,9 +873,9 @@ PVRSRV_ERROR SysDevicePostPowerState(IMG_UINT32 ui32DeviceIndex, | |||
934 | PVR_DPF((PVR_DBG_MESSAGE, "SysDevicePostPowerState: SGX Leaving state D3")); | 873 | PVR_DPF((PVR_DBG_MESSAGE, "SysDevicePostPowerState: SGX Leaving state D3")); |
935 | eError = EnableSGXClocksWrap(gpsSysData); | 874 | eError = EnableSGXClocksWrap(gpsSysData); |
936 | } | 875 | } |
937 | #else | 876 | #else |
938 | PVR_UNREFERENCED_PARAMETER(eCurrentPowerState); | 877 | PVR_UNREFERENCED_PARAMETER(eCurrentPowerState); |
939 | #endif | 878 | #endif |
940 | 879 | ||
941 | return eError; | 880 | return eError; |
942 | } | 881 | } |
@@ -957,7 +896,7 @@ PVRSRV_ERROR SysOEMFunction ( IMG_UINT32 ui32ID, | |||
957 | if ((ui32ID == OEM_GET_EXT_FUNCS) && | 896 | if ((ui32ID == OEM_GET_EXT_FUNCS) && |
958 | (ulOutSize == sizeof(PVRSRV_DC_OEM_JTABLE))) | 897 | (ulOutSize == sizeof(PVRSRV_DC_OEM_JTABLE))) |
959 | { | 898 | { |
960 | 899 | ||
961 | PVRSRV_DC_OEM_JTABLE *psOEMJTable = (PVRSRV_DC_OEM_JTABLE*) pvOut; | 900 | PVRSRV_DC_OEM_JTABLE *psOEMJTable = (PVRSRV_DC_OEM_JTABLE*) pvOut; |
962 | psOEMJTable->pfnOEMBridgeDispatch = &PVRSRV_BridgeDispatchKM; | 901 | psOEMJTable->pfnOEMBridgeDispatch = &PVRSRV_BridgeDispatchKM; |
963 | return PVRSRV_OK; | 902 | return PVRSRV_OK; |
diff --git a/drivers/gpu/pvr/omap4/sysconfig.h b/drivers/gpu/pvr/omap4/sysconfig.h index bf789072847..b3714fd7074 100644 --- a/drivers/gpu/pvr/omap4/sysconfig.h +++ b/drivers/gpu/pvr/omap4/sysconfig.h | |||
@@ -1,26 +1,26 @@ | |||
1 | /********************************************************************** | 1 | /********************************************************************** |
2 | * | 2 | * |
3 | * Copyright(c) 2008 Imagination Technologies Ltd. All rights reserved. | 3 | * Copyright(c) 2008 Imagination Technologies Ltd. All rights reserved. |
4 | * | 4 | * |
5 | * This program is free software; you can redistribute it and/or modify it | 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, | 6 | * under the terms and conditions of the GNU General Public License, |
7 | * version 2, as published by the Free Software Foundation. | 7 | * version 2, as published by the Free Software Foundation. |
8 | * | 8 | * |
9 | * This program is distributed in the hope it will be useful but, except | 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 | 10 | * as otherwise stated in writing, without any warranty; without even the |
11 | * implied warranty of merchantability or fitness for a particular purpose. | 11 | * implied warranty of merchantability or fitness for a particular purpose. |
12 | * See the GNU General Public License for more details. | 12 | * See the GNU General Public License for more details. |
13 | * | 13 | * |
14 | * You should have received a copy of the GNU General Public License along with | 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., | 15 | * this program; if not, write to the Free Software Foundation, Inc., |
16 | * 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA. | 16 | * 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA. |
17 | * | 17 | * |
18 | * The full GNU General Public License is included in this distribution in | 18 | * The full GNU General Public License is included in this distribution in |
19 | * the file called "COPYING". | 19 | * the file called "COPYING". |
20 | * | 20 | * |
21 | * Contact Information: | 21 | * Contact Information: |
22 | * Imagination Technologies Ltd. <gpl-support@imgtec.com> | 22 | * Imagination Technologies Ltd. <gpl-support@imgtec.com> |
23 | * Home Park Estate, Kings Langley, Herts, WD4 8LZ, UK | 23 | * Home Park Estate, Kings Langley, Herts, WD4 8LZ, UK |
24 | * | 24 | * |
25 | ******************************************************************************/ | 25 | ******************************************************************************/ |
26 | 26 | ||
@@ -31,37 +31,29 @@ | |||
31 | 31 | ||
32 | #define VS_PRODUCT_NAME "OMAP4" | 32 | #define VS_PRODUCT_NAME "OMAP4" |
33 | 33 | ||
34 | #if defined(SGX_CLK_PER_192) | 34 | #if defined(SGX540) && (SGX_CORE_REV == 120) |
35 | #define SYS_SGX_CLOCK_SPEED 192000000 | 35 | #define SYS_SGX_CLOCK_SPEED 320000000 |
36 | #else | 36 | #else |
37 | #if defined(SGX_CLK_CORE_DIV8) | 37 | #define SYS_SGX_CLOCK_SPEED 304742400 |
38 | #define SYS_SGX_CLOCK_SPEED 190464000 | ||
39 | #else | ||
40 | #if defined(SGX_CLK_CORE_DIV5) | ||
41 | #if defined(CONFIG_SGX_REV110) | ||
42 | #define SYS_SGX_CLOCK_SPEED 304742400 | ||
43 | #endif | ||
44 | #if defined(CONFIG_SGX_REV120) | ||
45 | #define SYS_SGX_CLOCK_SPEED 307200000 | ||
46 | #endif | ||
47 | #endif | ||
48 | #endif | ||
49 | #endif | 38 | #endif |
50 | 39 | ||
51 | #define SYS_SGX_HWRECOVERY_TIMEOUT_FREQ (100) | 40 | #define SYS_SGX_HWRECOVERY_TIMEOUT_FREQ (100) |
52 | #define SYS_SGX_PDS_TIMER_FREQ (1000) | 41 | #define SYS_SGX_PDS_TIMER_FREQ (1000) |
53 | 42 | ||
54 | #if !defined(SYS_SGX_ACTIVE_POWER_LATENCY_MS) | 43 | #if !defined(SYS_SGX_ACTIVE_POWER_LATENCY_MS) |
55 | #define SYS_SGX_ACTIVE_POWER_LATENCY_MS (100) | 44 | #define SYS_SGX_ACTIVE_POWER_LATENCY_MS (1) |
56 | #endif | 45 | #endif |
57 | 46 | ||
58 | 47 | ||
59 | |||
60 | #define SYS_OMAP4430_SGX_REGS_SYS_PHYS_BASE 0x56000000 | 48 | #define SYS_OMAP4430_SGX_REGS_SYS_PHYS_BASE 0x56000000 |
61 | #define SYS_OMAP4430_SGX_REGS_SIZE 0xFFFF | ||
62 | 49 | ||
63 | #define SYS_OMAP4430_SGX_IRQ 53 /* OMAP 4 IRQs are offset by 32 */ | 50 | #define SYS_OMAP4430_SGX_REGS_SIZE 0xFFFF |
64 | 51 | ||
52 | #define SYS_OMAP4430_SGX_IRQ 53 | ||
65 | 53 | ||
54 | #define SYS_OMAP4430_GP11TIMER_ENABLE_SYS_PHYS_BASE 0x48088038 | ||
55 | #define SYS_OMAP4430_GP11TIMER_REGS_SYS_PHYS_BASE 0x4808803C | ||
56 | #define SYS_OMAP4430_GP11TIMER_TSICR_SYS_PHYS_BASE 0x48088054 | ||
66 | 57 | ||
67 | #endif | 58 | |
59 | #endif | ||
diff --git a/drivers/gpu/pvr/omap4/sysinfo.h b/drivers/gpu/pvr/omap4/sysinfo.h index 80b86febda6..42489f0c632 100644 --- a/drivers/gpu/pvr/omap4/sysinfo.h +++ b/drivers/gpu/pvr/omap4/sysinfo.h | |||
@@ -1,26 +1,26 @@ | |||
1 | /********************************************************************** | 1 | /********************************************************************** |
2 | * | 2 | * |
3 | * Copyright(c) 2008 Imagination Technologies Ltd. All rights reserved. | 3 | * Copyright(c) 2008 Imagination Technologies Ltd. All rights reserved. |
4 | * | 4 | * |
5 | * This program is free software; you can redistribute it and/or modify it | 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, | 6 | * under the terms and conditions of the GNU General Public License, |
7 | * version 2, as published by the Free Software Foundation. | 7 | * version 2, as published by the Free Software Foundation. |
8 | * | 8 | * |
9 | * This program is distributed in the hope it will be useful but, except | 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 | 10 | * as otherwise stated in writing, without any warranty; without even the |
11 | * implied warranty of merchantability or fitness for a particular purpose. | 11 | * implied warranty of merchantability or fitness for a particular purpose. |
12 | * See the GNU General Public License for more details. | 12 | * See the GNU General Public License for more details. |
13 | * | 13 | * |
14 | * You should have received a copy of the GNU General Public License along with | 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., | 15 | * this program; if not, write to the Free Software Foundation, Inc., |
16 | * 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA. | 16 | * 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA. |
17 | * | 17 | * |
18 | * The full GNU General Public License is included in this distribution in | 18 | * The full GNU General Public License is included in this distribution in |
19 | * the file called "COPYING". | 19 | * the file called "COPYING". |
20 | * | 20 | * |
21 | * Contact Information: | 21 | * Contact Information: |
22 | * Imagination Technologies Ltd. <gpl-support@imgtec.com> | 22 | * Imagination Technologies Ltd. <gpl-support@imgtec.com> |
23 | * Home Park Estate, Kings Langley, Herts, WD4 8LZ, UK | 23 | * Home Park Estate, Kings Langley, Herts, WD4 8LZ, UK |
24 | * | 24 | * |
25 | ******************************************************************************/ | 25 | ******************************************************************************/ |
26 | 26 | ||
@@ -29,12 +29,13 @@ | |||
29 | 29 | ||
30 | #if defined(PVR_LINUX_USING_WORKQUEUES) | 30 | #if defined(PVR_LINUX_USING_WORKQUEUES) |
31 | #define MAX_HW_TIME_US (1000000) | 31 | #define MAX_HW_TIME_US (1000000) |
32 | #define WAIT_TRY_COUNT (20000) | ||
32 | #else | 33 | #else |
33 | #define MAX_HW_TIME_US (500000) | 34 | #define MAX_HW_TIME_US (500000) |
35 | #define WAIT_TRY_COUNT (10000) | ||
34 | #endif | 36 | #endif |
35 | 37 | ||
36 | #define WAIT_TRY_COUNT (10000) | ||
37 | 38 | ||
38 | #define SYS_DEVICE_COUNT 4 | 39 | #define SYS_DEVICE_COUNT 15 |
39 | 40 | ||
40 | #endif | 41 | #endif |
diff --git a/drivers/gpu/pvr/omap4/syslocal.h b/drivers/gpu/pvr/omap4/syslocal.h index 766870f366c..bc7748c4705 100644 --- a/drivers/gpu/pvr/omap4/syslocal.h +++ b/drivers/gpu/pvr/omap4/syslocal.h | |||
@@ -1,26 +1,26 @@ | |||
1 | /********************************************************************** | 1 | /********************************************************************** |
2 | * | 2 | * |
3 | * Copyright(c) 2008 Imagination Technologies Ltd. All rights reserved. | 3 | * Copyright(c) 2008 Imagination Technologies Ltd. All rights reserved. |
4 | * | 4 | * |
5 | * This program is free software; you can redistribute it and/or modify it | 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, | 6 | * under the terms and conditions of the GNU General Public License, |
7 | * version 2, as published by the Free Software Foundation. | 7 | * version 2, as published by the Free Software Foundation. |
8 | * | 8 | * |
9 | * This program is distributed in the hope it will be useful but, except | 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 | 10 | * as otherwise stated in writing, without any warranty; without even the |
11 | * implied warranty of merchantability or fitness for a particular purpose. | 11 | * implied warranty of merchantability or fitness for a particular purpose. |
12 | * See the GNU General Public License for more details. | 12 | * See the GNU General Public License for more details. |
13 | * | 13 | * |
14 | * You should have received a copy of the GNU General Public License along with | 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., | 15 | * this program; if not, write to the Free Software Foundation, Inc., |
16 | * 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA. | 16 | * 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA. |
17 | * | 17 | * |
18 | * The full GNU General Public License is included in this distribution in | 18 | * The full GNU General Public License is included in this distribution in |
19 | * the file called "COPYING". | 19 | * the file called "COPYING". |
20 | * | 20 | * |
21 | * Contact Information: | 21 | * Contact Information: |
22 | * Imagination Technologies Ltd. <gpl-support@imgtec.com> | 22 | * Imagination Technologies Ltd. <gpl-support@imgtec.com> |
23 | * Home Park Estate, Kings Langley, Herts, WD4 8LZ, UK | 23 | * Home Park Estate, Kings Langley, Herts, WD4 8LZ, UK |
24 | * | 24 | * |
25 | ******************************************************************************/ | 25 | ******************************************************************************/ |
26 | 26 | ||
@@ -41,21 +41,21 @@ | |||
41 | #if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,26)) | 41 | #if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,26)) |
42 | #include <linux/semaphore.h> | 42 | #include <linux/semaphore.h> |
43 | #include <linux/resource.h> | 43 | #include <linux/resource.h> |
44 | #else | 44 | #else |
45 | #include <asm/semaphore.h> | 45 | #include <asm/semaphore.h> |
46 | #if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,22)) | 46 | #if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,22)) |
47 | #include <asm/arch/resource.h> | 47 | #include <asm/arch/resource.h> |
48 | #endif | 48 | #endif |
49 | #endif | 49 | #endif |
50 | 50 | ||
51 | #endif | 51 | #endif |
52 | 52 | ||
53 | #if defined (__cplusplus) | 53 | #if defined (__cplusplus) |
54 | extern "C" { | 54 | extern "C" { |
55 | #endif | 55 | #endif |
56 | 56 | ||
57 | 57 | ||
58 | 58 | ||
59 | IMG_CHAR *SysCreateVersionString(IMG_CPU_PHYADDR sRegRegion); | 59 | IMG_CHAR *SysCreateVersionString(IMG_CPU_PHYADDR sRegRegion); |
60 | 60 | ||
61 | IMG_VOID DisableSystemClocks(SYS_DATA *psSysData); | 61 | IMG_VOID DisableSystemClocks(SYS_DATA *psSysData); |
@@ -77,13 +77,14 @@ PVRSRV_ERROR EnableSGXClocks(SYS_DATA *psSysData); | |||
77 | #define SYS_SPECIFIC_DATA_PM_UNINSTALL_LISR 0x00000200 | 77 | #define SYS_SPECIFIC_DATA_PM_UNINSTALL_LISR 0x00000200 |
78 | #define SYS_SPECIFIC_DATA_PM_DISABLE_SYSCLOCKS 0x00000400 | 78 | #define SYS_SPECIFIC_DATA_PM_DISABLE_SYSCLOCKS 0x00000400 |
79 | #define SYS_SPECIFIC_DATA_ENABLE_OCPREGS 0x00000800 | 79 | #define SYS_SPECIFIC_DATA_ENABLE_OCPREGS 0x00000800 |
80 | #define SYS_SPECIFIC_DATA_ENABLE_PM_RUNTIME 0x00001000 | ||
80 | 81 | ||
81 | #define SYS_SPECIFIC_DATA_SET(psSysSpecData, flag) ((IMG_VOID)((psSysSpecData)->ui32SysSpecificData |= (flag))) | 82 | #define SYS_SPECIFIC_DATA_SET(psSysSpecData, flag) ((IMG_VOID)((psSysSpecData)->ui32SysSpecificData |= (flag))) |
82 | 83 | ||
83 | #define SYS_SPECIFIC_DATA_CLEAR(psSysSpecData, flag) ((IMG_VOID)((psSysSpecData)->ui32SysSpecificData &= ~(flag))) | 84 | #define SYS_SPECIFIC_DATA_CLEAR(psSysSpecData, flag) ((IMG_VOID)((psSysSpecData)->ui32SysSpecificData &= ~(flag))) |
84 | 85 | ||
85 | #define SYS_SPECIFIC_DATA_TEST(psSysSpecData, flag) (((psSysSpecData)->ui32SysSpecificData & (flag)) != 0) | 86 | #define SYS_SPECIFIC_DATA_TEST(psSysSpecData, flag) (((psSysSpecData)->ui32SysSpecificData & (flag)) != 0) |
86 | 87 | ||
87 | typedef struct _SYS_SPECIFIC_DATA_TAG_ | 88 | typedef struct _SYS_SPECIFIC_DATA_TAG_ |
88 | { | 89 | { |
89 | IMG_UINT32 ui32SysSpecificData; | 90 | IMG_UINT32 ui32SysSpecificData; |
@@ -110,16 +111,11 @@ typedef struct _SYS_SPECIFIC_DATA_TAG_ | |||
110 | struct clk *psSGX_FCK; | 111 | struct clk *psSGX_FCK; |
111 | struct clk *psSGX_ICK; | 112 | struct clk *psSGX_ICK; |
112 | struct clk *psMPU_CK; | 113 | struct clk *psMPU_CK; |
113 | #if !defined(NO_OMAP_TIMER) | ||
114 | #if defined(DEBUG) || defined(TIMING) | 114 | #if defined(DEBUG) || defined(TIMING) |
115 | struct clk *psGPT11_FCK; | 115 | struct clk *psGPT11_FCK; |
116 | struct clk *psGPT11_ICK; | 116 | struct clk *psGPT11_ICK; |
117 | #endif | 117 | #endif |
118 | #endif | 118 | #endif |
119 | #if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,22)) | ||
120 | struct constraint_handle *pVdd2Handle; | ||
121 | #endif | ||
122 | #endif | ||
123 | } SYS_SPECIFIC_DATA; | 119 | } SYS_SPECIFIC_DATA; |
124 | 120 | ||
125 | extern SYS_SPECIFIC_DATA *gpsSysSpecificData; | 121 | extern SYS_SPECIFIC_DATA *gpsSysSpecificData; |
@@ -129,10 +125,35 @@ IMG_BOOL WrapSystemPowerChange(SYS_SPECIFIC_DATA *psSysSpecData); | |||
129 | IMG_VOID UnwrapSystemPowerChange(SYS_SPECIFIC_DATA *psSysSpecData); | 125 | IMG_VOID UnwrapSystemPowerChange(SYS_SPECIFIC_DATA *psSysSpecData); |
130 | #endif | 126 | #endif |
131 | 127 | ||
132 | #if defined(__cplusplus) | 128 | #if defined(__linux__) |
129 | |||
130 | PVRSRV_ERROR SysPMRuntimeRegister(void); | ||
131 | PVRSRV_ERROR SysPMRuntimeUnregister(void); | ||
132 | |||
133 | #else | ||
134 | |||
135 | #ifdef INLINE_IS_PRAGMA | ||
136 | #pragma inline(SysPMRuntimeRegister) | ||
137 | #endif | ||
138 | static INLINE PVRSRV_ERROR SysPMRuntimeRegister(void) | ||
139 | { | ||
140 | return PVRSRV_OK; | ||
133 | } | 141 | } |
142 | |||
143 | #ifdef INLINE_IS_PRAGMA | ||
144 | #pragma inline(SysPMRuntimeUnregister) | ||
134 | #endif | 145 | #endif |
146 | static INLINE PVRSRV_ERROR SysPMRuntimeUnregister(void) | ||
147 | { | ||
148 | return PVRSRV_OK; | ||
149 | } | ||
150 | |||
151 | #endif | ||
135 | 152 | ||
153 | #if defined(__cplusplus) | ||
154 | } | ||
136 | #endif | 155 | #endif |
137 | 156 | ||
157 | #endif | ||
158 | |||
138 | 159 | ||
diff --git a/drivers/gpu/pvr/omap4/sysutils.c b/drivers/gpu/pvr/omap4/sysutils.c index d2c4231315c..3d3def0c720 100644 --- a/drivers/gpu/pvr/omap4/sysutils.c +++ b/drivers/gpu/pvr/omap4/sysutils.c | |||
@@ -1,33 +1,30 @@ | |||
1 | /********************************************************************** | 1 | /********************************************************************** |
2 | * | 2 | * |
3 | * Copyright(c) 2008 Imagination Technologies Ltd. All rights reserved. | 3 | * Copyright(c) 2008 Imagination Technologies Ltd. All rights reserved. |
4 | * | 4 | * |
5 | * This program is free software; you can redistribute it and/or modify it | 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, | 6 | * under the terms and conditions of the GNU General Public License, |
7 | * version 2, as published by the Free Software Foundation. | 7 | * version 2, as published by the Free Software Foundation. |
8 | * | 8 | * |
9 | * This program is distributed in the hope it will be useful but, except | 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 | 10 | * as otherwise stated in writing, without any warranty; without even the |
11 | * implied warranty of merchantability or fitness for a particular purpose. | 11 | * implied warranty of merchantability or fitness for a particular purpose. |
12 | * See the GNU General Public License for more details. | 12 | * See the GNU General Public License for more details. |
13 | * | 13 | * |
14 | * You should have received a copy of the GNU General Public License along with | 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., | 15 | * this program; if not, write to the Free Software Foundation, Inc., |
16 | * 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA. | 16 | * 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA. |
17 | * | 17 | * |
18 | * The full GNU General Public License is included in this distribution in | 18 | * The full GNU General Public License is included in this distribution in |
19 | * the file called "COPYING". | 19 | * the file called "COPYING". |
20 | * | 20 | * |
21 | * Contact Information: | 21 | * Contact Information: |
22 | * Imagination Technologies Ltd. <gpl-support@imgtec.com> | 22 | * Imagination Technologies Ltd. <gpl-support@imgtec.com> |
23 | * Home Park Estate, Kings Langley, Herts, WD4 8LZ, UK | 23 | * Home Park Estate, Kings Langley, Herts, WD4 8LZ, UK |
24 | * | 24 | * |
25 | ******************************************************************************/ | 25 | ******************************************************************************/ |
26 | 26 | ||
27 | #if defined(__linux__) | 27 | #if defined(__linux__) |
28 | #if defined(PVR_LINUX_USING_WORKQUEUES) | ||
29 | #include "sysutils_linux_wqueue_compat.c" | ||
30 | #else | ||
31 | #include "sysutils_linux.c" | 28 | #include "sysutils_linux.c" |
32 | #endif | 29 | #endif |
33 | #endif | 30 | |
diff --git a/drivers/gpu/pvr/omap4/sysutils_linux.c b/drivers/gpu/pvr/omap4/sysutils_linux.c new file mode 100644 index 00000000000..40b2cc35ccc --- /dev/null +++ b/drivers/gpu/pvr/omap4/sysutils_linux.c | |||
@@ -0,0 +1,537 @@ | |||
1 | /********************************************************************** | ||
2 | * | ||
3 | * Copyright(c) 2008 Imagination Technologies Ltd. All rights reserved. | ||
4 | * | ||
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. | ||
8 | * | ||
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. | ||
13 | * | ||
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. | ||
17 | * | ||
18 | * The full GNU General Public License is included in this distribution in | ||
19 | * the file called "COPYING". | ||
20 | * | ||
21 | * Contact Information: | ||
22 | * Imagination Technologies Ltd. <gpl-support@imgtec.com> | ||
23 | * Home Park Estate, Kings Langley, Herts, WD4 8LZ, UK | ||
24 | * | ||
25 | ******************************************************************************/ | ||
26 | |||
27 | #include <linux/version.h> | ||
28 | #include <linux/clk.h> | ||
29 | #include <linux/err.h> | ||
30 | #include <linux/hardirq.h> | ||
31 | #include <linux/mutex.h> | ||
32 | |||
33 | #include "sgxdefs.h" | ||
34 | #include "services_headers.h" | ||
35 | #include "sysinfo.h" | ||
36 | #include "sgxapi_km.h" | ||
37 | #include "sysconfig.h" | ||
38 | #include "sgxinfokm.h" | ||
39 | #include "syslocal.h" | ||
40 | |||
41 | #include <linux/platform_device.h> | ||
42 | #include <linux/pm_runtime.h> | ||
43 | |||
44 | #if !defined(PVR_LINUX_USING_WORKQUEUES) | ||
45 | #error "PVR_LINUX_USING_WORKQUEUES must be defined" | ||
46 | #endif | ||
47 | |||
48 | #if ((defined(DEBUG) || defined(TIMING)) && \ | ||
49 | (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,34))) && \ | ||
50 | !defined(PVR_NO_OMAP_TIMER) | ||
51 | #define PVR_OMAP4_TIMING_PRCM | ||
52 | #endif | ||
53 | |||
54 | #define ONE_MHZ 1000000 | ||
55 | #define HZ_TO_MHZ(m) ((m) / ONE_MHZ) | ||
56 | |||
57 | #if defined(SUPPORT_OMAP3430_SGXFCLK_96M) | ||
58 | #define SGX_PARENT_CLOCK "cm_96m_fck" | ||
59 | #else | ||
60 | #define SGX_PARENT_CLOCK "core_ck" | ||
61 | #endif | ||
62 | |||
63 | #if defined(LDM_PLATFORM) && !defined(SUPPORT_DRI_DRM) | ||
64 | extern struct platform_device *gpsPVRLDMDev; | ||
65 | #endif | ||
66 | |||
67 | static IMG_VOID PowerLockWrap(SYS_SPECIFIC_DATA *psSysSpecData) | ||
68 | { | ||
69 | if (!in_interrupt()) | ||
70 | { | ||
71 | mutex_lock(&psSysSpecData->sPowerLock); | ||
72 | |||
73 | } | ||
74 | } | ||
75 | |||
76 | static IMG_VOID PowerLockUnwrap(SYS_SPECIFIC_DATA *psSysSpecData) | ||
77 | { | ||
78 | if (!in_interrupt()) | ||
79 | { | ||
80 | mutex_unlock(&psSysSpecData->sPowerLock); | ||
81 | } | ||
82 | } | ||
83 | |||
84 | PVRSRV_ERROR SysPowerLockWrap(IMG_VOID) | ||
85 | { | ||
86 | SYS_DATA *psSysData; | ||
87 | |||
88 | SysAcquireData(&psSysData); | ||
89 | |||
90 | PowerLockWrap(psSysData->pvSysSpecificData); | ||
91 | |||
92 | return PVRSRV_OK; | ||
93 | } | ||
94 | |||
95 | IMG_VOID SysPowerLockUnwrap(IMG_VOID) | ||
96 | { | ||
97 | SYS_DATA *psSysData; | ||
98 | |||
99 | SysAcquireData(&psSysData); | ||
100 | |||
101 | PowerLockUnwrap(psSysData->pvSysSpecificData); | ||
102 | } | ||
103 | |||
104 | IMG_BOOL WrapSystemPowerChange(SYS_SPECIFIC_DATA *psSysSpecData) | ||
105 | { | ||
106 | return IMG_TRUE; | ||
107 | } | ||
108 | |||
109 | IMG_VOID UnwrapSystemPowerChange(SYS_SPECIFIC_DATA *psSysSpecData) | ||
110 | { | ||
111 | } | ||
112 | |||
113 | static inline IMG_UINT32 scale_by_rate(IMG_UINT32 val, IMG_UINT32 rate1, IMG_UINT32 rate2) | ||
114 | { | ||
115 | if (rate1 >= rate2) | ||
116 | { | ||
117 | return val * (rate1 / rate2); | ||
118 | } | ||
119 | |||
120 | return val / (rate2 / rate1); | ||
121 | } | ||
122 | |||
123 | static inline IMG_UINT32 scale_prop_to_SGX_clock(IMG_UINT32 val, IMG_UINT32 rate) | ||
124 | { | ||
125 | return scale_by_rate(val, rate, SYS_SGX_CLOCK_SPEED); | ||
126 | } | ||
127 | |||
128 | static inline IMG_UINT32 scale_inv_prop_to_SGX_clock(IMG_UINT32 val, IMG_UINT32 rate) | ||
129 | { | ||
130 | return scale_by_rate(val, SYS_SGX_CLOCK_SPEED, rate); | ||
131 | } | ||
132 | |||
133 | IMG_VOID SysGetSGXTimingInformation(SGX_TIMING_INFORMATION *psTimingInfo) | ||
134 | { | ||
135 | IMG_UINT32 rate; | ||
136 | |||
137 | #if defined(NO_HARDWARE) | ||
138 | rate = SYS_SGX_CLOCK_SPEED; | ||
139 | #else | ||
140 | PVR_ASSERT(atomic_read(&gpsSysSpecificData->sSGXClocksEnabled) != 0); | ||
141 | |||
142 | #if defined(OMAP4_PRCM_ENABLE) | ||
143 | rate = clk_get_rate(gpsSysSpecificData->psSGX_FCK); | ||
144 | #else | ||
145 | rate = SYS_SGX_CLOCK_SPEED; | ||
146 | #endif | ||
147 | PVR_ASSERT(rate != 0); | ||
148 | #endif | ||
149 | psTimingInfo->ui32CoreClockSpeed = rate; | ||
150 | psTimingInfo->ui32HWRecoveryFreq = scale_prop_to_SGX_clock(SYS_SGX_HWRECOVERY_TIMEOUT_FREQ, rate); | ||
151 | psTimingInfo->ui32uKernelFreq = scale_prop_to_SGX_clock(SYS_SGX_PDS_TIMER_FREQ, rate); | ||
152 | #if defined(SUPPORT_ACTIVE_POWER_MANAGEMENT) | ||
153 | psTimingInfo->bEnableActivePM = IMG_TRUE; | ||
154 | #else | ||
155 | psTimingInfo->bEnableActivePM = IMG_FALSE; | ||
156 | #endif | ||
157 | psTimingInfo->ui32ActivePowManLatencyms = SYS_SGX_ACTIVE_POWER_LATENCY_MS; | ||
158 | } | ||
159 | |||
160 | PVRSRV_ERROR EnableSGXClocks(SYS_DATA *psSysData) | ||
161 | { | ||
162 | #if !defined(NO_HARDWARE) | ||
163 | SYS_SPECIFIC_DATA *psSysSpecData = (SYS_SPECIFIC_DATA *) psSysData->pvSysSpecificData; | ||
164 | #if defined(OMAP4_PRCM_ENABLE) | ||
165 | long lNewRate; | ||
166 | long lRate; | ||
167 | IMG_INT res; | ||
168 | #endif | ||
169 | |||
170 | |||
171 | if (atomic_read(&psSysSpecData->sSGXClocksEnabled) != 0) | ||
172 | { | ||
173 | return PVRSRV_OK; | ||
174 | } | ||
175 | |||
176 | PVR_DPF((PVR_DBG_MESSAGE, "EnableSGXClocks: Enabling SGX Clocks")); | ||
177 | |||
178 | #if defined(LDM_PLATFORM) && !defined(SUPPORT_DRI_DRM) | ||
179 | pm_runtime_get_sync(&gpsPVRLDMDev->dev); | ||
180 | #endif | ||
181 | |||
182 | #if defined(OMAP4_PRCM_ENABLE) | ||
183 | |||
184 | #if defined(DEBUG) | ||
185 | { | ||
186 | IMG_UINT32 rate = clk_get_rate(psSysSpecData->psMPU_CK); | ||
187 | PVR_DPF((PVR_DBG_MESSAGE, "EnableSGXClocks: CPU Clock is %dMhz", HZ_TO_MHZ(rate))); | ||
188 | } | ||
189 | #endif | ||
190 | |||
191 | res = clk_enable(psSysSpecData->psSGX_FCK); | ||
192 | if (res < 0) | ||
193 | { | ||
194 | PVR_DPF((PVR_DBG_ERROR, "EnableSGXClocks: Couldn't enable SGX functional clock (%d)", res)); | ||
195 | return PVRSRV_ERROR_UNABLE_TO_ENABLE_CLOCK; | ||
196 | } | ||
197 | |||
198 | res = clk_enable(psSysSpecData->psSGX_ICK); | ||
199 | if (res < 0) | ||
200 | { | ||
201 | PVR_DPF((PVR_DBG_ERROR, "EnableSGXClocks: Couldn't enable SGX interface clock (%d)", res)); | ||
202 | |||
203 | clk_disable(psSysSpecData->psSGX_FCK); | ||
204 | return PVRSRV_ERROR_UNABLE_TO_ENABLE_CLOCK; | ||
205 | } | ||
206 | |||
207 | lNewRate = clk_round_rate(psSysSpecData->psSGX_FCK, SYS_SGX_CLOCK_SPEED + ONE_MHZ); | ||
208 | if (lNewRate <= 0) | ||
209 | { | ||
210 | PVR_DPF((PVR_DBG_ERROR, "EnableSGXClocks: Couldn't round SGX functional clock rate")); | ||
211 | return PVRSRV_ERROR_UNABLE_TO_ROUND_CLOCK_RATE; | ||
212 | } | ||
213 | |||
214 | |||
215 | lRate = clk_get_rate(psSysSpecData->psSGX_FCK); | ||
216 | if (lRate != lNewRate) | ||
217 | { | ||
218 | res = clk_set_rate(psSysSpecData->psSGX_FCK, lNewRate); | ||
219 | if (res < 0) | ||
220 | { | ||
221 | PVR_DPF((PVR_DBG_WARNING, "EnableSGXClocks: Couldn't set SGX functional clock rate (%d)", res)); | ||
222 | } | ||
223 | } | ||
224 | |||
225 | #if defined(DEBUG) | ||
226 | { | ||
227 | IMG_UINT32 rate = clk_get_rate(psSysSpecData->psSGX_FCK); | ||
228 | PVR_DPF((PVR_DBG_MESSAGE, "EnableSGXClocks: SGX Functional Clock is %dMhz", HZ_TO_MHZ(rate))); | ||
229 | } | ||
230 | #endif | ||
231 | |||
232 | #endif | ||
233 | |||
234 | |||
235 | atomic_set(&psSysSpecData->sSGXClocksEnabled, 1); | ||
236 | |||
237 | #else | ||
238 | PVR_UNREFERENCED_PARAMETER(psSysData); | ||
239 | #endif | ||
240 | return PVRSRV_OK; | ||
241 | } | ||
242 | |||
243 | |||
244 | IMG_VOID DisableSGXClocks(SYS_DATA *psSysData) | ||
245 | { | ||
246 | #if !defined(NO_HARDWARE) | ||
247 | SYS_SPECIFIC_DATA *psSysSpecData = (SYS_SPECIFIC_DATA *) psSysData->pvSysSpecificData; | ||
248 | |||
249 | |||
250 | if (atomic_read(&psSysSpecData->sSGXClocksEnabled) == 0) | ||
251 | { | ||
252 | return; | ||
253 | } | ||
254 | |||
255 | PVR_DPF((PVR_DBG_MESSAGE, "DisableSGXClocks: Disabling SGX Clocks")); | ||
256 | |||
257 | #if defined(LDM_PLATFORM) && !defined(SUPPORT_DRI_DRM) | ||
258 | pm_runtime_put_sync(&gpsPVRLDMDev->dev); | ||
259 | #endif | ||
260 | |||
261 | #if defined(OMAP4_PRCM_ENABLE) | ||
262 | if (psSysSpecData->psSGX_ICK) | ||
263 | { | ||
264 | clk_disable(psSysSpecData->psSGX_ICK); | ||
265 | } | ||
266 | |||
267 | if (psSysSpecData->psSGX_FCK) | ||
268 | { | ||
269 | clk_disable(psSysSpecData->psSGX_FCK); | ||
270 | } | ||
271 | #endif | ||
272 | |||
273 | |||
274 | atomic_set(&psSysSpecData->sSGXClocksEnabled, 0); | ||
275 | |||
276 | #else | ||
277 | PVR_UNREFERENCED_PARAMETER(psSysData); | ||
278 | #endif | ||
279 | } | ||
280 | |||
281 | PVRSRV_ERROR EnableSystemClocks(SYS_DATA *psSysData) | ||
282 | { | ||
283 | SYS_SPECIFIC_DATA *psSysSpecData = (SYS_SPECIFIC_DATA *) psSysData->pvSysSpecificData; | ||
284 | #if (defined(OMAP4_PRCM_ENABLE) || defined(PVR_OMAP4_TIMING_PRCM)) | ||
285 | struct clk *psCLK; | ||
286 | IMG_INT res; | ||
287 | #endif | ||
288 | #if defined(PVR_OMAP4_TIMING_PRCM) | ||
289 | struct clk *sys_ck; | ||
290 | IMG_INT rate; | ||
291 | #endif | ||
292 | PVRSRV_ERROR eError; | ||
293 | |||
294 | #if (defined(DEBUG) || defined(TIMING)) && !defined(PVR_NO_OMAP_TIMER) | ||
295 | IMG_CPU_PHYADDR TimerRegPhysBase; | ||
296 | IMG_HANDLE hTimerEnable; | ||
297 | IMG_UINT32 *pui32TimerEnable; | ||
298 | #endif | ||
299 | |||
300 | PVR_TRACE(("EnableSystemClocks: Enabling System Clocks")); | ||
301 | |||
302 | if (!psSysSpecData->bSysClocksOneTimeInit) | ||
303 | { | ||
304 | mutex_init(&psSysSpecData->sPowerLock); | ||
305 | |||
306 | atomic_set(&psSysSpecData->sSGXClocksEnabled, 0); | ||
307 | |||
308 | #if defined(OMAP4_PRCM_ENABLE) | ||
309 | psCLK = clk_get(NULL, SGX_PARENT_CLOCK); | ||
310 | if (IS_ERR(psCLK)) | ||
311 | { | ||
312 | PVR_DPF((PVR_DBG_ERROR, "EnableSsystemClocks: Couldn't get Core Clock")); | ||
313 | goto ExitError; | ||
314 | } | ||
315 | psSysSpecData->psCORE_CK = psCLK; | ||
316 | |||
317 | psCLK = clk_get(NULL, "sgx_fck"); | ||
318 | if (IS_ERR(psCLK)) | ||
319 | { | ||
320 | PVR_DPF((PVR_DBG_ERROR, "EnableSsystemClocks: Couldn't get SGX Functional Clock")); | ||
321 | goto ExitError; | ||
322 | } | ||
323 | psSysSpecData->psSGX_FCK = psCLK; | ||
324 | |||
325 | psCLK = clk_get(NULL, "sgx_ick"); | ||
326 | if (IS_ERR(psCLK)) | ||
327 | { | ||
328 | PVR_DPF((PVR_DBG_ERROR, "EnableSystemClocks: Couldn't get SGX Interface Clock")); | ||
329 | goto ExitError; | ||
330 | } | ||
331 | psSysSpecData->psSGX_ICK = psCLK; | ||
332 | |||
333 | #if defined(DEBUG) | ||
334 | psCLK = clk_get(NULL, "mpu_ck"); | ||
335 | if (IS_ERR(psCLK)) | ||
336 | { | ||
337 | PVR_DPF((PVR_DBG_ERROR, "EnableSystemClocks: Couldn't get MPU Clock")); | ||
338 | goto ExitError; | ||
339 | } | ||
340 | psSysSpecData->psMPU_CK = psCLK; | ||
341 | #endif | ||
342 | res = clk_set_parent(psSysSpecData->psSGX_FCK, psSysSpecData->psCORE_CK); | ||
343 | if (res < 0) | ||
344 | { | ||
345 | PVR_DPF((PVR_DBG_ERROR, "EnableSystemClocks: Couldn't set SGX parent clock (%d)", res)); | ||
346 | goto ExitError; | ||
347 | } | ||
348 | #endif | ||
349 | |||
350 | psSysSpecData->bSysClocksOneTimeInit = IMG_TRUE; | ||
351 | } | ||
352 | |||
353 | #if (defined(DEBUG) || defined(TIMING)) && !defined(PVR_NO_OMAP_TIMER) | ||
354 | #if defined(PVR_OMAP4_TIMING_PRCM) | ||
355 | |||
356 | psCLK = clk_get(NULL, "gpt11_fck"); | ||
357 | if (IS_ERR(psCLK)) | ||
358 | { | ||
359 | PVR_DPF((PVR_DBG_ERROR, "EnableSystemClocks: Couldn't get GPTIMER11 functional clock")); | ||
360 | goto ExitUnRegisterConstraintNotifications; | ||
361 | } | ||
362 | psSysSpecData->psGPT11_FCK = psCLK; | ||
363 | |||
364 | psCLK = clk_get(NULL, "gpt11_ick"); | ||
365 | if (IS_ERR(psCLK)) | ||
366 | { | ||
367 | PVR_DPF((PVR_DBG_ERROR, "EnableSystemClocks: Couldn't get GPTIMER11 interface clock")); | ||
368 | goto ExitUnRegisterConstraintNotifications; | ||
369 | } | ||
370 | psSysSpecData->psGPT11_ICK = psCLK; | ||
371 | |||
372 | sys_ck = clk_get(NULL, "sys_clkin_ck"); | ||
373 | if (IS_ERR(sys_ck)) | ||
374 | { | ||
375 | PVR_DPF((PVR_DBG_ERROR, "EnableSystemClocks: Couldn't get System clock")); | ||
376 | goto ExitUnRegisterConstraintNotifications; | ||
377 | } | ||
378 | |||
379 | if(clk_get_parent(psSysSpecData->psGPT11_FCK) != sys_ck) | ||
380 | { | ||
381 | PVR_TRACE(("Setting GPTIMER11 parent to System Clock")); | ||
382 | res = clk_set_parent(psSysSpecData->psGPT11_FCK, sys_ck); | ||
383 | if (res < 0) | ||
384 | { | ||
385 | PVR_DPF((PVR_DBG_ERROR, "EnableSystemClocks: Couldn't set GPTIMER11 parent clock (%d)", res)); | ||
386 | goto ExitUnRegisterConstraintNotifications; | ||
387 | } | ||
388 | } | ||
389 | |||
390 | rate = clk_get_rate(psSysSpecData->psGPT11_FCK); | ||
391 | PVR_TRACE(("GPTIMER11 clock is %dMHz", HZ_TO_MHZ(rate))); | ||
392 | |||
393 | res = clk_enable(psSysSpecData->psGPT11_FCK); | ||
394 | if (res < 0) | ||
395 | { | ||
396 | PVR_DPF((PVR_DBG_ERROR, "EnableSystemClocks: Couldn't enable GPTIMER11 functional clock (%d)", res)); | ||
397 | goto ExitUnRegisterConstraintNotifications; | ||
398 | } | ||
399 | |||
400 | res = clk_enable(psSysSpecData->psGPT11_ICK); | ||
401 | if (res < 0) | ||
402 | { | ||
403 | PVR_DPF((PVR_DBG_ERROR, "EnableSystemClocks: Couldn't enable GPTIMER11 interface clock (%d)", res)); | ||
404 | goto ExitDisableGPT11FCK; | ||
405 | } | ||
406 | #endif | ||
407 | |||
408 | |||
409 | TimerRegPhysBase.uiAddr = SYS_OMAP4430_GP11TIMER_TSICR_SYS_PHYS_BASE; | ||
410 | pui32TimerEnable = OSMapPhysToLin(TimerRegPhysBase, | ||
411 | 4, | ||
412 | PVRSRV_HAP_KERNEL_ONLY|PVRSRV_HAP_UNCACHED, | ||
413 | &hTimerEnable); | ||
414 | |||
415 | if (pui32TimerEnable == IMG_NULL) | ||
416 | { | ||
417 | PVR_DPF((PVR_DBG_ERROR, "EnableSystemClocks: OSMapPhysToLin failed")); | ||
418 | goto ExitDisableGPT11ICK; | ||
419 | } | ||
420 | |||
421 | if(!(*pui32TimerEnable & 4)) | ||
422 | { | ||
423 | PVR_TRACE(("Setting GPTIMER11 mode to posted (currently is non-posted)")); | ||
424 | |||
425 | |||
426 | *pui32TimerEnable |= 4; | ||
427 | } | ||
428 | |||
429 | OSUnMapPhysToLin(pui32TimerEnable, | ||
430 | 4, | ||
431 | PVRSRV_HAP_KERNEL_ONLY|PVRSRV_HAP_UNCACHED, | ||
432 | hTimerEnable); | ||
433 | |||
434 | |||
435 | TimerRegPhysBase.uiAddr = SYS_OMAP4430_GP11TIMER_ENABLE_SYS_PHYS_BASE; | ||
436 | pui32TimerEnable = OSMapPhysToLin(TimerRegPhysBase, | ||
437 | 4, | ||
438 | PVRSRV_HAP_KERNEL_ONLY|PVRSRV_HAP_UNCACHED, | ||
439 | &hTimerEnable); | ||
440 | |||
441 | if (pui32TimerEnable == IMG_NULL) | ||
442 | { | ||
443 | PVR_DPF((PVR_DBG_ERROR, "EnableSystemClocks: OSMapPhysToLin failed")); | ||
444 | goto ExitDisableGPT11ICK; | ||
445 | } | ||
446 | |||
447 | |||
448 | *pui32TimerEnable = 3; | ||
449 | |||
450 | OSUnMapPhysToLin(pui32TimerEnable, | ||
451 | 4, | ||
452 | PVRSRV_HAP_KERNEL_ONLY|PVRSRV_HAP_UNCACHED, | ||
453 | hTimerEnable); | ||
454 | |||
455 | #endif | ||
456 | |||
457 | eError = PVRSRV_OK; | ||
458 | goto Exit; | ||
459 | |||
460 | #if (defined(DEBUG) || defined(TIMING)) && !defined(PVR_NO_OMAP_TIMER) | ||
461 | ExitDisableGPT11ICK: | ||
462 | #if defined(PVR_OMAP4_TIMING_PRCM) | ||
463 | clk_disable(psSysSpecData->psGPT11_ICK); | ||
464 | ExitDisableGPT11FCK: | ||
465 | clk_disable(psSysSpecData->psGPT11_FCK); | ||
466 | ExitUnRegisterConstraintNotifications: | ||
467 | #endif | ||
468 | #endif | ||
469 | #if defined(OMAP4_PRCM_ENABLE) | ||
470 | ExitError: | ||
471 | #endif | ||
472 | eError = PVRSRV_ERROR_DISABLE_CLOCK_FAILURE; | ||
473 | Exit: | ||
474 | return eError; | ||
475 | } | ||
476 | |||
477 | IMG_VOID DisableSystemClocks(SYS_DATA *psSysData) | ||
478 | { | ||
479 | #if (defined(DEBUG) || defined(TIMING)) && !defined(PVR_NO_OMAP_TIMER) | ||
480 | #if defined(PVR_OMAP4_TIMING_PRCM) | ||
481 | SYS_SPECIFIC_DATA *psSysSpecData = (SYS_SPECIFIC_DATA *) psSysData->pvSysSpecificData; | ||
482 | #endif | ||
483 | IMG_CPU_PHYADDR TimerRegPhysBase; | ||
484 | IMG_HANDLE hTimerDisable; | ||
485 | IMG_UINT32 *pui32TimerDisable; | ||
486 | #endif | ||
487 | |||
488 | PVR_TRACE(("DisableSystemClocks: Disabling System Clocks")); | ||
489 | |||
490 | |||
491 | DisableSGXClocks(psSysData); | ||
492 | |||
493 | #if (defined(DEBUG) || defined(TIMING)) && !defined(PVR_NO_OMAP_TIMER) | ||
494 | |||
495 | TimerRegPhysBase.uiAddr = SYS_OMAP4430_GP11TIMER_ENABLE_SYS_PHYS_BASE; | ||
496 | pui32TimerDisable = OSMapPhysToLin(TimerRegPhysBase, | ||
497 | 4, | ||
498 | PVRSRV_HAP_KERNEL_ONLY|PVRSRV_HAP_UNCACHED, | ||
499 | &hTimerDisable); | ||
500 | |||
501 | if (pui32TimerDisable == IMG_NULL) | ||
502 | { | ||
503 | PVR_DPF((PVR_DBG_ERROR, "DisableSystemClocks: OSMapPhysToLin failed")); | ||
504 | } | ||
505 | else | ||
506 | { | ||
507 | *pui32TimerDisable = 0; | ||
508 | |||
509 | OSUnMapPhysToLin(pui32TimerDisable, | ||
510 | 4, | ||
511 | PVRSRV_HAP_KERNEL_ONLY|PVRSRV_HAP_UNCACHED, | ||
512 | hTimerDisable); | ||
513 | } | ||
514 | |||
515 | #if defined(PVR_OMAP4_TIMING_PRCM) | ||
516 | clk_disable(psSysSpecData->psGPT11_ICK); | ||
517 | |||
518 | clk_disable(psSysSpecData->psGPT11_FCK); | ||
519 | #endif | ||
520 | #endif | ||
521 | } | ||
522 | |||
523 | PVRSRV_ERROR SysPMRuntimeRegister(void) | ||
524 | { | ||
525 | #if defined(LDM_PLATFORM) && !defined(SUPPORT_DRI_DRM) | ||
526 | pm_runtime_enable(&gpsPVRLDMDev->dev); | ||
527 | #endif | ||
528 | return PVRSRV_OK; | ||
529 | } | ||
530 | |||
531 | PVRSRV_ERROR SysPMRuntimeUnregister(void) | ||
532 | { | ||
533 | #if defined(LDM_PLATFORM) && !defined(SUPPORT_DRI_DRM) | ||
534 | pm_runtime_disable(&gpsPVRLDMDev->dev); | ||
535 | #endif | ||
536 | return PVRSRV_OK; | ||
537 | } | ||
diff --git a/drivers/gpu/pvr/omap4/sysutils_linux_wqueue_compat.c b/drivers/gpu/pvr/omap4/sysutils_linux_wqueue_compat.c deleted file mode 100644 index 5aa875d6895..00000000000 --- a/drivers/gpu/pvr/omap4/sysutils_linux_wqueue_compat.c +++ /dev/null | |||
@@ -1,198 +0,0 @@ | |||
1 | /********************************************************************** | ||
2 | * | ||
3 | * Copyright(c) 2008 Imagination Technologies Ltd. All rights reserved. | ||
4 | * | ||
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. | ||
8 | * | ||
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. | ||
13 | * | ||
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. | ||
17 | * | ||
18 | * The full GNU General Public License is included in this distribution in | ||
19 | * the file called "COPYING". | ||
20 | * | ||
21 | * Contact Information: | ||
22 | * Imagination Technologies Ltd. <gpl-support@imgtec.com> | ||
23 | * Home Park Estate, Kings Langley, Herts, WD4 8LZ, UK | ||
24 | * | ||
25 | ******************************************************************************/ | ||
26 | |||
27 | #include <linux/version.h> | ||
28 | #include <linux/clk.h> | ||
29 | #include <linux/err.h> | ||
30 | #include <linux/hardirq.h> | ||
31 | #include <linux/mutex.h> | ||
32 | |||
33 | #include <plat/gpu.h> | ||
34 | #include <plat/omap-pm.h> | ||
35 | #include <linux/pm_runtime.h> | ||
36 | #include <plat/omap_device.h> | ||
37 | #include "sgxdefs.h" | ||
38 | #include "services_headers.h" | ||
39 | #include "sysinfo.h" | ||
40 | #include "sgxapi_km.h" | ||
41 | #include "sysconfig.h" | ||
42 | #include "sgxinfokm.h" | ||
43 | #include "syslocal.h" | ||
44 | |||
45 | #if !defined(PVR_LINUX_USING_WORKQUEUES) | ||
46 | #error "PVR_LINUX_USING_WORKQUEUES must be defined" | ||
47 | #endif | ||
48 | |||
49 | #define ONE_MHZ 1000000 | ||
50 | #define HZ_TO_MHZ(m) ((m) / ONE_MHZ) | ||
51 | |||
52 | #define LDM_DEV struct platform_device | ||
53 | extern LDM_DEV *gpsPVRLDMDev; | ||
54 | extern struct gpu_platform_data *gpsSgxPlatformData; | ||
55 | |||
56 | |||
57 | #if !defined(NO_HARDWARE) | ||
58 | |||
59 | static struct pm_qos_request_list *qos_request; | ||
60 | |||
61 | #endif | ||
62 | |||
63 | PVRSRV_ERROR SysPowerLockWrap(SYS_DATA unref__ *psSysData) | ||
64 | { | ||
65 | return PVRSRV_OK; | ||
66 | } | ||
67 | |||
68 | IMG_VOID SysPowerLockUnwrap(SYS_DATA unref__ *psSysData) | ||
69 | { | ||
70 | } | ||
71 | |||
72 | IMG_BOOL WrapSystemPowerChange(SYS_SPECIFIC_DATA *psSysSpecData) | ||
73 | { | ||
74 | return IMG_TRUE; | ||
75 | } | ||
76 | |||
77 | IMG_VOID UnwrapSystemPowerChange(SYS_SPECIFIC_DATA *psSysSpecData) | ||
78 | { | ||
79 | } | ||
80 | |||
81 | static inline IMG_UINT32 scale_by_rate(IMG_UINT32 val, IMG_UINT32 rate1, IMG_UINT32 rate2) | ||
82 | { | ||
83 | if (rate1 >= rate2) | ||
84 | { | ||
85 | return val * (rate1 / rate2); | ||
86 | } | ||
87 | |||
88 | return val / (rate2 / rate1); | ||
89 | } | ||
90 | |||
91 | static inline IMG_UINT32 scale_prop_to_SGX_clock(IMG_UINT32 val, IMG_UINT32 rate) | ||
92 | { | ||
93 | return scale_by_rate(val, rate, SYS_SGX_CLOCK_SPEED); | ||
94 | } | ||
95 | |||
96 | static inline IMG_UINT32 scale_inv_prop_to_SGX_clock(IMG_UINT32 val, IMG_UINT32 rate) | ||
97 | { | ||
98 | return scale_by_rate(val, SYS_SGX_CLOCK_SPEED, rate); | ||
99 | } | ||
100 | |||
101 | IMG_VOID SysGetSGXTimingInformation(SGX_TIMING_INFORMATION *psTimingInfo) | ||
102 | { | ||
103 | IMG_UINT32 rate; | ||
104 | |||
105 | #if defined(NO_HARDWARE) | ||
106 | rate = SYS_SGX_CLOCK_SPEED; | ||
107 | #else | ||
108 | PVR_ASSERT(atomic_read(&gpsSysSpecificData->sSGXClocksEnabled) != 0); | ||
109 | |||
110 | rate = SYS_SGX_CLOCK_SPEED; | ||
111 | PVR_ASSERT(rate != 0); | ||
112 | #endif | ||
113 | psTimingInfo->ui32CoreClockSpeed = rate; | ||
114 | psTimingInfo->ui32HWRecoveryFreq = scale_prop_to_SGX_clock(SYS_SGX_HWRECOVERY_TIMEOUT_FREQ, rate); | ||
115 | psTimingInfo->ui32uKernelFreq = scale_prop_to_SGX_clock(SYS_SGX_PDS_TIMER_FREQ, rate); | ||
116 | #if defined(SUPPORT_ACTIVE_POWER_MANAGEMENT) | ||
117 | psTimingInfo->bEnableActivePM = IMG_TRUE; | ||
118 | #else | ||
119 | psTimingInfo->bEnableActivePM = IMG_FALSE; | ||
120 | #endif | ||
121 | psTimingInfo->ui32ActivePowManLatencyms = SYS_SGX_ACTIVE_POWER_LATENCY_MS; | ||
122 | } | ||
123 | |||
124 | PVRSRV_ERROR EnableSGXClocks(SYS_DATA *psSysData) | ||
125 | { | ||
126 | #if !defined(NO_HARDWARE) | ||
127 | SYS_SPECIFIC_DATA *psSysSpecData = (SYS_SPECIFIC_DATA *) psSysData->pvSysSpecificData; | ||
128 | |||
129 | if (atomic_read(&psSysSpecData->sSGXClocksEnabled) != 0) | ||
130 | { | ||
131 | return PVRSRV_OK; | ||
132 | } | ||
133 | PVR_DPF((PVR_DBG_MESSAGE, "EnableSGXClocks: Enabling SGX Clocks")); | ||
134 | |||
135 | pm_runtime_get_sync(&gpsPVRLDMDev->dev); | ||
136 | gpsSgxPlatformData->set_max_mpu_wakeup_lat(&qos_request, 0); | ||
137 | omap_device_set_rate(&gpsPVRLDMDev->dev, | ||
138 | &gpsPVRLDMDev->dev, SYS_SGX_CLOCK_SPEED); | ||
139 | atomic_set(&psSysSpecData->sSGXClocksEnabled, 1); | ||
140 | |||
141 | #else | ||
142 | PVR_UNREFERENCED_PARAMETER(psSysData); | ||
143 | #endif | ||
144 | return PVRSRV_OK; | ||
145 | } | ||
146 | |||
147 | |||
148 | IMG_VOID DisableSGXClocks(SYS_DATA *psSysData) | ||
149 | { | ||
150 | #if !defined(NO_HARDWARE) | ||
151 | SYS_SPECIFIC_DATA *psSysSpecData = (SYS_SPECIFIC_DATA *) psSysData->pvSysSpecificData; | ||
152 | |||
153 | |||
154 | if (atomic_read(&psSysSpecData->sSGXClocksEnabled) == 0) | ||
155 | { | ||
156 | return; | ||
157 | } | ||
158 | |||
159 | PVR_DPF((PVR_DBG_MESSAGE, "DisableSGXClocks: Disabling SGX Clocks")); | ||
160 | |||
161 | pm_runtime_put_sync(&gpsPVRLDMDev->dev); | ||
162 | gpsSgxPlatformData->set_max_mpu_wakeup_lat(&qos_request, -1); | ||
163 | omap_device_set_rate(&gpsPVRLDMDev->dev, &gpsPVRLDMDev->dev, 0); | ||
164 | atomic_set(&psSysSpecData->sSGXClocksEnabled, 0); | ||
165 | |||
166 | #else | ||
167 | PVR_UNREFERENCED_PARAMETER(psSysData); | ||
168 | #endif | ||
169 | } | ||
170 | |||
171 | PVRSRV_ERROR EnableSystemClocks(SYS_DATA *psSysData) | ||
172 | { | ||
173 | SYS_SPECIFIC_DATA *psSysSpecData = (SYS_SPECIFIC_DATA *) psSysData->pvSysSpecificData; | ||
174 | PVRSRV_ERROR eError; | ||
175 | |||
176 | PVR_TRACE(("EnableSystemClocks: Enabling System Clocks")); | ||
177 | |||
178 | if (!psSysSpecData->bSysClocksOneTimeInit) | ||
179 | { | ||
180 | mutex_init(&psSysSpecData->sPowerLock); | ||
181 | |||
182 | atomic_set(&psSysSpecData->sSGXClocksEnabled, 0); | ||
183 | psSysSpecData->bSysClocksOneTimeInit = IMG_TRUE; | ||
184 | } | ||
185 | |||
186 | eError = PVRSRV_OK; | ||
187 | |||
188 | return eError; | ||
189 | } | ||
190 | |||
191 | IMG_VOID DisableSystemClocks(SYS_DATA *psSysData) | ||
192 | { | ||
193 | |||
194 | PVR_TRACE(("DisableSystemClocks: Disabling System Clocks")); | ||
195 | |||
196 | DisableSGXClocks(psSysData); | ||
197 | |||
198 | } | ||
diff --git a/drivers/gpu/pvr/osfunc.c b/drivers/gpu/pvr/osfunc.c index ba3bf01bcf9..c72dd561410 100644 --- a/drivers/gpu/pvr/osfunc.c +++ b/drivers/gpu/pvr/osfunc.c | |||
@@ -83,9 +83,6 @@ | |||
83 | 83 | ||
84 | #define EVENT_OBJECT_TIMEOUT_MS (100) | 84 | #define EVENT_OBJECT_TIMEOUT_MS (100) |
85 | 85 | ||
86 | #define HOST_ALLOC_MEM_USING_KMALLOC ((IMG_HANDLE)0) | ||
87 | #define HOST_ALLOC_MEM_USING_VMALLOC ((IMG_HANDLE)1) | ||
88 | |||
89 | #if !defined(DEBUG_LINUX_MEMORY_ALLOCATIONS) | 86 | #if !defined(DEBUG_LINUX_MEMORY_ALLOCATIONS) |
90 | PVRSRV_ERROR OSAllocMem_Impl(IMG_UINT32 ui32Flags, IMG_UINT32 ui32Size, IMG_PVOID *ppvCpuVAddr, IMG_HANDLE *phBlockAlloc) | 87 | PVRSRV_ERROR OSAllocMem_Impl(IMG_UINT32 ui32Flags, IMG_UINT32 ui32Size, IMG_PVOID *ppvCpuVAddr, IMG_HANDLE *phBlockAlloc) |
91 | #else | 88 | #else |
@@ -93,40 +90,26 @@ PVRSRV_ERROR OSAllocMem_Impl(IMG_UINT32 ui32Flags, IMG_UINT32 ui32Size, IMG_PVOI | |||
93 | #endif | 90 | #endif |
94 | { | 91 | { |
95 | PVR_UNREFERENCED_PARAMETER(ui32Flags); | 92 | PVR_UNREFERENCED_PARAMETER(ui32Flags); |
93 | PVR_UNREFERENCED_PARAMETER(phBlockAlloc); | ||
96 | 94 | ||
97 | #if defined(DEBUG_LINUX_MEMORY_ALLOCATIONS) | 95 | #if defined(DEBUG_LINUX_MEMORY_ALLOCATIONS) |
98 | *ppvCpuVAddr = _KMallocWrapper(ui32Size, pszFilename, ui32Line); | 96 | *ppvCpuVAddr = _KMallocWrapper(ui32Size, GFP_KERNEL | __GFP_NOWARN, pszFilename, ui32Line); |
99 | #else | 97 | #else |
100 | *ppvCpuVAddr = KMallocWrapper(ui32Size); | 98 | *ppvCpuVAddr = KMallocWrapper(ui32Size, GFP_KERNEL | __GFP_NOWARN); |
101 | #endif | 99 | #endif |
102 | if(*ppvCpuVAddr) | 100 | |
103 | { | 101 | if(!*ppvCpuVAddr) |
104 | if (phBlockAlloc) | ||
105 | { | 102 | { |
106 | 103 | ||
107 | *phBlockAlloc = HOST_ALLOC_MEM_USING_KMALLOC; | ||
108 | } | ||
109 | } | ||
110 | else | ||
111 | { | ||
112 | if (!phBlockAlloc) | ||
113 | { | ||
114 | return PVRSRV_ERROR_OUT_OF_MEMORY; | ||
115 | } | ||
116 | |||
117 | |||
118 | #if defined(DEBUG_LINUX_MEMORY_ALLOCATIONS) | 104 | #if defined(DEBUG_LINUX_MEMORY_ALLOCATIONS) |
119 | *ppvCpuVAddr = _VMallocWrapper(ui32Size, PVRSRV_HAP_CACHED, pszFilename, ui32Line); | 105 | *ppvCpuVAddr = _VMallocWrapper(ui32Size, PVRSRV_HAP_CACHED, pszFilename, ui32Line); |
120 | #else | 106 | #else |
121 | *ppvCpuVAddr = VMallocWrapper(ui32Size, PVRSRV_HAP_CACHED); | 107 | *ppvCpuVAddr = VMallocWrapper(ui32Size, PVRSRV_HAP_CACHED); |
122 | #endif | 108 | #endif |
123 | if (!*ppvCpuVAddr) | 109 | if (!*ppvCpuVAddr) |
124 | { | 110 | { |
125 | return PVRSRV_ERROR_OUT_OF_MEMORY; | 111 | return PVRSRV_ERROR_OUT_OF_MEMORY; |
126 | } | 112 | } |
127 | |||
128 | |||
129 | *phBlockAlloc = HOST_ALLOC_MEM_USING_VMALLOC; | ||
130 | } | 113 | } |
131 | 114 | ||
132 | return PVRSRV_OK; | 115 | return PVRSRV_OK; |
@@ -138,22 +121,23 @@ PVRSRV_ERROR OSFreeMem_Impl(IMG_UINT32 ui32Flags, IMG_UINT32 ui32Size, IMG_PVOID | |||
138 | #else | 121 | #else |
139 | PVRSRV_ERROR OSFreeMem_Impl(IMG_UINT32 ui32Flags, IMG_UINT32 ui32Size, IMG_PVOID pvCpuVAddr, IMG_HANDLE hBlockAlloc, IMG_CHAR *pszFilename, IMG_UINT32 ui32Line) | 122 | PVRSRV_ERROR OSFreeMem_Impl(IMG_UINT32 ui32Flags, IMG_UINT32 ui32Size, IMG_PVOID pvCpuVAddr, IMG_HANDLE hBlockAlloc, IMG_CHAR *pszFilename, IMG_UINT32 ui32Line) |
140 | #endif | 123 | #endif |
141 | { | 124 | { |
142 | PVR_UNREFERENCED_PARAMETER(ui32Flags); | 125 | PVR_UNREFERENCED_PARAMETER(ui32Flags); |
143 | PVR_UNREFERENCED_PARAMETER(ui32Size); | 126 | PVR_UNREFERENCED_PARAMETER(ui32Size); |
127 | PVR_UNREFERENCED_PARAMETER(hBlockAlloc); | ||
144 | 128 | ||
145 | if (hBlockAlloc == HOST_ALLOC_MEM_USING_VMALLOC) | 129 | if (is_vmalloc_addr(pvCpuVAddr)) |
146 | { | 130 | { |
147 | #if defined(DEBUG_LINUX_MEMORY_ALLOCATIONS) | 131 | #if defined(DEBUG_LINUX_MEMORY_ALLOCATIONS) |
148 | _VFreeWrapper(pvCpuVAddr, pszFilename, ui32Line); | 132 | _VFreeWrapper(pvCpuVAddr, pszFilename, ui32Line); |
149 | #else | 133 | #else |
150 | VFreeWrapper(pvCpuVAddr); | 134 | VFreeWrapper(pvCpuVAddr); |
151 | #endif | 135 | #endif |
152 | } | 136 | } |
153 | else | 137 | else |
154 | { | 138 | { |
155 | #if defined(DEBUG_LINUX_MEMORY_ALLOCATIONS) | 139 | #if defined(DEBUG_LINUX_MEMORY_ALLOCATIONS) |
156 | _KFreeWrapper(pvCpuVAddr, pszFilename, ui32Line); | 140 | _KFreeWrapper(pvCpuVAddr, pszFilename, ui32Line); |
157 | #else | 141 | #else |
158 | KFreeWrapper(pvCpuVAddr); | 142 | KFreeWrapper(pvCpuVAddr); |
159 | #endif | 143 | #endif |
@@ -305,7 +289,7 @@ OSGetSubMemHandle(IMG_HANDLE hOSMemHandle, | |||
305 | 289 | ||
306 | eError = PVRMMapRegisterArea(psLinuxMemArea); | 290 | eError = PVRMMapRegisterArea(psLinuxMemArea); |
307 | if(eError != PVRSRV_OK) | 291 | if(eError != PVRSRV_OK) |
308 | { | 292 | { |
309 | goto failed_register_area; | 293 | goto failed_register_area; |
310 | } | 294 | } |
311 | 295 | ||
@@ -524,6 +508,25 @@ IMG_VOID OSSleepms(IMG_UINT32 ui32Timems) | |||
524 | } | 508 | } |
525 | 509 | ||
526 | 510 | ||
511 | |||
512 | IMG_HANDLE OSFuncHighResTimerCreate(IMG_VOID) | ||
513 | { | ||
514 | |||
515 | return (IMG_HANDLE) 1; | ||
516 | } | ||
517 | |||
518 | |||
519 | IMG_UINT32 OSFuncHighResTimerGetus(IMG_HANDLE hTimer) | ||
520 | { | ||
521 | return (IMG_UINT32) jiffies_to_usecs(jiffies); | ||
522 | } | ||
523 | |||
524 | |||
525 | IMG_VOID OSFuncHighResTimerDestroy(IMG_HANDLE hTimer) | ||
526 | { | ||
527 | PVR_UNREFERENCED_PARAMETER(hTimer); | ||
528 | } | ||
529 | |||
527 | IMG_UINT32 OSGetCurrentProcessIDKM(IMG_VOID) | 530 | IMG_UINT32 OSGetCurrentProcessIDKM(IMG_VOID) |
528 | { | 531 | { |
529 | if (in_interrupt()) | 532 | if (in_interrupt()) |
@@ -1002,7 +1005,7 @@ PVRSRV_ERROR OSUnlockResource (PVRSRV_RESOURCE *psResource, IMG_UINT32 ui32ID) | |||
1002 | if(psResource->ui32ID == ui32ID) | 1005 | if(psResource->ui32ID == ui32ID) |
1003 | { | 1006 | { |
1004 | psResource->ui32ID = 0; | 1007 | psResource->ui32ID = 0; |
1005 | smp_mb(); | 1008 | smp_mb(); |
1006 | *pui32Access = 0; | 1009 | *pui32Access = 0; |
1007 | } | 1010 | } |
1008 | else | 1011 | else |
@@ -1032,6 +1035,18 @@ IMG_BOOL OSIsResourceLocked (PVRSRV_RESOURCE *psResource, IMG_UINT32 ui32ID) | |||
1032 | } | 1035 | } |
1033 | 1036 | ||
1034 | 1037 | ||
1038 | #if !defined(SYS_CUSTOM_POWERLOCK_WRAP) | ||
1039 | PVRSRV_ERROR OSPowerLockWrap (IMG_VOID) | ||
1040 | { | ||
1041 | return PVRSRV_OK; | ||
1042 | } | ||
1043 | |||
1044 | IMG_VOID OSPowerLockUnwrap (IMG_VOID) | ||
1045 | { | ||
1046 | } | ||
1047 | #endif | ||
1048 | |||
1049 | |||
1035 | IMG_CPU_PHYADDR OSMapLinToCPUPhys(IMG_HANDLE hOSMemHandle, | 1050 | IMG_CPU_PHYADDR OSMapLinToCPUPhys(IMG_HANDLE hOSMemHandle, |
1036 | IMG_VOID *pvLinAddr) | 1051 | IMG_VOID *pvLinAddr) |
1037 | { | 1052 | { |
@@ -1382,9 +1397,9 @@ PVRSRV_ERROR OSBaseAllocContigMemory(IMG_UINT32 ui32Size, IMG_CPU_VIRTADDR *pvLi | |||
1382 | IMG_VOID *pvKernLinAddr; | 1397 | IMG_VOID *pvKernLinAddr; |
1383 | 1398 | ||
1384 | #if defined(DEBUG_LINUX_MEMORY_ALLOCATIONS) | 1399 | #if defined(DEBUG_LINUX_MEMORY_ALLOCATIONS) |
1385 | pvKernLinAddr = _KMallocWrapper(ui32Size, __FILE__, __LINE__); | 1400 | pvKernLinAddr = _KMallocWrapper(ui32Size, GFP_KERNEL, __FILE__, __LINE__); |
1386 | #else | 1401 | #else |
1387 | pvKernLinAddr = KMallocWrapper(ui32Size); | 1402 | pvKernLinAddr = KMallocWrapper(ui32Size, GFP_KERNEL); |
1388 | #endif | 1403 | #endif |
1389 | if (!pvKernLinAddr) | 1404 | if (!pvKernLinAddr) |
1390 | { | 1405 | { |
@@ -1952,7 +1967,11 @@ PVRSRV_ERROR OSDisableTimer (IMG_HANDLE hTimer) | |||
1952 | } | 1967 | } |
1953 | 1968 | ||
1954 | 1969 | ||
1955 | PVRSRV_ERROR OSEventObjectCreate(const IMG_CHAR *pszName, PVRSRV_EVENTOBJECT *psEventObject) | 1970 | #if defined (SUPPORT_SID_INTERFACE) |
1971 | PVRSRV_ERROR OSEventObjectCreateKM(const IMG_CHAR *pszName, PVRSRV_EVENTOBJECT_KM *psEventObject) | ||
1972 | #else | ||
1973 | PVRSRV_ERROR OSEventObjectCreateKM(const IMG_CHAR *pszName, PVRSRV_EVENTOBJECT *psEventObject) | ||
1974 | #endif | ||
1956 | { | 1975 | { |
1957 | 1976 | ||
1958 | PVRSRV_ERROR eError = PVRSRV_OK; | 1977 | PVRSRV_ERROR eError = PVRSRV_OK; |
@@ -1968,7 +1987,11 @@ PVRSRV_ERROR OSEventObjectCreate(const IMG_CHAR *pszName, PVRSRV_EVENTOBJECT *ps | |||
1968 | { | 1987 | { |
1969 | 1988 | ||
1970 | static IMG_UINT16 ui16NameIndex = 0; | 1989 | static IMG_UINT16 ui16NameIndex = 0; |
1990 | #if defined (SUPPORT_SID_INTERFACE) | ||
1991 | snprintf(psEventObject->szName, EVENTOBJNAME_MAXLENGTH, "PVRSRV_EVENTOBJECT_KM_%d", ui16NameIndex++); | ||
1992 | #else | ||
1971 | snprintf(psEventObject->szName, EVENTOBJNAME_MAXLENGTH, "PVRSRV_EVENTOBJECT_%d", ui16NameIndex++); | 1993 | snprintf(psEventObject->szName, EVENTOBJNAME_MAXLENGTH, "PVRSRV_EVENTOBJECT_%d", ui16NameIndex++); |
1994 | #endif | ||
1972 | } | 1995 | } |
1973 | 1996 | ||
1974 | if(LinuxEventObjectListCreate(&psEventObject->hOSEventKM) != PVRSRV_OK) | 1997 | if(LinuxEventObjectListCreate(&psEventObject->hOSEventKM) != PVRSRV_OK) |
@@ -1979,7 +2002,7 @@ PVRSRV_ERROR OSEventObjectCreate(const IMG_CHAR *pszName, PVRSRV_EVENTOBJECT *ps | |||
1979 | } | 2002 | } |
1980 | else | 2003 | else |
1981 | { | 2004 | { |
1982 | PVR_DPF((PVR_DBG_ERROR, "OSEventObjectCreate: psEventObject is not a valid pointer")); | 2005 | PVR_DPF((PVR_DBG_ERROR, "OSEventObjectCreateKM: psEventObject is not a valid pointer")); |
1983 | eError = PVRSRV_ERROR_UNABLE_TO_CREATE_EVENT; | 2006 | eError = PVRSRV_ERROR_UNABLE_TO_CREATE_EVENT; |
1984 | } | 2007 | } |
1985 | 2008 | ||
@@ -1988,7 +2011,11 @@ PVRSRV_ERROR OSEventObjectCreate(const IMG_CHAR *pszName, PVRSRV_EVENTOBJECT *ps | |||
1988 | } | 2011 | } |
1989 | 2012 | ||
1990 | 2013 | ||
1991 | PVRSRV_ERROR OSEventObjectDestroy(PVRSRV_EVENTOBJECT *psEventObject) | 2014 | #if defined (SUPPORT_SID_INTERFACE) |
2015 | PVRSRV_ERROR OSEventObjectDestroyKM(PVRSRV_EVENTOBJECT_KM *psEventObject) | ||
2016 | #else | ||
2017 | PVRSRV_ERROR OSEventObjectDestroyKM(PVRSRV_EVENTOBJECT *psEventObject) | ||
2018 | #endif | ||
1992 | { | 2019 | { |
1993 | PVRSRV_ERROR eError = PVRSRV_OK; | 2020 | PVRSRV_ERROR eError = PVRSRV_OK; |
1994 | 2021 | ||
@@ -2000,20 +2027,20 @@ PVRSRV_ERROR OSEventObjectDestroy(PVRSRV_EVENTOBJECT *psEventObject) | |||
2000 | } | 2027 | } |
2001 | else | 2028 | else |
2002 | { | 2029 | { |
2003 | PVR_DPF((PVR_DBG_ERROR, "OSEventObjectDestroy: hOSEventKM is not a valid pointer")); | 2030 | PVR_DPF((PVR_DBG_ERROR, "OSEventObjectDestroyKM: hOSEventKM is not a valid pointer")); |
2004 | eError = PVRSRV_ERROR_INVALID_PARAMS; | 2031 | eError = PVRSRV_ERROR_INVALID_PARAMS; |
2005 | } | 2032 | } |
2006 | } | 2033 | } |
2007 | else | 2034 | else |
2008 | { | 2035 | { |
2009 | PVR_DPF((PVR_DBG_ERROR, "OSEventObjectDestroy: psEventObject is not a valid pointer")); | 2036 | PVR_DPF((PVR_DBG_ERROR, "OSEventObjectDestroyKM: psEventObject is not a valid pointer")); |
2010 | eError = PVRSRV_ERROR_INVALID_PARAMS; | 2037 | eError = PVRSRV_ERROR_INVALID_PARAMS; |
2011 | } | 2038 | } |
2012 | 2039 | ||
2013 | return eError; | 2040 | return eError; |
2014 | } | 2041 | } |
2015 | 2042 | ||
2016 | PVRSRV_ERROR OSEventObjectWait(IMG_HANDLE hOSEventKM) | 2043 | PVRSRV_ERROR OSEventObjectWaitKM(IMG_HANDLE hOSEventKM) |
2017 | { | 2044 | { |
2018 | PVRSRV_ERROR eError; | 2045 | PVRSRV_ERROR eError; |
2019 | 2046 | ||
@@ -2023,14 +2050,18 @@ PVRSRV_ERROR OSEventObjectWait(IMG_HANDLE hOSEventKM) | |||
2023 | } | 2050 | } |
2024 | else | 2051 | else |
2025 | { | 2052 | { |
2026 | PVR_DPF((PVR_DBG_ERROR, "OSEventObjectWait: hOSEventKM is not a valid handle")); | 2053 | PVR_DPF((PVR_DBG_ERROR, "OSEventObjectWaitKM: hOSEventKM is not a valid handle")); |
2027 | eError = PVRSRV_ERROR_INVALID_PARAMS; | 2054 | eError = PVRSRV_ERROR_INVALID_PARAMS; |
2028 | } | 2055 | } |
2029 | 2056 | ||
2030 | return eError; | 2057 | return eError; |
2031 | } | 2058 | } |
2032 | 2059 | ||
2033 | PVRSRV_ERROR OSEventObjectOpen(PVRSRV_EVENTOBJECT *psEventObject, | 2060 | #if defined (SUPPORT_SID_INTERFACE) |
2061 | PVRSRV_ERROR OSEventObjectOpenKM(PVRSRV_EVENTOBJECT_KM *psEventObject, | ||
2062 | #else | ||
2063 | PVRSRV_ERROR OSEventObjectOpenKM(PVRSRV_EVENTOBJECT *psEventObject, | ||
2064 | #endif | ||
2034 | IMG_HANDLE *phOSEvent) | 2065 | IMG_HANDLE *phOSEvent) |
2035 | { | 2066 | { |
2036 | PVRSRV_ERROR eError = PVRSRV_OK; | 2067 | PVRSRV_ERROR eError = PVRSRV_OK; |
@@ -2046,14 +2077,18 @@ PVRSRV_ERROR OSEventObjectOpen(PVRSRV_EVENTOBJECT *psEventObject, | |||
2046 | } | 2077 | } |
2047 | else | 2078 | else |
2048 | { | 2079 | { |
2049 | PVR_DPF((PVR_DBG_ERROR, "OSEventObjectCreate: psEventObject is not a valid pointer")); | 2080 | PVR_DPF((PVR_DBG_ERROR, "OSEventObjectCreateKM: psEventObject is not a valid pointer")); |
2050 | eError = PVRSRV_ERROR_INVALID_PARAMS; | 2081 | eError = PVRSRV_ERROR_INVALID_PARAMS; |
2051 | } | 2082 | } |
2052 | 2083 | ||
2053 | return eError; | 2084 | return eError; |
2054 | } | 2085 | } |
2055 | 2086 | ||
2056 | PVRSRV_ERROR OSEventObjectClose(PVRSRV_EVENTOBJECT *psEventObject, | 2087 | #if defined (SUPPORT_SID_INTERFACE) |
2088 | PVRSRV_ERROR OSEventObjectCloseKM(PVRSRV_EVENTOBJECT_KM *psEventObject, | ||
2089 | #else | ||
2090 | PVRSRV_ERROR OSEventObjectCloseKM(PVRSRV_EVENTOBJECT *psEventObject, | ||
2091 | #endif | ||
2057 | IMG_HANDLE hOSEventKM) | 2092 | IMG_HANDLE hOSEventKM) |
2058 | { | 2093 | { |
2059 | PVRSRV_ERROR eError = PVRSRV_OK; | 2094 | PVRSRV_ERROR eError = PVRSRV_OK; |
@@ -2069,7 +2104,7 @@ PVRSRV_ERROR OSEventObjectClose(PVRSRV_EVENTOBJECT *psEventObject, | |||
2069 | } | 2104 | } |
2070 | else | 2105 | else |
2071 | { | 2106 | { |
2072 | PVR_DPF((PVR_DBG_ERROR, "OSEventObjectDestroy: psEventObject is not a valid pointer")); | 2107 | PVR_DPF((PVR_DBG_ERROR, "OSEventObjectDestroyKM: psEventObject is not a valid pointer")); |
2073 | eError = PVRSRV_ERROR_INVALID_PARAMS; | 2108 | eError = PVRSRV_ERROR_INVALID_PARAMS; |
2074 | } | 2109 | } |
2075 | 2110 | ||
@@ -2077,7 +2112,7 @@ PVRSRV_ERROR OSEventObjectClose(PVRSRV_EVENTOBJECT *psEventObject, | |||
2077 | 2112 | ||
2078 | } | 2113 | } |
2079 | 2114 | ||
2080 | PVRSRV_ERROR OSEventObjectSignal(IMG_HANDLE hOSEventKM) | 2115 | PVRSRV_ERROR OSEventObjectSignalKM(IMG_HANDLE hOSEventKM) |
2081 | { | 2116 | { |
2082 | PVRSRV_ERROR eError; | 2117 | PVRSRV_ERROR eError; |
2083 | 2118 | ||
@@ -2087,7 +2122,7 @@ PVRSRV_ERROR OSEventObjectSignal(IMG_HANDLE hOSEventKM) | |||
2087 | } | 2122 | } |
2088 | else | 2123 | else |
2089 | { | 2124 | { |
2090 | PVR_DPF((PVR_DBG_ERROR, "OSEventObjectSignal: hOSEventKM is not a valid handle")); | 2125 | PVR_DPF((PVR_DBG_ERROR, "OSEventObjectSignalKM: hOSEventKM is not a valid handle")); |
2091 | eError = PVRSRV_ERROR_INVALID_PARAMS; | 2126 | eError = PVRSRV_ERROR_INVALID_PARAMS; |
2092 | } | 2127 | } |
2093 | 2128 | ||
@@ -2684,7 +2719,7 @@ IMG_BOOL CheckExecuteCacheOp(IMG_HANDLE hOSMemHandle, | |||
2684 | psLinuxMemArea = psLinuxMemArea->uData.sSubAlloc.psParentLinuxMemArea; | 2719 | psLinuxMemArea = psLinuxMemArea->uData.sSubAlloc.psParentLinuxMemArea; |
2685 | } | 2720 | } |
2686 | 2721 | ||
2687 | 2722 | ||
2688 | PVR_ASSERT(psLinuxMemArea->eAreaType != LINUX_MEM_AREA_SUB_ALLOC); | 2723 | PVR_ASSERT(psLinuxMemArea->eAreaType != LINUX_MEM_AREA_SUB_ALLOC); |
2689 | 2724 | ||
2690 | switch(psLinuxMemArea->eAreaType) | 2725 | switch(psLinuxMemArea->eAreaType) |
@@ -2695,7 +2730,7 @@ IMG_BOOL CheckExecuteCacheOp(IMG_HANDLE hOSMemHandle, | |||
2695 | { | 2730 | { |
2696 | pvMinVAddr = psLinuxMemArea->uData.sVmalloc.pvVmallocAddress + ui32AreaOffset; | 2731 | pvMinVAddr = psLinuxMemArea->uData.sVmalloc.pvVmallocAddress + ui32AreaOffset; |
2697 | 2732 | ||
2698 | 2733 | ||
2699 | if(pvRangeAddrStart < pvMinVAddr) | 2734 | if(pvRangeAddrStart < pvMinVAddr) |
2700 | goto err_blocked; | 2735 | goto err_blocked; |
2701 | 2736 | ||
@@ -2703,8 +2738,8 @@ IMG_BOOL CheckExecuteCacheOp(IMG_HANDLE hOSMemHandle, | |||
2703 | } | 2738 | } |
2704 | else | 2739 | else |
2705 | { | 2740 | { |
2706 | 2741 | ||
2707 | 2742 | ||
2708 | 2743 | ||
2709 | pvMinVAddr = FindMMapBaseVAddr(psMMapOffsetStructList, | 2744 | pvMinVAddr = FindMMapBaseVAddr(psMMapOffsetStructList, |
2710 | pvRangeAddrStart, ui32Length); | 2745 | pvRangeAddrStart, ui32Length); |
@@ -2714,21 +2749,21 @@ IMG_BOOL CheckExecuteCacheOp(IMG_HANDLE hOSMemHandle, | |||
2714 | pfnInnerCacheOp(pvRangeAddrStart, pvRangeAddrStart + ui32Length); | 2749 | pfnInnerCacheOp(pvRangeAddrStart, pvRangeAddrStart + ui32Length); |
2715 | 2750 | ||
2716 | #if defined(CONFIG_OUTER_CACHE) | 2751 | #if defined(CONFIG_OUTER_CACHE) |
2717 | 2752 | ||
2718 | pvRangeAddrStart = psLinuxMemArea->uData.sVmalloc.pvVmallocAddress + | 2753 | pvRangeAddrStart = psLinuxMemArea->uData.sVmalloc.pvVmallocAddress + |
2719 | (ui32AreaOffset & PAGE_MASK) + (pvRangeAddrStart - pvMinVAddr); | 2754 | (ui32AreaOffset & PAGE_MASK) + (pvRangeAddrStart - pvMinVAddr); |
2720 | } | 2755 | } |
2721 | 2756 | ||
2722 | pfnMemAreaToPhys = VMallocAreaToPhys; | 2757 | pfnMemAreaToPhys = VMallocAreaToPhys; |
2723 | #else | 2758 | #else |
2724 | } | 2759 | } |
2725 | #endif | 2760 | #endif |
2726 | break; | 2761 | break; |
2727 | } | 2762 | } |
2728 | 2763 | ||
2729 | case LINUX_MEM_AREA_EXTERNAL_KV: | 2764 | case LINUX_MEM_AREA_EXTERNAL_KV: |
2730 | { | 2765 | { |
2731 | 2766 | ||
2732 | if (psLinuxMemArea->uData.sExternalKV.bPhysContig == IMG_TRUE) | 2767 | if (psLinuxMemArea->uData.sExternalKV.bPhysContig == IMG_TRUE) |
2733 | { | 2768 | { |
2734 | PVR_DPF((PVR_DBG_WARNING, "%s: Attempt to flush contiguous external memory", __func__)); | 2769 | PVR_DPF((PVR_DBG_WARNING, "%s: Attempt to flush contiguous external memory", __func__)); |
@@ -2736,7 +2771,7 @@ IMG_BOOL CheckExecuteCacheOp(IMG_HANDLE hOSMemHandle, | |||
2736 | goto err_blocked; | 2771 | goto err_blocked; |
2737 | } | 2772 | } |
2738 | 2773 | ||
2739 | 2774 | ||
2740 | if (psLinuxMemArea->uData.sExternalKV.pvExternalKV != IMG_NULL) | 2775 | if (psLinuxMemArea->uData.sExternalKV.pvExternalKV != IMG_NULL) |
2741 | { | 2776 | { |
2742 | PVR_DPF((PVR_DBG_WARNING, "%s: Attempt to flush external memory with a kernel virtual address", __func__)); | 2777 | PVR_DPF((PVR_DBG_WARNING, "%s: Attempt to flush external memory with a kernel virtual address", __func__)); |
@@ -2865,7 +2900,7 @@ IMG_BOOL OSFlushCPUCacheRangeKM(IMG_HANDLE hOSMemHandle, | |||
2865 | IMG_VOID *pvRangeAddrStart, | 2900 | IMG_VOID *pvRangeAddrStart, |
2866 | IMG_UINT32 ui32Length) | 2901 | IMG_UINT32 ui32Length) |
2867 | { | 2902 | { |
2868 | 2903 | ||
2869 | return CheckExecuteCacheOp(hOSMemHandle, pvRangeAddrStart, ui32Length, | 2904 | return CheckExecuteCacheOp(hOSMemHandle, pvRangeAddrStart, ui32Length, |
2870 | x86_flush_cache_range, IMG_NULL); | 2905 | x86_flush_cache_range, IMG_NULL); |
2871 | } | 2906 | } |
@@ -2874,7 +2909,7 @@ IMG_BOOL OSCleanCPUCacheRangeKM(IMG_HANDLE hOSMemHandle, | |||
2874 | IMG_VOID *pvRangeAddrStart, | 2909 | IMG_VOID *pvRangeAddrStart, |
2875 | IMG_UINT32 ui32Length) | 2910 | IMG_UINT32 ui32Length) |
2876 | { | 2911 | { |
2877 | 2912 | ||
2878 | return CheckExecuteCacheOp(hOSMemHandle, pvRangeAddrStart, ui32Length, | 2913 | return CheckExecuteCacheOp(hOSMemHandle, pvRangeAddrStart, ui32Length, |
2879 | x86_flush_cache_range, IMG_NULL); | 2914 | x86_flush_cache_range, IMG_NULL); |
2880 | } | 2915 | } |
@@ -2883,12 +2918,12 @@ IMG_BOOL OSInvalidateCPUCacheRangeKM(IMG_HANDLE hOSMemHandle, | |||
2883 | IMG_VOID *pvRangeAddrStart, | 2918 | IMG_VOID *pvRangeAddrStart, |
2884 | IMG_UINT32 ui32Length) | 2919 | IMG_UINT32 ui32Length) |
2885 | { | 2920 | { |
2886 | 2921 | ||
2887 | return CheckExecuteCacheOp(hOSMemHandle, pvRangeAddrStart, ui32Length, | 2922 | return CheckExecuteCacheOp(hOSMemHandle, pvRangeAddrStart, ui32Length, |
2888 | x86_flush_cache_range, IMG_NULL); | 2923 | x86_flush_cache_range, IMG_NULL); |
2889 | } | 2924 | } |
2890 | 2925 | ||
2891 | #else | 2926 | #else |
2892 | 2927 | ||
2893 | #if defined(__arm__) | 2928 | #if defined(__arm__) |
2894 | 2929 | ||
@@ -2900,7 +2935,7 @@ static void per_cpu_cache_flush(void *arg) | |||
2900 | 2935 | ||
2901 | IMG_VOID OSCleanCPUCacheKM(IMG_VOID) | 2936 | IMG_VOID OSCleanCPUCacheKM(IMG_VOID) |
2902 | { | 2937 | { |
2903 | 2938 | ||
2904 | ON_EACH_CPU(per_cpu_cache_flush, NULL, 1); | 2939 | ON_EACH_CPU(per_cpu_cache_flush, NULL, 1); |
2905 | #if defined(CONFIG_OUTER_CACHE) && !defined(PVR_NO_FULL_CACHE_OPS) | 2940 | #if defined(CONFIG_OUTER_CACHE) && !defined(PVR_NO_FULL_CACHE_OPS) |
2906 | outer_clean_all(); | 2941 | outer_clean_all(); |
@@ -2939,18 +2974,18 @@ IMG_BOOL OSInvalidateCPUCacheRangeKM(IMG_HANDLE hOSMemHandle, | |||
2939 | dmac_inv_range, outer_inv_range); | 2974 | dmac_inv_range, outer_inv_range); |
2940 | } | 2975 | } |
2941 | 2976 | ||
2942 | #else | 2977 | #else |
2943 | 2978 | ||
2944 | #if defined(__mips__) | 2979 | #if defined(__mips__) |
2945 | IMG_VOID OSCleanCPUCacheKM(IMG_VOID) | 2980 | IMG_VOID OSCleanCPUCacheKM(IMG_VOID) |
2946 | { | 2981 | { |
2947 | 2982 | ||
2948 | dma_cache_wback(0, 0x100000); | 2983 | dma_cache_wback(0, 0x100000); |
2949 | } | 2984 | } |
2950 | 2985 | ||
2951 | IMG_VOID OSFlushCPUCacheKM(IMG_VOID) | 2986 | IMG_VOID OSFlushCPUCacheKM(IMG_VOID) |
2952 | { | 2987 | { |
2953 | 2988 | ||
2954 | dma_cache_wback_inv(0, 0x100000); | 2989 | dma_cache_wback_inv(0, 0x100000); |
2955 | } | 2990 | } |
2956 | 2991 | ||
@@ -2978,15 +3013,15 @@ IMG_BOOL OSInvalidateCPUCacheRangeKM(IMG_HANDLE hOSMemHandle, | |||
2978 | return IMG_TRUE; | 3013 | return IMG_TRUE; |
2979 | } | 3014 | } |
2980 | 3015 | ||
2981 | #else | 3016 | #else |
2982 | 3017 | ||
2983 | #error "Implement CPU cache flush/clean/invalidate primitives for this CPU!" | 3018 | #error "Implement CPU cache flush/clean/invalidate primitives for this CPU!" |
2984 | 3019 | ||
2985 | #endif | 3020 | #endif |
2986 | 3021 | ||
2987 | #endif | 3022 | #endif |
2988 | 3023 | ||
2989 | #endif | 3024 | #endif |
2990 | 3025 | ||
2991 | PVRSRV_ERROR PVROSFuncInit(IMG_VOID) | 3026 | PVRSRV_ERROR PVROSFuncInit(IMG_VOID) |
2992 | { | 3027 | { |
@@ -2995,7 +3030,7 @@ PVRSRV_ERROR PVROSFuncInit(IMG_VOID) | |||
2995 | psTimerWorkQueue = create_workqueue("pvr_timer"); | 3030 | psTimerWorkQueue = create_workqueue("pvr_timer"); |
2996 | if (psTimerWorkQueue == NULL) | 3031 | if (psTimerWorkQueue == NULL) |
2997 | { | 3032 | { |
2998 | PVR_DPF((PVR_DBG_ERROR, "%s: couldn't create timer workqueue", __FUNCTION__)); | 3033 | PVR_DPF((PVR_DBG_ERROR, "%s: couldn't create timer workqueue", __FUNCTION__)); |
2999 | return PVRSRV_ERROR_UNABLE_TO_CREATE_THREAD; | 3034 | return PVRSRV_ERROR_UNABLE_TO_CREATE_THREAD; |
3000 | 3035 | ||
3001 | } | 3036 | } |
diff --git a/drivers/gpu/pvr/osfunc.h b/drivers/gpu/pvr/osfunc.h index dc209a04fac..6fdb795facd 100644 --- a/drivers/gpu/pvr/osfunc.h +++ b/drivers/gpu/pvr/osfunc.h | |||
@@ -406,15 +406,27 @@ IMG_CHAR* OSStringCopy(IMG_CHAR *pszDest, const IMG_CHAR *pszSrc); | |||
406 | IMG_INT32 OSSNPrintf(IMG_CHAR *pStr, IMG_SIZE_T ui32Size, const IMG_CHAR *pszFormat, ...) IMG_FORMAT_PRINTF(3, 4); | 406 | IMG_INT32 OSSNPrintf(IMG_CHAR *pStr, IMG_SIZE_T ui32Size, const IMG_CHAR *pszFormat, ...) IMG_FORMAT_PRINTF(3, 4); |
407 | #define OSStringLength(pszString) strlen(pszString) | 407 | #define OSStringLength(pszString) strlen(pszString) |
408 | 408 | ||
409 | PVRSRV_ERROR OSEventObjectCreate(const IMG_CHAR *pszName, | 409 | #if defined (SUPPORT_SID_INTERFACE) |
410 | PVRSRV_ERROR OSEventObjectCreateKM(const IMG_CHAR *pszName, | ||
411 | PVRSRV_EVENTOBJECT_KM *psEventObject); | ||
412 | PVRSRV_ERROR OSEventObjectDestroyKM(PVRSRV_EVENTOBJECT_KM *psEventObject); | ||
413 | PVRSRV_ERROR OSEventObjectSignalKM(IMG_HANDLE hOSEventKM); | ||
414 | PVRSRV_ERROR OSEventObjectWaitKM(IMG_HANDLE hOSEventKM); | ||
415 | PVRSRV_ERROR OSEventObjectOpenKM(PVRSRV_EVENTOBJECT_KM *psEventObject, | ||
416 | IMG_HANDLE *phOSEvent); | ||
417 | PVRSRV_ERROR OSEventObjectCloseKM(PVRSRV_EVENTOBJECT_KM *psEventObject, | ||
418 | IMG_HANDLE hOSEventKM); | ||
419 | #else | ||
420 | PVRSRV_ERROR OSEventObjectCreateKM(const IMG_CHAR *pszName, | ||
410 | PVRSRV_EVENTOBJECT *psEventObject); | 421 | PVRSRV_EVENTOBJECT *psEventObject); |
411 | PVRSRV_ERROR OSEventObjectDestroy(PVRSRV_EVENTOBJECT *psEventObject); | 422 | PVRSRV_ERROR OSEventObjectDestroyKM(PVRSRV_EVENTOBJECT *psEventObject); |
412 | PVRSRV_ERROR OSEventObjectSignal(IMG_HANDLE hOSEventKM); | 423 | PVRSRV_ERROR OSEventObjectSignalKM(IMG_HANDLE hOSEventKM); |
413 | PVRSRV_ERROR OSEventObjectWait(IMG_HANDLE hOSEventKM); | 424 | PVRSRV_ERROR OSEventObjectWaitKM(IMG_HANDLE hOSEventKM); |
414 | PVRSRV_ERROR OSEventObjectOpen(PVRSRV_EVENTOBJECT *psEventObject, | 425 | PVRSRV_ERROR OSEventObjectOpenKM(PVRSRV_EVENTOBJECT *psEventObject, |
415 | IMG_HANDLE *phOSEvent); | 426 | IMG_HANDLE *phOSEvent); |
416 | PVRSRV_ERROR OSEventObjectClose(PVRSRV_EVENTOBJECT *psEventObject, | 427 | PVRSRV_ERROR OSEventObjectCloseKM(PVRSRV_EVENTOBJECT *psEventObject, |
417 | IMG_HANDLE hOSEventKM); | 428 | IMG_HANDLE hOSEventKM); |
429 | #endif | ||
418 | 430 | ||
419 | 431 | ||
420 | PVRSRV_ERROR OSBaseAllocContigMemory(IMG_SIZE_T ui32Size, IMG_CPU_VIRTADDR *pLinAddr, IMG_CPU_PHYADDR *pPhysAddr); | 432 | PVRSRV_ERROR OSBaseAllocContigMemory(IMG_SIZE_T ui32Size, IMG_CPU_VIRTADDR *pLinAddr, IMG_CPU_PHYADDR *pPhysAddr); |
@@ -445,14 +457,24 @@ PVRSRV_ERROR OSCreateResource(PVRSRV_RESOURCE *psResource); | |||
445 | PVRSRV_ERROR OSDestroyResource(PVRSRV_RESOURCE *psResource); | 457 | PVRSRV_ERROR OSDestroyResource(PVRSRV_RESOURCE *psResource); |
446 | IMG_VOID OSBreakResourceLock(PVRSRV_RESOURCE *psResource, IMG_UINT32 ui32ID); | 458 | IMG_VOID OSBreakResourceLock(PVRSRV_RESOURCE *psResource, IMG_UINT32 ui32ID); |
447 | 459 | ||
460 | #if defined(SYS_CUSTOM_POWERLOCK_WRAP) | ||
461 | #define OSPowerLockWrap SysPowerLockWrap | ||
462 | #define OSPowerLockUnwrap SysPowerLockUnwrap | ||
463 | #else | ||
464 | PVRSRV_ERROR OSPowerLockWrap(IMG_VOID); | ||
448 | 465 | ||
466 | IMG_VOID OSPowerLockUnwrap(IMG_VOID); | ||
467 | #endif | ||
449 | 468 | ||
469 | |||
450 | IMG_VOID OSWaitus(IMG_UINT32 ui32Timeus); | 470 | IMG_VOID OSWaitus(IMG_UINT32 ui32Timeus); |
451 | 471 | ||
452 | 472 | ||
453 | IMG_VOID OSSleepms(IMG_UINT32 ui32Timems); | 473 | IMG_VOID OSSleepms(IMG_UINT32 ui32Timems); |
454 | 474 | ||
455 | 475 | IMG_HANDLE OSFuncHighResTimerCreate(IMG_VOID); | |
476 | IMG_UINT32 OSFuncHighResTimerGetus(IMG_HANDLE hTimer); | ||
477 | IMG_VOID OSFuncHighResTimerDestroy(IMG_HANDLE hTimer); | ||
456 | IMG_VOID OSReleaseThreadQuanta(IMG_VOID); | 478 | IMG_VOID OSReleaseThreadQuanta(IMG_VOID); |
457 | IMG_UINT32 OSPCIReadDword(IMG_UINT32 ui32Bus, IMG_UINT32 ui32Dev, IMG_UINT32 ui32Func, IMG_UINT32 ui32Reg); | 479 | IMG_UINT32 OSPCIReadDword(IMG_UINT32 ui32Bus, IMG_UINT32 ui32Dev, IMG_UINT32 ui32Func, IMG_UINT32 ui32Reg); |
458 | IMG_VOID OSPCIWriteDword(IMG_UINT32 ui32Bus, IMG_UINT32 ui32Dev, IMG_UINT32 ui32Func, IMG_UINT32 ui32Reg, IMG_UINT32 ui32Value); | 480 | IMG_VOID OSPCIWriteDword(IMG_UINT32 ui32Bus, IMG_UINT32 ui32Dev, IMG_UINT32 ui32Func, IMG_UINT32 ui32Reg, IMG_UINT32 ui32Value); |
@@ -476,7 +498,7 @@ typedef enum _HOST_PCI_INIT_FLAGS_ | |||
476 | { | 498 | { |
477 | HOST_PCI_INIT_FLAG_BUS_MASTER = 0x00000001, | 499 | HOST_PCI_INIT_FLAG_BUS_MASTER = 0x00000001, |
478 | HOST_PCI_INIT_FLAG_MSI = 0x00000002, | 500 | HOST_PCI_INIT_FLAG_MSI = 0x00000002, |
479 | HOST_PCI_INIT_FLAG_FORCE_I32 = 0x7fffffff | 501 | HOST_PCI_INIT_FLAG_FORCE_I32 = 0x7fffffff |
480 | } HOST_PCI_INIT_FLAGS; | 502 | } HOST_PCI_INIT_FLAGS; |
481 | 503 | ||
482 | struct _PVRSRV_PCI_DEV_OPAQUE_STRUCT_; | 504 | struct _PVRSRV_PCI_DEV_OPAQUE_STRUCT_; |
diff --git a/drivers/gpu/pvr/pdump_common.c b/drivers/gpu/pvr/pdump_common.c index c2c0dada01f..10f68171361 100644 --- a/drivers/gpu/pvr/pdump_common.c +++ b/drivers/gpu/pvr/pdump_common.c | |||
@@ -28,9 +28,6 @@ | |||
28 | #include <stdarg.h> | 28 | #include <stdarg.h> |
29 | 29 | ||
30 | #include "services_headers.h" | 30 | #include "services_headers.h" |
31 | #if defined(SUPPORT_SGX) | ||
32 | #include "sgxdefs.h" | ||
33 | #endif | ||
34 | #include "perproc.h" | 31 | #include "perproc.h" |
35 | 32 | ||
36 | #include "pdump_km.h" | 33 | #include "pdump_km.h" |
@@ -46,8 +43,6 @@ | |||
46 | #define PDUMP_DBG(a) | 43 | #define PDUMP_DBG(a) |
47 | #endif | 44 | #endif |
48 | 45 | ||
49 | #define PDUMP_DATAMASTER_PIXEL (1) | ||
50 | #define PDUMP_DATAMASTER_EDM (3) | ||
51 | 46 | ||
52 | #define PTR_PLUS(t, p, x) ((t)(((IMG_CHAR *)(p)) + (x))) | 47 | #define PTR_PLUS(t, p, x) ((t)(((IMG_CHAR *)(p)) + (x))) |
53 | #define VPTR_PLUS(p, x) PTR_PLUS(IMG_VOID *, p, x) | 48 | #define VPTR_PLUS(p, x) PTR_PLUS(IMG_VOID *, p, x) |
@@ -68,6 +63,7 @@ static INLINE | |||
68 | IMG_BOOL _PDumpIsPersistent(IMG_VOID) | 63 | IMG_BOOL _PDumpIsPersistent(IMG_VOID) |
69 | { | 64 | { |
70 | PVRSRV_PER_PROCESS_DATA* psPerProc = PVRSRVFindPerProcessData(); | 65 | PVRSRV_PER_PROCESS_DATA* psPerProc = PVRSRVFindPerProcessData(); |
66 | |||
71 | if(psPerProc == IMG_NULL) | 67 | if(psPerProc == IMG_NULL) |
72 | { | 68 | { |
73 | 69 | ||
@@ -83,12 +79,12 @@ IMG_BOOL _PDumpIsProcessActive(IMG_VOID) | |||
83 | PVRSRV_PER_PROCESS_DATA* psPerProc = PVRSRVFindPerProcessData(); | 79 | PVRSRV_PER_PROCESS_DATA* psPerProc = PVRSRVFindPerProcessData(); |
84 | if(psPerProc == IMG_NULL) | 80 | if(psPerProc == IMG_NULL) |
85 | { | 81 | { |
86 | 82 | ||
87 | return IMG_TRUE; | 83 | return IMG_TRUE; |
88 | } | 84 | } |
89 | return psPerProc->bPDumpActive; | 85 | return psPerProc->bPDumpActive; |
90 | } | 86 | } |
91 | #endif | 87 | #endif |
92 | 88 | ||
93 | #if defined(PDUMP_DEBUG_OUTFILES) | 89 | #if defined(PDUMP_DEBUG_OUTFILES) |
94 | static INLINE | 90 | static INLINE |
@@ -102,7 +98,7 @@ IMG_UINT32 _PDumpGetPID(IMG_VOID) | |||
102 | } | 98 | } |
103 | return psPerProc->ui32PID; | 99 | return psPerProc->ui32PID; |
104 | } | 100 | } |
105 | #endif | 101 | #endif |
106 | 102 | ||
107 | static IMG_VOID *GetTempBuffer(IMG_VOID) | 103 | static IMG_VOID *GetTempBuffer(IMG_VOID) |
108 | { | 104 | { |
@@ -192,7 +188,6 @@ PVRSRV_ERROR PDumpSetFrameKM(IMG_UINT32 ui32Frame) | |||
192 | #endif | 188 | #endif |
193 | } | 189 | } |
194 | 190 | ||
195 | |||
196 | PVRSRV_ERROR PDumpRegWithFlagsKM(IMG_CHAR *pszPDumpRegName, | 191 | PVRSRV_ERROR PDumpRegWithFlagsKM(IMG_CHAR *pszPDumpRegName, |
197 | IMG_UINT32 ui32Reg, | 192 | IMG_UINT32 ui32Reg, |
198 | IMG_UINT32 ui32Data, | 193 | IMG_UINT32 ui32Data, |
@@ -224,7 +219,8 @@ PVRSRV_ERROR PDumpRegPolWithFlagsKM(IMG_CHAR *pszPDumpRegName, | |||
224 | IMG_UINT32 ui32RegAddr, | 219 | IMG_UINT32 ui32RegAddr, |
225 | IMG_UINT32 ui32RegValue, | 220 | IMG_UINT32 ui32RegValue, |
226 | IMG_UINT32 ui32Mask, | 221 | IMG_UINT32 ui32Mask, |
227 | IMG_UINT32 ui32Flags) | 222 | IMG_UINT32 ui32Flags, |
223 | PDUMP_POLL_OPERATOR eOperator) | ||
228 | { | 224 | { |
229 | 225 | ||
230 | #define POLL_DELAY 1000U | 226 | #define POLL_DELAY 1000U |
@@ -260,7 +256,7 @@ PVRSRV_ERROR PDumpRegPolWithFlagsKM(IMG_CHAR *pszPDumpRegName, | |||
260 | 256 | ||
261 | eErr = PDumpOSBufprintf(hScript, ui32MaxLen, "POL :%s:0x%08X 0x%08X 0x%08X %d %u %d\r\n", | 257 | eErr = PDumpOSBufprintf(hScript, ui32MaxLen, "POL :%s:0x%08X 0x%08X 0x%08X %d %u %d\r\n", |
262 | pszPDumpRegName, ui32RegAddr, ui32RegValue, | 258 | pszPDumpRegName, ui32RegAddr, ui32RegValue, |
263 | ui32Mask, 0, ui32PollCount, POLL_DELAY); | 259 | ui32Mask, eOperator, ui32PollCount, POLL_DELAY); |
264 | if(eErr != PVRSRV_OK) | 260 | if(eErr != PVRSRV_OK) |
265 | { | 261 | { |
266 | return eErr; | 262 | return eErr; |
@@ -271,9 +267,9 @@ PVRSRV_ERROR PDumpRegPolWithFlagsKM(IMG_CHAR *pszPDumpRegName, | |||
271 | } | 267 | } |
272 | 268 | ||
273 | 269 | ||
274 | PVRSRV_ERROR PDumpRegPolKM(IMG_CHAR *pszPDumpRegName, IMG_UINT32 ui32RegAddr, IMG_UINT32 ui32RegValue, IMG_UINT32 ui32Mask) | 270 | PVRSRV_ERROR PDumpRegPolKM(IMG_CHAR *pszPDumpRegName, IMG_UINT32 ui32RegAddr, IMG_UINT32 ui32RegValue, IMG_UINT32 ui32Mask, PDUMP_POLL_OPERATOR eOperator) |
275 | { | 271 | { |
276 | return PDumpRegPolWithFlagsKM(pszPDumpRegName, ui32RegAddr, ui32RegValue, ui32Mask, PDUMP_FLAGS_CONTINUOUS); | 272 | return PDumpRegPolWithFlagsKM(pszPDumpRegName, ui32RegAddr, ui32RegValue, ui32Mask, PDUMP_FLAGS_CONTINUOUS, eOperator); |
277 | } | 273 | } |
278 | 274 | ||
279 | PVRSRV_ERROR PDumpMallocPages (PVRSRV_DEVICE_IDENTIFIER *psDevID, | 275 | PVRSRV_ERROR PDumpMallocPages (PVRSRV_DEVICE_IDENTIFIER *psDevID, |
@@ -295,7 +291,7 @@ PVRSRV_ERROR PDumpMallocPages (PVRSRV_DEVICE_IDENTIFIER *psDevID, | |||
295 | 291 | ||
296 | PDUMP_GET_SCRIPT_STRING(); | 292 | PDUMP_GET_SCRIPT_STRING(); |
297 | #if defined(SUPPORT_PDUMP_MULTI_PROCESS) | 293 | #if defined(SUPPORT_PDUMP_MULTI_PROCESS) |
298 | 294 | ||
299 | ui32Flags |= ( _PDumpIsPersistent() || bShared ) ? PDUMP_FLAGS_PERSISTENT : 0; | 295 | ui32Flags |= ( _PDumpIsPersistent() || bShared ) ? PDUMP_FLAGS_PERSISTENT : 0; |
300 | #else | 296 | #else |
301 | PVR_UNREFERENCED_PARAMETER(bShared); | 297 | PVR_UNREFERENCED_PARAMETER(bShared); |
@@ -366,13 +362,14 @@ PVRSRV_ERROR PDumpMallocPages (PVRSRV_DEVICE_IDENTIFIER *psDevID, | |||
366 | return PVRSRV_OK; | 362 | return PVRSRV_OK; |
367 | } | 363 | } |
368 | 364 | ||
365 | |||
369 | PVRSRV_ERROR PDumpMallocPageTable (PVRSRV_DEVICE_IDENTIFIER *psDevId, | 366 | PVRSRV_ERROR PDumpMallocPageTable (PVRSRV_DEVICE_IDENTIFIER *psDevId, |
370 | IMG_HANDLE hOSMemHandle, | 367 | IMG_HANDLE hOSMemHandle, |
371 | IMG_UINT32 ui32Offset, | 368 | IMG_UINT32 ui32Offset, |
372 | IMG_CPU_VIRTADDR pvLinAddr, | 369 | IMG_CPU_VIRTADDR pvLinAddr, |
373 | IMG_UINT32 ui32PTSize, | 370 | IMG_UINT32 ui32PTSize, |
374 | IMG_UINT32 ui32Flags, | 371 | IMG_UINT32 ui32Flags, |
375 | IMG_HANDLE hUniqueTag) | 372 | IMG_HANDLE hUniqueTag) |
376 | { | 373 | { |
377 | PVRSRV_ERROR eErr; | 374 | PVRSRV_ERROR eErr; |
378 | IMG_DEV_PHYADDR sDevPAddr; | 375 | IMG_DEV_PHYADDR sDevPAddr; |
@@ -382,7 +379,7 @@ PVRSRV_ERROR PDumpMallocPageTable (PVRSRV_DEVICE_IDENTIFIER *psDevId, | |||
382 | PVR_ASSERT(((IMG_UINTPTR_T)pvLinAddr & (ui32PTSize - 1)) == 0); | 379 | PVR_ASSERT(((IMG_UINTPTR_T)pvLinAddr & (ui32PTSize - 1)) == 0); |
383 | ui32Flags |= PDUMP_FLAGS_CONTINUOUS; | 380 | ui32Flags |= PDUMP_FLAGS_CONTINUOUS; |
384 | ui32Flags |= ( _PDumpIsPersistent() ) ? PDUMP_FLAGS_PERSISTENT : 0; | 381 | ui32Flags |= ( _PDumpIsPersistent() ) ? PDUMP_FLAGS_PERSISTENT : 0; |
385 | 382 | ||
386 | 383 | ||
387 | 384 | ||
388 | eErr = PDumpOSBufprintf(hScript, | 385 | eErr = PDumpOSBufprintf(hScript, |
@@ -458,10 +455,10 @@ PVRSRV_ERROR PDumpFreePages (BM_HEAP *psBMHeap, | |||
458 | } | 455 | } |
459 | 456 | ||
460 | #if defined(SUPPORT_PDUMP_MULTI_PROCESS) | 457 | #if defined(SUPPORT_PDUMP_MULTI_PROCESS) |
461 | 458 | ||
462 | { | 459 | { |
463 | PVRSRV_DEVICE_NODE *psDeviceNode = psBMHeap->pBMContext->psDeviceNode; | 460 | PVRSRV_DEVICE_NODE *psDeviceNode = psBMHeap->pBMContext->psDeviceNode; |
464 | 461 | ||
465 | if( psDeviceNode->pfnMMUIsHeapShared(psBMHeap->pMMUHeap) ) | 462 | if( psDeviceNode->pfnMMUIsHeapShared(psBMHeap->pMMUHeap) ) |
466 | { | 463 | { |
467 | ui32Flags |= PDUMP_FLAGS_PERSISTENT; | 464 | ui32Flags |= PDUMP_FLAGS_PERSISTENT; |
@@ -478,15 +475,16 @@ PVRSRV_ERROR PDumpFreePages (BM_HEAP *psBMHeap, | |||
478 | if (!bInterleaved || (ui32PageCounter % 2) == 0) | 475 | if (!bInterleaved || (ui32PageCounter % 2) == 0) |
479 | { | 476 | { |
480 | sDevPAddr = psDeviceNode->pfnMMUGetPhysPageAddr(psBMHeap->pMMUHeap, sDevVAddr); | 477 | sDevPAddr = psDeviceNode->pfnMMUGetPhysPageAddr(psBMHeap->pMMUHeap, sDevVAddr); |
478 | |||
479 | PVR_ASSERT(sDevPAddr.uiAddr != 0) | ||
480 | |||
481 | eErr = PDumpOSBufprintf(hScript, ui32MaxLen, "FREE :%s:PA_%08X%08X\r\n", | ||
482 | psDeviceNode->sDevId.pszPDumpDevName, (IMG_UINT32)(IMG_UINTPTR_T)hUniqueTag, sDevPAddr.uiAddr); | ||
483 | if(eErr != PVRSRV_OK) | ||
481 | { | 484 | { |
482 | eErr = PDumpOSBufprintf(hScript, ui32MaxLen, "FREE :%s:PA_%08X%08X\r\n", | 485 | return eErr; |
483 | psDeviceNode->sDevId.pszPDumpDevName, (IMG_UINT32)(IMG_UINTPTR_T)hUniqueTag, sDevPAddr.uiAddr); | ||
484 | if(eErr != PVRSRV_OK) | ||
485 | { | ||
486 | return eErr; | ||
487 | } | ||
488 | PDumpOSWriteString2(hScript, ui32Flags); | ||
489 | } | 486 | } |
487 | PDumpOSWriteString2(hScript, ui32Flags); | ||
490 | } | 488 | } |
491 | else | 489 | else |
492 | { | 490 | { |
@@ -652,6 +650,12 @@ PVRSRV_ERROR PDumpMemPolKM(PVRSRV_KERNEL_MEM_INFO *psMemInfo, | |||
652 | PDUMP_MMU_ATTRIB *psMMUAttrib; | 650 | PDUMP_MMU_ATTRIB *psMMUAttrib; |
653 | 651 | ||
654 | PDUMP_GET_SCRIPT_STRING(); | 652 | PDUMP_GET_SCRIPT_STRING(); |
653 | |||
654 | if (PDumpOSIsSuspended()) | ||
655 | { | ||
656 | return PVRSRV_OK; | ||
657 | } | ||
658 | |||
655 | if ( _PDumpIsPersistent() ) | 659 | if ( _PDumpIsPersistent() ) |
656 | { | 660 | { |
657 | 661 | ||
@@ -659,7 +663,7 @@ PVRSRV_ERROR PDumpMemPolKM(PVRSRV_KERNEL_MEM_INFO *psMemInfo, | |||
659 | } | 663 | } |
660 | 664 | ||
661 | 665 | ||
662 | PVR_ASSERT((ui32Offset + sizeof(IMG_UINT32)) <= psMemInfo->ui32AllocSize); | 666 | PVR_ASSERT((ui32Offset + sizeof(IMG_UINT32)) <= psMemInfo->uAllocSize); |
663 | 667 | ||
664 | psMMUAttrib = ((BM_BUF*)psMemInfo->sMemBlk.hBuffer)->pMapping->pBMHeap->psMMUAttrib; | 668 | psMMUAttrib = ((BM_BUF*)psMemInfo->sMemBlk.hBuffer)->pMapping->pBMHeap->psMMUAttrib; |
665 | 669 | ||
@@ -750,29 +754,29 @@ PVRSRV_ERROR PDumpMemKM(IMG_PVOID pvAltLinAddr, | |||
750 | 754 | ||
751 | PDUMP_GET_SCRIPT_AND_FILE_STRING(); | 755 | PDUMP_GET_SCRIPT_AND_FILE_STRING(); |
752 | 756 | ||
757 | |||
758 | if (ui32Bytes == 0 || PDumpOSIsSuspended()) | ||
759 | { | ||
760 | return PVRSRV_OK; | ||
761 | } | ||
762 | |||
753 | psMMUAttrib = ((BM_BUF*)psMemInfo->sMemBlk.hBuffer)->pMapping->pBMHeap->psMMUAttrib; | 763 | psMMUAttrib = ((BM_BUF*)psMemInfo->sMemBlk.hBuffer)->pMapping->pBMHeap->psMMUAttrib; |
754 | 764 | ||
755 | 765 | ||
756 | 766 | ||
757 | PVR_ASSERT((ui32Offset + ui32Bytes) <= psMemInfo->ui32AllocSize); | 767 | PVR_ASSERT((ui32Offset + ui32Bytes) <= psMemInfo->uAllocSize); |
758 | 768 | ||
759 | if (!PDumpOSJTInitialised()) | 769 | if (!PDumpOSJTInitialised()) |
760 | { | 770 | { |
761 | return PVRSRV_ERROR_PDUMP_NOT_AVAILABLE; | 771 | return PVRSRV_ERROR_PDUMP_NOT_AVAILABLE; |
762 | } | 772 | } |
763 | 773 | ||
764 | |||
765 | if (ui32Bytes == 0 || PDumpOSIsSuspended()) | ||
766 | { | ||
767 | return PVRSRV_OK; | ||
768 | } | ||
769 | |||
770 | #if defined(SUPPORT_PDUMP_MULTI_PROCESS) | 774 | #if defined(SUPPORT_PDUMP_MULTI_PROCESS) |
771 | 775 | ||
772 | { | 776 | { |
773 | BM_HEAP *pHeap = ((BM_BUF*)psMemInfo->sMemBlk.hBuffer)->pMapping->pBMHeap; | 777 | BM_HEAP *pHeap = ((BM_BUF*)psMemInfo->sMemBlk.hBuffer)->pMapping->pBMHeap; |
774 | PVRSRV_DEVICE_NODE *psDeviceNode = pHeap->pBMContext->psDeviceNode; | 778 | PVRSRV_DEVICE_NODE *psDeviceNode = pHeap->pBMContext->psDeviceNode; |
775 | 779 | ||
776 | if( psDeviceNode->pfnMMUIsHeapShared(pHeap->pMMUHeap) ) | 780 | if( psDeviceNode->pfnMMUIsHeapShared(pHeap->pMMUHeap) ) |
777 | { | 781 | { |
778 | ui32Flags |= PDUMP_FLAGS_PERSISTENT; | 782 | ui32Flags |= PDUMP_FLAGS_PERSISTENT; |
@@ -936,7 +940,7 @@ PVRSRV_ERROR PDumpMemPDEntriesKM(PDUMP_MMU_ATTRIB *psMMUAttrib, | |||
936 | 940 | ||
937 | 941 | ||
938 | sMMUAttrib = *psMMUAttrib; | 942 | sMMUAttrib = *psMMUAttrib; |
939 | sMMUAttrib.ui32PTSize = HOST_PAGESIZE(); | 943 | sMMUAttrib.ui32PTSize = (IMG_UINT32)HOST_PAGESIZE(); |
940 | return PDumpMemPTEntriesKM( &sMMUAttrib, | 944 | return PDumpMemPTEntriesKM( &sMMUAttrib, |
941 | hOSMemHandle, | 945 | hOSMemHandle, |
942 | pvLinAddr, | 946 | pvLinAddr, |
@@ -970,6 +974,11 @@ PVRSRV_ERROR PDumpMemPTEntriesKM(PDUMP_MMU_ATTRIB *psMMUAttrib, | |||
970 | PDUMP_GET_SCRIPT_AND_FILE_STRING(); | 974 | PDUMP_GET_SCRIPT_AND_FILE_STRING(); |
971 | ui32Flags |= ( _PDumpIsPersistent() ) ? PDUMP_FLAGS_PERSISTENT : 0; | 975 | ui32Flags |= ( _PDumpIsPersistent() ) ? PDUMP_FLAGS_PERSISTENT : 0; |
972 | 976 | ||
977 | if (PDumpOSIsSuspended()) | ||
978 | { | ||
979 | return PVRSRV_OK; | ||
980 | } | ||
981 | |||
973 | if (!PDumpOSJTInitialised()) | 982 | if (!PDumpOSJTInitialised()) |
974 | { | 983 | { |
975 | return PVRSRV_ERROR_PDUMP_NOT_AVAILABLE; | 984 | return PVRSRV_ERROR_PDUMP_NOT_AVAILABLE; |
@@ -980,11 +989,6 @@ PVRSRV_ERROR PDumpMemPTEntriesKM(PDUMP_MMU_ATTRIB *psMMUAttrib, | |||
980 | return PVRSRV_ERROR_INVALID_PARAMS; | 989 | return PVRSRV_ERROR_INVALID_PARAMS; |
981 | } | 990 | } |
982 | 991 | ||
983 | if (PDumpOSIsSuspended()) | ||
984 | { | ||
985 | return PVRSRV_OK; | ||
986 | } | ||
987 | |||
988 | PDumpOSCheckForSplitting(PDumpOSGetStream(PDUMP_STREAM_PARAM2), ui32Bytes, ui32Flags); | 992 | PDumpOSCheckForSplitting(PDumpOSGetStream(PDUMP_STREAM_PARAM2), ui32Bytes, ui32Flags); |
989 | 993 | ||
990 | ui32ParamOutPos = PDumpOSGetStreamOffset(PDUMP_STREAM_PARAM2); | 994 | ui32ParamOutPos = PDumpOSGetStreamOffset(PDUMP_STREAM_PARAM2); |
@@ -1079,7 +1083,7 @@ PVRSRV_ERROR PDumpMemPTEntriesKM(PDUMP_MMU_ATTRIB *psMMUAttrib, | |||
1079 | { | 1083 | { |
1080 | for (ui32Offset = 0; ui32Offset < ui32BlockBytes; ui32Offset += sizeof(IMG_UINT32)) | 1084 | for (ui32Offset = 0; ui32Offset < ui32BlockBytes; ui32Offset += sizeof(IMG_UINT32)) |
1081 | { | 1085 | { |
1082 | IMG_UINT32 ui32PTE = *((IMG_UINT32 *) (pui8LinAddr + ui32Offset)); | 1086 | IMG_UINT32 ui32PTE = *((IMG_UINT32 *)(IMG_UINTPTR_T)(pui8LinAddr + ui32Offset)); |
1083 | 1087 | ||
1084 | if ((ui32PTE & psMMUAttrib->ui32PDEMask) != 0) | 1088 | if ((ui32PTE & psMMUAttrib->ui32PDEMask) != 0) |
1085 | { | 1089 | { |
@@ -1148,7 +1152,9 @@ PVRSRV_ERROR PDumpMemPTEntriesKM(PDUMP_MMU_ATTRIB *psMMUAttrib, | |||
1148 | } | 1152 | } |
1149 | else | 1153 | else |
1150 | { | 1154 | { |
1155 | #if !defined(FIX_HW_BRN_31620) | ||
1151 | PVR_ASSERT((ui32PTE & psMMUAttrib->ui32PTEValid) == 0UL); | 1156 | PVR_ASSERT((ui32PTE & psMMUAttrib->ui32PTEValid) == 0UL); |
1157 | #endif | ||
1152 | eErr = PDumpOSBufprintf(hScript, | 1158 | eErr = PDumpOSBufprintf(hScript, |
1153 | ui32MaxLenScript, | 1159 | ui32MaxLenScript, |
1154 | "WRW :%s:PA_%08X%08X:0x%08X 0x%08X%08X\r\n", | 1160 | "WRW :%s:PA_%08X%08X:0x%08X 0x%08X%08X\r\n", |
@@ -1380,20 +1386,38 @@ PVRSRV_ERROR PDumpCommentKM(IMG_CHAR *pszComment, IMG_UINT32 ui32Flags) | |||
1380 | ui32LenCommentPrefix = PDumpOSBuflen(pszCommentPrefix, sizeof(pszCommentPrefix)); | 1386 | ui32LenCommentPrefix = PDumpOSBuflen(pszCommentPrefix, sizeof(pszCommentPrefix)); |
1381 | 1387 | ||
1382 | 1388 | ||
1389 | |||
1383 | if (!PDumpOSWriteString(PDumpOSGetStream(PDUMP_STREAM_SCRIPT2), | 1390 | if (!PDumpOSWriteString(PDumpOSGetStream(PDUMP_STREAM_SCRIPT2), |
1384 | (IMG_UINT8*)pszCommentPrefix, | 1391 | (IMG_UINT8*)pszCommentPrefix, |
1385 | ui32LenCommentPrefix, | 1392 | ui32LenCommentPrefix, |
1386 | ui32Flags)) | 1393 | ui32Flags)) |
1387 | { | 1394 | { |
1395 | #if defined(PDUMP_DEBUG_OUTFILES) | ||
1388 | if(ui32Flags & PDUMP_FLAGS_CONTINUOUS) | 1396 | if(ui32Flags & PDUMP_FLAGS_CONTINUOUS) |
1389 | { | 1397 | { |
1398 | PVR_DPF((PVR_DBG_WARNING, "Incomplete comment, %d: %s (continuous set)", | ||
1399 | g_ui32EveryLineCounter, pszComment)); | ||
1390 | return PVRSRV_ERROR_PDUMP_BUFFER_FULL; | 1400 | return PVRSRV_ERROR_PDUMP_BUFFER_FULL; |
1391 | } | 1401 | } |
1402 | else if(ui32Flags & PDUMP_FLAGS_PERSISTENT) | ||
1403 | { | ||
1404 | PVR_DPF((PVR_DBG_WARNING, "Incomplete comment, %d: %s (persistent set)", | ||
1405 | g_ui32EveryLineCounter, pszComment)); | ||
1406 | return PVRSRV_ERROR_CMD_NOT_PROCESSED; | ||
1407 | } | ||
1392 | else | 1408 | else |
1393 | { | 1409 | { |
1410 | PVR_DPF((PVR_DBG_WARNING, "Incomplete comment, %d: %s", | ||
1411 | g_ui32EveryLineCounter, pszComment)); | ||
1394 | return PVRSRV_ERROR_CMD_NOT_PROCESSED; | 1412 | return PVRSRV_ERROR_CMD_NOT_PROCESSED; |
1395 | } | 1413 | } |
1414 | #else | ||
1415 | PVR_DPF((PVR_DBG_WARNING, "Incomplete comment, %s", | ||
1416 | pszComment)); | ||
1417 | return PVRSRV_ERROR_CMD_NOT_PROCESSED; | ||
1418 | #endif | ||
1396 | } | 1419 | } |
1420 | |||
1397 | #if defined(PDUMP_DEBUG_OUTFILES) | 1421 | #if defined(PDUMP_DEBUG_OUTFILES) |
1398 | 1422 | ||
1399 | eErr = PDumpOSSprintf(pszTemp, 256, "%d-%d %s", | 1423 | eErr = PDumpOSSprintf(pszTemp, 256, "%d-%d %s", |
@@ -1501,7 +1525,7 @@ PVRSRV_ERROR PDumpBitmapKM( PVRSRV_DEVICE_NODE *psDeviceNode, | |||
1501 | IMG_UINT32 ui32PDumpFlags) | 1525 | IMG_UINT32 ui32PDumpFlags) |
1502 | { | 1526 | { |
1503 | PVRSRV_DEVICE_IDENTIFIER *psDevId = &psDeviceNode->sDevId; | 1527 | PVRSRV_DEVICE_IDENTIFIER *psDevId = &psDeviceNode->sDevId; |
1504 | 1528 | IMG_UINT32 ui32MMUContextID; | |
1505 | PVRSRV_ERROR eErr; | 1529 | PVRSRV_ERROR eErr; |
1506 | PDUMP_GET_SCRIPT_STRING(); | 1530 | PDUMP_GET_SCRIPT_STRING(); |
1507 | 1531 | ||
@@ -1513,34 +1537,15 @@ PVRSRV_ERROR PDumpBitmapKM( PVRSRV_DEVICE_NODE *psDeviceNode, | |||
1513 | PDumpCommentWithFlags(ui32PDumpFlags, "\r\n-- Dump bitmap of render\r\n"); | 1537 | PDumpCommentWithFlags(ui32PDumpFlags, "\r\n-- Dump bitmap of render\r\n"); |
1514 | 1538 | ||
1515 | 1539 | ||
1516 | 1540 | ui32MMUContextID = psDeviceNode->pfnMMUGetContextID( hDevMemContext ); | |
1517 | 1541 | ||
1518 | PVR_UNREFERENCED_PARAMETER(hDevMemContext); | ||
1519 | |||
1520 | #if defined(SGX_FEATURE_MULTIPLE_MEM_CONTEXTS) | ||
1521 | |||
1522 | eErr = PDumpOSBufprintf(hScript, | 1542 | eErr = PDumpOSBufprintf(hScript, |
1523 | ui32MaxLen, | 1543 | ui32MaxLen, |
1524 | "SII %s %s.bin :%s:v%x:0x%08X 0x%08X 0x%08X 0x%08X 0x%08X 0x%08X 0x%08X 0x%08X\r\n", | 1544 | "SII %s %s.bin :%s:v%x:0x%08X 0x%08X 0x%08X 0x%08X 0x%08X 0x%08X 0x%08X 0x%08X\r\n", |
1525 | pszFileName, | 1545 | pszFileName, |
1526 | pszFileName, | 1546 | pszFileName, |
1527 | psDevId->pszPDumpDevName, | 1547 | psDevId->pszPDumpDevName, |
1528 | PDUMP_DATAMASTER_PIXEL, | 1548 | ui32MMUContextID, |
1529 | sDevBaseAddr.uiAddr, | ||
1530 | ui32Size, | ||
1531 | ui32FileOffset, | ||
1532 | ePixelFormat, | ||
1533 | ui32Width, | ||
1534 | ui32Height, | ||
1535 | ui32StrideInBytes, | ||
1536 | eMemFormat); | ||
1537 | #else | ||
1538 | eErr = PDumpOSBufprintf(hScript, | ||
1539 | ui32MaxLen, | ||
1540 | "SII %s %s.bin :%s:v:0x%08X 0x%08X 0x%08X 0x%08X 0x%08X 0x%08X 0x%08X 0x%08X\r\n", | ||
1541 | pszFileName, | ||
1542 | pszFileName, | ||
1543 | psDevId->pszPDumpDevName, | ||
1544 | sDevBaseAddr.uiAddr, | 1549 | sDevBaseAddr.uiAddr, |
1545 | ui32Size, | 1550 | ui32Size, |
1546 | ui32FileOffset, | 1551 | ui32FileOffset, |
@@ -1549,7 +1554,6 @@ PVRSRV_ERROR PDumpBitmapKM( PVRSRV_DEVICE_NODE *psDeviceNode, | |||
1549 | ui32Height, | 1554 | ui32Height, |
1550 | ui32StrideInBytes, | 1555 | ui32StrideInBytes, |
1551 | eMemFormat); | 1556 | eMemFormat); |
1552 | #endif | ||
1553 | if(eErr != PVRSRV_OK) | 1557 | if(eErr != PVRSRV_OK) |
1554 | { | 1558 | { |
1555 | return eErr; | 1559 | return eErr; |
@@ -1762,26 +1766,17 @@ PVRSRV_ERROR PDumpSaveMemKM (PVRSRV_DEVICE_IDENTIFIER *psDevId, | |||
1762 | IMG_UINT32 ui32FileOffset, | 1766 | IMG_UINT32 ui32FileOffset, |
1763 | IMG_DEV_VIRTADDR sDevBaseAddr, | 1767 | IMG_DEV_VIRTADDR sDevBaseAddr, |
1764 | IMG_UINT32 ui32Size, | 1768 | IMG_UINT32 ui32Size, |
1765 | IMG_UINT32 ui32DataMaster, | 1769 | IMG_UINT32 ui32MMUContextID, |
1766 | IMG_UINT32 ui32PDumpFlags) | 1770 | IMG_UINT32 ui32PDumpFlags) |
1767 | { | 1771 | { |
1768 | PVRSRV_ERROR eErr; | 1772 | PVRSRV_ERROR eErr; |
1769 | PDUMP_GET_SCRIPT_STRING(); | 1773 | PDUMP_GET_SCRIPT_STRING(); |
1770 | 1774 | ||
1771 | #if !defined(SGX_FEATURE_MULTIPLE_MEM_CONTEXTS) | ||
1772 | PVR_UNREFERENCED_PARAMETER(ui32DataMaster); | ||
1773 | #endif | ||
1774 | |||
1775 | eErr = PDumpOSBufprintf(hScript, | 1775 | eErr = PDumpOSBufprintf(hScript, |
1776 | ui32MaxLen, | 1776 | ui32MaxLen, |
1777 | #if defined(SGX_FEATURE_MULTIPLE_MEM_CONTEXTS) | ||
1778 | "SAB :%s:v%x:0x%08X 0x%08X 0x%08X %s.bin\r\n", | 1777 | "SAB :%s:v%x:0x%08X 0x%08X 0x%08X %s.bin\r\n", |
1779 | psDevId->pszPDumpDevName, | 1778 | psDevId->pszPDumpDevName, |
1780 | ui32DataMaster, | 1779 | ui32MMUContextID, |
1781 | #else | ||
1782 | "SAB :%s:v:0x%08X 0x%08X 0x%08X %s.bin\r\n", | ||
1783 | psDevId->pszPDumpDevName, | ||
1784 | #endif | ||
1785 | sDevBaseAddr.uiAddr, | 1780 | sDevBaseAddr.uiAddr, |
1786 | ui32Size, | 1781 | ui32Size, |
1787 | ui32FileOffset, | 1782 | ui32FileOffset, |
@@ -1820,6 +1815,7 @@ PVRSRV_ERROR PDumpSignatureBuffer (PVRSRV_DEVICE_IDENTIFIER *psDevId, | |||
1820 | IMG_UINT32 ui32FileOffset, | 1815 | IMG_UINT32 ui32FileOffset, |
1821 | IMG_DEV_VIRTADDR sDevBaseAddr, | 1816 | IMG_DEV_VIRTADDR sDevBaseAddr, |
1822 | IMG_UINT32 ui32Size, | 1817 | IMG_UINT32 ui32Size, |
1818 | IMG_UINT32 ui32MMUContextID, | ||
1823 | IMG_UINT32 ui32PDumpFlags) | 1819 | IMG_UINT32 ui32PDumpFlags) |
1824 | { | 1820 | { |
1825 | PDumpCommentWithFlags(ui32PDumpFlags, "\r\n-- Dump microkernel %s signature Buffer\r\n", | 1821 | PDumpCommentWithFlags(ui32PDumpFlags, "\r\n-- Dump microkernel %s signature Buffer\r\n", |
@@ -1831,7 +1827,7 @@ PVRSRV_ERROR PDumpSignatureBuffer (PVRSRV_DEVICE_IDENTIFIER *psDevId, | |||
1831 | PDumpCommentWithFlags(ui32PDumpFlags, "\tSignature sample values (number of samples * number of signatures)\r\n"); | 1827 | PDumpCommentWithFlags(ui32PDumpFlags, "\tSignature sample values (number of samples * number of signatures)\r\n"); |
1832 | PDumpCommentWithFlags(ui32PDumpFlags, "Note: If buffer is full, last sample is final state after test completed\r\n"); | 1828 | PDumpCommentWithFlags(ui32PDumpFlags, "Note: If buffer is full, last sample is final state after test completed\r\n"); |
1833 | return PDumpSaveMemKM(psDevId, pszFileName, ui32FileOffset, sDevBaseAddr, ui32Size, | 1829 | return PDumpSaveMemKM(psDevId, pszFileName, ui32FileOffset, sDevBaseAddr, ui32Size, |
1834 | PDUMP_DATAMASTER_EDM, ui32PDumpFlags); | 1830 | ui32MMUContextID, ui32PDumpFlags); |
1835 | } | 1831 | } |
1836 | 1832 | ||
1837 | 1833 | ||
@@ -1840,11 +1836,12 @@ PVRSRV_ERROR PDumpHWPerfCBKM (PVRSRV_DEVICE_IDENTIFIER *psDevId, | |||
1840 | IMG_UINT32 ui32FileOffset, | 1836 | IMG_UINT32 ui32FileOffset, |
1841 | IMG_DEV_VIRTADDR sDevBaseAddr, | 1837 | IMG_DEV_VIRTADDR sDevBaseAddr, |
1842 | IMG_UINT32 ui32Size, | 1838 | IMG_UINT32 ui32Size, |
1839 | IMG_UINT32 ui32MMUContextID, | ||
1843 | IMG_UINT32 ui32PDumpFlags) | 1840 | IMG_UINT32 ui32PDumpFlags) |
1844 | { | 1841 | { |
1845 | PDumpCommentWithFlags(ui32PDumpFlags, "\r\n-- Dump Hardware Performance Circular Buffer\r\n"); | 1842 | PDumpCommentWithFlags(ui32PDumpFlags, "\r\n-- Dump Hardware Performance Circular Buffer\r\n"); |
1846 | return PDumpSaveMemKM(psDevId, pszFileName, ui32FileOffset, sDevBaseAddr, ui32Size, | 1843 | return PDumpSaveMemKM(psDevId, pszFileName, ui32FileOffset, sDevBaseAddr, ui32Size, |
1847 | PDUMP_DATAMASTER_EDM, ui32PDumpFlags); | 1844 | ui32MMUContextID, ui32PDumpFlags); |
1848 | } | 1845 | } |
1849 | 1846 | ||
1850 | 1847 | ||
@@ -1870,7 +1867,7 @@ PVRSRV_ERROR PDumpCBP(PPVRSRV_KERNEL_MEM_INFO psROffMemInfo, | |||
1870 | psMMUAttrib = ((BM_BUF*)psROffMemInfo->sMemBlk.hBuffer)->pMapping->pBMHeap->psMMUAttrib; | 1867 | psMMUAttrib = ((BM_BUF*)psROffMemInfo->sMemBlk.hBuffer)->pMapping->pBMHeap->psMMUAttrib; |
1871 | 1868 | ||
1872 | 1869 | ||
1873 | PVR_ASSERT((ui32ROffOffset + sizeof(IMG_UINT32)) <= psROffMemInfo->ui32AllocSize); | 1870 | PVR_ASSERT((ui32ROffOffset + sizeof(IMG_UINT32)) <= psROffMemInfo->uAllocSize); |
1874 | 1871 | ||
1875 | pui8LinAddr = psROffMemInfo->pvLinAddrKM; | 1872 | pui8LinAddr = psROffMemInfo->pvLinAddrKM; |
1876 | sDevVAddr = psROffMemInfo->sDevVAddr; | 1873 | sDevVAddr = psROffMemInfo->sDevVAddr; |
@@ -2073,13 +2070,14 @@ PVRSRV_ERROR PDumpSetMMUContext(PVRSRV_DEVICE_TYPE eDeviceType, | |||
2073 | IMG_CPU_PHYADDR sCpuPAddr; | 2070 | IMG_CPU_PHYADDR sCpuPAddr; |
2074 | IMG_DEV_PHYADDR sDevPAddr; | 2071 | IMG_DEV_PHYADDR sDevPAddr; |
2075 | IMG_UINT32 ui32MMUContextID; | 2072 | IMG_UINT32 ui32MMUContextID; |
2076 | PVRSRV_ERROR eError; | 2073 | PVRSRV_ERROR eErr; |
2074 | PDUMP_GET_SCRIPT_STRING(); | ||
2077 | 2075 | ||
2078 | eError = _PdumpAllocMMUContext(&ui32MMUContextID); | 2076 | eErr = _PdumpAllocMMUContext(&ui32MMUContextID); |
2079 | if(eError != PVRSRV_OK) | 2077 | if(eErr != PVRSRV_OK) |
2080 | { | 2078 | { |
2081 | PVR_DPF((PVR_DBG_ERROR, "PDumpSetMMUContext: _PdumpAllocMMUContext failed: %d", eError)); | 2079 | PVR_DPF((PVR_DBG_ERROR, "PDumpSetMMUContext: _PdumpAllocMMUContext failed: %d", eErr)); |
2082 | return eError; | 2080 | return eErr; |
2083 | } | 2081 | } |
2084 | 2082 | ||
2085 | 2083 | ||
@@ -2089,15 +2087,20 @@ PVRSRV_ERROR PDumpSetMMUContext(PVRSRV_DEVICE_TYPE eDeviceType, | |||
2089 | 2087 | ||
2090 | sDevPAddr.uiAddr &= ~((PVRSRV_4K_PAGE_SIZE) -1); | 2088 | sDevPAddr.uiAddr &= ~((PVRSRV_4K_PAGE_SIZE) -1); |
2091 | 2089 | ||
2092 | PDumpComment("Set MMU Context\r\n"); | 2090 | eErr = PDumpOSBufprintf(hScript, |
2093 | 2091 | ui32MaxLen, | |
2094 | PDumpComment("MMU :%s:v%d %d :%s:PA_%08X%08X\r\n", | 2092 | "MMU :%s:v%d %d :%s:PA_%08X%08X\r\n", |
2095 | pszMemSpace, | 2093 | pszMemSpace, |
2096 | ui32MMUContextID, | 2094 | ui32MMUContextID, |
2097 | ui32MMUType, | 2095 | ui32MMUType, |
2098 | pszMemSpace, | 2096 | pszMemSpace, |
2099 | (IMG_UINT32)(IMG_UINTPTR_T)hUniqueTag1, | 2097 | (IMG_UINT32)(IMG_UINTPTR_T)hUniqueTag1, |
2100 | sDevPAddr.uiAddr); | 2098 | sDevPAddr.uiAddr); |
2099 | if(eErr != PVRSRV_OK) | ||
2100 | { | ||
2101 | return eErr; | ||
2102 | } | ||
2103 | PDumpOSWriteString2(hScript, PDUMP_FLAGS_CONTINUOUS); | ||
2101 | 2104 | ||
2102 | 2105 | ||
2103 | *pui32MMUContextID = ui32MMUContextID; | 2106 | *pui32MMUContextID = ui32MMUContextID; |
@@ -2111,23 +2114,29 @@ PVRSRV_ERROR PDumpClearMMUContext(PVRSRV_DEVICE_TYPE eDeviceType, | |||
2111 | IMG_UINT32 ui32MMUContextID, | 2114 | IMG_UINT32 ui32MMUContextID, |
2112 | IMG_UINT32 ui32MMUType) | 2115 | IMG_UINT32 ui32MMUType) |
2113 | { | 2116 | { |
2114 | PVRSRV_ERROR eError; | 2117 | PVRSRV_ERROR eErr; |
2115 | 2118 | PDUMP_GET_SCRIPT_STRING(); | |
2116 | PVR_UNREFERENCED_PARAMETER(eDeviceType); | 2119 | PVR_UNREFERENCED_PARAMETER(eDeviceType); |
2120 | PVR_UNREFERENCED_PARAMETER(ui32MMUType); | ||
2117 | 2121 | ||
2118 | 2122 | ||
2119 | PDumpComment("Clear MMU Context for memory space %s\r\n", pszMemSpace); | 2123 | PDumpComment("Clear MMU Context for memory space %s\r\n", pszMemSpace); |
2120 | 2124 | eErr = PDumpOSBufprintf(hScript, | |
2121 | PDumpComment("MMU :%s:v%d %d\r\n", | 2125 | ui32MaxLen, |
2126 | "MMU :%s:v%d\r\n", | ||
2122 | pszMemSpace, | 2127 | pszMemSpace, |
2123 | ui32MMUContextID, | 2128 | ui32MMUContextID); |
2124 | ui32MMUType); | 2129 | if(eErr != PVRSRV_OK) |
2130 | { | ||
2131 | return eErr; | ||
2132 | } | ||
2133 | PDumpOSWriteString2(hScript, PDUMP_FLAGS_CONTINUOUS); | ||
2125 | 2134 | ||
2126 | eError = _PdumpFreeMMUContext(ui32MMUContextID); | 2135 | eErr = _PdumpFreeMMUContext(ui32MMUContextID); |
2127 | if(eError != PVRSRV_OK) | 2136 | if(eErr != PVRSRV_OK) |
2128 | { | 2137 | { |
2129 | PVR_DPF((PVR_DBG_ERROR, "PDumpClearMMUContext: _PdumpFreeMMUContext failed: %d", eError)); | 2138 | PVR_DPF((PVR_DBG_ERROR, "PDumpClearMMUContext: _PdumpFreeMMUContext failed: %d", eErr)); |
2130 | return eError; | 2139 | return eErr; |
2131 | } | 2140 | } |
2132 | 2141 | ||
2133 | return PVRSRV_OK; | 2142 | return PVRSRV_OK; |
@@ -2151,7 +2160,7 @@ PVRSRV_ERROR PDumpStoreMemToFile(PDUMP_MMU_ATTRIB *psMMUAttrib, | |||
2151 | 2160 | ||
2152 | 2161 | ||
2153 | 2162 | ||
2154 | ui32PageOffset = (IMG_UINT32)psMemInfo->pvLinAddrKM & psMMUAttrib->ui32DataPageMask; | 2163 | ui32PageOffset = (IMG_UINT32)((IMG_UINTPTR_T)psMemInfo->pvLinAddrKM & psMMUAttrib->ui32DataPageMask); |
2155 | 2164 | ||
2156 | 2165 | ||
2157 | sDevVPageAddr.uiAddr = uiAddr - ui32PageOffset; | 2166 | sDevVPageAddr.uiAddr = uiAddr - ui32PageOffset; |
@@ -2201,6 +2210,7 @@ PVRSRV_ERROR PDumpRegBasedCBP(IMG_CHAR *pszPDumpRegName, | |||
2201 | } | 2210 | } |
2202 | 2211 | ||
2203 | 2212 | ||
2213 | |||
2204 | #include "syscommon.h" | 2214 | #include "syscommon.h" |
2205 | 2215 | ||
2206 | IMG_EXPORT IMG_VOID PDumpConnectionNotify(IMG_VOID) | 2216 | IMG_EXPORT IMG_VOID PDumpConnectionNotify(IMG_VOID) |
@@ -2235,9 +2245,9 @@ IMG_UINT32 DbgWrite(PDBG_STREAM psStream, IMG_UINT8 *pui8Data, IMG_UINT32 ui32BC | |||
2235 | { | 2245 | { |
2236 | return ui32BCount; | 2246 | return ui32BCount; |
2237 | } | 2247 | } |
2238 | 2248 | ||
2239 | #if defined(SUPPORT_PDUMP_MULTI_PROCESS) | 2249 | #if defined(SUPPORT_PDUMP_MULTI_PROCESS) |
2240 | 2250 | ||
2241 | if ( (_PDumpIsProcessActive() == IMG_FALSE ) && | 2251 | if ( (_PDumpIsProcessActive() == IMG_FALSE ) && |
2242 | ((ui32Flags & PDUMP_FLAGS_PERSISTENT) == 0) ) | 2252 | ((ui32Flags & PDUMP_FLAGS_PERSISTENT) == 0) ) |
2243 | { | 2253 | { |
@@ -2245,10 +2255,10 @@ IMG_UINT32 DbgWrite(PDBG_STREAM psStream, IMG_UINT8 *pui8Data, IMG_UINT32 ui32BC | |||
2245 | } | 2255 | } |
2246 | #endif | 2256 | #endif |
2247 | 2257 | ||
2248 | 2258 | ||
2249 | if ( ((ui32Flags & PDUMP_FLAGS_PERSISTENT) != 0) && (psCtrl->bInitPhaseComplete) ) | 2259 | if ( ((ui32Flags & PDUMP_FLAGS_PERSISTENT) != 0) && (psCtrl->bInitPhaseComplete) ) |
2250 | { | 2260 | { |
2251 | while (((IMG_UINT32) ui32BCount > 0) && (ui32BytesWritten != 0xFFFFFFFFU)) | 2261 | while (ui32BCount > 0) |
2252 | { | 2262 | { |
2253 | 2263 | ||
2254 | 2264 | ||
@@ -2272,14 +2282,14 @@ IMG_UINT32 DbgWrite(PDBG_STREAM psStream, IMG_UINT8 *pui8Data, IMG_UINT32 ui32BC | |||
2272 | PVR_DPF((PVR_DBG_ERROR, "DbgWrite: Failed to send persistent data")); | 2282 | PVR_DPF((PVR_DBG_ERROR, "DbgWrite: Failed to send persistent data")); |
2273 | if( (psCtrl->ui32Flags & DEBUG_FLAGS_READONLY) != 0) | 2283 | if( (psCtrl->ui32Flags & DEBUG_FLAGS_READONLY) != 0) |
2274 | { | 2284 | { |
2275 | 2285 | ||
2276 | PDumpSuspendKM(); | 2286 | PDumpSuspendKM(); |
2277 | } | 2287 | } |
2278 | return 0xFFFFFFFFU; | 2288 | return 0xFFFFFFFFU; |
2279 | } | 2289 | } |
2280 | } | 2290 | } |
2281 | 2291 | ||
2282 | 2292 | ||
2283 | ui32BCount = ui32Off; ui32Off = 0; ui32BytesWritten = 0; | 2293 | ui32BCount = ui32Off; ui32Off = 0; ui32BytesWritten = 0; |
2284 | } | 2294 | } |
2285 | 2295 | ||
diff --git a/drivers/gpu/pvr/pdump_km.h b/drivers/gpu/pvr/pdump_km.h index 1be14d64de7..f51910daf1e 100644 --- a/drivers/gpu/pvr/pdump_km.h +++ b/drivers/gpu/pvr/pdump_km.h | |||
@@ -54,7 +54,7 @@ extern IMG_UINT32 g_ui32EveryLineCounter; | |||
54 | 54 | ||
55 | #ifdef PDUMP | 55 | #ifdef PDUMP |
56 | 56 | ||
57 | #define MAKEUNIQUETAG(hMemInfo) (((BM_BUF *)(((PVRSRV_KERNEL_MEM_INFO *)(hMemInfo))->sMemBlk.hBuffer))->pMapping) | 57 | #define MAKEUNIQUETAG(hMemInfo) ((PDumpOSIsSuspended()) ? 0 : ((BM_BUF *)(((PVRSRV_KERNEL_MEM_INFO *)(hMemInfo))->sMemBlk.hBuffer))->pMapping) |
58 | 58 | ||
59 | IMG_IMPORT PVRSRV_ERROR PDumpMemPolKM(PVRSRV_KERNEL_MEM_INFO *psMemInfo, | 59 | IMG_IMPORT PVRSRV_ERROR PDumpMemPolKM(PVRSRV_KERNEL_MEM_INFO *psMemInfo, |
60 | IMG_UINT32 ui32Offset, | 60 | IMG_UINT32 ui32Offset, |
@@ -79,7 +79,7 @@ extern IMG_UINT32 g_ui32EveryLineCounter; | |||
79 | IMG_UINT32 ui32Bytes, | 79 | IMG_UINT32 ui32Bytes, |
80 | IMG_UINT32 ui32Flags, | 80 | IMG_UINT32 ui32Flags, |
81 | IMG_HANDLE hUniqueTag); | 81 | IMG_HANDLE hUniqueTag); |
82 | PVRSRV_ERROR PDumpMemPagesKM(PVRSRV_DEVICE_TYPE eDeviceType, | 82 | PVRSRV_ERROR PDumpMemPagesKM(PVRSRV_DEVICE_IDENTIFIER *psDevID, |
83 | IMG_DEV_PHYADDR *pPages, | 83 | IMG_DEV_PHYADDR *pPages, |
84 | IMG_UINT32 ui32NumPages, | 84 | IMG_UINT32 ui32NumPages, |
85 | IMG_DEV_VIRTADDR sDevAddr, | 85 | IMG_DEV_VIRTADDR sDevAddr, |
@@ -124,11 +124,13 @@ extern IMG_UINT32 g_ui32EveryLineCounter; | |||
124 | IMG_UINT32 ui32RegAddr, | 124 | IMG_UINT32 ui32RegAddr, |
125 | IMG_UINT32 ui32RegValue, | 125 | IMG_UINT32 ui32RegValue, |
126 | IMG_UINT32 ui32Mask, | 126 | IMG_UINT32 ui32Mask, |
127 | IMG_UINT32 ui32Flags); | 127 | IMG_UINT32 ui32Flags, |
128 | PDUMP_POLL_OPERATOR eOperator); | ||
128 | PVRSRV_ERROR PDumpRegPolKM(IMG_CHAR *pszPDumpRegName, | 129 | PVRSRV_ERROR PDumpRegPolKM(IMG_CHAR *pszPDumpRegName, |
129 | IMG_UINT32 ui32RegAddr, | 130 | IMG_UINT32 ui32RegAddr, |
130 | IMG_UINT32 ui32RegValue, | 131 | IMG_UINT32 ui32RegValue, |
131 | IMG_UINT32 ui32Mask); | 132 | IMG_UINT32 ui32Mask, |
133 | PDUMP_POLL_OPERATOR eOperator); | ||
132 | 134 | ||
133 | IMG_IMPORT PVRSRV_ERROR PDumpBitmapKM(PVRSRV_DEVICE_NODE *psDeviceNode, | 135 | IMG_IMPORT PVRSRV_ERROR PDumpBitmapKM(PVRSRV_DEVICE_NODE *psDeviceNode, |
134 | IMG_CHAR *pszFileName, | 136 | IMG_CHAR *pszFileName, |
@@ -171,7 +173,7 @@ extern IMG_UINT32 g_ui32EveryLineCounter; | |||
171 | IMG_BOOL PDumpIsLastCaptureFrameKM(IMG_VOID); | 173 | IMG_BOOL PDumpIsLastCaptureFrameKM(IMG_VOID); |
172 | IMG_IMPORT IMG_BOOL PDumpIsCaptureFrameKM(IMG_VOID); | 174 | IMG_IMPORT IMG_BOOL PDumpIsCaptureFrameKM(IMG_VOID); |
173 | 175 | ||
174 | IMG_VOID PDumpMallocPagesPhys(PVRSRV_DEVICE_TYPE eDeviceType, | 176 | IMG_VOID PDumpMallocPagesPhys(PVRSRV_DEVICE_IDENTIFIER *psDevID, |
175 | IMG_UINT32 ui32DevVAddr, | 177 | IMG_UINT32 ui32DevVAddr, |
176 | IMG_PUINT32 pui32PhysPages, | 178 | IMG_PUINT32 pui32PhysPages, |
177 | IMG_UINT32 ui32NumPages, | 179 | IMG_UINT32 ui32NumPages, |
@@ -267,6 +269,7 @@ extern IMG_UINT32 g_ui32EveryLineCounter; | |||
267 | IMG_UINT32 ui32FileOffset, | 269 | IMG_UINT32 ui32FileOffset, |
268 | IMG_DEV_VIRTADDR sDevBaseAddr, | 270 | IMG_DEV_VIRTADDR sDevBaseAddr, |
269 | IMG_UINT32 ui32Size, | 271 | IMG_UINT32 ui32Size, |
272 | IMG_UINT32 ui32MMUContextID, | ||
270 | IMG_UINT32 ui32PDumpFlags); | 273 | IMG_UINT32 ui32PDumpFlags); |
271 | 274 | ||
272 | PVRSRV_ERROR PDumpSignatureBuffer(PVRSRV_DEVICE_IDENTIFIER *psDevId, | 275 | PVRSRV_ERROR PDumpSignatureBuffer(PVRSRV_DEVICE_IDENTIFIER *psDevId, |
@@ -275,6 +278,7 @@ extern IMG_UINT32 g_ui32EveryLineCounter; | |||
275 | IMG_UINT32 ui32FileOffset, | 278 | IMG_UINT32 ui32FileOffset, |
276 | IMG_DEV_VIRTADDR sDevBaseAddr, | 279 | IMG_DEV_VIRTADDR sDevBaseAddr, |
277 | IMG_UINT32 ui32Size, | 280 | IMG_UINT32 ui32Size, |
281 | IMG_UINT32 ui32MMUContextID, | ||
278 | IMG_UINT32 ui32PDumpFlags); | 282 | IMG_UINT32 ui32PDumpFlags); |
279 | 283 | ||
280 | PVRSRV_ERROR PDumpCBP(PPVRSRV_KERNEL_MEM_INFO psROffMemInfo, | 284 | PVRSRV_ERROR PDumpCBP(PPVRSRV_KERNEL_MEM_INFO psROffMemInfo, |
diff --git a/drivers/gpu/pvr/pdumpdefs.h b/drivers/gpu/pvr/pdumpdefs.h index 83ccbb2c80c..0efe3031d75 100644 --- a/drivers/gpu/pvr/pdumpdefs.h +++ b/drivers/gpu/pvr/pdumpdefs.h | |||
@@ -68,6 +68,15 @@ typedef enum _PDUMP_PIXEL_FORMAT_ | |||
68 | PVRSRV_PDUMP_PIXEL_FORMAT_F32 = 36, | 68 | PVRSRV_PDUMP_PIXEL_FORMAT_F32 = 36, |
69 | PVRSRV_PDUMP_PIXEL_FORMAT_L16 = 37, | 69 | PVRSRV_PDUMP_PIXEL_FORMAT_L16 = 37, |
70 | PVRSRV_PDUMP_PIXEL_FORMAT_L32 = 38, | 70 | PVRSRV_PDUMP_PIXEL_FORMAT_L32 = 38, |
71 | PVRSRV_PDUMP_PIXEL_FORMAT_RGBA8888 = 39, | ||
72 | PVRSRV_PDUMP_PIXEL_FORMAT_ABGR4444 = 40, | ||
73 | PVRSRV_PDUMP_PIXEL_FORMAT_RGBA4444 = 41, | ||
74 | PVRSRV_PDUMP_PIXEL_FORMAT_BGRA4444 = 42, | ||
75 | PVRSRV_PDUMP_PIXEL_FORMAT_ABGR1555 = 43, | ||
76 | PVRSRV_PDUMP_PIXEL_FORMAT_RGBA5551 = 44, | ||
77 | PVRSRV_PDUMP_PIXEL_FORMAT_BGRA5551 = 45, | ||
78 | PVRSRV_PDUMP_PIXEL_FORMAT_BGR565 = 46, | ||
79 | PVRSRV_PDUMP_PIXEL_FORMAT_A8 = 47, | ||
71 | 80 | ||
72 | PVRSRV_PDUMP_PIXEL_FORMAT_FORCE_I32 = 0x7fffffff | 81 | PVRSRV_PDUMP_PIXEL_FORMAT_FORCE_I32 = 0x7fffffff |
73 | 82 | ||
diff --git a/drivers/gpu/pvr/perproc.c b/drivers/gpu/pvr/perproc.c index 52d9980b489..7eb46a14484 100644 --- a/drivers/gpu/pvr/perproc.c +++ b/drivers/gpu/pvr/perproc.c | |||
@@ -29,6 +29,9 @@ | |||
29 | #include "handle.h" | 29 | #include "handle.h" |
30 | #include "perproc.h" | 30 | #include "perproc.h" |
31 | #include "osperproc.h" | 31 | #include "osperproc.h" |
32 | #if defined(TTRACE) | ||
33 | #include "ttrace.h" | ||
34 | #endif | ||
32 | 35 | ||
33 | #define HASH_TAB_INIT_SIZE 32 | 36 | #define HASH_TAB_INIT_SIZE 32 |
34 | 37 | ||
@@ -207,6 +210,9 @@ PVRSRV_ERROR PVRSRVPerProcessDataConnect(IMG_UINT32 ui32PID, IMG_UINT32 ui32Flag | |||
207 | PVR_DPF((PVR_DBG_ERROR, "PVRSRVPerProcessDataConnect: Couldn't register with the resource manager")); | 210 | PVR_DPF((PVR_DBG_ERROR, "PVRSRVPerProcessDataConnect: Couldn't register with the resource manager")); |
208 | goto failure; | 211 | goto failure; |
209 | } | 212 | } |
213 | #if defined (TTRACE) | ||
214 | PVRSRVTimeTraceBufferCreate(ui32PID); | ||
215 | #endif | ||
210 | } | 216 | } |
211 | 217 | ||
212 | psPerProc->ui32RefCount++; | 218 | psPerProc->ui32RefCount++; |
@@ -242,6 +248,10 @@ IMG_VOID PVRSRVPerProcessDataDisconnect(IMG_UINT32 ui32PID) | |||
242 | PVR_DPF((PVR_DBG_MESSAGE, "PVRSRVPerProcessDataDisconnect: " | 248 | PVR_DPF((PVR_DBG_MESSAGE, "PVRSRVPerProcessDataDisconnect: " |
243 | "Last close from process 0x%x received", ui32PID)); | 249 | "Last close from process 0x%x received", ui32PID)); |
244 | 250 | ||
251 | #if defined (TTRACE) | ||
252 | PVRSRVTimeTraceBufferDestroy(ui32PID); | ||
253 | #endif | ||
254 | |||
245 | 255 | ||
246 | PVRSRVResManDisconnect(psPerProc->hResManContext, IMG_FALSE); | 256 | PVRSRVResManDisconnect(psPerProc->hResManContext, IMG_FALSE); |
247 | 257 | ||
diff --git a/drivers/gpu/pvr/perproc.h b/drivers/gpu/pvr/perproc.h index 37359d50e05..e416b5a629e 100644 --- a/drivers/gpu/pvr/perproc.h +++ b/drivers/gpu/pvr/perproc.h | |||
@@ -41,12 +41,21 @@ typedef struct _PVRSRV_PER_PROCESS_DATA_ | |||
41 | IMG_UINT32 ui32PID; | 41 | IMG_UINT32 ui32PID; |
42 | IMG_HANDLE hBlockAlloc; | 42 | IMG_HANDLE hBlockAlloc; |
43 | PRESMAN_CONTEXT hResManContext; | 43 | PRESMAN_CONTEXT hResManContext; |
44 | #if defined (SUPPORT_SID_INTERFACE) | ||
45 | IMG_SID hPerProcData; | ||
46 | #else | ||
44 | IMG_HANDLE hPerProcData; | 47 | IMG_HANDLE hPerProcData; |
48 | #endif | ||
45 | PVRSRV_HANDLE_BASE *psHandleBase; | 49 | PVRSRV_HANDLE_BASE *psHandleBase; |
50 | #if defined (SUPPORT_SID_INTERFACE) | ||
51 | |||
52 | IMG_BOOL bHandlesBatched; | ||
53 | #else | ||
46 | #if defined (PVR_SECURE_HANDLES) | 54 | #if defined (PVR_SECURE_HANDLES) |
47 | 55 | ||
48 | IMG_BOOL bHandlesBatched; | 56 | IMG_BOOL bHandlesBatched; |
49 | #endif | 57 | #endif |
58 | #endif | ||
50 | IMG_UINT32 ui32RefCount; | 59 | IMG_UINT32 ui32RefCount; |
51 | 60 | ||
52 | 61 | ||
@@ -55,9 +64,9 @@ typedef struct _PVRSRV_PER_PROCESS_DATA_ | |||
55 | 64 | ||
56 | IMG_BOOL bPDumpPersistent; | 65 | IMG_BOOL bPDumpPersistent; |
57 | #if defined(SUPPORT_PDUMP_MULTI_PROCESS) | 66 | #if defined(SUPPORT_PDUMP_MULTI_PROCESS) |
58 | 67 | ||
59 | IMG_BOOL bPDumpActive; | 68 | IMG_BOOL bPDumpActive; |
60 | #endif | 69 | #endif |
61 | #endif | 70 | #endif |
62 | 71 | ||
63 | IMG_HANDLE hOsPrivateData; | 72 | IMG_HANDLE hOsPrivateData; |
diff --git a/drivers/gpu/pvr/power.c b/drivers/gpu/pvr/power.c index ba0eced9ba1..ba203aba3c4 100644 --- a/drivers/gpu/pvr/power.c +++ b/drivers/gpu/pvr/power.c | |||
@@ -96,20 +96,14 @@ PVRSRV_ERROR PVRSRVPowerLock(IMG_UINT32 ui32CallerID, | |||
96 | SYS_DATA *psSysData; | 96 | SYS_DATA *psSysData; |
97 | IMG_UINT32 ui32Timeout = 1000000; | 97 | IMG_UINT32 ui32Timeout = 1000000; |
98 | 98 | ||
99 | #if defined(SUPPORT_LMA) | ||
100 | |||
101 | ui32Timeout *= 60; | ||
102 | #endif | ||
103 | |||
104 | SysAcquireData(&psSysData); | 99 | SysAcquireData(&psSysData); |
105 | 100 | ||
106 | #if defined(SYS_CUSTOM_POWERLOCK_WRAP) | 101 | eError = OSPowerLockWrap(); |
107 | eError = SysPowerLockWrap(psSysData); | ||
108 | if (eError != PVRSRV_OK) | 102 | if (eError != PVRSRV_OK) |
109 | { | 103 | { |
110 | return eError; | 104 | return eError; |
111 | } | 105 | } |
112 | #endif | 106 | |
113 | do | 107 | do |
114 | { | 108 | { |
115 | eError = OSLockResource(&psSysData->sPowerStateChangeResource, | 109 | eError = OSLockResource(&psSysData->sPowerStateChangeResource, |
@@ -130,12 +124,11 @@ PVRSRV_ERROR PVRSRVPowerLock(IMG_UINT32 ui32CallerID, | |||
130 | ui32Timeout--; | 124 | ui32Timeout--; |
131 | } while (ui32Timeout > 0); | 125 | } while (ui32Timeout > 0); |
132 | 126 | ||
133 | #if defined(SYS_CUSTOM_POWERLOCK_WRAP) | ||
134 | if (eError != PVRSRV_OK) | 127 | if (eError != PVRSRV_OK) |
135 | { | 128 | { |
136 | SysPowerLockUnwrap(psSysData); | 129 | OSPowerLockUnwrap(); |
137 | } | 130 | } |
138 | #endif | 131 | |
139 | 132 | ||
140 | if ((eError == PVRSRV_OK) && | 133 | if ((eError == PVRSRV_OK) && |
141 | !bSystemPowerEvent && | 134 | !bSystemPowerEvent && |
@@ -154,9 +147,7 @@ IMG_EXPORT | |||
154 | IMG_VOID PVRSRVPowerUnlock(IMG_UINT32 ui32CallerID) | 147 | IMG_VOID PVRSRVPowerUnlock(IMG_UINT32 ui32CallerID) |
155 | { | 148 | { |
156 | OSUnlockResource(&gpsSysData->sPowerStateChangeResource, ui32CallerID); | 149 | OSUnlockResource(&gpsSysData->sPowerStateChangeResource, ui32CallerID); |
157 | #if defined(SYS_CUSTOM_POWERLOCK_WRAP) | 150 | OSPowerLockUnwrap(); |
158 | SysPowerLockUnwrap(gpsSysData); | ||
159 | #endif | ||
160 | } | 151 | } |
161 | 152 | ||
162 | 153 | ||
@@ -560,7 +551,7 @@ PVRSRV_ERROR PVRSRVRegisterPowerDevice(IMG_UINT32 ui32DeviceIndex, | |||
560 | 551 | ||
561 | SysAcquireData(&psSysData); | 552 | SysAcquireData(&psSysData); |
562 | 553 | ||
563 | eError = OSAllocMem( PVRSRV_OS_PAGEABLE_HEAP, | 554 | eError = OSAllocMem( PVRSRV_OS_NON_PAGEABLE_HEAP, |
564 | sizeof(PVRSRV_POWER_DEV), | 555 | sizeof(PVRSRV_POWER_DEV), |
565 | (IMG_VOID **)&psPowerDevice, IMG_NULL, | 556 | (IMG_VOID **)&psPowerDevice, IMG_NULL, |
566 | "Power Device"); | 557 | "Power Device"); |
diff --git a/drivers/gpu/pvr/private_data.h b/drivers/gpu/pvr/private_data.h index df9f6ade53a..0c55499220a 100644 --- a/drivers/gpu/pvr/private_data.h +++ b/drivers/gpu/pvr/private_data.h | |||
@@ -32,35 +32,23 @@ | |||
32 | #include <drm/drmP.h> | 32 | #include <drm/drmP.h> |
33 | #endif | 33 | #endif |
34 | 34 | ||
35 | #if defined(SUPPORT_DRI_DRM) && defined(PVR_LINUX_USING_WORKQUEUES) | ||
36 | #include <linux/workqueue.h> | ||
37 | #endif | ||
38 | |||
39 | typedef struct | 35 | typedef struct |
40 | { | 36 | { |
41 | 37 | ||
42 | IMG_UINT32 ui32OpenPID; | 38 | IMG_UINT32 ui32OpenPID; |
43 | 39 | ||
44 | #if defined(PVR_SECURE_FD_EXPORT) | ||
45 | 40 | ||
41 | #if defined (SUPPORT_SID_INTERFACE) | ||
42 | IMG_SID hKernelMemInfo; | ||
43 | #else | ||
46 | IMG_HANDLE hKernelMemInfo; | 44 | IMG_HANDLE hKernelMemInfo; |
47 | #endif | 45 | #endif |
48 | |||
49 | #if defined(SUPPORT_DRI_DRM) | ||
50 | #if defined(PVR_SECURE_DRM_AUTH_EXPORT) | ||
51 | struct drm_file *psDRMFile; | ||
52 | 46 | ||
47 | #if defined(SUPPORT_DRI_DRM) && defined(PVR_SECURE_DRM_AUTH_EXPORT) | ||
53 | 48 | ||
54 | struct list_head sDRMAuthListItem; | 49 | struct list_head sDRMAuthListItem; |
55 | #endif | ||
56 | 50 | ||
57 | #if defined(PVR_LINUX_USING_WORKQUEUES) | 51 | struct drm_file *psDRMFile; |
58 | struct work_struct sReleaseWork; | ||
59 | #endif | ||
60 | |||
61 | #if defined(SUPPORT_DRI_DRM_EXT) | ||
62 | IMG_PVOID pPriv; | ||
63 | #endif | ||
64 | #endif | 52 | #endif |
65 | 53 | ||
66 | #if defined(SUPPORT_MEMINFO_IDS) | 54 | #if defined(SUPPORT_MEMINFO_IDS) |
@@ -70,6 +58,10 @@ typedef struct | |||
70 | 58 | ||
71 | 59 | ||
72 | IMG_HANDLE hBlockAlloc; | 60 | IMG_HANDLE hBlockAlloc; |
61 | |||
62 | #if defined(SUPPORT_DRI_DRM_EXT) | ||
63 | IMG_PVOID pPriv; | ||
64 | #endif | ||
73 | } | 65 | } |
74 | PVRSRV_FILE_PRIVATE_DATA; | 66 | PVRSRV_FILE_PRIVATE_DATA; |
75 | 67 | ||
diff --git a/drivers/gpu/pvr/pvr_bridge.h b/drivers/gpu/pvr/pvr_bridge.h index 82c3aa66ef2..93f1bb10a8b 100644 --- a/drivers/gpu/pvr/pvr_bridge.h +++ b/drivers/gpu/pvr/pvr_bridge.h | |||
@@ -68,7 +68,7 @@ extern "C" { | |||
68 | #define PVRSRV_BRIDGE_GETFREE_DEVICEMEM PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+8) | 68 | #define PVRSRV_BRIDGE_GETFREE_DEVICEMEM PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+8) |
69 | #define PVRSRV_BRIDGE_CREATE_COMMANDQUEUE PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+9) | 69 | #define PVRSRV_BRIDGE_CREATE_COMMANDQUEUE PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+9) |
70 | #define PVRSRV_BRIDGE_DESTROY_COMMANDQUEUE PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+10) | 70 | #define PVRSRV_BRIDGE_DESTROY_COMMANDQUEUE PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+10) |
71 | #define PVRSRV_BRIDGE_MHANDLE_TO_MMAP_DATA PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+11) | 71 | #define PVRSRV_BRIDGE_MHANDLE_TO_MMAP_DATA PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+11) |
72 | #define PVRSRV_BRIDGE_CONNECT_SERVICES PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+12) | 72 | #define PVRSRV_BRIDGE_CONNECT_SERVICES PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+12) |
73 | #define PVRSRV_BRIDGE_DISCONNECT_SERVICES PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+13) | 73 | #define PVRSRV_BRIDGE_DISCONNECT_SERVICES PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+13) |
74 | #define PVRSRV_BRIDGE_WRAP_DEVICE_MEM PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+14) | 74 | #define PVRSRV_BRIDGE_WRAP_DEVICE_MEM PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+14) |
@@ -85,7 +85,10 @@ extern "C" { | |||
85 | #define PVRSRV_BRIDGE_UNMAP_MEM_INFO_FROM_USER PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+25) | 85 | #define PVRSRV_BRIDGE_UNMAP_MEM_INFO_FROM_USER PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+25) |
86 | #define PVRSRV_BRIDGE_EXPORT_DEVICEMEM PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+26) | 86 | #define PVRSRV_BRIDGE_EXPORT_DEVICEMEM PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+26) |
87 | #define PVRSRV_BRIDGE_RELEASE_MMAP_DATA PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+27) | 87 | #define PVRSRV_BRIDGE_RELEASE_MMAP_DATA PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+27) |
88 | #define PVRSRV_BRIDGE_CORE_CMD_LAST (PVRSRV_BRIDGE_CORE_CMD_FIRST+27) | 88 | #define PVRSRV_BRIDGE_CHG_DEV_MEM_ATTRIBS PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+28) |
89 | #define PVRSRV_BRIDGE_MAP_DEV_MEMORY_2 PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+29) | ||
90 | #define PVRSRV_BRIDGE_EXPORT_DEVICEMEM_2 PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+30) | ||
91 | #define PVRSRV_BRIDGE_CORE_CMD_LAST (PVRSRV_BRIDGE_CORE_CMD_FIRST+30) | ||
89 | 92 | ||
90 | #define PVRSRV_BRIDGE_SIM_CMD_FIRST (PVRSRV_BRIDGE_CORE_CMD_LAST+1) | 93 | #define PVRSRV_BRIDGE_SIM_CMD_FIRST (PVRSRV_BRIDGE_CORE_CMD_LAST+1) |
91 | #define PVRSRV_BRIDGE_PROCESS_SIMISR_EVENT PVRSRV_IOWR(PVRSRV_BRIDGE_SIM_CMD_FIRST+0) | 94 | #define PVRSRV_BRIDGE_PROCESS_SIMISR_EVENT PVRSRV_IOWR(PVRSRV_BRIDGE_SIM_CMD_FIRST+0) |
@@ -168,7 +171,6 @@ extern "C" { | |||
168 | #define PVRSRV_BRIDGE_SWAP_DISPCLASS_TO_SYSTEM PVRSRV_IOWR(PVRSRV_BRIDGE_DISPCLASS_CMD_FIRST+14) | 171 | #define PVRSRV_BRIDGE_SWAP_DISPCLASS_TO_SYSTEM PVRSRV_IOWR(PVRSRV_BRIDGE_DISPCLASS_CMD_FIRST+14) |
169 | #define PVRSRV_BRIDGE_DISPCLASS_CMD_LAST (PVRSRV_BRIDGE_DISPCLASS_CMD_FIRST+14) | 172 | #define PVRSRV_BRIDGE_DISPCLASS_CMD_LAST (PVRSRV_BRIDGE_DISPCLASS_CMD_FIRST+14) |
170 | 173 | ||
171 | |||
172 | #define PVRSRV_BRIDGE_BUFCLASS_CMD_FIRST (PVRSRV_BRIDGE_DISPCLASS_CMD_LAST+1) | 174 | #define PVRSRV_BRIDGE_BUFCLASS_CMD_FIRST (PVRSRV_BRIDGE_DISPCLASS_CMD_LAST+1) |
173 | #define PVRSRV_BRIDGE_OPEN_BUFFERCLASS_DEVICE PVRSRV_IOWR(PVRSRV_BRIDGE_BUFCLASS_CMD_FIRST+0) | 175 | #define PVRSRV_BRIDGE_OPEN_BUFFERCLASS_DEVICE PVRSRV_IOWR(PVRSRV_BRIDGE_BUFCLASS_CMD_FIRST+0) |
174 | #define PVRSRV_BRIDGE_CLOSE_BUFFERCLASS_DEVICE PVRSRV_IOWR(PVRSRV_BRIDGE_BUFCLASS_CMD_FIRST+1) | 176 | #define PVRSRV_BRIDGE_CLOSE_BUFFERCLASS_DEVICE PVRSRV_IOWR(PVRSRV_BRIDGE_BUFCLASS_CMD_FIRST+1) |
@@ -197,7 +199,7 @@ extern "C" { | |||
197 | #define PVRSRV_BRIDGE_INITSRV_DISCONNECT PVRSRV_IOWR(PVRSRV_BRIDGE_INITSRV_CMD_FIRST+1) | 199 | #define PVRSRV_BRIDGE_INITSRV_DISCONNECT PVRSRV_IOWR(PVRSRV_BRIDGE_INITSRV_CMD_FIRST+1) |
198 | #define PVRSRV_BRIDGE_INITSRV_CMD_LAST (PVRSRV_BRIDGE_INITSRV_CMD_FIRST+1) | 200 | #define PVRSRV_BRIDGE_INITSRV_CMD_LAST (PVRSRV_BRIDGE_INITSRV_CMD_FIRST+1) |
199 | 201 | ||
200 | #define PVRSRV_BRIDGE_EVENT_OBJECT_CMD_FIRST (PVRSRV_BRIDGE_INITSRV_CMD_LAST+1) | 202 | #define PVRSRV_BRIDGE_EVENT_OBJECT_CMD_FIRST (PVRSRV_BRIDGE_INITSRV_CMD_LAST+1) |
201 | #define PVRSRV_BRIDGE_EVENT_OBJECT_WAIT PVRSRV_IOWR(PVRSRV_BRIDGE_EVENT_OBJECT_CMD_FIRST+0) | 203 | #define PVRSRV_BRIDGE_EVENT_OBJECT_WAIT PVRSRV_IOWR(PVRSRV_BRIDGE_EVENT_OBJECT_CMD_FIRST+0) |
202 | #define PVRSRV_BRIDGE_EVENT_OBJECT_OPEN PVRSRV_IOWR(PVRSRV_BRIDGE_EVENT_OBJECT_CMD_FIRST+1) | 204 | #define PVRSRV_BRIDGE_EVENT_OBJECT_OPEN PVRSRV_IOWR(PVRSRV_BRIDGE_EVENT_OBJECT_CMD_FIRST+1) |
203 | #define PVRSRV_BRIDGE_EVENT_OBJECT_CLOSE PVRSRV_IOWR(PVRSRV_BRIDGE_EVENT_OBJECT_CMD_FIRST+2) | 205 | #define PVRSRV_BRIDGE_EVENT_OBJECT_CLOSE PVRSRV_IOWR(PVRSRV_BRIDGE_EVENT_OBJECT_CMD_FIRST+2) |
@@ -208,12 +210,14 @@ extern "C" { | |||
208 | #define PVRSRV_BRIDGE_DESTROY_SYNC_INFO_MOD_OBJ PVRSRV_IOWR(PVRSRV_BRIDGE_SYNC_OPS_CMD_FIRST+1) | 210 | #define PVRSRV_BRIDGE_DESTROY_SYNC_INFO_MOD_OBJ PVRSRV_IOWR(PVRSRV_BRIDGE_SYNC_OPS_CMD_FIRST+1) |
209 | #define PVRSRV_BRIDGE_MODIFY_PENDING_SYNC_OPS PVRSRV_IOWR(PVRSRV_BRIDGE_SYNC_OPS_CMD_FIRST+2) | 211 | #define PVRSRV_BRIDGE_MODIFY_PENDING_SYNC_OPS PVRSRV_IOWR(PVRSRV_BRIDGE_SYNC_OPS_CMD_FIRST+2) |
210 | #define PVRSRV_BRIDGE_MODIFY_COMPLETE_SYNC_OPS PVRSRV_IOWR(PVRSRV_BRIDGE_SYNC_OPS_CMD_FIRST+3) | 212 | #define PVRSRV_BRIDGE_MODIFY_COMPLETE_SYNC_OPS PVRSRV_IOWR(PVRSRV_BRIDGE_SYNC_OPS_CMD_FIRST+3) |
211 | #define PVRSRV_BRIDGE_SYNC_OPS_FLUSH_TO_MOD_OBJ PVRSRV_IOWR(PVRSRV_BRIDGE_SYNC_OPS_CMD_FIRST+4) | 213 | #define PVRSRV_BRIDGE_SYNC_OPS_TAKE_TOKEN PVRSRV_IOWR(PVRSRV_BRIDGE_SYNC_OPS_CMD_FIRST+4) |
212 | #define PVRSRV_BRIDGE_SYNC_OPS_FLUSH_TO_DELTA PVRSRV_IOWR(PVRSRV_BRIDGE_SYNC_OPS_CMD_FIRST+5) | 214 | #define PVRSRV_BRIDGE_SYNC_OPS_FLUSH_TO_TOKEN PVRSRV_IOWR(PVRSRV_BRIDGE_SYNC_OPS_CMD_FIRST+5) |
213 | #define PVRSRV_BRIDGE_ALLOC_SYNC_INFO PVRSRV_IOWR(PVRSRV_BRIDGE_SYNC_OPS_CMD_FIRST+6) | 215 | #define PVRSRV_BRIDGE_SYNC_OPS_FLUSH_TO_MOD_OBJ PVRSRV_IOWR(PVRSRV_BRIDGE_SYNC_OPS_CMD_FIRST+6) |
214 | #define PVRSRV_BRIDGE_FREE_SYNC_INFO PVRSRV_IOWR(PVRSRV_BRIDGE_SYNC_OPS_CMD_FIRST+7) | 216 | #define PVRSRV_BRIDGE_SYNC_OPS_FLUSH_TO_DELTA PVRSRV_IOWR(PVRSRV_BRIDGE_SYNC_OPS_CMD_FIRST+7) |
215 | #define PVRSRV_BRIDGE_SYNC_OPS_CMD_LAST (PVRSRV_BRIDGE_SYNC_OPS_CMD_FIRST+7) | 217 | #define PVRSRV_BRIDGE_ALLOC_SYNC_INFO PVRSRV_IOWR(PVRSRV_BRIDGE_SYNC_OPS_CMD_FIRST+8) |
216 | 218 | #define PVRSRV_BRIDGE_FREE_SYNC_INFO PVRSRV_IOWR(PVRSRV_BRIDGE_SYNC_OPS_CMD_FIRST+9) | |
219 | #define PVRSRV_BRIDGE_SYNC_OPS_CMD_LAST (PVRSRV_BRIDGE_SYNC_OPS_CMD_FIRST+9) | ||
220 | |||
217 | #define PVRSRV_BRIDGE_LAST_NON_DEVICE_CMD (PVRSRV_BRIDGE_SYNC_OPS_CMD_LAST+1) | 221 | #define PVRSRV_BRIDGE_LAST_NON_DEVICE_CMD (PVRSRV_BRIDGE_SYNC_OPS_CMD_LAST+1) |
218 | 222 | ||
219 | 223 | ||
@@ -231,22 +235,22 @@ typedef struct PVRSRV_BRIDGE_PACKAGE_TAG | |||
231 | { | 235 | { |
232 | IMG_UINT32 ui32BridgeID; | 236 | IMG_UINT32 ui32BridgeID; |
233 | IMG_UINT32 ui32Size; | 237 | IMG_UINT32 ui32Size; |
234 | IMG_VOID *pvParamIn; | 238 | IMG_VOID *pvParamIn; |
235 | IMG_UINT32 ui32InBufferSize; | 239 | IMG_UINT32 ui32InBufferSize; |
236 | IMG_VOID *pvParamOut; | 240 | IMG_VOID *pvParamOut; |
237 | IMG_UINT32 ui32OutBufferSize; | 241 | IMG_UINT32 ui32OutBufferSize; |
238 | 242 | ||
243 | #if defined (SUPPORT_SID_INTERFACE) | ||
244 | IMG_SID hKernelServices; | ||
245 | #else | ||
239 | IMG_HANDLE hKernelServices; | 246 | IMG_HANDLE hKernelServices; |
247 | #endif | ||
240 | }PVRSRV_BRIDGE_PACKAGE; | 248 | }PVRSRV_BRIDGE_PACKAGE; |
241 | 249 | ||
242 | 250 | ||
243 | |||
244 | |||
245 | |||
246 | |||
247 | typedef struct PVRSRV_BRIDGE_IN_CONNECT_SERVICES_TAG | 251 | typedef struct PVRSRV_BRIDGE_IN_CONNECT_SERVICES_TAG |
248 | { | 252 | { |
249 | IMG_UINT32 ui32BridgeFlags; | 253 | IMG_UINT32 ui32BridgeFlags; |
250 | IMG_UINT32 ui32Flags; | 254 | IMG_UINT32 ui32Flags; |
251 | } PVRSRV_BRIDGE_IN_CONNECT_SERVICES; | 255 | } PVRSRV_BRIDGE_IN_CONNECT_SERVICES; |
252 | 256 | ||
@@ -268,56 +272,82 @@ typedef struct PVRSRV_BRIDGE_IN_ENUMCLASS_TAG | |||
268 | 272 | ||
269 | typedef struct PVRSRV_BRIDGE_IN_CLOSE_DISPCLASS_DEVICE_TAG | 273 | typedef struct PVRSRV_BRIDGE_IN_CLOSE_DISPCLASS_DEVICE_TAG |
270 | { | 274 | { |
271 | IMG_UINT32 ui32BridgeFlags; | 275 | IMG_UINT32 ui32BridgeFlags; |
276 | #if defined (SUPPORT_SID_INTERFACE) | ||
277 | IMG_SID hDeviceKM; | ||
278 | #else | ||
272 | IMG_HANDLE hDeviceKM; | 279 | IMG_HANDLE hDeviceKM; |
280 | #endif | ||
273 | } PVRSRV_BRIDGE_IN_CLOSE_DISPCLASS_DEVICE; | 281 | } PVRSRV_BRIDGE_IN_CLOSE_DISPCLASS_DEVICE; |
274 | 282 | ||
275 | 283 | ||
276 | typedef struct PVRSRV_BRIDGE_IN_ENUM_DISPCLASS_FORMATS_TAG | 284 | typedef struct PVRSRV_BRIDGE_IN_ENUM_DISPCLASS_FORMATS_TAG |
277 | { | 285 | { |
278 | IMG_UINT32 ui32BridgeFlags; | 286 | IMG_UINT32 ui32BridgeFlags; |
287 | #if defined (SUPPORT_SID_INTERFACE) | ||
288 | IMG_SID hDeviceKM; | ||
289 | #else | ||
279 | IMG_HANDLE hDeviceKM; | 290 | IMG_HANDLE hDeviceKM; |
291 | #endif | ||
280 | } PVRSRV_BRIDGE_IN_ENUM_DISPCLASS_FORMATS; | 292 | } PVRSRV_BRIDGE_IN_ENUM_DISPCLASS_FORMATS; |
281 | 293 | ||
282 | 294 | ||
283 | typedef struct PVRSRV_BRIDGE_IN_GET_DISPCLASS_SYSBUFFER_TAG | 295 | typedef struct PVRSRV_BRIDGE_IN_GET_DISPCLASS_SYSBUFFER_TAG |
284 | { | 296 | { |
285 | IMG_UINT32 ui32BridgeFlags; | 297 | IMG_UINT32 ui32BridgeFlags; |
298 | #if defined (SUPPORT_SID_INTERFACE) | ||
299 | IMG_SID hDeviceKM; | ||
300 | #else | ||
286 | IMG_HANDLE hDeviceKM; | 301 | IMG_HANDLE hDeviceKM; |
302 | #endif | ||
287 | } PVRSRV_BRIDGE_IN_GET_DISPCLASS_SYSBUFFER; | 303 | } PVRSRV_BRIDGE_IN_GET_DISPCLASS_SYSBUFFER; |
288 | 304 | ||
289 | 305 | ||
290 | typedef struct PVRSRV_BRIDGE_IN_GET_DISPCLASS_INFO_TAG | 306 | typedef struct PVRSRV_BRIDGE_IN_GET_DISPCLASS_INFO_TAG |
291 | { | 307 | { |
292 | IMG_UINT32 ui32BridgeFlags; | 308 | IMG_UINT32 ui32BridgeFlags; |
309 | #if defined (SUPPORT_SID_INTERFACE) | ||
310 | IMG_SID hDeviceKM; | ||
311 | #else | ||
293 | IMG_HANDLE hDeviceKM; | 312 | IMG_HANDLE hDeviceKM; |
313 | #endif | ||
294 | } PVRSRV_BRIDGE_IN_GET_DISPCLASS_INFO; | 314 | } PVRSRV_BRIDGE_IN_GET_DISPCLASS_INFO; |
295 | 315 | ||
296 | 316 | ||
297 | typedef struct PVRSRV_BRIDGE_IN_CLOSE_BUFFERCLASS_DEVICE_TAG | 317 | typedef struct PVRSRV_BRIDGE_IN_CLOSE_BUFFERCLASS_DEVICE_TAG |
298 | { | 318 | { |
299 | IMG_UINT32 ui32BridgeFlags; | 319 | IMG_UINT32 ui32BridgeFlags; |
320 | #if defined (SUPPORT_SID_INTERFACE) | ||
321 | IMG_SID hDeviceKM; | ||
322 | #else | ||
300 | IMG_HANDLE hDeviceKM; | 323 | IMG_HANDLE hDeviceKM; |
324 | #endif | ||
301 | } PVRSRV_BRIDGE_IN_CLOSE_BUFFERCLASS_DEVICE; | 325 | } PVRSRV_BRIDGE_IN_CLOSE_BUFFERCLASS_DEVICE; |
302 | 326 | ||
303 | 327 | ||
304 | typedef struct PVRSRV_BRIDGE_IN_GET_BUFFERCLASS_INFO_TAG | 328 | typedef struct PVRSRV_BRIDGE_IN_GET_BUFFERCLASS_INFO_TAG |
305 | { | 329 | { |
306 | IMG_UINT32 ui32BridgeFlags; | 330 | IMG_UINT32 ui32BridgeFlags; |
331 | #if defined (SUPPORT_SID_INTERFACE) | ||
332 | IMG_SID hDeviceKM; | ||
333 | #else | ||
307 | IMG_HANDLE hDeviceKM; | 334 | IMG_HANDLE hDeviceKM; |
335 | #endif | ||
308 | } PVRSRV_BRIDGE_IN_GET_BUFFERCLASS_INFO; | 336 | } PVRSRV_BRIDGE_IN_GET_BUFFERCLASS_INFO; |
309 | 337 | ||
310 | 338 | ||
311 | |||
312 | typedef struct PVRSRV_BRIDGE_IN_RELEASE_DEVICEINFO_TAG | 339 | typedef struct PVRSRV_BRIDGE_IN_RELEASE_DEVICEINFO_TAG |
313 | { | 340 | { |
314 | IMG_UINT32 ui32BridgeFlags; | 341 | IMG_UINT32 ui32BridgeFlags; |
342 | #if defined (SUPPORT_SID_INTERFACE) | ||
343 | IMG_SID hDevCookie; | ||
344 | #else | ||
315 | IMG_HANDLE hDevCookie; | 345 | IMG_HANDLE hDevCookie; |
346 | #endif | ||
316 | 347 | ||
317 | } PVRSRV_BRIDGE_IN_RELEASE_DEVICEINFO; | 348 | } PVRSRV_BRIDGE_IN_RELEASE_DEVICEINFO; |
318 | 349 | ||
319 | 350 | ||
320 | |||
321 | typedef struct PVRSRV_BRIDGE_IN_FREE_CLASSDEVICEINFO_TAG | 351 | typedef struct PVRSRV_BRIDGE_IN_FREE_CLASSDEVICEINFO_TAG |
322 | { | 352 | { |
323 | IMG_UINT32 ui32BridgeFlags; | 353 | IMG_UINT32 ui32BridgeFlags; |
@@ -327,85 +357,117 @@ typedef struct PVRSRV_BRIDGE_IN_FREE_CLASSDEVICEINFO_TAG | |||
327 | }PVRSRV_BRIDGE_IN_FREE_CLASSDEVICEINFO; | 357 | }PVRSRV_BRIDGE_IN_FREE_CLASSDEVICEINFO; |
328 | 358 | ||
329 | 359 | ||
330 | |||
331 | typedef struct PVRSRV_BRIDGE_IN_GET_DEVMEM_HEAPINFO_TAG | 360 | typedef struct PVRSRV_BRIDGE_IN_GET_DEVMEM_HEAPINFO_TAG |
332 | { | 361 | { |
333 | IMG_UINT32 ui32BridgeFlags; | 362 | IMG_UINT32 ui32BridgeFlags; |
363 | #if defined (SUPPORT_SID_INTERFACE) | ||
364 | IMG_SID hDevCookie; | ||
365 | IMG_SID hDevMemContext; | ||
366 | #else | ||
334 | IMG_HANDLE hDevCookie; | 367 | IMG_HANDLE hDevCookie; |
335 | IMG_HANDLE hDevMemContext; | 368 | IMG_HANDLE hDevMemContext; |
369 | #endif | ||
336 | 370 | ||
337 | }PVRSRV_BRIDGE_IN_GET_DEVMEM_HEAPINFO; | 371 | }PVRSRV_BRIDGE_IN_GET_DEVMEM_HEAPINFO; |
338 | 372 | ||
339 | 373 | ||
340 | |||
341 | typedef struct PVRSRV_BRIDGE_IN_CREATE_DEVMEMCONTEXT_TAG | 374 | typedef struct PVRSRV_BRIDGE_IN_CREATE_DEVMEMCONTEXT_TAG |
342 | { | 375 | { |
343 | IMG_UINT32 ui32BridgeFlags; | 376 | IMG_UINT32 ui32BridgeFlags; |
377 | #if defined (SUPPORT_SID_INTERFACE) | ||
378 | IMG_SID hDevCookie; | ||
379 | #else | ||
344 | IMG_HANDLE hDevCookie; | 380 | IMG_HANDLE hDevCookie; |
381 | #endif | ||
345 | 382 | ||
346 | }PVRSRV_BRIDGE_IN_CREATE_DEVMEMCONTEXT; | 383 | }PVRSRV_BRIDGE_IN_CREATE_DEVMEMCONTEXT; |
347 | 384 | ||
348 | 385 | ||
349 | |||
350 | typedef struct PVRSRV_BRIDGE_IN_DESTROY_DEVMEMCONTEXT_TAG | 386 | typedef struct PVRSRV_BRIDGE_IN_DESTROY_DEVMEMCONTEXT_TAG |
351 | { | 387 | { |
352 | IMG_UINT32 ui32BridgeFlags; | 388 | IMG_UINT32 ui32BridgeFlags; |
389 | #if defined (SUPPORT_SID_INTERFACE) | ||
390 | IMG_SID hDevCookie; | ||
391 | IMG_SID hDevMemContext; | ||
392 | #else | ||
353 | IMG_HANDLE hDevCookie; | 393 | IMG_HANDLE hDevCookie; |
354 | IMG_HANDLE hDevMemContext; | 394 | IMG_HANDLE hDevMemContext; |
395 | #endif | ||
355 | 396 | ||
356 | }PVRSRV_BRIDGE_IN_DESTROY_DEVMEMCONTEXT; | 397 | }PVRSRV_BRIDGE_IN_DESTROY_DEVMEMCONTEXT; |
357 | 398 | ||
358 | 399 | ||
359 | |||
360 | typedef struct PVRSRV_BRIDGE_IN_ALLOCDEVICEMEM_TAG | 400 | typedef struct PVRSRV_BRIDGE_IN_ALLOCDEVICEMEM_TAG |
361 | { | 401 | { |
362 | IMG_UINT32 ui32BridgeFlags; | 402 | IMG_UINT32 ui32BridgeFlags; |
403 | #if defined (SUPPORT_SID_INTERFACE) | ||
404 | IMG_SID hDevCookie; | ||
405 | IMG_SID hDevMemHeap; | ||
406 | #else | ||
363 | IMG_HANDLE hDevCookie; | 407 | IMG_HANDLE hDevCookie; |
364 | IMG_HANDLE hDevMemHeap; | 408 | IMG_HANDLE hDevMemHeap; |
409 | #endif | ||
365 | IMG_UINT32 ui32Attribs; | 410 | IMG_UINT32 ui32Attribs; |
366 | IMG_SIZE_T ui32Size; | 411 | IMG_SIZE_T ui32Size; |
367 | IMG_SIZE_T ui32Alignment; | 412 | IMG_SIZE_T ui32Alignment; |
368 | 413 | ||
369 | }PVRSRV_BRIDGE_IN_ALLOCDEVICEMEM; | 414 | }PVRSRV_BRIDGE_IN_ALLOCDEVICEMEM; |
370 | 415 | ||
371 | |||
372 | typedef struct PVRSRV_BRIDGE_IN_MAPMEMINFOTOUSER_TAG | 416 | typedef struct PVRSRV_BRIDGE_IN_MAPMEMINFOTOUSER_TAG |
373 | { | 417 | { |
374 | IMG_UINT32 ui32BridgeFlags; | 418 | IMG_UINT32 ui32BridgeFlags; |
419 | #if defined (SUPPORT_SID_INTERFACE) | ||
420 | IMG_SID hKernelMemInfo; | ||
421 | #else | ||
375 | PVRSRV_KERNEL_MEM_INFO *psKernelMemInfo; | 422 | PVRSRV_KERNEL_MEM_INFO *psKernelMemInfo; |
423 | #endif | ||
376 | 424 | ||
377 | }PVRSRV_BRIDGE_IN_MAPMEMINFOTOUSER; | 425 | }PVRSRV_BRIDGE_IN_MAPMEMINFOTOUSER; |
378 | 426 | ||
379 | |||
380 | typedef struct PVRSRV_BRIDGE_IN_UNMAPMEMINFOFROMUSER_TAG | 427 | typedef struct PVRSRV_BRIDGE_IN_UNMAPMEMINFOFROMUSER_TAG |
381 | { | 428 | { |
382 | IMG_UINT32 ui32BridgeFlags; | 429 | IMG_UINT32 ui32BridgeFlags; |
430 | #if defined (SUPPORT_SID_INTERFACE) | ||
431 | IMG_SID hKernelMemInfo; | ||
432 | #else | ||
383 | PVRSRV_KERNEL_MEM_INFO *psKernelMemInfo; | 433 | PVRSRV_KERNEL_MEM_INFO *psKernelMemInfo; |
434 | #endif | ||
384 | IMG_PVOID pvLinAddr; | 435 | IMG_PVOID pvLinAddr; |
436 | #if defined (SUPPORT_SID_INTERFACE) | ||
437 | IMG_SID hMappingInfo; | ||
438 | #else | ||
385 | IMG_HANDLE hMappingInfo; | 439 | IMG_HANDLE hMappingInfo; |
440 | #endif | ||
386 | 441 | ||
387 | }PVRSRV_BRIDGE_IN_UNMAPMEMINFOFROMUSER; | 442 | }PVRSRV_BRIDGE_IN_UNMAPMEMINFOFROMUSER; |
388 | 443 | ||
389 | |||
390 | typedef struct PVRSRV_BRIDGE_IN_FREEDEVICEMEM_TAG | 444 | typedef struct PVRSRV_BRIDGE_IN_FREEDEVICEMEM_TAG |
391 | { | 445 | { |
392 | IMG_UINT32 ui32BridgeFlags; | 446 | IMG_UINT32 ui32BridgeFlags; |
447 | #if defined (SUPPORT_SID_INTERFACE) | ||
448 | IMG_SID hDevCookie; | ||
449 | IMG_SID hKernelMemInfo; | ||
450 | #else | ||
393 | IMG_HANDLE hDevCookie; | 451 | IMG_HANDLE hDevCookie; |
394 | PVRSRV_KERNEL_MEM_INFO *psKernelMemInfo; | 452 | PVRSRV_KERNEL_MEM_INFO *psKernelMemInfo; |
395 | PVRSRV_CLIENT_MEM_INFO sClientMemInfo; | 453 | #endif |
454 | PVRSRV_CLIENT_MEM_INFO sClientMemInfo; | ||
396 | 455 | ||
397 | }PVRSRV_BRIDGE_IN_FREEDEVICEMEM; | 456 | }PVRSRV_BRIDGE_IN_FREEDEVICEMEM; |
398 | 457 | ||
399 | |||
400 | typedef struct PVRSRV_BRIDGE_IN_EXPORTDEVICEMEM_TAG | 458 | typedef struct PVRSRV_BRIDGE_IN_EXPORTDEVICEMEM_TAG |
401 | { | 459 | { |
402 | IMG_UINT32 ui32BridgeFlags; | 460 | IMG_UINT32 ui32BridgeFlags; |
461 | #if defined (SUPPORT_SID_INTERFACE) | ||
462 | IMG_SID hDevCookie; | ||
463 | IMG_SID hKernelMemInfo; | ||
464 | #else | ||
403 | IMG_HANDLE hDevCookie; | 465 | IMG_HANDLE hDevCookie; |
404 | PVRSRV_KERNEL_MEM_INFO *psKernelMemInfo; | 466 | PVRSRV_KERNEL_MEM_INFO *psKernelMemInfo; |
467 | #endif | ||
405 | 468 | ||
406 | }PVRSRV_BRIDGE_IN_EXPORTDEVICEMEM; | 469 | }PVRSRV_BRIDGE_IN_EXPORTDEVICEMEM; |
407 | 470 | ||
408 | |||
409 | typedef struct PVRSRV_BRIDGE_IN_GETFREEDEVICEMEM_TAG | 471 | typedef struct PVRSRV_BRIDGE_IN_GETFREEDEVICEMEM_TAG |
410 | { | 472 | { |
411 | IMG_UINT32 ui32BridgeFlags; | 473 | IMG_UINT32 ui32BridgeFlags; |
@@ -413,126 +475,163 @@ typedef struct PVRSRV_BRIDGE_IN_GETFREEDEVICEMEM_TAG | |||
413 | 475 | ||
414 | } PVRSRV_BRIDGE_IN_GETFREEDEVICEMEM; | 476 | } PVRSRV_BRIDGE_IN_GETFREEDEVICEMEM; |
415 | 477 | ||
416 | |||
417 | typedef struct PVRSRV_BRIDGE_IN_CREATECOMMANDQUEUE_TAG | 478 | typedef struct PVRSRV_BRIDGE_IN_CREATECOMMANDQUEUE_TAG |
418 | { | 479 | { |
419 | IMG_UINT32 ui32BridgeFlags; | 480 | IMG_UINT32 ui32BridgeFlags; |
481 | #if defined (SUPPORT_SID_INTERFACE) | ||
482 | IMG_SID hDevCookie; | ||
483 | #else | ||
420 | IMG_HANDLE hDevCookie; | 484 | IMG_HANDLE hDevCookie; |
485 | #endif | ||
421 | IMG_SIZE_T ui32QueueSize; | 486 | IMG_SIZE_T ui32QueueSize; |
422 | 487 | ||
423 | }PVRSRV_BRIDGE_IN_CREATECOMMANDQUEUE; | 488 | }PVRSRV_BRIDGE_IN_CREATECOMMANDQUEUE; |
424 | 489 | ||
425 | 490 | ||
426 | |||
427 | typedef struct PVRSRV_BRIDGE_IN_DESTROYCOMMANDQUEUE_TAG | 491 | typedef struct PVRSRV_BRIDGE_IN_DESTROYCOMMANDQUEUE_TAG |
428 | { | 492 | { |
429 | IMG_UINT32 ui32BridgeFlags; | 493 | IMG_UINT32 ui32BridgeFlags; |
494 | #if defined (SUPPORT_SID_INTERFACE) | ||
495 | IMG_SID hDevCookie; | ||
496 | #else | ||
430 | IMG_HANDLE hDevCookie; | 497 | IMG_HANDLE hDevCookie; |
498 | #endif | ||
431 | PVRSRV_QUEUE_INFO *psQueueInfo; | 499 | PVRSRV_QUEUE_INFO *psQueueInfo; |
432 | 500 | ||
433 | }PVRSRV_BRIDGE_IN_DESTROYCOMMANDQUEUE; | 501 | }PVRSRV_BRIDGE_IN_DESTROYCOMMANDQUEUE; |
434 | 502 | ||
435 | 503 | ||
436 | |||
437 | typedef struct PVRSRV_BRIDGE_IN_MHANDLE_TO_MMAP_DATA_TAG | 504 | typedef struct PVRSRV_BRIDGE_IN_MHANDLE_TO_MMAP_DATA_TAG |
438 | { | 505 | { |
439 | IMG_UINT32 ui32BridgeFlags; | 506 | IMG_UINT32 ui32BridgeFlags; |
507 | #if defined (SUPPORT_SID_INTERFACE) | ||
508 | IMG_SID hMHandle; | ||
509 | #else | ||
440 | IMG_HANDLE hMHandle; | 510 | IMG_HANDLE hMHandle; |
511 | #endif | ||
441 | } PVRSRV_BRIDGE_IN_MHANDLE_TO_MMAP_DATA; | 512 | } PVRSRV_BRIDGE_IN_MHANDLE_TO_MMAP_DATA; |
442 | 513 | ||
443 | 514 | ||
444 | |||
445 | typedef struct PVRSRV_BRIDGE_IN_RELEASE_MMAP_DATA_TAG | 515 | typedef struct PVRSRV_BRIDGE_IN_RELEASE_MMAP_DATA_TAG |
446 | { | 516 | { |
447 | IMG_UINT32 ui32BridgeFlags; | 517 | IMG_UINT32 ui32BridgeFlags; |
518 | #if defined (SUPPORT_SID_INTERFACE) | ||
519 | IMG_SID hMHandle; | ||
520 | #else | ||
448 | IMG_HANDLE hMHandle; | 521 | IMG_HANDLE hMHandle; |
522 | #endif | ||
449 | } PVRSRV_BRIDGE_IN_RELEASE_MMAP_DATA; | 523 | } PVRSRV_BRIDGE_IN_RELEASE_MMAP_DATA; |
450 | 524 | ||
451 | 525 | ||
452 | |||
453 | typedef struct PVRSRV_BRIDGE_IN_RESERVE_DEV_VIRTMEM_TAG | 526 | typedef struct PVRSRV_BRIDGE_IN_RESERVE_DEV_VIRTMEM_TAG |
454 | { | 527 | { |
455 | IMG_UINT32 ui32BridgeFlags; | 528 | IMG_UINT32 ui32BridgeFlags; |
529 | #if defined (SUPPORT_SID_INTERFACE) | ||
530 | IMG_SID hDevMemHeap; | ||
531 | #else | ||
456 | IMG_HANDLE hDevMemHeap; | 532 | IMG_HANDLE hDevMemHeap; |
533 | #endif | ||
457 | IMG_DEV_VIRTADDR *psDevVAddr; | 534 | IMG_DEV_VIRTADDR *psDevVAddr; |
458 | IMG_SIZE_T ui32Size; | 535 | IMG_SIZE_T ui32Size; |
459 | IMG_SIZE_T ui32Alignment; | 536 | IMG_SIZE_T ui32Alignment; |
460 | 537 | ||
461 | }PVRSRV_BRIDGE_IN_RESERVE_DEV_VIRTMEM; | 538 | }PVRSRV_BRIDGE_IN_RESERVE_DEV_VIRTMEM; |
462 | 539 | ||
463 | |||
464 | typedef struct PVRSRV_BRIDGE_OUT_CONNECT_SERVICES_TAG | 540 | typedef struct PVRSRV_BRIDGE_OUT_CONNECT_SERVICES_TAG |
465 | { | 541 | { |
466 | PVRSRV_ERROR eError; | 542 | PVRSRV_ERROR eError; |
543 | #if defined (SUPPORT_SID_INTERFACE) | ||
544 | IMG_SID hKernelServices; | ||
545 | #else | ||
467 | IMG_HANDLE hKernelServices; | 546 | IMG_HANDLE hKernelServices; |
547 | #endif | ||
468 | }PVRSRV_BRIDGE_OUT_CONNECT_SERVICES; | 548 | }PVRSRV_BRIDGE_OUT_CONNECT_SERVICES; |
469 | 549 | ||
470 | |||
471 | typedef struct PVRSRV_BRIDGE_OUT_RESERVE_DEV_VIRTMEM_TAG | 550 | typedef struct PVRSRV_BRIDGE_OUT_RESERVE_DEV_VIRTMEM_TAG |
472 | { | 551 | { |
473 | PVRSRV_ERROR eError; | 552 | PVRSRV_ERROR eError; |
553 | #if defined (SUPPORT_SID_INTERFACE) | ||
554 | IMG_SID hKernelMemInfo; | ||
555 | IMG_SID hKernelSyncInfo; | ||
556 | #else | ||
474 | PVRSRV_KERNEL_MEM_INFO *psKernelMemInfo; | 557 | PVRSRV_KERNEL_MEM_INFO *psKernelMemInfo; |
475 | PVRSRV_KERNEL_SYNC_INFO *psKernelSyncInfo; | 558 | PVRSRV_KERNEL_SYNC_INFO *psKernelSyncInfo; |
476 | PVRSRV_CLIENT_MEM_INFO sClientMemInfo; | 559 | #endif |
477 | PVRSRV_CLIENT_SYNC_INFO sClientSyncInfo; | 560 | PVRSRV_CLIENT_MEM_INFO sClientMemInfo; |
561 | PVRSRV_CLIENT_SYNC_INFO sClientSyncInfo; | ||
478 | 562 | ||
479 | }PVRSRV_BRIDGE_OUT_RESERVE_DEV_VIRTMEM; | 563 | }PVRSRV_BRIDGE_OUT_RESERVE_DEV_VIRTMEM; |
480 | 564 | ||
481 | 565 | ||
482 | |||
483 | typedef struct PVRSRV_BRIDGE_IN_FREE_DEV_VIRTMEM_TAG | 566 | typedef struct PVRSRV_BRIDGE_IN_FREE_DEV_VIRTMEM_TAG |
484 | { | 567 | { |
485 | IMG_UINT32 ui32BridgeFlags; | 568 | IMG_UINT32 ui32BridgeFlags; |
569 | #if defined (SUPPORT_SID_INTERFACE) | ||
570 | IMG_SID hKernelMemInfo; | ||
571 | #else | ||
486 | PVRSRV_KERNEL_MEM_INFO *psKernelMemInfo; | 572 | PVRSRV_KERNEL_MEM_INFO *psKernelMemInfo; |
487 | PVRSRV_CLIENT_MEM_INFO sClientMemInfo; | 573 | #endif |
488 | PVRSRV_CLIENT_SYNC_INFO sClientSyncInfo; | 574 | PVRSRV_CLIENT_MEM_INFO sClientMemInfo; |
575 | PVRSRV_CLIENT_SYNC_INFO sClientSyncInfo; | ||
489 | 576 | ||
490 | }PVRSRV_BRIDGE_IN_FREE_DEV_VIRTMEM; | 577 | }PVRSRV_BRIDGE_IN_FREE_DEV_VIRTMEM; |
491 | 578 | ||
492 | 579 | ||
493 | |||
494 | typedef struct PVRSRV_BRIDGE_IN_MAP_DEV_MEMORY_TAG | 580 | typedef struct PVRSRV_BRIDGE_IN_MAP_DEV_MEMORY_TAG |
495 | { | 581 | { |
496 | IMG_UINT32 ui32BridgeFlags; | 582 | IMG_UINT32 ui32BridgeFlags; |
583 | #if defined (SUPPORT_SID_INTERFACE) | ||
584 | IMG_SID hKernelMemInfo; | ||
585 | IMG_SID hDstDevMemHeap; | ||
586 | #else | ||
497 | IMG_HANDLE hKernelMemInfo; | 587 | IMG_HANDLE hKernelMemInfo; |
498 | IMG_HANDLE hDstDevMemHeap; | 588 | IMG_HANDLE hDstDevMemHeap; |
589 | #endif | ||
499 | 590 | ||
500 | }PVRSRV_BRIDGE_IN_MAP_DEV_MEMORY; | 591 | }PVRSRV_BRIDGE_IN_MAP_DEV_MEMORY; |
501 | 592 | ||
502 | 593 | ||
503 | |||
504 | typedef struct PVRSRV_BRIDGE_OUT_MAP_DEV_MEMORY_TAG | 594 | typedef struct PVRSRV_BRIDGE_OUT_MAP_DEV_MEMORY_TAG |
505 | { | 595 | { |
506 | PVRSRV_ERROR eError; | 596 | PVRSRV_ERROR eError; |
597 | #if defined (SUPPORT_SID_INTERFACE) | ||
598 | IMG_SID hDstKernelMemInfo; | ||
599 | #else | ||
507 | PVRSRV_KERNEL_MEM_INFO *psDstKernelMemInfo; | 600 | PVRSRV_KERNEL_MEM_INFO *psDstKernelMemInfo; |
508 | PVRSRV_CLIENT_MEM_INFO sDstClientMemInfo; | 601 | #endif |
509 | PVRSRV_CLIENT_SYNC_INFO sDstClientSyncInfo; | 602 | PVRSRV_CLIENT_MEM_INFO sDstClientMemInfo; |
603 | PVRSRV_CLIENT_SYNC_INFO sDstClientSyncInfo; | ||
510 | 604 | ||
511 | }PVRSRV_BRIDGE_OUT_MAP_DEV_MEMORY; | 605 | }PVRSRV_BRIDGE_OUT_MAP_DEV_MEMORY; |
512 | 606 | ||
513 | 607 | ||
514 | |||
515 | typedef struct PVRSRV_BRIDGE_IN_UNMAP_DEV_MEMORY_TAG | 608 | typedef struct PVRSRV_BRIDGE_IN_UNMAP_DEV_MEMORY_TAG |
516 | { | 609 | { |
517 | IMG_UINT32 ui32BridgeFlags; | 610 | IMG_UINT32 ui32BridgeFlags; |
611 | #if defined (SUPPORT_SID_INTERFACE) | ||
612 | IMG_SID hKernelMemInfo; | ||
613 | #else | ||
518 | PVRSRV_KERNEL_MEM_INFO *psKernelMemInfo; | 614 | PVRSRV_KERNEL_MEM_INFO *psKernelMemInfo; |
519 | PVRSRV_CLIENT_MEM_INFO sClientMemInfo; | 615 | #endif |
520 | PVRSRV_CLIENT_SYNC_INFO sClientSyncInfo; | 616 | PVRSRV_CLIENT_MEM_INFO sClientMemInfo; |
617 | PVRSRV_CLIENT_SYNC_INFO sClientSyncInfo; | ||
521 | 618 | ||
522 | }PVRSRV_BRIDGE_IN_UNMAP_DEV_MEMORY; | 619 | }PVRSRV_BRIDGE_IN_UNMAP_DEV_MEMORY; |
523 | 620 | ||
524 | 621 | ||
525 | |||
526 | typedef struct PVRSRV_BRIDGE_IN_MAP_EXT_MEMORY_TAG | 622 | typedef struct PVRSRV_BRIDGE_IN_MAP_EXT_MEMORY_TAG |
527 | { | 623 | { |
528 | IMG_UINT32 ui32BridgeFlags; | 624 | IMG_UINT32 ui32BridgeFlags; |
625 | #if defined (SUPPORT_SID_INTERFACE) | ||
626 | IMG_SID hKernelMemInfo; | ||
627 | #else | ||
529 | PVRSRV_KERNEL_MEM_INFO *psKernelMemInfo; | 628 | PVRSRV_KERNEL_MEM_INFO *psKernelMemInfo; |
530 | IMG_SYS_PHYADDR *psSysPAddr; | 629 | #endif |
531 | IMG_UINT32 ui32Flags; | 630 | IMG_SYS_PHYADDR *psSysPAddr; |
631 | IMG_UINT32 ui32Flags; | ||
532 | 632 | ||
533 | }PVRSRV_BRIDGE_IN_MAP_EXT_MEMORY; | 633 | }PVRSRV_BRIDGE_IN_MAP_EXT_MEMORY; |
534 | 634 | ||
535 | |||
536 | typedef struct PVRSRV_BRIDGE_IN_UNMAP_EXT_MEMORY_TAG | 635 | typedef struct PVRSRV_BRIDGE_IN_UNMAP_EXT_MEMORY_TAG |
537 | { | 636 | { |
538 | IMG_UINT32 ui32BridgeFlags; | 637 | IMG_UINT32 ui32BridgeFlags; |
@@ -542,44 +641,58 @@ typedef struct PVRSRV_BRIDGE_IN_UNMAP_EXT_MEMORY_TAG | |||
542 | 641 | ||
543 | }PVRSRV_BRIDGE_IN_UNMAP_EXT_MEMORY; | 642 | }PVRSRV_BRIDGE_IN_UNMAP_EXT_MEMORY; |
544 | 643 | ||
545 | |||
546 | typedef struct PVRSRV_BRIDGE_IN_MAP_DEVICECLASS_MEMORY_TAG | 644 | typedef struct PVRSRV_BRIDGE_IN_MAP_DEVICECLASS_MEMORY_TAG |
547 | { | 645 | { |
548 | IMG_UINT32 ui32BridgeFlags; | 646 | IMG_UINT32 ui32BridgeFlags; |
647 | #if defined (SUPPORT_SID_INTERFACE) | ||
648 | IMG_SID hDeviceClassBuffer; | ||
649 | IMG_SID hDevMemContext; | ||
650 | #else | ||
549 | IMG_HANDLE hDeviceClassBuffer; | 651 | IMG_HANDLE hDeviceClassBuffer; |
550 | IMG_HANDLE hDevMemContext; | 652 | IMG_HANDLE hDevMemContext; |
653 | #endif | ||
551 | 654 | ||
552 | }PVRSRV_BRIDGE_IN_MAP_DEVICECLASS_MEMORY; | 655 | }PVRSRV_BRIDGE_IN_MAP_DEVICECLASS_MEMORY; |
553 | 656 | ||
554 | 657 | ||
555 | |||
556 | typedef struct PVRSRV_BRIDGE_OUT_MAP_DEVICECLASS_MEMORY_TAG | 658 | typedef struct PVRSRV_BRIDGE_OUT_MAP_DEVICECLASS_MEMORY_TAG |
557 | { | 659 | { |
558 | PVRSRV_ERROR eError; | 660 | PVRSRV_ERROR eError; |
559 | PVRSRV_CLIENT_MEM_INFO sClientMemInfo; | 661 | PVRSRV_CLIENT_MEM_INFO sClientMemInfo; |
560 | PVRSRV_CLIENT_SYNC_INFO sClientSyncInfo; | 662 | PVRSRV_CLIENT_SYNC_INFO sClientSyncInfo; |
663 | #if defined (SUPPORT_SID_INTERFACE) | ||
664 | IMG_SID hKernelMemInfo; | ||
665 | IMG_SID hMappingInfo; | ||
666 | #else | ||
561 | PVRSRV_KERNEL_MEM_INFO *psKernelMemInfo; | 667 | PVRSRV_KERNEL_MEM_INFO *psKernelMemInfo; |
562 | IMG_HANDLE hMappingInfo; | 668 | IMG_HANDLE hMappingInfo; |
669 | #endif | ||
563 | 670 | ||
564 | }PVRSRV_BRIDGE_OUT_MAP_DEVICECLASS_MEMORY; | 671 | }PVRSRV_BRIDGE_OUT_MAP_DEVICECLASS_MEMORY; |
565 | 672 | ||
566 | 673 | ||
567 | |||
568 | typedef struct PVRSRV_BRIDGE_IN_UNMAP_DEVICECLASS_MEMORY_TAG | 674 | typedef struct PVRSRV_BRIDGE_IN_UNMAP_DEVICECLASS_MEMORY_TAG |
569 | { | 675 | { |
570 | IMG_UINT32 ui32BridgeFlags; | 676 | IMG_UINT32 ui32BridgeFlags; |
677 | #if defined (SUPPORT_SID_INTERFACE) | ||
678 | IMG_SID hKernelMemInfo; | ||
679 | #else | ||
571 | PVRSRV_KERNEL_MEM_INFO *psKernelMemInfo; | 680 | PVRSRV_KERNEL_MEM_INFO *psKernelMemInfo; |
572 | PVRSRV_CLIENT_MEM_INFO sClientMemInfo; | 681 | #endif |
573 | PVRSRV_CLIENT_SYNC_INFO sClientSyncInfo; | 682 | PVRSRV_CLIENT_MEM_INFO sClientMemInfo; |
683 | PVRSRV_CLIENT_SYNC_INFO sClientSyncInfo; | ||
574 | 684 | ||
575 | }PVRSRV_BRIDGE_IN_UNMAP_DEVICECLASS_MEMORY; | 685 | }PVRSRV_BRIDGE_IN_UNMAP_DEVICECLASS_MEMORY; |
576 | 686 | ||
577 | 687 | ||
578 | |||
579 | typedef struct PVRSRV_BRIDGE_IN_PDUMP_MEMPOL_TAG | 688 | typedef struct PVRSRV_BRIDGE_IN_PDUMP_MEMPOL_TAG |
580 | { | 689 | { |
581 | IMG_UINT32 ui32BridgeFlags; | 690 | IMG_UINT32 ui32BridgeFlags; |
691 | #if defined (SUPPORT_SID_INTERFACE) | ||
692 | IMG_SID hKernelMemInfo; | ||
693 | #else | ||
582 | PVRSRV_KERNEL_MEM_INFO *psKernelMemInfo; | 694 | PVRSRV_KERNEL_MEM_INFO *psKernelMemInfo; |
695 | #endif | ||
583 | IMG_UINT32 ui32Offset; | 696 | IMG_UINT32 ui32Offset; |
584 | IMG_UINT32 ui32Value; | 697 | IMG_UINT32 ui32Value; |
585 | IMG_UINT32 ui32Mask; | 698 | IMG_UINT32 ui32Mask; |
@@ -588,25 +701,32 @@ typedef struct PVRSRV_BRIDGE_IN_PDUMP_MEMPOL_TAG | |||
588 | 701 | ||
589 | }PVRSRV_BRIDGE_IN_PDUMP_MEMPOL; | 702 | }PVRSRV_BRIDGE_IN_PDUMP_MEMPOL; |
590 | 703 | ||
591 | |||
592 | typedef struct PVRSRV_BRIDGE_IN_PDUMP_SYNCPOL_TAG | 704 | typedef struct PVRSRV_BRIDGE_IN_PDUMP_SYNCPOL_TAG |
593 | { | 705 | { |
594 | IMG_UINT32 ui32BridgeFlags; | 706 | IMG_UINT32 ui32BridgeFlags; |
707 | #if defined (SUPPORT_SID_INTERFACE) | ||
708 | IMG_SID hKernelSyncInfo; | ||
709 | #else | ||
595 | PVRSRV_KERNEL_SYNC_INFO *psKernelSyncInfo; | 710 | PVRSRV_KERNEL_SYNC_INFO *psKernelSyncInfo; |
596 | IMG_BOOL bIsRead; | 711 | #endif |
712 | IMG_BOOL bIsRead; | ||
713 | IMG_BOOL bUseLastOpDumpVal; | ||
597 | IMG_UINT32 ui32Value; | 714 | IMG_UINT32 ui32Value; |
598 | IMG_UINT32 ui32Mask; | 715 | IMG_UINT32 ui32Mask; |
599 | 716 | ||
600 | }PVRSRV_BRIDGE_IN_PDUMP_SYNCPOL; | 717 | }PVRSRV_BRIDGE_IN_PDUMP_SYNCPOL; |
601 | 718 | ||
602 | 719 | ||
603 | |||
604 | typedef struct PVRSRV_BRIDGE_IN_PDUMP_DUMPMEM_TAG | 720 | typedef struct PVRSRV_BRIDGE_IN_PDUMP_DUMPMEM_TAG |
605 | { | 721 | { |
606 | IMG_UINT32 ui32BridgeFlags; | 722 | IMG_UINT32 ui32BridgeFlags; |
607 | IMG_PVOID pvLinAddr; | 723 | IMG_PVOID pvLinAddr; |
608 | IMG_PVOID pvAltLinAddr; | 724 | IMG_PVOID pvAltLinAddr; |
725 | #if defined (SUPPORT_SID_INTERFACE) | ||
726 | IMG_SID hKernelMemInfo; | ||
727 | #else | ||
609 | PVRSRV_KERNEL_MEM_INFO *psKernelMemInfo; | 728 | PVRSRV_KERNEL_MEM_INFO *psKernelMemInfo; |
729 | #endif | ||
610 | IMG_UINT32 ui32Offset; | 730 | IMG_UINT32 ui32Offset; |
611 | IMG_UINT32 ui32Bytes; | 731 | IMG_UINT32 ui32Bytes; |
612 | IMG_UINT32 ui32Flags; | 732 | IMG_UINT32 ui32Flags; |
@@ -614,41 +734,49 @@ typedef struct PVRSRV_BRIDGE_IN_PDUMP_DUMPMEM_TAG | |||
614 | }PVRSRV_BRIDGE_IN_PDUMP_DUMPMEM; | 734 | }PVRSRV_BRIDGE_IN_PDUMP_DUMPMEM; |
615 | 735 | ||
616 | 736 | ||
617 | |||
618 | typedef struct PVRSRV_BRIDGE_IN_PDUMP_DUMPSYNC_TAG | 737 | typedef struct PVRSRV_BRIDGE_IN_PDUMP_DUMPSYNC_TAG |
619 | { | 738 | { |
620 | IMG_UINT32 ui32BridgeFlags; | 739 | IMG_UINT32 ui32BridgeFlags; |
621 | IMG_PVOID pvAltLinAddr; | 740 | IMG_PVOID pvAltLinAddr; |
741 | #if defined (SUPPORT_SID_INTERFACE) | ||
742 | IMG_SID hKernelSyncInfo; | ||
743 | #else | ||
622 | PVRSRV_KERNEL_SYNC_INFO *psKernelSyncInfo; | 744 | PVRSRV_KERNEL_SYNC_INFO *psKernelSyncInfo; |
745 | #endif | ||
623 | IMG_UINT32 ui32Offset; | 746 | IMG_UINT32 ui32Offset; |
624 | IMG_UINT32 ui32Bytes; | 747 | IMG_UINT32 ui32Bytes; |
625 | 748 | ||
626 | }PVRSRV_BRIDGE_IN_PDUMP_DUMPSYNC; | 749 | }PVRSRV_BRIDGE_IN_PDUMP_DUMPSYNC; |
627 | 750 | ||
628 | 751 | ||
629 | |||
630 | typedef struct PVRSRV_BRIDGE_IN_PDUMP_DUMPREG_TAG | 752 | typedef struct PVRSRV_BRIDGE_IN_PDUMP_DUMPREG_TAG |
631 | { | 753 | { |
632 | IMG_UINT32 ui32BridgeFlags; | 754 | IMG_UINT32 ui32BridgeFlags; |
755 | #if defined (SUPPORT_SID_INTERFACE) | ||
756 | IMG_SID hDevCookie; | ||
757 | #else | ||
633 | IMG_HANDLE hDevCookie; | 758 | IMG_HANDLE hDevCookie; |
759 | #endif | ||
634 | PVRSRV_HWREG sHWReg; | 760 | PVRSRV_HWREG sHWReg; |
635 | IMG_UINT32 ui32Flags; | 761 | IMG_UINT32 ui32Flags; |
636 | IMG_CHAR szRegRegion[32]; | 762 | IMG_CHAR szRegRegion[32]; |
637 | 763 | ||
638 | }PVRSRV_BRIDGE_IN_PDUMP_DUMPREG; | 764 | }PVRSRV_BRIDGE_IN_PDUMP_DUMPREG; |
639 | 765 | ||
640 | |||
641 | typedef struct PVRSRV_BRIDGE_IN_PDUMP_REGPOL_TAG | 766 | typedef struct PVRSRV_BRIDGE_IN_PDUMP_REGPOL_TAG |
642 | { | 767 | { |
643 | IMG_UINT32 ui32BridgeFlags; | 768 | IMG_UINT32 ui32BridgeFlags; |
769 | #if defined (SUPPORT_SID_INTERFACE) | ||
770 | IMG_SID hDevCookie; | ||
771 | #else | ||
644 | IMG_HANDLE hDevCookie; | 772 | IMG_HANDLE hDevCookie; |
773 | #endif | ||
645 | PVRSRV_HWREG sHWReg; | 774 | PVRSRV_HWREG sHWReg; |
646 | IMG_UINT32 ui32Mask; | 775 | IMG_UINT32 ui32Mask; |
647 | IMG_UINT32 ui32Flags; | 776 | IMG_UINT32 ui32Flags; |
648 | IMG_CHAR szRegRegion[32]; | 777 | IMG_CHAR szRegRegion[32]; |
649 | }PVRSRV_BRIDGE_IN_PDUMP_REGPOL; | 778 | }PVRSRV_BRIDGE_IN_PDUMP_REGPOL; |
650 | 779 | ||
651 | |||
652 | typedef struct PVRSRV_BRIDGE_IN_PDUMP_DUMPPDREG_TAG | 780 | typedef struct PVRSRV_BRIDGE_IN_PDUMP_DUMPPDREG_TAG |
653 | { | 781 | { |
654 | IMG_UINT32 ui32BridgeFlags; | 782 | IMG_UINT32 ui32BridgeFlags; |
@@ -657,21 +785,25 @@ typedef struct PVRSRV_BRIDGE_IN_PDUMP_DUMPPDREG_TAG | |||
657 | 785 | ||
658 | }PVRSRV_BRIDGE_IN_PDUMP_DUMPPDREG; | 786 | }PVRSRV_BRIDGE_IN_PDUMP_DUMPPDREG; |
659 | 787 | ||
660 | |||
661 | typedef struct PVRSRV_BRIDGE_IN_PDUMP_MEMPAGES_TAG | 788 | typedef struct PVRSRV_BRIDGE_IN_PDUMP_MEMPAGES_TAG |
662 | { | 789 | { |
663 | IMG_UINT32 ui32BridgeFlags; | 790 | IMG_UINT32 ui32BridgeFlags; |
791 | #if defined (SUPPORT_SID_INTERFACE) | ||
792 | IMG_SID hDevCookie; | ||
793 | IMG_SID hKernelMemInfo; | ||
794 | #else | ||
795 | IMG_HANDLE hDevCookie; | ||
664 | IMG_HANDLE hKernelMemInfo; | 796 | IMG_HANDLE hKernelMemInfo; |
797 | #endif | ||
665 | IMG_DEV_PHYADDR *pPages; | 798 | IMG_DEV_PHYADDR *pPages; |
666 | IMG_UINT32 ui32NumPages; | 799 | IMG_UINT32 ui32NumPages; |
667 | IMG_DEV_VIRTADDR sDevAddr; | 800 | IMG_DEV_VIRTADDR sDevVAddr; |
668 | IMG_UINT32 ui32Start; | 801 | IMG_UINT32 ui32Start; |
669 | IMG_UINT32 ui32Length; | 802 | IMG_UINT32 ui32Length; |
670 | IMG_BOOL bContinuous; | 803 | IMG_UINT32 ui32Flags; |
671 | 804 | ||
672 | }PVRSRV_BRIDGE_IN_PDUMP_MEMPAGES; | 805 | }PVRSRV_BRIDGE_IN_PDUMP_MEMPAGES; |
673 | 806 | ||
674 | |||
675 | typedef struct PVRSRV_BRIDGE_IN_PDUMP_COMMENT_TAG | 807 | typedef struct PVRSRV_BRIDGE_IN_PDUMP_COMMENT_TAG |
676 | { | 808 | { |
677 | IMG_UINT32 ui32BridgeFlags; | 809 | IMG_UINT32 ui32BridgeFlags; |
@@ -681,7 +813,6 @@ typedef struct PVRSRV_BRIDGE_IN_PDUMP_COMMENT_TAG | |||
681 | }PVRSRV_BRIDGE_IN_PDUMP_COMMENT; | 813 | }PVRSRV_BRIDGE_IN_PDUMP_COMMENT; |
682 | 814 | ||
683 | 815 | ||
684 | |||
685 | typedef struct PVRSRV_BRIDGE_IN_PDUMP_SETFRAME_TAG | 816 | typedef struct PVRSRV_BRIDGE_IN_PDUMP_SETFRAME_TAG |
686 | { | 817 | { |
687 | IMG_UINT32 ui32BridgeFlags; | 818 | IMG_UINT32 ui32BridgeFlags; |
@@ -690,19 +821,25 @@ typedef struct PVRSRV_BRIDGE_IN_PDUMP_SETFRAME_TAG | |||
690 | }PVRSRV_BRIDGE_IN_PDUMP_SETFRAME; | 821 | }PVRSRV_BRIDGE_IN_PDUMP_SETFRAME; |
691 | 822 | ||
692 | 823 | ||
693 | |||
694 | |||
695 | typedef struct PVRSRV_BRIDGE_IN_PDUMP_BITMAP_TAG | 824 | typedef struct PVRSRV_BRIDGE_IN_PDUMP_BITMAP_TAG |
696 | { | 825 | { |
697 | IMG_UINT32 ui32BridgeFlags; | 826 | IMG_UINT32 ui32BridgeFlags; |
827 | #if defined (SUPPORT_SID_INTERFACE) | ||
828 | IMG_SID hDevCookie; | ||
829 | #else | ||
698 | IMG_HANDLE hDevCookie; | 830 | IMG_HANDLE hDevCookie; |
699 | IMG_CHAR szFileName[PVRSRV_PDUMP_MAX_FILENAME_SIZE]; | 831 | #endif |
832 | IMG_CHAR szFileName[PVRSRV_PDUMP_MAX_FILENAME_SIZE]; | ||
700 | IMG_UINT32 ui32FileOffset; | 833 | IMG_UINT32 ui32FileOffset; |
701 | IMG_UINT32 ui32Width; | 834 | IMG_UINT32 ui32Width; |
702 | IMG_UINT32 ui32Height; | 835 | IMG_UINT32 ui32Height; |
703 | IMG_UINT32 ui32StrideInBytes; | 836 | IMG_UINT32 ui32StrideInBytes; |
704 | IMG_DEV_VIRTADDR sDevBaseAddr; | 837 | IMG_DEV_VIRTADDR sDevBaseAddr; |
838 | #if defined (SUPPORT_SID_INTERFACE) | ||
839 | IMG_SID hDevMemContext; | ||
840 | #else | ||
705 | IMG_HANDLE hDevMemContext; | 841 | IMG_HANDLE hDevMemContext; |
842 | #endif | ||
706 | IMG_UINT32 ui32Size; | 843 | IMG_UINT32 ui32Size; |
707 | PDUMP_PIXEL_FORMAT ePixelFormat; | 844 | PDUMP_PIXEL_FORMAT ePixelFormat; |
708 | PDUMP_MEM_FORMAT eMemFormat; | 845 | PDUMP_MEM_FORMAT eMemFormat; |
@@ -711,21 +848,23 @@ typedef struct PVRSRV_BRIDGE_IN_PDUMP_BITMAP_TAG | |||
711 | }PVRSRV_BRIDGE_IN_PDUMP_BITMAP; | 848 | }PVRSRV_BRIDGE_IN_PDUMP_BITMAP; |
712 | 849 | ||
713 | 850 | ||
714 | |||
715 | typedef struct PVRSRV_BRIDGE_IN_PDUMP_READREG_TAG | 851 | typedef struct PVRSRV_BRIDGE_IN_PDUMP_READREG_TAG |
716 | { | 852 | { |
717 | IMG_UINT32 ui32BridgeFlags; | 853 | IMG_UINT32 ui32BridgeFlags; |
854 | #if defined (SUPPORT_SID_INTERFACE) | ||
855 | IMG_SID hDevCookie; | ||
856 | #else | ||
718 | IMG_HANDLE hDevCookie; | 857 | IMG_HANDLE hDevCookie; |
719 | IMG_CHAR szFileName[PVRSRV_PDUMP_MAX_FILENAME_SIZE]; | 858 | #endif |
859 | IMG_CHAR szFileName[PVRSRV_PDUMP_MAX_FILENAME_SIZE]; | ||
720 | IMG_UINT32 ui32FileOffset; | 860 | IMG_UINT32 ui32FileOffset; |
721 | IMG_UINT32 ui32Address; | 861 | IMG_UINT32 ui32Address; |
722 | IMG_UINT32 ui32Size; | 862 | IMG_UINT32 ui32Size; |
723 | IMG_UINT32 ui32Flags; | 863 | IMG_UINT32 ui32Flags; |
724 | IMG_CHAR szRegRegion[32]; | 864 | IMG_CHAR szRegRegion[32]; |
725 | 865 | ||
726 | }PVRSRV_BRIDGE_IN_PDUMP_READREG; | 866 | }PVRSRV_BRIDGE_IN_PDUMP_READREG; |
727 | 867 | ||
728 | |||
729 | typedef struct PVRSRV_BRIDGE_IN_PDUMP_DRIVERINFO_TAG | 868 | typedef struct PVRSRV_BRIDGE_IN_PDUMP_DRIVERINFO_TAG |
730 | { | 869 | { |
731 | IMG_UINT32 ui32BridgeFlags; | 870 | IMG_UINT32 ui32BridgeFlags; |
@@ -737,21 +876,27 @@ typedef struct PVRSRV_BRIDGE_IN_PDUMP_DRIVERINFO_TAG | |||
737 | typedef struct PVRSRV_BRIDGE_IN_PDUMP_DUMPPDDEVPADDR_TAG | 876 | typedef struct PVRSRV_BRIDGE_IN_PDUMP_DUMPPDDEVPADDR_TAG |
738 | { | 877 | { |
739 | IMG_UINT32 ui32BridgeFlags; | 878 | IMG_UINT32 ui32BridgeFlags; |
879 | #if defined (SUPPORT_SID_INTERFACE) | ||
880 | IMG_SID hKernelMemInfo; | ||
881 | #else | ||
740 | IMG_HANDLE hKernelMemInfo; | 882 | IMG_HANDLE hKernelMemInfo; |
883 | #endif | ||
741 | IMG_UINT32 ui32Offset; | 884 | IMG_UINT32 ui32Offset; |
742 | IMG_DEV_PHYADDR sPDDevPAddr; | 885 | IMG_DEV_PHYADDR sPDDevPAddr; |
743 | }PVRSRV_BRIDGE_IN_PDUMP_DUMPPDDEVPADDR; | 886 | }PVRSRV_BRIDGE_IN_PDUMP_DUMPPDDEVPADDR; |
744 | 887 | ||
745 | |||
746 | typedef struct PVRSRV_BRIDGE_PDUM_IN_CYCLE_COUNT_REG_READ_TAG | 888 | typedef struct PVRSRV_BRIDGE_PDUM_IN_CYCLE_COUNT_REG_READ_TAG |
747 | { | 889 | { |
748 | IMG_UINT32 ui32BridgeFlags; | 890 | IMG_UINT32 ui32BridgeFlags; |
891 | #if defined (SUPPORT_SID_INTERFACE) | ||
892 | IMG_SID hDevCookie; | ||
893 | #else | ||
749 | IMG_HANDLE hDevCookie; | 894 | IMG_HANDLE hDevCookie; |
895 | #endif | ||
750 | IMG_UINT32 ui32RegOffset; | 896 | IMG_UINT32 ui32RegOffset; |
751 | IMG_BOOL bLastFrame; | 897 | IMG_BOOL bLastFrame; |
752 | }PVRSRV_BRIDGE_IN_PDUMP_CYCLE_COUNT_REG_READ; | 898 | }PVRSRV_BRIDGE_IN_PDUMP_CYCLE_COUNT_REG_READ; |
753 | 899 | ||
754 | |||
755 | typedef struct PVRSRV_BRIDGE_OUT_ENUMDEVICE_TAG | 900 | typedef struct PVRSRV_BRIDGE_OUT_ENUMDEVICE_TAG |
756 | { | 901 | { |
757 | PVRSRV_ERROR eError; | 902 | PVRSRV_ERROR eError; |
@@ -761,17 +906,19 @@ typedef struct PVRSRV_BRIDGE_OUT_ENUMDEVICE_TAG | |||
761 | }PVRSRV_BRIDGE_OUT_ENUMDEVICE; | 906 | }PVRSRV_BRIDGE_OUT_ENUMDEVICE; |
762 | 907 | ||
763 | 908 | ||
764 | |||
765 | typedef struct PVRSRV_BRIDGE_OUT_ACQUIRE_DEVICEINFO_TAG | 909 | typedef struct PVRSRV_BRIDGE_OUT_ACQUIRE_DEVICEINFO_TAG |
766 | { | 910 | { |
767 | 911 | ||
768 | PVRSRV_ERROR eError; | 912 | PVRSRV_ERROR eError; |
913 | #if defined (SUPPORT_SID_INTERFACE) | ||
914 | IMG_SID hDevCookie; | ||
915 | #else | ||
769 | IMG_HANDLE hDevCookie; | 916 | IMG_HANDLE hDevCookie; |
917 | #endif | ||
770 | 918 | ||
771 | } PVRSRV_BRIDGE_OUT_ACQUIRE_DEVICEINFO; | 919 | } PVRSRV_BRIDGE_OUT_ACQUIRE_DEVICEINFO; |
772 | 920 | ||
773 | 921 | ||
774 | |||
775 | typedef struct PVRSRV_BRIDGE_OUT_ENUMCLASS_TAG | 922 | typedef struct PVRSRV_BRIDGE_OUT_ENUMCLASS_TAG |
776 | { | 923 | { |
777 | PVRSRV_ERROR eError; | 924 | PVRSRV_ERROR eError; |
@@ -781,30 +928,40 @@ typedef struct PVRSRV_BRIDGE_OUT_ENUMCLASS_TAG | |||
781 | }PVRSRV_BRIDGE_OUT_ENUMCLASS; | 928 | }PVRSRV_BRIDGE_OUT_ENUMCLASS; |
782 | 929 | ||
783 | 930 | ||
784 | |||
785 | typedef struct PVRSRV_BRIDGE_IN_OPEN_DISPCLASS_DEVICE_TAG | 931 | typedef struct PVRSRV_BRIDGE_IN_OPEN_DISPCLASS_DEVICE_TAG |
786 | { | 932 | { |
787 | IMG_UINT32 ui32BridgeFlags; | 933 | IMG_UINT32 ui32BridgeFlags; |
788 | IMG_UINT32 ui32DeviceID; | 934 | IMG_UINT32 ui32DeviceID; |
935 | #if defined (SUPPORT_SID_INTERFACE) | ||
936 | IMG_SID hDevCookie; | ||
937 | #else | ||
789 | IMG_HANDLE hDevCookie; | 938 | IMG_HANDLE hDevCookie; |
790 | 939 | #endif | |
940 | |||
791 | }PVRSRV_BRIDGE_IN_OPEN_DISPCLASS_DEVICE; | 941 | }PVRSRV_BRIDGE_IN_OPEN_DISPCLASS_DEVICE; |
792 | 942 | ||
793 | |||
794 | typedef struct PVRSRV_BRIDGE_OUT_OPEN_DISPCLASS_DEVICE_TAG | 943 | typedef struct PVRSRV_BRIDGE_OUT_OPEN_DISPCLASS_DEVICE_TAG |
795 | { | 944 | { |
796 | PVRSRV_ERROR eError; | 945 | PVRSRV_ERROR eError; |
946 | #if defined (SUPPORT_SID_INTERFACE) | ||
947 | IMG_SID hDeviceKM; | ||
948 | #else | ||
797 | IMG_HANDLE hDeviceKM; | 949 | IMG_HANDLE hDeviceKM; |
950 | #endif | ||
798 | 951 | ||
799 | }PVRSRV_BRIDGE_OUT_OPEN_DISPCLASS_DEVICE; | 952 | }PVRSRV_BRIDGE_OUT_OPEN_DISPCLASS_DEVICE; |
800 | 953 | ||
801 | 954 | ||
802 | |||
803 | typedef struct PVRSRV_BRIDGE_IN_WRAP_EXT_MEMORY_TAG | 955 | typedef struct PVRSRV_BRIDGE_IN_WRAP_EXT_MEMORY_TAG |
804 | { | 956 | { |
805 | IMG_UINT32 ui32BridgeFlags; | 957 | IMG_UINT32 ui32BridgeFlags; |
958 | #if defined (SUPPORT_SID_INTERFACE) | ||
959 | IMG_SID hDevCookie; | ||
960 | IMG_SID hDevMemContext; | ||
961 | #else | ||
806 | IMG_HANDLE hDevCookie; | 962 | IMG_HANDLE hDevCookie; |
807 | IMG_HANDLE hDevMemContext; | 963 | IMG_HANDLE hDevMemContext; |
964 | #endif | ||
808 | IMG_VOID *pvLinAddr; | 965 | IMG_VOID *pvLinAddr; |
809 | IMG_SIZE_T ui32ByteSize; | 966 | IMG_SIZE_T ui32ByteSize; |
810 | IMG_SIZE_T ui32PageOffset; | 967 | IMG_SIZE_T ui32PageOffset; |
@@ -815,7 +972,6 @@ typedef struct PVRSRV_BRIDGE_IN_WRAP_EXT_MEMORY_TAG | |||
815 | 972 | ||
816 | }PVRSRV_BRIDGE_IN_WRAP_EXT_MEMORY; | 973 | }PVRSRV_BRIDGE_IN_WRAP_EXT_MEMORY; |
817 | 974 | ||
818 | |||
819 | typedef struct PVRSRV_BRIDGE_OUT_WRAP_EXT_MEMORY_TAG | 975 | typedef struct PVRSRV_BRIDGE_OUT_WRAP_EXT_MEMORY_TAG |
820 | { | 976 | { |
821 | PVRSRV_ERROR eError; | 977 | PVRSRV_ERROR eError; |
@@ -824,11 +980,14 @@ typedef struct PVRSRV_BRIDGE_OUT_WRAP_EXT_MEMORY_TAG | |||
824 | 980 | ||
825 | }PVRSRV_BRIDGE_OUT_WRAP_EXT_MEMORY; | 981 | }PVRSRV_BRIDGE_OUT_WRAP_EXT_MEMORY; |
826 | 982 | ||
827 | |||
828 | typedef struct PVRSRV_BRIDGE_IN_UNWRAP_EXT_MEMORY_TAG | 983 | typedef struct PVRSRV_BRIDGE_IN_UNWRAP_EXT_MEMORY_TAG |
829 | { | 984 | { |
830 | IMG_UINT32 ui32BridgeFlags; | 985 | IMG_UINT32 ui32BridgeFlags; |
986 | #if defined (SUPPORT_SID_INTERFACE) | ||
987 | IMG_SID hKernelMemInfo; | ||
988 | #else | ||
831 | IMG_HANDLE hKernelMemInfo; | 989 | IMG_HANDLE hKernelMemInfo; |
990 | #endif | ||
832 | PVRSRV_CLIENT_MEM_INFO sClientMemInfo; | 991 | PVRSRV_CLIENT_MEM_INFO sClientMemInfo; |
833 | PVRSRV_CLIENT_SYNC_INFO sClientSyncInfo; | 992 | PVRSRV_CLIENT_SYNC_INFO sClientSyncInfo; |
834 | 993 | ||
@@ -840,7 +999,6 @@ typedef struct PVRSRV_BRIDGE_IN_UNWRAP_EXT_MEMORY_TAG | |||
840 | #define PVRSRV_MAX_DC_SWAPCHAIN_BUFFERS 4 | 999 | #define PVRSRV_MAX_DC_SWAPCHAIN_BUFFERS 4 |
841 | #define PVRSRV_MAX_DC_CLIP_RECTS 32 | 1000 | #define PVRSRV_MAX_DC_CLIP_RECTS 32 |
842 | 1001 | ||
843 | |||
844 | typedef struct PVRSRV_BRIDGE_OUT_ENUM_DISPCLASS_FORMATS_TAG | 1002 | typedef struct PVRSRV_BRIDGE_OUT_ENUM_DISPCLASS_FORMATS_TAG |
845 | { | 1003 | { |
846 | PVRSRV_ERROR eError; | 1004 | PVRSRV_ERROR eError; |
@@ -850,17 +1008,19 @@ typedef struct PVRSRV_BRIDGE_OUT_ENUM_DISPCLASS_FORMATS_TAG | |||
850 | }PVRSRV_BRIDGE_OUT_ENUM_DISPCLASS_FORMATS; | 1008 | }PVRSRV_BRIDGE_OUT_ENUM_DISPCLASS_FORMATS; |
851 | 1009 | ||
852 | 1010 | ||
853 | |||
854 | typedef struct PVRSRV_BRIDGE_IN_ENUM_DISPCLASS_DIMS_TAG | 1011 | typedef struct PVRSRV_BRIDGE_IN_ENUM_DISPCLASS_DIMS_TAG |
855 | { | 1012 | { |
856 | IMG_UINT32 ui32BridgeFlags; | 1013 | IMG_UINT32 ui32BridgeFlags; |
1014 | #if defined (SUPPORT_SID_INTERFACE) | ||
1015 | IMG_SID hDeviceKM; | ||
1016 | #else | ||
857 | IMG_HANDLE hDeviceKM; | 1017 | IMG_HANDLE hDeviceKM; |
1018 | #endif | ||
858 | DISPLAY_FORMAT sFormat; | 1019 | DISPLAY_FORMAT sFormat; |
859 | 1020 | ||
860 | }PVRSRV_BRIDGE_IN_ENUM_DISPCLASS_DIMS; | 1021 | }PVRSRV_BRIDGE_IN_ENUM_DISPCLASS_DIMS; |
861 | 1022 | ||
862 | 1023 | ||
863 | |||
864 | typedef struct PVRSRV_BRIDGE_OUT_ENUM_DISPCLASS_DIMS_TAG | 1024 | typedef struct PVRSRV_BRIDGE_OUT_ENUM_DISPCLASS_DIMS_TAG |
865 | { | 1025 | { |
866 | PVRSRV_ERROR eError; | 1026 | PVRSRV_ERROR eError; |
@@ -870,7 +1030,6 @@ typedef struct PVRSRV_BRIDGE_OUT_ENUM_DISPCLASS_DIMS_TAG | |||
870 | }PVRSRV_BRIDGE_OUT_ENUM_DISPCLASS_DIMS; | 1030 | }PVRSRV_BRIDGE_OUT_ENUM_DISPCLASS_DIMS; |
871 | 1031 | ||
872 | 1032 | ||
873 | |||
874 | typedef struct PVRSRV_BRIDGE_OUT_GET_DISPCLASS_INFO_TAG | 1033 | typedef struct PVRSRV_BRIDGE_OUT_GET_DISPCLASS_INFO_TAG |
875 | { | 1034 | { |
876 | PVRSRV_ERROR eError; | 1035 | PVRSRV_ERROR eError; |
@@ -879,20 +1038,26 @@ typedef struct PVRSRV_BRIDGE_OUT_GET_DISPCLASS_INFO_TAG | |||
879 | }PVRSRV_BRIDGE_OUT_GET_DISPCLASS_INFO; | 1038 | }PVRSRV_BRIDGE_OUT_GET_DISPCLASS_INFO; |
880 | 1039 | ||
881 | 1040 | ||
882 | |||
883 | typedef struct PVRSRV_BRIDGE_OUT_GET_DISPCLASS_SYSBUFFER_TAG | 1041 | typedef struct PVRSRV_BRIDGE_OUT_GET_DISPCLASS_SYSBUFFER_TAG |
884 | { | 1042 | { |
885 | PVRSRV_ERROR eError; | 1043 | PVRSRV_ERROR eError; |
1044 | #if defined (SUPPORT_SID_INTERFACE) | ||
1045 | IMG_SID hBuffer; | ||
1046 | #else | ||
886 | IMG_HANDLE hBuffer; | 1047 | IMG_HANDLE hBuffer; |
1048 | #endif | ||
887 | 1049 | ||
888 | }PVRSRV_BRIDGE_OUT_GET_DISPCLASS_SYSBUFFER; | 1050 | }PVRSRV_BRIDGE_OUT_GET_DISPCLASS_SYSBUFFER; |
889 | 1051 | ||
890 | 1052 | ||
891 | |||
892 | typedef struct PVRSRV_BRIDGE_IN_CREATE_DISPCLASS_SWAPCHAIN_TAG | 1053 | typedef struct PVRSRV_BRIDGE_IN_CREATE_DISPCLASS_SWAPCHAIN_TAG |
893 | { | 1054 | { |
894 | IMG_UINT32 ui32BridgeFlags; | 1055 | IMG_UINT32 ui32BridgeFlags; |
1056 | #if defined (SUPPORT_SID_INTERFACE) | ||
1057 | IMG_SID hDeviceKM; | ||
1058 | #else | ||
895 | IMG_HANDLE hDeviceKM; | 1059 | IMG_HANDLE hDeviceKM; |
1060 | #endif | ||
896 | IMG_UINT32 ui32Flags; | 1061 | IMG_UINT32 ui32Flags; |
897 | DISPLAY_SURF_ATTRIBUTES sDstSurfAttrib; | 1062 | DISPLAY_SURF_ATTRIBUTES sDstSurfAttrib; |
898 | DISPLAY_SURF_ATTRIBUTES sSrcSurfAttrib; | 1063 | DISPLAY_SURF_ATTRIBUTES sSrcSurfAttrib; |
@@ -903,112 +1068,151 @@ typedef struct PVRSRV_BRIDGE_IN_CREATE_DISPCLASS_SWAPCHAIN_TAG | |||
903 | } PVRSRV_BRIDGE_IN_CREATE_DISPCLASS_SWAPCHAIN; | 1068 | } PVRSRV_BRIDGE_IN_CREATE_DISPCLASS_SWAPCHAIN; |
904 | 1069 | ||
905 | 1070 | ||
906 | |||
907 | typedef struct PVRSRV_BRIDGE_OUT_CREATE_DISPCLASS_SWAPCHAIN_TAG | 1071 | typedef struct PVRSRV_BRIDGE_OUT_CREATE_DISPCLASS_SWAPCHAIN_TAG |
908 | { | 1072 | { |
909 | PVRSRV_ERROR eError; | 1073 | PVRSRV_ERROR eError; |
1074 | #if defined (SUPPORT_SID_INTERFACE) | ||
1075 | IMG_SID hSwapChain; | ||
1076 | #else | ||
910 | IMG_HANDLE hSwapChain; | 1077 | IMG_HANDLE hSwapChain; |
1078 | #endif | ||
911 | IMG_UINT32 ui32SwapChainID; | 1079 | IMG_UINT32 ui32SwapChainID; |
912 | 1080 | ||
913 | } PVRSRV_BRIDGE_OUT_CREATE_DISPCLASS_SWAPCHAIN; | 1081 | } PVRSRV_BRIDGE_OUT_CREATE_DISPCLASS_SWAPCHAIN; |
914 | 1082 | ||
915 | 1083 | ||
916 | |||
917 | typedef struct PVRSRV_BRIDGE_IN_DESTROY_DISPCLASS_SWAPCHAIN_TAG | 1084 | typedef struct PVRSRV_BRIDGE_IN_DESTROY_DISPCLASS_SWAPCHAIN_TAG |
918 | { | 1085 | { |
919 | IMG_UINT32 ui32BridgeFlags; | 1086 | IMG_UINT32 ui32BridgeFlags; |
1087 | #if defined (SUPPORT_SID_INTERFACE) | ||
1088 | IMG_SID hDeviceKM; | ||
1089 | IMG_SID hSwapChain; | ||
1090 | #else | ||
920 | IMG_HANDLE hDeviceKM; | 1091 | IMG_HANDLE hDeviceKM; |
921 | IMG_HANDLE hSwapChain; | 1092 | IMG_HANDLE hSwapChain; |
1093 | #endif | ||
922 | 1094 | ||
923 | } PVRSRV_BRIDGE_IN_DESTROY_DISPCLASS_SWAPCHAIN; | 1095 | } PVRSRV_BRIDGE_IN_DESTROY_DISPCLASS_SWAPCHAIN; |
924 | 1096 | ||
925 | 1097 | ||
926 | |||
927 | typedef struct PVRSRV_BRIDGE_IN_SET_DISPCLASS_RECT_TAG | 1098 | typedef struct PVRSRV_BRIDGE_IN_SET_DISPCLASS_RECT_TAG |
928 | { | 1099 | { |
929 | IMG_UINT32 ui32BridgeFlags; | 1100 | IMG_UINT32 ui32BridgeFlags; |
1101 | #if defined (SUPPORT_SID_INTERFACE) | ||
1102 | IMG_SID hDeviceKM; | ||
1103 | IMG_SID hSwapChain; | ||
1104 | #else | ||
930 | IMG_HANDLE hDeviceKM; | 1105 | IMG_HANDLE hDeviceKM; |
931 | IMG_HANDLE hSwapChain; | 1106 | IMG_HANDLE hSwapChain; |
1107 | #endif | ||
932 | IMG_RECT sRect; | 1108 | IMG_RECT sRect; |
933 | 1109 | ||
934 | } PVRSRV_BRIDGE_IN_SET_DISPCLASS_RECT; | 1110 | } PVRSRV_BRIDGE_IN_SET_DISPCLASS_RECT; |
935 | 1111 | ||
936 | 1112 | ||
937 | |||
938 | typedef struct PVRSRV_BRIDGE_IN_SET_DISPCLASS_COLOURKEY_TAG | 1113 | typedef struct PVRSRV_BRIDGE_IN_SET_DISPCLASS_COLOURKEY_TAG |
939 | { | 1114 | { |
940 | IMG_UINT32 ui32BridgeFlags; | 1115 | IMG_UINT32 ui32BridgeFlags; |
1116 | #if defined (SUPPORT_SID_INTERFACE) | ||
1117 | IMG_SID hDeviceKM; | ||
1118 | IMG_SID hSwapChain; | ||
1119 | #else | ||
941 | IMG_HANDLE hDeviceKM; | 1120 | IMG_HANDLE hDeviceKM; |
942 | IMG_HANDLE hSwapChain; | 1121 | IMG_HANDLE hSwapChain; |
1122 | #endif | ||
943 | IMG_UINT32 ui32CKColour; | 1123 | IMG_UINT32 ui32CKColour; |
944 | 1124 | ||
945 | } PVRSRV_BRIDGE_IN_SET_DISPCLASS_COLOURKEY; | 1125 | } PVRSRV_BRIDGE_IN_SET_DISPCLASS_COLOURKEY; |
946 | 1126 | ||
947 | 1127 | ||
948 | |||
949 | typedef struct PVRSRV_BRIDGE_IN_GET_DISPCLASS_BUFFERS_TAG | 1128 | typedef struct PVRSRV_BRIDGE_IN_GET_DISPCLASS_BUFFERS_TAG |
950 | { | 1129 | { |
951 | IMG_UINT32 ui32BridgeFlags; | 1130 | IMG_UINT32 ui32BridgeFlags; |
1131 | #if defined (SUPPORT_SID_INTERFACE) | ||
1132 | IMG_SID hDeviceKM; | ||
1133 | IMG_SID hSwapChain; | ||
1134 | #else | ||
952 | IMG_HANDLE hDeviceKM; | 1135 | IMG_HANDLE hDeviceKM; |
953 | IMG_HANDLE hSwapChain; | 1136 | IMG_HANDLE hSwapChain; |
1137 | #endif | ||
954 | 1138 | ||
955 | } PVRSRV_BRIDGE_IN_GET_DISPCLASS_BUFFERS; | 1139 | } PVRSRV_BRIDGE_IN_GET_DISPCLASS_BUFFERS; |
956 | 1140 | ||
957 | 1141 | ||
958 | |||
959 | typedef struct PVRSRV_BRIDGE_OUT_GET_DISPCLASS_BUFFERS_TAG | 1142 | typedef struct PVRSRV_BRIDGE_OUT_GET_DISPCLASS_BUFFERS_TAG |
960 | { | 1143 | { |
961 | PVRSRV_ERROR eError; | 1144 | PVRSRV_ERROR eError; |
962 | IMG_UINT32 ui32BufferCount; | 1145 | IMG_UINT32 ui32BufferCount; |
1146 | #if defined (SUPPORT_SID_INTERFACE) | ||
1147 | IMG_SID ahBuffer[PVRSRV_MAX_DC_SWAPCHAIN_BUFFERS]; | ||
1148 | #else | ||
963 | IMG_HANDLE ahBuffer[PVRSRV_MAX_DC_SWAPCHAIN_BUFFERS]; | 1149 | IMG_HANDLE ahBuffer[PVRSRV_MAX_DC_SWAPCHAIN_BUFFERS]; |
1150 | #endif | ||
964 | 1151 | ||
965 | } PVRSRV_BRIDGE_OUT_GET_DISPCLASS_BUFFERS; | 1152 | } PVRSRV_BRIDGE_OUT_GET_DISPCLASS_BUFFERS; |
966 | 1153 | ||
967 | 1154 | ||
968 | |||
969 | typedef struct PVRSRV_BRIDGE_IN_SWAP_DISPCLASS_TO_BUFFER_TAG | 1155 | typedef struct PVRSRV_BRIDGE_IN_SWAP_DISPCLASS_TO_BUFFER_TAG |
970 | { | 1156 | { |
971 | IMG_UINT32 ui32BridgeFlags; | 1157 | IMG_UINT32 ui32BridgeFlags; |
1158 | #if defined (SUPPORT_SID_INTERFACE) | ||
1159 | IMG_SID hDeviceKM; | ||
1160 | IMG_SID hBuffer; | ||
1161 | #else | ||
972 | IMG_HANDLE hDeviceKM; | 1162 | IMG_HANDLE hDeviceKM; |
973 | IMG_HANDLE hBuffer; | 1163 | IMG_HANDLE hBuffer; |
1164 | #endif | ||
974 | IMG_UINT32 ui32SwapInterval; | 1165 | IMG_UINT32 ui32SwapInterval; |
1166 | #if defined (SUPPORT_SID_INTERFACE) | ||
1167 | IMG_SID hPrivateTag; | ||
1168 | #else | ||
975 | IMG_HANDLE hPrivateTag; | 1169 | IMG_HANDLE hPrivateTag; |
1170 | #endif | ||
976 | IMG_UINT32 ui32ClipRectCount; | 1171 | IMG_UINT32 ui32ClipRectCount; |
977 | IMG_RECT sClipRect[PVRSRV_MAX_DC_CLIP_RECTS]; | 1172 | IMG_RECT sClipRect[PVRSRV_MAX_DC_CLIP_RECTS]; |
978 | 1173 | ||
979 | } PVRSRV_BRIDGE_IN_SWAP_DISPCLASS_TO_BUFFER; | 1174 | } PVRSRV_BRIDGE_IN_SWAP_DISPCLASS_TO_BUFFER; |
980 | 1175 | ||
981 | 1176 | ||
982 | |||
983 | typedef struct PVRSRV_BRIDGE_IN_SWAP_DISPCLASS_TO_SYSTEM_TAG | 1177 | typedef struct PVRSRV_BRIDGE_IN_SWAP_DISPCLASS_TO_SYSTEM_TAG |
984 | { | 1178 | { |
985 | IMG_UINT32 ui32BridgeFlags; | 1179 | IMG_UINT32 ui32BridgeFlags; |
1180 | #if defined (SUPPORT_SID_INTERFACE) | ||
1181 | IMG_SID hDeviceKM; | ||
1182 | IMG_SID hSwapChain; | ||
1183 | #else | ||
986 | IMG_HANDLE hDeviceKM; | 1184 | IMG_HANDLE hDeviceKM; |
987 | IMG_HANDLE hSwapChain; | 1185 | IMG_HANDLE hSwapChain; |
1186 | #endif | ||
988 | 1187 | ||
989 | } PVRSRV_BRIDGE_IN_SWAP_DISPCLASS_TO_SYSTEM; | 1188 | } PVRSRV_BRIDGE_IN_SWAP_DISPCLASS_TO_SYSTEM; |
990 | 1189 | ||
991 | 1190 | ||
992 | |||
993 | typedef struct PVRSRV_BRIDGE_IN_OPEN_BUFFERCLASS_DEVICE_TAG | 1191 | typedef struct PVRSRV_BRIDGE_IN_OPEN_BUFFERCLASS_DEVICE_TAG |
994 | { | 1192 | { |
995 | IMG_UINT32 ui32BridgeFlags; | 1193 | IMG_UINT32 ui32BridgeFlags; |
996 | IMG_UINT32 ui32DeviceID; | 1194 | IMG_UINT32 ui32DeviceID; |
1195 | #if defined (SUPPORT_SID_INTERFACE) | ||
1196 | IMG_SID hDevCookie; | ||
1197 | #else | ||
997 | IMG_HANDLE hDevCookie; | 1198 | IMG_HANDLE hDevCookie; |
998 | 1199 | #endif | |
1200 | |||
999 | } PVRSRV_BRIDGE_IN_OPEN_BUFFERCLASS_DEVICE; | 1201 | } PVRSRV_BRIDGE_IN_OPEN_BUFFERCLASS_DEVICE; |
1000 | 1202 | ||
1001 | 1203 | ||
1002 | |||
1003 | typedef struct PVRSRV_BRIDGE_OUT_OPEN_BUFFERCLASS_DEVICE_TAG | 1204 | typedef struct PVRSRV_BRIDGE_OUT_OPEN_BUFFERCLASS_DEVICE_TAG |
1004 | { | 1205 | { |
1005 | PVRSRV_ERROR eError; | 1206 | PVRSRV_ERROR eError; |
1207 | #if defined (SUPPORT_SID_INTERFACE) | ||
1208 | IMG_SID hDeviceKM; | ||
1209 | #else | ||
1006 | IMG_HANDLE hDeviceKM; | 1210 | IMG_HANDLE hDeviceKM; |
1211 | #endif | ||
1007 | 1212 | ||
1008 | } PVRSRV_BRIDGE_OUT_OPEN_BUFFERCLASS_DEVICE; | 1213 | } PVRSRV_BRIDGE_OUT_OPEN_BUFFERCLASS_DEVICE; |
1009 | 1214 | ||
1010 | 1215 | ||
1011 | |||
1012 | typedef struct PVRSRV_BRIDGE_OUT_GET_BUFFERCLASS_INFO_TAG | 1216 | typedef struct PVRSRV_BRIDGE_OUT_GET_BUFFERCLASS_INFO_TAG |
1013 | { | 1217 | { |
1014 | PVRSRV_ERROR eError; | 1218 | PVRSRV_ERROR eError; |
@@ -1017,26 +1221,31 @@ typedef struct PVRSRV_BRIDGE_OUT_GET_BUFFERCLASS_INFO_TAG | |||
1017 | } PVRSRV_BRIDGE_OUT_GET_BUFFERCLASS_INFO; | 1221 | } PVRSRV_BRIDGE_OUT_GET_BUFFERCLASS_INFO; |
1018 | 1222 | ||
1019 | 1223 | ||
1020 | |||
1021 | typedef struct PVRSRV_BRIDGE_IN_GET_BUFFERCLASS_BUFFER_TAG | 1224 | typedef struct PVRSRV_BRIDGE_IN_GET_BUFFERCLASS_BUFFER_TAG |
1022 | { | 1225 | { |
1023 | IMG_UINT32 ui32BridgeFlags; | 1226 | IMG_UINT32 ui32BridgeFlags; |
1227 | #if defined (SUPPORT_SID_INTERFACE) | ||
1228 | IMG_SID hDeviceKM; | ||
1229 | #else | ||
1024 | IMG_HANDLE hDeviceKM; | 1230 | IMG_HANDLE hDeviceKM; |
1025 | IMG_UINT32 ui32BufferIndex; | 1231 | #endif |
1232 | IMG_UINT32 ui32BufferIndex; | ||
1026 | 1233 | ||
1027 | } PVRSRV_BRIDGE_IN_GET_BUFFERCLASS_BUFFER; | 1234 | } PVRSRV_BRIDGE_IN_GET_BUFFERCLASS_BUFFER; |
1028 | 1235 | ||
1029 | 1236 | ||
1030 | |||
1031 | typedef struct PVRSRV_BRIDGE_OUT_GET_BUFFERCLASS_BUFFER_TAG | 1237 | typedef struct PVRSRV_BRIDGE_OUT_GET_BUFFERCLASS_BUFFER_TAG |
1032 | { | 1238 | { |
1033 | PVRSRV_ERROR eError; | 1239 | PVRSRV_ERROR eError; |
1240 | #if defined (SUPPORT_SID_INTERFACE) | ||
1241 | IMG_SID hBuffer; | ||
1242 | #else | ||
1034 | IMG_HANDLE hBuffer; | 1243 | IMG_HANDLE hBuffer; |
1244 | #endif | ||
1035 | 1245 | ||
1036 | } PVRSRV_BRIDGE_OUT_GET_BUFFERCLASS_BUFFER; | 1246 | } PVRSRV_BRIDGE_OUT_GET_BUFFERCLASS_BUFFER; |
1037 | 1247 | ||
1038 | 1248 | ||
1039 | |||
1040 | typedef struct PVRSRV_BRIDGE_OUT_GET_DEVMEM_HEAPINFO_TAG | 1249 | typedef struct PVRSRV_BRIDGE_OUT_GET_DEVMEM_HEAPINFO_TAG |
1041 | { | 1250 | { |
1042 | PVRSRV_ERROR eError; | 1251 | PVRSRV_ERROR eError; |
@@ -1046,42 +1255,54 @@ typedef struct PVRSRV_BRIDGE_OUT_GET_DEVMEM_HEAPINFO_TAG | |||
1046 | } PVRSRV_BRIDGE_OUT_GET_DEVMEM_HEAPINFO; | 1255 | } PVRSRV_BRIDGE_OUT_GET_DEVMEM_HEAPINFO; |
1047 | 1256 | ||
1048 | 1257 | ||
1049 | |||
1050 | typedef struct PVRSRV_BRIDGE_OUT_CREATE_DEVMEMCONTEXT_TAG | 1258 | typedef struct PVRSRV_BRIDGE_OUT_CREATE_DEVMEMCONTEXT_TAG |
1051 | { | 1259 | { |
1052 | PVRSRV_ERROR eError; | 1260 | PVRSRV_ERROR eError; |
1261 | #if defined (SUPPORT_SID_INTERFACE) | ||
1262 | IMG_SID hDevMemContext; | ||
1263 | #else | ||
1053 | IMG_HANDLE hDevMemContext; | 1264 | IMG_HANDLE hDevMemContext; |
1265 | #endif | ||
1054 | IMG_UINT32 ui32ClientHeapCount; | 1266 | IMG_UINT32 ui32ClientHeapCount; |
1055 | PVRSRV_HEAP_INFO sHeapInfo[PVRSRV_MAX_CLIENT_HEAPS]; | 1267 | PVRSRV_HEAP_INFO sHeapInfo[PVRSRV_MAX_CLIENT_HEAPS]; |
1056 | 1268 | ||
1057 | } PVRSRV_BRIDGE_OUT_CREATE_DEVMEMCONTEXT; | 1269 | } PVRSRV_BRIDGE_OUT_CREATE_DEVMEMCONTEXT; |
1058 | 1270 | ||
1059 | 1271 | ||
1060 | |||
1061 | typedef struct PVRSRV_BRIDGE_OUT_CREATE_DEVMEMHEAP_TAG | 1272 | typedef struct PVRSRV_BRIDGE_OUT_CREATE_DEVMEMHEAP_TAG |
1062 | { | 1273 | { |
1063 | PVRSRV_ERROR eError; | 1274 | PVRSRV_ERROR eError; |
1275 | #if defined (SUPPORT_SID_INTERFACE) | ||
1276 | IMG_SID hDevMemHeap; | ||
1277 | #else | ||
1064 | IMG_HANDLE hDevMemHeap; | 1278 | IMG_HANDLE hDevMemHeap; |
1279 | #endif | ||
1065 | 1280 | ||
1066 | } PVRSRV_BRIDGE_OUT_CREATE_DEVMEMHEAP; | 1281 | } PVRSRV_BRIDGE_OUT_CREATE_DEVMEMHEAP; |
1067 | 1282 | ||
1068 | 1283 | ||
1069 | |||
1070 | typedef struct PVRSRV_BRIDGE_OUT_ALLOCDEVICEMEM_TAG | 1284 | typedef struct PVRSRV_BRIDGE_OUT_ALLOCDEVICEMEM_TAG |
1071 | { | 1285 | { |
1072 | PVRSRV_ERROR eError; | 1286 | PVRSRV_ERROR eError; |
1287 | #if defined (SUPPORT_SID_INTERFACE) | ||
1288 | IMG_SID hKernelMemInfo; | ||
1289 | #else | ||
1073 | PVRSRV_KERNEL_MEM_INFO *psKernelMemInfo; | 1290 | PVRSRV_KERNEL_MEM_INFO *psKernelMemInfo; |
1074 | PVRSRV_CLIENT_MEM_INFO sClientMemInfo; | 1291 | #endif |
1075 | PVRSRV_CLIENT_SYNC_INFO sClientSyncInfo; | 1292 | PVRSRV_CLIENT_MEM_INFO sClientMemInfo; |
1293 | PVRSRV_CLIENT_SYNC_INFO sClientSyncInfo; | ||
1076 | 1294 | ||
1077 | } PVRSRV_BRIDGE_OUT_ALLOCDEVICEMEM; | 1295 | } PVRSRV_BRIDGE_OUT_ALLOCDEVICEMEM; |
1078 | 1296 | ||
1079 | 1297 | ||
1080 | |||
1081 | typedef struct PVRSRV_BRIDGE_OUT_EXPORTDEVICEMEM_TAG | 1298 | typedef struct PVRSRV_BRIDGE_OUT_EXPORTDEVICEMEM_TAG |
1082 | { | 1299 | { |
1083 | PVRSRV_ERROR eError; | 1300 | PVRSRV_ERROR eError; |
1301 | #if defined (SUPPORT_SID_INTERFACE) | ||
1302 | IMG_SID hMemInfo; | ||
1303 | #else | ||
1084 | IMG_HANDLE hMemInfo; | 1304 | IMG_HANDLE hMemInfo; |
1305 | #endif | ||
1085 | #if defined(SUPPORT_MEMINFO_IDS) | 1306 | #if defined(SUPPORT_MEMINFO_IDS) |
1086 | IMG_UINT64 ui64Stamp; | 1307 | IMG_UINT64 ui64Stamp; |
1087 | #endif | 1308 | #endif |
@@ -1093,12 +1314,15 @@ typedef struct PVRSRV_BRIDGE_OUT_MAPMEMINFOTOUSER_TAG | |||
1093 | { | 1314 | { |
1094 | PVRSRV_ERROR eError; | 1315 | PVRSRV_ERROR eError; |
1095 | IMG_PVOID pvLinAddr; | 1316 | IMG_PVOID pvLinAddr; |
1317 | #if defined (SUPPORT_SID_INTERFACE) | ||
1318 | IMG_SID hMappingInfo; | ||
1319 | #else | ||
1096 | IMG_HANDLE hMappingInfo; | 1320 | IMG_HANDLE hMappingInfo; |
1321 | #endif | ||
1097 | 1322 | ||
1098 | }PVRSRV_BRIDGE_OUT_MAPMEMINFOTOUSER; | 1323 | }PVRSRV_BRIDGE_OUT_MAPMEMINFOTOUSER; |
1099 | 1324 | ||
1100 | 1325 | ||
1101 | |||
1102 | typedef struct PVRSRV_BRIDGE_OUT_GETFREEDEVICEMEM_TAG | 1326 | typedef struct PVRSRV_BRIDGE_OUT_GETFREEDEVICEMEM_TAG |
1103 | { | 1327 | { |
1104 | PVRSRV_ERROR eError; | 1328 | PVRSRV_ERROR eError; |
@@ -1113,7 +1337,7 @@ typedef struct PVRSRV_BRIDGE_OUT_GETFREEDEVICEMEM_TAG | |||
1113 | typedef struct PVRSRV_BRIDGE_OUT_MHANDLE_TO_MMAP_DATA_TAG | 1337 | typedef struct PVRSRV_BRIDGE_OUT_MHANDLE_TO_MMAP_DATA_TAG |
1114 | { | 1338 | { |
1115 | PVRSRV_ERROR eError; | 1339 | PVRSRV_ERROR eError; |
1116 | 1340 | ||
1117 | 1341 | ||
1118 | IMG_UINT32 ui32MMapOffset; | 1342 | IMG_UINT32 ui32MMapOffset; |
1119 | 1343 | ||
@@ -1131,7 +1355,7 @@ typedef struct PVRSRV_BRIDGE_OUT_MHANDLE_TO_MMAP_DATA_TAG | |||
1131 | typedef struct PVRSRV_BRIDGE_OUT_RELEASE_MMAP_DATA_TAG | 1355 | typedef struct PVRSRV_BRIDGE_OUT_RELEASE_MMAP_DATA_TAG |
1132 | { | 1356 | { |
1133 | PVRSRV_ERROR eError; | 1357 | PVRSRV_ERROR eError; |
1134 | 1358 | ||
1135 | 1359 | ||
1136 | IMG_BOOL bMUnmap; | 1360 | IMG_BOOL bMUnmap; |
1137 | 1361 | ||
@@ -1141,7 +1365,6 @@ typedef struct PVRSRV_BRIDGE_OUT_RELEASE_MMAP_DATA_TAG | |||
1141 | 1365 | ||
1142 | IMG_UINT32 ui32RealByteSize; | 1366 | IMG_UINT32 ui32RealByteSize; |
1143 | } PVRSRV_BRIDGE_OUT_RELEASE_MMAP_DATA; | 1367 | } PVRSRV_BRIDGE_OUT_RELEASE_MMAP_DATA; |
1144 | |||
1145 | typedef struct PVRSRV_BRIDGE_IN_GET_MISC_INFO_TAG | 1368 | typedef struct PVRSRV_BRIDGE_IN_GET_MISC_INFO_TAG |
1146 | { | 1369 | { |
1147 | IMG_UINT32 ui32BridgeFlags; | 1370 | IMG_UINT32 ui32BridgeFlags; |
@@ -1150,7 +1373,6 @@ typedef struct PVRSRV_BRIDGE_IN_GET_MISC_INFO_TAG | |||
1150 | }PVRSRV_BRIDGE_IN_GET_MISC_INFO; | 1373 | }PVRSRV_BRIDGE_IN_GET_MISC_INFO; |
1151 | 1374 | ||
1152 | 1375 | ||
1153 | |||
1154 | typedef struct PVRSRV_BRIDGE_OUT_GET_MISC_INFO_TAG | 1376 | typedef struct PVRSRV_BRIDGE_OUT_GET_MISC_INFO_TAG |
1155 | { | 1377 | { |
1156 | PVRSRV_ERROR eError; | 1378 | PVRSRV_ERROR eError; |
@@ -1159,7 +1381,6 @@ typedef struct PVRSRV_BRIDGE_OUT_GET_MISC_INFO_TAG | |||
1159 | }PVRSRV_BRIDGE_OUT_GET_MISC_INFO; | 1381 | }PVRSRV_BRIDGE_OUT_GET_MISC_INFO; |
1160 | 1382 | ||
1161 | 1383 | ||
1162 | |||
1163 | typedef struct PVRSRV_BRIDGE_IN_RELEASE_MISC_INFO_TAG | 1384 | typedef struct PVRSRV_BRIDGE_IN_RELEASE_MISC_INFO_TAG |
1164 | { | 1385 | { |
1165 | IMG_UINT32 ui32BridgeFlags; | 1386 | IMG_UINT32 ui32BridgeFlags; |
@@ -1168,7 +1389,6 @@ typedef struct PVRSRV_BRIDGE_IN_RELEASE_MISC_INFO_TAG | |||
1168 | }PVRSRV_BRIDGE_IN_RELEASE_MISC_INFO; | 1389 | }PVRSRV_BRIDGE_IN_RELEASE_MISC_INFO; |
1169 | 1390 | ||
1170 | 1391 | ||
1171 | |||
1172 | typedef struct PVRSRV_BRIDGE_OUT_RELEASE_MISC_INFO_TAG | 1392 | typedef struct PVRSRV_BRIDGE_OUT_RELEASE_MISC_INFO_TAG |
1173 | { | 1393 | { |
1174 | PVRSRV_ERROR eError; | 1394 | PVRSRV_ERROR eError; |
@@ -1177,8 +1397,6 @@ typedef struct PVRSRV_BRIDGE_OUT_RELEASE_MISC_INFO_TAG | |||
1177 | }PVRSRV_BRIDGE_OUT_RELEASE_MISC_INFO; | 1397 | }PVRSRV_BRIDGE_OUT_RELEASE_MISC_INFO; |
1178 | 1398 | ||
1179 | 1399 | ||
1180 | |||
1181 | |||
1182 | typedef struct PVRSRV_BRIDGE_OUT_PDUMP_ISCAPTURING_TAG | 1400 | typedef struct PVRSRV_BRIDGE_OUT_PDUMP_ISCAPTURING_TAG |
1183 | { | 1401 | { |
1184 | PVRSRV_ERROR eError; | 1402 | PVRSRV_ERROR eError; |
@@ -1186,8 +1404,7 @@ typedef struct PVRSRV_BRIDGE_OUT_PDUMP_ISCAPTURING_TAG | |||
1186 | 1404 | ||
1187 | } PVRSRV_BRIDGE_OUT_PDUMP_ISCAPTURING; | 1405 | } PVRSRV_BRIDGE_OUT_PDUMP_ISCAPTURING; |
1188 | 1406 | ||
1189 | 1407 | typedef struct PVRSRV_BRIDGE_IN_GET_FB_STATS_TAG | |
1190 | typedef struct PVRSRV_BRIDGE_IN_GET_FB_STATS_TAG | ||
1191 | { | 1408 | { |
1192 | IMG_UINT32 ui32BridgeFlags; | 1409 | IMG_UINT32 ui32BridgeFlags; |
1193 | IMG_SIZE_T ui32Total; | 1410 | IMG_SIZE_T ui32Total; |
@@ -1196,18 +1413,20 @@ typedef struct PVRSRV_BRIDGE_IN_GET_FB_STATS_TAG | |||
1196 | } PVRSRV_BRIDGE_IN_GET_FB_STATS; | 1413 | } PVRSRV_BRIDGE_IN_GET_FB_STATS; |
1197 | 1414 | ||
1198 | 1415 | ||
1199 | |||
1200 | typedef struct PVRSRV_BRIDGE_IN_MAPPHYSTOUSERSPACE_TAG | 1416 | typedef struct PVRSRV_BRIDGE_IN_MAPPHYSTOUSERSPACE_TAG |
1201 | { | 1417 | { |
1202 | IMG_UINT32 ui32BridgeFlags; | 1418 | IMG_UINT32 ui32BridgeFlags; |
1419 | #if defined (SUPPORT_SID_INTERFACE) | ||
1420 | IMG_SID hDevCookie; | ||
1421 | #else | ||
1203 | IMG_HANDLE hDevCookie; | 1422 | IMG_HANDLE hDevCookie; |
1423 | #endif | ||
1204 | IMG_SYS_PHYADDR sSysPhysAddr; | 1424 | IMG_SYS_PHYADDR sSysPhysAddr; |
1205 | IMG_UINT32 uiSizeInBytes; | 1425 | IMG_UINT32 uiSizeInBytes; |
1206 | 1426 | ||
1207 | } PVRSRV_BRIDGE_IN_MAPPHYSTOUSERSPACE; | 1427 | } PVRSRV_BRIDGE_IN_MAPPHYSTOUSERSPACE; |
1208 | 1428 | ||
1209 | 1429 | ||
1210 | |||
1211 | typedef struct PVRSRV_BRIDGE_OUT_MAPPHYSTOUSERSPACE_TAG | 1430 | typedef struct PVRSRV_BRIDGE_OUT_MAPPHYSTOUSERSPACE_TAG |
1212 | { | 1431 | { |
1213 | IMG_PVOID pvUserAddr; | 1432 | IMG_PVOID pvUserAddr; |
@@ -1217,18 +1436,20 @@ typedef struct PVRSRV_BRIDGE_OUT_MAPPHYSTOUSERSPACE_TAG | |||
1217 | } PVRSRV_BRIDGE_OUT_MAPPHYSTOUSERSPACE; | 1436 | } PVRSRV_BRIDGE_OUT_MAPPHYSTOUSERSPACE; |
1218 | 1437 | ||
1219 | 1438 | ||
1220 | |||
1221 | typedef struct PVRSRV_BRIDGE_IN_UNMAPPHYSTOUSERSPACE_TAG | 1439 | typedef struct PVRSRV_BRIDGE_IN_UNMAPPHYSTOUSERSPACE_TAG |
1222 | { | 1440 | { |
1223 | IMG_UINT32 ui32BridgeFlags; | 1441 | IMG_UINT32 ui32BridgeFlags; |
1442 | #if defined (SUPPORT_SID_INTERFACE) | ||
1443 | IMG_SID hDevCookie; | ||
1444 | #else | ||
1224 | IMG_HANDLE hDevCookie; | 1445 | IMG_HANDLE hDevCookie; |
1446 | #endif | ||
1225 | IMG_PVOID pvUserAddr; | 1447 | IMG_PVOID pvUserAddr; |
1226 | IMG_PVOID pvProcess; | 1448 | IMG_PVOID pvProcess; |
1227 | 1449 | ||
1228 | } PVRSRV_BRIDGE_IN_UNMAPPHYSTOUSERSPACE; | 1450 | } PVRSRV_BRIDGE_IN_UNMAPPHYSTOUSERSPACE; |
1229 | 1451 | ||
1230 | 1452 | ||
1231 | |||
1232 | typedef struct PVRSRV_BRIDGE_OUT_GETPHYSTOUSERSPACEMAP_TAG | 1453 | typedef struct PVRSRV_BRIDGE_OUT_GETPHYSTOUSERSPACEMAP_TAG |
1233 | { | 1454 | { |
1234 | IMG_PVOID *ppvTbl; | 1455 | IMG_PVOID *ppvTbl; |
@@ -1237,7 +1458,7 @@ typedef struct PVRSRV_BRIDGE_OUT_GETPHYSTOUSERSPACEMAP_TAG | |||
1237 | } PVRSRV_BRIDGE_OUT_GETPHYSTOUSERSPACEMAP; | 1458 | } PVRSRV_BRIDGE_OUT_GETPHYSTOUSERSPACEMAP; |
1238 | 1459 | ||
1239 | 1460 | ||
1240 | 1461 | #if !defined (SUPPORT_SID_INTERFACE) | |
1241 | typedef struct PVRSRV_BRIDGE_IN_REGISTER_SIM_PROCESS_TAG | 1462 | typedef struct PVRSRV_BRIDGE_IN_REGISTER_SIM_PROCESS_TAG |
1242 | { | 1463 | { |
1243 | IMG_UINT32 ui32BridgeFlags; | 1464 | IMG_UINT32 ui32BridgeFlags; |
@@ -1275,6 +1496,7 @@ typedef struct PVRSRV_BRIDGE_IN_PROCESS_SIMISR_EVENT_TAG | |||
1275 | PVRSRV_ERROR eError; | 1496 | PVRSRV_ERROR eError; |
1276 | 1497 | ||
1277 | } PVRSRV_BRIDGE_IN_PROCESS_SIMISR_EVENT; | 1498 | } PVRSRV_BRIDGE_IN_PROCESS_SIMISR_EVENT; |
1499 | #endif | ||
1278 | 1500 | ||
1279 | typedef struct PVRSRV_BRIDGE_IN_INITSRV_DISCONNECT_TAG | 1501 | typedef struct PVRSRV_BRIDGE_IN_INITSRV_DISCONNECT_TAG |
1280 | { | 1502 | { |
@@ -1292,16 +1514,24 @@ typedef struct PVRSRV_BRIDGE_IN_ALLOC_SHARED_SYS_MEM_TAG | |||
1292 | 1514 | ||
1293 | typedef struct PVRSRV_BRIDGE_OUT_ALLOC_SHARED_SYS_MEM_TAG | 1515 | typedef struct PVRSRV_BRIDGE_OUT_ALLOC_SHARED_SYS_MEM_TAG |
1294 | { | 1516 | { |
1295 | PVRSRV_ERROR eError; | 1517 | PVRSRV_ERROR eError; |
1518 | #if defined (SUPPORT_SID_INTERFACE) | ||
1519 | #else | ||
1296 | PVRSRV_KERNEL_MEM_INFO *psKernelMemInfo; | 1520 | PVRSRV_KERNEL_MEM_INFO *psKernelMemInfo; |
1297 | PVRSRV_CLIENT_MEM_INFO sClientMemInfo; | 1521 | #endif |
1522 | PVRSRV_CLIENT_MEM_INFO sClientMemInfo; | ||
1298 | }PVRSRV_BRIDGE_OUT_ALLOC_SHARED_SYS_MEM; | 1523 | }PVRSRV_BRIDGE_OUT_ALLOC_SHARED_SYS_MEM; |
1299 | 1524 | ||
1300 | typedef struct PVRSRV_BRIDGE_IN_FREE_SHARED_SYS_MEM_TAG | 1525 | typedef struct PVRSRV_BRIDGE_IN_FREE_SHARED_SYS_MEM_TAG |
1301 | { | 1526 | { |
1302 | IMG_UINT32 ui32BridgeFlags; | 1527 | #if defined (SUPPORT_SID_INTERFACE) |
1528 | IMG_SID hKernelMemInfo; | ||
1529 | IMG_SID hMappingInfo; | ||
1530 | #else | ||
1531 | IMG_UINT32 ui32BridgeFlags; | ||
1303 | PVRSRV_KERNEL_MEM_INFO *psKernelMemInfo; | 1532 | PVRSRV_KERNEL_MEM_INFO *psKernelMemInfo; |
1304 | PVRSRV_CLIENT_MEM_INFO sClientMemInfo; | 1533 | #endif |
1534 | PVRSRV_CLIENT_MEM_INFO sClientMemInfo; | ||
1305 | }PVRSRV_BRIDGE_IN_FREE_SHARED_SYS_MEM; | 1535 | }PVRSRV_BRIDGE_IN_FREE_SHARED_SYS_MEM; |
1306 | 1536 | ||
1307 | typedef struct PVRSRV_BRIDGE_OUT_FREE_SHARED_SYS_MEM_TAG | 1537 | typedef struct PVRSRV_BRIDGE_OUT_FREE_SHARED_SYS_MEM_TAG |
@@ -1312,14 +1542,22 @@ typedef struct PVRSRV_BRIDGE_OUT_FREE_SHARED_SYS_MEM_TAG | |||
1312 | typedef struct PVRSRV_BRIDGE_IN_MAP_MEMINFO_MEM_TAG | 1542 | typedef struct PVRSRV_BRIDGE_IN_MAP_MEMINFO_MEM_TAG |
1313 | { | 1543 | { |
1314 | IMG_UINT32 ui32BridgeFlags; | 1544 | IMG_UINT32 ui32BridgeFlags; |
1545 | #if defined (SUPPORT_SID_INTERFACE) | ||
1546 | IMG_SID hKernelMemInfo; | ||
1547 | #else | ||
1315 | IMG_HANDLE hKernelMemInfo; | 1548 | IMG_HANDLE hKernelMemInfo; |
1549 | #endif | ||
1316 | }PVRSRV_BRIDGE_IN_MAP_MEMINFO_MEM; | 1550 | }PVRSRV_BRIDGE_IN_MAP_MEMINFO_MEM; |
1317 | 1551 | ||
1318 | typedef struct PVRSRV_BRIDGE_OUT_MAP_MEMINFO_MEM_TAG | 1552 | typedef struct PVRSRV_BRIDGE_OUT_MAP_MEMINFO_MEM_TAG |
1319 | { | 1553 | { |
1320 | PVRSRV_CLIENT_MEM_INFO sClientMemInfo; | 1554 | PVRSRV_CLIENT_MEM_INFO sClientMemInfo; |
1321 | PVRSRV_CLIENT_SYNC_INFO sClientSyncInfo; | 1555 | PVRSRV_CLIENT_SYNC_INFO sClientSyncInfo; |
1556 | #if defined (SUPPORT_SID_INTERFACE) | ||
1557 | IMG_SID hKernelMemInfo; | ||
1558 | #else | ||
1322 | PVRSRV_KERNEL_MEM_INFO *psKernelMemInfo; | 1559 | PVRSRV_KERNEL_MEM_INFO *psKernelMemInfo; |
1560 | #endif | ||
1323 | PVRSRV_ERROR eError; | 1561 | PVRSRV_ERROR eError; |
1324 | }PVRSRV_BRIDGE_OUT_MAP_MEMINFO_MEM; | 1562 | }PVRSRV_BRIDGE_OUT_MAP_MEMINFO_MEM; |
1325 | 1563 | ||
@@ -1337,7 +1575,11 @@ typedef struct PVRSRV_BRIDGE_OUT_UNMAP_MEMINFO_MEM_TAG | |||
1337 | typedef struct PVRSRV_BRIDGE_IN_GETMMU_PD_DEVPADDR_TAG | 1575 | typedef struct PVRSRV_BRIDGE_IN_GETMMU_PD_DEVPADDR_TAG |
1338 | { | 1576 | { |
1339 | IMG_UINT32 ui32BridgeFlags; | 1577 | IMG_UINT32 ui32BridgeFlags; |
1578 | #if defined (SUPPORT_SID_INTERFACE) | ||
1579 | IMG_SID hDevMemContext; | ||
1580 | #else | ||
1340 | IMG_HANDLE hDevMemContext; | 1581 | IMG_HANDLE hDevMemContext; |
1582 | #endif | ||
1341 | }PVRSRV_BRIDGE_IN_GETMMU_PD_DEVPADDR; | 1583 | }PVRSRV_BRIDGE_IN_GETMMU_PD_DEVPADDR; |
1342 | 1584 | ||
1343 | typedef struct PVRSRV_BRIDGE_OUT_GETMMU_PD_DEVPADDR_TAG | 1585 | typedef struct PVRSRV_BRIDGE_OUT_GETMMU_PD_DEVPADDR_TAG |
@@ -1349,7 +1591,11 @@ typedef struct PVRSRV_BRIDGE_OUT_GETMMU_PD_DEVPADDR_TAG | |||
1349 | typedef struct PVRSRV_BRIDGE_IN_EVENT_OBJECT_WAI_TAG | 1591 | typedef struct PVRSRV_BRIDGE_IN_EVENT_OBJECT_WAI_TAG |
1350 | { | 1592 | { |
1351 | IMG_UINT32 ui32BridgeFlags; | 1593 | IMG_UINT32 ui32BridgeFlags; |
1594 | #if defined (SUPPORT_SID_INTERFACE) | ||
1595 | IMG_SID hOSEventKM; | ||
1596 | #else | ||
1352 | IMG_HANDLE hOSEventKM; | 1597 | IMG_HANDLE hOSEventKM; |
1598 | #endif | ||
1353 | } PVRSRV_BRIDGE_IN_EVENT_OBJECT_WAIT; | 1599 | } PVRSRV_BRIDGE_IN_EVENT_OBJECT_WAIT; |
1354 | 1600 | ||
1355 | typedef struct PVRSRV_BRIDGE_IN_EVENT_OBJECT_OPEN_TAG | 1601 | typedef struct PVRSRV_BRIDGE_IN_EVENT_OBJECT_OPEN_TAG |
@@ -1359,35 +1605,56 @@ typedef struct PVRSRV_BRIDGE_IN_EVENT_OBJECT_OPEN_TAG | |||
1359 | 1605 | ||
1360 | typedef struct PVRSRV_BRIDGE_OUT_EVENT_OBJECT_OPEN_TAG | 1606 | typedef struct PVRSRV_BRIDGE_OUT_EVENT_OBJECT_OPEN_TAG |
1361 | { | 1607 | { |
1608 | #if defined (SUPPORT_SID_INTERFACE) | ||
1609 | IMG_UINT32 hOSEvent; | ||
1610 | #else | ||
1362 | IMG_HANDLE hOSEvent; | 1611 | IMG_HANDLE hOSEvent; |
1612 | #endif | ||
1363 | PVRSRV_ERROR eError; | 1613 | PVRSRV_ERROR eError; |
1364 | } PVRSRV_BRIDGE_OUT_EVENT_OBJECT_OPEN; | 1614 | } PVRSRV_BRIDGE_OUT_EVENT_OBJECT_OPEN; |
1365 | 1615 | ||
1366 | typedef struct PVRSRV_BRIDGE_IN_EVENT_OBJECT_CLOSE_TAG | 1616 | typedef struct PVRSRV_BRIDGE_IN_EVENT_OBJECT_CLOSE_TAG |
1367 | { | 1617 | { |
1368 | PVRSRV_EVENTOBJECT sEventObject; | 1618 | PVRSRV_EVENTOBJECT sEventObject; |
1619 | #if defined (SUPPORT_SID_INTERFACE) | ||
1620 | IMG_SID hOSEventKM; | ||
1621 | #else | ||
1369 | IMG_HANDLE hOSEventKM; | 1622 | IMG_HANDLE hOSEventKM; |
1623 | #endif | ||
1370 | } PVRSRV_BRIDGE_IN_EVENT_OBJECT_CLOSE; | 1624 | } PVRSRV_BRIDGE_IN_EVENT_OBJECT_CLOSE; |
1371 | 1625 | ||
1372 | typedef struct PVRSRV_BRIDGE_OUT_CREATE_SYNC_INFO_MOD_OBJ_TAG | 1626 | typedef struct PVRSRV_BRIDGE_OUT_CREATE_SYNC_INFO_MOD_OBJ_TAG |
1373 | { | 1627 | { |
1374 | PVRSRV_ERROR eError; | 1628 | PVRSRV_ERROR eError; |
1375 | 1629 | ||
1630 | #if defined (SUPPORT_SID_INTERFACE) | ||
1631 | IMG_SID hKernelSyncInfoModObj; | ||
1632 | #else | ||
1376 | IMG_HANDLE hKernelSyncInfoModObj; | 1633 | IMG_HANDLE hKernelSyncInfoModObj; |
1634 | #endif | ||
1377 | 1635 | ||
1378 | } PVRSRV_BRIDGE_OUT_CREATE_SYNC_INFO_MOD_OBJ; | 1636 | } PVRSRV_BRIDGE_OUT_CREATE_SYNC_INFO_MOD_OBJ; |
1379 | 1637 | ||
1380 | typedef struct PVRSRV_BRIDGE_IN_DESTROY_SYNC_INFO_MOD_OBJ | 1638 | typedef struct PVRSRV_BRIDGE_IN_DESTROY_SYNC_INFO_MOD_OBJ |
1381 | { | 1639 | { |
1382 | IMG_UINT32 ui32BridgeFlags; | 1640 | IMG_UINT32 ui32BridgeFlags; |
1641 | #if defined (SUPPORT_SID_INTERFACE) | ||
1642 | IMG_SID hKernelSyncInfoModObj; | ||
1643 | #else | ||
1383 | IMG_HANDLE hKernelSyncInfoModObj; | 1644 | IMG_HANDLE hKernelSyncInfoModObj; |
1645 | #endif | ||
1384 | } PVRSRV_BRIDGE_IN_DESTROY_SYNC_INFO_MOD_OBJ; | 1646 | } PVRSRV_BRIDGE_IN_DESTROY_SYNC_INFO_MOD_OBJ; |
1385 | 1647 | ||
1386 | typedef struct PVRSRV_BRIDGE_IN_MODIFY_PENDING_SYNC_OPS_TAG | 1648 | typedef struct PVRSRV_BRIDGE_IN_MODIFY_PENDING_SYNC_OPS_TAG |
1387 | { | 1649 | { |
1388 | IMG_UINT32 ui32BridgeFlags; | 1650 | IMG_UINT32 ui32BridgeFlags; |
1651 | #if defined (SUPPORT_SID_INTERFACE) | ||
1652 | IMG_SID hKernelSyncInfoModObj; | ||
1653 | IMG_SID hKernelSyncInfo; | ||
1654 | #else | ||
1389 | IMG_HANDLE hKernelSyncInfoModObj; | 1655 | IMG_HANDLE hKernelSyncInfoModObj; |
1390 | IMG_HANDLE hKernelSyncInfo; | 1656 | IMG_HANDLE hKernelSyncInfo; |
1657 | #endif | ||
1391 | IMG_UINT32 ui32ModifyFlags; | 1658 | IMG_UINT32 ui32ModifyFlags; |
1392 | 1659 | ||
1393 | } PVRSRV_BRIDGE_IN_MODIFY_PENDING_SYNC_OPS; | 1660 | } PVRSRV_BRIDGE_IN_MODIFY_PENDING_SYNC_OPS; |
@@ -1395,7 +1662,11 @@ typedef struct PVRSRV_BRIDGE_IN_MODIFY_PENDING_SYNC_OPS_TAG | |||
1395 | typedef struct PVRSRV_BRIDGE_IN_MODIFY_COMPLETE_SYNC_OPS_TAG | 1662 | typedef struct PVRSRV_BRIDGE_IN_MODIFY_COMPLETE_SYNC_OPS_TAG |
1396 | { | 1663 | { |
1397 | IMG_UINT32 ui32BridgeFlags; | 1664 | IMG_UINT32 ui32BridgeFlags; |
1665 | #if defined (SUPPORT_SID_INTERFACE) | ||
1666 | IMG_SID hKernelSyncInfoModObj; | ||
1667 | #else | ||
1398 | IMG_HANDLE hKernelSyncInfoModObj; | 1668 | IMG_HANDLE hKernelSyncInfoModObj; |
1669 | #endif | ||
1399 | } PVRSRV_BRIDGE_IN_MODIFY_COMPLETE_SYNC_OPS; | 1670 | } PVRSRV_BRIDGE_IN_MODIFY_COMPLETE_SYNC_OPS; |
1400 | 1671 | ||
1401 | typedef struct PVRSRV_BRIDGE_OUT_MODIFY_PENDING_SYNC_OPS_TAG | 1672 | typedef struct PVRSRV_BRIDGE_OUT_MODIFY_PENDING_SYNC_OPS_TAG |
@@ -1408,16 +1679,56 @@ typedef struct PVRSRV_BRIDGE_OUT_MODIFY_PENDING_SYNC_OPS_TAG | |||
1408 | 1679 | ||
1409 | } PVRSRV_BRIDGE_OUT_MODIFY_PENDING_SYNC_OPS; | 1680 | } PVRSRV_BRIDGE_OUT_MODIFY_PENDING_SYNC_OPS; |
1410 | 1681 | ||
1682 | typedef struct PVRSRV_BRIDGE_IN_SYNC_OPS_TAKE_TOKEN_TAG | ||
1683 | { | ||
1684 | IMG_UINT32 ui32BridgeFlags; | ||
1685 | #if defined (SUPPORT_SID_INTERFACE) | ||
1686 | IMG_SID hKernelSyncInfo; | ||
1687 | #else | ||
1688 | IMG_HANDLE hKernelSyncInfo; | ||
1689 | #endif | ||
1690 | |||
1691 | } PVRSRV_BRIDGE_IN_SYNC_OPS_TAKE_TOKEN; | ||
1692 | |||
1693 | typedef struct PVRSRV_BRIDGE_OUT_SYNC_OPS_TAKE_TOKEN_TAG | ||
1694 | { | ||
1695 | PVRSRV_ERROR eError; | ||
1696 | |||
1697 | IMG_UINT32 ui32ReadOpsPending; | ||
1698 | IMG_UINT32 ui32WriteOpsPending; | ||
1699 | |||
1700 | } PVRSRV_BRIDGE_OUT_SYNC_OPS_TAKE_TOKEN; | ||
1701 | |||
1702 | typedef struct PVRSRV_BRIDGE_IN_SYNC_OPS_FLUSH_TO_TOKEN_TAG | ||
1703 | { | ||
1704 | IMG_UINT32 ui32BridgeFlags; | ||
1705 | #if defined (SUPPORT_SID_INTERFACE) | ||
1706 | IMG_SID hKernelSyncInfo; | ||
1707 | #else | ||
1708 | IMG_HANDLE hKernelSyncInfo; | ||
1709 | #endif | ||
1710 | IMG_UINT32 ui32ReadOpsPendingSnapshot; | ||
1711 | IMG_UINT32 ui32WriteOpsPendingSnapshot; | ||
1712 | } PVRSRV_BRIDGE_IN_SYNC_OPS_FLUSH_TO_TOKEN; | ||
1713 | |||
1411 | typedef struct PVRSRV_BRIDGE_IN_SYNC_OPS_FLUSH_TO_MOD_OBJ_TAG | 1714 | typedef struct PVRSRV_BRIDGE_IN_SYNC_OPS_FLUSH_TO_MOD_OBJ_TAG |
1412 | { | 1715 | { |
1413 | IMG_UINT32 ui32BridgeFlags; | 1716 | IMG_UINT32 ui32BridgeFlags; |
1717 | #if defined (SUPPORT_SID_INTERFACE) | ||
1718 | IMG_SID hKernelSyncInfoModObj; | ||
1719 | #else | ||
1414 | IMG_HANDLE hKernelSyncInfoModObj; | 1720 | IMG_HANDLE hKernelSyncInfoModObj; |
1721 | #endif | ||
1415 | } PVRSRV_BRIDGE_IN_SYNC_OPS_FLUSH_TO_MOD_OBJ; | 1722 | } PVRSRV_BRIDGE_IN_SYNC_OPS_FLUSH_TO_MOD_OBJ; |
1416 | 1723 | ||
1417 | typedef struct PVRSRV_BRIDGE_IN_SYNC_OPS_FLUSH_TO_DELTA_TAG | 1724 | typedef struct PVRSRV_BRIDGE_IN_SYNC_OPS_FLUSH_TO_DELTA_TAG |
1418 | { | 1725 | { |
1419 | IMG_UINT32 ui32BridgeFlags; | 1726 | IMG_UINT32 ui32BridgeFlags; |
1727 | #if defined (SUPPORT_SID_INTERFACE) | ||
1728 | IMG_SID hKernelSyncInfo; | ||
1729 | #else | ||
1420 | IMG_HANDLE hKernelSyncInfo; | 1730 | IMG_HANDLE hKernelSyncInfo; |
1731 | #endif | ||
1421 | IMG_UINT32 ui32Delta; | 1732 | IMG_UINT32 ui32Delta; |
1422 | } PVRSRV_BRIDGE_IN_SYNC_OPS_FLUSH_TO_DELTA; | 1733 | } PVRSRV_BRIDGE_IN_SYNC_OPS_FLUSH_TO_DELTA; |
1423 | 1734 | ||
@@ -1425,23 +1736,41 @@ typedef struct PVRSRV_BRIDGE_IN_ALLOC_SYNC_INFO_TAG | |||
1425 | { | 1736 | { |
1426 | IMG_UINT32 ui32BridgeFlags; | 1737 | IMG_UINT32 ui32BridgeFlags; |
1427 | 1738 | ||
1739 | #if defined (SUPPORT_SID_INTERFACE) | ||
1740 | IMG_SID hDevCookie; | ||
1741 | #else | ||
1428 | IMG_HANDLE hDevCookie; | 1742 | IMG_HANDLE hDevCookie; |
1743 | #endif | ||
1429 | } PVRSRV_BRIDGE_IN_ALLOC_SYNC_INFO; | 1744 | } PVRSRV_BRIDGE_IN_ALLOC_SYNC_INFO; |
1430 | 1745 | ||
1431 | typedef struct PVRSRV_BRIDGE_OUT_ALLOC_SYNC_INFO_TAG | 1746 | typedef struct PVRSRV_BRIDGE_OUT_ALLOC_SYNC_INFO_TAG |
1432 | { | 1747 | { |
1433 | PVRSRV_ERROR eError; | 1748 | PVRSRV_ERROR eError; |
1434 | 1749 | ||
1750 | #if defined (SUPPORT_SID_INTERFACE) | ||
1751 | IMG_SID hKernelSyncInfo; | ||
1752 | #else | ||
1435 | IMG_HANDLE hKernelSyncInfo; | 1753 | IMG_HANDLE hKernelSyncInfo; |
1754 | #endif | ||
1436 | } PVRSRV_BRIDGE_OUT_ALLOC_SYNC_INFO; | 1755 | } PVRSRV_BRIDGE_OUT_ALLOC_SYNC_INFO; |
1437 | 1756 | ||
1438 | typedef struct PVRSRV_BRIDGE_IN_FREE_SYNC_INFO_TAG | 1757 | typedef struct PVRSRV_BRIDGE_IN_FREE_SYNC_INFO_TAG |
1439 | { | 1758 | { |
1440 | IMG_UINT32 ui32BridgeFlags; | 1759 | IMG_UINT32 ui32BridgeFlags; |
1441 | 1760 | ||
1761 | #if defined (SUPPORT_SID_INTERFACE) | ||
1762 | IMG_SID hKernelSyncInfo; | ||
1763 | #else | ||
1442 | IMG_HANDLE hKernelSyncInfo; | 1764 | IMG_HANDLE hKernelSyncInfo; |
1765 | #endif | ||
1443 | } PVRSRV_BRIDGE_IN_FREE_SYNC_INFO; | 1766 | } PVRSRV_BRIDGE_IN_FREE_SYNC_INFO; |
1444 | 1767 | ||
1768 | typedef struct PVRSRV_BRIDGE_IN_CHG_DEV_MEM_ATTRIBS_TAG | ||
1769 | { | ||
1770 | IMG_SID hKernelMemInfo; | ||
1771 | IMG_UINT32 ui32Attribs; | ||
1772 | } PVRSRV_BRIDGE_IN_CHG_DEV_MEM_ATTRIBS; | ||
1773 | |||
1445 | 1774 | ||
1446 | #if defined (__cplusplus) | 1775 | #if defined (__cplusplus) |
1447 | } | 1776 | } |
diff --git a/drivers/gpu/pvr/pvr_bridge_k.c b/drivers/gpu/pvr/pvr_bridge_k.c index 3abf6048fde..4b639039566 100644 --- a/drivers/gpu/pvr/pvr_bridge_k.c +++ b/drivers/gpu/pvr/pvr_bridge_k.c | |||
@@ -54,12 +54,6 @@ | |||
54 | 54 | ||
55 | #include "bridged_pvr_bridge.h" | 55 | #include "bridged_pvr_bridge.h" |
56 | 56 | ||
57 | #ifdef MODULE_TEST | ||
58 | #include "pvr_test_bridge.h" | ||
59 | #include "kern_test.h" | ||
60 | #endif | ||
61 | |||
62 | |||
63 | #if defined(SUPPORT_DRI_DRM) | 57 | #if defined(SUPPORT_DRI_DRM) |
64 | #define PRIVATE_DATA(pFile) ((pFile)->driver_priv) | 58 | #define PRIVATE_DATA(pFile) ((pFile)->driver_priv) |
65 | #else | 59 | #else |
@@ -234,150 +228,6 @@ PVRSRV_BridgeDispatchKM(struct file *pFile, unsigned int unref__ ioctlCmd, unsig | |||
234 | #endif | 228 | #endif |
235 | 229 | ||
236 | cmd = psBridgePackageKM->ui32BridgeID; | 230 | cmd = psBridgePackageKM->ui32BridgeID; |
237 | |||
238 | #if defined(MODULE_TEST) | ||
239 | switch (cmd) | ||
240 | { | ||
241 | case PVRSRV_BRIDGE_SERVICES_TEST_MEM1: | ||
242 | { | ||
243 | PVRSRV_ERROR eError = MemTest1(); | ||
244 | if (psBridgePackageKM->ui32OutBufferSize == sizeof(PVRSRV_BRIDGE_RETURN)) | ||
245 | { | ||
246 | PVRSRV_BRIDGE_RETURN* pReturn = (PVRSRV_BRIDGE_RETURN*)psBridgePackageKM->pvParamOut ; | ||
247 | pReturn->eError = eError; | ||
248 | } | ||
249 | } | ||
250 | err = 0; | ||
251 | goto unlock_and_return; | ||
252 | case PVRSRV_BRIDGE_SERVICES_TEST_MEM2: | ||
253 | { | ||
254 | PVRSRV_ERROR eError = MemTest2(); | ||
255 | if (psBridgePackageKM->ui32OutBufferSize == sizeof(PVRSRV_BRIDGE_RETURN)) | ||
256 | { | ||
257 | PVRSRV_BRIDGE_RETURN* pReturn = (PVRSRV_BRIDGE_RETURN*)psBridgePackageKM->pvParamOut ; | ||
258 | pReturn->eError = eError; | ||
259 | } | ||
260 | } | ||
261 | err = 0; | ||
262 | goto unlock_and_return; | ||
263 | |||
264 | case PVRSRV_BRIDGE_SERVICES_TEST_RESOURCE: | ||
265 | { | ||
266 | PVRSRV_ERROR eError = ResourceTest(); | ||
267 | if (psBridgePackageKM->ui32OutBufferSize == sizeof(PVRSRV_BRIDGE_RETURN)) | ||
268 | { | ||
269 | PVRSRV_BRIDGE_RETURN* pReturn = (PVRSRV_BRIDGE_RETURN*)psBridgePackageKM->pvParamOut ; | ||
270 | pReturn->eError = eError; | ||
271 | } | ||
272 | } | ||
273 | err = 0; | ||
274 | goto unlock_and_return; | ||
275 | |||
276 | case PVRSRV_BRIDGE_SERVICES_TEST_EVENTOBJECT: | ||
277 | { | ||
278 | PVRSRV_ERROR eError = EventObjectTest(); | ||
279 | if (psBridgePackageKM->ui32OutBufferSize == sizeof(PVRSRV_BRIDGE_RETURN)) | ||
280 | { | ||
281 | PVRSRV_BRIDGE_RETURN* pReturn = (PVRSRV_BRIDGE_RETURN*)psBridgePackageKM->pvParamOut ; | ||
282 | pReturn->eError = eError; | ||
283 | } | ||
284 | } | ||
285 | err = 0; | ||
286 | goto unlock_and_return; | ||
287 | |||
288 | case PVRSRV_BRIDGE_SERVICES_TEST_MEMMAPPING: | ||
289 | { | ||
290 | PVRSRV_ERROR eError = MemMappingTest(); | ||
291 | if (psBridgePackageKM->ui32OutBufferSize == sizeof(PVRSRV_BRIDGE_RETURN)) | ||
292 | { | ||
293 | PVRSRV_BRIDGE_RETURN* pReturn = (PVRSRV_BRIDGE_RETURN*)psBridgePackageKM->pvParamOut ; | ||
294 | pReturn->eError = eError; | ||
295 | } | ||
296 | } | ||
297 | err = 0; | ||
298 | goto unlock_and_return; | ||
299 | |||
300 | case PVRSRV_BRIDGE_SERVICES_TEST_PROCESSID: | ||
301 | { | ||
302 | PVRSRV_ERROR eError = ProcessIDTest(); | ||
303 | if (psBridgePackageKM->ui32OutBufferSize == sizeof(PVRSRV_BRIDGE_RETURN)) | ||
304 | { | ||
305 | PVRSRV_BRIDGE_RETURN* pReturn = (PVRSRV_BRIDGE_RETURN*)psBridgePackageKM->pvParamOut ; | ||
306 | pReturn->eError = eError; | ||
307 | } | ||
308 | } | ||
309 | err = 0; | ||
310 | goto unlock_and_return; | ||
311 | |||
312 | case PVRSRV_BRIDGE_SERVICES_TEST_CLOCKUSWAITUS: | ||
313 | { | ||
314 | PVRSRV_ERROR eError = ClockusWaitusTest(); | ||
315 | if (psBridgePackageKM->ui32OutBufferSize == sizeof(PVRSRV_BRIDGE_RETURN)) | ||
316 | { | ||
317 | PVRSRV_BRIDGE_RETURN* pReturn = (PVRSRV_BRIDGE_RETURN*)psBridgePackageKM->pvParamOut ; | ||
318 | pReturn->eError = eError; | ||
319 | } | ||
320 | } | ||
321 | err = 0; | ||
322 | goto unlock_and_return; | ||
323 | |||
324 | case PVRSRV_BRIDGE_SERVICES_TEST_TIMER: | ||
325 | { | ||
326 | PVRSRV_ERROR eError = TimerTest(); | ||
327 | if (psBridgePackageKM->ui32OutBufferSize == sizeof(PVRSRV_BRIDGE_RETURN)) | ||
328 | { | ||
329 | PVRSRV_BRIDGE_RETURN* pReturn = (PVRSRV_BRIDGE_RETURN*)psBridgePackageKM->pvParamOut ; | ||
330 | pReturn->eError = eError; | ||
331 | } | ||
332 | } | ||
333 | err = 0; | ||
334 | goto unlock_and_return; | ||
335 | |||
336 | case PVRSRV_BRIDGE_SERVICES_TEST_PRIVSRV: | ||
337 | { | ||
338 | PVRSRV_ERROR eError = PrivSrvTest(); | ||
339 | if (psBridgePackageKM->ui32OutBufferSize == sizeof(PVRSRV_BRIDGE_RETURN)) | ||
340 | { | ||
341 | PVRSRV_BRIDGE_RETURN* pReturn = (PVRSRV_BRIDGE_RETURN*)psBridgePackageKM->pvParamOut ; | ||
342 | pReturn->eError = eError; | ||
343 | } | ||
344 | } | ||
345 | err = 0; | ||
346 | goto unlock_and_return; | ||
347 | case PVRSRV_BRIDGE_SERVICES_TEST_COPYDATA: | ||
348 | { | ||
349 | IMG_UINT32 ui32PID; | ||
350 | PVRSRV_PER_PROCESS_DATA *psPerProc; | ||
351 | PVRSRV_ERROR eError; | ||
352 | |||
353 | ui32PID = OSGetCurrentProcessIDKM(); | ||
354 | |||
355 | PVRSRVTrace("PVRSRV_BRIDGE_SERVICES_TEST_COPYDATA %d", ui32PID); | ||
356 | |||
357 | psPerProc = PVRSRVPerProcessData(ui32PID); | ||
358 | |||
359 | eError = CopyDataTest(psBridgePackageKM->pvParamIn, psBridgePackageKM->pvParamOut, psPerProc); | ||
360 | |||
361 | *(PVRSRV_ERROR*)psBridgePackageKM->pvParamOut = eError; | ||
362 | err = 0; | ||
363 | goto unlock_and_return; | ||
364 | } | ||
365 | |||
366 | |||
367 | case PVRSRV_BRIDGE_SERVICES_TEST_POWERMGMT: | ||
368 | { | ||
369 | PVRSRV_ERROR eError = PowerMgmtTest(); | ||
370 | if (psBridgePackageKM->ui32OutBufferSize == sizeof(PVRSRV_BRIDGE_RETURN)) | ||
371 | { | ||
372 | PVRSRV_BRIDGE_RETURN* pReturn = (PVRSRV_BRIDGE_RETURN*)psBridgePackageKM->pvParamOut ; | ||
373 | pReturn->eError = eError; | ||
374 | } | ||
375 | } | ||
376 | err = 0; | ||
377 | goto unlock_and_return; | ||
378 | |||
379 | } | ||
380 | #endif | ||
381 | 231 | ||
382 | if(cmd != PVRSRV_BRIDGE_CONNECT_SERVICES) | 232 | if(cmd != PVRSRV_BRIDGE_CONNECT_SERVICES) |
383 | { | 233 | { |
@@ -416,10 +266,9 @@ PVRSRV_BridgeDispatchKM(struct file *pFile, unsigned int unref__ ioctlCmd, unsig | |||
416 | 266 | ||
417 | psBridgePackageKM->ui32BridgeID = PVRSRV_GET_BRIDGE_ID(psBridgePackageKM->ui32BridgeID); | 267 | psBridgePackageKM->ui32BridgeID = PVRSRV_GET_BRIDGE_ID(psBridgePackageKM->ui32BridgeID); |
418 | 268 | ||
419 | #if defined(PVR_SECURE_FD_EXPORT) | ||
420 | switch(cmd) | 269 | switch(cmd) |
421 | { | 270 | { |
422 | case PVRSRV_BRIDGE_EXPORT_DEVICEMEM: | 271 | case PVRSRV_BRIDGE_EXPORT_DEVICEMEM_2: |
423 | { | 272 | { |
424 | PVRSRV_FILE_PRIVATE_DATA *psPrivateData = PRIVATE_DATA(pFile); | 273 | PVRSRV_FILE_PRIVATE_DATA *psPrivateData = PRIVATE_DATA(pFile); |
425 | 274 | ||
@@ -433,7 +282,7 @@ PVRSRV_BridgeDispatchKM(struct file *pFile, unsigned int unref__ ioctlCmd, unsig | |||
433 | break; | 282 | break; |
434 | } | 283 | } |
435 | 284 | ||
436 | case PVRSRV_BRIDGE_MAP_DEV_MEMORY: | 285 | case PVRSRV_BRIDGE_MAP_DEV_MEMORY_2: |
437 | { | 286 | { |
438 | PVRSRV_BRIDGE_IN_MAP_DEV_MEMORY *psMapDevMemIN = | 287 | PVRSRV_BRIDGE_IN_MAP_DEV_MEMORY *psMapDevMemIN = |
439 | (PVRSRV_BRIDGE_IN_MAP_DEV_MEMORY *)psBridgePackageKM->pvParamIn; | 288 | (PVRSRV_BRIDGE_IN_MAP_DEV_MEMORY *)psBridgePackageKM->pvParamIn; |
@@ -464,7 +313,7 @@ PVRSRV_BridgeDispatchKM(struct file *pFile, unsigned int unref__ ioctlCmd, unsig | |||
464 | break; | 313 | break; |
465 | } | 314 | } |
466 | } | 315 | } |
467 | #endif | 316 | |
468 | #if defined(SUPPORT_DRI_DRM) && defined(PVR_SECURE_DRM_AUTH_EXPORT) | 317 | #if defined(SUPPORT_DRI_DRM) && defined(PVR_SECURE_DRM_AUTH_EXPORT) |
469 | switch(cmd) | 318 | switch(cmd) |
470 | { | 319 | { |
@@ -522,8 +371,7 @@ PVRSRV_BridgeDispatchKM(struct file *pFile, unsigned int unref__ ioctlCmd, unsig | |||
522 | 371 | ||
523 | switch(cmd) | 372 | switch(cmd) |
524 | { | 373 | { |
525 | #if defined(PVR_SECURE_FD_EXPORT) | 374 | case PVRSRV_BRIDGE_EXPORT_DEVICEMEM_2: |
526 | case PVRSRV_BRIDGE_EXPORT_DEVICEMEM: | ||
527 | { | 375 | { |
528 | PVRSRV_BRIDGE_OUT_EXPORTDEVICEMEM *psExportDeviceMemOUT = | 376 | PVRSRV_BRIDGE_OUT_EXPORTDEVICEMEM *psExportDeviceMemOUT = |
529 | (PVRSRV_BRIDGE_OUT_EXPORTDEVICEMEM *)psBridgePackageKM->pvParamOut; | 377 | (PVRSRV_BRIDGE_OUT_EXPORTDEVICEMEM *)psBridgePackageKM->pvParamOut; |
@@ -535,7 +383,6 @@ PVRSRV_BridgeDispatchKM(struct file *pFile, unsigned int unref__ ioctlCmd, unsig | |||
535 | #endif | 383 | #endif |
536 | break; | 384 | break; |
537 | } | 385 | } |
538 | #endif | ||
539 | 386 | ||
540 | #if defined(SUPPORT_MEMINFO_IDS) | 387 | #if defined(SUPPORT_MEMINFO_IDS) |
541 | case PVRSRV_BRIDGE_MAP_DEV_MEMORY: | 388 | case PVRSRV_BRIDGE_MAP_DEV_MEMORY: |
diff --git a/drivers/gpu/pvr/pvr_bridge_km.h b/drivers/gpu/pvr/pvr_bridge_km.h index d5592c2ecf5..fe6b22687ce 100644 --- a/drivers/gpu/pvr/pvr_bridge_km.h +++ b/drivers/gpu/pvr/pvr_bridge_km.h | |||
@@ -57,14 +57,22 @@ PVRSRV_ERROR IMG_CALLCONV PVRSRVDestroyCommandQueueKM(PVRSRV_QUEUE_INFO *psQueue | |||
57 | 57 | ||
58 | IMG_IMPORT | 58 | IMG_IMPORT |
59 | PVRSRV_ERROR IMG_CALLCONV PVRSRVGetDeviceMemHeapsKM(IMG_HANDLE hDevCookie, | 59 | PVRSRV_ERROR IMG_CALLCONV PVRSRVGetDeviceMemHeapsKM(IMG_HANDLE hDevCookie, |
60 | #if defined (SUPPORT_SID_INTERFACE) | ||
61 | PVRSRV_HEAP_INFO_KM *psHeapInfo); | ||
62 | #else | ||
60 | PVRSRV_HEAP_INFO *psHeapInfo); | 63 | PVRSRV_HEAP_INFO *psHeapInfo); |
64 | #endif | ||
61 | 65 | ||
62 | IMG_IMPORT | 66 | IMG_IMPORT |
63 | PVRSRV_ERROR IMG_CALLCONV PVRSRVCreateDeviceMemContextKM(IMG_HANDLE hDevCookie, | 67 | PVRSRV_ERROR IMG_CALLCONV PVRSRVCreateDeviceMemContextKM(IMG_HANDLE hDevCookie, |
64 | PVRSRV_PER_PROCESS_DATA *psPerProc, | 68 | PVRSRV_PER_PROCESS_DATA *psPerProc, |
65 | IMG_HANDLE *phDevMemContext, | 69 | IMG_HANDLE *phDevMemContext, |
66 | IMG_UINT32 *pui32ClientHeapCount, | 70 | IMG_UINT32 *pui32ClientHeapCount, |
71 | #if defined (SUPPORT_SID_INTERFACE) | ||
72 | PVRSRV_HEAP_INFO_KM *psHeapInfo, | ||
73 | #else | ||
67 | PVRSRV_HEAP_INFO *psHeapInfo, | 74 | PVRSRV_HEAP_INFO *psHeapInfo, |
75 | #endif | ||
68 | IMG_BOOL *pbCreated, | 76 | IMG_BOOL *pbCreated, |
69 | IMG_BOOL *pbShared); | 77 | IMG_BOOL *pbShared); |
70 | 78 | ||
@@ -79,7 +87,11 @@ IMG_IMPORT | |||
79 | PVRSRV_ERROR IMG_CALLCONV PVRSRVGetDeviceMemHeapInfoKM(IMG_HANDLE hDevCookie, | 87 | PVRSRV_ERROR IMG_CALLCONV PVRSRVGetDeviceMemHeapInfoKM(IMG_HANDLE hDevCookie, |
80 | IMG_HANDLE hDevMemContext, | 88 | IMG_HANDLE hDevMemContext, |
81 | IMG_UINT32 *pui32ClientHeapCount, | 89 | IMG_UINT32 *pui32ClientHeapCount, |
90 | #if defined (SUPPORT_SID_INTERFACE) | ||
91 | PVRSRV_HEAP_INFO_KM *psHeapInfo, | ||
92 | #else | ||
82 | PVRSRV_HEAP_INFO *psHeapInfo, | 93 | PVRSRV_HEAP_INFO *psHeapInfo, |
94 | #endif | ||
83 | IMG_BOOL *pbShared | 95 | IMG_BOOL *pbShared |
84 | ); | 96 | ); |
85 | 97 | ||
@@ -247,6 +259,10 @@ PVRSRV_ERROR IMG_CALLCONV PVRSRVMapDeviceClassMemoryKM(PVRSRV_PER_PROCESS_DATA * | |||
247 | PVRSRV_KERNEL_MEM_INFO **ppsMemInfo, | 259 | PVRSRV_KERNEL_MEM_INFO **ppsMemInfo, |
248 | IMG_HANDLE *phOSMapInfo); | 260 | IMG_HANDLE *phOSMapInfo); |
249 | 261 | ||
262 | IMG_EXPORT | ||
263 | PVRSRV_ERROR IMG_CALLCONV PVRSRVChangeDeviceMemoryAttributesKM(IMG_HANDLE hKernelMemInfo, | ||
264 | IMG_UINT32 ui32Attribs); | ||
265 | |||
250 | IMG_IMPORT | 266 | IMG_IMPORT |
251 | PVRSRV_ERROR IMG_CALLCONV PVRSRVUnmapDeviceClassMemoryKM(PVRSRV_KERNEL_MEM_INFO *psMemInfo); | 267 | PVRSRV_ERROR IMG_CALLCONV PVRSRVUnmapDeviceClassMemoryKM(PVRSRV_KERNEL_MEM_INFO *psMemInfo); |
252 | 268 | ||
@@ -263,7 +279,11 @@ IMG_IMPORT | |||
263 | PVRSRV_ERROR IMG_CALLCONV PVRSRVFreeSyncInfoKM(PVRSRV_KERNEL_SYNC_INFO *psKernelSyncInfo); | 279 | PVRSRV_ERROR IMG_CALLCONV PVRSRVFreeSyncInfoKM(PVRSRV_KERNEL_SYNC_INFO *psKernelSyncInfo); |
264 | 280 | ||
265 | IMG_IMPORT | 281 | IMG_IMPORT |
282 | #if defined (SUPPORT_SID_INTERFACE) | ||
283 | PVRSRV_ERROR IMG_CALLCONV PVRSRVGetMiscInfoKM(PVRSRV_MISC_INFO_KM *psMiscInfo); | ||
284 | #else | ||
266 | PVRSRV_ERROR IMG_CALLCONV PVRSRVGetMiscInfoKM(PVRSRV_MISC_INFO *psMiscInfo); | 285 | PVRSRV_ERROR IMG_CALLCONV PVRSRVGetMiscInfoKM(PVRSRV_MISC_INFO *psMiscInfo); |
286 | #endif | ||
267 | 287 | ||
268 | IMG_IMPORT PVRSRV_ERROR | 288 | IMG_IMPORT PVRSRV_ERROR |
269 | PVRSRVAllocSharedSysMemoryKM(PVRSRV_PER_PROCESS_DATA *psPerProc, | 289 | PVRSRVAllocSharedSysMemoryKM(PVRSRV_PER_PROCESS_DATA *psPerProc, |
diff --git a/drivers/gpu/pvr/pvr_debug.h b/drivers/gpu/pvr/pvr_debug.h index 21fa2cdfbe3..5e7c77c8a39 100644 --- a/drivers/gpu/pvr/pvr_debug.h +++ b/drivers/gpu/pvr/pvr_debug.h | |||
@@ -30,6 +30,7 @@ | |||
30 | 30 | ||
31 | #include "img_types.h" | 31 | #include "img_types.h" |
32 | 32 | ||
33 | |||
33 | #if defined (__cplusplus) | 34 | #if defined (__cplusplus) |
34 | extern "C" { | 35 | extern "C" { |
35 | #endif | 36 | #endif |
diff --git a/drivers/gpu/pvr/pvrmmap.h b/drivers/gpu/pvr/pvrmmap.h index 4404d8852af..af3369aae23 100644 --- a/drivers/gpu/pvr/pvrmmap.h +++ b/drivers/gpu/pvr/pvrmmap.h | |||
@@ -27,10 +27,18 @@ | |||
27 | #ifndef __PVRMMAP_H__ | 27 | #ifndef __PVRMMAP_H__ |
28 | #define __PVRMMAP_H__ | 28 | #define __PVRMMAP_H__ |
29 | 29 | ||
30 | #if defined (SUPPORT_SID_INTERFACE) | ||
31 | PVRSRV_ERROR PVRPMapKMem(IMG_HANDLE hModule, IMG_VOID **ppvLinAddr, IMG_VOID *pvLinAddrKM, IMG_SID *phMappingInfo, IMG_SID hMHandle); | ||
32 | #else | ||
30 | PVRSRV_ERROR PVRPMapKMem(IMG_HANDLE hModule, IMG_VOID **ppvLinAddr, IMG_VOID *pvLinAddrKM, IMG_HANDLE *phMappingInfo, IMG_HANDLE hMHandle); | 33 | PVRSRV_ERROR PVRPMapKMem(IMG_HANDLE hModule, IMG_VOID **ppvLinAddr, IMG_VOID *pvLinAddrKM, IMG_HANDLE *phMappingInfo, IMG_HANDLE hMHandle); |
34 | #endif | ||
31 | 35 | ||
32 | 36 | ||
37 | #if defined (SUPPORT_SID_INTERFACE) | ||
38 | IMG_BOOL PVRUnMapKMem(IMG_HANDLE hModule, IMG_SID hMappingInfo, IMG_SID hMHandle); | ||
39 | #else | ||
33 | IMG_BOOL PVRUnMapKMem(IMG_HANDLE hModule, IMG_HANDLE hMappingInfo, IMG_HANDLE hMHandle); | 40 | IMG_BOOL PVRUnMapKMem(IMG_HANDLE hModule, IMG_HANDLE hMappingInfo, IMG_HANDLE hMHandle); |
41 | #endif | ||
34 | 42 | ||
35 | #endif | 43 | #endif |
36 | 44 | ||
diff --git a/drivers/gpu/pvr/pvrsrv.c b/drivers/gpu/pvr/pvrsrv.c index 5862fb925f8..cb05a59e8aa 100644 --- a/drivers/gpu/pvr/pvrsrv.c +++ b/drivers/gpu/pvr/pvrsrv.c | |||
@@ -32,6 +32,9 @@ | |||
32 | #include "pdump_km.h" | 32 | #include "pdump_km.h" |
33 | #include "deviceid.h" | 33 | #include "deviceid.h" |
34 | #include "ra.h" | 34 | #include "ra.h" |
35 | #if defined(TTRACE) | ||
36 | #include "ttrace.h" | ||
37 | #endif | ||
35 | 38 | ||
36 | #include "pvrversion.h" | 39 | #include "pvrversion.h" |
37 | 40 | ||
@@ -40,6 +43,7 @@ | |||
40 | IMG_UINT32 g_ui32InitFlags; | 43 | IMG_UINT32 g_ui32InitFlags; |
41 | 44 | ||
42 | #define INIT_DATA_ENABLE_PDUMPINIT 0x1U | 45 | #define INIT_DATA_ENABLE_PDUMPINIT 0x1U |
46 | #define INIT_DATA_ENABLE_TTARCE 0x2U | ||
43 | 47 | ||
44 | PVRSRV_ERROR AllocateDeviceID(SYS_DATA *psSysData, IMG_UINT32 *pui32DevID) | 48 | PVRSRV_ERROR AllocateDeviceID(SYS_DATA *psSysData, IMG_UINT32 *pui32DevID) |
45 | { | 49 | { |
@@ -238,12 +242,24 @@ PVRSRV_ERROR IMG_CALLCONV PVRSRVInit(PSYS_DATA psSysData) | |||
238 | goto Error; | 242 | goto Error; |
239 | } | 243 | } |
240 | 244 | ||
241 | if(OSEventObjectCreate("PVRSRV_GLOBAL_EVENTOBJECT", psSysData->psGlobalEventObject) != PVRSRV_OK) | 245 | if(OSEventObjectCreateKM("PVRSRV_GLOBAL_EVENTOBJECT", psSysData->psGlobalEventObject) != PVRSRV_OK) |
242 | { | 246 | { |
243 | goto Error; | 247 | goto Error; |
244 | } | 248 | } |
245 | 249 | ||
246 | 250 | ||
251 | psSysData->pfnHighResTimerCreate = OSFuncHighResTimerCreate; | ||
252 | psSysData->pfnHighResTimerGetus = OSFuncHighResTimerGetus; | ||
253 | psSysData->pfnHighResTimerDestroy = OSFuncHighResTimerDestroy; | ||
254 | |||
255 | #if defined(TTRACE) | ||
256 | eError = PVRSRVTimeTraceInit(); | ||
257 | if (eError != PVRSRV_OK) | ||
258 | goto Error; | ||
259 | g_ui32InitFlags |= INIT_DATA_ENABLE_TTARCE; | ||
260 | #endif | ||
261 | |||
262 | |||
247 | PDUMPINIT(); | 263 | PDUMPINIT(); |
248 | g_ui32InitFlags |= INIT_DATA_ENABLE_PDUMPINIT; | 264 | g_ui32InitFlags |= INIT_DATA_ENABLE_PDUMPINIT; |
249 | 265 | ||
@@ -267,7 +283,13 @@ IMG_VOID IMG_CALLCONV PVRSRVDeInit(PSYS_DATA psSysData) | |||
267 | PVR_DPF((PVR_DBG_ERROR,"PVRSRVDeInit: PVRSRVHandleDeInit failed - invalid param")); | 283 | PVR_DPF((PVR_DBG_ERROR,"PVRSRVDeInit: PVRSRVHandleDeInit failed - invalid param")); |
268 | return; | 284 | return; |
269 | } | 285 | } |
270 | 286 | #if defined(TTRACE) | |
287 | |||
288 | if ((g_ui32InitFlags & INIT_DATA_ENABLE_TTARCE) > 0) | ||
289 | { | ||
290 | PVRSRVTimeTraceDeinit(); | ||
291 | } | ||
292 | #endif | ||
271 | 293 | ||
272 | if( (g_ui32InitFlags & INIT_DATA_ENABLE_PDUMPINIT) > 0) | 294 | if( (g_ui32InitFlags & INIT_DATA_ENABLE_PDUMPINIT) > 0) |
273 | { | 295 | { |
@@ -277,7 +299,7 @@ IMG_VOID IMG_CALLCONV PVRSRVDeInit(PSYS_DATA psSysData) | |||
277 | 299 | ||
278 | if(psSysData->psGlobalEventObject) | 300 | if(psSysData->psGlobalEventObject) |
279 | { | 301 | { |
280 | OSEventObjectDestroy(psSysData->psGlobalEventObject); | 302 | OSEventObjectDestroyKM(psSysData->psGlobalEventObject); |
281 | OSFreeMem( PVRSRV_PAGEABLE_SELECT, | 303 | OSFreeMem( PVRSRV_PAGEABLE_SELECT, |
282 | sizeof(PVRSRV_EVENTOBJECT), | 304 | sizeof(PVRSRV_EVENTOBJECT), |
283 | psSysData->psGlobalEventObject, | 305 | psSysData->psGlobalEventObject, |
@@ -621,14 +643,14 @@ PVRSRV_ERROR IMG_CALLCONV PollForValueKM (volatile IMG_UINT32* pui32LinMemAddr, | |||
621 | IMG_BOOL bAllowPreemption) | 643 | IMG_BOOL bAllowPreemption) |
622 | { | 644 | { |
623 | { | 645 | { |
624 | IMG_UINT32 ui32ActualValue = 0xFFFFFFFFU; | 646 | IMG_UINT32 ui32ActualValue = 0xFFFFFFFFU; |
625 | 647 | ||
626 | if (bAllowPreemption) | 648 | if (bAllowPreemption) |
627 | { | 649 | { |
628 | PVR_ASSERT(ui32PollPeriodus >= 1000); | 650 | PVR_ASSERT(ui32PollPeriodus >= 1000); |
629 | } | 651 | } |
630 | 652 | ||
631 | 653 | ||
632 | LOOP_UNTIL_TIMEOUT(ui32Timeoutus) | 654 | LOOP_UNTIL_TIMEOUT(ui32Timeoutus) |
633 | { | 655 | { |
634 | ui32ActualValue = (*pui32LinMemAddr & ui32Mask); | 656 | ui32ActualValue = (*pui32LinMemAddr & ui32Mask); |
@@ -636,7 +658,7 @@ PVRSRV_ERROR IMG_CALLCONV PollForValueKM (volatile IMG_UINT32* pui32LinMemAddr, | |||
636 | { | 658 | { |
637 | return PVRSRV_OK; | 659 | return PVRSRV_OK; |
638 | } | 660 | } |
639 | 661 | ||
640 | if (bAllowPreemption) | 662 | if (bAllowPreemption) |
641 | { | 663 | { |
642 | OSSleepms(ui32PollPeriodus / 1000); | 664 | OSSleepms(ui32PollPeriodus / 1000); |
@@ -646,7 +668,7 @@ PVRSRV_ERROR IMG_CALLCONV PollForValueKM (volatile IMG_UINT32* pui32LinMemAddr, | |||
646 | OSWaitus(ui32PollPeriodus); | 668 | OSWaitus(ui32PollPeriodus); |
647 | } | 669 | } |
648 | } END_LOOP_UNTIL_TIMEOUT(); | 670 | } END_LOOP_UNTIL_TIMEOUT(); |
649 | 671 | ||
650 | PVR_DPF((PVR_DBG_ERROR,"PollForValueKM: Timeout. Expected 0x%x but found 0x%x (mask 0x%x).", | 672 | PVR_DPF((PVR_DBG_ERROR,"PollForValueKM: Timeout. Expected 0x%x but found 0x%x (mask 0x%x).", |
651 | ui32Value, ui32ActualValue, ui32Mask)); | 673 | ui32Value, ui32ActualValue, ui32Mask)); |
652 | } | 674 | } |
@@ -666,7 +688,7 @@ static IMG_VOID PVRSRVGetMiscInfoKM_RA_GetStats_ForEachVaCb(BM_HEAP *psBMHeap, v | |||
666 | pui32StrLen = va_arg(va, IMG_UINT32*); | 688 | pui32StrLen = va_arg(va, IMG_UINT32*); |
667 | ui32Mode = va_arg(va, IMG_UINT32); | 689 | ui32Mode = va_arg(va, IMG_UINT32); |
668 | 690 | ||
669 | 691 | ||
670 | switch(ui32Mode) | 692 | switch(ui32Mode) |
671 | { | 693 | { |
672 | case PVRSRV_MISC_INFO_MEMSTATS_PRESENT: | 694 | case PVRSRV_MISC_INFO_MEMSTATS_PRESENT: |
@@ -762,7 +784,11 @@ static PVRSRV_ERROR PVRSRVGetMiscInfoKM_Device_AnyVaCb(PVRSRV_DEVICE_NODE *psDev | |||
762 | 784 | ||
763 | 785 | ||
764 | IMG_EXPORT | 786 | IMG_EXPORT |
787 | #if defined (SUPPORT_SID_INTERFACE) | ||
788 | PVRSRV_ERROR IMG_CALLCONV PVRSRVGetMiscInfoKM(PVRSRV_MISC_INFO_KM *psMiscInfo) | ||
789 | #else | ||
765 | PVRSRV_ERROR IMG_CALLCONV PVRSRVGetMiscInfoKM(PVRSRV_MISC_INFO *psMiscInfo) | 790 | PVRSRV_ERROR IMG_CALLCONV PVRSRVGetMiscInfoKM(PVRSRV_MISC_INFO *psMiscInfo) |
791 | #endif | ||
766 | { | 792 | { |
767 | SYS_DATA *psSysData; | 793 | SYS_DATA *psSysData; |
768 | 794 | ||
@@ -857,7 +883,7 @@ PVRSRV_ERROR IMG_CALLCONV PVRSRVGetMiscInfoKM(PVRSRV_MISC_INFO *psMiscInfo) | |||
857 | } | 883 | } |
858 | 884 | ||
859 | 885 | ||
860 | if((psMiscInfo->ui32StateRequest & PVRSRV_MISC_INFO_FREEMEM_PRESENT) | 886 | if(((psMiscInfo->ui32StateRequest & PVRSRV_MISC_INFO_FREEMEM_PRESENT) != 0) |
861 | && psMiscInfo->pszMemoryStr) | 887 | && psMiscInfo->pszMemoryStr) |
862 | { | 888 | { |
863 | IMG_CHAR *pszStr; | 889 | IMG_CHAR *pszStr; |
@@ -929,6 +955,8 @@ PVRSRV_ERROR IMG_CALLCONV PVRSRVGetMiscInfoKM(PVRSRV_MISC_INFO *psMiscInfo) | |||
929 | 955 | ||
930 | if((psMiscInfo->ui32StateRequest & PVRSRV_MISC_INFO_CPUCACHEOP_PRESENT) != 0UL) | 956 | if((psMiscInfo->ui32StateRequest & PVRSRV_MISC_INFO_CPUCACHEOP_PRESENT) != 0UL) |
931 | { | 957 | { |
958 | psMiscInfo->ui32StatePresent |= PVRSRV_MISC_INFO_CPUCACHEOP_PRESENT; | ||
959 | |||
932 | if(psMiscInfo->sCacheOpCtl.bDeferOp) | 960 | if(psMiscInfo->sCacheOpCtl.bDeferOp) |
933 | { | 961 | { |
934 | 962 | ||
@@ -936,10 +964,16 @@ PVRSRV_ERROR IMG_CALLCONV PVRSRVGetMiscInfoKM(PVRSRV_MISC_INFO *psMiscInfo) | |||
936 | } | 964 | } |
937 | else | 965 | else |
938 | { | 966 | { |
967 | #if defined (SUPPORT_SID_INTERFACE) | ||
968 | PVRSRV_KERNEL_MEM_INFO *psKernelMemInfo = psMiscInfo->sCacheOpCtl.psKernelMemInfo; | ||
969 | |||
970 | if(!psMiscInfo->sCacheOpCtl.psKernelMemInfo) | ||
971 | #else | ||
939 | PVRSRV_KERNEL_MEM_INFO *psKernelMemInfo; | 972 | PVRSRV_KERNEL_MEM_INFO *psKernelMemInfo; |
940 | PVRSRV_PER_PROCESS_DATA *psPerProc; | 973 | PVRSRV_PER_PROCESS_DATA *psPerProc; |
941 | 974 | ||
942 | if(!psMiscInfo->sCacheOpCtl.u.psKernelMemInfo) | 975 | if(!psMiscInfo->sCacheOpCtl.u.psKernelMemInfo) |
976 | #endif | ||
943 | { | 977 | { |
944 | PVR_DPF((PVR_DBG_WARNING, "PVRSRVGetMiscInfoKM: " | 978 | PVR_DPF((PVR_DBG_WARNING, "PVRSRVGetMiscInfoKM: " |
945 | "Ignoring non-deferred cache op with no meminfo")); | 979 | "Ignoring non-deferred cache op with no meminfo")); |
@@ -953,6 +987,9 @@ PVRSRV_ERROR IMG_CALLCONV PVRSRVGetMiscInfoKM(PVRSRV_MISC_INFO *psMiscInfo) | |||
953 | "to combine deferred cache ops with immediate ones")); | 987 | "to combine deferred cache ops with immediate ones")); |
954 | } | 988 | } |
955 | 989 | ||
990 | #if defined (SUPPORT_SID_INTERFACE) | ||
991 | PVR_DBG_BREAK | ||
992 | #else | ||
956 | 993 | ||
957 | psPerProc = PVRSRVFindPerProcessData(); | 994 | psPerProc = PVRSRVFindPerProcessData(); |
958 | 995 | ||
@@ -965,6 +1002,7 @@ PVRSRV_ERROR IMG_CALLCONV PVRSRVGetMiscInfoKM(PVRSRV_MISC_INFO *psMiscInfo) | |||
965 | "Can't find kernel meminfo")); | 1002 | "Can't find kernel meminfo")); |
966 | return PVRSRV_ERROR_INVALID_PARAMS; | 1003 | return PVRSRV_ERROR_INVALID_PARAMS; |
967 | } | 1004 | } |
1005 | #endif | ||
968 | 1006 | ||
969 | if(psMiscInfo->sCacheOpCtl.eCacheOpType == PVRSRV_MISC_INFO_CPUCACHEOP_FLUSH) | 1007 | if(psMiscInfo->sCacheOpCtl.eCacheOpType == PVRSRV_MISC_INFO_CPUCACHEOP_FLUSH) |
970 | { | 1008 | { |
@@ -1109,9 +1147,9 @@ IMG_VOID IMG_CALLCONV PVRSRVMISR(IMG_VOID *pvSysData) | |||
1109 | &PVRSRVMISR_ForEachCb); | 1147 | &PVRSRVMISR_ForEachCb); |
1110 | 1148 | ||
1111 | 1149 | ||
1112 | if (PVRSRVProcessQueues(ISR_ID, IMG_FALSE) == PVRSRV_ERROR_PROCESSING_BLOCKED) | 1150 | if (PVRSRVProcessQueues(IMG_FALSE) == PVRSRV_ERROR_PROCESSING_BLOCKED) |
1113 | { | 1151 | { |
1114 | PVRSRVProcessQueues(ISR_ID, IMG_FALSE); | 1152 | PVRSRVProcessQueues(IMG_FALSE); |
1115 | } | 1153 | } |
1116 | 1154 | ||
1117 | 1155 | ||
@@ -1120,7 +1158,7 @@ IMG_VOID IMG_CALLCONV PVRSRVMISR(IMG_VOID *pvSysData) | |||
1120 | IMG_HANDLE hOSEventKM = psSysData->psGlobalEventObject->hOSEventKM; | 1158 | IMG_HANDLE hOSEventKM = psSysData->psGlobalEventObject->hOSEventKM; |
1121 | if(hOSEventKM) | 1159 | if(hOSEventKM) |
1122 | { | 1160 | { |
1123 | OSEventObjectSignal(hOSEventKM); | 1161 | OSEventObjectSignalKM(hOSEventKM); |
1124 | } | 1162 | } |
1125 | } | 1163 | } |
1126 | } | 1164 | } |
diff --git a/drivers/gpu/pvr/pvrsrv_errors.h b/drivers/gpu/pvr/pvrsrv_errors.h index 56c7184fe2c..7c946bc2cfb 100644 --- a/drivers/gpu/pvr/pvrsrv_errors.h +++ b/drivers/gpu/pvr/pvrsrv_errors.h | |||
@@ -88,6 +88,8 @@ extern "C" { | |||
88 | 88 | ||
89 | case PVRSRV_ERROR_REGISTER_BASE_NOT_SET: return "PVRSRV_ERROR_REGISTER_BASE_NOT_SET"; | 89 | case PVRSRV_ERROR_REGISTER_BASE_NOT_SET: return "PVRSRV_ERROR_REGISTER_BASE_NOT_SET"; |
90 | 90 | ||
91 | case PVRSRV_ERROR_BM_BAD_SHAREMEM_HANDLE: return "PVRSRV_ERROR_BM_BAD_SHAREMEM_HANDLE"; | ||
92 | |||
91 | case PVRSRV_ERROR_FAILED_TO_ALLOC_USER_MEM: return "PVRSRV_ERROR_FAILED_TO_ALLOC_USER_MEM"; | 93 | case PVRSRV_ERROR_FAILED_TO_ALLOC_USER_MEM: return "PVRSRV_ERROR_FAILED_TO_ALLOC_USER_MEM"; |
92 | case PVRSRV_ERROR_FAILED_TO_ALLOC_VP_MEMORY: return "PVRSRV_ERROR_FAILED_TO_ALLOC_VP_MEMORY"; | 94 | case PVRSRV_ERROR_FAILED_TO_ALLOC_VP_MEMORY: return "PVRSRV_ERROR_FAILED_TO_ALLOC_VP_MEMORY"; |
93 | case PVRSRV_ERROR_FAILED_TO_MAP_SHARED_PBDESC: return "PVRSRV_ERROR_FAILED_TO_MAP_SHARED_PBDESC"; | 95 | case PVRSRV_ERROR_FAILED_TO_MAP_SHARED_PBDESC: return "PVRSRV_ERROR_FAILED_TO_MAP_SHARED_PBDESC"; |
diff --git a/drivers/gpu/pvr/pvrversion.h b/drivers/gpu/pvr/pvrversion.h index 5a431d5ee15..6b736c5dd4c 100644 --- a/drivers/gpu/pvr/pvrversion.h +++ b/drivers/gpu/pvr/pvrversion.h | |||
@@ -28,10 +28,10 @@ | |||
28 | #define _PVRVERSION_H_ | 28 | #define _PVRVERSION_H_ |
29 | 29 | ||
30 | #define PVRVERSION_MAJ 1 | 30 | #define PVRVERSION_MAJ 1 |
31 | #define PVRVERSION_MIN 6 | 31 | #define PVRVERSION_MIN 7 |
32 | #define PVRVERSION_BRANCH 16 | 32 | #define PVRVERSION_BRANCH 17 |
33 | #define PVRVERSION_BUILD 4061 | 33 | #define PVRVERSION_BUILD 3556 |
34 | #define PVRVERSION_STRING "1.6.16.4061" | 34 | #define PVRVERSION_STRING "1.7.17.3556" |
35 | #define PVRVERSION_FILE "eurasiacon.pj" | 35 | #define PVRVERSION_FILE "eurasiacon.pj" |
36 | 36 | ||
37 | #endif | 37 | #endif |
diff --git a/drivers/gpu/pvr/queue.c b/drivers/gpu/pvr/queue.c index 83185f31814..9bc6186d6e4 100644 --- a/drivers/gpu/pvr/queue.c +++ b/drivers/gpu/pvr/queue.c | |||
@@ -27,7 +27,7 @@ | |||
27 | #include "services_headers.h" | 27 | #include "services_headers.h" |
28 | 28 | ||
29 | #include "lists.h" | 29 | #include "lists.h" |
30 | 30 | #include "ttrace.h" | |
31 | 31 | ||
32 | #define DC_NUM_COMMANDS_PER_TYPE 1 | 32 | #define DC_NUM_COMMANDS_PER_TYPE 1 |
33 | 33 | ||
@@ -71,13 +71,29 @@ void ProcSeqShowQueue(struct seq_file *sfile,void* el) | |||
71 | (IMG_UINTPTR_T)psCmd, | 71 | (IMG_UINTPTR_T)psCmd, |
72 | psCmd->ui32ProcessID, | 72 | psCmd->ui32ProcessID, |
73 | psCmd->CommandType, | 73 | psCmd->CommandType, |
74 | psCmd->ui32CmdSize, | 74 | psCmd->uCmdSize, |
75 | psCmd->ui32DevIndex, | 75 | psCmd->ui32DevIndex, |
76 | psCmd->ui32DstSyncCount, | 76 | psCmd->ui32DstSyncCount, |
77 | psCmd->ui32SrcSyncCount, | 77 | psCmd->ui32SrcSyncCount, |
78 | psCmd->ui32DataSize); | 78 | psCmd->uDataSize); |
79 | { | ||
80 | IMG_UINT32 i; | ||
81 | for (i = 0; i < psCmd->ui32SrcSyncCount; i++) | ||
82 | { | ||
83 | PVRSRV_SYNC_DATA *psSyncData = psCmd->psSrcSync[i].psKernelSyncInfoKM->psSyncData; | ||
84 | seq_printf(sfile, " Sync %u: ROP/ROC: 0x%x/0x%x WOP/WOC: 0x%x/0x%x ROC-VA: 0x%x WOC-VA: 0x%x\n", | ||
85 | i, | ||
86 | psCmd->psSrcSync[i].ui32ReadOpsPending, | ||
87 | psSyncData->ui32ReadOpsComplete, | ||
88 | psCmd->psSrcSync[i].ui32WriteOpsPending, | ||
89 | psSyncData->ui32WriteOpsComplete, | ||
90 | psCmd->psSrcSync[i].psKernelSyncInfoKM->sReadOpsCompleteDevVAddr.uiAddr, | ||
91 | psCmd->psSrcSync[i].psKernelSyncInfoKM->sWriteOpsCompleteDevVAddr.uiAddr); | ||
92 | } | ||
93 | } | ||
94 | |||
79 | 95 | ||
80 | ui32ReadOffset += psCmd->ui32CmdSize; | 96 | ui32ReadOffset += psCmd->uCmdSize; |
81 | ui32ReadOffset &= psQueue->ui32QueueSize - 1; | 97 | ui32ReadOffset &= psQueue->ui32QueueSize - 1; |
82 | cmds++; | 98 | cmds++; |
83 | } | 99 | } |
@@ -512,7 +528,7 @@ PVRSRV_ERROR IMG_CALLCONV PVRSRVInsertCommandKM(PVRSRV_QUEUE_INFO *psQueue, | |||
512 | psCommand->ui32ProcessID = OSGetCurrentProcessIDKM(); | 528 | psCommand->ui32ProcessID = OSGetCurrentProcessIDKM(); |
513 | 529 | ||
514 | 530 | ||
515 | psCommand->ui32CmdSize = ui32CommandSize; | 531 | psCommand->uCmdSize = ui32CommandSize; |
516 | psCommand->ui32DevIndex = ui32DevIndex; | 532 | psCommand->ui32DevIndex = ui32DevIndex; |
517 | psCommand->CommandType = CommandType; | 533 | psCommand->CommandType = CommandType; |
518 | psCommand->ui32DstSyncCount = ui32DstSyncCount; | 534 | psCommand->ui32DstSyncCount = ui32DstSyncCount; |
@@ -527,11 +543,18 @@ PVRSRV_ERROR IMG_CALLCONV PVRSRVInsertCommandKM(PVRSRV_QUEUE_INFO *psQueue, | |||
527 | 543 | ||
528 | psCommand->pvData = (PVRSRV_SYNC_OBJECT*)(((IMG_UINTPTR_T)psCommand->psSrcSync) | 544 | psCommand->pvData = (PVRSRV_SYNC_OBJECT*)(((IMG_UINTPTR_T)psCommand->psSrcSync) |
529 | + (ui32SrcSyncCount * sizeof(PVRSRV_SYNC_OBJECT))); | 545 | + (ui32SrcSyncCount * sizeof(PVRSRV_SYNC_OBJECT))); |
530 | psCommand->ui32DataSize = ui32DataByteSize; | 546 | psCommand->uDataSize = ui32DataByteSize; |
547 | |||
548 | PVR_TTRACE(PVRSRV_TRACE_GROUP_QUEUE, PVRSRV_TRACE_CLASS_CMD_START, QUEUE_TOKEN_INSERTKM); | ||
549 | PVR_TTRACE_UI32(PVRSRV_TRACE_GROUP_QUEUE, PVRSRV_TRACE_CLASS_NONE, | ||
550 | QUEUE_TOKEN_COMMAND_TYPE, CommandType); | ||
531 | 551 | ||
532 | 552 | ||
533 | for (i=0; i<ui32DstSyncCount; i++) | 553 | for (i=0; i<ui32DstSyncCount; i++) |
534 | { | 554 | { |
555 | PVR_TTRACE_SYNC_OBJECT(PVRSRV_TRACE_GROUP_QUEUE, QUEUE_TOKEN_DST_SYNC, | ||
556 | apsDstSync[i], PVRSRV_SYNCOP_SAMPLE); | ||
557 | |||
535 | psCommand->psDstSync[i].psKernelSyncInfoKM = apsDstSync[i]; | 558 | psCommand->psDstSync[i].psKernelSyncInfoKM = apsDstSync[i]; |
536 | psCommand->psDstSync[i].ui32WriteOpsPending = PVRSRVGetWriteOpsPending(apsDstSync[i], IMG_FALSE); | 559 | psCommand->psDstSync[i].ui32WriteOpsPending = PVRSRVGetWriteOpsPending(apsDstSync[i], IMG_FALSE); |
537 | psCommand->psDstSync[i].ui32ReadOpsPending = PVRSRVGetReadOpsPending(apsDstSync[i], IMG_FALSE); | 560 | psCommand->psDstSync[i].ui32ReadOpsPending = PVRSRVGetReadOpsPending(apsDstSync[i], IMG_FALSE); |
@@ -546,6 +569,9 @@ PVRSRV_ERROR IMG_CALLCONV PVRSRVInsertCommandKM(PVRSRV_QUEUE_INFO *psQueue, | |||
546 | 569 | ||
547 | for (i=0; i<ui32SrcSyncCount; i++) | 570 | for (i=0; i<ui32SrcSyncCount; i++) |
548 | { | 571 | { |
572 | PVR_TTRACE_SYNC_OBJECT(PVRSRV_TRACE_GROUP_QUEUE, QUEUE_TOKEN_DST_SYNC, | ||
573 | apsSrcSync[i], PVRSRV_SYNCOP_SAMPLE); | ||
574 | |||
549 | psCommand->psSrcSync[i].psKernelSyncInfoKM = apsSrcSync[i]; | 575 | psCommand->psSrcSync[i].psKernelSyncInfoKM = apsSrcSync[i]; |
550 | psCommand->psSrcSync[i].ui32WriteOpsPending = PVRSRVGetWriteOpsPending(apsSrcSync[i], IMG_TRUE); | 576 | psCommand->psSrcSync[i].ui32WriteOpsPending = PVRSRVGetWriteOpsPending(apsSrcSync[i], IMG_TRUE); |
551 | psCommand->psSrcSync[i].ui32ReadOpsPending = PVRSRVGetReadOpsPending(apsSrcSync[i], IMG_TRUE); | 577 | psCommand->psSrcSync[i].ui32ReadOpsPending = PVRSRVGetReadOpsPending(apsSrcSync[i], IMG_TRUE); |
@@ -556,6 +582,7 @@ PVRSRV_ERROR IMG_CALLCONV PVRSRVInsertCommandKM(PVRSRV_QUEUE_INFO *psQueue, | |||
556 | psCommand->psSrcSync[i].ui32ReadOpsPending, | 582 | psCommand->psSrcSync[i].ui32ReadOpsPending, |
557 | psCommand->psSrcSync[i].ui32WriteOpsPending)); | 583 | psCommand->psSrcSync[i].ui32WriteOpsPending)); |
558 | } | 584 | } |
585 | PVR_TTRACE(PVRSRV_TRACE_GROUP_QUEUE, PVRSRV_TRACE_CLASS_CMD_END, QUEUE_TOKEN_INSERTKM); | ||
559 | 586 | ||
560 | 587 | ||
561 | *ppsCommand = psCommand; | 588 | *ppsCommand = psCommand; |
@@ -590,7 +617,7 @@ PVRSRV_ERROR IMG_CALLCONV PVRSRVSubmitCommandKM(PVRSRV_QUEUE_INFO *psQueue, | |||
590 | + (psCommand->ui32SrcSyncCount * sizeof(PVRSRV_SYNC_OBJECT))); | 617 | + (psCommand->ui32SrcSyncCount * sizeof(PVRSRV_SYNC_OBJECT))); |
591 | 618 | ||
592 | 619 | ||
593 | UPDATE_QUEUE_WOFF(psQueue, psCommand->ui32CmdSize); | 620 | UPDATE_QUEUE_WOFF(psQueue, psCommand->uCmdSize); |
594 | 621 | ||
595 | return PVRSRV_OK; | 622 | return PVRSRV_OK; |
596 | } | 623 | } |
@@ -730,14 +757,17 @@ PVRSRV_ERROR PVRSRVProcessCommand(SYS_DATA *psSysData, | |||
730 | 757 | ||
731 | 758 | ||
732 | if (psDeviceCommandData[psCommand->CommandType].pfnCmdProc((IMG_HANDLE)psCmdCompleteData, | 759 | if (psDeviceCommandData[psCommand->CommandType].pfnCmdProc((IMG_HANDLE)psCmdCompleteData, |
733 | psCommand->ui32DataSize, | 760 | (IMG_UINT32)psCommand->uDataSize, |
734 | psCommand->pvData) == IMG_FALSE) | 761 | psCommand->pvData) == IMG_FALSE) |
735 | { | 762 | { |
763 | |||
764 | |||
736 | 765 | ||
737 | psCmdCompleteData->bInUse = IMG_FALSE; | 766 | psCmdCompleteData->bInUse = IMG_FALSE; |
738 | eError = PVRSRV_ERROR_CMD_NOT_PROCESSED; | 767 | eError = PVRSRV_ERROR_CMD_NOT_PROCESSED; |
739 | } | 768 | } |
740 | 769 | ||
770 | |||
741 | psDeviceCommandData[psCommand->CommandType].ui32CCBOffset = (ui32CCBOffset + 1) % DC_NUM_COMMANDS_PER_TYPE; | 771 | psDeviceCommandData[psCommand->CommandType].ui32CCBOffset = (ui32CCBOffset + 1) % DC_NUM_COMMANDS_PER_TYPE; |
742 | 772 | ||
743 | return eError; | 773 | return eError; |
@@ -754,48 +784,20 @@ static IMG_VOID PVRSRVProcessQueues_ForEachCb(PVRSRV_DEVICE_NODE *psDeviceNode) | |||
754 | } | 784 | } |
755 | 785 | ||
756 | IMG_EXPORT | 786 | IMG_EXPORT |
757 | PVRSRV_ERROR PVRSRVProcessQueues(IMG_UINT32 ui32CallerID, | 787 | PVRSRV_ERROR PVRSRVProcessQueues(IMG_BOOL bFlush) |
758 | IMG_BOOL bFlush) | ||
759 | { | 788 | { |
760 | PVRSRV_QUEUE_INFO *psQueue; | 789 | PVRSRV_QUEUE_INFO *psQueue; |
761 | SYS_DATA *psSysData; | 790 | SYS_DATA *psSysData; |
762 | PVRSRV_COMMAND *psCommand; | 791 | PVRSRV_COMMAND *psCommand; |
763 | PVRSRV_ERROR eError; | ||
764 | |||
765 | SysAcquireData(&psSysData); | 792 | SysAcquireData(&psSysData); |
766 | 793 | ||
767 | 794 | ||
768 | psSysData->bReProcessQueues = IMG_FALSE; | ||
769 | 795 | ||
770 | 796 | while (OSLockResource(&psSysData->sQProcessResource, ISR_ID) != PVRSRV_OK) | |
771 | eError = OSLockResource(&psSysData->sQProcessResource, | ||
772 | ui32CallerID); | ||
773 | if(eError != PVRSRV_OK) | ||
774 | { | 797 | { |
775 | 798 | OSWaitus(1); | |
776 | psSysData->bReProcessQueues = IMG_TRUE; | 799 | }; |
777 | 800 | ||
778 | |||
779 | if(ui32CallerID == ISR_ID) | ||
780 | { | ||
781 | if (bFlush) | ||
782 | { | ||
783 | PVR_DPF((PVR_DBG_ERROR,"PVRSRVProcessQueues: Couldn't acquire queue processing lock for FLUSH")); | ||
784 | } | ||
785 | else | ||
786 | { | ||
787 | PVR_DPF((PVR_DBG_MESSAGE,"PVRSRVProcessQueues: Couldn't acquire queue processing lock")); | ||
788 | } | ||
789 | } | ||
790 | else | ||
791 | { | ||
792 | PVR_DPF((PVR_DBG_MESSAGE,"PVRSRVProcessQueues: Queue processing lock-acquire failed when called from the Services driver.")); | ||
793 | PVR_DPF((PVR_DBG_MESSAGE," This is due to MISR queue processing being interrupted by the Services driver.")); | ||
794 | } | ||
795 | |||
796 | return PVRSRV_OK; | ||
797 | } | ||
798 | |||
799 | psQueue = psSysData->psQueueList; | 801 | psQueue = psSysData->psQueueList; |
800 | 802 | ||
801 | if(!psQueue) | 803 | if(!psQueue) |
@@ -817,8 +819,7 @@ PVRSRV_ERROR PVRSRVProcessQueues(IMG_UINT32 ui32CallerID, | |||
817 | if (PVRSRVProcessCommand(psSysData, psCommand, bFlush) == PVRSRV_OK) | 819 | if (PVRSRVProcessCommand(psSysData, psCommand, bFlush) == PVRSRV_OK) |
818 | { | 820 | { |
819 | 821 | ||
820 | UPDATE_QUEUE_ROFF(psQueue, psCommand->ui32CmdSize) | 822 | UPDATE_QUEUE_ROFF(psQueue, psCommand->uCmdSize) |
821 | |||
822 | continue; | 823 | continue; |
823 | } | 824 | } |
824 | 825 | ||
@@ -836,15 +837,7 @@ PVRSRV_ERROR PVRSRVProcessQueues(IMG_UINT32 ui32CallerID, | |||
836 | List_PVRSRV_DEVICE_NODE_ForEach(psSysData->psDeviceNodeList, | 837 | List_PVRSRV_DEVICE_NODE_ForEach(psSysData->psDeviceNodeList, |
837 | &PVRSRVProcessQueues_ForEachCb); | 838 | &PVRSRVProcessQueues_ForEachCb); |
838 | 839 | ||
839 | 840 | OSUnlockResource(&psSysData->sQProcessResource, ISR_ID); | |
840 | |||
841 | OSUnlockResource(&psSysData->sQProcessResource, ui32CallerID); | ||
842 | |||
843 | |||
844 | if(psSysData->bReProcessQueues) | ||
845 | { | ||
846 | return PVRSRV_ERROR_PROCESSING_BLOCKED; | ||
847 | } | ||
848 | 841 | ||
849 | return PVRSRV_OK; | 842 | return PVRSRV_OK; |
850 | } | 843 | } |
@@ -884,11 +877,18 @@ IMG_VOID PVRSRVCommandCompleteKM(IMG_HANDLE hCmdCookie, | |||
884 | 877 | ||
885 | SysAcquireData(&psSysData); | 878 | SysAcquireData(&psSysData); |
886 | 879 | ||
880 | PVR_TTRACE(PVRSRV_TRACE_GROUP_QUEUE, PVRSRV_TRACE_CLASS_CMD_COMP_START, | ||
881 | QUEUE_TOKEN_COMMAND_COMPLETE); | ||
882 | |||
887 | 883 | ||
888 | for (i=0; i<psCmdCompleteData->ui32DstSyncCount; i++) | 884 | for (i=0; i<psCmdCompleteData->ui32DstSyncCount; i++) |
889 | { | 885 | { |
890 | psCmdCompleteData->psDstSync[i].psKernelSyncInfoKM->psSyncData->ui32WriteOpsComplete++; | 886 | psCmdCompleteData->psDstSync[i].psKernelSyncInfoKM->psSyncData->ui32WriteOpsComplete++; |
891 | 887 | ||
888 | PVR_TTRACE_SYNC_OBJECT(PVRSRV_TRACE_GROUP_QUEUE, QUEUE_TOKEN_UPDATE_DST, | ||
889 | psCmdCompleteData->psDstSync[i].psKernelSyncInfoKM, | ||
890 | PVRSRV_SYNCOP_COMPLETE); | ||
891 | |||
892 | PVR_DPF((PVR_DBG_MESSAGE, "PVRSRVCommandCompleteKM: Dst %u RO-VA:0x%x WO-VA:0x%x ROP:0x%x WOP:0x%x", | 892 | PVR_DPF((PVR_DBG_MESSAGE, "PVRSRVCommandCompleteKM: Dst %u RO-VA:0x%x WO-VA:0x%x ROP:0x%x WOP:0x%x", |
893 | i, psCmdCompleteData->psDstSync[i].psKernelSyncInfoKM->sReadOpsCompleteDevVAddr.uiAddr, | 893 | i, psCmdCompleteData->psDstSync[i].psKernelSyncInfoKM->sReadOpsCompleteDevVAddr.uiAddr, |
894 | psCmdCompleteData->psDstSync[i].psKernelSyncInfoKM->sWriteOpsCompleteDevVAddr.uiAddr, | 894 | psCmdCompleteData->psDstSync[i].psKernelSyncInfoKM->sWriteOpsCompleteDevVAddr.uiAddr, |
@@ -901,6 +901,10 @@ IMG_VOID PVRSRVCommandCompleteKM(IMG_HANDLE hCmdCookie, | |||
901 | { | 901 | { |
902 | psCmdCompleteData->psSrcSync[i].psKernelSyncInfoKM->psSyncData->ui32ReadOpsComplete++; | 902 | psCmdCompleteData->psSrcSync[i].psKernelSyncInfoKM->psSyncData->ui32ReadOpsComplete++; |
903 | 903 | ||
904 | PVR_TTRACE_SYNC_OBJECT(PVRSRV_TRACE_GROUP_QUEUE, QUEUE_TOKEN_UPDATE_SRC, | ||
905 | psCmdCompleteData->psSrcSync[i].psKernelSyncInfoKM, | ||
906 | PVRSRV_SYNCOP_COMPLETE); | ||
907 | |||
904 | PVR_DPF((PVR_DBG_MESSAGE, "PVRSRVCommandCompleteKM: Src %u RO-VA:0x%x WO-VA:0x%x ROP:0x%x WOP:0x%x", | 908 | PVR_DPF((PVR_DBG_MESSAGE, "PVRSRVCommandCompleteKM: Src %u RO-VA:0x%x WO-VA:0x%x ROP:0x%x WOP:0x%x", |
905 | i, psCmdCompleteData->psSrcSync[i].psKernelSyncInfoKM->sReadOpsCompleteDevVAddr.uiAddr, | 909 | i, psCmdCompleteData->psSrcSync[i].psKernelSyncInfoKM->sReadOpsCompleteDevVAddr.uiAddr, |
906 | psCmdCompleteData->psSrcSync[i].psKernelSyncInfoKM->sWriteOpsCompleteDevVAddr.uiAddr, | 910 | psCmdCompleteData->psSrcSync[i].psKernelSyncInfoKM->sWriteOpsCompleteDevVAddr.uiAddr, |
@@ -908,6 +912,9 @@ IMG_VOID PVRSRVCommandCompleteKM(IMG_HANDLE hCmdCookie, | |||
908 | psCmdCompleteData->psSrcSync[i].ui32WriteOpsPending)); | 912 | psCmdCompleteData->psSrcSync[i].ui32WriteOpsPending)); |
909 | } | 913 | } |
910 | 914 | ||
915 | PVR_TTRACE(PVRSRV_TRACE_GROUP_QUEUE, PVRSRV_TRACE_CLASS_CMD_COMP_END, | ||
916 | QUEUE_TOKEN_COMMAND_COMPLETE); | ||
917 | |||
911 | 918 | ||
912 | psCmdCompleteData->bInUse = IMG_FALSE; | 919 | psCmdCompleteData->bInUse = IMG_FALSE; |
913 | 920 | ||
@@ -966,15 +973,15 @@ PVRSRV_ERROR PVRSRVRegisterCmdProcListKM(IMG_UINT32 ui32DevIndex, | |||
966 | { | 973 | { |
967 | psDeviceCommandData[ui32CmdTypeCounter].pfnCmdProc = ppfnCmdProcList[ui32CmdTypeCounter]; | 974 | psDeviceCommandData[ui32CmdTypeCounter].pfnCmdProc = ppfnCmdProcList[ui32CmdTypeCounter]; |
968 | psDeviceCommandData[ui32CmdTypeCounter].ui32CCBOffset = 0; | 975 | psDeviceCommandData[ui32CmdTypeCounter].ui32CCBOffset = 0; |
969 | 976 | ||
970 | for (ui32CmdCounter = 0; ui32CmdCounter < DC_NUM_COMMANDS_PER_TYPE; ui32CmdCounter++) | 977 | for (ui32CmdCounter = 0; ui32CmdCounter < DC_NUM_COMMANDS_PER_TYPE; ui32CmdCounter++) |
971 | { | 978 | { |
979 | |||
972 | 980 | ||
973 | 981 | ui32AllocSize = sizeof(COMMAND_COMPLETE_DATA) | |
974 | ui32AllocSize = sizeof(COMMAND_COMPLETE_DATA) | ||
975 | + ((ui32MaxSyncsPerCmd[ui32CmdTypeCounter][0] | 982 | + ((ui32MaxSyncsPerCmd[ui32CmdTypeCounter][0] |
976 | + ui32MaxSyncsPerCmd[ui32CmdTypeCounter][1]) | 983 | + ui32MaxSyncsPerCmd[ui32CmdTypeCounter][1]) |
977 | * sizeof(PVRSRV_SYNC_OBJECT)); | 984 | * sizeof(PVRSRV_SYNC_OBJECT)); |
978 | 985 | ||
979 | eError = OSAllocMem(PVRSRV_OS_NON_PAGEABLE_HEAP, | 986 | eError = OSAllocMem(PVRSRV_OS_NON_PAGEABLE_HEAP, |
980 | ui32AllocSize, | 987 | ui32AllocSize, |
@@ -986,13 +993,13 @@ PVRSRV_ERROR PVRSRVRegisterCmdProcListKM(IMG_UINT32 ui32DevIndex, | |||
986 | PVR_DPF((PVR_DBG_ERROR,"PVRSRVRegisterCmdProcListKM: Failed to alloc cmd %d", ui32CmdTypeCounter)); | 993 | PVR_DPF((PVR_DBG_ERROR,"PVRSRVRegisterCmdProcListKM: Failed to alloc cmd %d", ui32CmdTypeCounter)); |
987 | goto ErrorExit; | 994 | goto ErrorExit; |
988 | } | 995 | } |
989 | 996 | ||
990 | psDeviceCommandData[ui32CmdTypeCounter].apsCmdCompleteData[ui32CmdCounter] = psCmdCompleteData; | 997 | psDeviceCommandData[ui32CmdTypeCounter].apsCmdCompleteData[ui32CmdCounter] = psCmdCompleteData; |
991 | 998 | ||
992 | 999 | ||
993 | OSMemSet(psCmdCompleteData, 0x00, ui32AllocSize); | 1000 | OSMemSet(psCmdCompleteData, 0x00, ui32AllocSize); |
994 | 1001 | ||
995 | 1002 | ||
996 | psCmdCompleteData->psDstSync = (PVRSRV_SYNC_OBJECT*) | 1003 | psCmdCompleteData->psDstSync = (PVRSRV_SYNC_OBJECT*) |
997 | (((IMG_UINTPTR_T)psCmdCompleteData) | 1004 | (((IMG_UINTPTR_T)psCmdCompleteData) |
998 | + sizeof(COMMAND_COMPLETE_DATA)); | 1005 | + sizeof(COMMAND_COMPLETE_DATA)); |
@@ -1000,7 +1007,7 @@ PVRSRV_ERROR PVRSRVRegisterCmdProcListKM(IMG_UINT32 ui32DevIndex, | |||
1000 | (((IMG_UINTPTR_T)psCmdCompleteData->psDstSync) | 1007 | (((IMG_UINTPTR_T)psCmdCompleteData->psDstSync) |
1001 | + (sizeof(PVRSRV_SYNC_OBJECT) * ui32MaxSyncsPerCmd[ui32CmdTypeCounter][0])); | 1008 | + (sizeof(PVRSRV_SYNC_OBJECT) * ui32MaxSyncsPerCmd[ui32CmdTypeCounter][0])); |
1002 | 1009 | ||
1003 | psCmdCompleteData->ui32AllocSize = ui32AllocSize; | 1010 | psCmdCompleteData->ui32AllocSize = (IMG_UINT32)ui32AllocSize; |
1004 | } | 1011 | } |
1005 | } | 1012 | } |
1006 | 1013 | ||
@@ -1008,15 +1015,14 @@ PVRSRV_ERROR PVRSRVRegisterCmdProcListKM(IMG_UINT32 ui32DevIndex, | |||
1008 | 1015 | ||
1009 | ErrorExit: | 1016 | ErrorExit: |
1010 | 1017 | ||
1011 | 1018 | ||
1012 | |||
1013 | if (PVRSRVRemoveCmdProcListKM(ui32DevIndex, ui32CmdCount) != PVRSRV_OK) | 1019 | if (PVRSRVRemoveCmdProcListKM(ui32DevIndex, ui32CmdCount) != PVRSRV_OK) |
1014 | { | 1020 | { |
1015 | PVR_DPF((PVR_DBG_ERROR, | 1021 | PVR_DPF((PVR_DBG_ERROR, |
1016 | "PVRSRVRegisterCmdProcListKM: Failed to clean up after error, device 0x%x", | 1022 | "PVRSRVRegisterCmdProcListKM: Failed to clean up after error, device 0x%x", |
1017 | ui32DevIndex)); | 1023 | ui32DevIndex)); |
1018 | } | 1024 | } |
1019 | 1025 | ||
1020 | return eError; | 1026 | return eError; |
1021 | } | 1027 | } |
1022 | 1028 | ||
@@ -1031,7 +1037,7 @@ PVRSRV_ERROR PVRSRVRemoveCmdProcListKM(IMG_UINT32 ui32DevIndex, | |||
1031 | COMMAND_COMPLETE_DATA *psCmdCompleteData; | 1037 | COMMAND_COMPLETE_DATA *psCmdCompleteData; |
1032 | IMG_SIZE_T ui32AllocSize; | 1038 | IMG_SIZE_T ui32AllocSize; |
1033 | 1039 | ||
1034 | 1040 | ||
1035 | if(ui32DevIndex >= SYS_DEVICE_COUNT) | 1041 | if(ui32DevIndex >= SYS_DEVICE_COUNT) |
1036 | { | 1042 | { |
1037 | PVR_DPF((PVR_DBG_ERROR, | 1043 | PVR_DPF((PVR_DBG_ERROR, |
@@ -1040,7 +1046,7 @@ PVRSRV_ERROR PVRSRVRemoveCmdProcListKM(IMG_UINT32 ui32DevIndex, | |||
1040 | return PVRSRV_ERROR_INVALID_PARAMS; | 1046 | return PVRSRV_ERROR_INVALID_PARAMS; |
1041 | } | 1047 | } |
1042 | 1048 | ||
1043 | 1049 | ||
1044 | SysAcquireData(&psSysData); | 1050 | SysAcquireData(&psSysData); |
1045 | 1051 | ||
1046 | psDeviceCommandData = psSysData->apsDeviceCommandData[ui32DevIndex]; | 1052 | psDeviceCommandData = psSysData->apsDeviceCommandData[ui32DevIndex]; |
@@ -1051,8 +1057,8 @@ PVRSRV_ERROR PVRSRVRemoveCmdProcListKM(IMG_UINT32 ui32DevIndex, | |||
1051 | for (ui32CmdCounter = 0; ui32CmdCounter < DC_NUM_COMMANDS_PER_TYPE; ui32CmdCounter++) | 1057 | for (ui32CmdCounter = 0; ui32CmdCounter < DC_NUM_COMMANDS_PER_TYPE; ui32CmdCounter++) |
1052 | { | 1058 | { |
1053 | psCmdCompleteData = psDeviceCommandData[ui32CmdTypeCounter].apsCmdCompleteData[ui32CmdCounter]; | 1059 | psCmdCompleteData = psDeviceCommandData[ui32CmdTypeCounter].apsCmdCompleteData[ui32CmdCounter]; |
1054 | 1060 | ||
1055 | 1061 | ||
1056 | if (psCmdCompleteData != IMG_NULL) | 1062 | if (psCmdCompleteData != IMG_NULL) |
1057 | { | 1063 | { |
1058 | OSFreeMem(PVRSRV_OS_NON_PAGEABLE_HEAP, psCmdCompleteData->ui32AllocSize, | 1064 | OSFreeMem(PVRSRV_OS_NON_PAGEABLE_HEAP, psCmdCompleteData->ui32AllocSize, |
@@ -1062,7 +1068,7 @@ PVRSRV_ERROR PVRSRVRemoveCmdProcListKM(IMG_UINT32 ui32DevIndex, | |||
1062 | } | 1068 | } |
1063 | } | 1069 | } |
1064 | 1070 | ||
1065 | 1071 | ||
1066 | ui32AllocSize = ui32CmdCount * sizeof(*psDeviceCommandData); | 1072 | ui32AllocSize = ui32CmdCount * sizeof(*psDeviceCommandData); |
1067 | OSFreeMem(PVRSRV_OS_NON_PAGEABLE_HEAP, ui32AllocSize, psDeviceCommandData, IMG_NULL); | 1073 | OSFreeMem(PVRSRV_OS_NON_PAGEABLE_HEAP, ui32AllocSize, psDeviceCommandData, IMG_NULL); |
1068 | psSysData->apsDeviceCommandData[ui32DevIndex] = IMG_NULL; | 1074 | psSysData->apsDeviceCommandData[ui32DevIndex] = IMG_NULL; |
diff --git a/drivers/gpu/pvr/queue.h b/drivers/gpu/pvr/queue.h index 9437f0987c8..edafaff02fd 100644 --- a/drivers/gpu/pvr/queue.h +++ b/drivers/gpu/pvr/queue.h | |||
@@ -51,8 +51,7 @@ extern "C" { | |||
51 | IMG_VOID QueueDumpDebugInfo(IMG_VOID); | 51 | IMG_VOID QueueDumpDebugInfo(IMG_VOID); |
52 | 52 | ||
53 | IMG_IMPORT | 53 | IMG_IMPORT |
54 | PVRSRV_ERROR PVRSRVProcessQueues (IMG_UINT32 ui32CallerID, | 54 | PVRSRV_ERROR PVRSRVProcessQueues (IMG_BOOL bFlush); |
55 | IMG_BOOL bFlush); | ||
56 | 55 | ||
57 | #if defined(__linux__) && defined(__KERNEL__) | 56 | #if defined(__linux__) && defined(__KERNEL__) |
58 | #include <linux/types.h> | 57 | #include <linux/types.h> |
diff --git a/drivers/gpu/pvr/ra.c b/drivers/gpu/pvr/ra.c index 191be844004..2bd5efbdb00 100644 --- a/drivers/gpu/pvr/ra.c +++ b/drivers/gpu/pvr/ra.c | |||
@@ -142,7 +142,7 @@ struct _RA_ARENA_ | |||
142 | #endif | 142 | #endif |
143 | 143 | ||
144 | #if defined(CONFIG_PROC_FS) && defined(DEBUG) | 144 | #if defined(CONFIG_PROC_FS) && defined(DEBUG) |
145 | #define PROC_NAME_SIZE 32 | 145 | #define PROC_NAME_SIZE 64 |
146 | 146 | ||
147 | struct proc_dir_entry* pProcInfo; | 147 | struct proc_dir_entry* pProcInfo; |
148 | struct proc_dir_entry* pProcSegs; | 148 | struct proc_dir_entry* pProcSegs; |
diff --git a/drivers/gpu/pvr/resman.c b/drivers/gpu/pvr/resman.c index 5d865a7d2c1..2daebf67317 100644 --- a/drivers/gpu/pvr/resman.c +++ b/drivers/gpu/pvr/resman.c | |||
@@ -249,6 +249,9 @@ IMG_VOID PVRSRVResManDisconnect(PRESMAN_CONTEXT psResManContext, | |||
249 | FreeResourceByCriteria(psResManContext, RESMAN_CRITERIA_RESTYPE, RESMAN_TYPE_OS_USERMODE_MAPPING, 0, 0, IMG_TRUE); | 249 | FreeResourceByCriteria(psResManContext, RESMAN_CRITERIA_RESTYPE, RESMAN_TYPE_OS_USERMODE_MAPPING, 0, 0, IMG_TRUE); |
250 | 250 | ||
251 | 251 | ||
252 | FreeResourceByCriteria(psResManContext, RESMAN_CRITERIA_RESTYPE, RESMAN_TYPE_DMA_CLIENT_FIFO_DATA, 0, 0, IMG_TRUE); | ||
253 | |||
254 | |||
252 | FreeResourceByCriteria(psResManContext, RESMAN_CRITERIA_RESTYPE, RESMAN_TYPE_EVENT_OBJECT, 0, 0, IMG_TRUE); | 255 | FreeResourceByCriteria(psResManContext, RESMAN_CRITERIA_RESTYPE, RESMAN_TYPE_EVENT_OBJECT, 0, 0, IMG_TRUE); |
253 | 256 | ||
254 | 257 | ||
@@ -264,15 +267,8 @@ IMG_VOID PVRSRVResManDisconnect(PRESMAN_CONTEXT psResManContext, | |||
264 | FreeResourceByCriteria(psResManContext, RESMAN_CRITERIA_RESTYPE, RESMAN_TYPE_TRANSFER_CONTEXT, 0, 0, IMG_TRUE); | 267 | FreeResourceByCriteria(psResManContext, RESMAN_CRITERIA_RESTYPE, RESMAN_TYPE_TRANSFER_CONTEXT, 0, 0, IMG_TRUE); |
265 | FreeResourceByCriteria(psResManContext, RESMAN_CRITERIA_RESTYPE, RESMAN_TYPE_SHARED_PB_DESC_CREATE_LOCK, 0, 0, IMG_TRUE); | 268 | FreeResourceByCriteria(psResManContext, RESMAN_CRITERIA_RESTYPE, RESMAN_TYPE_SHARED_PB_DESC_CREATE_LOCK, 0, 0, IMG_TRUE); |
266 | FreeResourceByCriteria(psResManContext, RESMAN_CRITERIA_RESTYPE, RESMAN_TYPE_SHARED_PB_DESC, 0, 0, IMG_TRUE); | 269 | FreeResourceByCriteria(psResManContext, RESMAN_CRITERIA_RESTYPE, RESMAN_TYPE_SHARED_PB_DESC, 0, 0, IMG_TRUE); |
267 | |||
268 | |||
269 | |||
270 | 270 | ||
271 | FreeResourceByCriteria(psResManContext, RESMAN_CRITERIA_RESTYPE, RESMAN_TYPE_DISPLAYCLASS_SWAPCHAIN_REF, 0, 0, IMG_TRUE); | ||
272 | FreeResourceByCriteria(psResManContext, RESMAN_CRITERIA_RESTYPE, RESMAN_TYPE_DISPLAYCLASS_DEVICE, 0, 0, IMG_TRUE); | ||
273 | |||
274 | 271 | ||
275 | FreeResourceByCriteria(psResManContext, RESMAN_CRITERIA_RESTYPE, RESMAN_TYPE_BUFFERCLASS_DEVICE, 0, 0, IMG_TRUE); | ||
276 | 272 | ||
277 | 273 | ||
278 | FreeResourceByCriteria(psResManContext, RESMAN_CRITERIA_RESTYPE, RESMAN_TYPE_SYNC_INFO, 0, 0, IMG_TRUE); | 274 | FreeResourceByCriteria(psResManContext, RESMAN_CRITERIA_RESTYPE, RESMAN_TYPE_SYNC_INFO, 0, 0, IMG_TRUE); |
@@ -283,6 +279,13 @@ IMG_VOID PVRSRVResManDisconnect(PRESMAN_CONTEXT psResManContext, | |||
283 | FreeResourceByCriteria(psResManContext, RESMAN_CRITERIA_RESTYPE, RESMAN_TYPE_DEVICEMEM_ALLOCATION, 0, 0, IMG_TRUE); | 279 | FreeResourceByCriteria(psResManContext, RESMAN_CRITERIA_RESTYPE, RESMAN_TYPE_DEVICEMEM_ALLOCATION, 0, 0, IMG_TRUE); |
284 | FreeResourceByCriteria(psResManContext, RESMAN_CRITERIA_RESTYPE, RESMAN_TYPE_DEVICEMEM_CONTEXT, 0, 0, IMG_TRUE); | 280 | FreeResourceByCriteria(psResManContext, RESMAN_CRITERIA_RESTYPE, RESMAN_TYPE_DEVICEMEM_CONTEXT, 0, 0, IMG_TRUE); |
285 | FreeResourceByCriteria(psResManContext, RESMAN_CRITERIA_RESTYPE, RESMAN_TYPE_SHARED_MEM_INFO, 0, 0, IMG_TRUE); | 281 | FreeResourceByCriteria(psResManContext, RESMAN_CRITERIA_RESTYPE, RESMAN_TYPE_SHARED_MEM_INFO, 0, 0, IMG_TRUE); |
282 | |||
283 | |||
284 | FreeResourceByCriteria(psResManContext, RESMAN_CRITERIA_RESTYPE, RESMAN_TYPE_DISPLAYCLASS_SWAPCHAIN_REF, 0, 0, IMG_TRUE); | ||
285 | FreeResourceByCriteria(psResManContext, RESMAN_CRITERIA_RESTYPE, RESMAN_TYPE_DISPLAYCLASS_DEVICE, 0, 0, IMG_TRUE); | ||
286 | |||
287 | |||
288 | FreeResourceByCriteria(psResManContext, RESMAN_CRITERIA_RESTYPE, RESMAN_TYPE_BUFFERCLASS_DEVICE, 0, 0, IMG_TRUE); | ||
286 | } | 289 | } |
287 | 290 | ||
288 | 291 | ||
diff --git a/drivers/gpu/pvr/resman.h b/drivers/gpu/pvr/resman.h index eebec57c9d6..06eb24a97b6 100644 --- a/drivers/gpu/pvr/resman.h +++ b/drivers/gpu/pvr/resman.h | |||
@@ -41,6 +41,9 @@ enum { | |||
41 | RESMAN_TYPE_TRANSFER_CONTEXT, | 41 | RESMAN_TYPE_TRANSFER_CONTEXT, |
42 | 42 | ||
43 | 43 | ||
44 | RESMAN_TYPE_DMA_CLIENT_FIFO_DATA, | ||
45 | |||
46 | |||
44 | 47 | ||
45 | 48 | ||
46 | 49 | ||
diff --git a/drivers/gpu/pvr/services.h b/drivers/gpu/pvr/services.h index d1afe284912..595b52ffe7a 100644 --- a/drivers/gpu/pvr/services.h +++ b/drivers/gpu/pvr/services.h | |||
@@ -80,6 +80,7 @@ extern "C" { | |||
80 | #define PVRSRV_MEM_BACKINGSTORE_FIELD_SHIFT (24) | 80 | #define PVRSRV_MEM_BACKINGSTORE_FIELD_SHIFT (24) |
81 | 81 | ||
82 | #define PVRSRV_MAP_NOUSERVIRTUAL (1UL<<27) | 82 | #define PVRSRV_MAP_NOUSERVIRTUAL (1UL<<27) |
83 | #define PVRSRV_MEM_XPROC (1U<<28) | ||
83 | 84 | ||
84 | #define PVRSRV_NO_CONTEXT_LOSS 0 | 85 | #define PVRSRV_NO_CONTEXT_LOSS 0 |
85 | #define PVRSRV_SEVERE_LOSS_OF_CONTEXT 1 | 86 | #define PVRSRV_SEVERE_LOSS_OF_CONTEXT 1 |
@@ -162,8 +163,11 @@ typedef enum | |||
162 | IMG_VISTAVPBNODE = 0x0000000B, | 163 | IMG_VISTAVPBNODE = 0x0000000B, |
163 | IMG_OPENGL = 0x0000000C, | 164 | IMG_OPENGL = 0x0000000C, |
164 | IMG_D3D = 0x0000000D, | 165 | IMG_D3D = 0x0000000D, |
165 | #if defined(SUPPORT_GRAPHICS_HAL) | 166 | #if defined(SUPPORT_GRAPHICS_HAL) || defined(SUPPORT_COMPOSER_HAL) |
166 | IMG_GRAPHICS_HAL = 0x0000000E | 167 | IMG_ANDROID_HAL = 0x0000000E, |
168 | #endif | ||
169 | #if defined(SUPPORT_OPENCL) | ||
170 | IMG_OPENCL = 0x0000000F, | ||
167 | #endif | 171 | #endif |
168 | 172 | ||
169 | } IMG_MODULE_ID; | 173 | } IMG_MODULE_ID; |
@@ -207,7 +211,7 @@ typedef struct _PVRSRV_CLIENT_DEV_DATA_ | |||
207 | typedef struct _PVRSRV_CONNECTION_ | 211 | typedef struct _PVRSRV_CONNECTION_ |
208 | { | 212 | { |
209 | IMG_HANDLE hServices; | 213 | IMG_HANDLE hServices; |
210 | IMG_UINTPTR_T ui32ProcessID; | 214 | IMG_UINT32 ui32ProcessID; |
211 | PVRSRV_CLIENT_DEV_DATA sClientDevData; | 215 | PVRSRV_CLIENT_DEV_DATA sClientDevData; |
212 | IMG_UINT32 ui32SrvFlags; | 216 | IMG_UINT32 ui32SrvFlags; |
213 | }PVRSRV_CONNECTION; | 217 | }PVRSRV_CONNECTION; |
@@ -216,13 +220,17 @@ typedef struct _PVRSRV_CONNECTION_ | |||
216 | typedef struct _PVRSRV_DEV_DATA_ | 220 | typedef struct _PVRSRV_DEV_DATA_ |
217 | { | 221 | { |
218 | IMG_CONST PVRSRV_CONNECTION *psConnection; | 222 | IMG_CONST PVRSRV_CONNECTION *psConnection; |
223 | #if defined (SUPPORT_SID_INTERFACE) | ||
224 | IMG_SID hDevCookie; | ||
225 | #else | ||
219 | IMG_HANDLE hDevCookie; | 226 | IMG_HANDLE hDevCookie; |
227 | #endif | ||
220 | 228 | ||
221 | } PVRSRV_DEV_DATA; | 229 | } PVRSRV_DEV_DATA; |
222 | 230 | ||
223 | typedef struct _PVRSRV_MEMUPDATE_ | 231 | typedef struct _PVRSRV_MEMUPDATE_ |
224 | { | 232 | { |
225 | IMG_UINTPTR_T ui32UpdateAddr; | 233 | IMG_UINT32 ui32UpdateAddr; |
226 | IMG_UINT32 ui32UpdateVal; | 234 | IMG_UINT32 ui32UpdateVal; |
227 | } PVRSRV_MEMUPDATE; | 235 | } PVRSRV_MEMUPDATE; |
228 | 236 | ||
@@ -272,12 +280,22 @@ typedef struct _PVRSRV_CLIENT_MEM_INFO_ | |||
272 | IMG_UINT32 ui32ClientFlags; | 280 | IMG_UINT32 ui32ClientFlags; |
273 | 281 | ||
274 | 282 | ||
275 | IMG_SIZE_T ui32AllocSize; | 283 | IMG_SIZE_T uAllocSize; |
276 | 284 | ||
277 | 285 | ||
278 | 286 | ||
279 | struct _PVRSRV_CLIENT_SYNC_INFO_ *psClientSyncInfo; | 287 | struct _PVRSRV_CLIENT_SYNC_INFO_ *psClientSyncInfo; |
280 | 288 | ||
289 | #if defined (SUPPORT_SID_INTERFACE) | ||
290 | |||
291 | IMG_SID hMappingInfo; | ||
292 | |||
293 | |||
294 | IMG_SID hKernelMemInfo; | ||
295 | |||
296 | |||
297 | IMG_SID hResItem; | ||
298 | #else | ||
281 | 299 | ||
282 | IMG_HANDLE hMappingInfo; | 300 | IMG_HANDLE hMappingInfo; |
283 | 301 | ||
@@ -286,6 +304,7 @@ typedef struct _PVRSRV_CLIENT_MEM_INFO_ | |||
286 | 304 | ||
287 | 305 | ||
288 | IMG_HANDLE hResItem; | 306 | IMG_HANDLE hResItem; |
307 | #endif | ||
289 | 308 | ||
290 | #if defined(SUPPORT_MEMINFO_IDS) | 309 | #if defined(SUPPORT_MEMINFO_IDS) |
291 | #if !defined(USE_CODE) | 310 | #if !defined(USE_CODE) |
@@ -309,7 +328,11 @@ typedef struct _PVRSRV_CLIENT_MEM_INFO_ | |||
309 | typedef struct _PVRSRV_HEAP_INFO_ | 328 | typedef struct _PVRSRV_HEAP_INFO_ |
310 | { | 329 | { |
311 | IMG_UINT32 ui32HeapID; | 330 | IMG_UINT32 ui32HeapID; |
331 | #if defined (SUPPORT_SID_INTERFACE) | ||
332 | IMG_SID hDevMemHeap; | ||
333 | #else | ||
312 | IMG_HANDLE hDevMemHeap; | 334 | IMG_HANDLE hDevMemHeap; |
335 | #endif | ||
313 | IMG_DEV_VIRTADDR sDevVAddrBase; | 336 | IMG_DEV_VIRTADDR sDevVAddrBase; |
314 | IMG_UINT32 ui32HeapByteSize; | 337 | IMG_UINT32 ui32HeapByteSize; |
315 | IMG_UINT32 ui32Attribs; | 338 | IMG_UINT32 ui32Attribs; |
@@ -324,7 +347,11 @@ typedef struct _PVRSRV_EVENTOBJECT_ | |||
324 | 347 | ||
325 | IMG_CHAR szName[EVENTOBJNAME_MAXLENGTH]; | 348 | IMG_CHAR szName[EVENTOBJNAME_MAXLENGTH]; |
326 | 349 | ||
350 | #if defined (SUPPORT_SID_INTERFACE) | ||
351 | IMG_SID hOSEventKM; | ||
352 | #else | ||
327 | IMG_HANDLE hOSEventKM; | 353 | IMG_HANDLE hOSEventKM; |
354 | #endif | ||
328 | 355 | ||
329 | } PVRSRV_EVENTOBJECT; | 356 | } PVRSRV_EVENTOBJECT; |
330 | 357 | ||
@@ -343,8 +370,13 @@ typedef struct _PVRSRV_MISC_INFO_ | |||
343 | 370 | ||
344 | IMG_VOID *pvSOCTimerRegisterKM; | 371 | IMG_VOID *pvSOCTimerRegisterKM; |
345 | IMG_VOID *pvSOCTimerRegisterUM; | 372 | IMG_VOID *pvSOCTimerRegisterUM; |
373 | #if defined (SUPPORT_SID_INTERFACE) | ||
374 | IMG_SID hSOCTimerRegisterOSMemHandle; | ||
375 | IMG_SID hSOCTimerRegisterMappingInfo; | ||
376 | #else | ||
346 | IMG_HANDLE hSOCTimerRegisterOSMemHandle; | 377 | IMG_HANDLE hSOCTimerRegisterOSMemHandle; |
347 | IMG_HANDLE hSOCTimerRegisterMappingInfo; | 378 | IMG_HANDLE hSOCTimerRegisterMappingInfo; |
379 | #endif | ||
348 | 380 | ||
349 | 381 | ||
350 | IMG_VOID *pvSOCClockGateRegs; | 382 | IMG_VOID *pvSOCClockGateRegs; |
@@ -356,7 +388,11 @@ typedef struct _PVRSRV_MISC_INFO_ | |||
356 | 388 | ||
357 | 389 | ||
358 | PVRSRV_EVENTOBJECT sGlobalEventObject; | 390 | PVRSRV_EVENTOBJECT sGlobalEventObject; |
391 | #if defined (SUPPORT_SID_INTERFACE) | ||
392 | IMG_EVENTSID hOSGlobalEvent; | ||
393 | #else | ||
359 | IMG_HANDLE hOSGlobalEvent; | 394 | IMG_HANDLE hOSGlobalEvent; |
395 | #endif | ||
360 | 396 | ||
361 | 397 | ||
362 | IMG_UINT32 aui32DDKVersion[4]; | 398 | IMG_UINT32 aui32DDKVersion[4]; |
@@ -371,6 +407,7 @@ typedef struct _PVRSRV_MISC_INFO_ | |||
371 | PVRSRV_MISC_INFO_CPUCACHEOP_TYPE eCacheOpType; | 407 | PVRSRV_MISC_INFO_CPUCACHEOP_TYPE eCacheOpType; |
372 | 408 | ||
373 | 409 | ||
410 | #if !defined (SUPPORT_SID_INTERFACE) | ||
374 | union | 411 | union |
375 | { | 412 | { |
376 | 413 | ||
@@ -379,6 +416,7 @@ typedef struct _PVRSRV_MISC_INFO_ | |||
379 | 416 | ||
380 | struct _PVRSRV_KERNEL_MEM_INFO_ *psKernelMemInfo; | 417 | struct _PVRSRV_KERNEL_MEM_INFO_ *psKernelMemInfo; |
381 | } u; | 418 | } u; |
419 | #endif | ||
382 | 420 | ||
383 | 421 | ||
384 | IMG_VOID *pvBaseVAddr; | 422 | IMG_VOID *pvBaseVAddr; |
@@ -388,6 +426,22 @@ typedef struct _PVRSRV_MISC_INFO_ | |||
388 | } sCacheOpCtl; | 426 | } sCacheOpCtl; |
389 | } PVRSRV_MISC_INFO; | 427 | } PVRSRV_MISC_INFO; |
390 | 428 | ||
429 | typedef struct _PVRSRV_SYNC_TOKEN_ | ||
430 | { | ||
431 | |||
432 | |||
433 | struct | ||
434 | { | ||
435 | #if defined (SUPPORT_SID_INTERFACE) | ||
436 | IMG_SID hKernelSyncInfo; | ||
437 | #else | ||
438 | IMG_HANDLE hKernelSyncInfo; | ||
439 | #endif | ||
440 | IMG_UINT32 ui32ReadOpsPendingSnapshot; | ||
441 | IMG_UINT32 ui32WriteOpsPendingSnapshot; | ||
442 | } sPrivate; | ||
443 | } PVRSRV_SYNC_TOKEN; | ||
444 | |||
391 | 445 | ||
392 | typedef enum _PVRSRV_CLIENT_EVENT_ | 446 | typedef enum _PVRSRV_CLIENT_EVENT_ |
393 | { | 447 | { |
@@ -432,7 +486,11 @@ IMG_IMPORT IMG_VOID WriteHWRegs(IMG_PVOID pvLinRegBaseAddr, IMG_UINT32 ui32Count | |||
432 | 486 | ||
433 | IMG_IMPORT | 487 | IMG_IMPORT |
434 | PVRSRV_ERROR PVRSRVPollForValue ( const PVRSRV_CONNECTION *psConnection, | 488 | PVRSRV_ERROR PVRSRVPollForValue ( const PVRSRV_CONNECTION *psConnection, |
489 | #if defined (SUPPORT_SID_INTERFACE) | ||
490 | IMG_SID hOSEvent, | ||
491 | #else | ||
435 | IMG_HANDLE hOSEvent, | 492 | IMG_HANDLE hOSEvent, |
493 | #endif | ||
436 | volatile IMG_UINT32 *pui32LinMemAddr, | 494 | volatile IMG_UINT32 *pui32LinMemAddr, |
437 | IMG_UINT32 ui32Value, | 495 | IMG_UINT32 ui32Value, |
438 | IMG_UINT32 ui32Mask, | 496 | IMG_UINT32 ui32Mask, |
@@ -441,17 +499,29 @@ PVRSRV_ERROR PVRSRVPollForValue ( const PVRSRV_CONNECTION *psConnection, | |||
441 | 499 | ||
442 | IMG_IMPORT | 500 | IMG_IMPORT |
443 | PVRSRV_ERROR IMG_CALLCONV PVRSRVCreateDeviceMemContext(IMG_CONST PVRSRV_DEV_DATA *psDevData, | 501 | PVRSRV_ERROR IMG_CALLCONV PVRSRVCreateDeviceMemContext(IMG_CONST PVRSRV_DEV_DATA *psDevData, |
502 | #if defined (SUPPORT_SID_INTERFACE) | ||
503 | IMG_SID *phDevMemContext, | ||
504 | #else | ||
444 | IMG_HANDLE *phDevMemContext, | 505 | IMG_HANDLE *phDevMemContext, |
506 | #endif | ||
445 | IMG_UINT32 *pui32SharedHeapCount, | 507 | IMG_UINT32 *pui32SharedHeapCount, |
446 | PVRSRV_HEAP_INFO *psHeapInfo); | 508 | PVRSRV_HEAP_INFO *psHeapInfo); |
447 | 509 | ||
448 | IMG_IMPORT | 510 | IMG_IMPORT |
449 | PVRSRV_ERROR IMG_CALLCONV PVRSRVDestroyDeviceMemContext(IMG_CONST PVRSRV_DEV_DATA *psDevData, | 511 | PVRSRV_ERROR IMG_CALLCONV PVRSRVDestroyDeviceMemContext(IMG_CONST PVRSRV_DEV_DATA *psDevData, |
512 | #if defined (SUPPORT_SID_INTERFACE) | ||
513 | IMG_SID hDevMemContext); | ||
514 | #else | ||
450 | IMG_HANDLE hDevMemContext); | 515 | IMG_HANDLE hDevMemContext); |
516 | #endif | ||
451 | 517 | ||
452 | IMG_IMPORT | 518 | IMG_IMPORT |
453 | PVRSRV_ERROR IMG_CALLCONV PVRSRVGetDeviceMemHeapInfo(IMG_CONST PVRSRV_DEV_DATA *psDevData, | 519 | PVRSRV_ERROR IMG_CALLCONV PVRSRVGetDeviceMemHeapInfo(IMG_CONST PVRSRV_DEV_DATA *psDevData, |
520 | #if defined (SUPPORT_SID_INTERFACE) | ||
521 | IMG_SID hDevMemContext, | ||
522 | #else | ||
454 | IMG_HANDLE hDevMemContext, | 523 | IMG_HANDLE hDevMemContext, |
524 | #endif | ||
455 | IMG_UINT32 *pui32SharedHeapCount, | 525 | IMG_UINT32 *pui32SharedHeapCount, |
456 | PVRSRV_HEAP_INFO *psHeapInfo); | 526 | PVRSRV_HEAP_INFO *psHeapInfo); |
457 | 527 | ||
@@ -468,7 +538,11 @@ PVRSRV_ERROR IMG_CALLCONV PVRSRVGetDeviceMemHeapInfo(IMG_CONST PVRSRV_DEV_DATA * | |||
468 | 538 | ||
469 | IMG_IMPORT | 539 | IMG_IMPORT |
470 | PVRSRV_ERROR IMG_CALLCONV PVRSRVAllocDeviceMem(IMG_CONST PVRSRV_DEV_DATA *psDevData, | 540 | PVRSRV_ERROR IMG_CALLCONV PVRSRVAllocDeviceMem(IMG_CONST PVRSRV_DEV_DATA *psDevData, |
541 | #if defined (SUPPORT_SID_INTERFACE) | ||
542 | IMG_SID hDevMemHeap, | ||
543 | #else | ||
471 | IMG_HANDLE hDevMemHeap, | 544 | IMG_HANDLE hDevMemHeap, |
545 | #endif | ||
472 | IMG_UINT32 ui32Attribs, | 546 | IMG_UINT32 ui32Attribs, |
473 | IMG_SIZE_T ui32Size, | 547 | IMG_SIZE_T ui32Size, |
474 | IMG_SIZE_T ui32Alignment, | 548 | IMG_SIZE_T ui32Alignment, |
@@ -481,11 +555,19 @@ PVRSRV_ERROR IMG_CALLCONV PVRSRVFreeDeviceMem(IMG_CONST PVRSRV_DEV_DATA *psDevDa | |||
481 | IMG_IMPORT | 555 | IMG_IMPORT |
482 | PVRSRV_ERROR IMG_CALLCONV PVRSRVExportDeviceMem(IMG_CONST PVRSRV_DEV_DATA *psDevData, | 556 | PVRSRV_ERROR IMG_CALLCONV PVRSRVExportDeviceMem(IMG_CONST PVRSRV_DEV_DATA *psDevData, |
483 | PVRSRV_CLIENT_MEM_INFO *psMemInfo, | 557 | PVRSRV_CLIENT_MEM_INFO *psMemInfo, |
558 | #if defined (SUPPORT_SID_INTERFACE) | ||
559 | IMG_SID *phMemInfo); | ||
560 | #else | ||
484 | IMG_HANDLE *phMemInfo); | 561 | IMG_HANDLE *phMemInfo); |
562 | #endif | ||
485 | 563 | ||
486 | IMG_IMPORT | 564 | IMG_IMPORT |
487 | PVRSRV_ERROR IMG_CALLCONV PVRSRVReserveDeviceVirtualMem(IMG_CONST PVRSRV_DEV_DATA *psDevData, | 565 | PVRSRV_ERROR IMG_CALLCONV PVRSRVReserveDeviceVirtualMem(IMG_CONST PVRSRV_DEV_DATA *psDevData, |
566 | #if defined (SUPPORT_SID_INTERFACE) | ||
567 | IMG_SID hDevMemHeap, | ||
568 | #else | ||
488 | IMG_HANDLE hDevMemHeap, | 569 | IMG_HANDLE hDevMemHeap, |
570 | #endif | ||
489 | IMG_DEV_VIRTADDR *psDevVAddr, | 571 | IMG_DEV_VIRTADDR *psDevVAddr, |
490 | IMG_SIZE_T ui32Size, | 572 | IMG_SIZE_T ui32Size, |
491 | IMG_SIZE_T ui32Alignment, | 573 | IMG_SIZE_T ui32Alignment, |
@@ -496,8 +578,13 @@ PVRSRV_ERROR IMG_CALLCONV PVRSRVFreeDeviceVirtualMem(IMG_CONST PVRSRV_DEV_DATA * | |||
496 | 578 | ||
497 | IMG_IMPORT | 579 | IMG_IMPORT |
498 | PVRSRV_ERROR IMG_CALLCONV PVRSRVMapDeviceMemory (IMG_CONST PVRSRV_DEV_DATA *psDevData, | 580 | PVRSRV_ERROR IMG_CALLCONV PVRSRVMapDeviceMemory (IMG_CONST PVRSRV_DEV_DATA *psDevData, |
581 | #if defined (SUPPORT_SID_INTERFACE) | ||
582 | IMG_SID hKernelMemInfo, | ||
583 | IMG_SID hDstDevMemHeap, | ||
584 | #else | ||
499 | IMG_HANDLE hKernelMemInfo, | 585 | IMG_HANDLE hKernelMemInfo, |
500 | IMG_HANDLE hDstDevMemHeap, | 586 | IMG_HANDLE hDstDevMemHeap, |
587 | #endif | ||
501 | PVRSRV_CLIENT_MEM_INFO **ppsDstMemInfo); | 588 | PVRSRV_CLIENT_MEM_INFO **ppsDstMemInfo); |
502 | 589 | ||
503 | IMG_IMPORT | 590 | IMG_IMPORT |
@@ -516,7 +603,11 @@ PVRSRV_ERROR IMG_CALLCONV PVRSRVUnmapExtMemory (IMG_CONST PVRSRV_DEV_DATA *psDev | |||
516 | 603 | ||
517 | IMG_IMPORT | 604 | IMG_IMPORT |
518 | PVRSRV_ERROR IMG_CALLCONV PVRSRVWrapExtMemory(IMG_CONST PVRSRV_DEV_DATA *psDevData, | 605 | PVRSRV_ERROR IMG_CALLCONV PVRSRVWrapExtMemory(IMG_CONST PVRSRV_DEV_DATA *psDevData, |
606 | #if defined (SUPPORT_SID_INTERFACE) | ||
607 | IMG_SID hDevMemContext, | ||
608 | #else | ||
519 | IMG_HANDLE hDevMemContext, | 609 | IMG_HANDLE hDevMemContext, |
610 | #endif | ||
520 | IMG_SIZE_T ui32ByteSize, | 611 | IMG_SIZE_T ui32ByteSize, |
521 | IMG_SIZE_T ui32PageOffset, | 612 | IMG_SIZE_T ui32PageOffset, |
522 | IMG_BOOL bPhysContig, | 613 | IMG_BOOL bPhysContig, |
@@ -534,8 +625,13 @@ PVRSRV_ERROR PVRSRVChangeDeviceMemoryAttributes(IMG_CONST PVRSRV_DEV_DATA *psD | |||
534 | 625 | ||
535 | IMG_IMPORT | 626 | IMG_IMPORT |
536 | PVRSRV_ERROR IMG_CALLCONV PVRSRVMapDeviceClassMemory (IMG_CONST PVRSRV_DEV_DATA *psDevData, | 627 | PVRSRV_ERROR IMG_CALLCONV PVRSRVMapDeviceClassMemory (IMG_CONST PVRSRV_DEV_DATA *psDevData, |
628 | #if defined (SUPPORT_SID_INTERFACE) | ||
629 | IMG_SID hDevMemContext, | ||
630 | IMG_SID hDeviceClassBuffer, | ||
631 | #else | ||
537 | IMG_HANDLE hDevMemContext, | 632 | IMG_HANDLE hDevMemContext, |
538 | IMG_HANDLE hDeviceClassBuffer, | 633 | IMG_HANDLE hDeviceClassBuffer, |
634 | #endif | ||
539 | PVRSRV_CLIENT_MEM_INFO **ppsMemInfo); | 635 | PVRSRV_CLIENT_MEM_INFO **ppsMemInfo); |
540 | IMG_IMPORT | 636 | IMG_IMPORT |
541 | PVRSRV_ERROR IMG_CALLCONV PVRSRVUnmapDeviceClassMemory (IMG_CONST PVRSRV_DEV_DATA *psDevData, | 637 | PVRSRV_ERROR IMG_CALLCONV PVRSRVUnmapDeviceClassMemory (IMG_CONST PVRSRV_DEV_DATA *psDevData, |
@@ -554,6 +650,23 @@ PVRSRV_ERROR IMG_CALLCONV PVRSRVUnmapPhysToUserSpace(IMG_CONST PVRSRV_DEV_DATA * | |||
554 | IMG_PVOID pvUserAddr, | 650 | IMG_PVOID pvUserAddr, |
555 | IMG_PVOID pvProcess); | 651 | IMG_PVOID pvProcess); |
556 | 652 | ||
653 | #if defined(LINUX) | ||
654 | IMG_IMPORT | ||
655 | PVRSRV_ERROR IMG_CALLCONV PVRSRVExportDeviceMem2(IMG_CONST PVRSRV_DEV_DATA *psDevData, | ||
656 | PVRSRV_CLIENT_MEM_INFO *psMemInfo, | ||
657 | IMG_INT *iFd); | ||
658 | |||
659 | IMG_IMPORT | ||
660 | PVRSRV_ERROR IMG_CALLCONV PVRSRVMapDeviceMemory2(IMG_CONST PVRSRV_DEV_DATA *psDevData, | ||
661 | IMG_INT iFd, | ||
662 | #if defined (SUPPORT_SID_INTERFACE) | ||
663 | IMG_SID hDstDevMemHeap, | ||
664 | #else | ||
665 | IMG_HANDLE hDstDevMemHeap, | ||
666 | #endif | ||
667 | PVRSRV_CLIENT_MEM_INFO **ppsDstMemInfo); | ||
668 | #endif | ||
669 | |||
557 | typedef enum _PVRSRV_SYNCVAL_MODE_ | 670 | typedef enum _PVRSRV_SYNCVAL_MODE_ |
558 | { | 671 | { |
559 | PVRSRV_SYNCVAL_READ = IMG_TRUE, | 672 | PVRSRV_SYNCVAL_READ = IMG_TRUE, |
@@ -611,7 +724,11 @@ PVRSRV_ERROR IMG_CALLCONV PVRSRVEnumDCDims (IMG_HANDLE hDevice, | |||
611 | 724 | ||
612 | IMG_IMPORT | 725 | IMG_IMPORT |
613 | PVRSRV_ERROR IMG_CALLCONV PVRSRVGetDCSystemBuffer(IMG_HANDLE hDevice, | 726 | PVRSRV_ERROR IMG_CALLCONV PVRSRVGetDCSystemBuffer(IMG_HANDLE hDevice, |
727 | #if defined (SUPPORT_SID_INTERFACE) | ||
728 | IMG_SID *phBuffer); | ||
729 | #else | ||
614 | IMG_HANDLE *phBuffer); | 730 | IMG_HANDLE *phBuffer); |
731 | #endif | ||
615 | 732 | ||
616 | IMG_IMPORT | 733 | IMG_IMPORT |
617 | PVRSRV_ERROR IMG_CALLCONV PVRSRVGetDCInfo(IMG_HANDLE hDevice, | 734 | PVRSRV_ERROR IMG_CALLCONV PVRSRVGetDCInfo(IMG_HANDLE hDevice, |
@@ -625,48 +742,89 @@ PVRSRV_ERROR IMG_CALLCONV PVRSRVCreateDCSwapChain (IMG_HANDLE hDevice, | |||
625 | IMG_UINT32 ui32BufferCount, | 742 | IMG_UINT32 ui32BufferCount, |
626 | IMG_UINT32 ui32OEMFlags, | 743 | IMG_UINT32 ui32OEMFlags, |
627 | IMG_UINT32 *pui32SwapChainID, | 744 | IMG_UINT32 *pui32SwapChainID, |
745 | #if defined (SUPPORT_SID_INTERFACE) | ||
746 | IMG_SID *phSwapChain); | ||
747 | #else | ||
628 | IMG_HANDLE *phSwapChain); | 748 | IMG_HANDLE *phSwapChain); |
749 | #endif | ||
629 | 750 | ||
630 | IMG_IMPORT | 751 | IMG_IMPORT |
631 | PVRSRV_ERROR IMG_CALLCONV PVRSRVDestroyDCSwapChain (IMG_HANDLE hDevice, | 752 | PVRSRV_ERROR IMG_CALLCONV PVRSRVDestroyDCSwapChain (IMG_HANDLE hDevice, |
753 | #if defined (SUPPORT_SID_INTERFACE) | ||
754 | IMG_SID hSwapChain); | ||
755 | #else | ||
632 | IMG_HANDLE hSwapChain); | 756 | IMG_HANDLE hSwapChain); |
757 | #endif | ||
633 | 758 | ||
634 | IMG_IMPORT | 759 | IMG_IMPORT |
635 | PVRSRV_ERROR IMG_CALLCONV PVRSRVSetDCDstRect (IMG_HANDLE hDevice, | 760 | PVRSRV_ERROR IMG_CALLCONV PVRSRVSetDCDstRect (IMG_HANDLE hDevice, |
761 | #if defined (SUPPORT_SID_INTERFACE) | ||
762 | IMG_SID hSwapChain, | ||
763 | #else | ||
636 | IMG_HANDLE hSwapChain, | 764 | IMG_HANDLE hSwapChain, |
765 | #endif | ||
637 | IMG_RECT *psDstRect); | 766 | IMG_RECT *psDstRect); |
638 | 767 | ||
639 | IMG_IMPORT | 768 | IMG_IMPORT |
640 | PVRSRV_ERROR IMG_CALLCONV PVRSRVSetDCSrcRect (IMG_HANDLE hDevice, | 769 | PVRSRV_ERROR IMG_CALLCONV PVRSRVSetDCSrcRect (IMG_HANDLE hDevice, |
770 | #if defined (SUPPORT_SID_INTERFACE) | ||
771 | IMG_SID hSwapChain, | ||
772 | #else | ||
641 | IMG_HANDLE hSwapChain, | 773 | IMG_HANDLE hSwapChain, |
774 | #endif | ||
642 | IMG_RECT *psSrcRect); | 775 | IMG_RECT *psSrcRect); |
643 | 776 | ||
644 | IMG_IMPORT | 777 | IMG_IMPORT |
645 | PVRSRV_ERROR IMG_CALLCONV PVRSRVSetDCDstColourKey (IMG_HANDLE hDevice, | 778 | PVRSRV_ERROR IMG_CALLCONV PVRSRVSetDCDstColourKey (IMG_HANDLE hDevice, |
779 | #if defined (SUPPORT_SID_INTERFACE) | ||
780 | IMG_SID hSwapChain, | ||
781 | #else | ||
646 | IMG_HANDLE hSwapChain, | 782 | IMG_HANDLE hSwapChain, |
783 | #endif | ||
647 | IMG_UINT32 ui32CKColour); | 784 | IMG_UINT32 ui32CKColour); |
648 | 785 | ||
649 | IMG_IMPORT | 786 | IMG_IMPORT |
650 | PVRSRV_ERROR IMG_CALLCONV PVRSRVSetDCSrcColourKey (IMG_HANDLE hDevice, | 787 | PVRSRV_ERROR IMG_CALLCONV PVRSRVSetDCSrcColourKey (IMG_HANDLE hDevice, |
788 | #if defined (SUPPORT_SID_INTERFACE) | ||
789 | IMG_SID hSwapChain, | ||
790 | #else | ||
651 | IMG_HANDLE hSwapChain, | 791 | IMG_HANDLE hSwapChain, |
792 | #endif | ||
652 | IMG_UINT32 ui32CKColour); | 793 | IMG_UINT32 ui32CKColour); |
653 | 794 | ||
654 | IMG_IMPORT | 795 | IMG_IMPORT |
655 | PVRSRV_ERROR IMG_CALLCONV PVRSRVGetDCBuffers(IMG_HANDLE hDevice, | 796 | PVRSRV_ERROR IMG_CALLCONV PVRSRVGetDCBuffers(IMG_HANDLE hDevice, |
797 | #if defined (SUPPORT_SID_INTERFACE) | ||
798 | IMG_SID hSwapChain, | ||
799 | IMG_SID *phBuffer); | ||
800 | #else | ||
656 | IMG_HANDLE hSwapChain, | 801 | IMG_HANDLE hSwapChain, |
657 | IMG_HANDLE *phBuffer); | 802 | IMG_HANDLE *phBuffer); |
803 | #endif | ||
658 | 804 | ||
659 | IMG_IMPORT | 805 | IMG_IMPORT |
660 | PVRSRV_ERROR IMG_CALLCONV PVRSRVSwapToDCBuffer (IMG_HANDLE hDevice, | 806 | PVRSRV_ERROR IMG_CALLCONV PVRSRVSwapToDCBuffer (IMG_HANDLE hDevice, |
807 | #if defined (SUPPORT_SID_INTERFACE) | ||
808 | IMG_SID hBuffer, | ||
809 | #else | ||
661 | IMG_HANDLE hBuffer, | 810 | IMG_HANDLE hBuffer, |
811 | #endif | ||
662 | IMG_UINT32 ui32ClipRectCount, | 812 | IMG_UINT32 ui32ClipRectCount, |
663 | IMG_RECT *psClipRect, | 813 | IMG_RECT *psClipRect, |
664 | IMG_UINT32 ui32SwapInterval, | 814 | IMG_UINT32 ui32SwapInterval, |
815 | #if defined (SUPPORT_SID_INTERFACE) | ||
816 | IMG_SID hPrivateTag); | ||
817 | #else | ||
665 | IMG_HANDLE hPrivateTag); | 818 | IMG_HANDLE hPrivateTag); |
819 | #endif | ||
666 | 820 | ||
667 | IMG_IMPORT | 821 | IMG_IMPORT |
668 | PVRSRV_ERROR IMG_CALLCONV PVRSRVSwapToDCSystem (IMG_HANDLE hDevice, | 822 | PVRSRV_ERROR IMG_CALLCONV PVRSRVSwapToDCSystem (IMG_HANDLE hDevice, |
823 | #if defined (SUPPORT_SID_INTERFACE) | ||
824 | IMG_SID hSwapChain); | ||
825 | #else | ||
669 | IMG_HANDLE hSwapChain); | 826 | IMG_HANDLE hSwapChain); |
827 | #endif | ||
670 | 828 | ||
671 | 829 | ||
672 | IMG_IMPORT | 830 | IMG_IMPORT |
@@ -684,7 +842,11 @@ PVRSRV_ERROR IMG_CALLCONV PVRSRVGetBCBufferInfo(IMG_HANDLE hDevice, | |||
684 | IMG_IMPORT | 842 | IMG_IMPORT |
685 | PVRSRV_ERROR IMG_CALLCONV PVRSRVGetBCBuffer(IMG_HANDLE hDevice, | 843 | PVRSRV_ERROR IMG_CALLCONV PVRSRVGetBCBuffer(IMG_HANDLE hDevice, |
686 | IMG_UINT32 ui32BufferIndex, | 844 | IMG_UINT32 ui32BufferIndex, |
845 | #if defined (SUPPORT_SID_INTERFACE) | ||
846 | IMG_SID *phBuffer); | ||
847 | #else | ||
687 | IMG_HANDLE *phBuffer); | 848 | IMG_HANDLE *phBuffer); |
849 | #endif | ||
688 | 850 | ||
689 | 851 | ||
690 | IMG_IMPORT | 852 | IMG_IMPORT |
@@ -698,7 +860,11 @@ PVRSRV_ERROR IMG_CALLCONV PVRSRVPDumpStopInitPhase(IMG_CONST PVRSRV_CONNECTION * | |||
698 | 860 | ||
699 | IMG_IMPORT | 861 | IMG_IMPORT |
700 | PVRSRV_ERROR IMG_CALLCONV PVRSRVPDumpMemPol(IMG_CONST PVRSRV_CONNECTION *psConnection, | 862 | PVRSRV_ERROR IMG_CALLCONV PVRSRVPDumpMemPol(IMG_CONST PVRSRV_CONNECTION *psConnection, |
863 | #if defined (SUPPORT_SID_INTERFACE) | ||
864 | IMG_SID hKernelMemInfo, | ||
865 | #else | ||
701 | PVRSRV_CLIENT_MEM_INFO *psMemInfo, | 866 | PVRSRV_CLIENT_MEM_INFO *psMemInfo, |
867 | #endif | ||
702 | IMG_UINT32 ui32Offset, | 868 | IMG_UINT32 ui32Offset, |
703 | IMG_UINT32 ui32Value, | 869 | IMG_UINT32 ui32Value, |
704 | IMG_UINT32 ui32Mask, | 870 | IMG_UINT32 ui32Mask, |
@@ -707,10 +873,23 @@ PVRSRV_ERROR IMG_CALLCONV PVRSRVPDumpMemPol(IMG_CONST PVRSRV_CONNECTION *psConne | |||
707 | 873 | ||
708 | IMG_IMPORT | 874 | IMG_IMPORT |
709 | PVRSRV_ERROR IMG_CALLCONV PVRSRVPDumpSyncPol(IMG_CONST PVRSRV_CONNECTION *psConnection, | 875 | PVRSRV_ERROR IMG_CALLCONV PVRSRVPDumpSyncPol(IMG_CONST PVRSRV_CONNECTION *psConnection, |
710 | PVRSRV_CLIENT_SYNC_INFO *psClientSyncInfo, | 876 | #if defined (SUPPORT_SID_INTERFACE) |
711 | IMG_BOOL bIsRead, | 877 | IMG_SID hKernelSyncInfo, |
712 | IMG_UINT32 ui32Value, | 878 | #else |
713 | IMG_UINT32 ui32Mask); | 879 | PVRSRV_CLIENT_SYNC_INFO *psClientSyncInfo, |
880 | #endif | ||
881 | IMG_BOOL bIsRead, | ||
882 | IMG_UINT32 ui32Value, | ||
883 | IMG_UINT32 ui32Mask); | ||
884 | |||
885 | IMG_IMPORT | ||
886 | PVRSRV_ERROR IMG_CALLCONV PVRSRVPDumpSyncPol2(IMG_CONST PVRSRV_CONNECTION *psConnection, | ||
887 | #if defined (SUPPORT_SID_INTERFACE) | ||
888 | IMG_SID hKernelSyncInfo, | ||
889 | #else | ||
890 | PVRSRV_CLIENT_SYNC_INFO *psClientSyncInfo, | ||
891 | #endif | ||
892 | IMG_BOOL bIsRead); | ||
714 | 893 | ||
715 | IMG_IMPORT | 894 | IMG_IMPORT |
716 | PVRSRV_ERROR IMG_CALLCONV PVRSRVPDumpMem(IMG_CONST PVRSRV_CONNECTION *psConnection, | 895 | PVRSRV_ERROR IMG_CALLCONV PVRSRVPDumpMem(IMG_CONST PVRSRV_CONNECTION *psConnection, |
@@ -758,15 +937,21 @@ PVRSRV_ERROR IMG_CALLCONV PVRSRVPDumpPDDevPAddr(IMG_CONST PVRSRV_CONNECTION *psC | |||
758 | IMG_UINT32 ui32Offset, | 937 | IMG_UINT32 ui32Offset, |
759 | IMG_DEV_PHYADDR sPDDevPAddr); | 938 | IMG_DEV_PHYADDR sPDDevPAddr); |
760 | 939 | ||
940 | #if !defined(USE_CODE) | ||
761 | IMG_IMPORT | 941 | IMG_IMPORT |
762 | PVRSRV_ERROR IMG_CALLCONV PVRSRVPDumpMemPages(IMG_CONST PVRSRV_CONNECTION *psConnection, | 942 | PVRSRV_ERROR IMG_CALLCONV PVRSRVPDumpMemPages(IMG_CONST PVRSRV_DEV_DATA *psDevData, |
763 | IMG_HANDLE hKernelMemInfo, | 943 | #if defined (SUPPORT_SID_INTERFACE) |
764 | IMG_DEV_PHYADDR *pPages, | 944 | IMG_SID hKernelMemInfo, |
765 | IMG_UINT32 ui32NumPages, | 945 | #else |
766 | IMG_DEV_VIRTADDR sDevAddr, | 946 | IMG_HANDLE hKernelMemInfo, |
767 | IMG_UINT32 ui32Start, | 947 | #endif |
768 | IMG_UINT32 ui32Length, | 948 | IMG_DEV_PHYADDR *pPages, |
769 | IMG_BOOL bContinuous); | 949 | IMG_UINT32 ui32NumPages, |
950 | IMG_DEV_VIRTADDR sDevVAddr, | ||
951 | IMG_UINT32 ui32Start, | ||
952 | IMG_UINT32 ui32Length, | ||
953 | IMG_UINT32 ui32Flags); | ||
954 | #endif | ||
770 | 955 | ||
771 | IMG_IMPORT | 956 | IMG_IMPORT |
772 | PVRSRV_ERROR IMG_CALLCONV PVRSRVPDumpSetFrame(IMG_CONST PVRSRV_CONNECTION *psConnection, | 957 | PVRSRV_ERROR IMG_CALLCONV PVRSRVPDumpSetFrame(IMG_CONST PVRSRV_CONNECTION *psConnection, |
@@ -812,7 +997,11 @@ PVRSRV_ERROR IMG_CALLCONV PVRSRVPDumpBitmap(IMG_CONST PVRSRV_DEV_DATA *psDevData | |||
812 | IMG_UINT32 ui32Height, | 997 | IMG_UINT32 ui32Height, |
813 | IMG_UINT32 ui32StrideInBytes, | 998 | IMG_UINT32 ui32StrideInBytes, |
814 | IMG_DEV_VIRTADDR sDevBaseAddr, | 999 | IMG_DEV_VIRTADDR sDevBaseAddr, |
1000 | #if defined (SUPPORT_SID_INTERFACE) | ||
1001 | IMG_SID hDevMemContext, | ||
1002 | #else | ||
815 | IMG_HANDLE hDevMemContext, | 1003 | IMG_HANDLE hDevMemContext, |
1004 | #endif | ||
816 | IMG_UINT32 ui32Size, | 1005 | IMG_UINT32 ui32Size, |
817 | PDUMP_PIXEL_FORMAT ePixelFormat, | 1006 | PDUMP_PIXEL_FORMAT ePixelFormat, |
818 | PDUMP_MEM_FORMAT eMemFormat, | 1007 | PDUMP_MEM_FORMAT eMemFormat, |
@@ -843,7 +1032,7 @@ IMG_IMPORT PVRSRV_ERROR PVRSRVGetLibFuncAddr(IMG_HANDLE hExtDrv, const IMG_CHAR | |||
843 | IMG_IMPORT IMG_UINT32 PVRSRVClockus (void); | 1032 | IMG_IMPORT IMG_UINT32 PVRSRVClockus (void); |
844 | IMG_IMPORT IMG_VOID PVRSRVWaitus (IMG_UINT32 ui32Timeus); | 1033 | IMG_IMPORT IMG_VOID PVRSRVWaitus (IMG_UINT32 ui32Timeus); |
845 | IMG_IMPORT IMG_VOID PVRSRVReleaseThreadQuanta (void); | 1034 | IMG_IMPORT IMG_VOID PVRSRVReleaseThreadQuanta (void); |
846 | IMG_IMPORT IMG_UINTPTR_T IMG_CALLCONV PVRSRVGetCurrentProcessID(void); | 1035 | IMG_IMPORT IMG_UINT32 IMG_CALLCONV PVRSRVGetCurrentProcessID(void); |
847 | IMG_IMPORT IMG_CHAR * IMG_CALLCONV PVRSRVSetLocale(const IMG_CHAR *pszLocale); | 1036 | IMG_IMPORT IMG_CHAR * IMG_CALLCONV PVRSRVSetLocale(const IMG_CHAR *pszLocale); |
848 | 1037 | ||
849 | 1038 | ||
@@ -939,21 +1128,37 @@ IMG_IMPORT IMG_PVOID IMG_CALLCONV PVRSRVReallocUserModeMemTracking(IMG_VOID *pvM | |||
939 | #endif | 1128 | #endif |
940 | 1129 | ||
941 | IMG_IMPORT PVRSRV_ERROR PVRSRVEventObjectWait(const PVRSRV_CONNECTION *psConnection, | 1130 | IMG_IMPORT PVRSRV_ERROR PVRSRVEventObjectWait(const PVRSRV_CONNECTION *psConnection, |
1131 | #if defined (SUPPORT_SID_INTERFACE) | ||
1132 | IMG_EVENTSID hOSEvent); | ||
1133 | #else | ||
942 | IMG_HANDLE hOSEvent); | 1134 | IMG_HANDLE hOSEvent); |
1135 | #endif | ||
943 | 1136 | ||
944 | IMG_IMPORT | 1137 | IMG_IMPORT |
945 | PVRSRV_ERROR IMG_CALLCONV PVRSRVCreateSyncInfoModObj(const PVRSRV_CONNECTION *psConnection, | 1138 | PVRSRV_ERROR IMG_CALLCONV PVRSRVCreateSyncInfoModObj(const PVRSRV_CONNECTION *psConnection, |
1139 | #if defined (SUPPORT_SID_INTERFACE) | ||
1140 | IMG_SID *phKernelSyncInfoModObj); | ||
1141 | #else | ||
946 | IMG_HANDLE *phKernelSyncInfoModObj); | 1142 | IMG_HANDLE *phKernelSyncInfoModObj); |
1143 | #endif | ||
947 | 1144 | ||
948 | IMG_IMPORT | 1145 | IMG_IMPORT |
949 | PVRSRV_ERROR IMG_CALLCONV PVRSRVDestroySyncInfoModObj(const PVRSRV_CONNECTION *psConnection, | 1146 | PVRSRV_ERROR IMG_CALLCONV PVRSRVDestroySyncInfoModObj(const PVRSRV_CONNECTION *psConnection, |
1147 | #if defined (SUPPORT_SID_INTERFACE) | ||
1148 | IMG_SID hKernelSyncInfoModObj); | ||
1149 | #else | ||
950 | IMG_HANDLE hKernelSyncInfoModObj); | 1150 | IMG_HANDLE hKernelSyncInfoModObj); |
1151 | #endif | ||
951 | 1152 | ||
952 | 1153 | ||
953 | 1154 | ||
954 | IMG_IMPORT | 1155 | IMG_IMPORT |
955 | PVRSRV_ERROR IMG_CALLCONV PVRSRVModifyPendingSyncOps(const PVRSRV_CONNECTION *psConnection, | 1156 | PVRSRV_ERROR IMG_CALLCONV PVRSRVModifyPendingSyncOps(const PVRSRV_CONNECTION *psConnection, |
1157 | #if defined (SUPPORT_SID_INTERFACE) | ||
1158 | IMG_SID hKernelSyncInfoModObj, | ||
1159 | #else | ||
956 | IMG_HANDLE hKernelSyncInfoModObj, | 1160 | IMG_HANDLE hKernelSyncInfoModObj, |
1161 | #endif | ||
957 | PVRSRV_CLIENT_SYNC_INFO *psSyncInfo, | 1162 | PVRSRV_CLIENT_SYNC_INFO *psSyncInfo, |
958 | IMG_UINT32 ui32ModifyFlags, | 1163 | IMG_UINT32 ui32ModifyFlags, |
959 | IMG_UINT32 *pui32ReadOpsPending, | 1164 | IMG_UINT32 *pui32ReadOpsPending, |
@@ -961,11 +1166,36 @@ PVRSRV_ERROR IMG_CALLCONV PVRSRVModifyPendingSyncOps(const PVRSRV_CONNECTION *ps | |||
961 | 1166 | ||
962 | IMG_IMPORT | 1167 | IMG_IMPORT |
963 | PVRSRV_ERROR IMG_CALLCONV PVRSRVModifyCompleteSyncOps(const PVRSRV_CONNECTION *psConnection, | 1168 | PVRSRV_ERROR IMG_CALLCONV PVRSRVModifyCompleteSyncOps(const PVRSRV_CONNECTION *psConnection, |
1169 | #if defined (SUPPORT_SID_INTERFACE) | ||
1170 | IMG_SID hKernelSyncInfoModObj); | ||
1171 | #else | ||
964 | IMG_HANDLE hKernelSyncInfoModObj); | 1172 | IMG_HANDLE hKernelSyncInfoModObj); |
1173 | #endif | ||
965 | 1174 | ||
966 | IMG_IMPORT | 1175 | IMG_IMPORT |
1176 | PVRSRV_ERROR IMG_CALLCONV PVRSRVSyncOpsTakeToken(const PVRSRV_CONNECTION *psConnection, | ||
1177 | #if defined (SUPPORT_SID_INTERFACE) | ||
1178 | const IMG_SID hKernelSyncInfo, | ||
1179 | #else | ||
1180 | const PVRSRV_CLIENT_SYNC_INFO *psSyncInfo, | ||
1181 | #endif | ||
1182 | PVRSRV_SYNC_TOKEN *psSyncToken); | ||
1183 | IMG_IMPORT | ||
1184 | PVRSRV_ERROR IMG_CALLCONV PVRSRVSyncOpsFlushToToken(const PVRSRV_CONNECTION *psConnection, | ||
1185 | #if defined (SUPPORT_SID_INTERFACE) | ||
1186 | const IMG_SID hKernelSyncInfo, | ||
1187 | #else | ||
1188 | const PVRSRV_CLIENT_SYNC_INFO *psSyncInfo, | ||
1189 | #endif | ||
1190 | const PVRSRV_SYNC_TOKEN *psSyncToken, | ||
1191 | IMG_BOOL bWait); | ||
1192 | IMG_IMPORT | ||
967 | PVRSRV_ERROR IMG_CALLCONV PVRSRVSyncOpsFlushToModObj(const PVRSRV_CONNECTION *psConnection, | 1193 | PVRSRV_ERROR IMG_CALLCONV PVRSRVSyncOpsFlushToModObj(const PVRSRV_CONNECTION *psConnection, |
1194 | #if defined (SUPPORT_SID_INTERFACE) | ||
1195 | IMG_SID hKernelSyncInfoModObj, | ||
1196 | #else | ||
968 | IMG_HANDLE hKernelSyncInfoModObj, | 1197 | IMG_HANDLE hKernelSyncInfoModObj, |
1198 | #endif | ||
969 | IMG_BOOL bWait); | 1199 | IMG_BOOL bWait); |
970 | 1200 | ||
971 | IMG_IMPORT | 1201 | IMG_IMPORT |
diff --git a/drivers/gpu/pvr/servicesext.h b/drivers/gpu/pvr/servicesext.h index 6f7270561a8..609df3138fc 100644 --- a/drivers/gpu/pvr/servicesext.h +++ b/drivers/gpu/pvr/servicesext.h | |||
@@ -86,6 +86,8 @@ typedef enum _PVRSRV_ERROR_ | |||
86 | 86 | ||
87 | PVRSRV_ERROR_REGISTER_BASE_NOT_SET, | 87 | PVRSRV_ERROR_REGISTER_BASE_NOT_SET, |
88 | 88 | ||
89 | PVRSRV_ERROR_BM_BAD_SHAREMEM_HANDLE, | ||
90 | |||
89 | PVRSRV_ERROR_FAILED_TO_ALLOC_USER_MEM, | 91 | PVRSRV_ERROR_FAILED_TO_ALLOC_USER_MEM, |
90 | PVRSRV_ERROR_FAILED_TO_ALLOC_VP_MEMORY, | 92 | PVRSRV_ERROR_FAILED_TO_ALLOC_VP_MEMORY, |
91 | PVRSRV_ERROR_FAILED_TO_MAP_SHARED_PBDESC, | 93 | PVRSRV_ERROR_FAILED_TO_MAP_SHARED_PBDESC, |
@@ -434,62 +436,62 @@ typedef enum _PVRSRV_PIXEL_FORMAT_ { | |||
434 | 436 | ||
435 | 437 | ||
436 | PVRSRV_PIXEL_FORMAT_G16R16 = 101, | 438 | PVRSRV_PIXEL_FORMAT_G16R16 = 101, |
437 | PVRSRV_PIXEL_FORMAT_G16R16F = 102, | 439 | PVRSRV_PIXEL_FORMAT_G16R16F = 102, |
438 | PVRSRV_PIXEL_FORMAT_G16R16_UINT = 103, | 440 | PVRSRV_PIXEL_FORMAT_G16R16_UINT = 103, |
439 | PVRSRV_PIXEL_FORMAT_G16R16_UNORM = 104, | 441 | PVRSRV_PIXEL_FORMAT_G16R16_UNORM = 104, |
440 | PVRSRV_PIXEL_FORMAT_G16R16_SINT = 105, | 442 | PVRSRV_PIXEL_FORMAT_G16R16_SINT = 105, |
441 | PVRSRV_PIXEL_FORMAT_G16R16_SNORM = 106, | 443 | PVRSRV_PIXEL_FORMAT_G16R16_SNORM = 106, |
442 | |||
443 | |||
444 | PVRSRV_PIXEL_FORMAT_R16 = 107, | ||
445 | PVRSRV_PIXEL_FORMAT_R16F = 108, | ||
446 | PVRSRV_PIXEL_FORMAT_R16_UINT = 109, | ||
447 | PVRSRV_PIXEL_FORMAT_R16_UNORM = 110, | ||
448 | PVRSRV_PIXEL_FORMAT_R16_SINT = 111, | ||
449 | PVRSRV_PIXEL_FORMAT_R16_SNORM = 112, | ||
450 | |||
451 | |||
452 | PVRSRV_PIXEL_FORMAT_X8R8G8B8 = 113, | ||
453 | PVRSRV_PIXEL_FORMAT_X8R8G8B8_UNORM = 114, | ||
454 | PVRSRV_PIXEL_FORMAT_X8R8G8B8_UNORM_SRGB = 115, | ||
455 | |||
456 | PVRSRV_PIXEL_FORMAT_A8R8G8B8 = 116, | ||
457 | PVRSRV_PIXEL_FORMAT_A8R8G8B8_UNORM = 117, | ||
458 | PVRSRV_PIXEL_FORMAT_A8R8G8B8_UNORM_SRGB = 118, | ||
459 | 444 | ||
460 | PVRSRV_PIXEL_FORMAT_A8B8G8R8 = 119, | 445 | |
461 | PVRSRV_PIXEL_FORMAT_A8B8G8R8_UINT = 120, | 446 | PVRSRV_PIXEL_FORMAT_R16 = 107, |
462 | PVRSRV_PIXEL_FORMAT_A8B8G8R8_UNORM = 121, | 447 | PVRSRV_PIXEL_FORMAT_R16F = 108, |
463 | PVRSRV_PIXEL_FORMAT_A8B8G8R8_UNORM_SRGB = 122, | 448 | PVRSRV_PIXEL_FORMAT_R16_UINT = 109, |
464 | PVRSRV_PIXEL_FORMAT_A8B8G8R8_SINT = 123, | 449 | PVRSRV_PIXEL_FORMAT_R16_UNORM = 110, |
465 | PVRSRV_PIXEL_FORMAT_A8B8G8R8_SNORM = 124, | 450 | PVRSRV_PIXEL_FORMAT_R16_SINT = 111, |
466 | 451 | PVRSRV_PIXEL_FORMAT_R16_SNORM = 112, | |
467 | |||
468 | PVRSRV_PIXEL_FORMAT_G8R8 = 125, | ||
469 | PVRSRV_PIXEL_FORMAT_G8R8_UINT = 126, | ||
470 | PVRSRV_PIXEL_FORMAT_G8R8_UNORM = 127, | ||
471 | PVRSRV_PIXEL_FORMAT_G8R8_SINT = 128, | ||
472 | PVRSRV_PIXEL_FORMAT_G8R8_SNORM = 129, | ||
473 | 452 | ||
453 | |||
454 | PVRSRV_PIXEL_FORMAT_X8R8G8B8 = 113, | ||
455 | PVRSRV_PIXEL_FORMAT_X8R8G8B8_UNORM = 114, | ||
456 | PVRSRV_PIXEL_FORMAT_X8R8G8B8_UNORM_SRGB = 115, | ||
474 | 457 | ||
475 | PVRSRV_PIXEL_FORMAT_A8 = 130, | 458 | PVRSRV_PIXEL_FORMAT_A8R8G8B8 = 116, |
476 | PVRSRV_PIXEL_FORMAT_R8 = 131, | 459 | PVRSRV_PIXEL_FORMAT_A8R8G8B8_UNORM = 117, |
477 | PVRSRV_PIXEL_FORMAT_R8_UINT = 132, | 460 | PVRSRV_PIXEL_FORMAT_A8R8G8B8_UNORM_SRGB = 118, |
478 | PVRSRV_PIXEL_FORMAT_R8_UNORM = 133, | ||
479 | PVRSRV_PIXEL_FORMAT_R8_SINT = 134, | ||
480 | PVRSRV_PIXEL_FORMAT_R8_SNORM = 135, | ||
481 | 461 | ||
462 | PVRSRV_PIXEL_FORMAT_A8B8G8R8 = 119, | ||
463 | PVRSRV_PIXEL_FORMAT_A8B8G8R8_UINT = 120, | ||
464 | PVRSRV_PIXEL_FORMAT_A8B8G8R8_UNORM = 121, | ||
465 | PVRSRV_PIXEL_FORMAT_A8B8G8R8_UNORM_SRGB = 122, | ||
466 | PVRSRV_PIXEL_FORMAT_A8B8G8R8_SINT = 123, | ||
467 | PVRSRV_PIXEL_FORMAT_A8B8G8R8_SNORM = 124, | ||
482 | 468 | ||
483 | PVRSRV_PIXEL_FORMAT_A2B10G10R10 = 136, | 469 | |
484 | PVRSRV_PIXEL_FORMAT_A2B10G10R10_UNORM = 137, | 470 | PVRSRV_PIXEL_FORMAT_G8R8 = 125, |
485 | PVRSRV_PIXEL_FORMAT_A2B10G10R10_UINT = 138, | 471 | PVRSRV_PIXEL_FORMAT_G8R8_UINT = 126, |
472 | PVRSRV_PIXEL_FORMAT_G8R8_UNORM = 127, | ||
473 | PVRSRV_PIXEL_FORMAT_G8R8_SINT = 128, | ||
474 | PVRSRV_PIXEL_FORMAT_G8R8_SNORM = 129, | ||
486 | 475 | ||
476 | |||
477 | PVRSRV_PIXEL_FORMAT_A8 = 130, | ||
478 | PVRSRV_PIXEL_FORMAT_R8 = 131, | ||
479 | PVRSRV_PIXEL_FORMAT_R8_UINT = 132, | ||
480 | PVRSRV_PIXEL_FORMAT_R8_UNORM = 133, | ||
481 | PVRSRV_PIXEL_FORMAT_R8_SINT = 134, | ||
482 | PVRSRV_PIXEL_FORMAT_R8_SNORM = 135, | ||
487 | 483 | ||
488 | PVRSRV_PIXEL_FORMAT_B10G11R11 = 139, | 484 | |
489 | PVRSRV_PIXEL_FORMAT_B10G11R11F = 140, | 485 | PVRSRV_PIXEL_FORMAT_A2B10G10R10 = 136, |
486 | PVRSRV_PIXEL_FORMAT_A2B10G10R10_UNORM = 137, | ||
487 | PVRSRV_PIXEL_FORMAT_A2B10G10R10_UINT = 138, | ||
490 | 488 | ||
489 | |||
490 | PVRSRV_PIXEL_FORMAT_B10G11R11 = 139, | ||
491 | PVRSRV_PIXEL_FORMAT_B10G11R11F = 140, | ||
491 | 492 | ||
492 | PVRSRV_PIXEL_FORMAT_X24G8R32 = 141, | 493 | |
494 | PVRSRV_PIXEL_FORMAT_X24G8R32 = 141, | ||
493 | PVRSRV_PIXEL_FORMAT_G8R24 = 142, | 495 | PVRSRV_PIXEL_FORMAT_G8R24 = 142, |
494 | PVRSRV_PIXEL_FORMAT_X8R24 = 143, | 496 | PVRSRV_PIXEL_FORMAT_X8R24 = 143, |
495 | PVRSRV_PIXEL_FORMAT_E5B9G9R9 = 144, | 497 | PVRSRV_PIXEL_FORMAT_E5B9G9R9 = 144, |
@@ -511,20 +513,20 @@ typedef enum _PVRSRV_PIXEL_FORMAT_ { | |||
511 | PVRSRV_PIXEL_FORMAT_RESERVED19 = 159, | 513 | PVRSRV_PIXEL_FORMAT_RESERVED19 = 159, |
512 | PVRSRV_PIXEL_FORMAT_RESERVED20 = 160, | 514 | PVRSRV_PIXEL_FORMAT_RESERVED20 = 160, |
513 | 515 | ||
516 | |||
517 | PVRSRV_PIXEL_FORMAT_UBYTE4 = 161, | ||
518 | PVRSRV_PIXEL_FORMAT_SHORT4 = 162, | ||
519 | PVRSRV_PIXEL_FORMAT_SHORT4N = 163, | ||
520 | PVRSRV_PIXEL_FORMAT_USHORT4N = 164, | ||
521 | PVRSRV_PIXEL_FORMAT_SHORT2N = 165, | ||
522 | PVRSRV_PIXEL_FORMAT_SHORT2 = 166, | ||
523 | PVRSRV_PIXEL_FORMAT_USHORT2N = 167, | ||
524 | PVRSRV_PIXEL_FORMAT_UDEC3 = 168, | ||
525 | PVRSRV_PIXEL_FORMAT_DEC3N = 169, | ||
526 | PVRSRV_PIXEL_FORMAT_F16_2 = 170, | ||
527 | PVRSRV_PIXEL_FORMAT_F16_4 = 171, | ||
514 | 528 | ||
515 | PVRSRV_PIXEL_FORMAT_UBYTE4 = 161, | 529 | |
516 | PVRSRV_PIXEL_FORMAT_SHORT4 = 162, | ||
517 | PVRSRV_PIXEL_FORMAT_SHORT4N = 163, | ||
518 | PVRSRV_PIXEL_FORMAT_USHORT4N = 164, | ||
519 | PVRSRV_PIXEL_FORMAT_SHORT2N = 165, | ||
520 | PVRSRV_PIXEL_FORMAT_SHORT2 = 166, | ||
521 | PVRSRV_PIXEL_FORMAT_USHORT2N = 167, | ||
522 | PVRSRV_PIXEL_FORMAT_UDEC3 = 168, | ||
523 | PVRSRV_PIXEL_FORMAT_DEC3N = 169, | ||
524 | PVRSRV_PIXEL_FORMAT_F16_2 = 170, | ||
525 | PVRSRV_PIXEL_FORMAT_F16_4 = 171, | ||
526 | |||
527 | |||
528 | PVRSRV_PIXEL_FORMAT_L_F16 = 172, | 530 | PVRSRV_PIXEL_FORMAT_L_F16 = 172, |
529 | PVRSRV_PIXEL_FORMAT_L_F16_REP = 173, | 531 | PVRSRV_PIXEL_FORMAT_L_F16_REP = 173, |
530 | PVRSRV_PIXEL_FORMAT_L_F16_A_F16 = 174, | 532 | PVRSRV_PIXEL_FORMAT_L_F16_A_F16 = 174, |
@@ -535,7 +537,7 @@ typedef enum _PVRSRV_PIXEL_FORMAT_ { | |||
535 | PVRSRV_PIXEL_FORMAT_A_F32 = 178, | 537 | PVRSRV_PIXEL_FORMAT_A_F32 = 178, |
536 | PVRSRV_PIXEL_FORMAT_L_F32_A_F32 = 179, | 538 | PVRSRV_PIXEL_FORMAT_L_F32_A_F32 = 179, |
537 | 539 | ||
538 | 540 | ||
539 | PVRSRV_PIXEL_FORMAT_PVRTC2 = 180, | 541 | PVRSRV_PIXEL_FORMAT_PVRTC2 = 180, |
540 | PVRSRV_PIXEL_FORMAT_PVRTC4 = 181, | 542 | PVRSRV_PIXEL_FORMAT_PVRTC4 = 181, |
541 | PVRSRV_PIXEL_FORMAT_PVRTCII2 = 182, | 543 | PVRSRV_PIXEL_FORMAT_PVRTCII2 = 182, |
@@ -552,7 +554,7 @@ typedef enum _PVRSRV_PIXEL_FORMAT_ { | |||
552 | PVRSRV_PIXEL_FORMAT_MONO8 = 193, | 554 | PVRSRV_PIXEL_FORMAT_MONO8 = 193, |
553 | PVRSRV_PIXEL_FORMAT_MONO16 = 194, | 555 | PVRSRV_PIXEL_FORMAT_MONO16 = 194, |
554 | 556 | ||
555 | 557 | ||
556 | PVRSRV_PIXEL_FORMAT_C0_YUYV = 195, | 558 | PVRSRV_PIXEL_FORMAT_C0_YUYV = 195, |
557 | PVRSRV_PIXEL_FORMAT_C0_UYVY = 196, | 559 | PVRSRV_PIXEL_FORMAT_C0_UYVY = 196, |
558 | PVRSRV_PIXEL_FORMAT_C0_YVYU = 197, | 560 | PVRSRV_PIXEL_FORMAT_C0_YVYU = 197, |
@@ -562,7 +564,7 @@ typedef enum _PVRSRV_PIXEL_FORMAT_ { | |||
562 | PVRSRV_PIXEL_FORMAT_C1_YVYU = 201, | 564 | PVRSRV_PIXEL_FORMAT_C1_YVYU = 201, |
563 | PVRSRV_PIXEL_FORMAT_C1_VYUY = 202, | 565 | PVRSRV_PIXEL_FORMAT_C1_VYUY = 202, |
564 | 566 | ||
565 | 567 | ||
566 | PVRSRV_PIXEL_FORMAT_C0_YUV420_2P_UV = 203, | 568 | PVRSRV_PIXEL_FORMAT_C0_YUV420_2P_UV = 203, |
567 | PVRSRV_PIXEL_FORMAT_C0_YUV420_2P_VU = 204, | 569 | PVRSRV_PIXEL_FORMAT_C0_YUV420_2P_VU = 204, |
568 | PVRSRV_PIXEL_FORMAT_C0_YUV420_3P = 205, | 570 | PVRSRV_PIXEL_FORMAT_C0_YUV420_3P = 205, |
@@ -573,11 +575,19 @@ typedef enum _PVRSRV_PIXEL_FORMAT_ { | |||
573 | PVRSRV_PIXEL_FORMAT_A2B10G10R10F = 209, | 575 | PVRSRV_PIXEL_FORMAT_A2B10G10R10F = 209, |
574 | PVRSRV_PIXEL_FORMAT_B8G8R8_SINT = 210, | 576 | PVRSRV_PIXEL_FORMAT_B8G8R8_SINT = 210, |
575 | PVRSRV_PIXEL_FORMAT_PVRF32SIGNMASK = 211, | 577 | PVRSRV_PIXEL_FORMAT_PVRF32SIGNMASK = 211, |
576 | 578 | ||
577 | PVRSRV_PIXEL_FORMAT_ABGR4444 = 212, | 579 | PVRSRV_PIXEL_FORMAT_ABGR4444 = 212, |
578 | PVRSRV_PIXEL_FORMAT_ABGR1555 = 213, | 580 | PVRSRV_PIXEL_FORMAT_ABGR1555 = 213, |
579 | PVRSRV_PIXEL_FORMAT_BGR565 = 214, | 581 | PVRSRV_PIXEL_FORMAT_BGR565 = 214, |
580 | 582 | ||
583 | |||
584 | PVRSRV_PIXEL_FORMAT_C0_4KYUV420_2P_UV = 215, | ||
585 | PVRSRV_PIXEL_FORMAT_C0_4KYUV420_2P_VU = 216, | ||
586 | PVRSRV_PIXEL_FORMAT_C1_4KYUV420_2P_UV = 217, | ||
587 | PVRSRV_PIXEL_FORMAT_C1_4KYUV420_2P_VU = 218, | ||
588 | PVRSRV_PIXEL_FORMAT_P208 = 219, | ||
589 | PVRSRV_PIXEL_FORMAT_A8P8 = 220, | ||
590 | |||
581 | PVRSRV_PIXEL_FORMAT_FORCE_I32 = 0x7fffffff | 591 | PVRSRV_PIXEL_FORMAT_FORCE_I32 = 0x7fffffff |
582 | 592 | ||
583 | } PVRSRV_PIXEL_FORMAT; | 593 | } PVRSRV_PIXEL_FORMAT; |
@@ -612,15 +622,15 @@ typedef enum _PVRSRV_ROTATION_ { | |||
612 | 622 | ||
613 | typedef struct _PVRSRV_SYNC_DATA_ | 623 | typedef struct _PVRSRV_SYNC_DATA_ |
614 | { | 624 | { |
615 | 625 | ||
616 | IMG_UINT32 ui32WriteOpsPending; | 626 | IMG_UINT32 ui32WriteOpsPending; |
617 | volatile IMG_UINT32 ui32WriteOpsComplete; | 627 | volatile IMG_UINT32 ui32WriteOpsComplete; |
618 | 628 | ||
619 | 629 | ||
620 | IMG_UINT32 ui32ReadOpsPending; | 630 | IMG_UINT32 ui32ReadOpsPending; |
621 | volatile IMG_UINT32 ui32ReadOpsComplete; | 631 | volatile IMG_UINT32 ui32ReadOpsComplete; |
622 | 632 | ||
623 | 633 | ||
624 | IMG_UINT32 ui32LastOpDumpVal; | 634 | IMG_UINT32 ui32LastOpDumpVal; |
625 | IMG_UINT32 ui32LastReadOpDumpVal; | 635 | IMG_UINT32 ui32LastReadOpDumpVal; |
626 | 636 | ||
@@ -628,30 +638,37 @@ typedef struct _PVRSRV_SYNC_DATA_ | |||
628 | 638 | ||
629 | typedef struct _PVRSRV_CLIENT_SYNC_INFO_ | 639 | typedef struct _PVRSRV_CLIENT_SYNC_INFO_ |
630 | { | 640 | { |
641 | |||
642 | PVRSRV_SYNC_DATA *psSyncData; | ||
631 | 643 | ||
632 | PVRSRV_SYNC_DATA *psSyncData; | 644 | |
633 | |||
634 | |||
635 | |||
636 | 645 | ||
637 | 646 | ||
647 | |||
638 | IMG_DEV_VIRTADDR sWriteOpsCompleteDevVAddr; | 648 | IMG_DEV_VIRTADDR sWriteOpsCompleteDevVAddr; |
639 | 649 | ||
640 | 650 | ||
641 | IMG_DEV_VIRTADDR sReadOpsCompleteDevVAddr; | 651 | IMG_DEV_VIRTADDR sReadOpsCompleteDevVAddr; |
642 | 652 | ||
653 | |||
654 | #if defined (SUPPORT_SID_INTERFACE) | ||
655 | IMG_SID hMappingInfo; | ||
643 | 656 | ||
657 | |||
658 | IMG_SID hKernelSyncInfo; | ||
659 | #else | ||
644 | IMG_HANDLE hMappingInfo; | 660 | IMG_HANDLE hMappingInfo; |
645 | 661 | ||
646 | 662 | ||
647 | IMG_HANDLE hKernelSyncInfo; | 663 | IMG_HANDLE hKernelSyncInfo; |
664 | #endif | ||
648 | 665 | ||
649 | } PVRSRV_CLIENT_SYNC_INFO, *PPVRSRV_CLIENT_SYNC_INFO; | 666 | } PVRSRV_CLIENT_SYNC_INFO, *PPVRSRV_CLIENT_SYNC_INFO; |
650 | 667 | ||
651 | typedef struct PVRSRV_RESOURCE_TAG | 668 | typedef struct PVRSRV_RESOURCE_TAG |
652 | { | 669 | { |
653 | volatile IMG_UINT32 ui32Lock; | 670 | volatile IMG_UINT32 ui32Lock; |
654 | IMG_UINT32 ui32ID; | 671 | IMG_UINT32 ui32ID; |
655 | }PVRSRV_RESOURCE; | 672 | }PVRSRV_RESOURCE; |
656 | typedef PVRSRV_RESOURCE PVRSRV_RES_HANDLE; | 673 | typedef PVRSRV_RESOURCE PVRSRV_RES_HANDLE; |
657 | 674 | ||
@@ -700,52 +717,52 @@ typedef struct DISPLAY_DIMS_TAG | |||
700 | 717 | ||
701 | typedef struct DISPLAY_FORMAT_TAG | 718 | typedef struct DISPLAY_FORMAT_TAG |
702 | { | 719 | { |
703 | 720 | ||
704 | PVRSRV_PIXEL_FORMAT pixelformat; | 721 | PVRSRV_PIXEL_FORMAT pixelformat; |
705 | } DISPLAY_FORMAT; | 722 | } DISPLAY_FORMAT; |
706 | 723 | ||
707 | typedef struct DISPLAY_SURF_ATTRIBUTES_TAG | 724 | typedef struct DISPLAY_SURF_ATTRIBUTES_TAG |
708 | { | 725 | { |
709 | 726 | ||
710 | PVRSRV_PIXEL_FORMAT pixelformat; | 727 | PVRSRV_PIXEL_FORMAT pixelformat; |
711 | 728 | ||
712 | DISPLAY_DIMS sDims; | 729 | DISPLAY_DIMS sDims; |
713 | } DISPLAY_SURF_ATTRIBUTES; | 730 | } DISPLAY_SURF_ATTRIBUTES; |
714 | 731 | ||
715 | 732 | ||
716 | typedef struct DISPLAY_MODE_INFO_TAG | 733 | typedef struct DISPLAY_MODE_INFO_TAG |
717 | { | 734 | { |
718 | 735 | ||
719 | PVRSRV_PIXEL_FORMAT pixelformat; | 736 | PVRSRV_PIXEL_FORMAT pixelformat; |
720 | 737 | ||
721 | DISPLAY_DIMS sDims; | 738 | DISPLAY_DIMS sDims; |
722 | 739 | ||
723 | IMG_UINT32 ui32RefreshHZ; | 740 | IMG_UINT32 ui32RefreshHZ; |
724 | 741 | ||
725 | IMG_UINT32 ui32OEMFlags; | 742 | IMG_UINT32 ui32OEMFlags; |
726 | } DISPLAY_MODE_INFO; | 743 | } DISPLAY_MODE_INFO; |
727 | 744 | ||
728 | 745 | ||
729 | 746 | ||
730 | #define MAX_DISPLAY_NAME_SIZE (50) | 747 | #define MAX_DISPLAY_NAME_SIZE (50) |
731 | 748 | ||
732 | typedef struct DISPLAY_INFO_TAG | 749 | typedef struct DISPLAY_INFO_TAG |
733 | { | 750 | { |
734 | 751 | ||
735 | IMG_UINT32 ui32MaxSwapChains; | 752 | IMG_UINT32 ui32MaxSwapChains; |
736 | 753 | ||
737 | IMG_UINT32 ui32MaxSwapChainBuffers; | 754 | IMG_UINT32 ui32MaxSwapChainBuffers; |
738 | 755 | ||
739 | IMG_UINT32 ui32MinSwapInterval; | 756 | IMG_UINT32 ui32MinSwapInterval; |
740 | 757 | ||
741 | IMG_UINT32 ui32MaxSwapInterval; | 758 | IMG_UINT32 ui32MaxSwapInterval; |
742 | 759 | ||
743 | IMG_UINT32 ui32PhysicalWidthmm; | 760 | IMG_UINT32 ui32PhysicalWidthmm; |
744 | IMG_UINT32 ui32PhysicalHeightmm; | 761 | IMG_UINT32 ui32PhysicalHeightmm; |
745 | 762 | ||
746 | IMG_CHAR szDisplayName[MAX_DISPLAY_NAME_SIZE]; | 763 | IMG_CHAR szDisplayName[MAX_DISPLAY_NAME_SIZE]; |
747 | #if defined(SUPPORT_HW_CURSOR) | 764 | #if defined(SUPPORT_HW_CURSOR) |
748 | 765 | ||
749 | IMG_UINT16 ui32CursorWidth; | 766 | IMG_UINT16 ui32CursorWidth; |
750 | IMG_UINT16 ui32CursorHeight; | 767 | IMG_UINT16 ui32CursorHeight; |
751 | #endif | 768 | #endif |
@@ -754,9 +771,9 @@ typedef struct DISPLAY_INFO_TAG | |||
754 | typedef struct ACCESS_INFO_TAG | 771 | typedef struct ACCESS_INFO_TAG |
755 | { | 772 | { |
756 | IMG_UINT32 ui32Size; | 773 | IMG_UINT32 ui32Size; |
757 | IMG_UINT32 ui32FBPhysBaseAddress; | 774 | IMG_UINT32 ui32FBPhysBaseAddress; |
758 | IMG_UINT32 ui32FBMemAvailable; | 775 | IMG_UINT32 ui32FBMemAvailable; |
759 | IMG_UINT32 ui32SysPhysBaseAddress; | 776 | IMG_UINT32 ui32SysPhysBaseAddress; |
760 | IMG_UINT32 ui32SysSize; | 777 | IMG_UINT32 ui32SysSize; |
761 | IMG_UINT32 ui32DevIRQ; | 778 | IMG_UINT32 ui32DevIRQ; |
762 | }ACCESS_INFO; | 779 | }ACCESS_INFO; |
@@ -769,11 +786,11 @@ typedef struct PVRSRV_CURSOR_SHAPE_TAG | |||
769 | IMG_INT16 i16XHot; | 786 | IMG_INT16 i16XHot; |
770 | IMG_INT16 i16YHot; | 787 | IMG_INT16 i16YHot; |
771 | 788 | ||
789 | |||
790 | IMG_VOID* pvMask; | ||
791 | IMG_INT16 i16MaskByteStride; | ||
772 | 792 | ||
773 | IMG_VOID* pvMask; | 793 | |
774 | IMG_INT16 i16MaskByteStride; | ||
775 | |||
776 | |||
777 | IMG_VOID* pvColour; | 794 | IMG_VOID* pvColour; |
778 | IMG_INT16 i16ColourByteStride; | 795 | IMG_INT16 i16ColourByteStride; |
779 | PVRSRV_PIXEL_FORMAT eColourPixelFormat; | 796 | PVRSRV_PIXEL_FORMAT eColourPixelFormat; |
@@ -786,20 +803,20 @@ typedef struct PVRSRV_CURSOR_SHAPE_TAG | |||
786 | 803 | ||
787 | typedef struct PVRSRV_CURSOR_INFO_TAG | 804 | typedef struct PVRSRV_CURSOR_INFO_TAG |
788 | { | 805 | { |
789 | 806 | ||
790 | IMG_UINT32 ui32Flags; | 807 | IMG_UINT32 ui32Flags; |
791 | 808 | ||
792 | 809 | ||
793 | IMG_BOOL bVisible; | 810 | IMG_BOOL bVisible; |
794 | 811 | ||
795 | 812 | ||
796 | IMG_INT16 i16XPos; | 813 | IMG_INT16 i16XPos; |
797 | IMG_INT16 i16YPos; | 814 | IMG_INT16 i16YPos; |
798 | 815 | ||
799 | 816 | ||
800 | PVRSRV_CURSOR_SHAPE sCursorShape; | 817 | PVRSRV_CURSOR_SHAPE sCursorShape; |
801 | 818 | ||
802 | 819 | ||
803 | IMG_UINT32 ui32Rotation; | 820 | IMG_UINT32 ui32Rotation; |
804 | 821 | ||
805 | } PVRSRV_CURSOR_INFO; | 822 | } PVRSRV_CURSOR_INFO; |
@@ -807,13 +824,14 @@ typedef struct PVRSRV_CURSOR_INFO_TAG | |||
807 | #if defined(PDUMP_SUSPEND_IS_PER_THREAD) | 824 | #if defined(PDUMP_SUSPEND_IS_PER_THREAD) |
808 | typedef struct { | 825 | typedef struct { |
809 | IMG_UINT32 threadId; | 826 | IMG_UINT32 threadId; |
810 | int suspendCount; | 827 | IMG_INT suspendCount; |
811 | } PVRSRV_THREAD_SUSPEND_COUNT; | 828 | } PVRSRV_THREAD_SUSPEND_COUNT; |
812 | 829 | ||
813 | #define PVRSRV_PDUMP_SUSPEND_Q_NAME "PVRSRVPDumpSuspendMsgQ" | 830 | #define PVRSRV_PDUMP_SUSPEND_Q_NAME "PVRSRVPDumpSuspendMsgQ" |
814 | #define PVRSRV_PDUMP_SUSPEND_Q_LENGTH 8 | 831 | #define PVRSRV_PDUMP_SUSPEND_Q_LENGTH 8 |
815 | 832 | ||
816 | #endif | 833 | #endif |
834 | |||
817 | 835 | ||
818 | typedef struct _PVRSRV_REGISTRY_INFO_ | 836 | typedef struct _PVRSRV_REGISTRY_INFO_ |
819 | { | 837 | { |
@@ -835,11 +853,11 @@ PVRSRV_ERROR IMG_CALLCONV PVRSRVWriteRegistryString (PPVRSRV_REGISTRY_INFO psReg | |||
835 | #define PVRSRV_BC_FLAGS_YUVCSC_BT601 (0 << 1) | 853 | #define PVRSRV_BC_FLAGS_YUVCSC_BT601 (0 << 1) |
836 | #define PVRSRV_BC_FLAGS_YUVCSC_BT709 (1 << 1) | 854 | #define PVRSRV_BC_FLAGS_YUVCSC_BT709 (1 << 1) |
837 | 855 | ||
838 | #define MAX_BUFFER_DEVICE_NAME_SIZE (50) | 856 | #define MAX_BUFFER_DEVICE_NAME_SIZE (50) |
839 | 857 | ||
840 | typedef struct BUFFER_INFO_TAG | 858 | typedef struct BUFFER_INFO_TAG |
841 | { | 859 | { |
842 | IMG_UINT32 ui32BufferCount; | 860 | IMG_UINT32 ui32BufferCount; |
843 | IMG_UINT32 ui32BufferDeviceID; | 861 | IMG_UINT32 ui32BufferDeviceID; |
844 | PVRSRV_PIXEL_FORMAT pixelformat; | 862 | PVRSRV_PIXEL_FORMAT pixelformat; |
845 | IMG_UINT32 ui32ByteStride; | 863 | IMG_UINT32 ui32ByteStride; |
@@ -857,4 +875,4 @@ typedef enum _OVERLAY_DEINTERLACE_MODE_ | |||
857 | BOB_EVEN_NONINTERLEAVED | 875 | BOB_EVEN_NONINTERLEAVED |
858 | } OVERLAY_DEINTERLACE_MODE; | 876 | } OVERLAY_DEINTERLACE_MODE; |
859 | 877 | ||
860 | #endif | 878 | #endif |
diff --git a/drivers/gpu/pvr/servicesint.h b/drivers/gpu/pvr/servicesint.h index bc5aeb8dc0b..de404249054 100644 --- a/drivers/gpu/pvr/servicesint.h +++ b/drivers/gpu/pvr/servicesint.h | |||
@@ -68,7 +68,7 @@ typedef struct _PVRSRV_KERNEL_MEM_INFO_ | |||
68 | IMG_UINT32 ui32Flags; | 68 | IMG_UINT32 ui32Flags; |
69 | 69 | ||
70 | 70 | ||
71 | IMG_SIZE_T ui32AllocSize; | 71 | IMG_SIZE_T uAllocSize; |
72 | 72 | ||
73 | 73 | ||
74 | PVRSRV_MEMBLK sMemBlk; | 74 | PVRSRV_MEMBLK sMemBlk; |
@@ -97,6 +97,31 @@ typedef struct _PVRSRV_KERNEL_MEM_INFO_ | |||
97 | struct _PVRSRV_KERNEL_SYNC_INFO_ *psKernelSyncInfo; | 97 | struct _PVRSRV_KERNEL_SYNC_INFO_ *psKernelSyncInfo; |
98 | 98 | ||
99 | PVRSRV_MEMTYPE memType; | 99 | PVRSRV_MEMTYPE memType; |
100 | |||
101 | |||
102 | |||
103 | |||
104 | |||
105 | |||
106 | |||
107 | |||
108 | struct { | ||
109 | |||
110 | |||
111 | IMG_BOOL bInUse; | ||
112 | |||
113 | |||
114 | IMG_HANDLE hDevCookieInt; | ||
115 | |||
116 | |||
117 | IMG_UINT32 ui32ShareIndex; | ||
118 | |||
119 | |||
120 | |||
121 | IMG_UINT32 ui32OrigReqAttribs; | ||
122 | IMG_UINT32 ui32OrigReqSize; | ||
123 | IMG_UINT32 ui32OrigReqAlignment; | ||
124 | } sShareMemWorkaround; | ||
100 | } PVRSRV_KERNEL_MEM_INFO; | 125 | } PVRSRV_KERNEL_MEM_INFO; |
101 | 126 | ||
102 | 127 | ||
@@ -120,6 +145,9 @@ typedef struct _PVRSRV_KERNEL_SYNC_INFO_ | |||
120 | 145 | ||
121 | 146 | ||
122 | IMG_HANDLE hResItem; | 147 | IMG_HANDLE hResItem; |
148 | |||
149 | |||
150 | IMG_UINT32 ui32UID; | ||
123 | } PVRSRV_KERNEL_SYNC_INFO; | 151 | } PVRSRV_KERNEL_SYNC_INFO; |
124 | 152 | ||
125 | typedef struct _PVRSRV_DEVICE_SYNC_OBJECT_ | 153 | typedef struct _PVRSRV_DEVICE_SYNC_OBJECT_ |
@@ -141,14 +169,14 @@ typedef struct _PVRSRV_SYNC_OBJECT | |||
141 | 169 | ||
142 | typedef struct _PVRSRV_COMMAND | 170 | typedef struct _PVRSRV_COMMAND |
143 | { | 171 | { |
144 | IMG_SIZE_T ui32CmdSize; | 172 | IMG_SIZE_T uCmdSize; |
145 | IMG_UINT32 ui32DevIndex; | 173 | IMG_UINT32 ui32DevIndex; |
146 | IMG_UINT32 CommandType; | 174 | IMG_UINT32 CommandType; |
147 | IMG_UINT32 ui32DstSyncCount; | 175 | IMG_UINT32 ui32DstSyncCount; |
148 | IMG_UINT32 ui32SrcSyncCount; | 176 | IMG_UINT32 ui32SrcSyncCount; |
149 | PVRSRV_SYNC_OBJECT *psDstSync; | 177 | PVRSRV_SYNC_OBJECT *psDstSync; |
150 | PVRSRV_SYNC_OBJECT *psSrcSync; | 178 | PVRSRV_SYNC_OBJECT *psSrcSync; |
151 | IMG_SIZE_T ui32DataSize; | 179 | IMG_SIZE_T uDataSize; |
152 | IMG_UINT32 ui32ProcessID; | 180 | IMG_UINT32 ui32ProcessID; |
153 | IMG_VOID *pvData; | 181 | IMG_VOID *pvData; |
154 | }PVRSRV_COMMAND, *PPVRSRV_COMMAND; | 182 | }PVRSRV_COMMAND, *PPVRSRV_COMMAND; |
@@ -171,6 +199,75 @@ typedef struct _PVRSRV_QUEUE_INFO_ | |||
171 | struct _PVRSRV_QUEUE_INFO_ *psNextKM; | 199 | struct _PVRSRV_QUEUE_INFO_ *psNextKM; |
172 | }PVRSRV_QUEUE_INFO; | 200 | }PVRSRV_QUEUE_INFO; |
173 | 201 | ||
202 | |||
203 | typedef struct _PVRSRV_HEAP_INFO_KM_ | ||
204 | { | ||
205 | IMG_UINT32 ui32HeapID; | ||
206 | IMG_DEV_VIRTADDR sDevVAddrBase; | ||
207 | |||
208 | IMG_HANDLE hDevMemHeap; | ||
209 | IMG_UINT32 ui32HeapByteSize; | ||
210 | IMG_UINT32 ui32Attribs; | ||
211 | IMG_UINT32 ui32XTileStride; | ||
212 | }PVRSRV_HEAP_INFO_KM; | ||
213 | |||
214 | |||
215 | typedef struct _PVRSRV_EVENTOBJECT_KM_ | ||
216 | { | ||
217 | |||
218 | IMG_CHAR szName[EVENTOBJNAME_MAXLENGTH]; | ||
219 | |||
220 | IMG_HANDLE hOSEventKM; | ||
221 | |||
222 | } PVRSRV_EVENTOBJECT_KM; | ||
223 | |||
224 | |||
225 | typedef struct _PVRSRV_MISC_INFO_KM_ | ||
226 | { | ||
227 | IMG_UINT32 ui32StateRequest; | ||
228 | IMG_UINT32 ui32StatePresent; | ||
229 | |||
230 | |||
231 | IMG_VOID *pvSOCTimerRegisterKM; | ||
232 | IMG_VOID *pvSOCTimerRegisterUM; | ||
233 | IMG_HANDLE hSOCTimerRegisterOSMemHandle; | ||
234 | IMG_HANDLE hSOCTimerRegisterMappingInfo; | ||
235 | |||
236 | |||
237 | IMG_VOID *pvSOCClockGateRegs; | ||
238 | IMG_UINT32 ui32SOCClockGateRegsSize; | ||
239 | |||
240 | |||
241 | IMG_CHAR *pszMemoryStr; | ||
242 | IMG_UINT32 ui32MemoryStrLen; | ||
243 | |||
244 | |||
245 | PVRSRV_EVENTOBJECT_KM sGlobalEventObject; | ||
246 | IMG_HANDLE hOSGlobalEvent; | ||
247 | |||
248 | |||
249 | IMG_UINT32 aui32DDKVersion[4]; | ||
250 | |||
251 | |||
252 | struct | ||
253 | { | ||
254 | |||
255 | IMG_BOOL bDeferOp; | ||
256 | |||
257 | |||
258 | PVRSRV_MISC_INFO_CPUCACHEOP_TYPE eCacheOpType; | ||
259 | |||
260 | PVRSRV_KERNEL_MEM_INFO *psKernelMemInfo; | ||
261 | |||
262 | |||
263 | IMG_VOID *pvBaseVAddr; | ||
264 | |||
265 | |||
266 | IMG_UINT32 ui32Length; | ||
267 | } sCacheOpCtl; | ||
268 | } PVRSRV_MISC_INFO_KM; | ||
269 | |||
270 | |||
174 | typedef PVRSRV_ERROR (*PFN_INSERT_CMD) (PVRSRV_QUEUE_INFO*, | 271 | typedef PVRSRV_ERROR (*PFN_INSERT_CMD) (PVRSRV_QUEUE_INFO*, |
175 | PVRSRV_COMMAND**, | 272 | PVRSRV_COMMAND**, |
176 | IMG_UINT32, | 273 | IMG_UINT32, |
@@ -190,13 +287,17 @@ typedef struct PVRSRV_DEVICECLASS_BUFFER_TAG | |||
190 | IMG_HANDLE hExtDevice; | 287 | IMG_HANDLE hExtDevice; |
191 | IMG_HANDLE hExtBuffer; | 288 | IMG_HANDLE hExtBuffer; |
192 | PVRSRV_KERNEL_SYNC_INFO *psKernelSyncInfo; | 289 | PVRSRV_KERNEL_SYNC_INFO *psKernelSyncInfo; |
193 | 290 | IMG_UINT32 ui32MemMapRefCount; | |
194 | } PVRSRV_DEVICECLASS_BUFFER; | 291 | } PVRSRV_DEVICECLASS_BUFFER; |
195 | 292 | ||
196 | 293 | ||
197 | typedef struct PVRSRV_CLIENT_DEVICECLASS_INFO_TAG | 294 | typedef struct PVRSRV_CLIENT_DEVICECLASS_INFO_TAG |
198 | { | 295 | { |
296 | #if defined (SUPPORT_SID_INTERFACE) | ||
297 | IMG_SID hDeviceKM; | ||
298 | #else | ||
199 | IMG_HANDLE hDeviceKM; | 299 | IMG_HANDLE hDeviceKM; |
300 | #endif | ||
200 | IMG_HANDLE hServices; | 301 | IMG_HANDLE hServices; |
201 | } PVRSRV_CLIENT_DEVICECLASS_INFO; | 302 | } PVRSRV_CLIENT_DEVICECLASS_INFO; |
202 | 303 | ||
@@ -252,7 +353,11 @@ PVRSRV_ERROR PVRSRVQueueCommand(IMG_HANDLE hQueueInfo, | |||
252 | 353 | ||
253 | IMG_IMPORT PVRSRV_ERROR IMG_CALLCONV | 354 | IMG_IMPORT PVRSRV_ERROR IMG_CALLCONV |
254 | PVRSRVGetMMUContextPDDevPAddr(const PVRSRV_CONNECTION *psConnection, | 355 | PVRSRVGetMMUContextPDDevPAddr(const PVRSRV_CONNECTION *psConnection, |
356 | #if defined (SUPPORT_SID_INTERFACE) | ||
357 | IMG_SID hDevMemContext, | ||
358 | #else | ||
255 | IMG_HANDLE hDevMemContext, | 359 | IMG_HANDLE hDevMemContext, |
360 | #endif | ||
256 | IMG_DEV_PHYADDR *sPDDevPAddr); | 361 | IMG_DEV_PHYADDR *sPDDevPAddr); |
257 | 362 | ||
258 | IMG_IMPORT PVRSRV_ERROR IMG_CALLCONV | 363 | IMG_IMPORT PVRSRV_ERROR IMG_CALLCONV |
@@ -271,7 +376,11 @@ PVRSRVUnrefSharedSysMem(const PVRSRV_CONNECTION *psConnection, | |||
271 | 376 | ||
272 | IMG_IMPORT PVRSRV_ERROR IMG_CALLCONV | 377 | IMG_IMPORT PVRSRV_ERROR IMG_CALLCONV |
273 | PVRSRVMapMemInfoMem(const PVRSRV_CONNECTION *psConnection, | 378 | PVRSRVMapMemInfoMem(const PVRSRV_CONNECTION *psConnection, |
379 | #if defined (SUPPORT_SID_INTERFACE) | ||
380 | IMG_SID hKernelMemInfo, | ||
381 | #else | ||
274 | IMG_HANDLE hKernelMemInfo, | 382 | IMG_HANDLE hKernelMemInfo, |
383 | #endif | ||
275 | PVRSRV_CLIENT_MEM_INFO **ppsClientMemInfo); | 384 | PVRSRV_CLIENT_MEM_INFO **ppsClientMemInfo); |
276 | 385 | ||
277 | 386 | ||
diff --git a/drivers/gpu/pvr/sgx/bridged_sgx_bridge.c b/drivers/gpu/pvr/sgx/bridged_sgx_bridge.c index e1b73201a12..c1d6979e3a3 100644 --- a/drivers/gpu/pvr/sgx/bridged_sgx_bridge.c +++ b/drivers/gpu/pvr/sgx/bridged_sgx_bridge.c | |||
@@ -40,6 +40,7 @@ | |||
40 | #include "power.h" | 40 | #include "power.h" |
41 | #include "pvr_bridge_km.h" | 41 | #include "pvr_bridge_km.h" |
42 | #include "sgx_bridge_km.h" | 42 | #include "sgx_bridge_km.h" |
43 | #include "sgx_options.h" | ||
43 | 44 | ||
44 | #if defined(SUPPORT_MSVDX) | 45 | #if defined(SUPPORT_MSVDX) |
45 | #include "msvdx_bridge.h" | 46 | #include "msvdx_bridge.h" |
@@ -61,7 +62,8 @@ SGXGetClientInfoBW(IMG_UINT32 ui32BridgeID, | |||
61 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_SGX_GETCLIENTINFO); | 62 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_SGX_GETCLIENTINFO); |
62 | 63 | ||
63 | psGetClientInfoOUT->eError = | 64 | psGetClientInfoOUT->eError = |
64 | PVRSRVLookupHandle(psPerProc->psHandleBase, &hDevCookieInt, | 65 | PVRSRVLookupHandle(psPerProc->psHandleBase, |
66 | &hDevCookieInt, | ||
65 | psGetClientInfoIN->hDevCookie, | 67 | psGetClientInfoIN->hDevCookie, |
66 | PVRSRV_HANDLE_TYPE_DEV_NODE); | 68 | PVRSRV_HANDLE_TYPE_DEV_NODE); |
67 | if(psGetClientInfoOUT->eError != PVRSRV_OK) | 69 | if(psGetClientInfoOUT->eError != PVRSRV_OK) |
@@ -87,7 +89,8 @@ SGXReleaseClientInfoBW(IMG_UINT32 ui32BridgeID, | |||
87 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_SGX_RELEASECLIENTINFO); | 89 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_SGX_RELEASECLIENTINFO); |
88 | 90 | ||
89 | psRetOUT->eError = | 91 | psRetOUT->eError = |
90 | PVRSRVLookupHandle(psPerProc->psHandleBase, &hDevCookieInt, | 92 | PVRSRVLookupHandle(psPerProc->psHandleBase, |
93 | &hDevCookieInt, | ||
91 | psReleaseClientInfoIN->hDevCookie, | 94 | psReleaseClientInfoIN->hDevCookie, |
92 | PVRSRV_HANDLE_TYPE_DEV_NODE); | 95 | PVRSRV_HANDLE_TYPE_DEV_NODE); |
93 | if(psRetOUT->eError != PVRSRV_OK) | 96 | if(psRetOUT->eError != PVRSRV_OK) |
@@ -99,8 +102,12 @@ SGXReleaseClientInfoBW(IMG_UINT32 ui32BridgeID, | |||
99 | 102 | ||
100 | PVR_ASSERT(psDevInfo->ui32ClientRefCount > 0); | 103 | PVR_ASSERT(psDevInfo->ui32ClientRefCount > 0); |
101 | 104 | ||
102 | psDevInfo->ui32ClientRefCount--; | 105 | |
103 | 106 | if (psDevInfo->ui32ClientRefCount > 0) | |
107 | { | ||
108 | psDevInfo->ui32ClientRefCount--; | ||
109 | } | ||
110 | |||
104 | psRetOUT->eError = PVRSRV_OK; | 111 | psRetOUT->eError = PVRSRV_OK; |
105 | 112 | ||
106 | return 0; | 113 | return 0; |
@@ -114,11 +121,15 @@ SGXGetInternalDevInfoBW(IMG_UINT32 ui32BridgeID, | |||
114 | PVRSRV_PER_PROCESS_DATA *psPerProc) | 121 | PVRSRV_PER_PROCESS_DATA *psPerProc) |
115 | { | 122 | { |
116 | IMG_HANDLE hDevCookieInt; | 123 | IMG_HANDLE hDevCookieInt; |
124 | #if defined (SUPPORT_SID_INTERFACE) | ||
125 | SGX_INTERNAL_DEVINFO_KM sSGXInternalDevInfo; | ||
126 | #endif | ||
117 | 127 | ||
118 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_SGX_GETINTERNALDEVINFO); | 128 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_SGX_GETINTERNALDEVINFO); |
119 | 129 | ||
120 | psSGXGetInternalDevInfoOUT->eError = | 130 | psSGXGetInternalDevInfoOUT->eError = |
121 | PVRSRVLookupHandle(psPerProc->psHandleBase, &hDevCookieInt, | 131 | PVRSRVLookupHandle(psPerProc->psHandleBase, |
132 | &hDevCookieInt, | ||
122 | psSGXGetInternalDevInfoIN->hDevCookie, | 133 | psSGXGetInternalDevInfoIN->hDevCookie, |
123 | PVRSRV_HANDLE_TYPE_DEV_NODE); | 134 | PVRSRV_HANDLE_TYPE_DEV_NODE); |
124 | if(psSGXGetInternalDevInfoOUT->eError != PVRSRV_OK) | 135 | if(psSGXGetInternalDevInfoOUT->eError != PVRSRV_OK) |
@@ -128,13 +139,21 @@ SGXGetInternalDevInfoBW(IMG_UINT32 ui32BridgeID, | |||
128 | 139 | ||
129 | psSGXGetInternalDevInfoOUT->eError = | 140 | psSGXGetInternalDevInfoOUT->eError = |
130 | SGXGetInternalDevInfoKM(hDevCookieInt, | 141 | SGXGetInternalDevInfoKM(hDevCookieInt, |
142 | #if defined (SUPPORT_SID_INTERFACE) | ||
143 | &sSGXInternalDevInfo); | ||
144 | #else | ||
131 | &psSGXGetInternalDevInfoOUT->sSGXInternalDevInfo); | 145 | &psSGXGetInternalDevInfoOUT->sSGXInternalDevInfo); |
146 | #endif | ||
132 | 147 | ||
133 | 148 | ||
134 | psSGXGetInternalDevInfoOUT->eError = | 149 | psSGXGetInternalDevInfoOUT->eError = |
135 | PVRSRVAllocHandle(psPerProc->psHandleBase, | 150 | PVRSRVAllocHandle(psPerProc->psHandleBase, |
136 | &psSGXGetInternalDevInfoOUT->sSGXInternalDevInfo.hHostCtlKernelMemInfoHandle, | 151 | &psSGXGetInternalDevInfoOUT->sSGXInternalDevInfo.hHostCtlKernelMemInfoHandle, |
152 | #if defined (SUPPORT_SID_INTERFACE) | ||
153 | sSGXInternalDevInfo.hHostCtlKernelMemInfoHandle, | ||
154 | #else | ||
137 | psSGXGetInternalDevInfoOUT->sSGXInternalDevInfo.hHostCtlKernelMemInfoHandle, | 155 | psSGXGetInternalDevInfoOUT->sSGXInternalDevInfo.hHostCtlKernelMemInfoHandle, |
156 | #endif | ||
138 | PVRSRV_HANDLE_TYPE_MEM_INFO, | 157 | PVRSRV_HANDLE_TYPE_MEM_INFO, |
139 | PVRSRV_HANDLE_ALLOC_FLAG_SHARED); | 158 | PVRSRV_HANDLE_ALLOC_FLAG_SHARED); |
140 | 159 | ||
@@ -152,7 +171,12 @@ SGXDoKickBW(IMG_UINT32 ui32BridgeID, | |||
152 | IMG_UINT32 i; | 171 | IMG_UINT32 i; |
153 | IMG_INT ret = 0; | 172 | IMG_INT ret = 0; |
154 | IMG_UINT32 ui32NumDstSyncs; | 173 | IMG_UINT32 ui32NumDstSyncs; |
174 | #if defined (SUPPORT_SID_INTERFACE) | ||
175 | SGX_CCB_KICK_KM sCCBKickKM = {{0}}; | ||
176 | IMG_HANDLE ahSyncInfoHandles[16]; | ||
177 | #else | ||
155 | IMG_HANDLE *phKernelSyncInfoHandles = IMG_NULL; | 178 | IMG_HANDLE *phKernelSyncInfoHandles = IMG_NULL; |
179 | #endif | ||
156 | 180 | ||
157 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_SGX_DOKICK); | 181 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_SGX_DOKICK); |
158 | 182 | ||
@@ -169,7 +193,11 @@ SGXDoKickBW(IMG_UINT32 ui32BridgeID, | |||
169 | 193 | ||
170 | psRetOUT->eError = | 194 | psRetOUT->eError = |
171 | PVRSRVLookupHandle(psPerProc->psHandleBase, | 195 | PVRSRVLookupHandle(psPerProc->psHandleBase, |
196 | #if defined (SUPPORT_SID_INTERFACE) | ||
197 | &sCCBKickKM.hCCBKernelMemInfo, | ||
198 | #else | ||
172 | &psDoKickIN->sCCBKick.hCCBKernelMemInfo, | 199 | &psDoKickIN->sCCBKick.hCCBKernelMemInfo, |
200 | #endif | ||
173 | psDoKickIN->sCCBKick.hCCBKernelMemInfo, | 201 | psDoKickIN->sCCBKick.hCCBKernelMemInfo, |
174 | PVRSRV_HANDLE_TYPE_MEM_INFO); | 202 | PVRSRV_HANDLE_TYPE_MEM_INFO); |
175 | 203 | ||
@@ -178,11 +206,24 @@ SGXDoKickBW(IMG_UINT32 ui32BridgeID, | |||
178 | return 0; | 206 | return 0; |
179 | } | 207 | } |
180 | 208 | ||
209 | #if defined (SUPPORT_SID_INTERFACE) | ||
210 | if (psDoKickIN->sCCBKick.ui32NumDstSyncObjects > 16) | ||
211 | { | ||
212 | return 0; | ||
213 | } | ||
214 | |||
215 | if(psDoKickIN->sCCBKick.hTA3DSyncInfo != 0) | ||
216 | #else | ||
181 | if(psDoKickIN->sCCBKick.hTA3DSyncInfo != IMG_NULL) | 217 | if(psDoKickIN->sCCBKick.hTA3DSyncInfo != IMG_NULL) |
218 | #endif | ||
182 | { | 219 | { |
183 | psRetOUT->eError = | 220 | psRetOUT->eError = |
184 | PVRSRVLookupHandle(psPerProc->psHandleBase, | 221 | PVRSRVLookupHandle(psPerProc->psHandleBase, |
222 | #if defined (SUPPORT_SID_INTERFACE) | ||
223 | &sCCBKickKM.hTA3DSyncInfo, | ||
224 | #else | ||
185 | &psDoKickIN->sCCBKick.hTA3DSyncInfo, | 225 | &psDoKickIN->sCCBKick.hTA3DSyncInfo, |
226 | #endif | ||
186 | psDoKickIN->sCCBKick.hTA3DSyncInfo, | 227 | psDoKickIN->sCCBKick.hTA3DSyncInfo, |
187 | PVRSRV_HANDLE_TYPE_SYNC_INFO); | 228 | PVRSRV_HANDLE_TYPE_SYNC_INFO); |
188 | 229 | ||
@@ -192,11 +233,19 @@ SGXDoKickBW(IMG_UINT32 ui32BridgeID, | |||
192 | } | 233 | } |
193 | } | 234 | } |
194 | 235 | ||
236 | #if defined (SUPPORT_SID_INTERFACE) | ||
237 | if(psDoKickIN->sCCBKick.hTASyncInfo != 0) | ||
238 | #else | ||
195 | if(psDoKickIN->sCCBKick.hTASyncInfo != IMG_NULL) | 239 | if(psDoKickIN->sCCBKick.hTASyncInfo != IMG_NULL) |
240 | #endif | ||
196 | { | 241 | { |
197 | psRetOUT->eError = | 242 | psRetOUT->eError = |
198 | PVRSRVLookupHandle(psPerProc->psHandleBase, | 243 | PVRSRVLookupHandle(psPerProc->psHandleBase, |
244 | #if defined (SUPPORT_SID_INTERFACE) | ||
245 | &sCCBKickKM.hTASyncInfo, | ||
246 | #else | ||
199 | &psDoKickIN->sCCBKick.hTASyncInfo, | 247 | &psDoKickIN->sCCBKick.hTASyncInfo, |
248 | #endif | ||
200 | psDoKickIN->sCCBKick.hTASyncInfo, | 249 | psDoKickIN->sCCBKick.hTASyncInfo, |
201 | PVRSRV_HANDLE_TYPE_SYNC_INFO); | 250 | PVRSRV_HANDLE_TYPE_SYNC_INFO); |
202 | 251 | ||
@@ -206,11 +255,33 @@ SGXDoKickBW(IMG_UINT32 ui32BridgeID, | |||
206 | } | 255 | } |
207 | } | 256 | } |
208 | 257 | ||
258 | #if defined(FIX_HW_BRN_31620) | ||
259 | |||
260 | psRetOUT->eError = | ||
261 | PVRSRVLookupHandle(psPerProc->psHandleBase, | ||
262 | &psDoKickIN->sCCBKick.hDevMemContext, | ||
263 | psDoKickIN->sCCBKick.hDevMemContext, | ||
264 | PVRSRV_HANDLE_TYPE_DEV_MEM_CONTEXT); | ||
265 | |||
266 | if(psRetOUT->eError != PVRSRV_OK) | ||
267 | { | ||
268 | return 0; | ||
269 | } | ||
270 | #endif | ||
271 | |||
272 | #if defined (SUPPORT_SID_INTERFACE) | ||
273 | if(psDoKickIN->sCCBKick.h3DSyncInfo != 0) | ||
274 | #else | ||
209 | if(psDoKickIN->sCCBKick.h3DSyncInfo != IMG_NULL) | 275 | if(psDoKickIN->sCCBKick.h3DSyncInfo != IMG_NULL) |
276 | #endif | ||
210 | { | 277 | { |
211 | psRetOUT->eError = | 278 | psRetOUT->eError = |
212 | PVRSRVLookupHandle(psPerProc->psHandleBase, | 279 | PVRSRVLookupHandle(psPerProc->psHandleBase, |
280 | #if defined (SUPPORT_SID_INTERFACE) | ||
281 | &sCCBKickKM.h3DSyncInfo, | ||
282 | #else | ||
213 | &psDoKickIN->sCCBKick.h3DSyncInfo, | 283 | &psDoKickIN->sCCBKick.h3DSyncInfo, |
284 | #endif | ||
214 | psDoKickIN->sCCBKick.h3DSyncInfo, | 285 | psDoKickIN->sCCBKick.h3DSyncInfo, |
215 | PVRSRV_HANDLE_TYPE_SYNC_INFO); | 286 | PVRSRV_HANDLE_TYPE_SYNC_INFO); |
216 | 287 | ||
@@ -229,11 +300,18 @@ SGXDoKickBW(IMG_UINT32 ui32BridgeID, | |||
229 | return 0; | 300 | return 0; |
230 | } | 301 | } |
231 | 302 | ||
303 | #if defined (SUPPORT_SID_INTERFACE) | ||
304 | sCCBKickKM.ui32NumTASrcSyncs = psDoKickIN->sCCBKick.ui32NumTASrcSyncs; | ||
305 | #endif | ||
232 | for(i=0; i<psDoKickIN->sCCBKick.ui32NumTASrcSyncs; i++) | 306 | for(i=0; i<psDoKickIN->sCCBKick.ui32NumTASrcSyncs; i++) |
233 | { | 307 | { |
234 | psRetOUT->eError = | 308 | psRetOUT->eError = |
235 | PVRSRVLookupHandle(psPerProc->psHandleBase, | 309 | PVRSRVLookupHandle(psPerProc->psHandleBase, |
310 | #if defined (SUPPORT_SID_INTERFACE) | ||
311 | &sCCBKickKM.ahTASrcKernelSyncInfo[i], | ||
312 | #else | ||
236 | &psDoKickIN->sCCBKick.ahTASrcKernelSyncInfo[i], | 313 | &psDoKickIN->sCCBKick.ahTASrcKernelSyncInfo[i], |
314 | #endif | ||
237 | psDoKickIN->sCCBKick.ahTASrcKernelSyncInfo[i], | 315 | psDoKickIN->sCCBKick.ahTASrcKernelSyncInfo[i], |
238 | PVRSRV_HANDLE_TYPE_SYNC_INFO); | 316 | PVRSRV_HANDLE_TYPE_SYNC_INFO); |
239 | 317 | ||
@@ -249,11 +327,18 @@ SGXDoKickBW(IMG_UINT32 ui32BridgeID, | |||
249 | return 0; | 327 | return 0; |
250 | } | 328 | } |
251 | 329 | ||
330 | #if defined (SUPPORT_SID_INTERFACE) | ||
331 | sCCBKickKM.ui32NumTADstSyncs = psDoKickIN->sCCBKick.ui32NumTADstSyncs; | ||
332 | #endif | ||
252 | for(i=0; i<psDoKickIN->sCCBKick.ui32NumTADstSyncs; i++) | 333 | for(i=0; i<psDoKickIN->sCCBKick.ui32NumTADstSyncs; i++) |
253 | { | 334 | { |
254 | psRetOUT->eError = | 335 | psRetOUT->eError = |
255 | PVRSRVLookupHandle(psPerProc->psHandleBase, | 336 | PVRSRVLookupHandle(psPerProc->psHandleBase, |
337 | #if defined (SUPPORT_SID_INTERFACE) | ||
338 | &sCCBKickKM.ahTADstKernelSyncInfo[i], | ||
339 | #else | ||
256 | &psDoKickIN->sCCBKick.ahTADstKernelSyncInfo[i], | 340 | &psDoKickIN->sCCBKick.ahTADstKernelSyncInfo[i], |
341 | #endif | ||
257 | psDoKickIN->sCCBKick.ahTADstKernelSyncInfo[i], | 342 | psDoKickIN->sCCBKick.ahTADstKernelSyncInfo[i], |
258 | PVRSRV_HANDLE_TYPE_SYNC_INFO); | 343 | PVRSRV_HANDLE_TYPE_SYNC_INFO); |
259 | 344 | ||
@@ -269,11 +354,18 @@ SGXDoKickBW(IMG_UINT32 ui32BridgeID, | |||
269 | return 0; | 354 | return 0; |
270 | } | 355 | } |
271 | 356 | ||
357 | #if defined (SUPPORT_SID_INTERFACE) | ||
358 | sCCBKickKM.ui32Num3DSrcSyncs = psDoKickIN->sCCBKick.ui32Num3DSrcSyncs; | ||
359 | #endif | ||
272 | for(i=0; i<psDoKickIN->sCCBKick.ui32Num3DSrcSyncs; i++) | 360 | for(i=0; i<psDoKickIN->sCCBKick.ui32Num3DSrcSyncs; i++) |
273 | { | 361 | { |
274 | psRetOUT->eError = | 362 | psRetOUT->eError = |
275 | PVRSRVLookupHandle(psPerProc->psHandleBase, | 363 | PVRSRVLookupHandle(psPerProc->psHandleBase, |
364 | #if defined (SUPPORT_SID_INTERFACE) | ||
365 | &sCCBKickKM.ah3DSrcKernelSyncInfo[i], | ||
366 | #else | ||
276 | &psDoKickIN->sCCBKick.ah3DSrcKernelSyncInfo[i], | 367 | &psDoKickIN->sCCBKick.ah3DSrcKernelSyncInfo[i], |
368 | #endif | ||
277 | psDoKickIN->sCCBKick.ah3DSrcKernelSyncInfo[i], | 369 | psDoKickIN->sCCBKick.ah3DSrcKernelSyncInfo[i], |
278 | PVRSRV_HANDLE_TYPE_SYNC_INFO); | 370 | PVRSRV_HANDLE_TYPE_SYNC_INFO); |
279 | 371 | ||
@@ -289,11 +381,19 @@ SGXDoKickBW(IMG_UINT32 ui32BridgeID, | |||
289 | psRetOUT->eError = PVRSRV_ERROR_INVALID_PARAMS; | 381 | psRetOUT->eError = PVRSRV_ERROR_INVALID_PARAMS; |
290 | return 0; | 382 | return 0; |
291 | } | 383 | } |
384 | |||
385 | #if defined (SUPPORT_SID_INTERFACE) | ||
386 | sCCBKickKM.ui32NumSrcSyncs = psDoKickIN->sCCBKick.ui32NumSrcSyncs; | ||
387 | #endif | ||
292 | for(i=0; i<psDoKickIN->sCCBKick.ui32NumSrcSyncs; i++) | 388 | for(i=0; i<psDoKickIN->sCCBKick.ui32NumSrcSyncs; i++) |
293 | { | 389 | { |
294 | psRetOUT->eError = | 390 | psRetOUT->eError = |
295 | PVRSRVLookupHandle(psPerProc->psHandleBase, | 391 | PVRSRVLookupHandle(psPerProc->psHandleBase, |
392 | #if defined (SUPPORT_SID_INTERFACE) | ||
393 | &sCCBKickKM.ahSrcKernelSyncInfo[i], | ||
394 | #else | ||
296 | &psDoKickIN->sCCBKick.ahSrcKernelSyncInfo[i], | 395 | &psDoKickIN->sCCBKick.ahSrcKernelSyncInfo[i], |
396 | #endif | ||
297 | psDoKickIN->sCCBKick.ahSrcKernelSyncInfo[i], | 397 | psDoKickIN->sCCBKick.ahSrcKernelSyncInfo[i], |
298 | PVRSRV_HANDLE_TYPE_SYNC_INFO); | 398 | PVRSRV_HANDLE_TYPE_SYNC_INFO); |
299 | 399 | ||
@@ -314,12 +414,25 @@ SGXDoKickBW(IMG_UINT32 ui32BridgeID, | |||
314 | psRetOUT->eError = | 414 | psRetOUT->eError = |
315 | #if defined(SUPPORT_SGX_NEW_STATUS_VALS) | 415 | #if defined(SUPPORT_SGX_NEW_STATUS_VALS) |
316 | PVRSRVLookupHandle(psPerProc->psHandleBase, | 416 | PVRSRVLookupHandle(psPerProc->psHandleBase, |
417 | #if defined (SUPPORT_SID_INTERFACE) | ||
418 | &sCCBKickKM.asTAStatusUpdate[i].hKernelMemInfo, | ||
419 | #else | ||
317 | &psDoKickIN->sCCBKick.asTAStatusUpdate[i].hKernelMemInfo, | 420 | &psDoKickIN->sCCBKick.asTAStatusUpdate[i].hKernelMemInfo, |
421 | #endif | ||
318 | psDoKickIN->sCCBKick.asTAStatusUpdate[i].hKernelMemInfo, | 422 | psDoKickIN->sCCBKick.asTAStatusUpdate[i].hKernelMemInfo, |
319 | PVRSRV_HANDLE_TYPE_MEM_INFO); | 423 | PVRSRV_HANDLE_TYPE_MEM_INFO); |
424 | |||
425 | #if defined (SUPPORT_SID_INTERFACE) | ||
426 | sCCBKickKM.asTAStatusUpdate[i].sCtlStatus = psDoKickIN->sCCBKick.asTAStatusUpdate[i].sCtlStatus; | ||
427 | #endif | ||
428 | |||
320 | #else | 429 | #else |
321 | PVRSRVLookupHandle(psPerProc->psHandleBase, | 430 | PVRSRVLookupHandle(psPerProc->psHandleBase, |
431 | #if defined (SUPPORT_SID_INTERFACE) | ||
432 | &sCCBKickKM.ahTAStatusSyncInfo[i], | ||
433 | #else | ||
322 | &psDoKickIN->sCCBKick.ahTAStatusSyncInfo[i], | 434 | &psDoKickIN->sCCBKick.ahTAStatusSyncInfo[i], |
435 | #endif | ||
323 | psDoKickIN->sCCBKick.ahTAStatusSyncInfo[i], | 436 | psDoKickIN->sCCBKick.ahTAStatusSyncInfo[i], |
324 | PVRSRV_HANDLE_TYPE_SYNC_INFO); | 437 | PVRSRV_HANDLE_TYPE_SYNC_INFO); |
325 | #endif | 438 | #endif |
@@ -339,12 +452,24 @@ SGXDoKickBW(IMG_UINT32 ui32BridgeID, | |||
339 | psRetOUT->eError = | 452 | psRetOUT->eError = |
340 | #if defined(SUPPORT_SGX_NEW_STATUS_VALS) | 453 | #if defined(SUPPORT_SGX_NEW_STATUS_VALS) |
341 | PVRSRVLookupHandle(psPerProc->psHandleBase, | 454 | PVRSRVLookupHandle(psPerProc->psHandleBase, |
455 | #if defined (SUPPORT_SID_INTERFACE) | ||
456 | &sCCBKickKM.as3DStatusUpdate[i].hKernelMemInfo, | ||
457 | #else | ||
342 | &psDoKickIN->sCCBKick.as3DStatusUpdate[i].hKernelMemInfo, | 458 | &psDoKickIN->sCCBKick.as3DStatusUpdate[i].hKernelMemInfo, |
459 | #endif | ||
343 | psDoKickIN->sCCBKick.as3DStatusUpdate[i].hKernelMemInfo, | 460 | psDoKickIN->sCCBKick.as3DStatusUpdate[i].hKernelMemInfo, |
344 | PVRSRV_HANDLE_TYPE_MEM_INFO); | 461 | PVRSRV_HANDLE_TYPE_MEM_INFO); |
462 | |||
463 | #if defined (SUPPORT_SID_INTERFACE) | ||
464 | sCCBKickKM.as3DStatusUpdate[i].sCtlStatus = psDoKickIN->sCCBKick.as3DStatusUpdate[i].sCtlStatus; | ||
465 | #endif | ||
345 | #else | 466 | #else |
346 | PVRSRVLookupHandle(psPerProc->psHandleBase, | 467 | PVRSRVLookupHandle(psPerProc->psHandleBase, |
468 | #if defined (SUPPORT_SID_INTERFACE) | ||
469 | &sCCBKickKM.ah3DStatusSyncInfo[i], | ||
470 | #else | ||
347 | &psDoKickIN->sCCBKick.ah3DStatusSyncInfo[i], | 471 | &psDoKickIN->sCCBKick.ah3DStatusSyncInfo[i], |
472 | #endif | ||
348 | psDoKickIN->sCCBKick.ah3DStatusSyncInfo[i], | 473 | psDoKickIN->sCCBKick.ah3DStatusSyncInfo[i], |
349 | PVRSRV_HANDLE_TYPE_SYNC_INFO); | 474 | PVRSRV_HANDLE_TYPE_SYNC_INFO); |
350 | #endif | 475 | #endif |
@@ -378,6 +503,9 @@ SGXDoKickBW(IMG_UINT32 ui32BridgeID, | |||
378 | return 0; | 503 | return 0; |
379 | } | 504 | } |
380 | 505 | ||
506 | #if defined (SUPPORT_SID_INTERFACE) | ||
507 | sCCBKickKM.pahDstSyncHandles = phKernelSyncInfoHandles; | ||
508 | #else | ||
381 | if(CopyFromUserWrapper(psPerProc, | 509 | if(CopyFromUserWrapper(psPerProc, |
382 | ui32BridgeID, | 510 | ui32BridgeID, |
383 | phKernelSyncInfoHandles, | 511 | phKernelSyncInfoHandles, |
@@ -390,12 +518,17 @@ SGXDoKickBW(IMG_UINT32 ui32BridgeID, | |||
390 | 518 | ||
391 | 519 | ||
392 | psDoKickIN->sCCBKick.pahDstSyncHandles = phKernelSyncInfoHandles; | 520 | psDoKickIN->sCCBKick.pahDstSyncHandles = phKernelSyncInfoHandles; |
521 | #endif | ||
393 | 522 | ||
394 | for( i = 0; i < ui32NumDstSyncs; i++) | 523 | for( i = 0; i < ui32NumDstSyncs; i++) |
395 | { | 524 | { |
396 | psRetOUT->eError = | 525 | psRetOUT->eError = |
397 | PVRSRVLookupHandle(psPerProc->psHandleBase, | 526 | PVRSRVLookupHandle(psPerProc->psHandleBase, |
527 | #if defined (SUPPORT_SID_INTERFACE) | ||
528 | &sCCBKickKM.pahDstSyncHandles[i], | ||
529 | #else | ||
398 | &psDoKickIN->sCCBKick.pahDstSyncHandles[i], | 530 | &psDoKickIN->sCCBKick.pahDstSyncHandles[i], |
531 | #endif | ||
399 | psDoKickIN->sCCBKick.pahDstSyncHandles[i], | 532 | psDoKickIN->sCCBKick.pahDstSyncHandles[i], |
400 | PVRSRV_HANDLE_TYPE_SYNC_INFO); | 533 | PVRSRV_HANDLE_TYPE_SYNC_INFO); |
401 | 534 | ||
@@ -408,7 +541,11 @@ SGXDoKickBW(IMG_UINT32 ui32BridgeID, | |||
408 | 541 | ||
409 | psRetOUT->eError = | 542 | psRetOUT->eError = |
410 | PVRSRVLookupHandle(psPerProc->psHandleBase, | 543 | PVRSRVLookupHandle(psPerProc->psHandleBase, |
544 | #if defined (SUPPORT_SID_INTERFACE) | ||
545 | &sCCBKickKM.hKernelHWSyncListMemInfo, | ||
546 | #else | ||
411 | &psDoKickIN->sCCBKick.hKernelHWSyncListMemInfo, | 547 | &psDoKickIN->sCCBKick.hKernelHWSyncListMemInfo, |
548 | #endif | ||
412 | psDoKickIN->sCCBKick.hKernelHWSyncListMemInfo, | 549 | psDoKickIN->sCCBKick.hKernelHWSyncListMemInfo, |
413 | PVRSRV_HANDLE_TYPE_MEM_INFO); | 550 | PVRSRV_HANDLE_TYPE_MEM_INFO); |
414 | 551 | ||
@@ -418,9 +555,34 @@ SGXDoKickBW(IMG_UINT32 ui32BridgeID, | |||
418 | } | 555 | } |
419 | } | 556 | } |
420 | 557 | ||
558 | #if defined (SUPPORT_SID_INTERFACE) | ||
559 | OSMemCopy(&sCCBKickKM.sCommand, &psDoKickIN->sCCBKick.sCommand, sizeof(sCCBKickKM.sCommand)); | ||
560 | |||
561 | sCCBKickKM.ui32NumDstSyncObjects = psDoKickIN->sCCBKick.ui32NumDstSyncObjects; | ||
562 | sCCBKickKM.ui32NumTAStatusVals = psDoKickIN->sCCBKick.ui32NumTAStatusVals; | ||
563 | sCCBKickKM.ui32Num3DStatusVals = psDoKickIN->sCCBKick.ui32Num3DStatusVals; | ||
564 | sCCBKickKM.bFirstKickOrResume = psDoKickIN->sCCBKick.bFirstKickOrResume; | ||
565 | sCCBKickKM.ui32CCBOffset = psDoKickIN->sCCBKick.ui32CCBOffset; | ||
566 | sCCBKickKM.bTADependency = psDoKickIN->sCCBKick.bTADependency; | ||
567 | |||
568 | #if (defined(NO_HARDWARE) || defined(PDUMP)) | ||
569 | sCCBKickKM.bTerminateOrAbort = psDoKickIN->sCCBKick.bTerminateOrAbort; | ||
570 | #endif | ||
571 | #if defined(PDUMP) | ||
572 | sCCBKickKM.ui32CCBDumpWOff = psDoKickIN->sCCBKick.ui32CCBDumpWOff; | ||
573 | #endif | ||
574 | |||
575 | #if defined(NO_HARDWARE) | ||
576 | sCCBKickKM.ui32WriteOpsPendingVal = psDoKickIN->sCCBKick.ui32WriteOpsPendingVal; | ||
577 | #endif | ||
578 | #endif | ||
421 | psRetOUT->eError = | 579 | psRetOUT->eError = |
422 | SGXDoKickKM(hDevCookieInt, | 580 | SGXDoKickKM(hDevCookieInt, |
581 | #if defined (SUPPORT_SID_INTERFACE) | ||
582 | &sCCBKickKM); | ||
583 | #else | ||
423 | &psDoKickIN->sCCBKick); | 584 | &psDoKickIN->sCCBKick); |
585 | #endif | ||
424 | 586 | ||
425 | PVRSRV_BRIDGE_SGX_DOKICK_RETURN_RESULT: | 587 | PVRSRV_BRIDGE_SGX_DOKICK_RETURN_RESULT: |
426 | 588 | ||
@@ -472,6 +634,9 @@ SGXSubmitTransferBW(IMG_UINT32 ui32BridgeID, | |||
472 | { | 634 | { |
473 | IMG_HANDLE hDevCookieInt; | 635 | IMG_HANDLE hDevCookieInt; |
474 | PVRSRV_TRANSFER_SGX_KICK *psKick; | 636 | PVRSRV_TRANSFER_SGX_KICK *psKick; |
637 | #if defined (SUPPORT_SID_INTERFACE) | ||
638 | PVRSRV_TRANSFER_SGX_KICK_KM sKickKM = {0}; | ||
639 | #endif | ||
475 | IMG_UINT32 i; | 640 | IMG_UINT32 i; |
476 | 641 | ||
477 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_SGX_SUBMITTRANSFER); | 642 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_SGX_SUBMITTRANSFER); |
@@ -479,6 +644,20 @@ SGXSubmitTransferBW(IMG_UINT32 ui32BridgeID, | |||
479 | 644 | ||
480 | psKick = &psSubmitTransferIN->sKick; | 645 | psKick = &psSubmitTransferIN->sKick; |
481 | 646 | ||
647 | #if defined(FIX_HW_BRN_31620) | ||
648 | |||
649 | psRetOUT->eError = | ||
650 | PVRSRVLookupHandle(psPerProc->psHandleBase, | ||
651 | &psKick->hDevMemContext, | ||
652 | psKick->hDevMemContext, | ||
653 | PVRSRV_HANDLE_TYPE_DEV_MEM_CONTEXT); | ||
654 | |||
655 | if(psRetOUT->eError != PVRSRV_OK) | ||
656 | { | ||
657 | return 0; | ||
658 | } | ||
659 | #endif | ||
660 | |||
482 | psRetOUT->eError = | 661 | psRetOUT->eError = |
483 | PVRSRVLookupHandle(psPerProc->psHandleBase, | 662 | PVRSRVLookupHandle(psPerProc->psHandleBase, |
484 | &hDevCookieInt, | 663 | &hDevCookieInt, |
@@ -491,7 +670,11 @@ SGXSubmitTransferBW(IMG_UINT32 ui32BridgeID, | |||
491 | 670 | ||
492 | psRetOUT->eError = | 671 | psRetOUT->eError = |
493 | PVRSRVLookupHandle(psPerProc->psHandleBase, | 672 | PVRSRVLookupHandle(psPerProc->psHandleBase, |
673 | #if defined (SUPPORT_SID_INTERFACE) | ||
674 | &sKickKM.hCCBMemInfo, | ||
675 | #else | ||
494 | &psKick->hCCBMemInfo, | 676 | &psKick->hCCBMemInfo, |
677 | #endif | ||
495 | psKick->hCCBMemInfo, | 678 | psKick->hCCBMemInfo, |
496 | PVRSRV_HANDLE_TYPE_MEM_INFO); | 679 | PVRSRV_HANDLE_TYPE_MEM_INFO); |
497 | if(psRetOUT->eError != PVRSRV_OK) | 680 | if(psRetOUT->eError != PVRSRV_OK) |
@@ -503,7 +686,11 @@ SGXSubmitTransferBW(IMG_UINT32 ui32BridgeID, | |||
503 | { | 686 | { |
504 | psRetOUT->eError = | 687 | psRetOUT->eError = |
505 | PVRSRVLookupHandle(psPerProc->psHandleBase, | 688 | PVRSRVLookupHandle(psPerProc->psHandleBase, |
689 | #if defined (SUPPORT_SID_INTERFACE) | ||
690 | &sKickKM.hTASyncInfo, | ||
691 | #else | ||
506 | &psKick->hTASyncInfo, | 692 | &psKick->hTASyncInfo, |
693 | #endif | ||
507 | psKick->hTASyncInfo, | 694 | psKick->hTASyncInfo, |
508 | PVRSRV_HANDLE_TYPE_SYNC_INFO); | 695 | PVRSRV_HANDLE_TYPE_SYNC_INFO); |
509 | if(psRetOUT->eError != PVRSRV_OK) | 696 | if(psRetOUT->eError != PVRSRV_OK) |
@@ -516,7 +703,11 @@ SGXSubmitTransferBW(IMG_UINT32 ui32BridgeID, | |||
516 | { | 703 | { |
517 | psRetOUT->eError = | 704 | psRetOUT->eError = |
518 | PVRSRVLookupHandle(psPerProc->psHandleBase, | 705 | PVRSRVLookupHandle(psPerProc->psHandleBase, |
706 | #if defined (SUPPORT_SID_INTERFACE) | ||
707 | &sKickKM.h3DSyncInfo, | ||
708 | #else | ||
519 | &psKick->h3DSyncInfo, | 709 | &psKick->h3DSyncInfo, |
710 | #endif | ||
520 | psKick->h3DSyncInfo, | 711 | psKick->h3DSyncInfo, |
521 | PVRSRV_HANDLE_TYPE_SYNC_INFO); | 712 | PVRSRV_HANDLE_TYPE_SYNC_INFO); |
522 | if(psRetOUT->eError != PVRSRV_OK) | 713 | if(psRetOUT->eError != PVRSRV_OK) |
@@ -534,7 +725,11 @@ SGXSubmitTransferBW(IMG_UINT32 ui32BridgeID, | |||
534 | { | 725 | { |
535 | psRetOUT->eError = | 726 | psRetOUT->eError = |
536 | PVRSRVLookupHandle(psPerProc->psHandleBase, | 727 | PVRSRVLookupHandle(psPerProc->psHandleBase, |
728 | #if defined (SUPPORT_SID_INTERFACE) | ||
729 | &sKickKM.ahSrcSyncInfo[i], | ||
730 | #else | ||
537 | &psKick->ahSrcSyncInfo[i], | 731 | &psKick->ahSrcSyncInfo[i], |
732 | #endif | ||
538 | psKick->ahSrcSyncInfo[i], | 733 | psKick->ahSrcSyncInfo[i], |
539 | PVRSRV_HANDLE_TYPE_SYNC_INFO); | 734 | PVRSRV_HANDLE_TYPE_SYNC_INFO); |
540 | if(psRetOUT->eError != PVRSRV_OK) | 735 | if(psRetOUT->eError != PVRSRV_OK) |
@@ -552,7 +747,11 @@ SGXSubmitTransferBW(IMG_UINT32 ui32BridgeID, | |||
552 | { | 747 | { |
553 | psRetOUT->eError = | 748 | psRetOUT->eError = |
554 | PVRSRVLookupHandle(psPerProc->psHandleBase, | 749 | PVRSRVLookupHandle(psPerProc->psHandleBase, |
750 | #if defined (SUPPORT_SID_INTERFACE) | ||
751 | &sKickKM.ahDstSyncInfo[i], | ||
752 | #else | ||
555 | &psKick->ahDstSyncInfo[i], | 753 | &psKick->ahDstSyncInfo[i], |
754 | #endif | ||
556 | psKick->ahDstSyncInfo[i], | 755 | psKick->ahDstSyncInfo[i], |
557 | PVRSRV_HANDLE_TYPE_SYNC_INFO); | 756 | PVRSRV_HANDLE_TYPE_SYNC_INFO); |
558 | if(psRetOUT->eError != PVRSRV_OK) | 757 | if(psRetOUT->eError != PVRSRV_OK) |
@@ -561,7 +760,21 @@ SGXSubmitTransferBW(IMG_UINT32 ui32BridgeID, | |||
561 | } | 760 | } |
562 | } | 761 | } |
563 | 762 | ||
763 | #if defined (SUPPORT_SID_INTERFACE) | ||
764 | sKickKM.sHWTransferContextDevVAddr = psKick->sHWTransferContextDevVAddr; | ||
765 | sKickKM.ui32SharedCmdCCBOffset = psKick->ui32SharedCmdCCBOffset; | ||
766 | sKickKM.ui32NumSrcSync = psKick->ui32NumSrcSync; | ||
767 | sKickKM.ui32NumDstSync = psKick->ui32NumDstSync; | ||
768 | sKickKM.ui32Flags = psKick->ui32Flags; | ||
769 | sKickKM.ui32PDumpFlags = psKick->ui32PDumpFlags; | ||
770 | #if defined(PDUMP) | ||
771 | sKickKM.ui32CCBDumpWOff = psKick->ui32CCBDumpWOff; | ||
772 | #endif | ||
773 | |||
774 | psRetOUT->eError = SGXSubmitTransferKM(hDevCookieInt, &sKickKM); | ||
775 | #else | ||
564 | psRetOUT->eError = SGXSubmitTransferKM(hDevCookieInt, psKick); | 776 | psRetOUT->eError = SGXSubmitTransferKM(hDevCookieInt, psKick); |
777 | #endif | ||
565 | 778 | ||
566 | return 0; | 779 | return 0; |
567 | } | 780 | } |
@@ -575,12 +788,32 @@ SGXSubmit2DBW(IMG_UINT32 ui32BridgeID, | |||
575 | PVRSRV_PER_PROCESS_DATA *psPerProc) | 788 | PVRSRV_PER_PROCESS_DATA *psPerProc) |
576 | { | 789 | { |
577 | IMG_HANDLE hDevCookieInt; | 790 | IMG_HANDLE hDevCookieInt; |
578 | PVRSRV_2D_SGX_KICK *psKick; | 791 | PVRSRV_2D_SGX_KICK *psKick; |
792 | #if defined (SUPPORT_SID_INTERFACE) | ||
793 | PVRSRV_2D_SGX_KICK_KM sKickKM; | ||
794 | #endif | ||
579 | IMG_UINT32 i; | 795 | IMG_UINT32 i; |
580 | 796 | ||
581 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_SGX_SUBMIT2D); | 797 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_SGX_SUBMIT2D); |
582 | PVR_UNREFERENCED_PARAMETER(ui32BridgeID); | 798 | PVR_UNREFERENCED_PARAMETER(ui32BridgeID); |
583 | 799 | ||
800 | psKick = &psSubmit2DIN->sKick; | ||
801 | |||
802 | #if defined(FIX_HW_BRN_31620) | ||
803 | |||
804 | psRetOUT->eError = | ||
805 | PVRSRVLookupHandle(psPerProc->psHandleBase, | ||
806 | &psKick->hDevMemContext, | ||
807 | psKick->hDevMemContext, | ||
808 | PVRSRV_HANDLE_TYPE_DEV_MEM_CONTEXT); | ||
809 | |||
810 | if(psRetOUT->eError != PVRSRV_OK) | ||
811 | { | ||
812 | return 0; | ||
813 | } | ||
814 | #endif | ||
815 | |||
816 | |||
584 | psRetOUT->eError = | 817 | psRetOUT->eError = |
585 | PVRSRVLookupHandle(psPerProc->psHandleBase, | 818 | PVRSRVLookupHandle(psPerProc->psHandleBase, |
586 | &hDevCookieInt, | 819 | &hDevCookieInt, |
@@ -592,11 +825,14 @@ SGXSubmit2DBW(IMG_UINT32 ui32BridgeID, | |||
592 | return 0; | 825 | return 0; |
593 | } | 826 | } |
594 | 827 | ||
595 | psKick = &psSubmit2DIN->sKick; | ||
596 | 828 | ||
597 | psRetOUT->eError = | 829 | psRetOUT->eError = |
598 | PVRSRVLookupHandle(psPerProc->psHandleBase, | 830 | PVRSRVLookupHandle(psPerProc->psHandleBase, |
831 | #if defined (SUPPORT_SID_INTERFACE) | ||
832 | &sKickKM.hCCBMemInfo, | ||
833 | #else | ||
599 | &psKick->hCCBMemInfo, | 834 | &psKick->hCCBMemInfo, |
835 | #endif | ||
600 | psKick->hCCBMemInfo, | 836 | psKick->hCCBMemInfo, |
601 | PVRSRV_HANDLE_TYPE_MEM_INFO); | 837 | PVRSRV_HANDLE_TYPE_MEM_INFO); |
602 | if(psRetOUT->eError != PVRSRV_OK) | 838 | if(psRetOUT->eError != PVRSRV_OK) |
@@ -604,11 +840,19 @@ SGXSubmit2DBW(IMG_UINT32 ui32BridgeID, | |||
604 | return 0; | 840 | return 0; |
605 | } | 841 | } |
606 | 842 | ||
843 | #if defined (SUPPORT_SID_INTERFACE) | ||
844 | if (psKick->hTASyncInfo != 0) | ||
845 | #else | ||
607 | if (psKick->hTASyncInfo != IMG_NULL) | 846 | if (psKick->hTASyncInfo != IMG_NULL) |
847 | #endif | ||
608 | { | 848 | { |
609 | psRetOUT->eError = | 849 | psRetOUT->eError = |
610 | PVRSRVLookupHandle(psPerProc->psHandleBase, | 850 | PVRSRVLookupHandle(psPerProc->psHandleBase, |
851 | #if defined (SUPPORT_SID_INTERFACE) | ||
852 | &sKickKM.hTASyncInfo, | ||
853 | #else | ||
611 | &psKick->hTASyncInfo, | 854 | &psKick->hTASyncInfo, |
855 | #endif | ||
612 | psKick->hTASyncInfo, | 856 | psKick->hTASyncInfo, |
613 | PVRSRV_HANDLE_TYPE_SYNC_INFO); | 857 | PVRSRV_HANDLE_TYPE_SYNC_INFO); |
614 | if(psRetOUT->eError != PVRSRV_OK) | 858 | if(psRetOUT->eError != PVRSRV_OK) |
@@ -616,12 +860,22 @@ SGXSubmit2DBW(IMG_UINT32 ui32BridgeID, | |||
616 | return 0; | 860 | return 0; |
617 | } | 861 | } |
618 | } | 862 | } |
863 | #if defined (SUPPORT_SID_INTERFACE) | ||
864 | else | ||
865 | { | ||
866 | sKickKM.hTASyncInfo = IMG_NULL; | ||
867 | } | ||
868 | #endif | ||
619 | 869 | ||
620 | if (psKick->h3DSyncInfo != IMG_NULL) | 870 | if (psKick->h3DSyncInfo != IMG_NULL) |
621 | { | 871 | { |
622 | psRetOUT->eError = | 872 | psRetOUT->eError = |
623 | PVRSRVLookupHandle(psPerProc->psHandleBase, | 873 | PVRSRVLookupHandle(psPerProc->psHandleBase, |
874 | #if defined (SUPPORT_SID_INTERFACE) | ||
875 | &sKickKM.h3DSyncInfo, | ||
876 | #else | ||
624 | &psKick->h3DSyncInfo, | 877 | &psKick->h3DSyncInfo, |
878 | #endif | ||
625 | psKick->h3DSyncInfo, | 879 | psKick->h3DSyncInfo, |
626 | PVRSRV_HANDLE_TYPE_SYNC_INFO); | 880 | PVRSRV_HANDLE_TYPE_SYNC_INFO); |
627 | if(psRetOUT->eError != PVRSRV_OK) | 881 | if(psRetOUT->eError != PVRSRV_OK) |
@@ -629,12 +883,39 @@ SGXSubmit2DBW(IMG_UINT32 ui32BridgeID, | |||
629 | return 0; | 883 | return 0; |
630 | } | 884 | } |
631 | } | 885 | } |
886 | #if defined (SUPPORT_SID_INTERFACE) | ||
887 | else | ||
888 | { | ||
889 | sKickKM.h3DSyncInfo = IMG_NULL; | ||
890 | } | ||
891 | #endif | ||
632 | 892 | ||
633 | if (psKick->ui32NumSrcSync > SGX_MAX_2D_SRC_SYNC_OPS) | 893 | if (psKick->ui32NumSrcSync > SGX_MAX_2D_SRC_SYNC_OPS) |
634 | { | 894 | { |
635 | psRetOUT->eError = PVRSRV_ERROR_INVALID_PARAMS; | 895 | psRetOUT->eError = PVRSRV_ERROR_INVALID_PARAMS; |
636 | return 0; | 896 | return 0; |
637 | } | 897 | } |
898 | #if defined (SUPPORT_SID_INTERFACE) | ||
899 | for (i = 0; i < SGX_MAX_2D_SRC_SYNC_OPS; i++) | ||
900 | { | ||
901 | if (i < psKick->ui32NumSrcSync) | ||
902 | { | ||
903 | psRetOUT->eError = | ||
904 | PVRSRVLookupHandle(psPerProc->psHandleBase, | ||
905 | &sKickKM.ahSrcSyncInfo[i], | ||
906 | psKick->ahSrcSyncInfo[i], | ||
907 | PVRSRV_HANDLE_TYPE_SYNC_INFO); | ||
908 | if(psRetOUT->eError != PVRSRV_OK) | ||
909 | { | ||
910 | return 0; | ||
911 | } | ||
912 | } | ||
913 | else | ||
914 | { | ||
915 | sKickKM.ahSrcSyncInfo[i] = IMG_NULL; | ||
916 | } | ||
917 | } | ||
918 | #else | ||
638 | for (i = 0; i < psKick->ui32NumSrcSync; i++) | 919 | for (i = 0; i < psKick->ui32NumSrcSync; i++) |
639 | { | 920 | { |
640 | psRetOUT->eError = | 921 | psRetOUT->eError = |
@@ -647,12 +928,17 @@ SGXSubmit2DBW(IMG_UINT32 ui32BridgeID, | |||
647 | return 0; | 928 | return 0; |
648 | } | 929 | } |
649 | } | 930 | } |
931 | #endif | ||
650 | 932 | ||
651 | if (psKick->hDstSyncInfo != IMG_NULL) | 933 | if (psKick->hDstSyncInfo != IMG_NULL) |
652 | { | 934 | { |
653 | psRetOUT->eError = | 935 | psRetOUT->eError = |
654 | PVRSRVLookupHandle(psPerProc->psHandleBase, | 936 | PVRSRVLookupHandle(psPerProc->psHandleBase, |
937 | #if defined (SUPPORT_SID_INTERFACE) | ||
938 | &sKickKM.hDstSyncInfo, | ||
939 | #else | ||
655 | &psKick->hDstSyncInfo, | 940 | &psKick->hDstSyncInfo, |
941 | #endif | ||
656 | psKick->hDstSyncInfo, | 942 | psKick->hDstSyncInfo, |
657 | PVRSRV_HANDLE_TYPE_SYNC_INFO); | 943 | PVRSRV_HANDLE_TYPE_SYNC_INFO); |
658 | if(psRetOUT->eError != PVRSRV_OK) | 944 | if(psRetOUT->eError != PVRSRV_OK) |
@@ -660,9 +946,28 @@ SGXSubmit2DBW(IMG_UINT32 ui32BridgeID, | |||
660 | return 0; | 946 | return 0; |
661 | } | 947 | } |
662 | } | 948 | } |
949 | #if defined (SUPPORT_SID_INTERFACE) | ||
950 | else | ||
951 | { | ||
952 | sKickKM.hDstSyncInfo = IMG_NULL; | ||
953 | } | ||
954 | |||
955 | |||
956 | sKickKM.ui32SharedCmdCCBOffset = psKick->ui32SharedCmdCCBOffset; | ||
957 | sKickKM.ui32NumSrcSync = psKick->ui32NumSrcSync; | ||
958 | sKickKM.ui32PDumpFlags = psKick->ui32PDumpFlags; | ||
959 | sKickKM.sHW2DContextDevVAddr = psKick->sHW2DContextDevVAddr; | ||
960 | #if defined(PDUMP) | ||
961 | sKickKM.ui32CCBDumpWOff = psKick->ui32CCBDumpWOff; | ||
962 | #endif | ||
963 | #endif | ||
663 | 964 | ||
664 | psRetOUT->eError = | 965 | psRetOUT->eError = |
966 | #if defined (SUPPORT_SID_INTERFACE) | ||
967 | SGXSubmit2DKM(hDevCookieInt, &sKickKM); | ||
968 | #else | ||
665 | SGXSubmit2DKM(hDevCookieInt, psKick); | 969 | SGXSubmit2DKM(hDevCookieInt, psKick); |
970 | #endif | ||
666 | 971 | ||
667 | return 0; | 972 | return 0; |
668 | } | 973 | } |
@@ -767,7 +1072,7 @@ SGXReadHWPerfCBBW(IMG_UINT32 ui32BridgeID, | |||
767 | 1072 | ||
768 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_SGX_READ_HWPERF_CB); | 1073 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_SGX_READ_HWPERF_CB); |
769 | 1074 | ||
770 | psSGXReadHWPerfCBOUT->eError = PVRSRVLookupHandle(psPerProc->psHandleBase, | 1075 | psSGXReadHWPerfCBOUT->eError =PVRSRVLookupHandle(psPerProc->psHandleBase, |
771 | &hDevCookieInt, | 1076 | &hDevCookieInt, |
772 | psSGXReadHWPerfCBIN->hDevCookie, | 1077 | psSGXReadHWPerfCBIN->hDevCookie, |
773 | PVRSRV_HANDLE_TYPE_DEV_NODE); | 1078 | PVRSRV_HANDLE_TYPE_DEV_NODE); |
@@ -814,31 +1119,41 @@ SGXReadHWPerfCBBW(IMG_UINT32 ui32BridgeID, | |||
814 | static IMG_INT | 1119 | static IMG_INT |
815 | SGXDevInitPart2BW(IMG_UINT32 ui32BridgeID, | 1120 | SGXDevInitPart2BW(IMG_UINT32 ui32BridgeID, |
816 | PVRSRV_BRIDGE_IN_SGXDEVINITPART2 *psSGXDevInitPart2IN, | 1121 | PVRSRV_BRIDGE_IN_SGXDEVINITPART2 *psSGXDevInitPart2IN, |
817 | PVRSRV_BRIDGE_RETURN *psRetOUT, | 1122 | PVRSRV_BRIDGE_OUT_SGXDEVINITPART2 *psSGXDevInitPart2OUT, |
818 | PVRSRV_PER_PROCESS_DATA *psPerProc) | 1123 | PVRSRV_PER_PROCESS_DATA *psPerProc) |
819 | { | 1124 | { |
820 | IMG_HANDLE hDevCookieInt; | 1125 | IMG_HANDLE hDevCookieInt; |
1126 | #if defined (SUPPORT_SID_INTERFACE) | ||
1127 | PVRSRV_ERROR eError = PVRSRV_OK; | ||
1128 | #else | ||
821 | PVRSRV_ERROR eError; | 1129 | PVRSRV_ERROR eError; |
1130 | #endif | ||
822 | IMG_BOOL bDissociateFailed = IMG_FALSE; | 1131 | IMG_BOOL bDissociateFailed = IMG_FALSE; |
823 | IMG_BOOL bLookupFailed = IMG_FALSE; | 1132 | IMG_BOOL bLookupFailed = IMG_FALSE; |
824 | IMG_BOOL bReleaseFailed = IMG_FALSE; | 1133 | IMG_BOOL bReleaseFailed = IMG_FALSE; |
825 | IMG_HANDLE hDummy; | 1134 | IMG_HANDLE hDummy; |
826 | IMG_UINT32 i; | 1135 | IMG_UINT32 i; |
1136 | #if defined (SUPPORT_SID_INTERFACE) | ||
1137 | SGX_BRIDGE_INIT_INFO_KM asInitInfoKM = {0}; | ||
1138 | #endif | ||
827 | 1139 | ||
828 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_SGX_DEVINITPART2); | 1140 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_SGX_DEVINITPART2); |
829 | 1141 | ||
1142 | |||
1143 | psSGXDevInitPart2OUT->ui32KMBuildOptions = SGX_BUILD_OPTIONS; | ||
1144 | |||
830 | if(!psPerProc->bInitProcess) | 1145 | if(!psPerProc->bInitProcess) |
831 | { | 1146 | { |
832 | psRetOUT->eError = PVRSRV_ERROR_PROCESS_NOT_INITIALISED; | 1147 | psSGXDevInitPart2OUT->eError = PVRSRV_ERROR_PROCESS_NOT_INITIALISED; |
833 | return 0; | 1148 | return 0; |
834 | } | 1149 | } |
835 | 1150 | ||
836 | psRetOUT->eError = | 1151 | psSGXDevInitPart2OUT->eError = |
837 | PVRSRVLookupHandle(psPerProc->psHandleBase, | 1152 | PVRSRVLookupHandle(psPerProc->psHandleBase, |
838 | &hDevCookieInt, | 1153 | &hDevCookieInt, |
839 | psSGXDevInitPart2IN->hDevCookie, | 1154 | psSGXDevInitPart2IN->hDevCookie, |
840 | PVRSRV_HANDLE_TYPE_DEV_NODE); | 1155 | PVRSRV_HANDLE_TYPE_DEV_NODE); |
841 | if(psRetOUT->eError != PVRSRV_OK) | 1156 | if(psSGXDevInitPart2OUT->eError != PVRSRV_OK) |
842 | { | 1157 | { |
843 | return 0; | 1158 | return 0; |
844 | } | 1159 | } |
@@ -961,6 +1276,95 @@ SGXDevInitPart2BW(IMG_UINT32 ui32BridgeID, | |||
961 | } | 1276 | } |
962 | #endif | 1277 | #endif |
963 | 1278 | ||
1279 | |||
1280 | #if defined(FIX_HW_BRN_31542) | ||
1281 | eError = PVRSRVLookupHandle(psPerProc->psHandleBase, | ||
1282 | &hDummy, | ||
1283 | psSGXDevInitPart2IN->sInitInfo.hKernelClearClipWAVDMStreamMemInfo, | ||
1284 | PVRSRV_HANDLE_TYPE_MEM_INFO); | ||
1285 | if (eError != PVRSRV_OK) | ||
1286 | { | ||
1287 | bLookupFailed = IMG_TRUE; | ||
1288 | } | ||
1289 | eError = PVRSRVLookupHandle(psPerProc->psHandleBase, | ||
1290 | &hDummy, | ||
1291 | psSGXDevInitPart2IN->sInitInfo.hKernelClearClipWAIndexStreamMemInfo, | ||
1292 | PVRSRV_HANDLE_TYPE_MEM_INFO); | ||
1293 | if (eError != PVRSRV_OK) | ||
1294 | { | ||
1295 | bLookupFailed = IMG_TRUE; | ||
1296 | } | ||
1297 | eError = PVRSRVLookupHandle(psPerProc->psHandleBase, | ||
1298 | &hDummy, | ||
1299 | psSGXDevInitPart2IN->sInitInfo.hKernelClearClipWAPDSMemInfo, | ||
1300 | PVRSRV_HANDLE_TYPE_MEM_INFO); | ||
1301 | if (eError != PVRSRV_OK) | ||
1302 | { | ||
1303 | bLookupFailed = IMG_TRUE; | ||
1304 | } | ||
1305 | eError = PVRSRVLookupHandle(psPerProc->psHandleBase, | ||
1306 | &hDummy, | ||
1307 | psSGXDevInitPart2IN->sInitInfo.hKernelClearClipWAUSEMemInfo, | ||
1308 | PVRSRV_HANDLE_TYPE_MEM_INFO); | ||
1309 | if (eError != PVRSRV_OK) | ||
1310 | { | ||
1311 | bLookupFailed = IMG_TRUE; | ||
1312 | } | ||
1313 | eError = PVRSRVLookupHandle(psPerProc->psHandleBase, | ||
1314 | &hDummy, | ||
1315 | psSGXDevInitPart2IN->sInitInfo.hKernelClearClipWAParamMemInfo, | ||
1316 | PVRSRV_HANDLE_TYPE_MEM_INFO); | ||
1317 | if (eError != PVRSRV_OK) | ||
1318 | { | ||
1319 | bLookupFailed = IMG_TRUE; | ||
1320 | } | ||
1321 | eError = PVRSRVLookupHandle(psPerProc->psHandleBase, | ||
1322 | &hDummy, | ||
1323 | psSGXDevInitPart2IN->sInitInfo.hKernelClearClipWAPMPTMemInfo, | ||
1324 | PVRSRV_HANDLE_TYPE_MEM_INFO); | ||
1325 | if (eError != PVRSRV_OK) | ||
1326 | { | ||
1327 | bLookupFailed = IMG_TRUE; | ||
1328 | } | ||
1329 | |||
1330 | eError = PVRSRVLookupHandle(psPerProc->psHandleBase, | ||
1331 | &hDummy, | ||
1332 | psSGXDevInitPart2IN->sInitInfo.hKernelClearClipWATPCMemInfo, | ||
1333 | PVRSRV_HANDLE_TYPE_MEM_INFO); | ||
1334 | if (eError != PVRSRV_OK) | ||
1335 | { | ||
1336 | bLookupFailed = IMG_TRUE; | ||
1337 | } | ||
1338 | eError = PVRSRVLookupHandle(psPerProc->psHandleBase, | ||
1339 | &hDummy, | ||
1340 | psSGXDevInitPart2IN->sInitInfo.hKernelClearClipWAPSGRgnHdrMemInfo, | ||
1341 | PVRSRV_HANDLE_TYPE_MEM_INFO); | ||
1342 | if (eError != PVRSRV_OK) | ||
1343 | { | ||
1344 | bLookupFailed = IMG_TRUE; | ||
1345 | } | ||
1346 | #endif | ||
1347 | |||
1348 | #if defined(SGX_FEATURE_VDM_CONTEXT_SWITCH) && defined(FIX_HW_BRN_31425) | ||
1349 | eError = PVRSRVLookupHandle(psPerProc->psHandleBase, | ||
1350 | &hDummy, | ||
1351 | psSGXDevInitPart2IN->sInitInfo.hKernelVDMSnapShotBufferMemInfo, | ||
1352 | PVRSRV_HANDLE_TYPE_MEM_INFO); | ||
1353 | if (eError != PVRSRV_OK) | ||
1354 | { | ||
1355 | bLookupFailed = IMG_TRUE; | ||
1356 | } | ||
1357 | |||
1358 | eError = PVRSRVLookupHandle(psPerProc->psHandleBase, | ||
1359 | &hDummy, | ||
1360 | psSGXDevInitPart2IN->sInitInfo.hKernelVDMCtrlStreamBufferMemInfo, | ||
1361 | PVRSRV_HANDLE_TYPE_MEM_INFO); | ||
1362 | if (eError != PVRSRV_OK) | ||
1363 | { | ||
1364 | bLookupFailed = IMG_TRUE; | ||
1365 | } | ||
1366 | #endif | ||
1367 | |||
964 | #if defined(PVRSRV_USSE_EDM_STATUS_DEBUG) | 1368 | #if defined(PVRSRV_USSE_EDM_STATUS_DEBUG) |
965 | eError = PVRSRVLookupHandle(psPerProc->psHandleBase, | 1369 | eError = PVRSRVLookupHandle(psPerProc->psHandleBase, |
966 | &hDummy, | 1370 | &hDummy, |
@@ -985,9 +1389,17 @@ SGXDevInitPart2BW(IMG_UINT32 ui32BridgeID, | |||
985 | 1389 | ||
986 | for (i = 0; i < SGX_MAX_INIT_MEM_HANDLES; i++) | 1390 | for (i = 0; i < SGX_MAX_INIT_MEM_HANDLES; i++) |
987 | { | 1391 | { |
1392 | #if defined (SUPPORT_SID_INTERFACE) | ||
1393 | IMG_SID hHandle = psSGXDevInitPart2IN->sInitInfo.asInitMemHandles[i]; | ||
1394 | #else | ||
988 | IMG_HANDLE hHandle = psSGXDevInitPart2IN->sInitInfo.asInitMemHandles[i]; | 1395 | IMG_HANDLE hHandle = psSGXDevInitPart2IN->sInitInfo.asInitMemHandles[i]; |
1396 | #endif | ||
989 | 1397 | ||
1398 | #if defined (SUPPORT_SID_INTERFACE) | ||
1399 | if (hHandle == 0) | ||
1400 | #else | ||
990 | if (hHandle == IMG_NULL) | 1401 | if (hHandle == IMG_NULL) |
1402 | #endif | ||
991 | { | 1403 | { |
992 | continue; | 1404 | continue; |
993 | } | 1405 | } |
@@ -1005,13 +1417,17 @@ SGXDevInitPart2BW(IMG_UINT32 ui32BridgeID, | |||
1005 | if (bLookupFailed) | 1417 | if (bLookupFailed) |
1006 | { | 1418 | { |
1007 | PVR_DPF((PVR_DBG_ERROR, "DevInitSGXPart2BW: A handle lookup failed")); | 1419 | PVR_DPF((PVR_DBG_ERROR, "DevInitSGXPart2BW: A handle lookup failed")); |
1008 | psRetOUT->eError = PVRSRV_ERROR_INIT2_PHASE_FAILED; | 1420 | psSGXDevInitPart2OUT->eError = PVRSRV_ERROR_INIT2_PHASE_FAILED; |
1009 | return 0; | 1421 | return 0; |
1010 | } | 1422 | } |
1011 | 1423 | ||
1012 | 1424 | ||
1013 | eError = PVRSRVLookupAndReleaseHandle(psPerProc->psHandleBase, | 1425 | eError = PVRSRVLookupAndReleaseHandle(psPerProc->psHandleBase, |
1426 | #if defined (SUPPORT_SID_INTERFACE) | ||
1427 | &asInitInfoKM.hKernelCCBMemInfo, | ||
1428 | #else | ||
1014 | &psSGXDevInitPart2IN->sInitInfo.hKernelCCBMemInfo, | 1429 | &psSGXDevInitPart2IN->sInitInfo.hKernelCCBMemInfo, |
1430 | #endif | ||
1015 | psSGXDevInitPart2IN->sInitInfo.hKernelCCBMemInfo, | 1431 | psSGXDevInitPart2IN->sInitInfo.hKernelCCBMemInfo, |
1016 | PVRSRV_HANDLE_TYPE_MEM_INFO); | 1432 | PVRSRV_HANDLE_TYPE_MEM_INFO); |
1017 | if (eError != PVRSRV_OK) | 1433 | if (eError != PVRSRV_OK) |
@@ -1020,7 +1436,11 @@ SGXDevInitPart2BW(IMG_UINT32 ui32BridgeID, | |||
1020 | } | 1436 | } |
1021 | 1437 | ||
1022 | eError = PVRSRVLookupAndReleaseHandle(psPerProc->psHandleBase, | 1438 | eError = PVRSRVLookupAndReleaseHandle(psPerProc->psHandleBase, |
1439 | #if defined (SUPPORT_SID_INTERFACE) | ||
1440 | &asInitInfoKM.hKernelCCBCtlMemInfo, | ||
1441 | #else | ||
1023 | &psSGXDevInitPart2IN->sInitInfo.hKernelCCBCtlMemInfo, | 1442 | &psSGXDevInitPart2IN->sInitInfo.hKernelCCBCtlMemInfo, |
1443 | #endif | ||
1024 | psSGXDevInitPart2IN->sInitInfo.hKernelCCBCtlMemInfo, | 1444 | psSGXDevInitPart2IN->sInitInfo.hKernelCCBCtlMemInfo, |
1025 | PVRSRV_HANDLE_TYPE_MEM_INFO); | 1445 | PVRSRV_HANDLE_TYPE_MEM_INFO); |
1026 | if (eError != PVRSRV_OK) | 1446 | if (eError != PVRSRV_OK) |
@@ -1029,7 +1449,11 @@ SGXDevInitPart2BW(IMG_UINT32 ui32BridgeID, | |||
1029 | } | 1449 | } |
1030 | 1450 | ||
1031 | eError = PVRSRVLookupAndReleaseHandle(psPerProc->psHandleBase, | 1451 | eError = PVRSRVLookupAndReleaseHandle(psPerProc->psHandleBase, |
1452 | #if defined (SUPPORT_SID_INTERFACE) | ||
1453 | &asInitInfoKM.hKernelCCBEventKickerMemInfo, | ||
1454 | #else | ||
1032 | &psSGXDevInitPart2IN->sInitInfo.hKernelCCBEventKickerMemInfo, | 1455 | &psSGXDevInitPart2IN->sInitInfo.hKernelCCBEventKickerMemInfo, |
1456 | #endif | ||
1033 | psSGXDevInitPart2IN->sInitInfo.hKernelCCBEventKickerMemInfo, | 1457 | psSGXDevInitPart2IN->sInitInfo.hKernelCCBEventKickerMemInfo, |
1034 | PVRSRV_HANDLE_TYPE_MEM_INFO); | 1458 | PVRSRV_HANDLE_TYPE_MEM_INFO); |
1035 | if (eError != PVRSRV_OK) | 1459 | if (eError != PVRSRV_OK) |
@@ -1039,7 +1463,11 @@ SGXDevInitPart2BW(IMG_UINT32 ui32BridgeID, | |||
1039 | 1463 | ||
1040 | 1464 | ||
1041 | eError = PVRSRVLookupAndReleaseHandle(psPerProc->psHandleBase, | 1465 | eError = PVRSRVLookupAndReleaseHandle(psPerProc->psHandleBase, |
1466 | #if defined (SUPPORT_SID_INTERFACE) | ||
1467 | &asInitInfoKM.hKernelSGXHostCtlMemInfo, | ||
1468 | #else | ||
1042 | &psSGXDevInitPart2IN->sInitInfo.hKernelSGXHostCtlMemInfo, | 1469 | &psSGXDevInitPart2IN->sInitInfo.hKernelSGXHostCtlMemInfo, |
1470 | #endif | ||
1043 | psSGXDevInitPart2IN->sInitInfo.hKernelSGXHostCtlMemInfo, | 1471 | psSGXDevInitPart2IN->sInitInfo.hKernelSGXHostCtlMemInfo, |
1044 | PVRSRV_HANDLE_TYPE_MEM_INFO); | 1472 | PVRSRV_HANDLE_TYPE_MEM_INFO); |
1045 | if (eError != PVRSRV_OK) | 1473 | if (eError != PVRSRV_OK) |
@@ -1048,7 +1476,11 @@ SGXDevInitPart2BW(IMG_UINT32 ui32BridgeID, | |||
1048 | } | 1476 | } |
1049 | 1477 | ||
1050 | eError = PVRSRVLookupAndReleaseHandle(psPerProc->psHandleBase, | 1478 | eError = PVRSRVLookupAndReleaseHandle(psPerProc->psHandleBase, |
1479 | #if defined (SUPPORT_SID_INTERFACE) | ||
1480 | &asInitInfoKM.hKernelSGXTA3DCtlMemInfo, | ||
1481 | #else | ||
1051 | &psSGXDevInitPart2IN->sInitInfo.hKernelSGXTA3DCtlMemInfo, | 1482 | &psSGXDevInitPart2IN->sInitInfo.hKernelSGXTA3DCtlMemInfo, |
1483 | #endif | ||
1052 | psSGXDevInitPart2IN->sInitInfo.hKernelSGXTA3DCtlMemInfo, | 1484 | psSGXDevInitPart2IN->sInitInfo.hKernelSGXTA3DCtlMemInfo, |
1053 | PVRSRV_HANDLE_TYPE_MEM_INFO); | 1485 | PVRSRV_HANDLE_TYPE_MEM_INFO); |
1054 | if (eError != PVRSRV_OK) | 1486 | if (eError != PVRSRV_OK) |
@@ -1057,7 +1489,11 @@ SGXDevInitPart2BW(IMG_UINT32 ui32BridgeID, | |||
1057 | } | 1489 | } |
1058 | 1490 | ||
1059 | eError = PVRSRVLookupAndReleaseHandle(psPerProc->psHandleBase, | 1491 | eError = PVRSRVLookupAndReleaseHandle(psPerProc->psHandleBase, |
1492 | #if defined (SUPPORT_SID_INTERFACE) | ||
1493 | &asInitInfoKM.hKernelSGXMiscMemInfo, | ||
1494 | #else | ||
1060 | &psSGXDevInitPart2IN->sInitInfo.hKernelSGXMiscMemInfo, | 1495 | &psSGXDevInitPart2IN->sInitInfo.hKernelSGXMiscMemInfo, |
1496 | #endif | ||
1061 | psSGXDevInitPart2IN->sInitInfo.hKernelSGXMiscMemInfo, | 1497 | psSGXDevInitPart2IN->sInitInfo.hKernelSGXMiscMemInfo, |
1062 | PVRSRV_HANDLE_TYPE_MEM_INFO); | 1498 | PVRSRV_HANDLE_TYPE_MEM_INFO); |
1063 | if (eError != PVRSRV_OK) | 1499 | if (eError != PVRSRV_OK) |
@@ -1066,9 +1502,13 @@ SGXDevInitPart2BW(IMG_UINT32 ui32BridgeID, | |||
1066 | } | 1502 | } |
1067 | 1503 | ||
1068 | 1504 | ||
1069 | #if defined(SGX_SUPPORT_HWPROFILING) | 1505 | #if defined(SGX_SUPPORT_HWPROFILING) |
1070 | eError = PVRSRVLookupAndReleaseHandle(psPerProc->psHandleBase, | 1506 | eError = PVRSRVLookupAndReleaseHandle(psPerProc->psHandleBase, |
1507 | #if defined (SUPPORT_SID_INTERFACE) | ||
1508 | &asInitInfoKM.hKernelHWProfilingMemInfo, | ||
1509 | #else | ||
1071 | &psSGXDevInitPart2IN->sInitInfo.hKernelHWProfilingMemInfo, | 1510 | &psSGXDevInitPart2IN->sInitInfo.hKernelHWProfilingMemInfo, |
1511 | #endif | ||
1072 | psSGXDevInitPart2IN->sInitInfo.hKernelHWProfilingMemInfo, | 1512 | psSGXDevInitPart2IN->sInitInfo.hKernelHWProfilingMemInfo, |
1073 | PVRSRV_HANDLE_TYPE_MEM_INFO); | 1513 | PVRSRV_HANDLE_TYPE_MEM_INFO); |
1074 | if (eError != PVRSRV_OK) | 1514 | if (eError != PVRSRV_OK) |
@@ -1079,7 +1519,11 @@ SGXDevInitPart2BW(IMG_UINT32 ui32BridgeID, | |||
1079 | 1519 | ||
1080 | #if defined(SUPPORT_SGX_HWPERF) | 1520 | #if defined(SUPPORT_SGX_HWPERF) |
1081 | eError = PVRSRVLookupAndReleaseHandle(psPerProc->psHandleBase, | 1521 | eError = PVRSRVLookupAndReleaseHandle(psPerProc->psHandleBase, |
1522 | #if defined (SUPPORT_SID_INTERFACE) | ||
1523 | &asInitInfoKM.hKernelHWPerfCBMemInfo, | ||
1524 | #else | ||
1082 | &psSGXDevInitPart2IN->sInitInfo.hKernelHWPerfCBMemInfo, | 1525 | &psSGXDevInitPart2IN->sInitInfo.hKernelHWPerfCBMemInfo, |
1526 | #endif | ||
1083 | psSGXDevInitPart2IN->sInitInfo.hKernelHWPerfCBMemInfo, | 1527 | psSGXDevInitPart2IN->sInitInfo.hKernelHWPerfCBMemInfo, |
1084 | PVRSRV_HANDLE_TYPE_MEM_INFO); | 1528 | PVRSRV_HANDLE_TYPE_MEM_INFO); |
1085 | if (eError != PVRSRV_OK) | 1529 | if (eError != PVRSRV_OK) |
@@ -1089,7 +1533,11 @@ SGXDevInitPart2BW(IMG_UINT32 ui32BridgeID, | |||
1089 | #endif | 1533 | #endif |
1090 | 1534 | ||
1091 | eError = PVRSRVLookupAndReleaseHandle(psPerProc->psHandleBase, | 1535 | eError = PVRSRVLookupAndReleaseHandle(psPerProc->psHandleBase, |
1536 | #if defined (SUPPORT_SID_INTERFACE) | ||
1537 | &asInitInfoKM.hKernelTASigBufferMemInfo, | ||
1538 | #else | ||
1092 | &psSGXDevInitPart2IN->sInitInfo.hKernelTASigBufferMemInfo, | 1539 | &psSGXDevInitPart2IN->sInitInfo.hKernelTASigBufferMemInfo, |
1540 | #endif | ||
1093 | psSGXDevInitPart2IN->sInitInfo.hKernelTASigBufferMemInfo, | 1541 | psSGXDevInitPart2IN->sInitInfo.hKernelTASigBufferMemInfo, |
1094 | PVRSRV_HANDLE_TYPE_MEM_INFO); | 1542 | PVRSRV_HANDLE_TYPE_MEM_INFO); |
1095 | if (eError != PVRSRV_OK) | 1543 | if (eError != PVRSRV_OK) |
@@ -1098,7 +1546,11 @@ SGXDevInitPart2BW(IMG_UINT32 ui32BridgeID, | |||
1098 | } | 1546 | } |
1099 | 1547 | ||
1100 | eError = PVRSRVLookupAndReleaseHandle(psPerProc->psHandleBase, | 1548 | eError = PVRSRVLookupAndReleaseHandle(psPerProc->psHandleBase, |
1549 | #if defined (SUPPORT_SID_INTERFACE) | ||
1550 | &asInitInfoKM.hKernel3DSigBufferMemInfo, | ||
1551 | #else | ||
1101 | &psSGXDevInitPart2IN->sInitInfo.hKernel3DSigBufferMemInfo, | 1552 | &psSGXDevInitPart2IN->sInitInfo.hKernel3DSigBufferMemInfo, |
1553 | #endif | ||
1102 | psSGXDevInitPart2IN->sInitInfo.hKernel3DSigBufferMemInfo, | 1554 | psSGXDevInitPart2IN->sInitInfo.hKernel3DSigBufferMemInfo, |
1103 | PVRSRV_HANDLE_TYPE_MEM_INFO); | 1555 | PVRSRV_HANDLE_TYPE_MEM_INFO); |
1104 | if (eError != PVRSRV_OK) | 1556 | if (eError != PVRSRV_OK) |
@@ -1108,7 +1560,11 @@ SGXDevInitPart2BW(IMG_UINT32 ui32BridgeID, | |||
1108 | 1560 | ||
1109 | #if defined(FIX_HW_BRN_29702) | 1561 | #if defined(FIX_HW_BRN_29702) |
1110 | eError = PVRSRVLookupHandle(psPerProc->psHandleBase, | 1562 | eError = PVRSRVLookupHandle(psPerProc->psHandleBase, |
1563 | #if defined (SUPPORT_SID_INTERFACE) | ||
1564 | &asInitInfoKM.hKernelCFIMemInfo, | ||
1565 | #else | ||
1111 | &psSGXDevInitPart2IN->sInitInfo.hKernelCFIMemInfo, | 1566 | &psSGXDevInitPart2IN->sInitInfo.hKernelCFIMemInfo, |
1567 | #endif | ||
1112 | psSGXDevInitPart2IN->sInitInfo.hKernelCFIMemInfo, | 1568 | psSGXDevInitPart2IN->sInitInfo.hKernelCFIMemInfo, |
1113 | PVRSRV_HANDLE_TYPE_MEM_INFO); | 1569 | PVRSRV_HANDLE_TYPE_MEM_INFO); |
1114 | if (eError != PVRSRV_OK) | 1570 | if (eError != PVRSRV_OK) |
@@ -1119,7 +1575,11 @@ SGXDevInitPart2BW(IMG_UINT32 ui32BridgeID, | |||
1119 | 1575 | ||
1120 | #if defined(FIX_HW_BRN_29823) | 1576 | #if defined(FIX_HW_BRN_29823) |
1121 | eError = PVRSRVLookupAndReleaseHandle(psPerProc->psHandleBase, | 1577 | eError = PVRSRVLookupAndReleaseHandle(psPerProc->psHandleBase, |
1578 | #if defined (SUPPORT_SID_INTERFACE) | ||
1579 | &asInitInfoKM.hKernelDummyTermStreamMemInfo, | ||
1580 | #else | ||
1122 | &psSGXDevInitPart2IN->sInitInfo.hKernelDummyTermStreamMemInfo, | 1581 | &psSGXDevInitPart2IN->sInitInfo.hKernelDummyTermStreamMemInfo, |
1582 | #endif | ||
1123 | psSGXDevInitPart2IN->sInitInfo.hKernelDummyTermStreamMemInfo, | 1583 | psSGXDevInitPart2IN->sInitInfo.hKernelDummyTermStreamMemInfo, |
1124 | PVRSRV_HANDLE_TYPE_MEM_INFO); | 1584 | PVRSRV_HANDLE_TYPE_MEM_INFO); |
1125 | if (eError != PVRSRV_OK) | 1585 | if (eError != PVRSRV_OK) |
@@ -1128,9 +1588,132 @@ SGXDevInitPart2BW(IMG_UINT32 ui32BridgeID, | |||
1128 | } | 1588 | } |
1129 | #endif | 1589 | #endif |
1130 | 1590 | ||
1591 | |||
1592 | #if defined(FIX_HW_BRN_31542) | ||
1593 | eError = PVRSRVLookupAndReleaseHandle(psPerProc->psHandleBase, | ||
1594 | #if defined (SUPPORT_SID_INTERFACE) | ||
1595 | &asInitInfoKM.hKernelClearClipWAVDMStreamMemInfo, | ||
1596 | #else | ||
1597 | &psSGXDevInitPart2IN->sInitInfo.hKernelClearClipWAVDMStreamMemInfo, | ||
1598 | #endif | ||
1599 | psSGXDevInitPart2IN->sInitInfo.hKernelClearClipWAVDMStreamMemInfo, | ||
1600 | PVRSRV_HANDLE_TYPE_MEM_INFO); | ||
1601 | if (eError != PVRSRV_OK) | ||
1602 | { | ||
1603 | bReleaseFailed = IMG_TRUE; | ||
1604 | } | ||
1605 | eError = PVRSRVLookupAndReleaseHandle(psPerProc->psHandleBase, | ||
1606 | #if defined (SUPPORT_SID_INTERFACE) | ||
1607 | &asInitInfoKM.hKernelClearClipWAIndexStreamMemInfo, | ||
1608 | #else | ||
1609 | &psSGXDevInitPart2IN->sInitInfo.hKernelClearClipWAIndexStreamMemInfo, | ||
1610 | #endif | ||
1611 | psSGXDevInitPart2IN->sInitInfo.hKernelClearClipWAIndexStreamMemInfo, | ||
1612 | PVRSRV_HANDLE_TYPE_MEM_INFO); | ||
1613 | if (eError != PVRSRV_OK) | ||
1614 | { | ||
1615 | bReleaseFailed = IMG_TRUE; | ||
1616 | } | ||
1617 | eError = PVRSRVLookupAndReleaseHandle(psPerProc->psHandleBase, | ||
1618 | #if defined (SUPPORT_SID_INTERFACE) | ||
1619 | &asInitInfoKM.hKernelClearClipWAPDSMemInfo, | ||
1620 | #else | ||
1621 | &psSGXDevInitPart2IN->sInitInfo.hKernelClearClipWAPDSMemInfo, | ||
1622 | #endif | ||
1623 | psSGXDevInitPart2IN->sInitInfo.hKernelClearClipWAPDSMemInfo, | ||
1624 | PVRSRV_HANDLE_TYPE_MEM_INFO); | ||
1625 | if (eError != PVRSRV_OK) | ||
1626 | { | ||
1627 | bReleaseFailed = IMG_TRUE; | ||
1628 | } | ||
1629 | eError = PVRSRVLookupAndReleaseHandle(psPerProc->psHandleBase, | ||
1630 | #if defined (SUPPORT_SID_INTERFACE) | ||
1631 | &asInitInfoKM.hKernelClearClipWAUSEMemInfo, | ||
1632 | #else | ||
1633 | &psSGXDevInitPart2IN->sInitInfo.hKernelClearClipWAUSEMemInfo, | ||
1634 | #endif | ||
1635 | psSGXDevInitPart2IN->sInitInfo.hKernelClearClipWAUSEMemInfo, | ||
1636 | PVRSRV_HANDLE_TYPE_MEM_INFO); | ||
1637 | if (eError != PVRSRV_OK) | ||
1638 | { | ||
1639 | bReleaseFailed = IMG_TRUE; | ||
1640 | } | ||
1641 | eError = PVRSRVLookupAndReleaseHandle(psPerProc->psHandleBase, | ||
1642 | #if defined (SUPPORT_SID_INTERFACE) | ||
1643 | &asInitInfoKM.hKernelClearClipWAParamMemInfo, | ||
1644 | #else | ||
1645 | &psSGXDevInitPart2IN->sInitInfo.hKernelClearClipWAParamMemInfo, | ||
1646 | #endif | ||
1647 | psSGXDevInitPart2IN->sInitInfo.hKernelClearClipWAParamMemInfo, | ||
1648 | PVRSRV_HANDLE_TYPE_MEM_INFO); | ||
1649 | if (eError != PVRSRV_OK) | ||
1650 | { | ||
1651 | bReleaseFailed = IMG_TRUE; | ||
1652 | } | ||
1653 | eError = PVRSRVLookupAndReleaseHandle(psPerProc->psHandleBase, | ||
1654 | #if defined (SUPPORT_SID_INTERFACE) | ||
1655 | &asInitInfoKM.hKernelClearClipWAPMPTMemInfo, | ||
1656 | #else | ||
1657 | &psSGXDevInitPart2IN->sInitInfo.hKernelClearClipWAPMPTMemInfo, | ||
1658 | #endif | ||
1659 | psSGXDevInitPart2IN->sInitInfo.hKernelClearClipWAPMPTMemInfo, | ||
1660 | PVRSRV_HANDLE_TYPE_MEM_INFO); | ||
1661 | if (eError != PVRSRV_OK) | ||
1662 | { | ||
1663 | bReleaseFailed = IMG_TRUE; | ||
1664 | } | ||
1665 | eError = PVRSRVLookupAndReleaseHandle(psPerProc->psHandleBase, | ||
1666 | #if defined (SUPPORT_SID_INTERFACE) | ||
1667 | &asInitInfoKM.hKernelClearClipWATPCMemInfo, | ||
1668 | #else | ||
1669 | &psSGXDevInitPart2IN->sInitInfo.hKernelClearClipWATPCMemInfo, | ||
1670 | #endif | ||
1671 | psSGXDevInitPart2IN->sInitInfo.hKernelClearClipWATPCMemInfo, | ||
1672 | PVRSRV_HANDLE_TYPE_MEM_INFO); | ||
1673 | if (eError != PVRSRV_OK) | ||
1674 | { | ||
1675 | bReleaseFailed = IMG_TRUE; | ||
1676 | } | ||
1677 | eError = PVRSRVLookupAndReleaseHandle(psPerProc->psHandleBase, | ||
1678 | #if defined (SUPPORT_SID_INTERFACE) | ||
1679 | &asInitInfoKM.hKernelClearClipWAPSGRgnHdrMemInfo, | ||
1680 | #else | ||
1681 | &psSGXDevInitPart2IN->sInitInfo.hKernelClearClipWAPSGRgnHdrMemInfo, | ||
1682 | #endif | ||
1683 | psSGXDevInitPart2IN->sInitInfo.hKernelClearClipWAPSGRgnHdrMemInfo, | ||
1684 | PVRSRV_HANDLE_TYPE_MEM_INFO); | ||
1685 | if (eError != PVRSRV_OK) | ||
1686 | { | ||
1687 | bReleaseFailed = IMG_TRUE; | ||
1688 | } | ||
1689 | #endif | ||
1690 | #if defined(SGX_FEATURE_VDM_CONTEXT_SWITCH) && defined(FIX_HW_BRN_31425) | ||
1691 | eError = PVRSRVLookupAndReleaseHandle(psPerProc->psHandleBase, | ||
1692 | &psSGXDevInitPart2IN->sInitInfo.hKernelVDMSnapShotBufferMemInfo, | ||
1693 | psSGXDevInitPart2IN->sInitInfo.hKernelVDMSnapShotBufferMemInfo, | ||
1694 | PVRSRV_HANDLE_TYPE_MEM_INFO); | ||
1695 | if (eError != PVRSRV_OK) | ||
1696 | { | ||
1697 | bReleaseFailed = IMG_TRUE; | ||
1698 | } | ||
1699 | |||
1700 | eError = PVRSRVLookupAndReleaseHandle(psPerProc->psHandleBase, | ||
1701 | &psSGXDevInitPart2IN->sInitInfo.hKernelVDMCtrlStreamBufferMemInfo, | ||
1702 | psSGXDevInitPart2IN->sInitInfo.hKernelVDMCtrlStreamBufferMemInfo, | ||
1703 | PVRSRV_HANDLE_TYPE_MEM_INFO); | ||
1704 | if (eError != PVRSRV_OK) | ||
1705 | { | ||
1706 | bReleaseFailed = IMG_TRUE; | ||
1707 | } | ||
1708 | #endif | ||
1709 | |||
1131 | #if defined(PVRSRV_USSE_EDM_STATUS_DEBUG) | 1710 | #if defined(PVRSRV_USSE_EDM_STATUS_DEBUG) |
1132 | eError = PVRSRVLookupAndReleaseHandle(psPerProc->psHandleBase, | 1711 | eError = PVRSRVLookupAndReleaseHandle(psPerProc->psHandleBase, |
1712 | #if defined (SUPPORT_SID_INTERFACE) | ||
1713 | &asInitInfoKM.hKernelEDMStatusBufferMemInfo, | ||
1714 | #else | ||
1133 | &psSGXDevInitPart2IN->sInitInfo.hKernelEDMStatusBufferMemInfo, | 1715 | &psSGXDevInitPart2IN->sInitInfo.hKernelEDMStatusBufferMemInfo, |
1716 | #endif | ||
1134 | psSGXDevInitPart2IN->sInitInfo.hKernelEDMStatusBufferMemInfo, | 1717 | psSGXDevInitPart2IN->sInitInfo.hKernelEDMStatusBufferMemInfo, |
1135 | PVRSRV_HANDLE_TYPE_MEM_INFO); | 1718 | PVRSRV_HANDLE_TYPE_MEM_INFO); |
1136 | if (eError != PVRSRV_OK) | 1719 | if (eError != PVRSRV_OK) |
@@ -1141,7 +1724,11 @@ SGXDevInitPart2BW(IMG_UINT32 ui32BridgeID, | |||
1141 | 1724 | ||
1142 | #if defined(SGX_FEATURE_SPM_MODE_0) | 1725 | #if defined(SGX_FEATURE_SPM_MODE_0) |
1143 | eError = PVRSRVLookupAndReleaseHandle(psPerProc->psHandleBase, | 1726 | eError = PVRSRVLookupAndReleaseHandle(psPerProc->psHandleBase, |
1727 | #if defined (SUPPORT_SID_INTERFACE) | ||
1728 | &asInitInfoKM.hKernelTmpDPMStateMemInfo, | ||
1729 | #else | ||
1144 | &psSGXDevInitPart2IN->sInitInfo.hKernelTmpDPMStateMemInfo, | 1730 | &psSGXDevInitPart2IN->sInitInfo.hKernelTmpDPMStateMemInfo, |
1731 | #endif | ||
1145 | psSGXDevInitPart2IN->sInitInfo.hKernelTmpDPMStateMemInfo, | 1732 | psSGXDevInitPart2IN->sInitInfo.hKernelTmpDPMStateMemInfo, |
1146 | PVRSRV_HANDLE_TYPE_MEM_INFO); | 1733 | PVRSRV_HANDLE_TYPE_MEM_INFO); |
1147 | if (eError != PVRSRV_OK) | 1734 | if (eError != PVRSRV_OK) |
@@ -1153,14 +1740,26 @@ SGXDevInitPart2BW(IMG_UINT32 ui32BridgeID, | |||
1153 | 1740 | ||
1154 | for (i = 0; i < SGX_MAX_INIT_MEM_HANDLES; i++) | 1741 | for (i = 0; i < SGX_MAX_INIT_MEM_HANDLES; i++) |
1155 | { | 1742 | { |
1743 | #if defined (SUPPORT_SID_INTERFACE) | ||
1744 | IMG_SID hHandle = psSGXDevInitPart2IN->sInitInfo.asInitMemHandles[i]; | ||
1745 | IMG_HANDLE *phHandleKM = &asInitInfoKM.asInitMemHandles[i]; | ||
1746 | |||
1747 | if (hHandle == 0) | ||
1748 | #else | ||
1156 | IMG_HANDLE *phHandle = &psSGXDevInitPart2IN->sInitInfo.asInitMemHandles[i]; | 1749 | IMG_HANDLE *phHandle = &psSGXDevInitPart2IN->sInitInfo.asInitMemHandles[i]; |
1157 | 1750 | ||
1158 | if (*phHandle == IMG_NULL) | 1751 | if (*phHandle == IMG_NULL) |
1752 | #endif | ||
1159 | continue; | 1753 | continue; |
1160 | 1754 | ||
1161 | eError = PVRSRVLookupAndReleaseHandle(psPerProc->psHandleBase, | 1755 | eError = PVRSRVLookupAndReleaseHandle(psPerProc->psHandleBase, |
1756 | #if defined (SUPPORT_SID_INTERFACE) | ||
1757 | phHandleKM, | ||
1758 | hHandle, | ||
1759 | #else | ||
1162 | phHandle, | 1760 | phHandle, |
1163 | *phHandle, | 1761 | *phHandle, |
1762 | #endif | ||
1164 | PVRSRV_HANDLE_TYPE_MEM_INFO); | 1763 | PVRSRV_HANDLE_TYPE_MEM_INFO); |
1165 | if (eError != PVRSRV_OK) | 1764 | if (eError != PVRSRV_OK) |
1166 | { | 1765 | { |
@@ -1171,45 +1770,69 @@ SGXDevInitPart2BW(IMG_UINT32 ui32BridgeID, | |||
1171 | if (bReleaseFailed) | 1770 | if (bReleaseFailed) |
1172 | { | 1771 | { |
1173 | PVR_DPF((PVR_DBG_ERROR, "DevInitSGXPart2BW: A handle release failed")); | 1772 | PVR_DPF((PVR_DBG_ERROR, "DevInitSGXPart2BW: A handle release failed")); |
1174 | psRetOUT->eError = PVRSRV_ERROR_INIT2_PHASE_FAILED; | 1773 | psSGXDevInitPart2OUT->eError = PVRSRV_ERROR_INIT2_PHASE_FAILED; |
1175 | 1774 | ||
1176 | PVR_DBG_BREAK; | 1775 | PVR_DBG_BREAK; |
1177 | return 0; | 1776 | return 0; |
1178 | } | 1777 | } |
1179 | 1778 | ||
1180 | 1779 | ||
1780 | #if defined (SUPPORT_SID_INTERFACE) | ||
1781 | eError = PVRSRVDissociateDeviceMemKM(hDevCookieInt, asInitInfoKM.hKernelCCBMemInfo); | ||
1782 | #else | ||
1181 | eError = PVRSRVDissociateDeviceMemKM(hDevCookieInt, psSGXDevInitPart2IN->sInitInfo.hKernelCCBMemInfo); | 1783 | eError = PVRSRVDissociateDeviceMemKM(hDevCookieInt, psSGXDevInitPart2IN->sInitInfo.hKernelCCBMemInfo); |
1784 | #endif | ||
1182 | if (eError != PVRSRV_OK) | 1785 | if (eError != PVRSRV_OK) |
1183 | { | 1786 | { |
1184 | bDissociateFailed = IMG_TRUE; | 1787 | bDissociateFailed = IMG_TRUE; |
1185 | } | 1788 | } |
1186 | 1789 | ||
1790 | #if defined (SUPPORT_SID_INTERFACE) | ||
1791 | eError = PVRSRVDissociateDeviceMemKM(hDevCookieInt, asInitInfoKM.hKernelCCBCtlMemInfo); | ||
1792 | #else | ||
1187 | eError = PVRSRVDissociateDeviceMemKM(hDevCookieInt, psSGXDevInitPart2IN->sInitInfo.hKernelCCBCtlMemInfo); | 1793 | eError = PVRSRVDissociateDeviceMemKM(hDevCookieInt, psSGXDevInitPart2IN->sInitInfo.hKernelCCBCtlMemInfo); |
1794 | #endif | ||
1188 | if (eError != PVRSRV_OK) | 1795 | if (eError != PVRSRV_OK) |
1189 | { | 1796 | { |
1190 | bDissociateFailed = IMG_TRUE; | 1797 | bDissociateFailed = IMG_TRUE; |
1191 | } | 1798 | } |
1192 | 1799 | ||
1800 | #if defined (SUPPORT_SID_INTERFACE) | ||
1801 | eError = PVRSRVDissociateDeviceMemKM(hDevCookieInt, asInitInfoKM.hKernelCCBEventKickerMemInfo); | ||
1802 | #else | ||
1193 | eError = PVRSRVDissociateDeviceMemKM(hDevCookieInt, psSGXDevInitPart2IN->sInitInfo.hKernelCCBEventKickerMemInfo); | 1803 | eError = PVRSRVDissociateDeviceMemKM(hDevCookieInt, psSGXDevInitPart2IN->sInitInfo.hKernelCCBEventKickerMemInfo); |
1804 | #endif | ||
1194 | if (eError != PVRSRV_OK) | 1805 | if (eError != PVRSRV_OK) |
1195 | { | 1806 | { |
1196 | bDissociateFailed = IMG_TRUE; | 1807 | bDissociateFailed = IMG_TRUE; |
1197 | } | 1808 | } |
1198 | 1809 | ||
1810 | #if defined (SUPPORT_SID_INTERFACE) | ||
1811 | eError = PVRSRVDissociateDeviceMemKM(hDevCookieInt, asInitInfoKM.hKernelSGXHostCtlMemInfo); | ||
1812 | #else | ||
1199 | eError = PVRSRVDissociateDeviceMemKM(hDevCookieInt, psSGXDevInitPart2IN->sInitInfo.hKernelSGXHostCtlMemInfo); | 1813 | eError = PVRSRVDissociateDeviceMemKM(hDevCookieInt, psSGXDevInitPart2IN->sInitInfo.hKernelSGXHostCtlMemInfo); |
1814 | #endif | ||
1200 | if (eError != PVRSRV_OK) | 1815 | if (eError != PVRSRV_OK) |
1201 | { | 1816 | { |
1202 | bDissociateFailed = IMG_TRUE; | 1817 | bDissociateFailed = IMG_TRUE; |
1203 | } | 1818 | } |
1204 | 1819 | ||
1820 | #if defined (SUPPORT_SID_INTERFACE) | ||
1821 | eError = PVRSRVDissociateDeviceMemKM(hDevCookieInt, asInitInfoKM.hKernelSGXTA3DCtlMemInfo); | ||
1822 | #else | ||
1205 | eError = PVRSRVDissociateDeviceMemKM(hDevCookieInt, psSGXDevInitPart2IN->sInitInfo.hKernelSGXTA3DCtlMemInfo); | 1823 | eError = PVRSRVDissociateDeviceMemKM(hDevCookieInt, psSGXDevInitPart2IN->sInitInfo.hKernelSGXTA3DCtlMemInfo); |
1824 | #endif | ||
1206 | if (eError != PVRSRV_OK) | 1825 | if (eError != PVRSRV_OK) |
1207 | { | 1826 | { |
1208 | bDissociateFailed = IMG_TRUE; | 1827 | bDissociateFailed = IMG_TRUE; |
1209 | } | 1828 | } |
1210 | 1829 | ||
1211 | 1830 | ||
1831 | #if defined (SUPPORT_SID_INTERFACE) | ||
1832 | eError = PVRSRVDissociateDeviceMemKM(hDevCookieInt, asInitInfoKM.hKernelSGXMiscMemInfo); | ||
1833 | #else | ||
1212 | eError = PVRSRVDissociateDeviceMemKM(hDevCookieInt, psSGXDevInitPart2IN->sInitInfo.hKernelSGXMiscMemInfo); | 1834 | eError = PVRSRVDissociateDeviceMemKM(hDevCookieInt, psSGXDevInitPart2IN->sInitInfo.hKernelSGXMiscMemInfo); |
1835 | #endif | ||
1213 | if (eError != PVRSRV_OK) | 1836 | if (eError != PVRSRV_OK) |
1214 | { | 1837 | { |
1215 | bDissociateFailed = IMG_TRUE; | 1838 | bDissociateFailed = IMG_TRUE; |
@@ -1217,47 +1840,186 @@ SGXDevInitPart2BW(IMG_UINT32 ui32BridgeID, | |||
1217 | 1840 | ||
1218 | 1841 | ||
1219 | #if defined(SGX_SUPPORT_HWPROFILING) | 1842 | #if defined(SGX_SUPPORT_HWPROFILING) |
1843 | #if defined (SUPPORT_SID_INTERFACE) | ||
1844 | eError = PVRSRVDissociateDeviceMemKM(hDevCookieInt, asInitInfoKM.hKernelHWProfilingMemInfo); | ||
1845 | if (eError != PVRSRV_OK) | ||
1846 | { | ||
1847 | bDissociateFailed = IMG_TRUE; | ||
1848 | } | ||
1849 | #else | ||
1220 | eError = PVRSRVDissociateDeviceMemKM(hDevCookieInt, psSGXDevInitPart2IN->sInitInfo.hKernelHWProfilingMemInfo); | 1850 | eError = PVRSRVDissociateDeviceMemKM(hDevCookieInt, psSGXDevInitPart2IN->sInitInfo.hKernelHWProfilingMemInfo); |
1221 | bDissociateFailed |= (IMG_BOOL)(eError != PVRSRV_OK); | 1851 | bDissociateFailed |= (IMG_BOOL)(eError != PVRSRV_OK); |
1222 | #endif | 1852 | #endif |
1853 | #endif | ||
1223 | 1854 | ||
1224 | #if defined(SUPPORT_SGX_HWPERF) | 1855 | #if defined(SUPPORT_SGX_HWPERF) |
1856 | #if defined (SUPPORT_SID_INTERFACE) | ||
1857 | eError = PVRSRVDissociateDeviceMemKM(hDevCookieInt, asInitInfoKM.hKernelHWPerfCBMemInfo); | ||
1858 | #else | ||
1225 | eError = PVRSRVDissociateDeviceMemKM(hDevCookieInt, psSGXDevInitPart2IN->sInitInfo.hKernelHWPerfCBMemInfo); | 1859 | eError = PVRSRVDissociateDeviceMemKM(hDevCookieInt, psSGXDevInitPart2IN->sInitInfo.hKernelHWPerfCBMemInfo); |
1860 | #endif | ||
1226 | if (eError != PVRSRV_OK) | 1861 | if (eError != PVRSRV_OK) |
1227 | { | 1862 | { |
1228 | bDissociateFailed = IMG_TRUE; | 1863 | bDissociateFailed = IMG_TRUE; |
1229 | } | 1864 | } |
1230 | #endif | 1865 | #endif |
1231 | 1866 | ||
1867 | #if defined (SUPPORT_SID_INTERFACE) | ||
1868 | eError = PVRSRVDissociateDeviceMemKM(hDevCookieInt, asInitInfoKM.hKernelTASigBufferMemInfo); | ||
1869 | #else | ||
1232 | eError = PVRSRVDissociateDeviceMemKM(hDevCookieInt, psSGXDevInitPart2IN->sInitInfo.hKernelTASigBufferMemInfo); | 1870 | eError = PVRSRVDissociateDeviceMemKM(hDevCookieInt, psSGXDevInitPart2IN->sInitInfo.hKernelTASigBufferMemInfo); |
1871 | #endif | ||
1233 | if (eError != PVRSRV_OK) | 1872 | if (eError != PVRSRV_OK) |
1234 | { | 1873 | { |
1235 | bDissociateFailed = IMG_TRUE; | 1874 | bDissociateFailed = IMG_TRUE; |
1236 | } | 1875 | } |
1237 | 1876 | ||
1877 | #if defined (SUPPORT_SID_INTERFACE) | ||
1878 | eError = PVRSRVDissociateDeviceMemKM(hDevCookieInt, asInitInfoKM.hKernel3DSigBufferMemInfo); | ||
1879 | #else | ||
1238 | eError = PVRSRVDissociateDeviceMemKM(hDevCookieInt, psSGXDevInitPart2IN->sInitInfo.hKernel3DSigBufferMemInfo); | 1880 | eError = PVRSRVDissociateDeviceMemKM(hDevCookieInt, psSGXDevInitPart2IN->sInitInfo.hKernel3DSigBufferMemInfo); |
1881 | #endif | ||
1239 | if (eError != PVRSRV_OK) | 1882 | if (eError != PVRSRV_OK) |
1240 | { | 1883 | { |
1241 | bDissociateFailed = IMG_TRUE; | 1884 | bDissociateFailed = IMG_TRUE; |
1242 | } | 1885 | } |
1243 | 1886 | ||
1244 | #if defined(FIX_HW_BRN_29702) | 1887 | #if defined(FIX_HW_BRN_29702) |
1888 | #if defined (SUPPORT_SID_INTERFACE) | ||
1889 | eError = PVRSRVDissociateDeviceMemKM(hDevCookieInt, asInitInfoKM.hKernelCFIMemInfo); | ||
1890 | if (eError != PVRSRV_OK) | ||
1891 | { | ||
1892 | bDissociateFailed = IMG_TRUE; | ||
1893 | } | ||
1894 | #else | ||
1245 | eError = PVRSRVDissociateDeviceMemKM(hDevCookieInt, psSGXDevInitPart2IN->sInitInfo.hKernelCFIMemInfo); | 1895 | eError = PVRSRVDissociateDeviceMemKM(hDevCookieInt, psSGXDevInitPart2IN->sInitInfo.hKernelCFIMemInfo); |
1246 | bDissociateFailed |= (IMG_BOOL)(eError != PVRSRV_OK); | 1896 | bDissociateFailed |= (IMG_BOOL)(eError != PVRSRV_OK); |
1247 | #endif | 1897 | #endif |
1898 | #endif | ||
1248 | 1899 | ||
1249 | #if defined(FIX_HW_BRN_29823) | 1900 | #if defined(FIX_HW_BRN_29823) |
1901 | #if defined (SUPPORT_SID_INTERFACE) | ||
1902 | eError = PVRSRVDissociateDeviceMemKM(hDevCookieInt, asInitInfoKM.hKernelDummyTermStreamMemInfo); | ||
1903 | if (eError != PVRSRV_OK) | ||
1904 | { | ||
1905 | bDissociateFailed = IMG_TRUE; | ||
1906 | } | ||
1907 | #else | ||
1250 | eError = PVRSRVDissociateDeviceMemKM(hDevCookieInt, psSGXDevInitPart2IN->sInitInfo.hKernelDummyTermStreamMemInfo); | 1908 | eError = PVRSRVDissociateDeviceMemKM(hDevCookieInt, psSGXDevInitPart2IN->sInitInfo.hKernelDummyTermStreamMemInfo); |
1251 | bDissociateFailed |= (IMG_BOOL)(eError != PVRSRV_OK); | 1909 | bDissociateFailed |= (IMG_BOOL)(eError != PVRSRV_OK); |
1252 | #endif | 1910 | #endif |
1911 | #endif | ||
1912 | |||
1913 | #if defined(FIX_HW_BRN_31542) | ||
1914 | #if defined (SUPPORT_SID_INTERFACE) | ||
1915 | eError = PVRSRVDissociateDeviceMemKM(hDevCookieInt, asInitInfoKM.hKernelClearClipWAVDMStreamMemInfo); | ||
1916 | if (eError != PVRSRV_OK) | ||
1917 | { | ||
1918 | bDissociateFailed = IMG_TRUE; | ||
1919 | } | ||
1920 | #else | ||
1921 | eError = PVRSRVDissociateDeviceMemKM(hDevCookieInt, psSGXDevInitPart2IN->sInitInfo.hKernelClearClipWAVDMStreamMemInfo); | ||
1922 | bDissociateFailed |= (IMG_BOOL)(eError != PVRSRV_OK); | ||
1923 | #endif | ||
1924 | #if defined (SUPPORT_SID_INTERFACE) | ||
1925 | eError = PVRSRVDissociateDeviceMemKM(hDevCookieInt, asInitInfoKM.hKernelClearClipWAIndexStreamMemInfo); | ||
1926 | if (eError != PVRSRV_OK) | ||
1927 | { | ||
1928 | bDissociateFailed = IMG_TRUE; | ||
1929 | } | ||
1930 | #else | ||
1931 | eError = PVRSRVDissociateDeviceMemKM(hDevCookieInt, psSGXDevInitPart2IN->sInitInfo.hKernelClearClipWAIndexStreamMemInfo); | ||
1932 | bDissociateFailed |= (IMG_BOOL)(eError != PVRSRV_OK); | ||
1933 | #endif | ||
1934 | #if defined (SUPPORT_SID_INTERFACE) | ||
1935 | eError = PVRSRVDissociateDeviceMemKM(hDevCookieInt, asInitInfoKM.hKernelClearClipWAPDSMemInfo); | ||
1936 | if (eError != PVRSRV_OK) | ||
1937 | { | ||
1938 | bDissociateFailed = IMG_TRUE; | ||
1939 | } | ||
1940 | #else | ||
1941 | eError = PVRSRVDissociateDeviceMemKM(hDevCookieInt, psSGXDevInitPart2IN->sInitInfo.hKernelClearClipWAPDSMemInfo); | ||
1942 | bDissociateFailed |= (IMG_BOOL)(eError != PVRSRV_OK); | ||
1943 | #endif | ||
1944 | #if defined (SUPPORT_SID_INTERFACE) | ||
1945 | eError = PVRSRVDissociateDeviceMemKM(hDevCookieInt, asInitInfoKM.hKernelClearClipWAUSEMemInfo); | ||
1946 | if (eError != PVRSRV_OK) | ||
1947 | { | ||
1948 | bDissociateFailed = IMG_TRUE; | ||
1949 | } | ||
1950 | #else | ||
1951 | eError = PVRSRVDissociateDeviceMemKM(hDevCookieInt, psSGXDevInitPart2IN->sInitInfo.hKernelClearClipWAUSEMemInfo); | ||
1952 | bDissociateFailed |= (IMG_BOOL)(eError != PVRSRV_OK); | ||
1953 | #endif | ||
1954 | #if defined (SUPPORT_SID_INTERFACE) | ||
1955 | eError = PVRSRVDissociateDeviceMemKM(hDevCookieInt, asInitInfoKM.hKernelClearClipWAParamMemInfo); | ||
1956 | if (eError != PVRSRV_OK) | ||
1957 | { | ||
1958 | bDissociateFailed = IMG_TRUE; | ||
1959 | } | ||
1960 | #else | ||
1961 | eError = PVRSRVDissociateDeviceMemKM(hDevCookieInt, psSGXDevInitPart2IN->sInitInfo.hKernelClearClipWAParamMemInfo); | ||
1962 | bDissociateFailed |= (IMG_BOOL)(eError != PVRSRV_OK); | ||
1963 | #endif | ||
1964 | #if defined (SUPPORT_SID_INTERFACE) | ||
1965 | eError = PVRSRVDissociateDeviceMemKM(hDevCookieInt, asInitInfoKM.hKernelClearClipWAPMPTMemInfo); | ||
1966 | if (eError != PVRSRV_OK) | ||
1967 | { | ||
1968 | bDissociateFailed = IMG_TRUE; | ||
1969 | } | ||
1970 | #else | ||
1971 | eError = PVRSRVDissociateDeviceMemKM(hDevCookieInt, psSGXDevInitPart2IN->sInitInfo.hKernelClearClipWAPMPTMemInfo); | ||
1972 | bDissociateFailed |= (IMG_BOOL)(eError != PVRSRV_OK); | ||
1973 | #endif | ||
1974 | #if defined (SUPPORT_SID_INTERFACE) | ||
1975 | eError = PVRSRVDissociateDeviceMemKM(hDevCookieInt, asInitInfoKM.hKernelClearClipWATPCMemInfo); | ||
1976 | if (eError != PVRSRV_OK) | ||
1977 | { | ||
1978 | bDissociateFailed = IMG_TRUE; | ||
1979 | } | ||
1980 | #else | ||
1981 | eError = PVRSRVDissociateDeviceMemKM(hDevCookieInt, psSGXDevInitPart2IN->sInitInfo.hKernelClearClipWATPCMemInfo); | ||
1982 | bDissociateFailed |= (IMG_BOOL)(eError != PVRSRV_OK); | ||
1983 | #endif | ||
1984 | #if defined (SUPPORT_SID_INTERFACE) | ||
1985 | eError = PVRSRVDissociateDeviceMemKM(hDevCookieInt, asInitInfoKM.hKernelClearClipWAPSGRgnHdrMemInfo); | ||
1986 | if (eError != PVRSRV_OK) | ||
1987 | { | ||
1988 | bDissociateFailed = IMG_TRUE; | ||
1989 | } | ||
1990 | #else | ||
1991 | eError = PVRSRVDissociateDeviceMemKM(hDevCookieInt, psSGXDevInitPart2IN->sInitInfo.hKernelClearClipWAPSGRgnHdrMemInfo); | ||
1992 | bDissociateFailed |= (IMG_BOOL)(eError != PVRSRV_OK); | ||
1993 | #endif | ||
1994 | #endif | ||
1995 | |||
1996 | #if defined(SGX_FEATURE_VDM_CONTEXT_SWITCH) && defined(FIX_HW_BRN_31425) | ||
1997 | eError = PVRSRVDissociateDeviceMemKM(hDevCookieInt, psSGXDevInitPart2IN->sInitInfo.hKernelVDMSnapShotBufferMemInfo); | ||
1998 | bDissociateFailed |= (IMG_BOOL)(eError != PVRSRV_OK); | ||
1999 | |||
2000 | eError = PVRSRVDissociateDeviceMemKM(hDevCookieInt, psSGXDevInitPart2IN->sInitInfo.hKernelVDMCtrlStreamBufferMemInfo); | ||
2001 | bDissociateFailed |= (IMG_BOOL)(eError != PVRSRV_OK); | ||
2002 | #endif | ||
1253 | 2003 | ||
1254 | #if defined(PVRSRV_USSE_EDM_STATUS_DEBUG) | 2004 | #if defined(PVRSRV_USSE_EDM_STATUS_DEBUG) |
2005 | #if defined (SUPPORT_SID_INTERFACE) | ||
2006 | eError = PVRSRVDissociateDeviceMemKM(hDevCookieInt, asInitInfoKM.hKernelEDMStatusBufferMemInfo); | ||
2007 | if (eError != PVRSRV_OK) | ||
2008 | { | ||
2009 | bDissociateFailed = IMG_TRUE; | ||
2010 | } | ||
2011 | #else | ||
1255 | eError = PVRSRVDissociateDeviceMemKM(hDevCookieInt, psSGXDevInitPart2IN->sInitInfo.hKernelEDMStatusBufferMemInfo); | 2012 | eError = PVRSRVDissociateDeviceMemKM(hDevCookieInt, psSGXDevInitPart2IN->sInitInfo.hKernelEDMStatusBufferMemInfo); |
1256 | bDissociateFailed |= (IMG_BOOL)(eError != PVRSRV_OK); | 2013 | bDissociateFailed |= (IMG_BOOL)(eError != PVRSRV_OK); |
1257 | #endif | 2014 | #endif |
2015 | #endif | ||
1258 | 2016 | ||
1259 | #if defined(SGX_FEATURE_SPM_MODE_0) | 2017 | #if defined(SGX_FEATURE_SPM_MODE_0) |
2018 | #if defined (SUPPORT_SID_INTERFACE) | ||
2019 | eError = PVRSRVDissociateDeviceMemKM(hDevCookieInt, asInitInfoKM.hKernelTmpDPMStateMemInfo); | ||
2020 | #else | ||
1260 | eError = PVRSRVDissociateDeviceMemKM(hDevCookieInt, psSGXDevInitPart2IN->sInitInfo.hKernelTmpDPMStateMemInfo); | 2021 | eError = PVRSRVDissociateDeviceMemKM(hDevCookieInt, psSGXDevInitPart2IN->sInitInfo.hKernelTmpDPMStateMemInfo); |
2022 | #endif | ||
1261 | if (eError != PVRSRV_OK) | 2023 | if (eError != PVRSRV_OK) |
1262 | { | 2024 | { |
1263 | bDissociateFailed = IMG_TRUE; | 2025 | bDissociateFailed = IMG_TRUE; |
@@ -1266,7 +2028,11 @@ SGXDevInitPart2BW(IMG_UINT32 ui32BridgeID, | |||
1266 | 2028 | ||
1267 | for (i = 0; i < SGX_MAX_INIT_MEM_HANDLES; i++) | 2029 | for (i = 0; i < SGX_MAX_INIT_MEM_HANDLES; i++) |
1268 | { | 2030 | { |
2031 | #if defined (SUPPORT_SID_INTERFACE) | ||
2032 | IMG_HANDLE hHandle = asInitInfoKM.asInitMemHandles[i]; | ||
2033 | #else | ||
1269 | IMG_HANDLE hHandle = psSGXDevInitPart2IN->sInitInfo.asInitMemHandles[i]; | 2034 | IMG_HANDLE hHandle = psSGXDevInitPart2IN->sInitInfo.asInitMemHandles[i]; |
2035 | #endif | ||
1270 | 2036 | ||
1271 | if (hHandle == IMG_NULL) | 2037 | if (hHandle == IMG_NULL) |
1272 | continue; | 2038 | continue; |
@@ -1281,17 +2047,31 @@ SGXDevInitPart2BW(IMG_UINT32 ui32BridgeID, | |||
1281 | 2047 | ||
1282 | if(bDissociateFailed) | 2048 | if(bDissociateFailed) |
1283 | { | 2049 | { |
2050 | #if defined (SUPPORT_SID_INTERFACE) | ||
2051 | PVRSRVFreeDeviceMemKM(hDevCookieInt, asInitInfoKM.hKernelCCBMemInfo); | ||
2052 | PVRSRVFreeDeviceMemKM(hDevCookieInt, asInitInfoKM.hKernelCCBCtlMemInfo); | ||
2053 | PVRSRVFreeDeviceMemKM(hDevCookieInt, asInitInfoKM.hKernelSGXHostCtlMemInfo); | ||
2054 | PVRSRVFreeDeviceMemKM(hDevCookieInt, asInitInfoKM.hKernelSGXTA3DCtlMemInfo); | ||
2055 | PVRSRVFreeDeviceMemKM(hDevCookieInt, asInitInfoKM.hKernelSGXMiscMemInfo); | ||
2056 | #else | ||
1284 | PVRSRVFreeDeviceMemKM(hDevCookieInt, psSGXDevInitPart2IN->sInitInfo.hKernelCCBMemInfo); | 2057 | PVRSRVFreeDeviceMemKM(hDevCookieInt, psSGXDevInitPart2IN->sInitInfo.hKernelCCBMemInfo); |
1285 | PVRSRVFreeDeviceMemKM(hDevCookieInt, psSGXDevInitPart2IN->sInitInfo.hKernelCCBCtlMemInfo); | 2058 | PVRSRVFreeDeviceMemKM(hDevCookieInt, psSGXDevInitPart2IN->sInitInfo.hKernelCCBCtlMemInfo); |
1286 | PVRSRVFreeDeviceMemKM(hDevCookieInt, psSGXDevInitPart2IN->sInitInfo.hKernelSGXHostCtlMemInfo); | 2059 | PVRSRVFreeDeviceMemKM(hDevCookieInt, psSGXDevInitPart2IN->sInitInfo.hKernelSGXHostCtlMemInfo); |
1287 | PVRSRVFreeDeviceMemKM(hDevCookieInt, psSGXDevInitPart2IN->sInitInfo.hKernelSGXTA3DCtlMemInfo); | 2060 | PVRSRVFreeDeviceMemKM(hDevCookieInt, psSGXDevInitPart2IN->sInitInfo.hKernelSGXTA3DCtlMemInfo); |
1288 | PVRSRVFreeDeviceMemKM(hDevCookieInt, psSGXDevInitPart2IN->sInitInfo.hKernelSGXMiscMemInfo); | 2061 | PVRSRVFreeDeviceMemKM(hDevCookieInt, psSGXDevInitPart2IN->sInitInfo.hKernelSGXMiscMemInfo); |
2062 | #endif | ||
1289 | 2063 | ||
1290 | for (i = 0; i < SGX_MAX_INIT_MEM_HANDLES; i++) | 2064 | for (i = 0; i < SGX_MAX_INIT_MEM_HANDLES; i++) |
1291 | { | 2065 | { |
2066 | #if defined (SUPPORT_SID_INTERFACE) | ||
2067 | IMG_HANDLE hHandle = asInitInfoKM.asInitMemHandles[i]; | ||
2068 | |||
2069 | if (hHandle == 0) | ||
2070 | #else | ||
1292 | IMG_HANDLE hHandle = psSGXDevInitPart2IN->sInitInfo.asInitMemHandles[i]; | 2071 | IMG_HANDLE hHandle = psSGXDevInitPart2IN->sInitInfo.asInitMemHandles[i]; |
1293 | 2072 | ||
1294 | if (hHandle == IMG_NULL) | 2073 | if (hHandle == IMG_NULL) |
2074 | #endif | ||
1295 | continue; | 2075 | continue; |
1296 | 2076 | ||
1297 | PVRSRVFreeDeviceMemKM(hDevCookieInt, (PVRSRV_KERNEL_MEM_INFO *)hHandle); | 2077 | PVRSRVFreeDeviceMemKM(hDevCookieInt, (PVRSRV_KERNEL_MEM_INFO *)hHandle); |
@@ -1300,17 +2080,40 @@ SGXDevInitPart2BW(IMG_UINT32 ui32BridgeID, | |||
1300 | 2080 | ||
1301 | PVR_DPF((PVR_DBG_ERROR, "DevInitSGXPart2BW: A dissociate failed")); | 2081 | PVR_DPF((PVR_DBG_ERROR, "DevInitSGXPart2BW: A dissociate failed")); |
1302 | 2082 | ||
1303 | psRetOUT->eError = PVRSRV_ERROR_INIT2_PHASE_FAILED; | 2083 | psSGXDevInitPart2OUT->eError = PVRSRV_ERROR_INIT2_PHASE_FAILED; |
1304 | 2084 | ||
1305 | 2085 | ||
1306 | PVR_DBG_BREAK; | 2086 | PVR_DBG_BREAK; |
1307 | return 0; | 2087 | return 0; |
1308 | } | 2088 | } |
1309 | 2089 | ||
1310 | psRetOUT->eError = | 2090 | #if defined (SUPPORT_SID_INTERFACE) |
2091 | asInitInfoKM.sScripts = psSGXDevInitPart2IN->sInitInfo.sScripts; | ||
2092 | asInitInfoKM.ui32ClientBuildOptions = psSGXDevInitPart2IN->sInitInfo.ui32ClientBuildOptions; | ||
2093 | asInitInfoKM.sSGXStructSizes = psSGXDevInitPart2IN->sInitInfo.sSGXStructSizes; | ||
2094 | asInitInfoKM.ui32CacheControl = psSGXDevInitPart2IN->sInitInfo.ui32CacheControl; | ||
2095 | asInitInfoKM.ui32EDMTaskReg0 = psSGXDevInitPart2IN->sInitInfo.ui32EDMTaskReg0; | ||
2096 | asInitInfoKM.ui32EDMTaskReg1 = psSGXDevInitPart2IN->sInitInfo.ui32EDMTaskReg1; | ||
2097 | asInitInfoKM.ui32ClkGateStatusReg = psSGXDevInitPart2IN->sInitInfo.ui32ClkGateStatusReg; | ||
2098 | asInitInfoKM.ui32ClkGateStatusMask = psSGXDevInitPart2IN->sInitInfo.ui32ClkGateStatusMask; | ||
2099 | |||
2100 | OSMemCopy(&asInitInfoKM.asInitDevData , | ||
2101 | &psSGXDevInitPart2IN->sInitInfo.asInitDevData, | ||
2102 | sizeof(asInitInfoKM.asInitDevData)); | ||
2103 | OSMemCopy(&asInitInfoKM.aui32HostKickAddr, | ||
2104 | &psSGXDevInitPart2IN->sInitInfo.aui32HostKickAddr, | ||
2105 | sizeof(asInitInfoKM.aui32HostKickAddr)); | ||
2106 | |||
2107 | psSGXDevInitPart2OUT->eError = | ||
2108 | DevInitSGXPart2KM(psPerProc, | ||
2109 | hDevCookieInt, | ||
2110 | &asInitInfoKM); | ||
2111 | #else | ||
2112 | psSGXDevInitPart2OUT->eError = | ||
1311 | DevInitSGXPart2KM(psPerProc, | 2113 | DevInitSGXPart2KM(psPerProc, |
1312 | hDevCookieInt, | 2114 | hDevCookieInt, |
1313 | &psSGXDevInitPart2IN->sInitInfo); | 2115 | &psSGXDevInitPart2IN->sInitInfo); |
2116 | #endif | ||
1314 | 2117 | ||
1315 | return 0; | 2118 | return 0; |
1316 | } | 2119 | } |
@@ -1449,7 +2252,11 @@ SGXUnregisterHWTransferContextBW(IMG_UINT32 ui32BridgeID, | |||
1449 | PVRSRV_BRIDGE_RETURN *psRetOUT, | 2252 | PVRSRV_BRIDGE_RETURN *psRetOUT, |
1450 | PVRSRV_PER_PROCESS_DATA *psPerProc) | 2253 | PVRSRV_PER_PROCESS_DATA *psPerProc) |
1451 | { | 2254 | { |
2255 | #if defined (SUPPORT_SID_INTERFACE) | ||
2256 | IMG_HANDLE hHWTransferContextInt = 0; | ||
2257 | #else | ||
1452 | IMG_HANDLE hHWTransferContextInt; | 2258 | IMG_HANDLE hHWTransferContextInt; |
2259 | #endif | ||
1453 | 2260 | ||
1454 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_SGX_UNREGISTER_HW_TRANSFER_CONTEXT); | 2261 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_SGX_UNREGISTER_HW_TRANSFER_CONTEXT); |
1455 | 2262 | ||
@@ -1598,7 +2405,8 @@ SGX2DQueryBlitsCompleteBW(IMG_UINT32 ui32BridgeID, | |||
1598 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_SGX_2DQUERYBLTSCOMPLETE); | 2405 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_SGX_2DQUERYBLTSCOMPLETE); |
1599 | 2406 | ||
1600 | psRetOUT->eError = | 2407 | psRetOUT->eError = |
1601 | PVRSRVLookupHandle(psPerProc->psHandleBase, &hDevCookieInt, | 2408 | PVRSRVLookupHandle(psPerProc->psHandleBase, |
2409 | &hDevCookieInt, | ||
1602 | ps2DQueryBltsCompleteIN->hDevCookie, | 2410 | ps2DQueryBltsCompleteIN->hDevCookie, |
1603 | PVRSRV_HANDLE_TYPE_DEV_NODE); | 2411 | PVRSRV_HANDLE_TYPE_DEV_NODE); |
1604 | if(psRetOUT->eError != PVRSRV_OK) | 2412 | if(psRetOUT->eError != PVRSRV_OK) |
@@ -1607,7 +2415,8 @@ SGX2DQueryBlitsCompleteBW(IMG_UINT32 ui32BridgeID, | |||
1607 | } | 2415 | } |
1608 | 2416 | ||
1609 | psRetOUT->eError = | 2417 | psRetOUT->eError = |
1610 | PVRSRVLookupHandle(psPerProc->psHandleBase, &pvSyncInfo, | 2418 | PVRSRVLookupHandle(psPerProc->psHandleBase, |
2419 | &pvSyncInfo, | ||
1611 | ps2DQueryBltsCompleteIN->hKernSyncInfo, | 2420 | ps2DQueryBltsCompleteIN->hKernSyncInfo, |
1612 | PVRSRV_HANDLE_TYPE_SYNC_INFO); | 2421 | PVRSRV_HANDLE_TYPE_SYNC_INFO); |
1613 | if(psRetOUT->eError != PVRSRV_OK) | 2422 | if(psRetOUT->eError != PVRSRV_OK) |
@@ -1808,7 +2617,11 @@ SGXAddSharedPBDescBW(IMG_UINT32 ui32BridgeID, | |||
1808 | IMG_UINT32 ui32KernelMemInfoHandlesCount = | 2617 | IMG_UINT32 ui32KernelMemInfoHandlesCount = |
1809 | psSGXAddSharedPBDescIN->ui32KernelMemInfoHandlesCount; | 2618 | psSGXAddSharedPBDescIN->ui32KernelMemInfoHandlesCount; |
1810 | IMG_INT ret = 0; | 2619 | IMG_INT ret = 0; |
2620 | #if defined (SUPPORT_SID_INTERFACE) | ||
2621 | IMG_SID *phKernelMemInfoHandles = 0; | ||
2622 | #else | ||
1811 | IMG_HANDLE *phKernelMemInfoHandles = IMG_NULL; | 2623 | IMG_HANDLE *phKernelMemInfoHandles = IMG_NULL; |
2624 | #endif | ||
1812 | PVRSRV_KERNEL_MEM_INFO **ppsKernelMemInfos = IMG_NULL; | 2625 | PVRSRV_KERNEL_MEM_INFO **ppsKernelMemInfos = IMG_NULL; |
1813 | IMG_UINT32 i; | 2626 | IMG_UINT32 i; |
1814 | PVRSRV_ERROR eError; | 2627 | PVRSRV_ERROR eError; |
@@ -1964,7 +2777,8 @@ SGXAddSharedPBDescBW(IMG_UINT32 ui32BridgeID, | |||
1964 | psSGXAddSharedPBDescIN->ui32TotalPBSize, | 2777 | psSGXAddSharedPBDescIN->ui32TotalPBSize, |
1965 | &hSharedPBDesc, | 2778 | &hSharedPBDesc, |
1966 | ppsKernelMemInfos, | 2779 | ppsKernelMemInfos, |
1967 | ui32KernelMemInfoHandlesCount); | 2780 | ui32KernelMemInfoHandlesCount, |
2781 | psSGXAddSharedPBDescIN->sHWPBDescDevVAddr); | ||
1968 | 2782 | ||
1969 | 2783 | ||
1970 | if (eError != PVRSRV_OK) | 2784 | if (eError != PVRSRV_OK) |
@@ -2013,6 +2827,9 @@ SGXGetInfoForSrvinitBW(IMG_UINT32 ui32BridgeID, | |||
2013 | { | 2827 | { |
2014 | IMG_HANDLE hDevCookieInt; | 2828 | IMG_HANDLE hDevCookieInt; |
2015 | IMG_UINT32 i; | 2829 | IMG_UINT32 i; |
2830 | #if defined (SUPPORT_SID_INTERFACE) | ||
2831 | PVRSRV_HEAP_INFO_KM asHeapInfo[PVRSRV_MAX_CLIENT_HEAPS]; | ||
2832 | #endif | ||
2016 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_SGXINFO_FOR_SRVINIT); | 2833 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_SGXINFO_FOR_SRVINIT); |
2017 | 2834 | ||
2018 | NEW_HANDLE_BATCH_OR_ERROR(psSGXInfoForSrvinitOUT->eError, psPerProc, PVRSRV_MAX_CLIENT_HEAPS); | 2835 | NEW_HANDLE_BATCH_OR_ERROR(psSGXInfoForSrvinitOUT->eError, psPerProc, PVRSRV_MAX_CLIENT_HEAPS); |
@@ -2035,7 +2852,12 @@ SGXGetInfoForSrvinitBW(IMG_UINT32 ui32BridgeID, | |||
2035 | 2852 | ||
2036 | psSGXInfoForSrvinitOUT->eError = | 2853 | psSGXInfoForSrvinitOUT->eError = |
2037 | SGXGetInfoForSrvinitKM(hDevCookieInt, | 2854 | SGXGetInfoForSrvinitKM(hDevCookieInt, |
2855 | #if defined (SUPPORT_SID_INTERFACE) | ||
2856 | &asHeapInfo[0], | ||
2857 | &psSGXInfoForSrvinitOUT->sInitInfo.sPDDevPAddr); | ||
2858 | #else | ||
2038 | &psSGXInfoForSrvinitOUT->sInitInfo); | 2859 | &psSGXInfoForSrvinitOUT->sInitInfo); |
2860 | #endif | ||
2039 | 2861 | ||
2040 | if(psSGXInfoForSrvinitOUT->eError != PVRSRV_OK) | 2862 | if(psSGXInfoForSrvinitOUT->eError != PVRSRV_OK) |
2041 | { | 2863 | { |
@@ -2048,6 +2870,28 @@ SGXGetInfoForSrvinitBW(IMG_UINT32 ui32BridgeID, | |||
2048 | 2870 | ||
2049 | psHeapInfo = &psSGXInfoForSrvinitOUT->sInitInfo.asHeapInfo[i]; | 2871 | psHeapInfo = &psSGXInfoForSrvinitOUT->sInitInfo.asHeapInfo[i]; |
2050 | 2872 | ||
2873 | #if defined (SUPPORT_SID_INTERFACE) | ||
2874 | if ((asHeapInfo[i].ui32HeapID != (IMG_UINT32)SGX_UNDEFINED_HEAP_ID) && | ||
2875 | (asHeapInfo[i].hDevMemHeap != IMG_NULL)) | ||
2876 | { | ||
2877 | |||
2878 | PVRSRVAllocHandleNR(psPerProc->psHandleBase, | ||
2879 | &psHeapInfo->hDevMemHeap, | ||
2880 | asHeapInfo[i].hDevMemHeap, | ||
2881 | PVRSRV_HANDLE_TYPE_DEV_MEM_HEAP, | ||
2882 | PVRSRV_HANDLE_ALLOC_FLAG_SHARED); | ||
2883 | } | ||
2884 | else | ||
2885 | { | ||
2886 | psHeapInfo->hDevMemHeap = 0; | ||
2887 | } | ||
2888 | |||
2889 | psHeapInfo->ui32HeapID = asHeapInfo[i].ui32HeapID; | ||
2890 | psHeapInfo->sDevVAddrBase = asHeapInfo[i].sDevVAddrBase; | ||
2891 | psHeapInfo->ui32HeapByteSize = asHeapInfo[i].ui32HeapByteSize; | ||
2892 | psHeapInfo->ui32Attribs = asHeapInfo[i].ui32Attribs; | ||
2893 | psHeapInfo->ui32XTileStride = asHeapInfo[i].ui32XTileStride; | ||
2894 | #else | ||
2051 | if (psHeapInfo->ui32HeapID != (IMG_UINT32)SGX_UNDEFINED_HEAP_ID) | 2895 | if (psHeapInfo->ui32HeapID != (IMG_UINT32)SGX_UNDEFINED_HEAP_ID) |
2052 | { | 2896 | { |
2053 | IMG_HANDLE hDevMemHeapExt; | 2897 | IMG_HANDLE hDevMemHeapExt; |
@@ -2063,6 +2907,7 @@ SGXGetInfoForSrvinitBW(IMG_UINT32 ui32BridgeID, | |||
2063 | psHeapInfo->hDevMemHeap = hDevMemHeapExt; | 2907 | psHeapInfo->hDevMemHeap = hDevMemHeapExt; |
2064 | } | 2908 | } |
2065 | } | 2909 | } |
2910 | #endif | ||
2066 | } | 2911 | } |
2067 | 2912 | ||
2068 | COMMIT_HANDLE_BATCH_OR_ERROR(psSGXInfoForSrvinitOUT->eError, psPerProc); | 2913 | COMMIT_HANDLE_BATCH_OR_ERROR(psSGXInfoForSrvinitOUT->eError, psPerProc); |
@@ -2072,17 +2917,25 @@ SGXGetInfoForSrvinitBW(IMG_UINT32 ui32BridgeID, | |||
2072 | 2917 | ||
2073 | #if defined(PDUMP) | 2918 | #if defined(PDUMP) |
2074 | static IMG_VOID | 2919 | static IMG_VOID |
2075 | DumpBufferArray(PVRSRV_PER_PROCESS_DATA *psPerProc, | 2920 | DumpBufferArray(PVRSRV_PER_PROCESS_DATA *psPerProc, |
2921 | #if defined (SUPPORT_SID_INTERFACE) | ||
2922 | PSGX_KICKTA_DUMP_BUFFER_KM psBufferArray, | ||
2923 | #else | ||
2076 | PSGX_KICKTA_DUMP_BUFFER psBufferArray, | 2924 | PSGX_KICKTA_DUMP_BUFFER psBufferArray, |
2077 | IMG_UINT32 ui32BufferArrayLength, | 2925 | #endif |
2078 | IMG_BOOL bDumpPolls) | 2926 | IMG_UINT32 ui32BufferArrayLength, |
2927 | IMG_BOOL bDumpPolls) | ||
2079 | { | 2928 | { |
2080 | IMG_UINT32 i; | 2929 | IMG_UINT32 i; |
2081 | 2930 | ||
2082 | for (i=0; i<ui32BufferArrayLength; i++) | 2931 | for (i=0; i<ui32BufferArrayLength; i++) |
2083 | { | 2932 | { |
2933 | #if defined (SUPPORT_SID_INTERFACE) | ||
2934 | PSGX_KICKTA_DUMP_BUFFER_KM psBuffer; | ||
2935 | #else | ||
2084 | PSGX_KICKTA_DUMP_BUFFER psBuffer; | 2936 | PSGX_KICKTA_DUMP_BUFFER psBuffer; |
2085 | PVRSRV_KERNEL_MEM_INFO *psCtrlMemInfoKM; | 2937 | #endif |
2938 | PVRSRV_KERNEL_MEM_INFO *psCtrlMemInfoKM; | ||
2086 | IMG_CHAR * pszName; | 2939 | IMG_CHAR * pszName; |
2087 | IMG_HANDLE hUniqueTag; | 2940 | IMG_HANDLE hUniqueTag; |
2088 | IMG_UINT32 ui32Offset; | 2941 | IMG_UINT32 ui32Offset; |
@@ -2191,7 +3044,12 @@ SGXPDumpBufferArrayBW(IMG_UINT32 ui32BridgeID, | |||
2191 | PVRSRV_PER_PROCESS_DATA *psPerProc) | 3044 | PVRSRV_PER_PROCESS_DATA *psPerProc) |
2192 | { | 3045 | { |
2193 | IMG_UINT32 i; | 3046 | IMG_UINT32 i; |
3047 | #if defined (SUPPORT_SID_INTERFACE) | ||
3048 | SGX_KICKTA_DUMP_BUFFER *psUMPtr; | ||
3049 | SGX_KICKTA_DUMP_BUFFER_KM *psKickTADumpBufferKM, *psKMPtr; | ||
3050 | #else | ||
2194 | SGX_KICKTA_DUMP_BUFFER *psKickTADumpBuffer; | 3051 | SGX_KICKTA_DUMP_BUFFER *psKickTADumpBuffer; |
3052 | #endif | ||
2195 | IMG_UINT32 ui32BufferArrayLength = | 3053 | IMG_UINT32 ui32BufferArrayLength = |
2196 | psPDumpBufferArrayIN->ui32BufferArrayLength; | 3054 | psPDumpBufferArrayIN->ui32BufferArrayLength; |
2197 | IMG_UINT32 ui32BufferArraySize = | 3055 | IMG_UINT32 ui32BufferArraySize = |
@@ -2202,14 +3060,22 @@ SGXPDumpBufferArrayBW(IMG_UINT32 ui32BridgeID, | |||
2202 | 3060 | ||
2203 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_SGX_PDUMP_BUFFER_ARRAY); | 3061 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_SGX_PDUMP_BUFFER_ARRAY); |
2204 | 3062 | ||
3063 | #if defined (SUPPORT_SID_INTERFACE) | ||
3064 | if(OSAllocMem(PVRSRV_OS_PAGEABLE_HEAP, | ||
3065 | ui32BufferArraySize, | ||
3066 | (IMG_PVOID *)&psKickTADumpBufferKM, 0, | ||
3067 | "Array of Kick Tile Accelerator Dump Buffer") != PVRSRV_OK) | ||
3068 | #else | ||
2205 | if(OSAllocMem(PVRSRV_OS_PAGEABLE_HEAP, | 3069 | if(OSAllocMem(PVRSRV_OS_PAGEABLE_HEAP, |
2206 | ui32BufferArraySize, | 3070 | ui32BufferArraySize, |
2207 | (IMG_PVOID *)&psKickTADumpBuffer, 0, | 3071 | (IMG_PVOID *)&psKickTADumpBuffer, 0, |
2208 | "Array of Kick Tile Accelerator Dump Buffer") != PVRSRV_OK) | 3072 | "Array of Kick Tile Accelerator Dump Buffer") != PVRSRV_OK) |
3073 | #endif | ||
2209 | { | 3074 | { |
2210 | return -ENOMEM; | 3075 | return -ENOMEM; |
2211 | } | 3076 | } |
2212 | 3077 | ||
3078 | #if !defined (SUPPORT_SID_INTERFACE) | ||
2213 | if(CopyFromUserWrapper(psPerProc, | 3079 | if(CopyFromUserWrapper(psPerProc, |
2214 | ui32BridgeID, | 3080 | ui32BridgeID, |
2215 | psKickTADumpBuffer, | 3081 | psKickTADumpBuffer, |
@@ -2220,14 +3086,25 @@ SGXPDumpBufferArrayBW(IMG_UINT32 ui32BridgeID, | |||
2220 | 3086 | ||
2221 | return -EFAULT; | 3087 | return -EFAULT; |
2222 | } | 3088 | } |
3089 | #endif | ||
2223 | 3090 | ||
2224 | for(i = 0; i < ui32BufferArrayLength; i++) | 3091 | for(i = 0; i < ui32BufferArrayLength; i++) |
2225 | { | 3092 | { |
3093 | #if defined (SUPPORT_SID_INTERFACE) | ||
3094 | IMG_VOID *pvMemInfo = IMG_NULL; | ||
3095 | psUMPtr = &psPDumpBufferArrayIN->psBufferArray[i]; | ||
3096 | psKMPtr = &psKickTADumpBufferKM[i]; | ||
3097 | #else | ||
2226 | IMG_VOID *pvMemInfo; | 3098 | IMG_VOID *pvMemInfo; |
3099 | #endif | ||
2227 | 3100 | ||
2228 | eError = PVRSRVLookupHandle(psPerProc->psHandleBase, | 3101 | eError = PVRSRVLookupHandle(psPerProc->psHandleBase, |
2229 | &pvMemInfo, | 3102 | &pvMemInfo, |
3103 | #if defined (SUPPORT_SID_INTERFACE) | ||
3104 | psUMPtr->hKernelMemInfo, | ||
3105 | #else | ||
2230 | psKickTADumpBuffer[i].hKernelMemInfo, | 3106 | psKickTADumpBuffer[i].hKernelMemInfo, |
3107 | #endif | ||
2231 | PVRSRV_HANDLE_TYPE_MEM_INFO); | 3108 | PVRSRV_HANDLE_TYPE_MEM_INFO); |
2232 | 3109 | ||
2233 | if(eError != PVRSRV_OK) | 3110 | if(eError != PVRSRV_OK) |
@@ -2236,12 +3113,20 @@ SGXPDumpBufferArrayBW(IMG_UINT32 ui32BridgeID, | |||
2236 | "PVRSRVLookupHandle failed (%d)", eError)); | 3113 | "PVRSRVLookupHandle failed (%d)", eError)); |
2237 | break; | 3114 | break; |
2238 | } | 3115 | } |
3116 | #if defined (SUPPORT_SID_INTERFACE) | ||
3117 | psKMPtr->hKernelMemInfo = pvMemInfo; | ||
3118 | #else | ||
2239 | psKickTADumpBuffer[i].hKernelMemInfo = pvMemInfo; | 3119 | psKickTADumpBuffer[i].hKernelMemInfo = pvMemInfo; |
3120 | #endif | ||
2240 | 3121 | ||
2241 | #if defined(SUPPORT_SGX_NEW_STATUS_VALS) | 3122 | #if defined(SUPPORT_SGX_NEW_STATUS_VALS) |
2242 | eError = PVRSRVLookupHandle(psPerProc->psHandleBase, | 3123 | eError = PVRSRVLookupHandle(psPerProc->psHandleBase, |
2243 | &pvMemInfo, | 3124 | &pvMemInfo, |
3125 | #if defined (SUPPORT_SID_INTERFACE) | ||
3126 | psUMPtr->hCtrlKernelMemInfo, | ||
3127 | #else | ||
2244 | psKickTADumpBuffer[i].hCtrlKernelMemInfo, | 3128 | psKickTADumpBuffer[i].hCtrlKernelMemInfo, |
3129 | #endif | ||
2245 | PVRSRV_HANDLE_TYPE_MEM_INFO); | 3130 | PVRSRV_HANDLE_TYPE_MEM_INFO); |
2246 | 3131 | ||
2247 | if(eError != PVRSRV_OK) | 3132 | if(eError != PVRSRV_OK) |
@@ -2250,19 +3135,43 @@ SGXPDumpBufferArrayBW(IMG_UINT32 ui32BridgeID, | |||
2250 | "PVRSRVLookupHandle failed (%d)", eError)); | 3135 | "PVRSRVLookupHandle failed (%d)", eError)); |
2251 | break; | 3136 | break; |
2252 | } | 3137 | } |
3138 | #if defined (SUPPORT_SID_INTERFACE) | ||
3139 | psKMPtr->hCtrlKernelMemInfo = pvMemInfo; | ||
3140 | psKMPtr->sCtrlDevVAddr = psUMPtr->sCtrlDevVAddr; | ||
3141 | #else | ||
2253 | psKickTADumpBuffer[i].hCtrlKernelMemInfo = pvMemInfo; | 3142 | psKickTADumpBuffer[i].hCtrlKernelMemInfo = pvMemInfo; |
2254 | #endif | 3143 | #endif |
3144 | #endif | ||
3145 | |||
3146 | #if defined (SUPPORT_SID_INTERFACE) | ||
3147 | psKMPtr->ui32SpaceUsed = psUMPtr->ui32SpaceUsed; | ||
3148 | psKMPtr->ui32Start = psUMPtr->ui32Start; | ||
3149 | psKMPtr->ui32End = psUMPtr->ui32End; | ||
3150 | psKMPtr->ui32BufferSize = psUMPtr->ui32BufferSize; | ||
3151 | psKMPtr->ui32BackEndLength = psUMPtr->ui32BackEndLength; | ||
3152 | psKMPtr->uiAllocIndex = psUMPtr->uiAllocIndex; | ||
3153 | psKMPtr->pvLinAddr = psUMPtr->pvLinAddr; | ||
3154 | psKMPtr->pszName = psUMPtr->pszName; | ||
3155 | #endif | ||
2255 | } | 3156 | } |
2256 | 3157 | ||
2257 | if(eError == PVRSRV_OK) | 3158 | if(eError == PVRSRV_OK) |
2258 | { | 3159 | { |
2259 | DumpBufferArray(psPerProc, | 3160 | DumpBufferArray(psPerProc, |
3161 | #if defined (SUPPORT_SID_INTERFACE) | ||
3162 | psKickTADumpBufferKM, | ||
3163 | #else | ||
2260 | psKickTADumpBuffer, | 3164 | psKickTADumpBuffer, |
3165 | #endif | ||
2261 | ui32BufferArrayLength, | 3166 | ui32BufferArrayLength, |
2262 | psPDumpBufferArrayIN->bDumpPolls); | 3167 | psPDumpBufferArrayIN->bDumpPolls); |
2263 | } | 3168 | } |
2264 | 3169 | ||
3170 | #if defined (SUPPORT_SID_INTERFACE) | ||
3171 | OSFreeMem(PVRSRV_OS_PAGEABLE_HEAP, ui32BufferArraySize, psKickTADumpBufferKM, 0); | ||
3172 | #else | ||
2265 | OSFreeMem(PVRSRV_OS_PAGEABLE_HEAP, ui32BufferArraySize, psKickTADumpBuffer, 0); | 3173 | OSFreeMem(PVRSRV_OS_PAGEABLE_HEAP, ui32BufferArraySize, psKickTADumpBuffer, 0); |
3174 | #endif | ||
2266 | 3175 | ||
2267 | 3176 | ||
2268 | return 0; | 3177 | return 0; |
@@ -2276,11 +3185,13 @@ SGXPDump3DSignatureRegistersBW(IMG_UINT32 ui32BridgeID, | |||
2276 | { | 3185 | { |
2277 | IMG_UINT32 ui32RegisterArraySize = psPDump3DSignatureRegistersIN->ui32NumRegisters * sizeof(IMG_UINT32); | 3186 | IMG_UINT32 ui32RegisterArraySize = psPDump3DSignatureRegistersIN->ui32NumRegisters * sizeof(IMG_UINT32); |
2278 | IMG_UINT32 *pui32Registers = IMG_NULL; | 3187 | IMG_UINT32 *pui32Registers = IMG_NULL; |
2279 | PVRSRV_SGXDEV_INFO *psDevInfo = IMG_NULL; | 3188 | PVRSRV_SGXDEV_INFO *psDevInfo; |
2280 | #if defined(SGX_FEATURE_MP) && defined(FIX_HW_BRN_27270) | 3189 | #if defined(SGX_FEATURE_MP) && defined(FIX_HW_BRN_27270) |
2281 | IMG_UINT32 ui32RegVal = 0; | 3190 | IMG_UINT32 ui32RegVal = 0; |
2282 | #endif | 3191 | #endif |
2283 | PVRSRV_DEVICE_NODE *psDeviceNode; | 3192 | PVRSRV_DEVICE_NODE *psDeviceNode; |
3193 | IMG_HANDLE hDevMemContextInt = 0; | ||
3194 | IMG_UINT32 ui32MMUContextID; | ||
2284 | IMG_INT ret = -EFAULT; | 3195 | IMG_INT ret = -EFAULT; |
2285 | 3196 | ||
2286 | PVR_UNREFERENCED_PARAMETER(psRetOUT); | 3197 | PVR_UNREFERENCED_PARAMETER(psRetOUT); |
@@ -2293,7 +3204,8 @@ SGXPDump3DSignatureRegistersBW(IMG_UINT32 ui32BridgeID, | |||
2293 | } | 3204 | } |
2294 | 3205 | ||
2295 | psRetOUT->eError = | 3206 | psRetOUT->eError = |
2296 | PVRSRVLookupHandle(psPerProc->psHandleBase, (IMG_VOID**)&psDeviceNode, | 3207 | PVRSRVLookupHandle(psPerProc->psHandleBase, |
3208 | (IMG_VOID**)&psDeviceNode, | ||
2297 | psPDump3DSignatureRegistersIN->hDevCookie, | 3209 | psPDump3DSignatureRegistersIN->hDevCookie, |
2298 | PVRSRV_HANDLE_TYPE_DEV_NODE); | 3210 | PVRSRV_HANDLE_TYPE_DEV_NODE); |
2299 | if(psRetOUT->eError != PVRSRV_OK) | 3211 | if(psRetOUT->eError != PVRSRV_OK) |
@@ -2339,17 +3251,33 @@ SGXPDump3DSignatureRegistersBW(IMG_UINT32 ui32BridgeID, | |||
2339 | pui32Registers, | 3251 | pui32Registers, |
2340 | psPDump3DSignatureRegistersIN->ui32NumRegisters); | 3252 | psPDump3DSignatureRegistersIN->ui32NumRegisters); |
2341 | 3253 | ||
3254 | psRetOUT->eError = | ||
3255 | PVRSRVLookupHandle( psPerProc->psHandleBase, | ||
3256 | &hDevMemContextInt, | ||
3257 | psPDump3DSignatureRegistersIN->hDevMemContext, | ||
3258 | PVRSRV_HANDLE_TYPE_DEV_MEM_CONTEXT); | ||
3259 | if(psRetOUT->eError != PVRSRV_OK) | ||
3260 | { | ||
3261 | return 0; | ||
3262 | } | ||
3263 | |||
3264 | |||
3265 | PVR_ASSERT(psDeviceNode->pfnMMUGetContextID != IMG_NULL) | ||
3266 | ui32MMUContextID = psDeviceNode->pfnMMUGetContextID(hDevMemContextInt); | ||
3267 | |||
2342 | PDumpSignatureBuffer(&psDeviceNode->sDevId, | 3268 | PDumpSignatureBuffer(&psDeviceNode->sDevId, |
2343 | "out.tasig", "TA", 0, | 3269 | "out.tasig", "TA", 0, |
2344 | psDevInfo->psKernelTASigBufferMemInfo->sDevVAddr, | 3270 | psDevInfo->psKernelTASigBufferMemInfo->sDevVAddr, |
2345 | psDevInfo->psKernelTASigBufferMemInfo->ui32AllocSize, | 3271 | (IMG_UINT32)psDevInfo->psKernelTASigBufferMemInfo->uAllocSize, |
3272 | ui32MMUContextID, | ||
2346 | 0 ); | 3273 | 0 ); |
2347 | PDumpSignatureBuffer(&psDeviceNode->sDevId, | 3274 | PDumpSignatureBuffer(&psDeviceNode->sDevId, |
2348 | "out.3dsig", "3D", 0, | 3275 | "out.3dsig", "3D", 0, |
2349 | psDevInfo->psKernel3DSigBufferMemInfo->sDevVAddr, | 3276 | psDevInfo->psKernel3DSigBufferMemInfo->sDevVAddr, |
2350 | psDevInfo->psKernel3DSigBufferMemInfo->ui32AllocSize, | 3277 | (IMG_UINT32)psDevInfo->psKernel3DSigBufferMemInfo->uAllocSize, |
3278 | ui32MMUContextID, | ||
2351 | 0 ); | 3279 | 0 ); |
2352 | 3280 | ||
2353 | ExitNoError: | 3281 | ExitNoError: |
2354 | psRetOUT->eError = PVRSRV_OK; | 3282 | psRetOUT->eError = PVRSRV_OK; |
2355 | ret = 0; | 3283 | ret = 0; |
@@ -2381,7 +3309,7 @@ SGXPDumpCounterRegistersBW(IMG_UINT32 ui32BridgeID, | |||
2381 | { | 3309 | { |
2382 | IMG_UINT32 ui32RegisterArraySize = psPDumpCounterRegistersIN->ui32NumRegisters * sizeof(IMG_UINT32); | 3310 | IMG_UINT32 ui32RegisterArraySize = psPDumpCounterRegistersIN->ui32NumRegisters * sizeof(IMG_UINT32); |
2383 | IMG_UINT32 *pui32Registers = IMG_NULL; | 3311 | IMG_UINT32 *pui32Registers = IMG_NULL; |
2384 | PVRSRV_DEVICE_NODE *psDeviceNode; | 3312 | PVRSRV_DEVICE_NODE *psDeviceNode ; |
2385 | IMG_INT ret = -EFAULT; | 3313 | IMG_INT ret = -EFAULT; |
2386 | 3314 | ||
2387 | PVR_UNREFERENCED_PARAMETER(psBridgeOut); | 3315 | PVR_UNREFERENCED_PARAMETER(psBridgeOut); |
@@ -2393,9 +3321,10 @@ SGXPDumpCounterRegistersBW(IMG_UINT32 ui32BridgeID, | |||
2393 | goto ExitNoError; | 3321 | goto ExitNoError; |
2394 | } | 3322 | } |
2395 | 3323 | ||
2396 | if(PVRSRVLookupHandle(psPerProc->psHandleBase, (IMG_VOID**)&psDeviceNode, | 3324 | if(PVRSRVLookupHandle(psPerProc->psHandleBase, |
2397 | psPDumpCounterRegistersIN->hDevCookie, | 3325 | (IMG_VOID**)&psDeviceNode, |
2398 | PVRSRV_HANDLE_TYPE_DEV_NODE) != PVRSRV_OK) | 3326 | psPDumpCounterRegistersIN->hDevCookie, |
3327 | PVRSRV_HANDLE_TYPE_DEV_NODE) != PVRSRV_OK) | ||
2399 | { | 3328 | { |
2400 | PVR_DPF((PVR_DBG_ERROR, "SGXPDumpCounterRegistersBW: hDevCookie lookup failed")); | 3329 | PVR_DPF((PVR_DBG_ERROR, "SGXPDumpCounterRegistersBW: hDevCookie lookup failed")); |
2401 | ret = -ENOMEM; | 3330 | ret = -ENOMEM; |
@@ -2545,6 +3474,8 @@ SGXPDumpHWPerfCBBW(IMG_UINT32 ui32BridgeID, | |||
2545 | #if defined(__linux__) | 3474 | #if defined(__linux__) |
2546 | PVRSRV_SGXDEV_INFO *psDevInfo; | 3475 | PVRSRV_SGXDEV_INFO *psDevInfo; |
2547 | PVRSRV_DEVICE_NODE *psDeviceNode; | 3476 | PVRSRV_DEVICE_NODE *psDeviceNode; |
3477 | IMG_HANDLE hDevMemContextInt = 0; | ||
3478 | IMG_UINT32 ui32MMUContextID = 0; | ||
2548 | 3479 | ||
2549 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_SGX_PDUMP_HWPERFCB); | 3480 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_SGX_PDUMP_HWPERFCB); |
2550 | 3481 | ||
@@ -2559,11 +3490,26 @@ SGXPDumpHWPerfCBBW(IMG_UINT32 ui32BridgeID, | |||
2559 | 3490 | ||
2560 | psDevInfo = psDeviceNode->pvDevice; | 3491 | psDevInfo = psDeviceNode->pvDevice; |
2561 | 3492 | ||
3493 | psRetOUT->eError = | ||
3494 | PVRSRVLookupHandle( psPerProc->psHandleBase, | ||
3495 | &hDevMemContextInt, | ||
3496 | psPDumpHWPerfCBIN->hDevMemContext, | ||
3497 | PVRSRV_HANDLE_TYPE_DEV_MEM_CONTEXT); | ||
3498 | if(psRetOUT->eError != PVRSRV_OK) | ||
3499 | { | ||
3500 | return 0; | ||
3501 | } | ||
3502 | |||
3503 | |||
3504 | PVR_ASSERT(psDeviceNode->pfnMMUGetContextID != IMG_NULL) | ||
3505 | ui32MMUContextID = psDeviceNode->pfnMMUGetContextID(hDevMemContextInt); | ||
3506 | |||
2562 | PDumpHWPerfCBKM(&psDeviceNode->sDevId, | 3507 | PDumpHWPerfCBKM(&psDeviceNode->sDevId, |
2563 | &psPDumpHWPerfCBIN->szFileName[0], | 3508 | &psPDumpHWPerfCBIN->szFileName[0], |
2564 | psPDumpHWPerfCBIN->ui32FileOffset, | 3509 | psPDumpHWPerfCBIN->ui32FileOffset, |
2565 | psDevInfo->psKernelHWPerfCBMemInfo->sDevVAddr, | 3510 | psDevInfo->psKernelHWPerfCBMemInfo->sDevVAddr, |
2566 | psDevInfo->psKernelHWPerfCBMemInfo->ui32AllocSize, | 3511 | psDevInfo->psKernelHWPerfCBMemInfo->uAllocSize, |
3512 | ui32MMUContextID, | ||
2567 | psPDumpHWPerfCBIN->ui32PDumpFlags); | 3513 | psPDumpHWPerfCBIN->ui32PDumpFlags); |
2568 | 3514 | ||
2569 | return 0; | 3515 | return 0; |
@@ -2591,11 +3537,14 @@ SGXPDumpSaveMemBW(IMG_UINT32 ui32BridgeID, | |||
2591 | PVRSRV_PER_PROCESS_DATA *psPerProc) | 3537 | PVRSRV_PER_PROCESS_DATA *psPerProc) |
2592 | { | 3538 | { |
2593 | PVRSRV_DEVICE_NODE *psDeviceNode; | 3539 | PVRSRV_DEVICE_NODE *psDeviceNode; |
3540 | IMG_HANDLE hDevMemContextInt = 0; | ||
3541 | IMG_UINT32 ui32MMUContextID; | ||
2594 | 3542 | ||
2595 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_SGX_PDUMP_SAVEMEM); | 3543 | PVRSRV_BRIDGE_ASSERT_CMD(ui32BridgeID, PVRSRV_BRIDGE_SGX_PDUMP_SAVEMEM); |
2596 | 3544 | ||
2597 | psRetOUT->eError = | 3545 | psRetOUT->eError = |
2598 | PVRSRVLookupHandle(psPerProc->psHandleBase, (IMG_VOID**)&psDeviceNode, | 3546 | PVRSRVLookupHandle(psPerProc->psHandleBase, |
3547 | (IMG_VOID**)&psDeviceNode, | ||
2599 | psPDumpSaveMem->hDevCookie, | 3548 | psPDumpSaveMem->hDevCookie, |
2600 | PVRSRV_HANDLE_TYPE_DEV_NODE); | 3549 | PVRSRV_HANDLE_TYPE_DEV_NODE); |
2601 | if(psRetOUT->eError != PVRSRV_OK) | 3550 | if(psRetOUT->eError != PVRSRV_OK) |
@@ -2603,12 +3552,26 @@ SGXPDumpSaveMemBW(IMG_UINT32 ui32BridgeID, | |||
2603 | return 0; | 3552 | return 0; |
2604 | } | 3553 | } |
2605 | 3554 | ||
3555 | psRetOUT->eError = | ||
3556 | PVRSRVLookupHandle( psPerProc->psHandleBase, | ||
3557 | &hDevMemContextInt, | ||
3558 | psPDumpSaveMem->hDevMemContext, | ||
3559 | PVRSRV_HANDLE_TYPE_DEV_MEM_CONTEXT); | ||
3560 | if(psRetOUT->eError != PVRSRV_OK) | ||
3561 | { | ||
3562 | return 0; | ||
3563 | } | ||
3564 | |||
3565 | |||
3566 | PVR_ASSERT(psDeviceNode->pfnMMUGetContextID != IMG_NULL) | ||
3567 | ui32MMUContextID = psDeviceNode->pfnMMUGetContextID(hDevMemContextInt); | ||
3568 | |||
2606 | PDumpSaveMemKM(&psDeviceNode->sDevId, | 3569 | PDumpSaveMemKM(&psDeviceNode->sDevId, |
2607 | &psPDumpSaveMem->szFileName[0], | 3570 | &psPDumpSaveMem->szFileName[0], |
2608 | psPDumpSaveMem->ui32FileOffset, | 3571 | psPDumpSaveMem->ui32FileOffset, |
2609 | psPDumpSaveMem->sDevVAddr, | 3572 | psPDumpSaveMem->sDevVAddr, |
2610 | psPDumpSaveMem->ui32Size, | 3573 | psPDumpSaveMem->ui32Size, |
2611 | psPDumpSaveMem->ui32DataMaster, | 3574 | ui32MMUContextID, |
2612 | psPDumpSaveMem->ui32PDumpFlags); | 3575 | psPDumpSaveMem->ui32PDumpFlags); |
2613 | return 0; | 3576 | return 0; |
2614 | } | 3577 | } |
@@ -2616,7 +3579,7 @@ SGXPDumpSaveMemBW(IMG_UINT32 ui32BridgeID, | |||
2616 | #endif | 3579 | #endif |
2617 | 3580 | ||
2618 | 3581 | ||
2619 | 3582 | ||
2620 | IMG_VOID SetSGXDispatchTableEntry(IMG_VOID) | 3583 | IMG_VOID SetSGXDispatchTableEntry(IMG_VOID) |
2621 | { | 3584 | { |
2622 | 3585 | ||
diff --git a/drivers/gpu/pvr/sgx/mmu.c b/drivers/gpu/pvr/sgx/mmu.c index 2685fbf169f..67e86d92025 100644 --- a/drivers/gpu/pvr/sgx/mmu.c +++ b/drivers/gpu/pvr/sgx/mmu.c | |||
@@ -42,6 +42,38 @@ | |||
42 | 42 | ||
43 | #define SGX_MAX_PD_ENTRIES (1<<(SGX_FEATURE_ADDRESS_SPACE_SIZE - SGX_MMU_PT_SHIFT - SGX_MMU_PAGE_SHIFT)) | 43 | #define SGX_MAX_PD_ENTRIES (1<<(SGX_FEATURE_ADDRESS_SPACE_SIZE - SGX_MMU_PT_SHIFT - SGX_MMU_PAGE_SHIFT)) |
44 | 44 | ||
45 | #if defined(FIX_HW_BRN_31620) | ||
46 | #define SGX_MMU_PDE_DUMMY_PAGE (0) | ||
47 | #define SGX_MMU_PTE_DUMMY_PAGE (0) | ||
48 | |||
49 | #define BRN31620_PT_ADDRESS_RANGE_SHIFT 22 | ||
50 | #define BRN31620_PT_ADDRESS_RANGE_SIZE (1 << BRN31620_PT_ADDRESS_RANGE_SHIFT) | ||
51 | |||
52 | #define BRN31620_PDE_CACHE_FILL_SHIFT 26 | ||
53 | #define BRN31620_PDE_CACHE_FILL_SIZE (1 << BRN31620_PDE_CACHE_FILL_SHIFT) | ||
54 | #define BRN31620_PDE_CACHE_FILL_MASK (BRN31620_PDE_CACHE_FILL_SIZE - 1) | ||
55 | |||
56 | #define BRN31620_PDES_PER_CACHE_LINE_SHIFT (BRN31620_PDE_CACHE_FILL_SHIFT - BRN31620_PT_ADDRESS_RANGE_SHIFT) | ||
57 | #define BRN31620_PDES_PER_CACHE_LINE_SIZE (1 << BRN31620_PDES_PER_CACHE_LINE_SHIFT) | ||
58 | #define BRN31620_PDES_PER_CACHE_LINE_MASK (BRN31620_PDES_PER_CACHE_LINE_SIZE - 1) | ||
59 | |||
60 | #define BRN31620_DUMMY_PAGE_OFFSET (1 * SGX_MMU_PAGE_SIZE) | ||
61 | #define BRN31620_DUMMY_PDE_INDEX (BRN31620_DUMMY_PAGE_OFFSET / BRN31620_PT_ADDRESS_RANGE_SIZE) | ||
62 | #define BRN31620_DUMMY_PTE_INDEX ((BRN31620_DUMMY_PAGE_OFFSET - (BRN31620_DUMMY_PDE_INDEX * BRN31620_PT_ADDRESS_RANGE_SIZE))/SGX_MMU_PAGE_SIZE) | ||
63 | |||
64 | #define BRN31620_CACHE_FLUSH_SHIFT (32 - BRN31620_PDE_CACHE_FILL_SHIFT) | ||
65 | #define BRN31620_CACHE_FLUSH_SIZE (1 << BRN31620_CACHE_FLUSH_SHIFT) | ||
66 | |||
67 | #define BRN31620_CACHE_FLUSH_BITS_SHIFT 5 | ||
68 | #define BRN31620_CACHE_FLUSH_BITS_SIZE (1 << BRN31620_CACHE_FLUSH_BITS_SHIFT) | ||
69 | #define BRN31620_CACHE_FLUSH_BITS_MASK (BRN31620_CACHE_FLUSH_BITS_SIZE - 1) | ||
70 | |||
71 | #define BRN31620_CACHE_FLUSH_INDEX_BITS (BRN31620_CACHE_FLUSH_SHIFT - BRN31620_CACHE_FLUSH_BITS_SHIFT) | ||
72 | #define BRN31620_CACHE_FLUSH_INDEX_SIZE (1 << BRN31620_CACHE_FLUSH_INDEX_BITS) | ||
73 | |||
74 | #define BRN31620_DUMMY_PAGE_SIGNATURE 0xFEEBEE01 | ||
75 | #endif | ||
76 | |||
45 | typedef struct _MMU_PT_INFO_ | 77 | typedef struct _MMU_PT_INFO_ |
46 | { | 78 | { |
47 | 79 | ||
@@ -73,6 +105,11 @@ struct _MMU_CONTEXT_ | |||
73 | #endif | 105 | #endif |
74 | #endif | 106 | #endif |
75 | 107 | ||
108 | #if defined (FIX_HW_BRN_31620) | ||
109 | IMG_UINT32 ui32PDChangeMask[BRN31620_CACHE_FLUSH_INDEX_SIZE]; | ||
110 | IMG_UINT32 ui32PDCacheRangeRefCount[BRN31620_CACHE_FLUSH_SIZE]; | ||
111 | MMU_PT_INFO *apsPTInfoListSave[SGX_MAX_PD_ENTRIES]; | ||
112 | #endif | ||
76 | struct _MMU_CONTEXT_ *psNext; | 113 | struct _MMU_CONTEXT_ *psNext; |
77 | }; | 114 | }; |
78 | 115 | ||
@@ -88,7 +125,7 @@ struct _MMU_HEAP_ | |||
88 | 125 | ||
89 | IMG_UINT32 ui32PageTableCount; | 126 | IMG_UINT32 ui32PageTableCount; |
90 | 127 | ||
91 | IMG_UINT32 ui32PTETotal; | 128 | IMG_UINT32 ui32PTETotalUsable; |
92 | 129 | ||
93 | IMG_UINT32 ui32PDEPageSizeCtrl; | 130 | IMG_UINT32 ui32PDEPageSizeCtrl; |
94 | 131 | ||
@@ -112,7 +149,9 @@ struct _MMU_HEAP_ | |||
112 | 149 | ||
113 | IMG_UINT32 ui32PTSize; | 150 | IMG_UINT32 ui32PTSize; |
114 | 151 | ||
115 | IMG_UINT32 ui32PTECount; | 152 | IMG_UINT32 ui32PTNumEntriesAllocated; |
153 | |||
154 | IMG_UINT32 ui32PTNumEntriesUsable; | ||
116 | 155 | ||
117 | 156 | ||
118 | 157 | ||
@@ -138,6 +177,9 @@ struct _MMU_HEAP_ | |||
138 | #define DUMMY_DATA_PAGE_SIGNATURE 0xDEADBEEF | 177 | #define DUMMY_DATA_PAGE_SIGNATURE 0xDEADBEEF |
139 | #endif | 178 | #endif |
140 | 179 | ||
180 | static IMG_VOID | ||
181 | _DeferredFreePageTable (MMU_HEAP *pMMUHeap, IMG_UINT32 ui32PTIndex, IMG_BOOL bOSFreePT); | ||
182 | |||
141 | #if defined(PDUMP) | 183 | #if defined(PDUMP) |
142 | static IMG_VOID | 184 | static IMG_VOID |
143 | MMU_PDumpPageTables (MMU_HEAP *pMMUHeap, | 185 | MMU_PDumpPageTables (MMU_HEAP *pMMUHeap, |
@@ -285,6 +327,105 @@ static IMG_VOID MMU_InvalidatePageTableCache(PVRSRV_SGXDEV_INFO *psDevInfo) | |||
285 | #endif | 327 | #endif |
286 | } | 328 | } |
287 | 329 | ||
330 | #if defined(FIX_HW_BRN_31620) | ||
331 | static IMG_VOID BRN31620InvalidatePageTableEntry(MMU_CONTEXT *psMMUContext, IMG_UINT32 ui32PDIndex, IMG_UINT32 ui32PTIndex, IMG_UINT32 *pui32PTE) | ||
332 | { | ||
333 | PVRSRV_SGXDEV_INFO *psDevInfo = psMMUContext->psDevInfo; | ||
334 | |||
335 | |||
336 | if (((ui32PDIndex % (BRN31620_PDE_CACHE_FILL_SIZE/BRN31620_PT_ADDRESS_RANGE_SIZE)) == BRN31620_DUMMY_PDE_INDEX) | ||
337 | && (ui32PTIndex == BRN31620_DUMMY_PTE_INDEX)) | ||
338 | { | ||
339 | *pui32PTE = (psDevInfo->sBRN31620DummyPageDevPAddr.uiAddr>>SGX_MMU_PTE_ADDR_ALIGNSHIFT) | ||
340 | | SGX_MMU_PTE_DUMMY_PAGE | ||
341 | | SGX_MMU_PTE_READONLY | ||
342 | | SGX_MMU_PTE_VALID; | ||
343 | } | ||
344 | else | ||
345 | { | ||
346 | *pui32PTE = 0; | ||
347 | } | ||
348 | } | ||
349 | |||
350 | static IMG_BOOL BRN31620FreePageTable(MMU_HEAP *psMMUHeap, IMG_UINT32 ui32PDIndex) | ||
351 | { | ||
352 | MMU_CONTEXT *psMMUContext = psMMUHeap->psMMUContext; | ||
353 | PVRSRV_SGXDEV_INFO *psDevInfo = psMMUContext->psDevInfo; | ||
354 | IMG_UINT32 ui32PDCacheLine = ui32PDIndex >> BRN31620_PDES_PER_CACHE_LINE_SHIFT; | ||
355 | IMG_UINT32 bFreePTs = IMG_FALSE; | ||
356 | IMG_UINT32 *pui32Tmp; | ||
357 | |||
358 | PVR_ASSERT(psMMUHeap != IMG_NULL); | ||
359 | |||
360 | |||
361 | PVR_ASSERT(psMMUContext->apsPTInfoListSave[ui32PDIndex] == IMG_NULL); | ||
362 | |||
363 | psMMUContext->apsPTInfoListSave[ui32PDIndex] = psMMUContext->apsPTInfoList[ui32PDIndex]; | ||
364 | psMMUContext->apsPTInfoList[ui32PDIndex] = IMG_NULL; | ||
365 | |||
366 | |||
367 | if (--psMMUContext->ui32PDCacheRangeRefCount[ui32PDCacheLine] == 0) | ||
368 | { | ||
369 | IMG_UINT32 i; | ||
370 | IMG_UINT32 ui32PDIndexStart = ui32PDCacheLine * BRN31620_PDES_PER_CACHE_LINE_SIZE; | ||
371 | IMG_UINT32 ui32PDIndexEnd = ui32PDIndexStart + BRN31620_PDES_PER_CACHE_LINE_SIZE; | ||
372 | IMG_UINT32 ui32PDBitMaskIndex, ui32PDBitMaskShift; | ||
373 | |||
374 | |||
375 | for (i=ui32PDIndexStart;i<ui32PDIndexEnd;i++) | ||
376 | { | ||
377 | |||
378 | psMMUContext->apsPTInfoList[i] = psMMUContext->apsPTInfoListSave[i]; | ||
379 | psMMUContext->apsPTInfoListSave[i] = IMG_NULL; | ||
380 | _DeferredFreePageTable(psMMUHeap, i - psMMUHeap->ui32PDBaseIndex, IMG_TRUE); | ||
381 | } | ||
382 | |||
383 | ui32PDBitMaskIndex = ui32PDCacheLine >> BRN31620_CACHE_FLUSH_BITS_SHIFT; | ||
384 | ui32PDBitMaskShift = ui32PDCacheLine & BRN31620_CACHE_FLUSH_BITS_MASK; | ||
385 | |||
386 | |||
387 | if (MMU_IsHeapShared(psMMUHeap)) | ||
388 | { | ||
389 | |||
390 | MMU_CONTEXT *psMMUContextWalker = (MMU_CONTEXT*) psMMUHeap->psMMUContext->psDevInfo->pvMMUContextList; | ||
391 | |||
392 | while(psMMUContextWalker) | ||
393 | { | ||
394 | psMMUContextWalker->ui32PDChangeMask[ui32PDBitMaskIndex] |= 1 << ui32PDBitMaskShift; | ||
395 | |||
396 | |||
397 | pui32Tmp = (IMG_UINT32 *) psMMUContextWalker->pvPDCpuVAddr; | ||
398 | pui32Tmp[ui32PDIndexStart + BRN31620_DUMMY_PDE_INDEX] = (psDevInfo->sBRN31620DummyPTDevPAddr.uiAddr>>SGX_MMU_PDE_ADDR_ALIGNSHIFT) | ||
399 | | SGX_MMU_PDE_PAGE_SIZE_4K | ||
400 | | SGX_MMU_PDE_DUMMY_PAGE | ||
401 | | SGX_MMU_PDE_VALID; | ||
402 | |||
403 | PDUMPCOMMENT("BRN31620 Re-wire dummy PT due to releasing PT allocation block"); | ||
404 | PDUMPPDENTRIES(&psMMUHeap->sMMUAttrib, psMMUContextWalker->hPDOSMemHandle, (IMG_VOID*)&pui32Tmp[ui32PDIndexStart + BRN31620_DUMMY_PDE_INDEX], sizeof(IMG_UINT32), 0, IMG_FALSE, PDUMP_PT_UNIQUETAG, PDUMP_PT_UNIQUETAG); | ||
405 | psMMUContextWalker = psMMUContextWalker->psNext; | ||
406 | } | ||
407 | } | ||
408 | else | ||
409 | { | ||
410 | psMMUContext->ui32PDChangeMask[ui32PDBitMaskIndex] |= 1 << ui32PDBitMaskShift; | ||
411 | |||
412 | |||
413 | pui32Tmp = (IMG_UINT32 *) psMMUContext->pvPDCpuVAddr; | ||
414 | pui32Tmp[ui32PDIndexStart + BRN31620_DUMMY_PDE_INDEX] = (psDevInfo->sBRN31620DummyPTDevPAddr.uiAddr>>SGX_MMU_PDE_ADDR_ALIGNSHIFT) | ||
415 | | SGX_MMU_PDE_PAGE_SIZE_4K | ||
416 | | SGX_MMU_PDE_DUMMY_PAGE | ||
417 | | SGX_MMU_PDE_VALID; | ||
418 | |||
419 | PDUMPCOMMENT("BRN31620 Re-wire dummy PT due to releasing PT allocation block"); | ||
420 | PDUMPPDENTRIES(&psMMUHeap->sMMUAttrib, psMMUContext->hPDOSMemHandle, (IMG_VOID*)&pui32Tmp[ui32PDIndexStart + BRN31620_DUMMY_PDE_INDEX], sizeof(IMG_UINT32), 0, IMG_FALSE, PDUMP_PT_UNIQUETAG, PDUMP_PT_UNIQUETAG); | ||
421 | } | ||
422 | |||
423 | bFreePTs = IMG_TRUE; | ||
424 | } | ||
425 | |||
426 | return bFreePTs; | ||
427 | } | ||
428 | #endif | ||
288 | 429 | ||
289 | static IMG_BOOL | 430 | static IMG_BOOL |
290 | _AllocPageTableMemory (MMU_HEAP *pMMUHeap, | 431 | _AllocPageTableMemory (MMU_HEAP *pMMUHeap, |
@@ -373,11 +514,16 @@ _AllocPageTableMemory (MMU_HEAP *pMMUHeap, | |||
373 | 514 | ||
374 | pui32Tmp = (IMG_UINT32*)psPTInfoList->PTPageCpuVAddr; | 515 | pui32Tmp = (IMG_UINT32*)psPTInfoList->PTPageCpuVAddr; |
375 | 516 | ||
376 | for(i=0; i<pMMUHeap->ui32PTECount; i++) | 517 | for(i=0; i<pMMUHeap->ui32PTNumEntriesUsable; i++) |
377 | { | 518 | { |
378 | pui32Tmp[i] = (pMMUHeap->psMMUContext->psDevInfo->sDummyDataDevPAddr.uiAddr>>SGX_MMU_PTE_ADDR_ALIGNSHIFT) | 519 | pui32Tmp[i] = (pMMUHeap->psMMUContext->psDevInfo->sDummyDataDevPAddr.uiAddr>>SGX_MMU_PTE_ADDR_ALIGNSHIFT) |
379 | | SGX_MMU_PTE_VALID; | 520 | | SGX_MMU_PTE_VALID; |
380 | } | 521 | } |
522 | |||
523 | for(; i<pMMUHeap->ui32PTNumEntriesAllocated; i++) | ||
524 | { | ||
525 | pui32Tmp[i] = 0; | ||
526 | } | ||
381 | } | 527 | } |
382 | #else | 528 | #else |
383 | 529 | ||
@@ -388,12 +534,12 @@ _AllocPageTableMemory (MMU_HEAP *pMMUHeap, | |||
388 | { | 534 | { |
389 | IMG_UINT32 ui32Flags = 0; | 535 | IMG_UINT32 ui32Flags = 0; |
390 | #if defined(SUPPORT_PDUMP_MULTI_PROCESS) | 536 | #if defined(SUPPORT_PDUMP_MULTI_PROCESS) |
391 | 537 | ||
392 | ui32Flags |= ( MMU_IsHeapShared(pMMUHeap) ) ? PDUMP_FLAGS_PERSISTENT : 0; | 538 | ui32Flags |= ( MMU_IsHeapShared(pMMUHeap) ) ? PDUMP_FLAGS_PERSISTENT : 0; |
393 | #endif | 539 | #endif |
394 | 540 | ||
395 | PDUMPMALLOCPAGETABLE(&pMMUHeap->psMMUContext->psDeviceNode->sDevId, psPTInfoList->hPTPageOSMemHandle, 0, psPTInfoList->PTPageCpuVAddr, pMMUHeap->ui32PTSize, ui32Flags, PDUMP_PT_UNIQUETAG); | 541 | PDUMPMALLOCPAGETABLE(&pMMUHeap->psMMUContext->psDeviceNode->sDevId, psPTInfoList->hPTPageOSMemHandle, 0, psPTInfoList->PTPageCpuVAddr, pMMUHeap->ui32PTSize, ui32Flags, PDUMP_PT_UNIQUETAG); |
396 | 542 | ||
397 | PDUMPMEMPTENTRIES(&pMMUHeap->sMMUAttrib, psPTInfoList->hPTPageOSMemHandle, psPTInfoList->PTPageCpuVAddr, pMMUHeap->ui32PTSize, ui32Flags, IMG_TRUE, PDUMP_PT_UNIQUETAG, PDUMP_PT_UNIQUETAG); | 543 | PDUMPMEMPTENTRIES(&pMMUHeap->sMMUAttrib, psPTInfoList->hPTPageOSMemHandle, psPTInfoList->PTPageCpuVAddr, pMMUHeap->ui32PTSize, ui32Flags, IMG_TRUE, PDUMP_PT_UNIQUETAG, PDUMP_PT_UNIQUETAG); |
398 | } | 544 | } |
399 | #endif | 545 | #endif |
@@ -482,7 +628,7 @@ _DeferredFreePageTable (MMU_HEAP *pMMUHeap, IMG_UINT32 ui32PTIndex, IMG_BOOL bOS | |||
482 | #if defined(SUPPORT_PDUMP_MULTI_PROCESS) | 628 | #if defined(SUPPORT_PDUMP_MULTI_PROCESS) |
483 | ui32Flags |= ( MMU_IsHeapShared(pMMUHeap) ) ? PDUMP_FLAGS_PERSISTENT : 0; | 629 | ui32Flags |= ( MMU_IsHeapShared(pMMUHeap) ) ? PDUMP_FLAGS_PERSISTENT : 0; |
484 | #endif | 630 | #endif |
485 | 631 | ||
486 | PDUMPCOMMENT("Free page table (page count == %08X)", pMMUHeap->ui32PageTableCount); | 632 | PDUMPCOMMENT("Free page table (page count == %08X)", pMMUHeap->ui32PageTableCount); |
487 | if(ppsPTInfoList[ui32PTIndex] && ppsPTInfoList[ui32PTIndex]->PTPageCpuVAddr) | 633 | if(ppsPTInfoList[ui32PTIndex] && ppsPTInfoList[ui32PTIndex]->PTPageCpuVAddr) |
488 | { | 634 | { |
@@ -575,9 +721,10 @@ _DeferredFreePageTable (MMU_HEAP *pMMUHeap, IMG_UINT32 ui32PTIndex, IMG_BOOL bOS | |||
575 | 721 | ||
576 | 722 | ||
577 | for(i=0; | 723 | for(i=0; |
578 | (i<pMMUHeap->ui32PTETotal) && (i<pMMUHeap->ui32PTECount); | 724 | (i<pMMUHeap->ui32PTETotalUsable) && (i<pMMUHeap->ui32PTNumEntriesUsable); |
579 | i++) | 725 | i++) |
580 | { | 726 | { |
727 | |||
581 | pui32Tmp[i] = 0; | 728 | pui32Tmp[i] = 0; |
582 | } | 729 | } |
583 | 730 | ||
@@ -591,12 +738,12 @@ _DeferredFreePageTable (MMU_HEAP *pMMUHeap, IMG_UINT32 ui32PTIndex, IMG_BOOL bOS | |||
591 | 738 | ||
592 | 739 | ||
593 | 740 | ||
594 | pMMUHeap->ui32PTETotal -= i; | 741 | pMMUHeap->ui32PTETotalUsable -= i; |
595 | } | 742 | } |
596 | else | 743 | else |
597 | { | 744 | { |
598 | 745 | ||
599 | pMMUHeap->ui32PTETotal -= pMMUHeap->ui32PTECount; | 746 | pMMUHeap->ui32PTETotalUsable -= pMMUHeap->ui32PTNumEntriesUsable; |
600 | } | 747 | } |
601 | 748 | ||
602 | if(bOSFreePT) | 749 | if(bOSFreePT) |
@@ -612,7 +759,7 @@ _DeferredFreePageTable (MMU_HEAP *pMMUHeap, IMG_UINT32 ui32PTIndex, IMG_BOOL bOS | |||
612 | else | 759 | else |
613 | { | 760 | { |
614 | 761 | ||
615 | pMMUHeap->ui32PTETotal -= pMMUHeap->ui32PTECount; | 762 | pMMUHeap->ui32PTETotalUsable -= pMMUHeap->ui32PTNumEntriesUsable; |
616 | } | 763 | } |
617 | 764 | ||
618 | PDUMPCOMMENT("Finished free page table (page count == %08X)", pMMUHeap->ui32PageTableCount); | 765 | PDUMPCOMMENT("Finished free page table (page count == %08X)", pMMUHeap->ui32PageTableCount); |
@@ -622,17 +769,59 @@ static IMG_VOID | |||
622 | _DeferredFreePageTables (MMU_HEAP *pMMUHeap) | 769 | _DeferredFreePageTables (MMU_HEAP *pMMUHeap) |
623 | { | 770 | { |
624 | IMG_UINT32 i; | 771 | IMG_UINT32 i; |
772 | #if defined(FIX_HW_BRN_31620) | ||
773 | MMU_CONTEXT *psMMUContext = pMMUHeap->psMMUContext; | ||
774 | IMG_BOOL bInvalidateDirectoryCache = IMG_FALSE; | ||
775 | IMG_UINT32 ui32PDIndex; | ||
776 | IMG_UINT32 *pui32Tmp; | ||
777 | IMG_UINT32 j; | ||
778 | #endif | ||
625 | #if defined(PDUMP) | 779 | #if defined(PDUMP) |
626 | PDUMPCOMMENT("Free PTs (MMU Context ID == %u, PDBaseIndex == %u, PT count == 0x%x)", | 780 | PDUMPCOMMENT("Free PTs (MMU Context ID == %u, PDBaseIndex == %u, PT count == 0x%x)", |
627 | pMMUHeap->psMMUContext->ui32PDumpMMUContextID, | 781 | pMMUHeap->psMMUContext->ui32PDumpMMUContextID, |
628 | pMMUHeap->ui32PDBaseIndex, | 782 | pMMUHeap->ui32PDBaseIndex, |
629 | pMMUHeap->ui32PageTableCount); | 783 | pMMUHeap->ui32PageTableCount); |
630 | #endif | 784 | #endif |
785 | #if defined(FIX_HW_BRN_31620) | ||
786 | for(i=0; i<pMMUHeap->ui32PageTableCount; i++) | ||
787 | { | ||
788 | ui32PDIndex = (pMMUHeap->ui32PDBaseIndex + i); | ||
789 | |||
790 | if (psMMUContext->apsPTInfoList[ui32PDIndex]) | ||
791 | { | ||
792 | if (psMMUContext->apsPTInfoList[ui32PDIndex]->PTPageCpuVAddr) | ||
793 | { | ||
794 | |||
795 | for (j=0;j<SGX_MMU_PT_SIZE;j++) | ||
796 | { | ||
797 | pui32Tmp = (IMG_UINT32 *) psMMUContext->apsPTInfoList[ui32PDIndex]->PTPageCpuVAddr; | ||
798 | BRN31620InvalidatePageTableEntry(psMMUContext, ui32PDIndex, j, &pui32Tmp[j]); | ||
799 | } | ||
800 | } | ||
801 | |||
802 | if (BRN31620FreePageTable(pMMUHeap, ui32PDIndex) == IMG_TRUE) | ||
803 | { | ||
804 | bInvalidateDirectoryCache = IMG_TRUE; | ||
805 | } | ||
806 | } | ||
807 | } | ||
808 | |||
809 | |||
810 | if (bInvalidateDirectoryCache) | ||
811 | { | ||
812 | MMU_InvalidateDirectoryCache(pMMUHeap->psMMUContext->psDevInfo); | ||
813 | } | ||
814 | else | ||
815 | { | ||
816 | MMU_InvalidatePageTableCache(pMMUHeap->psMMUContext->psDevInfo); | ||
817 | } | ||
818 | #else | ||
631 | for(i=0; i<pMMUHeap->ui32PageTableCount; i++) | 819 | for(i=0; i<pMMUHeap->ui32PageTableCount; i++) |
632 | { | 820 | { |
633 | _DeferredFreePageTable(pMMUHeap, i, IMG_TRUE); | 821 | _DeferredFreePageTable(pMMUHeap, i, IMG_TRUE); |
634 | } | 822 | } |
635 | MMU_InvalidateDirectoryCache(pMMUHeap->psMMUContext->psDevInfo); | 823 | MMU_InvalidateDirectoryCache(pMMUHeap->psMMUContext->psDevInfo); |
824 | #endif | ||
636 | } | 825 | } |
637 | 826 | ||
638 | 827 | ||
@@ -646,6 +835,15 @@ _DeferredAllocPagetables(MMU_HEAP *pMMUHeap, IMG_DEV_VIRTADDR DevVAddr, IMG_UINT | |||
646 | MMU_PT_INFO **ppsPTInfoList; | 835 | MMU_PT_INFO **ppsPTInfoList; |
647 | SYS_DATA *psSysData; | 836 | SYS_DATA *psSysData; |
648 | IMG_DEV_VIRTADDR sHighDevVAddr; | 837 | IMG_DEV_VIRTADDR sHighDevVAddr; |
838 | #if defined(FIX_HW_BRN_31620) | ||
839 | IMG_BOOL bFlushSystemCache = IMG_FALSE; | ||
840 | IMG_BOOL bSharedPT = IMG_FALSE; | ||
841 | IMG_DEV_VIRTADDR sDevVAddrRequestStart; | ||
842 | IMG_DEV_VIRTADDR sDevVAddrRequestEnd; | ||
843 | IMG_UINT32 ui32PDRequestStart; | ||
844 | IMG_UINT32 ui32PDRequestEnd; | ||
845 | IMG_UINT32 ui32ModifiedCachelines[BRN31620_CACHE_FLUSH_INDEX_SIZE]; | ||
846 | #endif | ||
649 | 847 | ||
650 | 848 | ||
651 | #if SGX_FEATURE_ADDRESS_SPACE_SIZE < 32 | 849 | #if SGX_FEATURE_ADDRESS_SPACE_SIZE < 32 |
@@ -676,6 +874,38 @@ _DeferredAllocPagetables(MMU_HEAP *pMMUHeap, IMG_DEV_VIRTADDR DevVAddr, IMG_UINT | |||
676 | 874 | ||
677 | ui32PageTableCount = sHighDevVAddr.uiAddr >> pMMUHeap->ui32PDShift; | 875 | ui32PageTableCount = sHighDevVAddr.uiAddr >> pMMUHeap->ui32PDShift; |
678 | 876 | ||
877 | |||
878 | if (ui32PageTableCount == 0) | ||
879 | ui32PageTableCount = 1024; | ||
880 | |||
881 | #if defined(FIX_HW_BRN_31620) | ||
882 | for (i=0;i<BRN31620_CACHE_FLUSH_INDEX_SIZE;i++) | ||
883 | { | ||
884 | ui32ModifiedCachelines[i] = 0; | ||
885 | } | ||
886 | |||
887 | |||
888 | |||
889 | |||
890 | sDevVAddrRequestStart = DevVAddr; | ||
891 | ui32PDRequestStart = ui32PDIndex; | ||
892 | sDevVAddrRequestEnd = sHighDevVAddr; | ||
893 | ui32PDRequestEnd = ui32PageTableCount - 1; | ||
894 | |||
895 | |||
896 | DevVAddr.uiAddr = DevVAddr.uiAddr & (~BRN31620_PDE_CACHE_FILL_MASK); | ||
897 | |||
898 | |||
899 | sHighDevVAddr.uiAddr = ((sHighDevVAddr.uiAddr + (BRN31620_PDE_CACHE_FILL_SIZE - 1)) & (~BRN31620_PDE_CACHE_FILL_MASK)); | ||
900 | |||
901 | ui32PDIndex = DevVAddr.uiAddr >> pMMUHeap->ui32PDShift; | ||
902 | ui32PageTableCount = sHighDevVAddr.uiAddr >> pMMUHeap->ui32PDShift; | ||
903 | |||
904 | |||
905 | if (ui32PageTableCount == 0) | ||
906 | ui32PageTableCount = 1024; | ||
907 | #endif | ||
908 | |||
679 | ui32PageTableCount -= ui32PDIndex; | 909 | ui32PageTableCount -= ui32PDIndex; |
680 | 910 | ||
681 | 911 | ||
@@ -686,18 +916,45 @@ _DeferredAllocPagetables(MMU_HEAP *pMMUHeap, IMG_DEV_VIRTADDR DevVAddr, IMG_UINT | |||
686 | ppsPTInfoList = &pMMUHeap->psMMUContext->apsPTInfoList[ui32PDIndex]; | 916 | ppsPTInfoList = &pMMUHeap->psMMUContext->apsPTInfoList[ui32PDIndex]; |
687 | 917 | ||
688 | #if defined(PDUMP) | 918 | #if defined(PDUMP) |
689 | PDUMPCOMMENT("Alloc PTs (MMU Context ID == %u, PDBaseIndex == %u, Size == 0x%x)", | 919 | { |
690 | pMMUHeap->psMMUContext->ui32PDumpMMUContextID, | 920 | IMG_UINT32 ui32Flags = 0; |
691 | pMMUHeap->ui32PDBaseIndex, | 921 | |
692 | ui32Size); | 922 | |
693 | PDUMPCOMMENT("Alloc page table (page count == %08X)", ui32PageTableCount); | 923 | if( MMU_IsHeapShared(pMMUHeap) ) |
694 | PDUMPCOMMENT("Page directory mods (page count == %08X)", ui32PageTableCount); | 924 | { |
925 | ui32Flags |= PDUMP_FLAGS_CONTINUOUS; | ||
926 | } | ||
927 | PDUMPCOMMENTWITHFLAGS(ui32Flags, "Alloc PTs (MMU Context ID == %u, PDBaseIndex == %u, Size == 0x%x)", | ||
928 | pMMUHeap->psMMUContext->ui32PDumpMMUContextID, | ||
929 | pMMUHeap->ui32PDBaseIndex, | ||
930 | ui32Size); | ||
931 | PDUMPCOMMENTWITHFLAGS(ui32Flags, "Alloc page table (page count == %08X)", ui32PageTableCount); | ||
932 | PDUMPCOMMENTWITHFLAGS(ui32Flags, "Page directory mods (page count == %08X)", ui32PageTableCount); | ||
933 | } | ||
695 | #endif | 934 | #endif |
696 | 935 | ||
697 | for(i=0; i<ui32PageTableCount; i++) | 936 | for(i=0; i<ui32PageTableCount; i++) |
698 | { | 937 | { |
699 | if(ppsPTInfoList[i] == IMG_NULL) | 938 | if(ppsPTInfoList[i] == IMG_NULL) |
700 | { | 939 | { |
940 | #if defined(FIX_HW_BRN_31620) | ||
941 | |||
942 | if (pMMUHeap->psMMUContext->apsPTInfoListSave[ui32PDIndex + i]) | ||
943 | { | ||
944 | |||
945 | if (((ui32PDIndex + i) >= ui32PDRequestStart) && ((ui32PDIndex + i) <= ui32PDRequestEnd)) | ||
946 | { | ||
947 | IMG_UINT32 ui32PDCacheLine = (ui32PDIndex + i) >> BRN31620_PDES_PER_CACHE_LINE_SHIFT; | ||
948 | |||
949 | ppsPTInfoList[i] = pMMUHeap->psMMUContext->apsPTInfoListSave[ui32PDIndex + i]; | ||
950 | pMMUHeap->psMMUContext->apsPTInfoListSave[ui32PDIndex + i] = IMG_NULL; | ||
951 | |||
952 | pMMUHeap->psMMUContext->ui32PDCacheRangeRefCount[ui32PDCacheLine]++; | ||
953 | } | ||
954 | } | ||
955 | else | ||
956 | { | ||
957 | #endif | ||
701 | OSAllocMem(PVRSRV_OS_PAGEABLE_HEAP, | 958 | OSAllocMem(PVRSRV_OS_PAGEABLE_HEAP, |
702 | sizeof (MMU_PT_INFO), | 959 | sizeof (MMU_PT_INFO), |
703 | (IMG_VOID **)&ppsPTInfoList[i], IMG_NULL, | 960 | (IMG_VOID **)&ppsPTInfoList[i], IMG_NULL, |
@@ -708,8 +965,15 @@ _DeferredAllocPagetables(MMU_HEAP *pMMUHeap, IMG_DEV_VIRTADDR DevVAddr, IMG_UINT | |||
708 | return IMG_FALSE; | 965 | return IMG_FALSE; |
709 | } | 966 | } |
710 | OSMemSet (ppsPTInfoList[i], 0, sizeof(MMU_PT_INFO)); | 967 | OSMemSet (ppsPTInfoList[i], 0, sizeof(MMU_PT_INFO)); |
968 | #if defined(FIX_HW_BRN_31620) | ||
969 | } | ||
970 | #endif | ||
711 | } | 971 | } |
712 | 972 | #if defined(FIX_HW_BRN_31620) | |
973 | |||
974 | if (ppsPTInfoList[i]) | ||
975 | { | ||
976 | #endif | ||
713 | if(ppsPTInfoList[i]->hPTPageOSMemHandle == IMG_NULL | 977 | if(ppsPTInfoList[i]->hPTPageOSMemHandle == IMG_NULL |
714 | && ppsPTInfoList[i]->PTPageCpuVAddr == IMG_NULL) | 978 | && ppsPTInfoList[i]->PTPageCpuVAddr == IMG_NULL) |
715 | { | 979 | { |
@@ -718,16 +982,43 @@ _DeferredAllocPagetables(MMU_HEAP *pMMUHeap, IMG_DEV_VIRTADDR DevVAddr, IMG_UINT | |||
718 | IMG_UINT32 *pui32Tmp; | 982 | IMG_UINT32 *pui32Tmp; |
719 | IMG_UINT32 j; | 983 | IMG_UINT32 j; |
720 | #else | 984 | #else |
985 | #if !defined(FIX_HW_BRN_31620) | ||
721 | 986 | ||
722 | PVR_ASSERT(pui32PDEntry[i] == 0); | 987 | PVR_ASSERT(pui32PDEntry[i] == 0); |
723 | #endif | 988 | #endif |
724 | 989 | #endif | |
725 | if(_AllocPageTableMemory (pMMUHeap, ppsPTInfoList[i], &sDevPAddr) != IMG_TRUE) | 990 | if(_AllocPageTableMemory (pMMUHeap, ppsPTInfoList[i], &sDevPAddr) != IMG_TRUE) |
726 | { | 991 | { |
727 | PVR_DPF((PVR_DBG_ERROR, "_DeferredAllocPagetables: ERROR call to _AllocPageTableMemory failed")); | 992 | PVR_DPF((PVR_DBG_ERROR, "_DeferredAllocPagetables: ERROR call to _AllocPageTableMemory failed")); |
728 | return IMG_FALSE; | 993 | return IMG_FALSE; |
729 | } | 994 | } |
995 | #if defined(FIX_HW_BRN_31620) | ||
996 | bFlushSystemCache = IMG_TRUE; | ||
997 | |||
998 | { | ||
999 | IMG_UINT32 ui32PD; | ||
1000 | IMG_UINT32 ui32PDCacheLine; | ||
1001 | IMG_UINT32 ui32PDBitMaskIndex; | ||
1002 | IMG_UINT32 ui32PDBitMaskShift; | ||
1003 | |||
1004 | ui32PD = ui32PDIndex + i; | ||
1005 | ui32PDCacheLine = ui32PD >> BRN31620_PDES_PER_CACHE_LINE_SHIFT; | ||
1006 | ui32PDBitMaskIndex = ui32PDCacheLine >> BRN31620_CACHE_FLUSH_BITS_SHIFT; | ||
1007 | ui32PDBitMaskShift = ui32PDCacheLine & BRN31620_CACHE_FLUSH_BITS_MASK; | ||
1008 | ui32ModifiedCachelines[ui32PDBitMaskIndex] |= 1 << ui32PDBitMaskShift; | ||
1009 | |||
1010 | |||
1011 | if ((pMMUHeap->ui32PDBaseIndex + pMMUHeap->ui32PageTableCount) < (ui32PD + 1)) | ||
1012 | { | ||
1013 | pMMUHeap->ui32PageTableCount = (ui32PD + 1) - pMMUHeap->ui32PDBaseIndex; | ||
1014 | } | ||
730 | 1015 | ||
1016 | if (((ui32PDIndex + i) >= ui32PDRequestStart) && ((ui32PDIndex + i) <= ui32PDRequestEnd)) | ||
1017 | { | ||
1018 | pMMUHeap->psMMUContext->ui32PDCacheRangeRefCount[ui32PDCacheLine]++; | ||
1019 | } | ||
1020 | } | ||
1021 | #endif | ||
731 | switch(pMMUHeap->psDevArena->DevMemHeapType) | 1022 | switch(pMMUHeap->psDevArena->DevMemHeapType) |
732 | { | 1023 | { |
733 | case DEVICE_MEMORY_HEAP_SHARED : | 1024 | case DEVICE_MEMORY_HEAP_SHARED : |
@@ -746,21 +1037,22 @@ _DeferredAllocPagetables(MMU_HEAP *pMMUHeap, IMG_DEV_VIRTADDR DevVAddr, IMG_UINT | |||
746 | pui32PDEntry[i] = (sDevPAddr.uiAddr>>SGX_MMU_PDE_ADDR_ALIGNSHIFT) | 1037 | pui32PDEntry[i] = (sDevPAddr.uiAddr>>SGX_MMU_PDE_ADDR_ALIGNSHIFT) |
747 | | pMMUHeap->ui32PDEPageSizeCtrl | 1038 | | pMMUHeap->ui32PDEPageSizeCtrl |
748 | | SGX_MMU_PDE_VALID; | 1039 | | SGX_MMU_PDE_VALID; |
749 | |||
750 | #if defined(PDUMP) | 1040 | #if defined(PDUMP) |
751 | 1041 | ||
752 | #if defined(SUPPORT_PDUMP_MULTI_PROCESS) | 1042 | #if defined(SUPPORT_PDUMP_MULTI_PROCESS) |
753 | if(psMMUContext->bPDumpActive) | 1043 | if(psMMUContext->bPDumpActive) |
754 | #endif | 1044 | #endif |
755 | { | 1045 | { |
756 | 1046 | ||
757 | PDUMPPDENTRIES(&pMMUHeap->sMMUAttrib, psMMUContext->hPDOSMemHandle, (IMG_VOID*)&pui32PDEntry[i], sizeof(IMG_UINT32), 0, IMG_FALSE, PDUMP_PD_UNIQUETAG, PDUMP_PT_UNIQUETAG); | 1047 | PDUMPPDENTRIES(&pMMUHeap->sMMUAttrib, psMMUContext->hPDOSMemHandle, (IMG_VOID*)&pui32PDEntry[i], sizeof(IMG_UINT32), 0, IMG_FALSE, PDUMP_PD_UNIQUETAG, PDUMP_PT_UNIQUETAG); |
758 | } | 1048 | } |
759 | #endif | 1049 | #endif |
760 | |||
761 | 1050 | ||
762 | psMMUContext = psMMUContext->psNext; | 1051 | psMMUContext = psMMUContext->psNext; |
763 | } | 1052 | } |
1053 | #if defined(FIX_HW_BRN_31620) | ||
1054 | bSharedPT = IMG_TRUE; | ||
1055 | #endif | ||
764 | break; | 1056 | break; |
765 | } | 1057 | } |
766 | case DEVICE_MEMORY_HEAP_PERCONTEXT : | 1058 | case DEVICE_MEMORY_HEAP_PERCONTEXT : |
@@ -772,6 +1064,7 @@ _DeferredAllocPagetables(MMU_HEAP *pMMUHeap, IMG_DEV_VIRTADDR DevVAddr, IMG_UINT | |||
772 | | SGX_MMU_PDE_VALID; | 1064 | | SGX_MMU_PDE_VALID; |
773 | 1065 | ||
774 | 1066 | ||
1067 | |||
775 | PDUMPPDENTRIES(&pMMUHeap->sMMUAttrib, pMMUHeap->psMMUContext->hPDOSMemHandle, (IMG_VOID*)&pui32PDEntry[i], sizeof(IMG_UINT32), 0, IMG_FALSE, PDUMP_PD_UNIQUETAG, PDUMP_PT_UNIQUETAG); | 1068 | PDUMPPDENTRIES(&pMMUHeap->sMMUAttrib, pMMUHeap->psMMUContext->hPDOSMemHandle, (IMG_VOID*)&pui32PDEntry[i], sizeof(IMG_UINT32), 0, IMG_FALSE, PDUMP_PD_UNIQUETAG, PDUMP_PT_UNIQUETAG); |
776 | break; | 1069 | break; |
777 | } | 1070 | } |
@@ -789,17 +1082,112 @@ _DeferredAllocPagetables(MMU_HEAP *pMMUHeap, IMG_DEV_VIRTADDR DevVAddr, IMG_UINT | |||
789 | 1082 | ||
790 | MMU_InvalidateDirectoryCache(pMMUHeap->psMMUContext->psDevInfo); | 1083 | MMU_InvalidateDirectoryCache(pMMUHeap->psMMUContext->psDevInfo); |
791 | #endif | 1084 | #endif |
1085 | #if defined(FIX_HW_BRN_31620) | ||
1086 | |||
1087 | if (((ui32PDIndex + i) < ui32PDRequestStart) || ((ui32PDIndex + i) > ui32PDRequestEnd)) | ||
1088 | { | ||
1089 | pMMUHeap->psMMUContext->apsPTInfoListSave[ui32PDIndex + i] = ppsPTInfoList[i]; | ||
1090 | ppsPTInfoList[i] = IMG_NULL; | ||
1091 | } | ||
1092 | #endif | ||
792 | } | 1093 | } |
793 | else | 1094 | else |
794 | { | 1095 | { |
1096 | #if !defined(FIX_HW_BRN_31620) | ||
795 | 1097 | ||
796 | PVR_ASSERT(pui32PDEntry[i] != 0); | 1098 | PVR_ASSERT(pui32PDEntry[i] != 0); |
1099 | #endif | ||
797 | } | 1100 | } |
1101 | #if defined(FIX_HW_BRN_31620) | ||
1102 | } | ||
1103 | #endif | ||
798 | } | 1104 | } |
799 | 1105 | ||
800 | #if defined(SGX_FEATURE_SYSTEM_CACHE) | 1106 | #if defined(SGX_FEATURE_SYSTEM_CACHE) |
1107 | #if defined(FIX_HW_BRN_31620) | ||
1108 | |||
1109 | if (bFlushSystemCache) | ||
1110 | { | ||
1111 | #endif | ||
1112 | |||
801 | MMU_InvalidateSystemLevelCache(pMMUHeap->psMMUContext->psDevInfo); | 1113 | MMU_InvalidateSystemLevelCache(pMMUHeap->psMMUContext->psDevInfo); |
802 | #endif | 1114 | #endif |
1115 | #if defined(FIX_HW_BRN_31620) | ||
1116 | } | ||
1117 | |||
1118 | |||
1119 | sHighDevVAddr.uiAddr = sHighDevVAddr.uiAddr - 1; | ||
1120 | |||
1121 | |||
1122 | if (bFlushSystemCache) | ||
1123 | { | ||
1124 | MMU_CONTEXT *psMMUContext; | ||
1125 | |||
1126 | if (bSharedPT) | ||
1127 | { | ||
1128 | MMU_CONTEXT *psMMUContext = (MMU_CONTEXT*)pMMUHeap->psMMUContext->psDevInfo->pvMMUContextList; | ||
1129 | |||
1130 | while(psMMUContext) | ||
1131 | { | ||
1132 | for (i=0;i<BRN31620_CACHE_FLUSH_INDEX_SIZE;i++) | ||
1133 | { | ||
1134 | psMMUContext->ui32PDChangeMask[i] |= ui32ModifiedCachelines[i]; | ||
1135 | } | ||
1136 | |||
1137 | |||
1138 | psMMUContext = psMMUContext->psNext; | ||
1139 | } | ||
1140 | } | ||
1141 | else | ||
1142 | { | ||
1143 | for (i=0;i<BRN31620_CACHE_FLUSH_INDEX_SIZE;i++) | ||
1144 | { | ||
1145 | pMMUHeap->psMMUContext->ui32PDChangeMask[i] |= ui32ModifiedCachelines[i]; | ||
1146 | } | ||
1147 | } | ||
1148 | |||
1149 | |||
1150 | psMMUContext = pMMUHeap->psMMUContext; | ||
1151 | for (i=0;i<BRN31620_CACHE_FLUSH_INDEX_SIZE;i++) | ||
1152 | { | ||
1153 | IMG_UINT32 j; | ||
1154 | |||
1155 | for(j=0;j<BRN31620_CACHE_FLUSH_BITS_SIZE;j++) | ||
1156 | { | ||
1157 | if (ui32ModifiedCachelines[i] & (1 << j)) | ||
1158 | { | ||
1159 | PVRSRV_SGXDEV_INFO *psDevInfo = psMMUContext->psDevInfo; | ||
1160 | MMU_PT_INFO *psTempPTInfo = IMG_NULL; | ||
1161 | IMG_UINT32 *pui32Tmp; | ||
1162 | |||
1163 | ui32PDIndex = (((i * BRN31620_CACHE_FLUSH_BITS_SIZE) + j) * BRN31620_PDES_PER_CACHE_LINE_SIZE) + BRN31620_DUMMY_PDE_INDEX; | ||
1164 | |||
1165 | |||
1166 | if (psMMUContext->apsPTInfoList[ui32PDIndex]) | ||
1167 | { | ||
1168 | psTempPTInfo = psMMUContext->apsPTInfoList[ui32PDIndex]; | ||
1169 | } | ||
1170 | else | ||
1171 | { | ||
1172 | psTempPTInfo = psMMUContext->apsPTInfoListSave[ui32PDIndex]; | ||
1173 | } | ||
1174 | |||
1175 | PVR_ASSERT(psTempPTInfo != IMG_NULL); | ||
1176 | |||
1177 | pui32Tmp = (IMG_UINT32 *) psTempPTInfo->PTPageCpuVAddr; | ||
1178 | PVR_ASSERT(pui32Tmp != IMG_NULL); | ||
1179 | pui32Tmp[BRN31620_DUMMY_PTE_INDEX] = (psDevInfo->sBRN31620DummyPageDevPAddr.uiAddr>>SGX_MMU_PTE_ADDR_ALIGNSHIFT) | ||
1180 | | SGX_MMU_PTE_DUMMY_PAGE | ||
1181 | | SGX_MMU_PTE_READONLY | ||
1182 | | SGX_MMU_PTE_VALID; | ||
1183 | |||
1184 | PDUMPCOMMENT("BRN31620 Dump PTE for dummy page after wireing up new PT"); | ||
1185 | PDUMPMEMPTENTRIES(&pMMUHeap->sMMUAttrib, psTempPTInfo->hPTPageOSMemHandle, (IMG_VOID *) &pui32Tmp[BRN31620_DUMMY_PTE_INDEX], sizeof(IMG_UINT32), 0, IMG_FALSE, PDUMP_PT_UNIQUETAG, PDUMP_PT_UNIQUETAG); | ||
1186 | } | ||
1187 | } | ||
1188 | } | ||
1189 | } | ||
1190 | #endif | ||
803 | 1191 | ||
804 | return IMG_TRUE; | 1192 | return IMG_TRUE; |
805 | } | 1193 | } |
@@ -810,6 +1198,7 @@ IMG_UINT32 MMU_GetPDumpContextID(IMG_HANDLE hDevMemContext) | |||
810 | { | 1198 | { |
811 | BM_CONTEXT *pBMContext = hDevMemContext; | 1199 | BM_CONTEXT *pBMContext = hDevMemContext; |
812 | PVR_ASSERT(pBMContext); | 1200 | PVR_ASSERT(pBMContext); |
1201 | |||
813 | return pBMContext->psMMUContext->ui32PDumpMMUContextID; | 1202 | return pBMContext->psMMUContext->ui32PDumpMMUContextID; |
814 | } | 1203 | } |
815 | 1204 | ||
@@ -956,6 +1345,69 @@ MMU_Initialise (PVRSRV_DEVICE_NODE *psDeviceNode, MMU_CONTEXT **ppsMMUContext, I | |||
956 | psDevInfo->sDummyDataDevPAddr = SysCpuPAddrToDevPAddr (PVRSRV_DEVICE_TYPE_SGX, sCpuPAddr); | 1345 | psDevInfo->sDummyDataDevPAddr = SysCpuPAddrToDevPAddr (PVRSRV_DEVICE_TYPE_SGX, sCpuPAddr); |
957 | } | 1346 | } |
958 | #endif | 1347 | #endif |
1348 | #if defined(FIX_HW_BRN_31620) | ||
1349 | |||
1350 | if(!psDevInfo->pvMMUContextList) | ||
1351 | { | ||
1352 | IMG_UINT32 j; | ||
1353 | |||
1354 | if (OSAllocPages(PVRSRV_HAP_WRITECOMBINE | PVRSRV_HAP_KERNEL_ONLY, | ||
1355 | SGX_MMU_PAGE_SIZE, | ||
1356 | SGX_MMU_PAGE_SIZE, | ||
1357 | &psDevInfo->pvBRN31620DummyPageCpuVAddr, | ||
1358 | &psDevInfo->hBRN31620DummyPageOSMemHandle) != PVRSRV_OK) | ||
1359 | { | ||
1360 | PVR_DPF((PVR_DBG_ERROR, "MMU_Initialise: ERROR call to OSAllocPages failed")); | ||
1361 | return PVRSRV_ERROR_FAILED_TO_ALLOC_PAGES; | ||
1362 | } | ||
1363 | |||
1364 | |||
1365 | if(psDevInfo->pvBRN31620DummyPageCpuVAddr) | ||
1366 | { | ||
1367 | sCpuPAddr = OSMapLinToCPUPhys(psDevInfo->hBRN31620DummyPageOSMemHandle, | ||
1368 | psDevInfo->pvBRN31620DummyPageCpuVAddr); | ||
1369 | } | ||
1370 | else | ||
1371 | { | ||
1372 | sCpuPAddr = OSMemHandleToCpuPAddr(psDevInfo->hBRN31620DummyPageOSMemHandle, 0); | ||
1373 | } | ||
1374 | |||
1375 | pui32Tmp = (IMG_UINT32 *)psDevInfo->pvBRN31620DummyPageCpuVAddr; | ||
1376 | for(j=0; j<(SGX_MMU_PAGE_SIZE/4); j++) | ||
1377 | { | ||
1378 | pui32Tmp[j] = BRN31620_DUMMY_PAGE_SIGNATURE; | ||
1379 | } | ||
1380 | |||
1381 | psDevInfo->sBRN31620DummyPageDevPAddr = SysCpuPAddrToDevPAddr(PVRSRV_DEVICE_TYPE_SGX, sCpuPAddr); | ||
1382 | PDUMPMALLOCPAGETABLE(&psDeviceNode->sDevId, psDevInfo->hBRN31620DummyPageOSMemHandle, 0, psDevInfo->pvBRN31620DummyPageCpuVAddr, SGX_MMU_PAGE_SIZE, 0, PDUMP_PT_UNIQUETAG); | ||
1383 | |||
1384 | |||
1385 | if (OSAllocPages(PVRSRV_HAP_WRITECOMBINE | PVRSRV_HAP_KERNEL_ONLY, | ||
1386 | SGX_MMU_PAGE_SIZE, | ||
1387 | SGX_MMU_PAGE_SIZE, | ||
1388 | &psDevInfo->pvBRN31620DummyPTCpuVAddr, | ||
1389 | &psDevInfo->hBRN31620DummyPTOSMemHandle) != PVRSRV_OK) | ||
1390 | { | ||
1391 | PVR_DPF((PVR_DBG_ERROR, "MMU_Initialise: ERROR call to OSAllocPages failed")); | ||
1392 | return PVRSRV_ERROR_FAILED_TO_ALLOC_PAGES; | ||
1393 | } | ||
1394 | |||
1395 | |||
1396 | if(psDevInfo->pvBRN31620DummyPTCpuVAddr) | ||
1397 | { | ||
1398 | sCpuPAddr = OSMapLinToCPUPhys(psDevInfo->hBRN31620DummyPTOSMemHandle, | ||
1399 | psDevInfo->pvBRN31620DummyPTCpuVAddr); | ||
1400 | } | ||
1401 | else | ||
1402 | { | ||
1403 | sCpuPAddr = OSMemHandleToCpuPAddr(psDevInfo->hBRN31620DummyPTOSMemHandle, 0); | ||
1404 | } | ||
1405 | |||
1406 | OSMemSet(psDevInfo->pvBRN31620DummyPTCpuVAddr,0,SGX_MMU_PAGE_SIZE); | ||
1407 | psDevInfo->sBRN31620DummyPTDevPAddr = SysCpuPAddrToDevPAddr(PVRSRV_DEVICE_TYPE_SGX, sCpuPAddr); | ||
1408 | PDUMPMALLOCPAGETABLE(&psDeviceNode->sDevId, psDevInfo->hBRN31620DummyPTOSMemHandle, 0, psDevInfo->pvBRN31620DummyPTCpuVAddr, SGX_MMU_PAGE_SIZE, 0, PDUMP_PT_UNIQUETAG); | ||
1409 | } | ||
1410 | #endif | ||
959 | } | 1411 | } |
960 | else | 1412 | else |
961 | { | 1413 | { |
@@ -1051,16 +1503,96 @@ MMU_Initialise (PVRSRV_DEVICE_NODE *psDeviceNode, MMU_CONTEXT **ppsMMUContext, I | |||
1051 | } | 1503 | } |
1052 | } | 1504 | } |
1053 | #endif | 1505 | #endif |
1506 | #if defined(FIX_HW_BRN_31620) | ||
1507 | |||
1508 | if(!psDevInfo->pvMMUContextList) | ||
1509 | { | ||
1510 | IMG_UINT32 j; | ||
1511 | |||
1512 | if(RA_Alloc(psDeviceNode->psLocalDevMemArena, | ||
1513 | SGX_MMU_PAGE_SIZE, | ||
1514 | IMG_NULL, | ||
1515 | IMG_NULL, | ||
1516 | 0, | ||
1517 | SGX_MMU_PAGE_SIZE, | ||
1518 | 0, | ||
1519 | &(sSysPAddr.uiAddr))!= IMG_TRUE) | ||
1520 | { | ||
1521 | PVR_DPF((PVR_DBG_ERROR, "MMU_Initialise: ERROR call to RA_Alloc failed")); | ||
1522 | return PVRSRV_ERROR_FAILED_TO_ALLOC_VIRT_MEMORY; | ||
1523 | } | ||
1524 | |||
1525 | |||
1526 | sCpuPAddr = SysSysPAddrToCpuPAddr(sSysPAddr); | ||
1527 | psDevInfo->sBRN31620DummyPageDevPAddr = SysSysPAddrToDevPAddr(PVRSRV_DEVICE_TYPE_SGX, sSysPAddr); | ||
1528 | psDevInfo->pvBRN31620DummyPageCpuVAddr = OSMapPhysToLin(sCpuPAddr, | ||
1529 | SGX_MMU_PAGE_SIZE, | ||
1530 | PVRSRV_HAP_WRITECOMBINE|PVRSRV_HAP_KERNEL_ONLY, | ||
1531 | &psDevInfo->hBRN31620DummyPageOSMemHandle); | ||
1532 | if(!psDevInfo->pvBRN31620DummyPageCpuVAddr) | ||
1533 | { | ||
1534 | PVR_DPF((PVR_DBG_ERROR, "MMU_Initialise: ERROR failed to map page tables")); | ||
1535 | return PVRSRV_ERROR_FAILED_TO_MAP_PAGE_TABLE; | ||
1536 | } | ||
1537 | |||
1538 | pui32Tmp = (IMG_UINT32 *)psDevInfo->pvBRN31620DummyPageCpuVAddr; | ||
1539 | for(j=0; j<(SGX_MMU_PAGE_SIZE/4); j++) | ||
1540 | { | ||
1541 | pui32Tmp[j] = BRN31620_DUMMY_PAGE_SIGNATURE; | ||
1542 | } | ||
1543 | PDUMPMALLOCPAGETABLE(&psDeviceNode->sDevId, psDevInfo->hBRN31620DummyPageOSMemHandle, 0, psDevInfo->pvBRN31620DummyPageCpuVAddr, SGX_MMU_PAGE_SIZE, 0, PDUMP_PT_UNIQUETAG); | ||
1544 | |||
1545 | |||
1546 | if(RA_Alloc(psDeviceNode->psLocalDevMemArena, | ||
1547 | SGX_MMU_PAGE_SIZE, | ||
1548 | IMG_NULL, | ||
1549 | IMG_NULL, | ||
1550 | 0, | ||
1551 | SGX_MMU_PAGE_SIZE, | ||
1552 | 0, | ||
1553 | &(sSysPAddr.uiAddr))!= IMG_TRUE) | ||
1554 | { | ||
1555 | PVR_DPF((PVR_DBG_ERROR, "MMU_Initialise: ERROR call to RA_Alloc failed")); | ||
1556 | return PVRSRV_ERROR_FAILED_TO_ALLOC_VIRT_MEMORY; | ||
1557 | } | ||
1558 | |||
1559 | |||
1560 | sCpuPAddr = SysSysPAddrToCpuPAddr(sSysPAddr); | ||
1561 | psDevInfo->sBRN31620DummyPTDevPAddr = SysSysPAddrToDevPAddr(PVRSRV_DEVICE_TYPE_SGX, sSysPAddr); | ||
1562 | psDevInfo->pvBRN31620DummyPTCpuVAddr = OSMapPhysToLin(sCpuPAddr, | ||
1563 | SGX_MMU_PAGE_SIZE, | ||
1564 | PVRSRV_HAP_WRITECOMBINE|PVRSRV_HAP_KERNEL_ONLY, | ||
1565 | &psDevInfo->hBRN31620DummyPTOSMemHandle); | ||
1566 | |||
1567 | if(!psDevInfo->pvBRN31620DummyPTCpuVAddr) | ||
1568 | { | ||
1569 | PVR_DPF((PVR_DBG_ERROR, "MMU_Initialise: ERROR failed to map page tables")); | ||
1570 | return PVRSRV_ERROR_FAILED_TO_MAP_PAGE_TABLE; | ||
1571 | } | ||
1572 | |||
1573 | OSMemSet(psDevInfo->pvBRN31620DummyPTCpuVAddr,0,SGX_MMU_PAGE_SIZE); | ||
1574 | PDUMPMALLOCPAGETABLE(&psDeviceNode->sDevId, psDevInfo->hBRN31620DummyPTOSMemHandle, 0, psDevInfo->pvBRN31620DummyPTCpuVAddr, SGX_MMU_PAGE_SIZE, 0, PDUMP_PT_UNIQUETAG); | ||
1575 | } | ||
1576 | #endif | ||
1577 | } | ||
1578 | |||
1579 | #if defined(FIX_HW_BRN_31620) | ||
1580 | if (!psDevInfo->pvMMUContextList) | ||
1581 | { | ||
1582 | |||
1583 | psDevInfo->hKernelMMUContext = psMMUContext; | ||
1584 | PVR_DPF((PVR_DBG_ERROR, "MMU_Initialise: saving kernel mmu context: %p", psMMUContext)); | ||
1054 | } | 1585 | } |
1586 | #endif | ||
1055 | 1587 | ||
1056 | #if defined(PDUMP) | 1588 | #if defined(PDUMP) |
1057 | #if defined(SUPPORT_PDUMP_MULTI_PROCESS) | 1589 | #if defined(SUPPORT_PDUMP_MULTI_PROCESS) |
1058 | 1590 | ||
1059 | { | 1591 | { |
1060 | PVRSRV_PER_PROCESS_DATA* psPerProc = PVRSRVFindPerProcessData(); | 1592 | PVRSRV_PER_PROCESS_DATA* psPerProc = PVRSRVFindPerProcessData(); |
1061 | if(psPerProc == IMG_NULL) | 1593 | if(psPerProc == IMG_NULL) |
1062 | { | 1594 | { |
1063 | 1595 | ||
1064 | psMMUContext->bPDumpActive = IMG_TRUE; | 1596 | psMMUContext->bPDumpActive = IMG_TRUE; |
1065 | } | 1597 | } |
1066 | else | 1598 | else |
@@ -1068,7 +1600,7 @@ MMU_Initialise (PVRSRV_DEVICE_NODE *psDeviceNode, MMU_CONTEXT **ppsMMUContext, I | |||
1068 | psMMUContext->bPDumpActive = psPerProc->bPDumpActive; | 1600 | psMMUContext->bPDumpActive = psPerProc->bPDumpActive; |
1069 | } | 1601 | } |
1070 | } | 1602 | } |
1071 | #endif | 1603 | #endif |
1072 | 1604 | ||
1073 | #if IMG_ADDRSPACE_PHYSADDR_BITS == 32 | 1605 | #if IMG_ADDRSPACE_PHYSADDR_BITS == 32 |
1074 | PDUMPCOMMENT("Alloc page directory for new MMU context (PDDevPAddr == 0x%08x)", | 1606 | PDUMPCOMMENT("Alloc page directory for new MMU context (PDDevPAddr == 0x%08x)", |
@@ -1079,6 +1611,7 @@ MMU_Initialise (PVRSRV_DEVICE_NODE *psDeviceNode, MMU_CONTEXT **ppsMMUContext, I | |||
1079 | #endif | 1611 | #endif |
1080 | PDUMPMALLOCPAGETABLE(&psDeviceNode->sDevId, hPDOSMemHandle, 0, pvPDCpuVAddr, SGX_MMU_PAGE_SIZE, 0, PDUMP_PD_UNIQUETAG); | 1612 | PDUMPMALLOCPAGETABLE(&psDeviceNode->sDevId, hPDOSMemHandle, 0, pvPDCpuVAddr, SGX_MMU_PAGE_SIZE, 0, PDUMP_PD_UNIQUETAG); |
1081 | #endif | 1613 | #endif |
1614 | |||
1082 | #ifdef SUPPORT_SGX_MMU_BYPASS | 1615 | #ifdef SUPPORT_SGX_MMU_BYPASS |
1083 | EnableHostAccess(psMMUContext); | 1616 | EnableHostAccess(psMMUContext); |
1084 | #endif | 1617 | #endif |
@@ -1093,6 +1626,7 @@ MMU_Initialise (PVRSRV_DEVICE_NODE *psDeviceNode, MMU_CONTEXT **ppsMMUContext, I | |||
1093 | return PVRSRV_ERROR_INVALID_CPU_ADDR; | 1626 | return PVRSRV_ERROR_INVALID_CPU_ADDR; |
1094 | } | 1627 | } |
1095 | 1628 | ||
1629 | |||
1096 | #if defined(SUPPORT_SGX_MMU_DUMMY_PAGE) | 1630 | #if defined(SUPPORT_SGX_MMU_DUMMY_PAGE) |
1097 | 1631 | ||
1098 | for(i=0; i<SGX_MMU_PD_SIZE; i++) | 1632 | for(i=0; i<SGX_MMU_PD_SIZE; i++) |
@@ -1140,13 +1674,71 @@ MMU_Initialise (PVRSRV_DEVICE_NODE *psDeviceNode, MMU_CONTEXT **ppsMMUContext, I | |||
1140 | #if defined(PDUMP) | 1674 | #if defined(PDUMP) |
1141 | #if defined(SUPPORT_PDUMP_MULTI_PROCESS) | 1675 | #if defined(SUPPORT_PDUMP_MULTI_PROCESS) |
1142 | if(psMMUContext->bPDumpActive) | 1676 | if(psMMUContext->bPDumpActive) |
1143 | #endif | 1677 | #endif |
1144 | { | 1678 | { |
1145 | 1679 | ||
1146 | PDUMPCOMMENT("Page directory contents"); | 1680 | PDUMPCOMMENT("Page directory contents"); |
1147 | PDUMPPDENTRIES(&sMMUAttrib, hPDOSMemHandle, pvPDCpuVAddr, SGX_MMU_PAGE_SIZE, 0, IMG_TRUE, PDUMP_PD_UNIQUETAG, PDUMP_PT_UNIQUETAG); | 1681 | PDUMPPDENTRIES(&sMMUAttrib, hPDOSMemHandle, pvPDCpuVAddr, SGX_MMU_PAGE_SIZE, 0, IMG_TRUE, PDUMP_PD_UNIQUETAG, PDUMP_PT_UNIQUETAG); |
1148 | } | 1682 | } |
1149 | 1683 | #endif | |
1684 | #if defined(FIX_HW_BRN_31620) | ||
1685 | { | ||
1686 | IMG_UINT32 i; | ||
1687 | IMG_UINT32 ui32PDCount = 0; | ||
1688 | IMG_UINT32 *pui32PT; | ||
1689 | pui32Tmp = (IMG_UINT32 *)pvPDCpuVAddr; | ||
1690 | |||
1691 | PDUMPCOMMENT("BRN31620 Set up dummy PT"); | ||
1692 | |||
1693 | pui32PT = (IMG_UINT32 *) psDevInfo->pvBRN31620DummyPTCpuVAddr; | ||
1694 | pui32PT[BRN31620_DUMMY_PTE_INDEX] = (psDevInfo->sBRN31620DummyPageDevPAddr.uiAddr>>SGX_MMU_PTE_ADDR_ALIGNSHIFT) | ||
1695 | | SGX_MMU_PTE_DUMMY_PAGE | ||
1696 | | SGX_MMU_PTE_READONLY | ||
1697 | | SGX_MMU_PTE_VALID; | ||
1698 | |||
1699 | |||
1700 | #if defined(PDUMP) | ||
1701 | |||
1702 | PDUMPCOMMENT("BRN31620 Dump dummy PT contents"); | ||
1703 | PDUMPMEMPTENTRIES(&sMMUAttrib, psDevInfo->hBRN31620DummyPTOSMemHandle, psDevInfo->pvBRN31620DummyPTCpuVAddr, SGX_MMU_PAGE_SIZE, 0, IMG_TRUE, PDUMP_PD_UNIQUETAG, PDUMP_PT_UNIQUETAG); | ||
1704 | PDUMPCOMMENT("BRN31620 Dump dummy page contents"); | ||
1705 | PDUMPMEMPTENTRIES(&sMMUAttrib, psDevInfo->hBRN31620DummyPageOSMemHandle, psDevInfo->pvBRN31620DummyPageCpuVAddr, SGX_MMU_PAGE_SIZE, 0, IMG_TRUE, PDUMP_PD_UNIQUETAG, PDUMP_PT_UNIQUETAG); | ||
1706 | |||
1707 | |||
1708 | for(i=0;i<SGX_MMU_PT_SIZE;i++) | ||
1709 | { | ||
1710 | PDUMPMEMPTENTRIES(&sMMUAttrib, psDevInfo->hBRN31620DummyPTOSMemHandle, &pui32PT[i], sizeof(IMG_UINT32), 0, IMG_FALSE, PDUMP_PD_UNIQUETAG, PDUMP_PT_UNIQUETAG); | ||
1711 | } | ||
1712 | #endif | ||
1713 | PDUMPCOMMENT("BRN31620 Dump PDE wire up"); | ||
1714 | |||
1715 | for(i=0;i<SGX_MMU_PD_SIZE;i++) | ||
1716 | { | ||
1717 | pui32Tmp[i] = 0; | ||
1718 | |||
1719 | if (ui32PDCount == BRN31620_DUMMY_PDE_INDEX) | ||
1720 | { | ||
1721 | pui32Tmp[i] = (psDevInfo->sBRN31620DummyPTDevPAddr.uiAddr>>SGX_MMU_PDE_ADDR_ALIGNSHIFT) | ||
1722 | | SGX_MMU_PDE_PAGE_SIZE_4K | ||
1723 | | SGX_MMU_PDE_DUMMY_PAGE | ||
1724 | | SGX_MMU_PDE_VALID; | ||
1725 | } | ||
1726 | PDUMPMEMPTENTRIES(&sMMUAttrib, hPDOSMemHandle, (IMG_VOID *) &pui32Tmp[i], sizeof(IMG_UINT32), 0, IMG_FALSE, PDUMP_PT_UNIQUETAG, PDUMP_PT_UNIQUETAG); | ||
1727 | ui32PDCount++; | ||
1728 | if (ui32PDCount == BRN31620_PDES_PER_CACHE_LINE_SIZE) | ||
1729 | { | ||
1730 | |||
1731 | ui32PDCount = 0; | ||
1732 | } | ||
1733 | } | ||
1734 | |||
1735 | |||
1736 | |||
1737 | PDUMPCOMMENT("BRN31620 dummy Page table contents"); | ||
1738 | PDUMPMEMPTENTRIES(&sMMUAttrib, psDevInfo->hBRN31620DummyPageOSMemHandle, psDevInfo->pvBRN31620DummyPageCpuVAddr, SGX_MMU_PAGE_SIZE, 0, IMG_TRUE, PDUMP_PD_UNIQUETAG, PDUMP_PT_UNIQUETAG); | ||
1739 | } | ||
1740 | #endif | ||
1741 | #if defined(PDUMP) | ||
1150 | 1742 | ||
1151 | { | 1743 | { |
1152 | PVRSRV_ERROR eError; | 1744 | PVRSRV_ERROR eError; |
@@ -1179,6 +1771,22 @@ MMU_Initialise (PVRSRV_DEVICE_NODE *psDeviceNode, MMU_CONTEXT **ppsMMUContext, I | |||
1179 | PDUMPCOMMENT("Set MMU context complete (MMU Context ID == %u)", psMMUContext->ui32PDumpMMUContextID); | 1771 | PDUMPCOMMENT("Set MMU context complete (MMU Context ID == %u)", psMMUContext->ui32PDumpMMUContextID); |
1180 | #endif | 1772 | #endif |
1181 | 1773 | ||
1774 | #if defined(FIX_HW_BRN_31620) | ||
1775 | for(i=0;i<BRN31620_CACHE_FLUSH_INDEX_SIZE;i++) | ||
1776 | { | ||
1777 | psMMUContext->ui32PDChangeMask[i] = 0; | ||
1778 | } | ||
1779 | |||
1780 | for(i=0;i<BRN31620_CACHE_FLUSH_SIZE;i++) | ||
1781 | { | ||
1782 | psMMUContext->ui32PDCacheRangeRefCount[i] = 0; | ||
1783 | } | ||
1784 | |||
1785 | for(i=0;i<SGX_MAX_PD_ENTRIES;i++) | ||
1786 | { | ||
1787 | psMMUContext->apsPTInfoListSave[i] = IMG_NULL; | ||
1788 | } | ||
1789 | #endif | ||
1182 | 1790 | ||
1183 | psMMUContext->pvPDCpuVAddr = pvPDCpuVAddr; | 1791 | psMMUContext->pvPDCpuVAddr = pvPDCpuVAddr; |
1184 | psMMUContext->sPDDevPAddr = sPDDevPAddr; | 1792 | psMMUContext->sPDDevPAddr = sPDDevPAddr; |
@@ -1207,7 +1815,7 @@ MMU_Finalise (MMU_CONTEXT *psMMUContext) | |||
1207 | IMG_UINT32 *pui32Tmp, i; | 1815 | IMG_UINT32 *pui32Tmp, i; |
1208 | SYS_DATA *psSysData; | 1816 | SYS_DATA *psSysData; |
1209 | MMU_CONTEXT **ppsMMUContext; | 1817 | MMU_CONTEXT **ppsMMUContext; |
1210 | #if defined(SUPPORT_SGX_MMU_DUMMY_PAGE) | 1818 | #if defined(SUPPORT_SGX_MMU_DUMMY_PAGE) || defined(FIX_HW_BRN_31620) |
1211 | PVRSRV_SGXDEV_INFO *psDevInfo = (PVRSRV_SGXDEV_INFO*)psMMUContext->psDevInfo; | 1819 | PVRSRV_SGXDEV_INFO *psDevInfo = (PVRSRV_SGXDEV_INFO*)psMMUContext->psDevInfo; |
1212 | MMU_CONTEXT *psMMUContextList = (MMU_CONTEXT*)psDevInfo->pvMMUContextList; | 1820 | MMU_CONTEXT *psMMUContextList = (MMU_CONTEXT*)psDevInfo->pvMMUContextList; |
1213 | #endif | 1821 | #endif |
@@ -1250,11 +1858,32 @@ MMU_Finalise (MMU_CONTEXT *psMMUContext) | |||
1250 | 1858 | ||
1251 | if(psMMUContext->psDeviceNode->psLocalDevMemArena == IMG_NULL) | 1859 | if(psMMUContext->psDeviceNode->psLocalDevMemArena == IMG_NULL) |
1252 | { | 1860 | { |
1861 | #if defined(FIX_HW_BRN_31620) | ||
1862 | PVRSRV_SGXDEV_INFO *psDevInfo = (PVRSRV_SGXDEV_INFO*)psMMUContext->psDevInfo; | ||
1863 | #endif | ||
1253 | OSFreePages(PVRSRV_HAP_WRITECOMBINE | PVRSRV_HAP_KERNEL_ONLY, | 1864 | OSFreePages(PVRSRV_HAP_WRITECOMBINE | PVRSRV_HAP_KERNEL_ONLY, |
1254 | SGX_MMU_PAGE_SIZE, | 1865 | SGX_MMU_PAGE_SIZE, |
1255 | psMMUContext->pvPDCpuVAddr, | 1866 | psMMUContext->pvPDCpuVAddr, |
1256 | psMMUContext->hPDOSMemHandle); | 1867 | psMMUContext->hPDOSMemHandle); |
1257 | 1868 | ||
1869 | #if defined(FIX_HW_BRN_31620) | ||
1870 | |||
1871 | if (!psMMUContextList->psNext) | ||
1872 | { | ||
1873 | PDUMPFREEPAGETABLE(&psMMUContext->psDeviceNode->sDevId, psDevInfo->hBRN31620DummyPageOSMemHandle, psDevInfo->pvBRN31620DummyPageCpuVAddr, SGX_MMU_PAGE_SIZE, 0, PDUMP_PT_UNIQUETAG); | ||
1874 | OSFreePages(PVRSRV_HAP_WRITECOMBINE | PVRSRV_HAP_KERNEL_ONLY, | ||
1875 | SGX_MMU_PAGE_SIZE, | ||
1876 | psDevInfo->pvBRN31620DummyPageCpuVAddr, | ||
1877 | psDevInfo->hBRN31620DummyPageOSMemHandle); | ||
1878 | |||
1879 | PDUMPFREEPAGETABLE(&psMMUContext->psDeviceNode->sDevId, psDevInfo->hBRN31620DummyPTOSMemHandle, psDevInfo->pvBRN31620DummyPTCpuVAddr, SGX_MMU_PAGE_SIZE, 0, PDUMP_PT_UNIQUETAG); | ||
1880 | OSFreePages(PVRSRV_HAP_WRITECOMBINE | PVRSRV_HAP_KERNEL_ONLY, | ||
1881 | SGX_MMU_PAGE_SIZE, | ||
1882 | psDevInfo->pvBRN31620DummyPTCpuVAddr, | ||
1883 | psDevInfo->hBRN31620DummyPTOSMemHandle); | ||
1884 | |||
1885 | } | ||
1886 | #endif | ||
1258 | #if defined(SUPPORT_SGX_MMU_DUMMY_PAGE) | 1887 | #if defined(SUPPORT_SGX_MMU_DUMMY_PAGE) |
1259 | 1888 | ||
1260 | if(!psMMUContextList->psNext) | 1889 | if(!psMMUContextList->psNext) |
@@ -1319,6 +1948,41 @@ MMU_Finalise (MMU_CONTEXT *psMMUContext) | |||
1319 | RA_Free (psMMUContext->psDeviceNode->psLocalDevMemArena, sSysPAddr.uiAddr, IMG_FALSE); | 1948 | RA_Free (psMMUContext->psDeviceNode->psLocalDevMemArena, sSysPAddr.uiAddr, IMG_FALSE); |
1320 | } | 1949 | } |
1321 | #endif | 1950 | #endif |
1951 | #if defined(FIX_HW_BRN_31620) | ||
1952 | |||
1953 | if(!psMMUContextList->psNext) | ||
1954 | { | ||
1955 | |||
1956 | PDUMPFREEPAGETABLE(&psMMUContext->psDeviceNode->sDevId, psDevInfo->hBRN31620DummyPageOSMemHandle, psDevInfo->pvBRN31620DummyPageCpuVAddr, SGX_MMU_PAGE_SIZE, 0, PDUMP_PT_UNIQUETAG); | ||
1957 | |||
1958 | sCpuPAddr = OSMapLinToCPUPhys(psDevInfo->hBRN31620DummyPageOSMemHandle, | ||
1959 | psDevInfo->pvBRN31620DummyPageCpuVAddr); | ||
1960 | sSysPAddr = SysCpuPAddrToSysPAddr(sCpuPAddr); | ||
1961 | |||
1962 | |||
1963 | OSUnMapPhysToLin(psDevInfo->pvBRN31620DummyPageCpuVAddr, | ||
1964 | SGX_MMU_PAGE_SIZE, | ||
1965 | PVRSRV_HAP_WRITECOMBINE|PVRSRV_HAP_KERNEL_ONLY, | ||
1966 | psDevInfo->hBRN31620DummyPageOSMemHandle); | ||
1967 | |||
1968 | RA_Free (psMMUContext->psDeviceNode->psLocalDevMemArena, sSysPAddr.uiAddr, IMG_FALSE); | ||
1969 | |||
1970 | |||
1971 | PDUMPFREEPAGETABLE(&psMMUContext->psDeviceNode->sDevId, psDevInfo->hBRN31620DummyPTOSMemHandle, psDevInfo->pvBRN31620DummyPTCpuVAddr, SGX_MMU_PAGE_SIZE, 0, PDUMP_PT_UNIQUETAG); | ||
1972 | |||
1973 | sCpuPAddr = OSMapLinToCPUPhys(psDevInfo->hBRN31620DummyPTOSMemHandle, | ||
1974 | psDevInfo->pvBRN31620DummyPTCpuVAddr); | ||
1975 | sSysPAddr = SysCpuPAddrToSysPAddr(sCpuPAddr); | ||
1976 | |||
1977 | |||
1978 | OSUnMapPhysToLin(psDevInfo->pvBRN31620DummyPTCpuVAddr, | ||
1979 | SGX_MMU_PAGE_SIZE, | ||
1980 | PVRSRV_HAP_WRITECOMBINE|PVRSRV_HAP_KERNEL_ONLY, | ||
1981 | psDevInfo->hBRN31620DummyPTOSMemHandle); | ||
1982 | |||
1983 | RA_Free (psMMUContext->psDeviceNode->psLocalDevMemArena, sSysPAddr.uiAddr, IMG_FALSE); | ||
1984 | } | ||
1985 | #endif | ||
1322 | } | 1986 | } |
1323 | 1987 | ||
1324 | PVR_DPF ((PVR_DBG_MESSAGE, "MMU_Finalise")); | 1988 | PVR_DPF ((PVR_DBG_MESSAGE, "MMU_Finalise")); |
@@ -1374,7 +2038,7 @@ MMU_InsertHeap(MMU_CONTEXT *psMMUContext, MMU_HEAP *psMMUHeap) | |||
1374 | 2038 | ||
1375 | for (ui32PDEntry = 0; ui32PDEntry < psMMUHeap->ui32PageTableCount; ui32PDEntry++) | 2039 | for (ui32PDEntry = 0; ui32PDEntry < psMMUHeap->ui32PageTableCount; ui32PDEntry++) |
1376 | { | 2040 | { |
1377 | #if !defined(SUPPORT_SGX_MMU_DUMMY_PAGE) | 2041 | #if (!defined(SUPPORT_SGX_MMU_DUMMY_PAGE)) && (!defined(FIX_HW_BRN_31620)) |
1378 | 2042 | ||
1379 | PVR_ASSERT(pui32PDCpuVAddr[ui32PDEntry] == 0); | 2043 | PVR_ASSERT(pui32PDCpuVAddr[ui32PDEntry] == 0); |
1380 | #endif | 2044 | #endif |
@@ -1383,12 +2047,12 @@ MMU_InsertHeap(MMU_CONTEXT *psMMUContext, MMU_HEAP *psMMUHeap) | |||
1383 | pui32PDCpuVAddr[ui32PDEntry] = pui32KernelPDCpuVAddr[ui32PDEntry]; | 2047 | pui32PDCpuVAddr[ui32PDEntry] = pui32KernelPDCpuVAddr[ui32PDEntry]; |
1384 | if (pui32PDCpuVAddr[ui32PDEntry]) | 2048 | if (pui32PDCpuVAddr[ui32PDEntry]) |
1385 | { | 2049 | { |
1386 | 2050 | ||
1387 | #if defined(PDUMP) | 2051 | #if defined(PDUMP) |
1388 | 2052 | ||
1389 | #if defined(SUPPORT_PDUMP_MULTI_PROCESS) | 2053 | #if defined(SUPPORT_PDUMP_MULTI_PROCESS) |
1390 | if(psMMUContext->bPDumpActive) | 2054 | if(psMMUContext->bPDumpActive) |
1391 | #endif | 2055 | #endif |
1392 | { | 2056 | { |
1393 | PDUMPPDENTRIES(&psMMUHeap->sMMUAttrib, psMMUContext->hPDOSMemHandle, (IMG_VOID *) &pui32PDCpuVAddr[ui32PDEntry], sizeof(IMG_UINT32), 0, IMG_FALSE, PDUMP_PD_UNIQUETAG, PDUMP_PT_UNIQUETAG); | 2057 | PDUMPPDENTRIES(&psMMUHeap->sMMUAttrib, psMMUContext->hPDOSMemHandle, (IMG_VOID *) &pui32PDCpuVAddr[ui32PDEntry], sizeof(IMG_UINT32), 0, IMG_FALSE, PDUMP_PD_UNIQUETAG, PDUMP_PT_UNIQUETAG); |
1394 | } | 2058 | } |
@@ -1491,8 +2155,12 @@ MMU_UnmapPagesAndFreePTs (MMU_HEAP *psMMUHeap, | |||
1491 | | SGX_MMU_PTE_VALID; | 2155 | | SGX_MMU_PTE_VALID; |
1492 | #else | 2156 | #else |
1493 | 2157 | ||
2158 | #if defined(FIX_HW_BRN_31620) | ||
2159 | BRN31620InvalidatePageTableEntry(psMMUHeap->psMMUContext, ui32PDIndex, ui32PTIndex, &pui32Tmp[ui32PTIndex]); | ||
2160 | #else | ||
1494 | pui32Tmp[ui32PTIndex] = 0; | 2161 | pui32Tmp[ui32PTIndex] = 0; |
1495 | #endif | 2162 | #endif |
2163 | #endif | ||
1496 | 2164 | ||
1497 | CheckPT(ppsPTInfoList[0]); | 2165 | CheckPT(ppsPTInfoList[0]); |
1498 | } | 2166 | } |
@@ -1501,8 +2169,15 @@ MMU_UnmapPagesAndFreePTs (MMU_HEAP *psMMUHeap, | |||
1501 | 2169 | ||
1502 | if (ppsPTInfoList[0] && ppsPTInfoList[0]->ui32ValidPTECount == 0) | 2170 | if (ppsPTInfoList[0] && ppsPTInfoList[0]->ui32ValidPTECount == 0) |
1503 | { | 2171 | { |
2172 | #if defined(FIX_HW_BRN_31620) | ||
2173 | if (BRN31620FreePageTable(psMMUHeap, ui32PDIndex) == IMG_TRUE) | ||
2174 | { | ||
2175 | bInvalidateDirectoryCache = IMG_TRUE; | ||
2176 | } | ||
2177 | #else | ||
1504 | _DeferredFreePageTable(psMMUHeap, ui32PDIndex - psMMUHeap->ui32PDBaseIndex, IMG_TRUE); | 2178 | _DeferredFreePageTable(psMMUHeap, ui32PDIndex - psMMUHeap->ui32PDBaseIndex, IMG_TRUE); |
1505 | bInvalidateDirectoryCache = IMG_TRUE; | 2179 | bInvalidateDirectoryCache = IMG_TRUE; |
2180 | #endif | ||
1506 | } | 2181 | } |
1507 | 2182 | ||
1508 | 2183 | ||
@@ -1536,9 +2211,9 @@ static IMG_VOID MMU_FreePageTables(IMG_PVOID pvMMUHeap, | |||
1536 | MMU_HEAP *pMMUHeap = (MMU_HEAP*)pvMMUHeap; | 2211 | MMU_HEAP *pMMUHeap = (MMU_HEAP*)pvMMUHeap; |
1537 | IMG_DEV_VIRTADDR Start; | 2212 | IMG_DEV_VIRTADDR Start; |
1538 | 2213 | ||
1539 | Start.uiAddr = ui32Start; | 2214 | Start.uiAddr = (IMG_UINT32)ui32Start; |
1540 | 2215 | ||
1541 | MMU_UnmapPagesAndFreePTs(pMMUHeap, Start, (ui32End - ui32Start) >> pMMUHeap->ui32PTShift, hUniqueTag); | 2216 | MMU_UnmapPagesAndFreePTs(pMMUHeap, Start, (IMG_UINT32)((ui32End - ui32Start) >> pMMUHeap->ui32PTShift), hUniqueTag); |
1542 | } | 2217 | } |
1543 | 2218 | ||
1544 | MMU_HEAP * | 2219 | MMU_HEAP * |
@@ -1618,12 +2293,16 @@ MMU_Create (MMU_CONTEXT *psMMUContext, | |||
1618 | pMMUHeap->ui32PTBitWidth = SGX_MMU_PT_SHIFT - ui32ScaleSize; | 2293 | pMMUHeap->ui32PTBitWidth = SGX_MMU_PT_SHIFT - ui32ScaleSize; |
1619 | pMMUHeap->ui32PTMask = SGX_MMU_PT_MASK & (SGX_MMU_PT_MASK<<ui32ScaleSize); | 2294 | pMMUHeap->ui32PTMask = SGX_MMU_PT_MASK & (SGX_MMU_PT_MASK<<ui32ScaleSize); |
1620 | pMMUHeap->ui32PTSize = (IMG_UINT32)(1UL<<pMMUHeap->ui32PTBitWidth) * sizeof(IMG_UINT32); | 2295 | pMMUHeap->ui32PTSize = (IMG_UINT32)(1UL<<pMMUHeap->ui32PTBitWidth) * sizeof(IMG_UINT32); |
2296 | |||
1621 | 2297 | ||
1622 | if(pMMUHeap->ui32PTSize < 4 * sizeof(IMG_UINT32)) | 2298 | if(pMMUHeap->ui32PTSize < 4 * sizeof(IMG_UINT32)) |
1623 | { | 2299 | { |
1624 | pMMUHeap->ui32PTSize = 4 * sizeof(IMG_UINT32); | 2300 | pMMUHeap->ui32PTSize = 4 * sizeof(IMG_UINT32); |
1625 | } | 2301 | } |
1626 | pMMUHeap->ui32PTECount = pMMUHeap->ui32PTSize >> 2; | 2302 | pMMUHeap->ui32PTNumEntriesAllocated = pMMUHeap->ui32PTSize >> 2; |
2303 | |||
2304 | |||
2305 | pMMUHeap->ui32PTNumEntriesUsable = (IMG_UINT32)(1UL << pMMUHeap->ui32PTBitWidth); | ||
1627 | 2306 | ||
1628 | 2307 | ||
1629 | pMMUHeap->ui32PDShift = pMMUHeap->ui32PTBitWidth + pMMUHeap->ui32PTShift; | 2308 | pMMUHeap->ui32PDShift = pMMUHeap->ui32PTBitWidth + pMMUHeap->ui32PTShift; |
@@ -1645,7 +2324,7 @@ MMU_Create (MMU_CONTEXT *psMMUContext, | |||
1645 | } | 2324 | } |
1646 | 2325 | ||
1647 | 2326 | ||
1648 | pMMUHeap->ui32PTETotal = pMMUHeap->psDevArena->ui32Size >> pMMUHeap->ui32PTShift; | 2327 | pMMUHeap->ui32PTETotalUsable = pMMUHeap->psDevArena->ui32Size >> pMMUHeap->ui32PTShift; |
1649 | 2328 | ||
1650 | 2329 | ||
1651 | pMMUHeap->ui32PDBaseIndex = (pMMUHeap->psDevArena->BaseDevVAddr.uiAddr & pMMUHeap->ui32PDMask) >> pMMUHeap->ui32PDShift; | 2330 | pMMUHeap->ui32PDBaseIndex = (pMMUHeap->psDevArena->BaseDevVAddr.uiAddr & pMMUHeap->ui32PDMask) >> pMMUHeap->ui32PDShift; |
@@ -1653,8 +2332,9 @@ MMU_Create (MMU_CONTEXT *psMMUContext, | |||
1653 | 2332 | ||
1654 | 2333 | ||
1655 | 2334 | ||
1656 | pMMUHeap->ui32PageTableCount = (pMMUHeap->ui32PTETotal + pMMUHeap->ui32PTECount - 1) | 2335 | pMMUHeap->ui32PageTableCount = (pMMUHeap->ui32PTETotalUsable + pMMUHeap->ui32PTNumEntriesUsable - 1) |
1657 | >> pMMUHeap->ui32PTBitWidth; | 2336 | >> pMMUHeap->ui32PTBitWidth; |
2337 | PVR_ASSERT(pMMUHeap->ui32PageTableCount > 0); | ||
1658 | 2338 | ||
1659 | 2339 | ||
1660 | pMMUHeap->psVMArena = RA_Create(psDevArena->pszName, | 2340 | pMMUHeap->psVMArena = RA_Create(psDevArena->pszName, |
@@ -1808,7 +2488,7 @@ MMU_Alloc (MMU_HEAP *pMMUHeap, | |||
1808 | #endif | 2488 | #endif |
1809 | 2489 | ||
1810 | 2490 | ||
1811 | bStatus = _DeferredAllocPagetables(pMMUHeap, *psDevVAddr, uSize); | 2491 | bStatus = _DeferredAllocPagetables(pMMUHeap, *psDevVAddr, (IMG_UINT32)uSize); |
1812 | 2492 | ||
1813 | #ifdef SUPPORT_SGX_MMU_BYPASS | 2493 | #ifdef SUPPORT_SGX_MMU_BYPASS |
1814 | DisableHostAccess(pMMUHeap->psMMUContext); | 2494 | DisableHostAccess(pMMUHeap->psMMUContext); |
@@ -1874,6 +2554,26 @@ MMU_Disable (MMU_HEAP *pMMUHeap) | |||
1874 | 2554 | ||
1875 | } | 2555 | } |
1876 | 2556 | ||
2557 | #if defined(FIX_HW_BRN_31620) | ||
2558 | IMG_VOID MMU_GetCacheFlushRange(MMU_CONTEXT *pMMUContext, IMG_UINT32 *pui32RangeMask) | ||
2559 | { | ||
2560 | IMG_UINT32 i; | ||
2561 | |||
2562 | for (i=0;i<BRN31620_CACHE_FLUSH_INDEX_SIZE;i++) | ||
2563 | { | ||
2564 | pui32RangeMask[i] = pMMUContext->ui32PDChangeMask[i]; | ||
2565 | |||
2566 | |||
2567 | pMMUContext->ui32PDChangeMask[i] = 0; | ||
2568 | } | ||
2569 | } | ||
2570 | |||
2571 | IMG_VOID MMU_GetPDPhysAddr(MMU_CONTEXT *pMMUContext, IMG_DEV_PHYADDR *psDevPAddr) | ||
2572 | { | ||
2573 | *psDevPAddr = pMMUContext->sPDDevPAddr; | ||
2574 | } | ||
2575 | |||
2576 | #endif | ||
1877 | #if defined(PDUMP) | 2577 | #if defined(PDUMP) |
1878 | static IMG_VOID | 2578 | static IMG_VOID |
1879 | MMU_PDumpPageTables (MMU_HEAP *pMMUHeap, | 2579 | MMU_PDumpPageTables (MMU_HEAP *pMMUHeap, |
@@ -1891,7 +2591,7 @@ MMU_PDumpPageTables (MMU_HEAP *pMMUHeap, | |||
1891 | IMG_UINT32 ui32PTDumpCount; | 2591 | IMG_UINT32 ui32PTDumpCount; |
1892 | 2592 | ||
1893 | 2593 | ||
1894 | ui32NumPTEntries = (uSize + pMMUHeap->ui32DataPageMask) >> pMMUHeap->ui32PTShift; | 2594 | ui32NumPTEntries = (IMG_UINT32)((uSize + pMMUHeap->ui32DataPageMask) >> pMMUHeap->ui32PTShift); |
1895 | 2595 | ||
1896 | 2596 | ||
1897 | ui32PDIndex = DevVAddr.uiAddr >> pMMUHeap->ui32PDShift; | 2597 | ui32PDIndex = DevVAddr.uiAddr >> pMMUHeap->ui32PDShift; |
@@ -1910,13 +2610,13 @@ MMU_PDumpPageTables (MMU_HEAP *pMMUHeap, | |||
1910 | { | 2610 | { |
1911 | MMU_PT_INFO* psPTInfo = *ppsPTInfoList++; | 2611 | MMU_PT_INFO* psPTInfo = *ppsPTInfoList++; |
1912 | 2612 | ||
1913 | if(ui32NumPTEntries <= pMMUHeap->ui32PTECount - ui32PTIndex) | 2613 | if(ui32NumPTEntries <= pMMUHeap->ui32PTNumEntriesUsable - ui32PTIndex) |
1914 | { | 2614 | { |
1915 | ui32PTDumpCount = ui32NumPTEntries; | 2615 | ui32PTDumpCount = ui32NumPTEntries; |
1916 | } | 2616 | } |
1917 | else | 2617 | else |
1918 | { | 2618 | { |
1919 | ui32PTDumpCount = pMMUHeap->ui32PTECount - ui32PTIndex; | 2619 | ui32PTDumpCount = pMMUHeap->ui32PTNumEntriesUsable - ui32PTIndex; |
1920 | } | 2620 | } |
1921 | 2621 | ||
1922 | if (psPTInfo) | 2622 | if (psPTInfo) |
@@ -2009,7 +2709,12 @@ MMU_MapPage (MMU_HEAP *pMMUHeap, | |||
2009 | IMG_UINT32 uTmp = pui32Tmp[ui32Index]; | 2709 | IMG_UINT32 uTmp = pui32Tmp[ui32Index]; |
2010 | 2710 | ||
2011 | 2711 | ||
2012 | if (uTmp & SGX_MMU_PTE_VALID) | 2712 | #if defined(FIX_HW_BRN_31620) |
2713 | if ((uTmp & SGX_MMU_PTE_VALID) && ((DevVAddr.uiAddr & BRN31620_PDE_CACHE_FILL_MASK) != BRN31620_DUMMY_PAGE_OFFSET)) | ||
2714 | #else | ||
2715 | if ((uTmp & SGX_MMU_PTE_VALID) != 0) | ||
2716 | #endif | ||
2717 | |||
2013 | { | 2718 | { |
2014 | PVR_DPF((PVR_DBG_ERROR, "MMU_MapPage: Page is already valid for alloc at VAddr:0x%08X PDIdx:%u PTIdx:%u", | 2719 | PVR_DPF((PVR_DBG_ERROR, "MMU_MapPage: Page is already valid for alloc at VAddr:0x%08X PDIdx:%u PTIdx:%u", |
2015 | DevVAddr.uiAddr, | 2720 | DevVAddr.uiAddr, |
@@ -2018,8 +2723,9 @@ MMU_MapPage (MMU_HEAP *pMMUHeap, | |||
2018 | PVR_DPF((PVR_DBG_ERROR, "MMU_MapPage: Page table entry value: 0x%08X", uTmp)); | 2723 | PVR_DPF((PVR_DBG_ERROR, "MMU_MapPage: Page table entry value: 0x%08X", uTmp)); |
2019 | PVR_DPF((PVR_DBG_ERROR, "MMU_MapPage: Physical page to map: 0x%08X", DevPAddr.uiAddr)); | 2724 | PVR_DPF((PVR_DBG_ERROR, "MMU_MapPage: Physical page to map: 0x%08X", DevPAddr.uiAddr)); |
2020 | } | 2725 | } |
2021 | 2726 | #if !defined(FIX_HW_BRN_31620) | |
2022 | PVR_ASSERT((uTmp & SGX_MMU_PTE_VALID) == 0); | 2727 | PVR_ASSERT((uTmp & SGX_MMU_PTE_VALID) == 0); |
2728 | #endif | ||
2023 | } | 2729 | } |
2024 | #endif | 2730 | #endif |
2025 | 2731 | ||
@@ -2322,8 +3028,12 @@ MMU_UnmapPages (MMU_HEAP *psMMUHeap, | |||
2322 | | SGX_MMU_PTE_VALID; | 3028 | | SGX_MMU_PTE_VALID; |
2323 | #else | 3029 | #else |
2324 | 3030 | ||
3031 | #if defined(FIX_HW_BRN_31620) | ||
3032 | BRN31620InvalidatePageTableEntry(psMMUHeap->psMMUContext, ui32PDIndex, ui32PTIndex, &pui32Tmp[ui32PTIndex]); | ||
3033 | #else | ||
2325 | pui32Tmp[ui32PTIndex] = 0; | 3034 | pui32Tmp[ui32PTIndex] = 0; |
2326 | #endif | 3035 | #endif |
3036 | #endif | ||
2327 | 3037 | ||
2328 | CheckPT(ppsPTInfoList[0]); | 3038 | CheckPT(ppsPTInfoList[0]); |
2329 | 3039 | ||
@@ -2906,9 +3616,9 @@ PVRSRV_ERROR MMU_MapExtSystemCacheRegs(PVRSRV_DEVICE_NODE *psDeviceNode) | |||
2906 | | SGX_MMU_PTE_VALID; | 3616 | | SGX_MMU_PTE_VALID; |
2907 | 3617 | ||
2908 | 3618 | ||
2909 | PDUMPMALLOCPAGETABLE(&psDeviceNode->sDevID, hPTPageOSMemHandle, 0, pui32PT, SGX_MMU_PAGE_SIZE, 0, PDUMP_PT_UNIQUETAG); | 3619 | PDUMPMALLOCPAGETABLE(&psDeviceNode->sDevId, hPTPageOSMemHandle, 0, pui32PT, SGX_MMU_PAGE_SIZE, 0, PDUMP_PT_UNIQUETAG); |
2910 | PDUMPMEMPTENTRIES(PVRSRV_DEVICE_TYPE_SGX, hPDPageOSMemHandle, pui32PD, SGX_MMU_PAGE_SIZE, 0, IMG_TRUE, PDUMP_PD_UNIQUETAG, PDUMP_PT_UNIQUETAG); | 3620 | PDUMPMEMPTENTRIES(&psDevInfo->sMMUAttrib, psDeviceNode->sDevMemoryInfo.pBMKernelContext->psMMUContext->hPDOSMemHandle, pui32PD, SGX_MMU_PAGE_SIZE, 0, IMG_TRUE, PDUMP_PD_UNIQUETAG, PDUMP_PT_UNIQUETAG); |
2911 | PDUMPMEMPTENTRIES(PVRSRV_DEVICE_TYPE_SGX, hPTPageOSMemHandle, pui32PT, SGX_MMU_PAGE_SIZE, 0, IMG_TRUE, PDUMP_PT_UNIQUETAG, PDUMP_PD_UNIQUETAG); | 3621 | PDUMPMEMPTENTRIES(&psDevInfo->sMMUAttrib, hPTPageOSMemHandle, pui32PT, SGX_MMU_PAGE_SIZE, 0, IMG_TRUE, PDUMP_PT_UNIQUETAG, PDUMP_PD_UNIQUETAG); |
2912 | 3622 | ||
2913 | 3623 | ||
2914 | psDevInfo->pui32ExtSystemCacheRegsPT = pui32PT; | 3624 | psDevInfo->pui32ExtSystemCacheRegsPT = pui32PT; |
diff --git a/drivers/gpu/pvr/sgx/mmu.h b/drivers/gpu/pvr/sgx/mmu.h index 80e3122a438..3c471a4994f 100644 --- a/drivers/gpu/pvr/sgx/mmu.h +++ b/drivers/gpu/pvr/sgx/mmu.h | |||
@@ -78,7 +78,7 @@ MMU_MapPages (MMU_HEAP *pMMUHeap, | |||
78 | IMG_VOID | 78 | IMG_VOID |
79 | MMU_MapShadow (MMU_HEAP * pMMUHeap, | 79 | MMU_MapShadow (MMU_HEAP * pMMUHeap, |
80 | IMG_DEV_VIRTADDR MapBaseDevVAddr, | 80 | IMG_DEV_VIRTADDR MapBaseDevVAddr, |
81 | IMG_SIZE_T uByteSize, | 81 | IMG_SIZE_T uByteSize, |
82 | IMG_CPU_VIRTADDR CpuVAddr, | 82 | IMG_CPU_VIRTADDR CpuVAddr, |
83 | IMG_HANDLE hOSMemHandle, | 83 | IMG_HANDLE hOSMemHandle, |
84 | IMG_DEV_VIRTADDR * pDevVAddr, | 84 | IMG_DEV_VIRTADDR * pDevVAddr, |
@@ -139,6 +139,12 @@ PVRSRV_ERROR MMU_UnmapExtSystemCacheRegs(PVRSRV_DEVICE_NODE *psDeviceNode); | |||
139 | 139 | ||
140 | IMG_BOOL MMU_IsHeapShared(MMU_HEAP* pMMU_Heap); | 140 | IMG_BOOL MMU_IsHeapShared(MMU_HEAP* pMMU_Heap); |
141 | 141 | ||
142 | #if defined(FIX_HW_BRN_31620) | ||
143 | IMG_VOID MMU_GetCacheFlushRange(MMU_CONTEXT *pMMUContext, IMG_UINT32 *pui32RangeMask); | ||
144 | |||
145 | IMG_VOID MMU_GetPDPhysAddr(MMU_CONTEXT *pMMUContext, IMG_DEV_PHYADDR *psDevPAddr); | ||
146 | |||
147 | #endif | ||
142 | #if defined(PDUMP) | 148 | #if defined(PDUMP) |
143 | IMG_UINT32 MMU_GetPDumpContextID(IMG_HANDLE hDevMemContext); | 149 | IMG_UINT32 MMU_GetPDumpContextID(IMG_HANDLE hDevMemContext); |
144 | #endif | 150 | #endif |
diff --git a/drivers/gpu/pvr/sgx/pb.c b/drivers/gpu/pvr/sgx/pb.c index f9e8b19a70a..b2ba005d008 100644 --- a/drivers/gpu/pvr/sgx/pb.c +++ b/drivers/gpu/pvr/sgx/pb.c | |||
@@ -185,6 +185,7 @@ SGXCleanupSharedPBDescKM(PVRSRV_STUB_PBDESC *psStubPBDescIn) | |||
185 | psStubPBDescIn->ui32RefCount--; | 185 | psStubPBDescIn->ui32RefCount--; |
186 | if (psStubPBDescIn->ui32RefCount == 0) | 186 | if (psStubPBDescIn->ui32RefCount == 0) |
187 | { | 187 | { |
188 | IMG_DEV_VIRTADDR sHWPBDescDevVAddr = psStubPBDescIn->sHWPBDescDevVAddr; | ||
188 | List_PVRSRV_STUB_PBDESC_Remove(psStubPBDescIn); | 189 | List_PVRSRV_STUB_PBDESC_Remove(psStubPBDescIn); |
189 | for(i=0 ; i<psStubPBDescIn->ui32SubKernelMemInfosCount; i++) | 190 | for(i=0 ; i<psStubPBDescIn->ui32SubKernelMemInfosCount; i++) |
190 | { | 191 | { |
@@ -215,7 +216,7 @@ SGXCleanupSharedPBDescKM(PVRSRV_STUB_PBDESC *psStubPBDescIn) | |||
215 | 216 | ||
216 | 217 | ||
217 | SGXCleanupRequest(psDeviceNode, | 218 | SGXCleanupRequest(psDeviceNode, |
218 | IMG_NULL, | 219 | &sHWPBDescDevVAddr, |
219 | PVRSRV_CLEANUPCMD_PB); | 220 | PVRSRV_CLEANUPCMD_PB); |
220 | } | 221 | } |
221 | return PVRSRV_OK; | 222 | return PVRSRV_OK; |
@@ -268,7 +269,8 @@ SGXAddSharedPBDescKM(PVRSRV_PER_PROCESS_DATA *psPerProc, | |||
268 | IMG_UINT32 ui32TotalPBSize, | 269 | IMG_UINT32 ui32TotalPBSize, |
269 | IMG_HANDLE *phSharedPBDesc, | 270 | IMG_HANDLE *phSharedPBDesc, |
270 | PVRSRV_KERNEL_MEM_INFO **ppsSharedPBDescSubKernelMemInfos, | 271 | PVRSRV_KERNEL_MEM_INFO **ppsSharedPBDescSubKernelMemInfos, |
271 | IMG_UINT32 ui32SharedPBDescSubKernelMemInfosCount) | 272 | IMG_UINT32 ui32SharedPBDescSubKernelMemInfosCount, |
273 | IMG_DEV_VIRTADDR sHWPBDescDevVAddr) | ||
272 | { | 274 | { |
273 | PVRSRV_STUB_PBDESC *psStubPBDesc=IMG_NULL; | 275 | PVRSRV_STUB_PBDESC *psStubPBDesc=IMG_NULL; |
274 | PVRSRV_ERROR eRet = PVRSRV_ERROR_INVALID_PERPROC; | 276 | PVRSRV_ERROR eRet = PVRSRV_ERROR_INVALID_PERPROC; |
@@ -402,6 +404,8 @@ SGXAddSharedPBDescKM(PVRSRV_PER_PROCESS_DATA *psPerProc, | |||
402 | } | 404 | } |
403 | } | 405 | } |
404 | 406 | ||
407 | psStubPBDesc->sHWPBDescDevVAddr = sHWPBDescDevVAddr; | ||
408 | |||
405 | psResItem = ResManRegisterRes(psPerProc->hResManContext, | 409 | psResItem = ResManRegisterRes(psPerProc->hResManContext, |
406 | RESMAN_TYPE_SHARED_PB_DESC, | 410 | RESMAN_TYPE_SHARED_PB_DESC, |
407 | psStubPBDesc, | 411 | psStubPBDesc, |
diff --git a/drivers/gpu/pvr/sgx/sgx_bridge_km.h b/drivers/gpu/pvr/sgx/sgx_bridge_km.h index 7738be13f38..7a14024f4ad 100644 --- a/drivers/gpu/pvr/sgx/sgx_bridge_km.h +++ b/drivers/gpu/pvr/sgx/sgx_bridge_km.h | |||
@@ -39,16 +39,28 @@ extern "C" { | |||
39 | #endif | 39 | #endif |
40 | 40 | ||
41 | IMG_IMPORT | 41 | IMG_IMPORT |
42 | #if defined (SUPPORT_SID_INTERFACE) | ||
43 | PVRSRV_ERROR SGXSubmitTransferKM(IMG_HANDLE hDevHandle, PVRSRV_TRANSFER_SGX_KICK_KM *psKick); | ||
44 | #else | ||
42 | PVRSRV_ERROR SGXSubmitTransferKM(IMG_HANDLE hDevHandle, PVRSRV_TRANSFER_SGX_KICK *psKick); | 45 | PVRSRV_ERROR SGXSubmitTransferKM(IMG_HANDLE hDevHandle, PVRSRV_TRANSFER_SGX_KICK *psKick); |
46 | #endif | ||
43 | 47 | ||
44 | #if defined(SGX_FEATURE_2D_HARDWARE) | 48 | #if defined(SGX_FEATURE_2D_HARDWARE) |
45 | IMG_IMPORT | 49 | IMG_IMPORT |
50 | #if defined (SUPPORT_SID_INTERFACE) | ||
51 | PVRSRV_ERROR SGXSubmit2DKM(IMG_HANDLE hDevHandle, PVRSRV_2D_SGX_KICK_KM *psKick); | ||
52 | #else | ||
46 | PVRSRV_ERROR SGXSubmit2DKM(IMG_HANDLE hDevHandle, PVRSRV_2D_SGX_KICK *psKick); | 53 | PVRSRV_ERROR SGXSubmit2DKM(IMG_HANDLE hDevHandle, PVRSRV_2D_SGX_KICK *psKick); |
47 | #endif | 54 | #endif |
55 | #endif | ||
48 | 56 | ||
49 | IMG_IMPORT | 57 | IMG_IMPORT |
50 | PVRSRV_ERROR SGXDoKickKM(IMG_HANDLE hDevHandle, | 58 | PVRSRV_ERROR SGXDoKickKM(IMG_HANDLE hDevHandle, |
59 | #if defined (SUPPORT_SID_INTERFACE) | ||
60 | SGX_CCB_KICK_KM *psCCBKick); | ||
61 | #else | ||
51 | SGX_CCB_KICK *psCCBKick); | 62 | SGX_CCB_KICK *psCCBKick); |
63 | #endif | ||
52 | 64 | ||
53 | IMG_IMPORT | 65 | IMG_IMPORT |
54 | PVRSRV_ERROR SGXGetPhysPageAddrKM(IMG_HANDLE hDevMemHeap, | 66 | PVRSRV_ERROR SGXGetPhysPageAddrKM(IMG_HANDLE hDevMemHeap, |
@@ -86,12 +98,21 @@ PVRSRV_ERROR SGX2DQueryBlitsCompleteKM(PVRSRV_SGXDEV_INFO *psDevInfo, | |||
86 | 98 | ||
87 | IMG_IMPORT | 99 | IMG_IMPORT |
88 | PVRSRV_ERROR SGXGetInfoForSrvinitKM(IMG_HANDLE hDevHandle, | 100 | PVRSRV_ERROR SGXGetInfoForSrvinitKM(IMG_HANDLE hDevHandle, |
101 | #if defined (SUPPORT_SID_INTERFACE) | ||
102 | PVRSRV_HEAP_INFO_KM *pasHeapInfo, | ||
103 | IMG_DEV_PHYADDR *psPDDevPAddr); | ||
104 | #else | ||
89 | SGX_BRIDGE_INFO_FOR_SRVINIT *psInitInfo); | 105 | SGX_BRIDGE_INFO_FOR_SRVINIT *psInitInfo); |
106 | #endif | ||
90 | 107 | ||
91 | IMG_IMPORT | 108 | IMG_IMPORT |
92 | PVRSRV_ERROR DevInitSGXPart2KM(PVRSRV_PER_PROCESS_DATA *psPerProc, | 109 | PVRSRV_ERROR DevInitSGXPart2KM(PVRSRV_PER_PROCESS_DATA *psPerProc, |
93 | IMG_HANDLE hDevHandle, | 110 | IMG_HANDLE hDevHandle, |
111 | #if defined (SUPPORT_SID_INTERFACE) | ||
112 | SGX_BRIDGE_INIT_INFO_KM *psInitInfo); | ||
113 | #else | ||
94 | SGX_BRIDGE_INIT_INFO *psInitInfo); | 114 | SGX_BRIDGE_INIT_INFO *psInitInfo); |
115 | #endif | ||
95 | 116 | ||
96 | IMG_IMPORT PVRSRV_ERROR | 117 | IMG_IMPORT PVRSRV_ERROR |
97 | SGXFindSharedPBDescKM(PVRSRV_PER_PROCESS_DATA *psPerProc, | 118 | SGXFindSharedPBDescKM(PVRSRV_PER_PROCESS_DATA *psPerProc, |
@@ -119,12 +140,17 @@ SGXAddSharedPBDescKM(PVRSRV_PER_PROCESS_DATA *psPerProc, | |||
119 | IMG_UINT32 ui32TotalPBSize, | 140 | IMG_UINT32 ui32TotalPBSize, |
120 | IMG_HANDLE *phSharedPBDesc, | 141 | IMG_HANDLE *phSharedPBDesc, |
121 | PVRSRV_KERNEL_MEM_INFO **psSharedPBDescSubKernelMemInfos, | 142 | PVRSRV_KERNEL_MEM_INFO **psSharedPBDescSubKernelMemInfos, |
122 | IMG_UINT32 ui32SharedPBDescSubKernelMemInfosCount); | 143 | IMG_UINT32 ui32SharedPBDescSubKernelMemInfosCount, |
144 | IMG_DEV_VIRTADDR sHWPBDescDevVAddr); | ||
123 | 145 | ||
124 | 146 | ||
125 | IMG_IMPORT PVRSRV_ERROR | 147 | IMG_IMPORT PVRSRV_ERROR |
126 | SGXGetInternalDevInfoKM(IMG_HANDLE hDevCookie, | 148 | SGXGetInternalDevInfoKM(IMG_HANDLE hDevCookie, |
149 | #if defined (SUPPORT_SID_INTERFACE) | ||
150 | SGX_INTERNAL_DEVINFO_KM *psSGXInternalDevInfo); | ||
151 | #else | ||
127 | SGX_INTERNAL_DEVINFO *psSGXInternalDevInfo); | 152 | SGX_INTERNAL_DEVINFO *psSGXInternalDevInfo); |
153 | #endif | ||
128 | 154 | ||
129 | #if defined (__cplusplus) | 155 | #if defined (__cplusplus) |
130 | } | 156 | } |
diff --git a/drivers/gpu/pvr/sgx/sgxconfig.h b/drivers/gpu/pvr/sgx/sgxconfig.h index 6d9d077bb85..8cbe39bc11f 100644 --- a/drivers/gpu/pvr/sgx/sgxconfig.h +++ b/drivers/gpu/pvr/sgx/sgxconfig.h | |||
@@ -36,6 +36,70 @@ | |||
36 | #define DEV_MINOR_VERSION 0 | 36 | #define DEV_MINOR_VERSION 0 |
37 | 37 | ||
38 | #if SGX_FEATURE_ADDRESS_SPACE_SIZE == 32 | 38 | #if SGX_FEATURE_ADDRESS_SPACE_SIZE == 32 |
39 | #if defined(FIX_HW_BRN_31620) | ||
40 | #if defined(SGX_FEATURE_2D_HARDWARE) | ||
41 | #define SGX_2D_HEAP_BASE 0x04000000 | ||
42 | #define SGX_2D_HEAP_SIZE (0x08000000-0x04000000-0x00001000) | ||
43 | #endif | ||
44 | |||
45 | #define SGX_GENERAL_HEAP_BASE 0x08000000 | ||
46 | #define SGX_GENERAL_HEAP_SIZE (0xB8000000-0x00001000) | ||
47 | |||
48 | |||
49 | #define SGX_3DPARAMETERS_HEAP_SIZE 0x10000000 | ||
50 | |||
51 | |||
52 | #if !defined(HYBRID_SHARED_PB_SIZE) | ||
53 | #define HYBRID_SHARED_PB_SIZE (SGX_3DPARAMETERS_HEAP_SIZE >> 1) | ||
54 | #endif | ||
55 | #if defined(SUPPORT_HYBRID_PB) | ||
56 | #define SGX_SHARED_3DPARAMETERS_SIZE (HYBRID_SHARED_PB_SIZE) | ||
57 | #define SGX_SHARED_3DPARAMETERS_HEAP_SIZE (HYBRID_SHARED_PB_SIZE-0x00001000) | ||
58 | #define SGX_PERCONTEXT_3DPARAMETERS_HEAP_SIZE (SGX_3DPARAMETERS_HEAP_SIZE - SGX_SHARED_3DPARAMETERS_SIZE - 0x00001000) | ||
59 | #else | ||
60 | #if defined(SUPPORT_PERCONTEXT_PB) | ||
61 | #define SGX_SHARED_3DPARAMETERS_SIZE 0 | ||
62 | #define SGX_SHARED_3DPARAMETERS_HEAP_SIZE 0 | ||
63 | #define SGX_PERCONTEXT_3DPARAMETERS_HEAP_SIZE (SGX_3DPARAMETERS_HEAP_SIZE - 0x00001000) | ||
64 | #endif | ||
65 | #if defined(SUPPORT_SHARED_PB) | ||
66 | #define SGX_SHARED_3DPARAMETERS_SIZE SGX_3DPARAMETERS_HEAP_SIZE | ||
67 | #define SGX_SHARED_3DPARAMETERS_HEAP_SIZE (SGX_3DPARAMETERS_HEAP_SIZE - 0x00001000) | ||
68 | #define SGX_PERCONTEXT_3DPARAMETERS_HEAP_SIZE 0 | ||
69 | #endif | ||
70 | #endif | ||
71 | |||
72 | #define SGX_SHARED_3DPARAMETERS_HEAP_BASE 0xC0000000 | ||
73 | |||
74 | |||
75 | #define SGX_PERCONTEXT_3DPARAMETERS_HEAP_BASE (SGX_SHARED_3DPARAMETERS_HEAP_BASE + SGX_SHARED_3DPARAMETERS_SIZE) | ||
76 | |||
77 | |||
78 | #define SGX_TADATA_HEAP_BASE 0xD0000000 | ||
79 | #define SGX_TADATA_HEAP_SIZE (0x0D000000-0x00001000) | ||
80 | |||
81 | #define SGX_SYNCINFO_HEAP_BASE 0xE0000000 | ||
82 | #define SGX_SYNCINFO_HEAP_SIZE (0x01000000-0x00001000) | ||
83 | |||
84 | #define SGX_PDSPIXEL_CODEDATA_HEAP_BASE 0xE4000000 | ||
85 | #define SGX_PDSPIXEL_CODEDATA_HEAP_SIZE (0x02000000-0x00001000) | ||
86 | |||
87 | #define SGX_KERNEL_CODE_HEAP_BASE 0xE8000000 | ||
88 | #define SGX_KERNEL_CODE_HEAP_SIZE (0x00080000-0x00001000) | ||
89 | |||
90 | #define SGX_PDSVERTEX_CODEDATA_HEAP_BASE 0xEC000000 | ||
91 | #define SGX_PDSVERTEX_CODEDATA_HEAP_SIZE (0x01C00000-0x00001000) | ||
92 | |||
93 | #define SGX_KERNEL_DATA_HEAP_BASE 0xF0000000 | ||
94 | #define SGX_KERNEL_DATA_HEAP_SIZE (0x03000000-0x00001000) | ||
95 | |||
96 | |||
97 | #define SGX_PIXELSHADER_HEAP_BASE 0xF4000000 | ||
98 | #define SGX_PIXELSHADER_HEAP_SIZE (0x05000000-0x00001000) | ||
99 | |||
100 | #define SGX_VERTEXSHADER_HEAP_BASE 0xFC000000 | ||
101 | #define SGX_VERTEXSHADER_HEAP_SIZE (0x02000000-0x00001000) | ||
102 | #else | ||
39 | #if defined(SGX_FEATURE_2D_HARDWARE) | 103 | #if defined(SGX_FEATURE_2D_HARDWARE) |
40 | #define SGX_2D_HEAP_BASE 0x00100000 | 104 | #define SGX_2D_HEAP_BASE 0x00100000 |
41 | #define SGX_2D_HEAP_SIZE (0x08000000-0x00100000-0x00001000) | 105 | #define SGX_2D_HEAP_SIZE (0x08000000-0x00100000-0x00001000) |
@@ -54,8 +118,35 @@ | |||
54 | #define SGX_GENERAL_HEAP_BASE 0x10000000 | 118 | #define SGX_GENERAL_HEAP_BASE 0x10000000 |
55 | #define SGX_GENERAL_HEAP_SIZE (0xC2000000-0x00001000) | 119 | #define SGX_GENERAL_HEAP_SIZE (0xC2000000-0x00001000) |
56 | 120 | ||
57 | #define SGX_3DPARAMETERS_HEAP_BASE 0xD2000000 | 121 | |
58 | #define SGX_3DPARAMETERS_HEAP_SIZE (0x10000000-0x00001000) | 122 | #define SGX_3DPARAMETERS_HEAP_SIZE 0x10000000 |
123 | |||
124 | |||
125 | #if !defined(HYBRID_SHARED_PB_SIZE) | ||
126 | #define HYBRID_SHARED_PB_SIZE (SGX_3DPARAMETERS_HEAP_SIZE >> 1) | ||
127 | #endif | ||
128 | #if defined(SUPPORT_HYBRID_PB) | ||
129 | #define SGX_SHARED_3DPARAMETERS_SIZE (HYBRID_SHARED_PB_SIZE) | ||
130 | #define SGX_SHARED_3DPARAMETERS_HEAP_SIZE (HYBRID_SHARED_PB_SIZE-0x00001000) | ||
131 | #define SGX_PERCONTEXT_3DPARAMETERS_HEAP_SIZE (SGX_3DPARAMETERS_HEAP_SIZE - SGX_SHARED_3DPARAMETERS_SIZE - 0x00001000) | ||
132 | #else | ||
133 | #if defined(SUPPORT_PERCONTEXT_PB) | ||
134 | #define SGX_SHARED_3DPARAMETERS_SIZE 0 | ||
135 | #define SGX_SHARED_3DPARAMETERS_HEAP_SIZE 0 | ||
136 | #define SGX_PERCONTEXT_3DPARAMETERS_HEAP_SIZE (SGX_3DPARAMETERS_HEAP_SIZE - 0x00001000) | ||
137 | #endif | ||
138 | #if defined(SUPPORT_SHARED_PB) | ||
139 | #define SGX_SHARED_3DPARAMETERS_SIZE SGX_3DPARAMETERS_HEAP_SIZE | ||
140 | #define SGX_SHARED_3DPARAMETERS_HEAP_SIZE (SGX_3DPARAMETERS_HEAP_SIZE - 0x00001000) | ||
141 | #define SGX_PERCONTEXT_3DPARAMETERS_HEAP_SIZE 0 | ||
142 | #endif | ||
143 | #endif | ||
144 | |||
145 | #define SGX_SHARED_3DPARAMETERS_HEAP_BASE 0xD2000000 | ||
146 | |||
147 | |||
148 | #define SGX_PERCONTEXT_3DPARAMETERS_HEAP_BASE (SGX_SHARED_3DPARAMETERS_HEAP_BASE + SGX_SHARED_3DPARAMETERS_SIZE) | ||
149 | |||
59 | 150 | ||
60 | #define SGX_TADATA_HEAP_BASE 0xE2000000 | 151 | #define SGX_TADATA_HEAP_BASE 0xE2000000 |
61 | #define SGX_TADATA_HEAP_SIZE (0x0D000000-0x00001000) | 152 | #define SGX_TADATA_HEAP_SIZE (0x0D000000-0x00001000) |
@@ -81,10 +172,10 @@ | |||
81 | 172 | ||
82 | #define SGX_VERTEXSHADER_HEAP_BASE 0xFE000000 | 173 | #define SGX_VERTEXSHADER_HEAP_BASE 0xFE000000 |
83 | #define SGX_VERTEXSHADER_HEAP_SIZE (0x02000000-0x00001000) | 174 | #define SGX_VERTEXSHADER_HEAP_SIZE (0x02000000-0x00001000) |
84 | 175 | #endif | |
85 | 176 | ||
86 | #define SGX_CORE_IDENTIFIED | 177 | #define SGX_CORE_IDENTIFIED |
87 | #endif | 178 | #endif |
88 | 179 | ||
89 | #if SGX_FEATURE_ADDRESS_SPACE_SIZE == 28 | 180 | #if SGX_FEATURE_ADDRESS_SPACE_SIZE == 28 |
90 | 181 | ||
@@ -99,9 +190,35 @@ | |||
99 | #define SGX_GENERAL_HEAP_BASE 0x00001000 | 190 | #define SGX_GENERAL_HEAP_BASE 0x00001000 |
100 | #define SGX_GENERAL_HEAP_SIZE (0x08800000-0x00001000-0x00001000) | 191 | #define SGX_GENERAL_HEAP_SIZE (0x08800000-0x00001000-0x00001000) |
101 | #endif | 192 | #endif |
193 | |||
194 | #define SGX_3DPARAMETERS_HEAP_SIZE 0x04000000 | ||
195 | |||
196 | |||
197 | #if !defined(HYBRID_SHARED_PB_SIZE) | ||
198 | #define HYBRID_SHARED_PB_SIZE (SGX_3DPARAMETERS_HEAP_SIZE >> 1) | ||
199 | #endif | ||
200 | #if defined(SUPPORT_HYBRID_PB) | ||
201 | #define SGX_SHARED_3DPARAMETERS_SIZE (HYBRID_SHARED_PB_SIZE) | ||
202 | #define SGX_SHARED_3DPARAMETERS_HEAP_SIZE (HYBRID_SHARED_PB_SIZE-0x00001000) | ||
203 | #define SGX_PERCONTEXT_3DPARAMETERS_HEAP_SIZE (SGX_3DPARAMETERS_HEAP_SIZE - SGX_SHARED_3DPARAMETERS_SIZE - 0x00001000) | ||
204 | #else | ||
205 | #if defined(SUPPORT_PERCONTEXT_PB) | ||
206 | #define SGX_SHARED_3DPARAMETERS_SIZE 0 | ||
207 | #define SGX_SHARED_3DPARAMETERS_HEAP_SIZE 0 | ||
208 | #define SGX_PERCONTEXT_3DPARAMETERS_HEAP_SIZE (SGX_3DPARAMETERS_HEAP_SIZE - 0x00001000) | ||
209 | #endif | ||
210 | #if defined(SUPPORT_SHARED_PB) | ||
211 | #define SGX_SHARED_3DPARAMETERS_SIZE SGX_3DPARAMETERS_HEAP_SIZE | ||
212 | #define SGX_SHARED_3DPARAMETERS_HEAP_SIZE (SGX_3DPARAMETERS_HEAP_SIZE - 0x00001000) | ||
213 | #define SGX_PERCONTEXT_3DPARAMETERS_HEAP_SIZE 0 | ||
214 | #endif | ||
215 | #endif | ||
102 | 216 | ||
103 | #define SGX_3DPARAMETERS_HEAP_BASE 0x08800000 | 217 | #define SGX_SHARED_3DPARAMETERS_HEAP_BASE 0x08800000 |
104 | #define SGX_3DPARAMETERS_HEAP_SIZE (0x04000000-0x00001000) | 218 | |
219 | |||
220 | #define SGX_PERCONTEXT_3DPARAMETERS_HEAP_BASE (SGX_SHARED_3DPARAMETERS_HEAP_BASE + SGX_SHARED_3DPARAMETERS_SIZE) | ||
221 | |||
105 | 222 | ||
106 | #define SGX_TADATA_HEAP_BASE 0x0C800000 | 223 | #define SGX_TADATA_HEAP_BASE 0x0C800000 |
107 | #define SGX_TADATA_HEAP_SIZE (0x01000000-0x00001000) | 224 | #define SGX_TADATA_HEAP_SIZE (0x01000000-0x00001000) |
@@ -127,10 +244,10 @@ | |||
127 | #define SGX_VERTEXSHADER_HEAP_BASE 0x0FC00000 | 244 | #define SGX_VERTEXSHADER_HEAP_BASE 0x0FC00000 |
128 | #define SGX_VERTEXSHADER_HEAP_SIZE (0x00200000-0x00001000) | 245 | #define SGX_VERTEXSHADER_HEAP_SIZE (0x00200000-0x00001000) |
129 | 246 | ||
130 | 247 | ||
131 | #define SGX_CORE_IDENTIFIED | 248 | #define SGX_CORE_IDENTIFIED |
132 | 249 | ||
133 | #endif | 250 | #endif |
134 | 251 | ||
135 | #if !defined(SGX_CORE_IDENTIFIED) | 252 | #if !defined(SGX_CORE_IDENTIFIED) |
136 | #error "sgxconfig.h: ERROR: unspecified SGX Core version" | 253 | #error "sgxconfig.h: ERROR: unspecified SGX Core version" |
@@ -188,12 +305,18 @@ | |||
188 | #endif | 305 | #endif |
189 | #endif | 306 | #endif |
190 | 307 | ||
191 | #if ((SGX_GENERAL_HEAP_BASE + SGX_GENERAL_HEAP_SIZE) >= SGX_3DPARAMETERS_HEAP_BASE) | 308 | #if defined(SUPPORT_HYBRID_PB) |
309 | #if ((HYBRID_SHARED_PB_SIZE + 0x000001000) > SGX_3DPARAMETERS_HEAP_SIZE) | ||
310 | #error "sgxconfig.h: ERROR: HYBRID_SHARED_PB_SIZE too large" | ||
311 | #endif | ||
312 | #endif | ||
313 | |||
314 | #if ((SGX_GENERAL_HEAP_BASE + SGX_GENERAL_HEAP_SIZE) >= SGX_SHARED_3DPARAMETERS_HEAP_BASE) | ||
192 | #error "sgxconfig.h: ERROR: SGX_GENERAL_HEAP overlaps SGX_3DPARAMETERS_HEAP" | 315 | #error "sgxconfig.h: ERROR: SGX_GENERAL_HEAP overlaps SGX_3DPARAMETERS_HEAP" |
193 | #endif | 316 | #endif |
194 | 317 | ||
195 | #if ((SGX_3DPARAMETERS_HEAP_BASE + SGX_3DPARAMETERS_HEAP_SIZE) >= SGX_TADATA_HEAP_BASE) | 318 | #if (((SGX_PERCONTEXT_3DPARAMETERS_HEAP_BASE + SGX_PERCONTEXT_3DPARAMETERS_HEAP_SIZE) >= SGX_TADATA_HEAP_BASE) && (SGX_PERCONTEXT_3DPARAMETERS_HEAP_SIZE > 0)) |
196 | #error "sgxconfig.h: ERROR: SGX_3DPARAMETERS_HEAP overlaps SGX_TADATA_HEAP" | 319 | #error "sgxconfig.h: ERROR: SGX_PERCONTEXT_3DPARAMETERS_HEAP_BASE overlaps SGX_TADATA_HEAP" |
197 | #endif | 320 | #endif |
198 | 321 | ||
199 | #if ((SGX_TADATA_HEAP_BASE + SGX_TADATA_HEAP_SIZE) >= SGX_SYNCINFO_HEAP_BASE) | 322 | #if ((SGX_TADATA_HEAP_BASE + SGX_TADATA_HEAP_SIZE) >= SGX_SYNCINFO_HEAP_BASE) |
diff --git a/drivers/gpu/pvr/sgx/sgxinfokm.h b/drivers/gpu/pvr/sgx/sgxinfokm.h index 056db35831d..fdb0f671b9d 100644 --- a/drivers/gpu/pvr/sgx/sgxinfokm.h +++ b/drivers/gpu/pvr/sgx/sgxinfokm.h | |||
@@ -126,6 +126,10 @@ typedef struct _PVRSRV_SGXDEV_INFO_ | |||
126 | #if defined(FIX_HW_BRN_29823) | 126 | #if defined(FIX_HW_BRN_29823) |
127 | PPVRSRV_KERNEL_MEM_INFO psKernelDummyTermStreamMemInfo; | 127 | PPVRSRV_KERNEL_MEM_INFO psKernelDummyTermStreamMemInfo; |
128 | #endif | 128 | #endif |
129 | #if defined(SGX_FEATURE_VDM_CONTEXT_SWITCH) && defined(FIX_HW_BRN_31425) | ||
130 | PPVRSRV_KERNEL_MEM_INFO psKernelVDMSnapShotBufferMemInfo; | ||
131 | PPVRSRV_KERNEL_MEM_INFO psKernelVDMCtrlStreamBufferMemInfo; | ||
132 | #endif | ||
129 | #if defined(PVRSRV_USSE_EDM_STATUS_DEBUG) | 133 | #if defined(PVRSRV_USSE_EDM_STATUS_DEBUG) |
130 | PPVRSRV_KERNEL_MEM_INFO psKernelEDMStatusBufferMemInfo; | 134 | PPVRSRV_KERNEL_MEM_INFO psKernelEDMStatusBufferMemInfo; |
131 | #endif | 135 | #endif |
@@ -159,6 +163,8 @@ typedef struct _PVRSRV_SGXDEV_INFO_ | |||
159 | IMG_UINT32 ui32EDMTaskReg0; | 163 | IMG_UINT32 ui32EDMTaskReg0; |
160 | IMG_UINT32 ui32EDMTaskReg1; | 164 | IMG_UINT32 ui32EDMTaskReg1; |
161 | 165 | ||
166 | IMG_UINT32 ui32ClkGateCtl; | ||
167 | IMG_UINT32 ui32ClkGateCtl2; | ||
162 | IMG_UINT32 ui32ClkGateStatusReg; | 168 | IMG_UINT32 ui32ClkGateStatusReg; |
163 | IMG_UINT32 ui32ClkGateStatusMask; | 169 | IMG_UINT32 ui32ClkGateStatusMask; |
164 | #if defined(SGX_FEATURE_MP) | 170 | #if defined(SGX_FEATURE_MP) |
@@ -228,6 +234,20 @@ typedef struct _PVRSRV_SGXDEV_INFO_ | |||
228 | #endif | 234 | #endif |
229 | IMG_UINT32 asSGXDevData[SGX_MAX_DEV_DATA]; | 235 | IMG_UINT32 asSGXDevData[SGX_MAX_DEV_DATA]; |
230 | 236 | ||
237 | #if defined(FIX_HW_BRN_31620) | ||
238 | |||
239 | IMG_VOID *pvBRN31620DummyPageCpuVAddr; | ||
240 | IMG_HANDLE hBRN31620DummyPageOSMemHandle; | ||
241 | IMG_DEV_PHYADDR sBRN31620DummyPageDevPAddr; | ||
242 | |||
243 | |||
244 | IMG_VOID *pvBRN31620DummyPTCpuVAddr; | ||
245 | IMG_HANDLE hBRN31620DummyPTOSMemHandle; | ||
246 | IMG_DEV_PHYADDR sBRN31620DummyPTDevPAddr; | ||
247 | |||
248 | IMG_HANDLE hKernelMMUContext; | ||
249 | #endif | ||
250 | |||
231 | } PVRSRV_SGXDEV_INFO; | 251 | } PVRSRV_SGXDEV_INFO; |
232 | 252 | ||
233 | 253 | ||
@@ -292,6 +312,7 @@ struct _PVRSRV_STUB_PBDESC_ | |||
292 | IMG_HANDLE hDevCookie; | 312 | IMG_HANDLE hDevCookie; |
293 | PVRSRV_KERNEL_MEM_INFO *psBlockKernelMemInfo; | 313 | PVRSRV_KERNEL_MEM_INFO *psBlockKernelMemInfo; |
294 | PVRSRV_KERNEL_MEM_INFO *psHWBlockKernelMemInfo; | 314 | PVRSRV_KERNEL_MEM_INFO *psHWBlockKernelMemInfo; |
315 | IMG_DEV_VIRTADDR sHWPBDescDevVAddr; | ||
295 | PVRSRV_STUB_PBDESC *psNext; | 316 | PVRSRV_STUB_PBDESC *psNext; |
296 | PVRSRV_STUB_PBDESC **ppsThis; | 317 | PVRSRV_STUB_PBDESC **ppsThis; |
297 | }; | 318 | }; |
@@ -308,6 +329,183 @@ typedef struct _PVRSRV_SGX_CCB_INFO_ | |||
308 | #endif | 329 | #endif |
309 | } PVRSRV_SGX_CCB_INFO; | 330 | } PVRSRV_SGX_CCB_INFO; |
310 | 331 | ||
332 | |||
333 | typedef struct _SGX_BRIDGE_INIT_INFO_KM_ | ||
334 | { | ||
335 | IMG_HANDLE hKernelCCBMemInfo; | ||
336 | IMG_HANDLE hKernelCCBCtlMemInfo; | ||
337 | IMG_HANDLE hKernelCCBEventKickerMemInfo; | ||
338 | IMG_HANDLE hKernelSGXHostCtlMemInfo; | ||
339 | IMG_HANDLE hKernelSGXTA3DCtlMemInfo; | ||
340 | IMG_HANDLE hKernelSGXMiscMemInfo; | ||
341 | |||
342 | IMG_UINT32 aui32HostKickAddr[SGXMKIF_CMD_MAX]; | ||
343 | |||
344 | SGX_INIT_SCRIPTS sScripts; | ||
345 | |||
346 | IMG_UINT32 ui32ClientBuildOptions; | ||
347 | SGX_MISCINFO_STRUCT_SIZES sSGXStructSizes; | ||
348 | |||
349 | #if defined(SGX_SUPPORT_HWPROFILING) | ||
350 | IMG_HANDLE hKernelHWProfilingMemInfo; | ||
351 | #endif | ||
352 | #if defined(SUPPORT_SGX_HWPERF) | ||
353 | IMG_HANDLE hKernelHWPerfCBMemInfo; | ||
354 | #endif | ||
355 | IMG_HANDLE hKernelTASigBufferMemInfo; | ||
356 | IMG_HANDLE hKernel3DSigBufferMemInfo; | ||
357 | |||
358 | #if defined(FIX_HW_BRN_29702) | ||
359 | IMG_HANDLE hKernelCFIMemInfo; | ||
360 | #endif | ||
361 | #if defined(FIX_HW_BRN_29823) | ||
362 | IMG_HANDLE hKernelDummyTermStreamMemInfo; | ||
363 | #endif | ||
364 | #if defined(PVRSRV_USSE_EDM_STATUS_DEBUG) | ||
365 | IMG_HANDLE hKernelEDMStatusBufferMemInfo; | ||
366 | #endif | ||
367 | #if defined(SGX_FEATURE_OVERLAPPED_SPM) | ||
368 | IMG_HANDLE hKernelTmpRgnHeaderMemInfo; | ||
369 | #endif | ||
370 | #if defined(SGX_FEATURE_SPM_MODE_0) | ||
371 | IMG_HANDLE hKernelTmpDPMStateMemInfo; | ||
372 | #endif | ||
373 | |||
374 | IMG_UINT32 ui32EDMTaskReg0; | ||
375 | IMG_UINT32 ui32EDMTaskReg1; | ||
376 | |||
377 | IMG_UINT32 ui32ClkGateStatusReg; | ||
378 | IMG_UINT32 ui32ClkGateStatusMask; | ||
379 | #if defined(SGX_FEATURE_MP) | ||
380 | #endif | ||
381 | |||
382 | IMG_UINT32 ui32CacheControl; | ||
383 | |||
384 | IMG_UINT32 asInitDevData[SGX_MAX_DEV_DATA]; | ||
385 | IMG_HANDLE asInitMemHandles[SGX_MAX_INIT_MEM_HANDLES]; | ||
386 | |||
387 | } SGX_BRIDGE_INIT_INFO_KM; | ||
388 | |||
389 | |||
390 | typedef struct _SGX_INTERNEL_STATUS_UPDATE_KM_ | ||
391 | { | ||
392 | CTL_STATUS sCtlStatus; | ||
393 | IMG_HANDLE hKernelMemInfo; | ||
394 | } SGX_INTERNEL_STATUS_UPDATE_KM; | ||
395 | |||
396 | |||
397 | typedef struct _SGX_CCB_KICK_KM_ | ||
398 | { | ||
399 | SGXMKIF_COMMAND sCommand; | ||
400 | IMG_HANDLE hCCBKernelMemInfo; | ||
401 | |||
402 | IMG_UINT32 ui32NumDstSyncObjects; | ||
403 | IMG_HANDLE hKernelHWSyncListMemInfo; | ||
404 | |||
405 | |||
406 | IMG_HANDLE *pahDstSyncHandles; | ||
407 | |||
408 | IMG_UINT32 ui32NumTAStatusVals; | ||
409 | IMG_UINT32 ui32Num3DStatusVals; | ||
410 | |||
411 | #if defined(SUPPORT_SGX_NEW_STATUS_VALS) | ||
412 | SGX_INTERNEL_STATUS_UPDATE_KM asTAStatusUpdate[SGX_MAX_TA_STATUS_VALS]; | ||
413 | SGX_INTERNEL_STATUS_UPDATE_KM as3DStatusUpdate[SGX_MAX_3D_STATUS_VALS]; | ||
414 | #else | ||
415 | IMG_HANDLE ahTAStatusSyncInfo[SGX_MAX_TA_STATUS_VALS]; | ||
416 | IMG_HANDLE ah3DStatusSyncInfo[SGX_MAX_3D_STATUS_VALS]; | ||
417 | #endif | ||
418 | |||
419 | IMG_BOOL bFirstKickOrResume; | ||
420 | #if (defined(NO_HARDWARE) || defined(PDUMP)) | ||
421 | IMG_BOOL bTerminateOrAbort; | ||
422 | #endif | ||
423 | |||
424 | |||
425 | IMG_UINT32 ui32CCBOffset; | ||
426 | |||
427 | #if defined(SUPPORT_SGX_GENERALISED_SYNCOBJECTS) | ||
428 | |||
429 | IMG_UINT32 ui32NumTASrcSyncs; | ||
430 | IMG_HANDLE ahTASrcKernelSyncInfo[SGX_MAX_TA_SRC_SYNCS]; | ||
431 | IMG_UINT32 ui32NumTADstSyncs; | ||
432 | IMG_HANDLE ahTADstKernelSyncInfo[SGX_MAX_TA_DST_SYNCS]; | ||
433 | IMG_UINT32 ui32Num3DSrcSyncs; | ||
434 | IMG_HANDLE ah3DSrcKernelSyncInfo[SGX_MAX_3D_SRC_SYNCS]; | ||
435 | #else | ||
436 | |||
437 | IMG_UINT32 ui32NumSrcSyncs; | ||
438 | IMG_HANDLE ahSrcKernelSyncInfo[SGX_MAX_SRC_SYNCS]; | ||
439 | #endif | ||
440 | |||
441 | |||
442 | IMG_BOOL bTADependency; | ||
443 | IMG_HANDLE hTA3DSyncInfo; | ||
444 | |||
445 | IMG_HANDLE hTASyncInfo; | ||
446 | IMG_HANDLE h3DSyncInfo; | ||
447 | #if defined(PDUMP) | ||
448 | IMG_UINT32 ui32CCBDumpWOff; | ||
449 | #endif | ||
450 | #if defined(NO_HARDWARE) | ||
451 | IMG_UINT32 ui32WriteOpsPendingVal; | ||
452 | #endif | ||
453 | } SGX_CCB_KICK_KM; | ||
454 | |||
455 | |||
456 | #if defined(TRANSFER_QUEUE) | ||
457 | typedef struct _PVRSRV_TRANSFER_SGX_KICK_KM_ | ||
458 | { | ||
459 | IMG_HANDLE hCCBMemInfo; | ||
460 | IMG_UINT32 ui32SharedCmdCCBOffset; | ||
461 | |||
462 | IMG_DEV_VIRTADDR sHWTransferContextDevVAddr; | ||
463 | |||
464 | IMG_HANDLE hTASyncInfo; | ||
465 | IMG_HANDLE h3DSyncInfo; | ||
466 | |||
467 | IMG_UINT32 ui32NumSrcSync; | ||
468 | IMG_HANDLE ahSrcSyncInfo[SGX_MAX_TRANSFER_SYNC_OPS]; | ||
469 | |||
470 | IMG_UINT32 ui32NumDstSync; | ||
471 | IMG_HANDLE ahDstSyncInfo[SGX_MAX_TRANSFER_SYNC_OPS]; | ||
472 | |||
473 | IMG_UINT32 ui32Flags; | ||
474 | |||
475 | IMG_UINT32 ui32PDumpFlags; | ||
476 | #if defined(PDUMP) | ||
477 | IMG_UINT32 ui32CCBDumpWOff; | ||
478 | #endif | ||
479 | } PVRSRV_TRANSFER_SGX_KICK_KM, *PPVRSRV_TRANSFER_SGX_KICK_KM; | ||
480 | |||
481 | #if defined(SGX_FEATURE_2D_HARDWARE) | ||
482 | typedef struct _PVRSRV_2D_SGX_KICK_KM_ | ||
483 | { | ||
484 | IMG_HANDLE hCCBMemInfo; | ||
485 | IMG_UINT32 ui32SharedCmdCCBOffset; | ||
486 | |||
487 | IMG_DEV_VIRTADDR sHW2DContextDevVAddr; | ||
488 | |||
489 | IMG_UINT32 ui32NumSrcSync; | ||
490 | IMG_HANDLE ahSrcSyncInfo[SGX_MAX_2D_SRC_SYNC_OPS]; | ||
491 | |||
492 | |||
493 | IMG_HANDLE hDstSyncInfo; | ||
494 | |||
495 | |||
496 | IMG_HANDLE hTASyncInfo; | ||
497 | |||
498 | |||
499 | IMG_HANDLE h3DSyncInfo; | ||
500 | |||
501 | IMG_UINT32 ui32PDumpFlags; | ||
502 | #if defined(PDUMP) | ||
503 | IMG_UINT32 ui32CCBDumpWOff; | ||
504 | #endif | ||
505 | } PVRSRV_2D_SGX_KICK_KM, *PPVRSRV_2D_SGX_KICK_KM; | ||
506 | #endif | ||
507 | #endif | ||
508 | |||
311 | PVRSRV_ERROR SGXRegisterDevice (PVRSRV_DEVICE_NODE *psDeviceNode); | 509 | PVRSRV_ERROR SGXRegisterDevice (PVRSRV_DEVICE_NODE *psDeviceNode); |
312 | 510 | ||
313 | IMG_VOID SGXOSTimer(IMG_VOID *pvData); | 511 | IMG_VOID SGXOSTimer(IMG_VOID *pvData); |
@@ -316,6 +514,9 @@ IMG_VOID SGXReset(PVRSRV_SGXDEV_INFO *psDevInfo, | |||
316 | IMG_BOOL bHardwareRecovery, | 514 | IMG_BOOL bHardwareRecovery, |
317 | IMG_UINT32 ui32PDUMPFlags); | 515 | IMG_UINT32 ui32PDUMPFlags); |
318 | 516 | ||
517 | IMG_VOID SGXInitClocks(PVRSRV_SGXDEV_INFO *psDevInfo, | ||
518 | IMG_UINT32 ui32PDUMPFlags); | ||
519 | |||
319 | PVRSRV_ERROR SGXInitialise(PVRSRV_SGXDEV_INFO *psDevInfo, | 520 | PVRSRV_ERROR SGXInitialise(PVRSRV_SGXDEV_INFO *psDevInfo, |
320 | IMG_BOOL bHardwareRecovery); | 521 | IMG_BOOL bHardwareRecovery); |
321 | PVRSRV_ERROR SGXDeinitialise(IMG_HANDLE hDevCookie); | 522 | PVRSRV_ERROR SGXDeinitialise(IMG_HANDLE hDevCookie); |
diff --git a/drivers/gpu/pvr/sgx/sgxinit.c b/drivers/gpu/pvr/sgx/sgxinit.c index 3872102029f..e73c067bd4f 100644 --- a/drivers/gpu/pvr/sgx/sgxinit.c +++ b/drivers/gpu/pvr/sgx/sgxinit.c | |||
@@ -51,6 +51,7 @@ | |||
51 | 51 | ||
52 | #include "lists.h" | 52 | #include "lists.h" |
53 | #include "srvkm.h" | 53 | #include "srvkm.h" |
54 | #include "ttrace.h" | ||
54 | 55 | ||
55 | #define VAR(x) #x | 56 | #define VAR(x) #x |
56 | 57 | ||
@@ -74,7 +75,8 @@ IMG_BOOL SGX_ISRHandler(IMG_VOID *pvData); | |||
74 | 75 | ||
75 | static | 76 | static |
76 | PVRSRV_ERROR SGXGetMiscInfoUkernel(PVRSRV_SGXDEV_INFO *psDevInfo, | 77 | PVRSRV_ERROR SGXGetMiscInfoUkernel(PVRSRV_SGXDEV_INFO *psDevInfo, |
77 | PVRSRV_DEVICE_NODE *psDeviceNode); | 78 | PVRSRV_DEVICE_NODE *psDeviceNode, |
79 | IMG_HANDLE hDevMemContext); | ||
78 | #if defined(PDUMP) | 80 | #if defined(PDUMP) |
79 | static | 81 | static |
80 | PVRSRV_ERROR SGXResetPDump(PVRSRV_DEVICE_NODE *psDeviceNode); | 82 | PVRSRV_ERROR SGXResetPDump(PVRSRV_DEVICE_NODE *psDeviceNode); |
@@ -111,7 +113,11 @@ static IMG_UINT32 DeinitDevInfo(PVRSRV_SGXDEV_INFO *psDevInfo) | |||
111 | 113 | ||
112 | static PVRSRV_ERROR InitDevInfo(PVRSRV_PER_PROCESS_DATA *psPerProc, | 114 | static PVRSRV_ERROR InitDevInfo(PVRSRV_PER_PROCESS_DATA *psPerProc, |
113 | PVRSRV_DEVICE_NODE *psDeviceNode, | 115 | PVRSRV_DEVICE_NODE *psDeviceNode, |
116 | #if defined (SUPPORT_SID_INTERFACE) | ||
117 | SGX_BRIDGE_INIT_INFO_KM *psInitInfo) | ||
118 | #else | ||
114 | SGX_BRIDGE_INIT_INFO *psInitInfo) | 119 | SGX_BRIDGE_INIT_INFO *psInitInfo) |
120 | #endif | ||
115 | { | 121 | { |
116 | PVRSRV_SGXDEV_INFO *psDevInfo = (PVRSRV_SGXDEV_INFO *)psDeviceNode->pvDevice; | 122 | PVRSRV_SGXDEV_INFO *psDevInfo = (PVRSRV_SGXDEV_INFO *)psDeviceNode->pvDevice; |
117 | PVRSRV_ERROR eError; | 123 | PVRSRV_ERROR eError; |
@@ -135,7 +141,7 @@ static PVRSRV_ERROR InitDevInfo(PVRSRV_PER_PROCESS_DATA *psPerProc, | |||
135 | 141 | ||
136 | psDevInfo->psKernelSGXTA3DCtlMemInfo = (PVRSRV_KERNEL_MEM_INFO *)psInitInfo->hKernelSGXTA3DCtlMemInfo; | 142 | psDevInfo->psKernelSGXTA3DCtlMemInfo = (PVRSRV_KERNEL_MEM_INFO *)psInitInfo->hKernelSGXTA3DCtlMemInfo; |
137 | 143 | ||
138 | psDevInfo->psKernelSGXMiscMemInfo = (PVRSRV_KERNEL_MEM_INFO *)psInitInfo->hKernelSGXMiscMemInfo; | 144 | psDevInfo->psKernelSGXMiscMemInfo = (PVRSRV_KERNEL_MEM_INFO *)psInitInfo->hKernelSGXMiscMemInfo; |
139 | 145 | ||
140 | #if defined(SGX_SUPPORT_HWPROFILING) | 146 | #if defined(SGX_SUPPORT_HWPROFILING) |
141 | psDevInfo->psKernelHWProfilingMemInfo = (PVRSRV_KERNEL_MEM_INFO *)psInitInfo->hKernelHWProfilingMemInfo; | 147 | psDevInfo->psKernelHWProfilingMemInfo = (PVRSRV_KERNEL_MEM_INFO *)psInitInfo->hKernelHWProfilingMemInfo; |
@@ -151,6 +157,10 @@ static PVRSRV_ERROR InitDevInfo(PVRSRV_PER_PROCESS_DATA *psPerProc, | |||
151 | #if defined(FIX_HW_BRN_29823) | 157 | #if defined(FIX_HW_BRN_29823) |
152 | psDevInfo->psKernelDummyTermStreamMemInfo = (PVRSRV_KERNEL_MEM_INFO *)psInitInfo->hKernelDummyTermStreamMemInfo; | 158 | psDevInfo->psKernelDummyTermStreamMemInfo = (PVRSRV_KERNEL_MEM_INFO *)psInitInfo->hKernelDummyTermStreamMemInfo; |
153 | #endif | 159 | #endif |
160 | #if defined(SGX_FEATURE_VDM_CONTEXT_SWITCH) && defined(FIX_HW_BRN_31425) | ||
161 | psDevInfo->psKernelVDMSnapShotBufferMemInfo = (PVRSRV_KERNEL_MEM_INFO *)psInitInfo->hKernelVDMSnapShotBufferMemInfo; | ||
162 | psDevInfo->psKernelVDMCtrlStreamBufferMemInfo = (PVRSRV_KERNEL_MEM_INFO *)psInitInfo->hKernelVDMCtrlStreamBufferMemInfo; | ||
163 | #endif | ||
154 | #if defined(PVRSRV_USSE_EDM_STATUS_DEBUG) | 164 | #if defined(PVRSRV_USSE_EDM_STATUS_DEBUG) |
155 | psDevInfo->psKernelEDMStatusBufferMemInfo = (PVRSRV_KERNEL_MEM_INFO *)psInitInfo->hKernelEDMStatusBufferMemInfo; | 165 | psDevInfo->psKernelEDMStatusBufferMemInfo = (PVRSRV_KERNEL_MEM_INFO *)psInitInfo->hKernelEDMStatusBufferMemInfo; |
156 | #endif | 166 | #endif |
@@ -168,7 +178,7 @@ static PVRSRV_ERROR InitDevInfo(PVRSRV_PER_PROCESS_DATA *psPerProc, | |||
168 | 178 | ||
169 | 179 | ||
170 | 180 | ||
171 | eError = OSAllocMem(PVRSRV_OS_PAGEABLE_HEAP, | 181 | eError = OSAllocMem(PVRSRV_OS_NON_PAGEABLE_HEAP, |
172 | sizeof(PVRSRV_SGX_CCB_INFO), | 182 | sizeof(PVRSRV_SGX_CCB_INFO), |
173 | (IMG_VOID **)&psKernelCCBInfo, 0, | 183 | (IMG_VOID **)&psKernelCCBInfo, 0, |
174 | "SGX Circular Command Buffer Info"); | 184 | "SGX Circular Command Buffer Info"); |
@@ -198,6 +208,8 @@ static PVRSRV_ERROR InitDevInfo(PVRSRV_PER_PROCESS_DATA *psPerProc, | |||
198 | 208 | ||
199 | psDevInfo->ui32EDMTaskReg0 = psInitInfo->ui32EDMTaskReg0; | 209 | psDevInfo->ui32EDMTaskReg0 = psInitInfo->ui32EDMTaskReg0; |
200 | psDevInfo->ui32EDMTaskReg1 = psInitInfo->ui32EDMTaskReg1; | 210 | psDevInfo->ui32EDMTaskReg1 = psInitInfo->ui32EDMTaskReg1; |
211 | psDevInfo->ui32ClkGateCtl = psInitInfo->ui32ClkGateCtl; | ||
212 | psDevInfo->ui32ClkGateCtl2 = psInitInfo->ui32ClkGateCtl2; | ||
201 | psDevInfo->ui32ClkGateStatusReg = psInitInfo->ui32ClkGateStatusReg; | 213 | psDevInfo->ui32ClkGateStatusReg = psInitInfo->ui32ClkGateStatusReg; |
202 | psDevInfo->ui32ClkGateStatusMask = psInitInfo->ui32ClkGateStatusMask; | 214 | psDevInfo->ui32ClkGateStatusMask = psInitInfo->ui32ClkGateStatusMask; |
203 | #if defined(SGX_FEATURE_MP) | 215 | #if defined(SGX_FEATURE_MP) |
@@ -277,6 +289,12 @@ PVRSRV_ERROR SGXInitialise(PVRSRV_SGXDEV_INFO *psDevInfo, | |||
277 | IMG_BOOL bPDumpIsSuspended = PDumpIsSuspended(); | 289 | IMG_BOOL bPDumpIsSuspended = PDumpIsSuspended(); |
278 | #endif | 290 | #endif |
279 | 291 | ||
292 | #if defined(SGX_FEATURE_MP) | ||
293 | |||
294 | #else | ||
295 | SGXInitClocks(psDevInfo, PDUMP_FLAGS_CONTINUOUS); | ||
296 | #endif | ||
297 | |||
280 | 298 | ||
281 | 299 | ||
282 | PDUMPCOMMENTWITHFLAGS(PDUMP_FLAGS_CONTINUOUS, "SGX initialisation script part 1\n"); | 300 | PDUMPCOMMENTWITHFLAGS(PDUMP_FLAGS_CONTINUOUS, "SGX initialisation script part 1\n"); |
@@ -289,6 +307,7 @@ PVRSRV_ERROR SGXInitialise(PVRSRV_SGXDEV_INFO *psDevInfo, | |||
289 | PDUMPCOMMENTWITHFLAGS(PDUMP_FLAGS_CONTINUOUS, "End of SGX initialisation script part 1\n"); | 307 | PDUMPCOMMENTWITHFLAGS(PDUMP_FLAGS_CONTINUOUS, "End of SGX initialisation script part 1\n"); |
290 | 308 | ||
291 | 309 | ||
310 | psDevInfo->ui32NumResets++; | ||
292 | SGXReset(psDevInfo, bFirstTime || bHardwareRecovery, PDUMP_FLAGS_CONTINUOUS); | 311 | SGXReset(psDevInfo, bFirstTime || bHardwareRecovery, PDUMP_FLAGS_CONTINUOUS); |
293 | 312 | ||
294 | #if defined(EUR_CR_POWER) | 313 | #if defined(EUR_CR_POWER) |
@@ -379,12 +398,12 @@ PVRSRV_ERROR SGXInitialise(PVRSRV_SGXDEV_INFO *psDevInfo, | |||
379 | PDUMP_FLAGS_CONTINUOUS, | 398 | PDUMP_FLAGS_CONTINUOUS, |
380 | MAKEUNIQUETAG(psDevInfo->psKernelCCBEventKickerMemInfo)); | 399 | MAKEUNIQUETAG(psDevInfo->psKernelCCBEventKickerMemInfo)); |
381 | PDUMPREG(SGX_PDUMPREG_NAME, SGX_MP_CORE_SELECT(EUR_CR_EVENT_KICK, 0), EUR_CR_EVENT_KICK_NOW_MASK); | 400 | PDUMPREG(SGX_PDUMPREG_NAME, SGX_MP_CORE_SELECT(EUR_CR_EVENT_KICK, 0), EUR_CR_EVENT_KICK_NOW_MASK); |
382 | #endif | 401 | #endif |
383 | } | 402 | } |
384 | #endif | 403 | #endif |
385 | 404 | ||
386 | #if !defined(NO_HARDWARE) | 405 | #if !defined(NO_HARDWARE) |
387 | 406 | ||
388 | 407 | ||
389 | if (PollForValueKM(&psSGXHostCtl->ui32InitStatus, | 408 | if (PollForValueKM(&psSGXHostCtl->ui32InitStatus, |
390 | PVRSRV_USSE_EDM_INIT_COMPLETE, | 409 | PVRSRV_USSE_EDM_INIT_COMPLETE, |
@@ -396,10 +415,10 @@ PVRSRV_ERROR SGXInitialise(PVRSRV_SGXDEV_INFO *psDevInfo, | |||
396 | PVR_DPF((PVR_DBG_ERROR, "SGXInitialise: Wait for uKernel initialisation failed")); | 415 | PVR_DPF((PVR_DBG_ERROR, "SGXInitialise: Wait for uKernel initialisation failed")); |
397 | #if !defined(FIX_HW_BRN_23281) | 416 | #if !defined(FIX_HW_BRN_23281) |
398 | PVR_DBG_BREAK; | 417 | PVR_DBG_BREAK; |
399 | #endif | 418 | #endif |
400 | return PVRSRV_ERROR_RETRY; | 419 | return PVRSRV_ERROR_RETRY; |
401 | } | 420 | } |
402 | #endif | 421 | #endif |
403 | 422 | ||
404 | #if defined(PDUMP) | 423 | #if defined(PDUMP) |
405 | PDUMPCOMMENTWITHFLAGS(PDUMP_FLAGS_CONTINUOUS, | 424 | PDUMPCOMMENTWITHFLAGS(PDUMP_FLAGS_CONTINUOUS, |
@@ -411,19 +430,19 @@ PVRSRV_ERROR SGXInitialise(PVRSRV_SGXDEV_INFO *psDevInfo, | |||
411 | PDUMP_POLL_OPERATOR_EQUAL, | 430 | PDUMP_POLL_OPERATOR_EQUAL, |
412 | PDUMP_FLAGS_CONTINUOUS, | 431 | PDUMP_FLAGS_CONTINUOUS, |
413 | MAKEUNIQUETAG(psSGXHostCtlMemInfo)); | 432 | MAKEUNIQUETAG(psSGXHostCtlMemInfo)); |
414 | #endif | 433 | #endif |
415 | 434 | ||
416 | #if defined(FIX_HW_BRN_22997) && defined(FIX_HW_BRN_23030) && defined(SGX_FEATURE_HOST_PORT) | 435 | #if defined(FIX_HW_BRN_22997) && defined(FIX_HW_BRN_23030) && defined(SGX_FEATURE_HOST_PORT) |
417 | 436 | ||
418 | 437 | ||
419 | 438 | ||
420 | WorkaroundBRN22997ReadHostPort(psDevInfo); | 439 | WorkaroundBRN22997ReadHostPort(psDevInfo); |
421 | #endif | 440 | #endif |
422 | 441 | ||
423 | PVR_ASSERT(psDevInfo->psKernelCCBCtl->ui32ReadOffset == psDevInfo->psKernelCCBCtl->ui32WriteOffset); | 442 | PVR_ASSERT(psDevInfo->psKernelCCBCtl->ui32ReadOffset == psDevInfo->psKernelCCBCtl->ui32WriteOffset); |
424 | 443 | ||
425 | bFirstTime = IMG_FALSE; | 444 | bFirstTime = IMG_FALSE; |
426 | 445 | ||
427 | return PVRSRV_OK; | 446 | return PVRSRV_OK; |
428 | } | 447 | } |
429 | 448 | ||
@@ -433,7 +452,7 @@ PVRSRV_ERROR SGXDeinitialise(IMG_HANDLE hDevCookie) | |||
433 | PVRSRV_SGXDEV_INFO *psDevInfo = (PVRSRV_SGXDEV_INFO *) hDevCookie; | 452 | PVRSRV_SGXDEV_INFO *psDevInfo = (PVRSRV_SGXDEV_INFO *) hDevCookie; |
434 | PVRSRV_ERROR eError; | 453 | PVRSRV_ERROR eError; |
435 | 454 | ||
436 | 455 | ||
437 | if (psDevInfo->pvRegsBaseKM == IMG_NULL) | 456 | if (psDevInfo->pvRegsBaseKM == IMG_NULL) |
438 | { | 457 | { |
439 | return PVRSRV_OK; | 458 | return PVRSRV_OK; |
@@ -461,12 +480,16 @@ static PVRSRV_ERROR DevInitSGXPart1 (IMG_VOID *pvDeviceNode) | |||
461 | DEVICE_MEMORY_HEAP_INFO *psDeviceMemoryHeap = psDeviceNode->sDevMemoryInfo.psDeviceMemoryHeap; | 480 | DEVICE_MEMORY_HEAP_INFO *psDeviceMemoryHeap = psDeviceNode->sDevMemoryInfo.psDeviceMemoryHeap; |
462 | PVRSRV_ERROR eError; | 481 | PVRSRV_ERROR eError; |
463 | 482 | ||
464 | 483 | ||
465 | PDUMPCOMMENT("SGX Core Version Information: %s", SGX_CORE_FRIENDLY_NAME); | 484 | PDUMPCOMMENT("SGX Core Version Information: %s", SGX_CORE_FRIENDLY_NAME); |
466 | 485 | ||
467 | #if defined(SGX_FEATURE_MP) | 486 | #if defined(SGX_FEATURE_MP) |
487 | #if !defined(SGX_FEATURE_MP_PLUS) | ||
468 | PDUMPCOMMENT("SGX Multi-processor: %d cores", SGX_FEATURE_MP_CORE_COUNT); | 488 | PDUMPCOMMENT("SGX Multi-processor: %d cores", SGX_FEATURE_MP_CORE_COUNT); |
489 | #else | ||
490 | PDUMPCOMMENT("SGX Multi-processor: %d TA cores, %d 3D cores", SGX_FEATURE_MP_CORE_COUNT_TA, SGX_FEATURE_MP_CORE_COUNT_3D); | ||
469 | #endif | 491 | #endif |
492 | #endif | ||
470 | 493 | ||
471 | #if (SGX_CORE_REV == 0) | 494 | #if (SGX_CORE_REV == 0) |
472 | PDUMPCOMMENT("SGX Core Revision Information: head RTL"); | 495 | PDUMPCOMMENT("SGX Core Revision Information: head RTL"); |
@@ -478,8 +501,8 @@ static PVRSRV_ERROR DevInitSGXPart1 (IMG_VOID *pvDeviceNode) | |||
478 | PDUMPCOMMENT("SGX System Level Cache is present\r\n"); | 501 | PDUMPCOMMENT("SGX System Level Cache is present\r\n"); |
479 | #if defined(SGX_BYPASS_SYSTEM_CACHE) | 502 | #if defined(SGX_BYPASS_SYSTEM_CACHE) |
480 | PDUMPCOMMENT("SGX System Level Cache is bypassed\r\n"); | 503 | PDUMPCOMMENT("SGX System Level Cache is bypassed\r\n"); |
481 | #endif | 504 | #endif |
482 | #endif | 505 | #endif |
483 | 506 | ||
484 | PDUMPCOMMENT("SGX Initialisation Part 1"); | 507 | PDUMPCOMMENT("SGX Initialisation Part 1"); |
485 | 508 | ||
@@ -526,12 +549,16 @@ static PVRSRV_ERROR DevInitSGXPart1 (IMG_VOID *pvDeviceNode) | |||
526 | case DEVICE_MEMORY_HEAP_SHARED: | 549 | case DEVICE_MEMORY_HEAP_SHARED: |
527 | case DEVICE_MEMORY_HEAP_SHARED_EXPORTED: | 550 | case DEVICE_MEMORY_HEAP_SHARED_EXPORTED: |
528 | { | 551 | { |
529 | hDevMemHeap = BM_CreateHeap (hKernelDevMemContext, | ||
530 | &psDeviceMemoryHeap[i]); | ||
531 | 552 | ||
553 | if (psDeviceMemoryHeap[i].ui32HeapSize > 0) | ||
554 | { | ||
555 | hDevMemHeap = BM_CreateHeap (hKernelDevMemContext, | ||
556 | &psDeviceMemoryHeap[i]); | ||
557 | |||
532 | 558 | ||
533 | 559 | ||
534 | psDeviceMemoryHeap[i].hDevMemHeap = hDevMemHeap; | 560 | psDeviceMemoryHeap[i].hDevMemHeap = hDevMemHeap; |
561 | } | ||
535 | break; | 562 | break; |
536 | } | 563 | } |
537 | } | 564 | } |
@@ -554,7 +581,11 @@ static PVRSRV_ERROR DevInitSGXPart1 (IMG_VOID *pvDeviceNode) | |||
554 | } | 581 | } |
555 | 582 | ||
556 | IMG_EXPORT | 583 | IMG_EXPORT |
584 | #if defined (SUPPORT_SID_INTERFACE) | ||
585 | PVRSRV_ERROR SGXGetInfoForSrvinitKM(IMG_HANDLE hDevHandle, PVRSRV_HEAP_INFO_KM *pasHeapInfo, IMG_DEV_PHYADDR *psPDDevPAddr) | ||
586 | #else | ||
557 | PVRSRV_ERROR SGXGetInfoForSrvinitKM(IMG_HANDLE hDevHandle, SGX_BRIDGE_INFO_FOR_SRVINIT *psInitInfo) | 587 | PVRSRV_ERROR SGXGetInfoForSrvinitKM(IMG_HANDLE hDevHandle, SGX_BRIDGE_INFO_FOR_SRVINIT *psInitInfo) |
588 | #endif | ||
558 | { | 589 | { |
559 | PVRSRV_DEVICE_NODE *psDeviceNode; | 590 | PVRSRV_DEVICE_NODE *psDeviceNode; |
560 | PVRSRV_SGXDEV_INFO *psDevInfo; | 591 | PVRSRV_SGXDEV_INFO *psDevInfo; |
@@ -565,9 +596,15 @@ PVRSRV_ERROR SGXGetInfoForSrvinitKM(IMG_HANDLE hDevHandle, SGX_BRIDGE_INFO_FOR_S | |||
565 | psDeviceNode = (PVRSRV_DEVICE_NODE *)hDevHandle; | 596 | psDeviceNode = (PVRSRV_DEVICE_NODE *)hDevHandle; |
566 | psDevInfo = (PVRSRV_SGXDEV_INFO *)psDeviceNode->pvDevice; | 597 | psDevInfo = (PVRSRV_SGXDEV_INFO *)psDeviceNode->pvDevice; |
567 | 598 | ||
599 | #if defined (SUPPORT_SID_INTERFACE) | ||
600 | *psPDDevPAddr = psDevInfo->sKernelPDDevPAddr; | ||
601 | |||
602 | eError = PVRSRVGetDeviceMemHeapsKM(hDevHandle, pasHeapInfo); | ||
603 | #else | ||
568 | psInitInfo->sPDDevPAddr = psDevInfo->sKernelPDDevPAddr; | 604 | psInitInfo->sPDDevPAddr = psDevInfo->sKernelPDDevPAddr; |
569 | 605 | ||
570 | eError = PVRSRVGetDeviceMemHeapsKM(hDevHandle, &psInitInfo->asHeapInfo[0]); | 606 | eError = PVRSRVGetDeviceMemHeapsKM(hDevHandle, &psInitInfo->asHeapInfo[0]); |
607 | #endif | ||
571 | if (eError != PVRSRV_OK) | 608 | if (eError != PVRSRV_OK) |
572 | { | 609 | { |
573 | PVR_DPF((PVR_DBG_ERROR,"SGXGetInfoForSrvinit: PVRSRVGetDeviceMemHeapsKM failed (%d)", eError)); | 610 | PVR_DPF((PVR_DBG_ERROR,"SGXGetInfoForSrvinit: PVRSRVGetDeviceMemHeapsKM failed (%d)", eError)); |
@@ -580,7 +617,11 @@ PVRSRV_ERROR SGXGetInfoForSrvinitKM(IMG_HANDLE hDevHandle, SGX_BRIDGE_INFO_FOR_S | |||
580 | IMG_EXPORT | 617 | IMG_EXPORT |
581 | PVRSRV_ERROR DevInitSGXPart2KM (PVRSRV_PER_PROCESS_DATA *psPerProc, | 618 | PVRSRV_ERROR DevInitSGXPart2KM (PVRSRV_PER_PROCESS_DATA *psPerProc, |
582 | IMG_HANDLE hDevHandle, | 619 | IMG_HANDLE hDevHandle, |
620 | #if defined (SUPPORT_SID_INTERFACE) | ||
621 | SGX_BRIDGE_INIT_INFO_KM *psInitInfo) | ||
622 | #else | ||
583 | SGX_BRIDGE_INIT_INFO *psInitInfo) | 623 | SGX_BRIDGE_INIT_INFO *psInitInfo) |
624 | #endif | ||
584 | { | 625 | { |
585 | PVRSRV_DEVICE_NODE *psDeviceNode; | 626 | PVRSRV_DEVICE_NODE *psDeviceNode; |
586 | PVRSRV_SGXDEV_INFO *psDevInfo; | 627 | PVRSRV_SGXDEV_INFO *psDevInfo; |
@@ -877,9 +918,12 @@ static IMG_VOID SGXDumpDebugInfo (PVRSRV_SGXDEV_INFO *psDevInfo, | |||
877 | PVR_DPF((PVR_DBG_ERROR,"SGX Register Base Address (Linear): 0x%08X", (IMG_UINTPTR_T)psDevInfo->pvRegsBaseKM)); | 918 | PVR_DPF((PVR_DBG_ERROR,"SGX Register Base Address (Linear): 0x%08X", (IMG_UINTPTR_T)psDevInfo->pvRegsBaseKM)); |
878 | PVR_DPF((PVR_DBG_ERROR,"SGX Register Base Address (Physical): 0x%08X", psDevInfo->sRegsPhysBase.uiAddr)); | 919 | PVR_DPF((PVR_DBG_ERROR,"SGX Register Base Address (Physical): 0x%08X", psDevInfo->sRegsPhysBase.uiAddr)); |
879 | 920 | ||
880 | for (ui32CoreNum = 0; ui32CoreNum < SGX_FEATURE_MP_CORE_COUNT; ui32CoreNum++) | 921 | SGXDumpDebugReg(psDevInfo, 0, "EUR_CR_CORE_ID: ", EUR_CR_CORE_ID); |
922 | SGXDumpDebugReg(psDevInfo, 0, "EUR_CR_CORE_REVISION: ", EUR_CR_CORE_REVISION); | ||
923 | |||
924 | for (ui32CoreNum = 0; ui32CoreNum < SGX_FEATURE_MP_CORE_COUNT_3D; ui32CoreNum++) | ||
881 | { | 925 | { |
882 | 926 | ||
883 | SGXDumpDebugReg(psDevInfo, ui32CoreNum, "EUR_CR_EVENT_STATUS: ", EUR_CR_EVENT_STATUS); | 927 | SGXDumpDebugReg(psDevInfo, ui32CoreNum, "EUR_CR_EVENT_STATUS: ", EUR_CR_EVENT_STATUS); |
884 | SGXDumpDebugReg(psDevInfo, ui32CoreNum, "EUR_CR_EVENT_STATUS2: ", EUR_CR_EVENT_STATUS2); | 928 | SGXDumpDebugReg(psDevInfo, ui32CoreNum, "EUR_CR_EVENT_STATUS2: ", EUR_CR_EVENT_STATUS2); |
885 | SGXDumpDebugReg(psDevInfo, ui32CoreNum, "EUR_CR_BIF_CTRL: ", EUR_CR_BIF_CTRL); | 929 | SGXDumpDebugReg(psDevInfo, ui32CoreNum, "EUR_CR_BIF_CTRL: ", EUR_CR_BIF_CTRL); |
@@ -903,8 +947,15 @@ static IMG_VOID SGXDumpDebugInfo (PVRSRV_SGXDEV_INFO *psDevInfo, | |||
903 | { | 947 | { |
904 | 948 | ||
905 | 949 | ||
906 | IMG_UINT32 *pui32HostCtlBuffer = (IMG_UINT32 *)psDevInfo->psSGXHostCtl; | 950 | SGXMKIF_HOST_CTL *psSGXHostCtl = psDevInfo->psSGXHostCtl; |
907 | IMG_UINT32 ui32LoopCounter; | 951 | IMG_UINT32 *pui32HostCtlBuffer = (IMG_UINT32 *)psSGXHostCtl; |
952 | IMG_UINT32 ui32LoopCounter; | ||
953 | |||
954 | if (psSGXHostCtl->ui32AssertFail != 0) | ||
955 | { | ||
956 | PVR_LOG(("SGX Microkernel assert fail: 0x%08X", psSGXHostCtl->ui32AssertFail)); | ||
957 | psSGXHostCtl->ui32AssertFail = 0; | ||
958 | } | ||
908 | 959 | ||
909 | PVR_LOG(("SGX Host control:")); | 960 | PVR_LOG(("SGX Host control:")); |
910 | 961 | ||
@@ -927,7 +978,7 @@ static IMG_VOID SGXDumpDebugInfo (PVRSRV_SGXDEV_INFO *psDevInfo, | |||
927 | PVR_LOG(("SGX TA/3D control:")); | 978 | PVR_LOG(("SGX TA/3D control:")); |
928 | 979 | ||
929 | for (ui32LoopCounter = 0; | 980 | for (ui32LoopCounter = 0; |
930 | ui32LoopCounter < psDevInfo->psKernelSGXTA3DCtlMemInfo->ui32AllocSize / sizeof(*pui32TA3DCtlBuffer); | 981 | ui32LoopCounter < psDevInfo->psKernelSGXTA3DCtlMemInfo->uAllocSize / sizeof(*pui32TA3DCtlBuffer); |
931 | ui32LoopCounter += 4) | 982 | ui32LoopCounter += 4) |
932 | { | 983 | { |
933 | PVR_LOG(("\t(T3C-%X) 0x%08X 0x%08X 0x%08X 0x%08X", ui32LoopCounter * sizeof(*pui32TA3DCtlBuffer), | 984 | PVR_LOG(("\t(T3C-%X) 0x%08X 0x%08X 0x%08X 0x%08X", ui32LoopCounter * sizeof(*pui32TA3DCtlBuffer), |
@@ -995,6 +1046,10 @@ static IMG_VOID SGXDumpDebugInfo (PVRSRV_SGXDEV_INFO *psDevInfo, | |||
995 | } | 1046 | } |
996 | #endif | 1047 | #endif |
997 | } | 1048 | } |
1049 | #if defined (TTRACE) | ||
1050 | PVRSRVDumpTimeTraceBuffers(); | ||
1051 | #endif | ||
1052 | |||
998 | } | 1053 | } |
999 | 1054 | ||
1000 | 1055 | ||
@@ -1028,36 +1083,35 @@ IMG_VOID HWRecoveryResetSGX (PVRSRV_DEVICE_NODE *psDeviceNode, | |||
1028 | 1083 | ||
1029 | SGXDumpDebugInfo(psDeviceNode->pvDevice, IMG_TRUE); | 1084 | SGXDumpDebugInfo(psDeviceNode->pvDevice, IMG_TRUE); |
1030 | 1085 | ||
1031 | 1086 | ||
1032 | PDUMPSUSPEND(); | 1087 | PDUMPSUSPEND(); |
1033 | 1088 | ||
1034 | 1089 | ||
1035 | #if defined(FIX_HW_BRN_23281) | 1090 | #if defined(FIX_HW_BRN_23281) |
1036 | 1091 | ||
1037 | for (eError = PVRSRV_ERROR_RETRY; eError == PVRSRV_ERROR_RETRY;) | 1092 | for (eError = PVRSRV_ERROR_RETRY; eError == PVRSRV_ERROR_RETRY;) |
1038 | #endif | 1093 | #endif |
1039 | { | 1094 | { |
1040 | eError = SGXInitialise(psDevInfo, IMG_TRUE); | 1095 | eError = SGXInitialise(psDevInfo, IMG_TRUE); |
1041 | } | 1096 | } |
1042 | |||
1043 | if (eError != PVRSRV_OK) | 1097 | if (eError != PVRSRV_OK) |
1044 | { | 1098 | { |
1045 | PVR_DPF((PVR_DBG_ERROR,"HWRecoveryResetSGX: SGXInitialise failed (%d)", eError)); | 1099 | PVR_DPF((PVR_DBG_ERROR,"HWRecoveryResetSGX: SGXInitialise failed (%d)", eError)); |
1046 | } | 1100 | } |
1047 | 1101 | ||
1048 | 1102 | ||
1049 | PDUMPRESUME(); | 1103 | PDUMPRESUME(); |
1050 | 1104 | ||
1051 | PVRSRVPowerUnlock(ui32CallerID); | 1105 | PVRSRVPowerUnlock(ui32CallerID); |
1052 | 1106 | ||
1053 | 1107 | ||
1054 | SGXScheduleProcessQueuesKM(psDeviceNode); | 1108 | SGXScheduleProcessQueuesKM(psDeviceNode); |
1055 | 1109 | ||
1056 | 1110 | ||
1057 | 1111 | ||
1058 | PVRSRVProcessQueues(ui32CallerID, IMG_TRUE); | 1112 | PVRSRVProcessQueues(IMG_TRUE); |
1059 | } | 1113 | } |
1060 | #endif | 1114 | #endif |
1061 | 1115 | ||
1062 | 1116 | ||
1063 | #if defined(SUPPORT_HW_RECOVERY) | 1117 | #if defined(SUPPORT_HW_RECOVERY) |
@@ -1066,7 +1120,7 @@ IMG_VOID SGXOSTimer(IMG_VOID *pvData) | |||
1066 | PVRSRV_DEVICE_NODE *psDeviceNode = pvData; | 1120 | PVRSRV_DEVICE_NODE *psDeviceNode = pvData; |
1067 | PVRSRV_SGXDEV_INFO *psDevInfo = psDeviceNode->pvDevice; | 1121 | PVRSRV_SGXDEV_INFO *psDevInfo = psDeviceNode->pvDevice; |
1068 | static IMG_UINT32 ui32EDMTasks = 0; | 1122 | static IMG_UINT32 ui32EDMTasks = 0; |
1069 | static IMG_UINT32 ui32LockupCounter = 0; | 1123 | static IMG_UINT32 ui32LockupCounter = 0; |
1070 | static IMG_UINT32 ui32NumResets = 0; | 1124 | static IMG_UINT32 ui32NumResets = 0; |
1071 | #if defined(FIX_HW_BRN_31093) | 1125 | #if defined(FIX_HW_BRN_31093) |
1072 | static IMG_BOOL bBRN31093Inval = IMG_FALSE; | 1126 | static IMG_BOOL bBRN31093Inval = IMG_FALSE; |
@@ -1075,17 +1129,17 @@ IMG_VOID SGXOSTimer(IMG_VOID *pvData) | |||
1075 | IMG_BOOL bLockup = IMG_FALSE; | 1129 | IMG_BOOL bLockup = IMG_FALSE; |
1076 | IMG_BOOL bPoweredDown; | 1130 | IMG_BOOL bPoweredDown; |
1077 | 1131 | ||
1078 | 1132 | ||
1079 | psDevInfo->ui32TimeStamp++; | 1133 | psDevInfo->ui32TimeStamp++; |
1080 | 1134 | ||
1081 | #if defined(NO_HARDWARE) | 1135 | #if defined(NO_HARDWARE) |
1082 | bPoweredDown = IMG_TRUE; | 1136 | bPoweredDown = IMG_TRUE; |
1083 | #else | 1137 | #else |
1084 | bPoweredDown = (SGXIsDevicePowered(psDeviceNode)) ? IMG_FALSE : IMG_TRUE; | 1138 | bPoweredDown = (SGXIsDevicePowered(psDeviceNode)) ? IMG_FALSE : IMG_TRUE; |
1085 | #endif | 1139 | #endif |
1086 | |||
1087 | |||
1088 | 1140 | ||
1141 | |||
1142 | |||
1089 | if (bPoweredDown) | 1143 | if (bPoweredDown) |
1090 | { | 1144 | { |
1091 | ui32LockupCounter = 0; | 1145 | ui32LockupCounter = 0; |
@@ -1095,7 +1149,7 @@ IMG_VOID SGXOSTimer(IMG_VOID *pvData) | |||
1095 | } | 1149 | } |
1096 | else | 1150 | else |
1097 | { | 1151 | { |
1098 | 1152 | ||
1099 | ui32CurrentEDMTasks = OSReadHWReg(psDevInfo->pvRegsBaseKM, psDevInfo->ui32EDMTaskReg0); | 1153 | ui32CurrentEDMTasks = OSReadHWReg(psDevInfo->pvRegsBaseKM, psDevInfo->ui32EDMTaskReg0); |
1100 | if (psDevInfo->ui32EDMTaskReg1 != 0) | 1154 | if (psDevInfo->ui32EDMTaskReg1 != 0) |
1101 | { | 1155 | { |
@@ -1108,40 +1162,40 @@ IMG_VOID SGXOSTimer(IMG_VOID *pvData) | |||
1108 | if (ui32LockupCounter == 3) | 1162 | if (ui32LockupCounter == 3) |
1109 | { | 1163 | { |
1110 | ui32LockupCounter = 0; | 1164 | ui32LockupCounter = 0; |
1111 | 1165 | ||
1112 | #if defined(FIX_HW_BRN_31093) | 1166 | #if defined(FIX_HW_BRN_31093) |
1113 | if (bBRN31093Inval == IMG_FALSE) | 1167 | if (bBRN31093Inval == IMG_FALSE) |
1114 | { | 1168 | { |
1115 | 1169 | ||
1116 | #if defined(FIX_HW_BRN_29997) | 1170 | #if defined(FIX_HW_BRN_29997) |
1117 | IMG_UINT32 ui32BIFCtrl; | 1171 | IMG_UINT32 ui32BIFCtrl; |
1118 | 1172 | ||
1119 | ui32BIFCtrl = OSReadHWReg(psDevInfo->pvRegsBaseKM, EUR_CR_BIF_CTRL); | 1173 | ui32BIFCtrl = OSReadHWReg(psDevInfo->pvRegsBaseKM, EUR_CR_BIF_CTRL); |
1120 | OSWriteHWReg(psDevInfo->pvRegsBaseKM, EUR_CR_BIF_CTRL, ui32BIFCtrl | EUR_CR_BIF_CTRL_PAUSE_MASK); | 1174 | OSWriteHWReg(psDevInfo->pvRegsBaseKM, EUR_CR_BIF_CTRL, ui32BIFCtrl | EUR_CR_BIF_CTRL_PAUSE_MASK); |
1121 | 1175 | ||
1122 | OSWaitus(200 * 1000000 / psDevInfo->ui32CoreClockSpeed); | 1176 | OSWaitus(200 * 1000000 / psDevInfo->ui32CoreClockSpeed); |
1123 | #endif | 1177 | #endif |
1124 | 1178 | ||
1125 | bBRN31093Inval = IMG_TRUE; | 1179 | bBRN31093Inval = IMG_TRUE; |
1126 | 1180 | ||
1127 | OSWriteHWReg(psDevInfo->pvRegsBaseKM, EUR_CR_BIF_CTRL_INVAL, EUR_CR_BIF_CTRL_INVAL_PTE_MASK); | 1181 | OSWriteHWReg(psDevInfo->pvRegsBaseKM, EUR_CR_BIF_CTRL_INVAL, EUR_CR_BIF_CTRL_INVAL_PTE_MASK); |
1128 | 1182 | ||
1129 | OSWaitus(200 * 1000000 / psDevInfo->ui32CoreClockSpeed); | 1183 | OSWaitus(200 * 1000000 / psDevInfo->ui32CoreClockSpeed); |
1130 | 1184 | ||
1131 | #if defined(FIX_HW_BRN_29997) | 1185 | #if defined(FIX_HW_BRN_29997) |
1132 | 1186 | ||
1133 | OSWriteHWReg(psDevInfo->pvRegsBaseKM, EUR_CR_BIF_CTRL, ui32BIFCtrl); | 1187 | OSWriteHWReg(psDevInfo->pvRegsBaseKM, EUR_CR_BIF_CTRL, ui32BIFCtrl); |
1134 | #endif | 1188 | #endif |
1135 | } | 1189 | } |
1136 | else | 1190 | else |
1137 | #endif | 1191 | #endif |
1138 | { | 1192 | { |
1139 | PVR_DPF((PVR_DBG_ERROR, "SGXOSTimer() detected SGX lockup (0x%x tasks)", ui32EDMTasks)); | 1193 | PVR_DPF((PVR_DBG_ERROR, "SGXOSTimer() detected SGX lockup (0x%x tasks)", ui32EDMTasks)); |
1140 | 1194 | ||
1141 | bLockup = IMG_TRUE; | 1195 | bLockup = IMG_TRUE; |
1142 | } | ||
1143 | } | 1196 | } |
1144 | } | 1197 | } |
1198 | } | ||
1145 | else | 1199 | else |
1146 | { | 1200 | { |
1147 | #if defined(FIX_HW_BRN_31093) | 1201 | #if defined(FIX_HW_BRN_31093) |
@@ -1157,14 +1211,14 @@ IMG_VOID SGXOSTimer(IMG_VOID *pvData) | |||
1157 | { | 1211 | { |
1158 | SGXMKIF_HOST_CTL *psSGXHostCtl = (SGXMKIF_HOST_CTL *)psDevInfo->psSGXHostCtl; | 1212 | SGXMKIF_HOST_CTL *psSGXHostCtl = (SGXMKIF_HOST_CTL *)psDevInfo->psSGXHostCtl; |
1159 | 1213 | ||
1160 | 1214 | ||
1161 | psSGXHostCtl->ui32HostDetectedLockups ++; | 1215 | psSGXHostCtl->ui32HostDetectedLockups ++; |
1162 | 1216 | ||
1163 | 1217 | ||
1164 | HWRecoveryResetSGX(psDeviceNode, 0, KERNEL_ID); | 1218 | HWRecoveryResetSGX(psDeviceNode, 0, KERNEL_ID); |
1165 | } | 1219 | } |
1166 | } | 1220 | } |
1167 | #endif | 1221 | #endif |
1168 | 1222 | ||
1169 | 1223 | ||
1170 | #if defined(SYS_USING_INTERRUPTS) | 1224 | #if defined(SYS_USING_INTERRUPTS) |
@@ -1174,18 +1228,18 @@ IMG_BOOL SGX_ISRHandler (IMG_VOID *pvData) | |||
1174 | IMG_BOOL bInterruptProcessed = IMG_FALSE; | 1228 | IMG_BOOL bInterruptProcessed = IMG_FALSE; |
1175 | 1229 | ||
1176 | 1230 | ||
1177 | 1231 | ||
1178 | { | 1232 | { |
1179 | IMG_UINT32 ui32EventStatus, ui32EventEnable; | 1233 | IMG_UINT32 ui32EventStatus, ui32EventEnable; |
1180 | IMG_UINT32 ui32EventClear = 0; | 1234 | IMG_UINT32 ui32EventClear = 0; |
1181 | #if defined(SGX_FEATURE_DATA_BREAKPOINTS) | 1235 | #if defined(SGX_FEATURE_DATA_BREAKPOINTS) |
1182 | IMG_UINT32 ui32EventStatus2, ui32EventEnable2; | 1236 | IMG_UINT32 ui32EventStatus2, ui32EventEnable2; |
1183 | #endif | 1237 | #endif |
1184 | IMG_UINT32 ui32EventClear2 = 0; | 1238 | IMG_UINT32 ui32EventClear2 = 0; |
1185 | PVRSRV_DEVICE_NODE *psDeviceNode; | 1239 | PVRSRV_DEVICE_NODE *psDeviceNode; |
1186 | PVRSRV_SGXDEV_INFO *psDevInfo; | 1240 | PVRSRV_SGXDEV_INFO *psDevInfo; |
1187 | 1241 | ||
1188 | 1242 | ||
1189 | if(pvData == IMG_NULL) | 1243 | if(pvData == IMG_NULL) |
1190 | { | 1244 | { |
1191 | PVR_DPF((PVR_DBG_ERROR, "SGX_ISRHandler: Invalid params\n")); | 1245 | PVR_DPF((PVR_DBG_ERROR, "SGX_ISRHandler: Invalid params\n")); |
@@ -1198,18 +1252,18 @@ IMG_BOOL SGX_ISRHandler (IMG_VOID *pvData) | |||
1198 | ui32EventStatus = OSReadHWReg(psDevInfo->pvRegsBaseKM, EUR_CR_EVENT_STATUS); | 1252 | ui32EventStatus = OSReadHWReg(psDevInfo->pvRegsBaseKM, EUR_CR_EVENT_STATUS); |
1199 | ui32EventEnable = OSReadHWReg(psDevInfo->pvRegsBaseKM, EUR_CR_EVENT_HOST_ENABLE); | 1253 | ui32EventEnable = OSReadHWReg(psDevInfo->pvRegsBaseKM, EUR_CR_EVENT_HOST_ENABLE); |
1200 | 1254 | ||
1201 | 1255 | ||
1202 | ui32EventStatus &= ui32EventEnable; | 1256 | ui32EventStatus &= ui32EventEnable; |
1203 | 1257 | ||
1204 | #if defined(SGX_FEATURE_DATA_BREAKPOINTS) | 1258 | #if defined(SGX_FEATURE_DATA_BREAKPOINTS) |
1205 | ui32EventStatus2 = OSReadHWReg(psDevInfo->pvRegsBaseKM, EUR_CR_EVENT_STATUS2); | 1259 | ui32EventStatus2 = OSReadHWReg(psDevInfo->pvRegsBaseKM, EUR_CR_EVENT_STATUS2); |
1206 | ui32EventEnable2 = OSReadHWReg(psDevInfo->pvRegsBaseKM, EUR_CR_EVENT_HOST_ENABLE2); | 1260 | ui32EventEnable2 = OSReadHWReg(psDevInfo->pvRegsBaseKM, EUR_CR_EVENT_HOST_ENABLE2); |
1207 | 1261 | ||
1208 | 1262 | ||
1209 | ui32EventStatus2 &= ui32EventEnable2; | 1263 | ui32EventStatus2 &= ui32EventEnable2; |
1210 | #endif | 1264 | #endif |
1211 | |||
1212 | 1265 | ||
1266 | |||
1213 | 1267 | ||
1214 | if (ui32EventStatus & EUR_CR_EVENT_STATUS_SW_EVENT_MASK) | 1268 | if (ui32EventStatus & EUR_CR_EVENT_STATUS_SW_EVENT_MASK) |
1215 | { | 1269 | { |
@@ -1226,16 +1280,16 @@ IMG_BOOL SGX_ISRHandler (IMG_VOID *pvData) | |||
1226 | { | 1280 | { |
1227 | ui32EventClear2 |= EUR_CR_EVENT_HOST_CLEAR2_DATA_BREAKPOINT_TRAPPED_MASK; | 1281 | ui32EventClear2 |= EUR_CR_EVENT_HOST_CLEAR2_DATA_BREAKPOINT_TRAPPED_MASK; |
1228 | } | 1282 | } |
1229 | #endif | 1283 | #endif |
1230 | 1284 | ||
1231 | if (ui32EventClear || ui32EventClear2) | 1285 | if (ui32EventClear || ui32EventClear2) |
1232 | { | 1286 | { |
1233 | bInterruptProcessed = IMG_TRUE; | 1287 | bInterruptProcessed = IMG_TRUE; |
1234 | 1288 | ||
1235 | 1289 | ||
1236 | ui32EventClear |= EUR_CR_EVENT_HOST_CLEAR_MASTER_INTERRUPT_MASK; | 1290 | ui32EventClear |= EUR_CR_EVENT_HOST_CLEAR_MASTER_INTERRUPT_MASK; |
1237 | 1291 | ||
1238 | 1292 | ||
1239 | OSWriteHWReg(psDevInfo->pvRegsBaseKM, EUR_CR_EVENT_HOST_CLEAR, ui32EventClear); | 1293 | OSWriteHWReg(psDevInfo->pvRegsBaseKM, EUR_CR_EVENT_HOST_CLEAR, ui32EventClear); |
1240 | OSWriteHWReg(psDevInfo->pvRegsBaseKM, EUR_CR_EVENT_HOST_CLEAR2, ui32EventClear2); | 1294 | OSWriteHWReg(psDevInfo->pvRegsBaseKM, EUR_CR_EVENT_HOST_CLEAR2, ui32EventClear2); |
1241 | } | 1295 | } |
@@ -1266,7 +1320,7 @@ static IMG_VOID SGX_MISRHandler (IMG_VOID *pvData) | |||
1266 | 1320 | ||
1267 | SGXTestActivePowerEvent(psDeviceNode, ISR_ID); | 1321 | SGXTestActivePowerEvent(psDeviceNode, ISR_ID); |
1268 | } | 1322 | } |
1269 | #endif | 1323 | #endif |
1270 | 1324 | ||
1271 | 1325 | ||
1272 | 1326 | ||
@@ -1284,14 +1338,14 @@ PVRSRV_ERROR SGX_AllocMemTilingRange(PVRSRV_DEVICE_NODE *psDeviceNode, | |||
1284 | IMG_UINT32 ui32Offset; | 1338 | IMG_UINT32 ui32Offset; |
1285 | IMG_UINT32 ui32Val; | 1339 | IMG_UINT32 ui32Val; |
1286 | 1340 | ||
1287 | 1341 | ||
1288 | for(i=0; i<10; i++) | 1342 | for(i=0; i<10; i++) |
1289 | { | 1343 | { |
1290 | if((psDevInfo->ui32MemTilingUsage & (1U << i)) == 0) | 1344 | if((psDevInfo->ui32MemTilingUsage & (1U << i)) == 0) |
1291 | { | 1345 | { |
1292 | 1346 | ||
1293 | psDevInfo->ui32MemTilingUsage |= 1U << i; | 1347 | psDevInfo->ui32MemTilingUsage |= 1U << i; |
1294 | 1348 | ||
1295 | *pui32RangeIndex = i; | 1349 | *pui32RangeIndex = i; |
1296 | goto RangeAllocated; | 1350 | goto RangeAllocated; |
1297 | } | 1351 | } |
@@ -1304,14 +1358,14 @@ RangeAllocated: | |||
1304 | ui32Offset = EUR_CR_BIF_TILE0 + (i<<2); | 1358 | ui32Offset = EUR_CR_BIF_TILE0 + (i<<2); |
1305 | 1359 | ||
1306 | ui32Start = psMemInfo->sDevVAddr.uiAddr; | 1360 | ui32Start = psMemInfo->sDevVAddr.uiAddr; |
1307 | ui32End = ui32Start + psMemInfo->ui32AllocSize + SGX_MMU_PAGE_SIZE - 1; | 1361 | ui32End = ui32Start + psMemInfo->uAllocSize + SGX_MMU_PAGE_SIZE - 1; |
1308 | 1362 | ||
1309 | ui32Val = ((ui32TilingStride << EUR_CR_BIF_TILE0_CFG_SHIFT) & EUR_CR_BIF_TILE0_CFG_MASK) | 1363 | ui32Val = ((ui32TilingStride << EUR_CR_BIF_TILE0_CFG_SHIFT) & EUR_CR_BIF_TILE0_CFG_MASK) |
1310 | | (((ui32End>>20) << EUR_CR_BIF_TILE0_MAX_ADDRESS_SHIFT) & EUR_CR_BIF_TILE0_MAX_ADDRESS_MASK) | 1364 | | (((ui32End>>20) << EUR_CR_BIF_TILE0_MAX_ADDRESS_SHIFT) & EUR_CR_BIF_TILE0_MAX_ADDRESS_MASK) |
1311 | | (((ui32Start>>20) << EUR_CR_BIF_TILE0_MIN_ADDRESS_SHIFT) & EUR_CR_BIF_TILE0_MIN_ADDRESS_MASK) | 1365 | | (((ui32Start>>20) << EUR_CR_BIF_TILE0_MIN_ADDRESS_SHIFT) & EUR_CR_BIF_TILE0_MIN_ADDRESS_MASK) |
1312 | | (0x8 << EUR_CR_BIF_TILE0_CFG_SHIFT); | 1366 | | (0x8 << EUR_CR_BIF_TILE0_CFG_SHIFT); |
1313 | 1367 | ||
1314 | 1368 | ||
1315 | OSWriteHWReg(psDevInfo->pvRegsBaseKM, ui32Offset, ui32Val); | 1369 | OSWriteHWReg(psDevInfo->pvRegsBaseKM, ui32Offset, ui32Val); |
1316 | PDUMPREG(SGX_PDUMPREG_NAME, ui32Offset, ui32Val); | 1370 | PDUMPREG(SGX_PDUMPREG_NAME, ui32Offset, ui32Val); |
1317 | 1371 | ||
@@ -1320,7 +1374,7 @@ RangeAllocated: | |||
1320 | ui32Val = (((ui32End>>12) << EUR_CR_BIF_TILE0_ADDR_EXT_MAX_SHIFT) & EUR_CR_BIF_TILE0_ADDR_EXT_MAX_MASK) | 1374 | ui32Val = (((ui32End>>12) << EUR_CR_BIF_TILE0_ADDR_EXT_MAX_SHIFT) & EUR_CR_BIF_TILE0_ADDR_EXT_MAX_MASK) |
1321 | | (((ui32Start>>12) << EUR_CR_BIF_TILE0_ADDR_EXT_MIN_SHIFT) & EUR_CR_BIF_TILE0_ADDR_EXT_MIN_MASK); | 1375 | | (((ui32Start>>12) << EUR_CR_BIF_TILE0_ADDR_EXT_MIN_SHIFT) & EUR_CR_BIF_TILE0_ADDR_EXT_MIN_MASK); |
1322 | 1376 | ||
1323 | 1377 | ||
1324 | OSWriteHWReg(psDevInfo->pvRegsBaseKM, ui32Offset, ui32Val); | 1378 | OSWriteHWReg(psDevInfo->pvRegsBaseKM, ui32Offset, ui32Val); |
1325 | PDUMPREG(SGX_PDUMPREG_NAME, ui32Offset, ui32Val); | 1379 | PDUMPREG(SGX_PDUMPREG_NAME, ui32Offset, ui32Val); |
1326 | 1380 | ||
@@ -1350,14 +1404,14 @@ PVRSRV_ERROR SGX_FreeMemTilingRange(PVRSRV_DEVICE_NODE *psDeviceNode, | |||
1350 | return PVRSRV_ERROR_INVALID_PARAMS; | 1404 | return PVRSRV_ERROR_INVALID_PARAMS; |
1351 | } | 1405 | } |
1352 | 1406 | ||
1353 | 1407 | ||
1354 | psDevInfo->ui32MemTilingUsage &= ~(1<<ui32RangeIndex); | 1408 | psDevInfo->ui32MemTilingUsage &= ~(1<<ui32RangeIndex); |
1355 | 1409 | ||
1356 | 1410 | ||
1357 | ui32Offset = EUR_CR_BIF_TILE0 + (ui32RangeIndex<<2); | 1411 | ui32Offset = EUR_CR_BIF_TILE0 + (ui32RangeIndex<<2); |
1358 | ui32Val = 0; | 1412 | ui32Val = 0; |
1359 | 1413 | ||
1360 | 1414 | ||
1361 | OSWriteHWReg(psDevInfo->pvRegsBaseKM, ui32Offset, ui32Val); | 1415 | OSWriteHWReg(psDevInfo->pvRegsBaseKM, ui32Offset, ui32Val); |
1362 | PDUMPREG(SGX_PDUMPREG_NAME, ui32Offset, ui32Val); | 1416 | PDUMPREG(SGX_PDUMPREG_NAME, ui32Offset, ui32Val); |
1363 | 1417 | ||
@@ -1378,12 +1432,12 @@ PVRSRV_ERROR SGXRegisterDevice (PVRSRV_DEVICE_NODE *psDeviceNode) | |||
1378 | DEVICE_MEMORY_INFO *psDevMemoryInfo; | 1432 | DEVICE_MEMORY_INFO *psDevMemoryInfo; |
1379 | DEVICE_MEMORY_HEAP_INFO *psDeviceMemoryHeap; | 1433 | DEVICE_MEMORY_HEAP_INFO *psDeviceMemoryHeap; |
1380 | 1434 | ||
1381 | 1435 | ||
1382 | psDeviceNode->sDevId.eDeviceType = DEV_DEVICE_TYPE; | 1436 | psDeviceNode->sDevId.eDeviceType = DEV_DEVICE_TYPE; |
1383 | psDeviceNode->sDevId.eDeviceClass = DEV_DEVICE_CLASS; | 1437 | psDeviceNode->sDevId.eDeviceClass = DEV_DEVICE_CLASS; |
1384 | #if defined(PDUMP) | 1438 | #if defined(PDUMP) |
1385 | { | 1439 | { |
1386 | 1440 | ||
1387 | SGX_DEVICE_MAP *psSGXDeviceMemMap; | 1441 | SGX_DEVICE_MAP *psSGXDeviceMemMap; |
1388 | SysGetDeviceMemoryMap(PVRSRV_DEVICE_TYPE_SGX, | 1442 | SysGetDeviceMemoryMap(PVRSRV_DEVICE_TYPE_SGX, |
1389 | (IMG_VOID**)&psSGXDeviceMemMap); | 1443 | (IMG_VOID**)&psSGXDeviceMemMap); |
@@ -1391,9 +1445,9 @@ PVRSRV_ERROR SGXRegisterDevice (PVRSRV_DEVICE_NODE *psDeviceNode) | |||
1391 | psDeviceNode->sDevId.pszPDumpDevName = psSGXDeviceMemMap->pszPDumpDevName; | 1445 | psDeviceNode->sDevId.pszPDumpDevName = psSGXDeviceMemMap->pszPDumpDevName; |
1392 | PVR_ASSERT(psDeviceNode->sDevId.pszPDumpDevName != IMG_NULL); | 1446 | PVR_ASSERT(psDeviceNode->sDevId.pszPDumpDevName != IMG_NULL); |
1393 | } | 1447 | } |
1394 | 1448 | ||
1395 | psDeviceNode->sDevId.pszPDumpRegName = SGX_PDUMPREG_NAME; | 1449 | psDeviceNode->sDevId.pszPDumpRegName = SGX_PDUMPREG_NAME; |
1396 | #endif | 1450 | #endif |
1397 | 1451 | ||
1398 | psDeviceNode->pfnInitDevice = &DevInitSGXPart1; | 1452 | psDeviceNode->pfnInitDevice = &DevInitSGXPart1; |
1399 | psDeviceNode->pfnDeInitDevice = &DevDeInitSGX; | 1453 | psDeviceNode->pfnDeInitDevice = &DevDeInitSGX; |
@@ -1403,7 +1457,7 @@ PVRSRV_ERROR SGXRegisterDevice (PVRSRV_DEVICE_NODE *psDeviceNode) | |||
1403 | psDeviceNode->pfnPDumpInitDevice = &SGXResetPDump; | 1457 | psDeviceNode->pfnPDumpInitDevice = &SGXResetPDump; |
1404 | psDeviceNode->pfnMMUGetContextID = &MMU_GetPDumpContextID; | 1458 | psDeviceNode->pfnMMUGetContextID = &MMU_GetPDumpContextID; |
1405 | #endif | 1459 | #endif |
1406 | 1460 | ||
1407 | 1461 | ||
1408 | psDeviceNode->pfnMMUInitialise = &MMU_Initialise; | 1462 | psDeviceNode->pfnMMUInitialise = &MMU_Initialise; |
1409 | psDeviceNode->pfnMMUFinalise = &MMU_Finalise; | 1463 | psDeviceNode->pfnMMUFinalise = &MMU_Finalise; |
@@ -1421,9 +1475,15 @@ PVRSRV_ERROR SGXRegisterDevice (PVRSRV_DEVICE_NODE *psDeviceNode) | |||
1421 | #if defined(SUPPORT_PDUMP_MULTI_PROCESS) | 1475 | #if defined(SUPPORT_PDUMP_MULTI_PROCESS) |
1422 | psDeviceNode->pfnMMUIsHeapShared = &MMU_IsHeapShared; | 1476 | psDeviceNode->pfnMMUIsHeapShared = &MMU_IsHeapShared; |
1423 | #endif | 1477 | #endif |
1424 | 1478 | #if defined(FIX_HW_BRN_31620) | |
1479 | psDeviceNode->pfnMMUGetCacheFlushRange = &MMU_GetCacheFlushRange; | ||
1480 | psDeviceNode->pfnMMUGetPDPhysAddr = &MMU_GetPDPhysAddr; | ||
1481 | #else | ||
1482 | psDeviceNode->pfnMMUGetCacheFlushRange = IMG_NULL; | ||
1483 | psDeviceNode->pfnMMUGetPDPhysAddr = IMG_NULL; | ||
1484 | #endif | ||
1425 | #if defined (SYS_USING_INTERRUPTS) | 1485 | #if defined (SYS_USING_INTERRUPTS) |
1426 | 1486 | ||
1427 | 1487 | ||
1428 | psDeviceNode->pfnDeviceISR = SGX_ISRHandler; | 1488 | psDeviceNode->pfnDeviceISR = SGX_ISRHandler; |
1429 | psDeviceNode->pfnDeviceMISR = SGX_MISRHandler; | 1489 | psDeviceNode->pfnDeviceMISR = SGX_MISRHandler; |
@@ -1434,20 +1494,20 @@ PVRSRV_ERROR SGXRegisterDevice (PVRSRV_DEVICE_NODE *psDeviceNode) | |||
1434 | psDeviceNode->pfnFreeMemTilingRange = SGX_FreeMemTilingRange; | 1494 | psDeviceNode->pfnFreeMemTilingRange = SGX_FreeMemTilingRange; |
1435 | #endif | 1495 | #endif |
1436 | 1496 | ||
1437 | 1497 | ||
1438 | 1498 | ||
1439 | psDeviceNode->pfnDeviceCommandComplete = &SGXCommandComplete; | 1499 | psDeviceNode->pfnDeviceCommandComplete = &SGXCommandComplete; |
1440 | 1500 | ||
1441 | 1501 | ||
1442 | 1502 | ||
1443 | psDevMemoryInfo = &psDeviceNode->sDevMemoryInfo; | 1503 | psDevMemoryInfo = &psDeviceNode->sDevMemoryInfo; |
1444 | 1504 | ||
1445 | psDevMemoryInfo->ui32AddressSpaceSizeLog2 = SGX_FEATURE_ADDRESS_SPACE_SIZE; | 1505 | psDevMemoryInfo->ui32AddressSpaceSizeLog2 = SGX_FEATURE_ADDRESS_SPACE_SIZE; |
1446 | 1506 | ||
1447 | 1507 | ||
1448 | psDevMemoryInfo->ui32Flags = 0; | 1508 | psDevMemoryInfo->ui32Flags = 0; |
1449 | 1509 | ||
1450 | 1510 | ||
1451 | if(OSAllocMem( PVRSRV_OS_PAGEABLE_HEAP, | 1511 | if(OSAllocMem( PVRSRV_OS_PAGEABLE_HEAP, |
1452 | sizeof(DEVICE_MEMORY_HEAP_INFO) * SGX_MAX_HEAP_ID, | 1512 | sizeof(DEVICE_MEMORY_HEAP_INFO) * SGX_MAX_HEAP_ID, |
1453 | (IMG_VOID **)&psDevMemoryInfo->psDeviceMemoryHeap, 0, | 1513 | (IMG_VOID **)&psDevMemoryInfo->psDeviceMemoryHeap, 0, |
@@ -1460,7 +1520,10 @@ PVRSRV_ERROR SGXRegisterDevice (PVRSRV_DEVICE_NODE *psDeviceNode) | |||
1460 | 1520 | ||
1461 | psDeviceMemoryHeap = psDevMemoryInfo->psDeviceMemoryHeap; | 1521 | psDeviceMemoryHeap = psDevMemoryInfo->psDeviceMemoryHeap; |
1462 | 1522 | ||
1523 | |||
1524 | |||
1463 | 1525 | ||
1526 | |||
1464 | psDeviceMemoryHeap->ui32HeapID = HEAP_ID( PVRSRV_DEVICE_TYPE_SGX, SGX_GENERAL_HEAP_ID); | 1527 | psDeviceMemoryHeap->ui32HeapID = HEAP_ID( PVRSRV_DEVICE_TYPE_SGX, SGX_GENERAL_HEAP_ID); |
1465 | psDeviceMemoryHeap->sDevVAddrBase.uiAddr = SGX_GENERAL_HEAP_BASE; | 1528 | psDeviceMemoryHeap->sDevVAddrBase.uiAddr = SGX_GENERAL_HEAP_BASE; |
1466 | psDeviceMemoryHeap->ui32HeapSize = SGX_GENERAL_HEAP_SIZE; | 1529 | psDeviceMemoryHeap->ui32HeapSize = SGX_GENERAL_HEAP_SIZE; |
@@ -1470,16 +1533,16 @@ PVRSRV_ERROR SGXRegisterDevice (PVRSRV_DEVICE_NODE *psDeviceNode) | |||
1470 | psDeviceMemoryHeap->pszName = "General"; | 1533 | psDeviceMemoryHeap->pszName = "General"; |
1471 | psDeviceMemoryHeap->pszBSName = "General BS"; | 1534 | psDeviceMemoryHeap->pszBSName = "General BS"; |
1472 | psDeviceMemoryHeap->DevMemHeapType = DEVICE_MEMORY_HEAP_PERCONTEXT; | 1535 | psDeviceMemoryHeap->DevMemHeapType = DEVICE_MEMORY_HEAP_PERCONTEXT; |
1473 | 1536 | ||
1474 | psDeviceMemoryHeap->ui32DataPageSize = SGX_MMU_PAGE_SIZE; | 1537 | psDeviceMemoryHeap->ui32DataPageSize = SGX_MMU_PAGE_SIZE; |
1475 | #if !defined(SUPPORT_SGX_GENERAL_MAPPING_HEAP) | 1538 | #if !defined(SUPPORT_SGX_GENERAL_MAPPING_HEAP) |
1476 | 1539 | ||
1477 | psDevMemoryInfo->ui32MappingHeapID = (IMG_UINT32)(psDeviceMemoryHeap - psDevMemoryInfo->psDeviceMemoryHeap); | 1540 | psDevMemoryInfo->ui32MappingHeapID = (IMG_UINT32)(psDeviceMemoryHeap - psDevMemoryInfo->psDeviceMemoryHeap); |
1478 | #endif | 1541 | #endif |
1479 | psDeviceMemoryHeap++; | 1542 | psDeviceMemoryHeap++; |
1480 | 1543 | ||
1481 | 1544 | ||
1482 | 1545 | ||
1483 | psDeviceMemoryHeap->ui32HeapID = HEAP_ID( PVRSRV_DEVICE_TYPE_SGX, SGX_TADATA_HEAP_ID); | 1546 | psDeviceMemoryHeap->ui32HeapID = HEAP_ID( PVRSRV_DEVICE_TYPE_SGX, SGX_TADATA_HEAP_ID); |
1484 | psDeviceMemoryHeap->sDevVAddrBase.uiAddr = SGX_TADATA_HEAP_BASE; | 1547 | psDeviceMemoryHeap->sDevVAddrBase.uiAddr = SGX_TADATA_HEAP_BASE; |
1485 | psDeviceMemoryHeap->ui32HeapSize = SGX_TADATA_HEAP_SIZE; | 1548 | psDeviceMemoryHeap->ui32HeapSize = SGX_TADATA_HEAP_SIZE; |
@@ -1489,12 +1552,12 @@ PVRSRV_ERROR SGXRegisterDevice (PVRSRV_DEVICE_NODE *psDeviceNode) | |||
1489 | psDeviceMemoryHeap->pszName = "TA Data"; | 1552 | psDeviceMemoryHeap->pszName = "TA Data"; |
1490 | psDeviceMemoryHeap->pszBSName = "TA Data BS"; | 1553 | psDeviceMemoryHeap->pszBSName = "TA Data BS"; |
1491 | psDeviceMemoryHeap->DevMemHeapType = DEVICE_MEMORY_HEAP_PERCONTEXT; | 1554 | psDeviceMemoryHeap->DevMemHeapType = DEVICE_MEMORY_HEAP_PERCONTEXT; |
1492 | 1555 | ||
1493 | psDeviceMemoryHeap->ui32DataPageSize = SGX_MMU_PAGE_SIZE; | 1556 | psDeviceMemoryHeap->ui32DataPageSize = SGX_MMU_PAGE_SIZE; |
1494 | psDeviceMemoryHeap++; | 1557 | psDeviceMemoryHeap++; |
1495 | 1558 | ||
1496 | 1559 | ||
1497 | 1560 | ||
1498 | psDeviceMemoryHeap->ui32HeapID = HEAP_ID( PVRSRV_DEVICE_TYPE_SGX, SGX_KERNEL_CODE_HEAP_ID); | 1561 | psDeviceMemoryHeap->ui32HeapID = HEAP_ID( PVRSRV_DEVICE_TYPE_SGX, SGX_KERNEL_CODE_HEAP_ID); |
1499 | psDeviceMemoryHeap->sDevVAddrBase.uiAddr = SGX_KERNEL_CODE_HEAP_BASE; | 1562 | psDeviceMemoryHeap->sDevVAddrBase.uiAddr = SGX_KERNEL_CODE_HEAP_BASE; |
1500 | psDeviceMemoryHeap->ui32HeapSize = SGX_KERNEL_CODE_HEAP_SIZE; | 1563 | psDeviceMemoryHeap->ui32HeapSize = SGX_KERNEL_CODE_HEAP_SIZE; |
@@ -1611,22 +1674,30 @@ PVRSRV_ERROR SGXRegisterDevice (PVRSRV_DEVICE_NODE *psDeviceNode) | |||
1611 | 1674 | ||
1612 | 1675 | ||
1613 | 1676 | ||
1614 | psDeviceMemoryHeap->ui32HeapID = HEAP_ID( PVRSRV_DEVICE_TYPE_SGX, SGX_3DPARAMETERS_HEAP_ID); | 1677 | psDeviceMemoryHeap->ui32HeapID = HEAP_ID( PVRSRV_DEVICE_TYPE_SGX, SGX_SHARED_3DPARAMETERS_HEAP_ID); |
1615 | psDeviceMemoryHeap->sDevVAddrBase.uiAddr = SGX_3DPARAMETERS_HEAP_BASE; | 1678 | psDeviceMemoryHeap->sDevVAddrBase.uiAddr = SGX_SHARED_3DPARAMETERS_HEAP_BASE; |
1616 | psDeviceMemoryHeap->ui32HeapSize = SGX_3DPARAMETERS_HEAP_SIZE; | 1679 | psDeviceMemoryHeap->ui32HeapSize = SGX_SHARED_3DPARAMETERS_HEAP_SIZE; |
1617 | psDeviceMemoryHeap->pszName = "3DParameters"; | 1680 | psDeviceMemoryHeap->pszName = "Shared 3DParameters"; |
1618 | psDeviceMemoryHeap->pszBSName = "3DParameters BS"; | 1681 | psDeviceMemoryHeap->pszBSName = "Shared 3DParameters BS"; |
1619 | #if defined(SUPPORT_PERCONTEXT_PB) | ||
1620 | psDeviceMemoryHeap->ui32Attribs = PVRSRV_HAP_WRITECOMBINE | ||
1621 | | PVRSRV_MEM_RAM_BACKED_ALLOCATION | ||
1622 | | PVRSRV_HAP_SINGLE_PROCESS; | ||
1623 | psDeviceMemoryHeap->DevMemHeapType = DEVICE_MEMORY_HEAP_PERCONTEXT; | ||
1624 | #else | ||
1625 | psDeviceMemoryHeap->ui32Attribs = PVRSRV_HAP_WRITECOMBINE | 1682 | psDeviceMemoryHeap->ui32Attribs = PVRSRV_HAP_WRITECOMBINE |
1626 | | PVRSRV_MEM_RAM_BACKED_ALLOCATION | 1683 | | PVRSRV_MEM_RAM_BACKED_ALLOCATION |
1627 | | PVRSRV_HAP_MULTI_PROCESS; | 1684 | | PVRSRV_HAP_MULTI_PROCESS; |
1628 | psDeviceMemoryHeap->DevMemHeapType = DEVICE_MEMORY_HEAP_SHARED_EXPORTED; | 1685 | psDeviceMemoryHeap->DevMemHeapType = DEVICE_MEMORY_HEAP_SHARED_EXPORTED; |
1629 | #endif | 1686 | |
1687 | |||
1688 | psDeviceMemoryHeap->ui32DataPageSize = SGX_MMU_PAGE_SIZE; | ||
1689 | psDeviceMemoryHeap++; | ||
1690 | |||
1691 | |||
1692 | psDeviceMemoryHeap->ui32HeapID = HEAP_ID( PVRSRV_DEVICE_TYPE_SGX, SGX_PERCONTEXT_3DPARAMETERS_HEAP_ID); | ||
1693 | psDeviceMemoryHeap->sDevVAddrBase.uiAddr = SGX_PERCONTEXT_3DPARAMETERS_HEAP_BASE; | ||
1694 | psDeviceMemoryHeap->ui32HeapSize = SGX_PERCONTEXT_3DPARAMETERS_HEAP_SIZE; | ||
1695 | psDeviceMemoryHeap->pszName = "Percontext 3DParameters"; | ||
1696 | psDeviceMemoryHeap->pszBSName = "Percontext 3DParameters BS"; | ||
1697 | psDeviceMemoryHeap->ui32Attribs = PVRSRV_HAP_WRITECOMBINE | ||
1698 | | PVRSRV_MEM_RAM_BACKED_ALLOCATION | ||
1699 | | PVRSRV_HAP_SINGLE_PROCESS; | ||
1700 | psDeviceMemoryHeap->DevMemHeapType = DEVICE_MEMORY_HEAP_PERCONTEXT; | ||
1630 | 1701 | ||
1631 | psDeviceMemoryHeap->ui32DataPageSize = SGX_MMU_PAGE_SIZE; | 1702 | psDeviceMemoryHeap->ui32DataPageSize = SGX_MMU_PAGE_SIZE; |
1632 | psDeviceMemoryHeap++; | 1703 | psDeviceMemoryHeap++; |
@@ -1813,7 +1884,7 @@ PVRSRV_ERROR SGXDevInitCompatCheck(PVRSRV_DEVICE_NODE *psDeviceNode) | |||
1813 | psSGXMiscInfoInt = psMemInfo->pvLinAddrKM; | 1884 | psSGXMiscInfoInt = psMemInfo->pvLinAddrKM; |
1814 | psSGXMiscInfoInt->ui32MiscInfoFlags = 0; | 1885 | psSGXMiscInfoInt->ui32MiscInfoFlags = 0; |
1815 | psSGXMiscInfoInt->ui32MiscInfoFlags |= PVRSRV_USSE_MISCINFO_GET_STRUCT_SIZES; | 1886 | psSGXMiscInfoInt->ui32MiscInfoFlags |= PVRSRV_USSE_MISCINFO_GET_STRUCT_SIZES; |
1816 | eError = SGXGetMiscInfoUkernel(psDevInfo, psDeviceNode); | 1887 | eError = SGXGetMiscInfoUkernel(psDevInfo, psDeviceNode, IMG_NULL); |
1817 | 1888 | ||
1818 | 1889 | ||
1819 | if(eError != PVRSRV_OK) | 1890 | if(eError != PVRSRV_OK) |
@@ -1954,7 +2025,8 @@ chk_exit: | |||
1954 | 2025 | ||
1955 | static | 2026 | static |
1956 | PVRSRV_ERROR SGXGetMiscInfoUkernel(PVRSRV_SGXDEV_INFO *psDevInfo, | 2027 | PVRSRV_ERROR SGXGetMiscInfoUkernel(PVRSRV_SGXDEV_INFO *psDevInfo, |
1957 | PVRSRV_DEVICE_NODE *psDeviceNode) | 2028 | PVRSRV_DEVICE_NODE *psDeviceNode, |
2029 | IMG_HANDLE hDevMemContext) | ||
1958 | { | 2030 | { |
1959 | PVRSRV_ERROR eError; | 2031 | PVRSRV_ERROR eError; |
1960 | SGXMKIF_COMMAND sCommandData; | 2032 | SGXMKIF_COMMAND sCommandData; |
@@ -1988,6 +2060,7 @@ PVRSRV_ERROR SGXGetMiscInfoUkernel(PVRSRV_SGXDEV_INFO *psDevInfo, | |||
1988 | &sCommandData, | 2060 | &sCommandData, |
1989 | KERNEL_ID, | 2061 | KERNEL_ID, |
1990 | 0, | 2062 | 0, |
2063 | hDevMemContext, | ||
1991 | IMG_FALSE); | 2064 | IMG_FALSE); |
1992 | 2065 | ||
1993 | if (eError != PVRSRV_OK) | 2066 | if (eError != PVRSRV_OK) |
@@ -2099,6 +2172,7 @@ PVRSRV_ERROR SGXGetMiscInfoKM(PVRSRV_SGXDEV_INFO *psDevInfo, | |||
2099 | &sCommandData, | 2172 | &sCommandData, |
2100 | KERNEL_ID, | 2173 | KERNEL_ID, |
2101 | 0, | 2174 | 0, |
2175 | hDevMemContext, | ||
2102 | IMG_FALSE); | 2176 | IMG_FALSE); |
2103 | 2177 | ||
2104 | if (eError != PVRSRV_OK) | 2178 | if (eError != PVRSRV_OK) |
@@ -2138,37 +2212,6 @@ PVRSRV_ERROR SGXGetMiscInfoKM(PVRSRV_SGXDEV_INFO *psDevInfo, | |||
2138 | return PVRSRV_OK; | 2212 | return PVRSRV_OK; |
2139 | } | 2213 | } |
2140 | 2214 | ||
2141 | case SGX_MISC_INFO_REQUEST_WAIT_FOR_BREAKPOINT: | ||
2142 | { | ||
2143 | |||
2144 | |||
2145 | PDUMPCOMMENT("Wait for data breakpoint hit"); | ||
2146 | |||
2147 | #if defined(NO_HARDWARE) && defined(PDUMP) | ||
2148 | { | ||
2149 | PDUMPREGPOL(SGX_PDUMPREG_NAME, | ||
2150 | EUR_CR_EVENT_STATUS2, | ||
2151 | EUR_CR_EVENT_STATUS2_DATA_BREAKPOINT_TRAPPED_MASK, | ||
2152 | EUR_CR_EVENT_STATUS2_DATA_BREAKPOINT_TRAPPED_MASK); | ||
2153 | |||
2154 | PDUMPREG(SGX_PDUMPREG_NAME, | ||
2155 | EUR_CR_EVENT_HOST_CLEAR2, | ||
2156 | EUR_CR_EVENT_HOST_CLEAR2_DATA_BREAKPOINT_TRAPPED_MASK); | ||
2157 | |||
2158 | PDUMPCOMMENT("Breakpoint detected. Wait a bit to show that pipeline stops in simulation"); | ||
2159 | PDUMPIDL(2000); | ||
2160 | |||
2161 | PDUMPCOMMENT("Now we can resume"); | ||
2162 | PDUMPREG(SGX_PDUMPREG_NAME, EUR_CR_BREAKPOINT_TRAP, EUR_CR_BREAKPOINT_TRAP_WRNOTIFY_MASK | EUR_CR_BREAKPOINT_TRAP_CONTINUE_MASK); | ||
2163 | } | ||
2164 | #else | ||
2165 | { | ||
2166 | |||
2167 | } | ||
2168 | #endif | ||
2169 | return PVRSRV_OK; | ||
2170 | } | ||
2171 | |||
2172 | case SGX_MISC_INFO_REQUEST_POLL_BREAKPOINT: | 2215 | case SGX_MISC_INFO_REQUEST_POLL_BREAKPOINT: |
2173 | { | 2216 | { |
2174 | 2217 | ||
@@ -2179,40 +2222,114 @@ PVRSRV_ERROR SGXGetMiscInfoKM(PVRSRV_SGXDEV_INFO *psDevInfo, | |||
2179 | 2222 | ||
2180 | 2223 | ||
2181 | #if !defined(NO_HARDWARE) | 2224 | #if !defined(NO_HARDWARE) |
2225 | #if defined(SGX_FEATURE_MP) | ||
2182 | IMG_BOOL bTrappedBPMaster; | 2226 | IMG_BOOL bTrappedBPMaster; |
2183 | IMG_BOOL abTrappedBPPerCore[SGX_FEATURE_MP_CORE_COUNT]; | ||
2184 | IMG_UINT32 ui32CoreNum, ui32TrappedBPCoreNum; | 2227 | IMG_UINT32 ui32CoreNum, ui32TrappedBPCoreNum; |
2228 | #if defined(SGX_FEATURE_PERPIPE_BKPT_REGS) | ||
2229 | IMG_UINT32 ui32PipeNum, ui32TrappedBPPipeNum; | ||
2230 | #define NUM_PIPES_PLUS_ONE (SGX_FEATURE_PERPIPE_BKPT_REGS_NUMPIPES+1) | ||
2231 | #endif | ||
2185 | IMG_BOOL bTrappedBPAny; | 2232 | IMG_BOOL bTrappedBPAny; |
2233 | #endif | ||
2234 | IMG_BOOL bFoundOne; | ||
2186 | 2235 | ||
2236 | #if defined(SGX_FEATURE_MP) | ||
2187 | ui32TrappedBPCoreNum = 0; | 2237 | ui32TrappedBPCoreNum = 0; |
2188 | bTrappedBPMaster = !!(EUR_CR_MASTER_BREAKPOINT_TRAPPED_MASK & OSReadHWReg(psDevInfo->pvRegsBaseKM, EUR_CR_MASTER_BREAKPOINT)); | 2238 | bTrappedBPMaster = !!(EUR_CR_MASTER_BREAKPOINT_TRAPPED_MASK & OSReadHWReg(psDevInfo->pvRegsBaseKM, EUR_CR_MASTER_BREAKPOINT)); |
2189 | bTrappedBPAny = bTrappedBPMaster; | 2239 | bTrappedBPAny = bTrappedBPMaster; |
2190 | for (ui32CoreNum = 0; ui32CoreNum < SGX_FEATURE_MP_CORE_COUNT; ui32CoreNum++) | 2240 | #if defined(SGX_FEATURE_PERPIPE_BKPT_REGS) |
2241 | ui32TrappedBPPipeNum = 0; | ||
2242 | #endif | ||
2243 | for (ui32CoreNum = 0; ui32CoreNum < SGX_FEATURE_MP_CORE_COUNT_3D; ui32CoreNum++) | ||
2191 | { | 2244 | { |
2192 | abTrappedBPPerCore[ui32CoreNum] = !!(EUR_CR_BREAKPOINT_TRAPPED_MASK & OSReadHWReg(psDevInfo->pvRegsBaseKM, SGX_MP_CORE_SELECT(EUR_CR_BREAKPOINT, ui32CoreNum))); | 2245 | #if defined(SGX_FEATURE_PERPIPE_BKPT_REGS) |
2193 | if (abTrappedBPPerCore[ui32CoreNum]) | 2246 | |
2247 | |||
2248 | |||
2249 | #define SGX_MP_CORE_PIPE_SELECT(r,c,p) \ | ||
2250 | ((SGX_MP_CORE_SELECT(EUR_CR_PARTITION_##r,c) + p*(EUR_CR_PIPE0_##r-EUR_CR_PARTITION_##r))) | ||
2251 | for (ui32PipeNum = 0; ui32PipeNum < NUM_PIPES_PLUS_ONE; ui32PipeNum++) | ||
2252 | { | ||
2253 | bFoundOne = | ||
2254 | 0 != (EUR_CR_PARTITION_BREAKPOINT_TRAPPED_MASK & | ||
2255 | OSReadHWReg(psDevInfo->pvRegsBaseKM, | ||
2256 | SGX_MP_CORE_PIPE_SELECT(BREAKPOINT, | ||
2257 | ui32CoreNum, | ||
2258 | ui32PipeNum))); | ||
2259 | if (bFoundOne) | ||
2260 | { | ||
2261 | bTrappedBPAny = IMG_TRUE; | ||
2262 | ui32TrappedBPCoreNum = ui32CoreNum; | ||
2263 | ui32TrappedBPPipeNum = ui32PipeNum; | ||
2264 | } | ||
2265 | } | ||
2266 | #else | ||
2267 | bFoundOne = !!(EUR_CR_BREAKPOINT_TRAPPED_MASK & OSReadHWReg(psDevInfo->pvRegsBaseKM, SGX_MP_CORE_SELECT(EUR_CR_BREAKPOINT, ui32CoreNum))); | ||
2268 | if (bFoundOne) | ||
2194 | { | 2269 | { |
2195 | bTrappedBPAny = IMG_TRUE; | 2270 | bTrappedBPAny = IMG_TRUE; |
2196 | ui32TrappedBPCoreNum = ui32CoreNum; | 2271 | ui32TrappedBPCoreNum = ui32CoreNum; |
2197 | } | 2272 | } |
2273 | #endif | ||
2198 | } | 2274 | } |
2199 | 2275 | ||
2200 | psMiscInfo->uData.sSGXBreakpointInfo.bTrappedBP = bTrappedBPAny; | 2276 | psMiscInfo->uData.sSGXBreakpointInfo.bTrappedBP = bTrappedBPAny; |
2277 | #else | ||
2278 | #if defined(SGX_FEATURE_PERPIPE_BKPT_REGS) | ||
2279 | #error Not yet considered the case for per-pipe regs in non-mp case | ||
2280 | #endif | ||
2281 | psMiscInfo->uData.sSGXBreakpointInfo.bTrappedBP = 0 != (EUR_CR_BREAKPOINT_TRAPPED_MASK & OSReadHWReg(psDevInfo->pvRegsBaseKM, EUR_CR_BREAKPOINT)); | ||
2282 | #endif | ||
2201 | 2283 | ||
2202 | if (psMiscInfo->uData.sSGXBreakpointInfo.bTrappedBP) | 2284 | if (psMiscInfo->uData.sSGXBreakpointInfo.bTrappedBP) |
2203 | { | 2285 | { |
2204 | IMG_UINT32 ui32Info0, ui32Info1; | 2286 | IMG_UINT32 ui32Info0, ui32Info1; |
2205 | 2287 | ||
2288 | #if defined(SGX_FEATURE_MP) | ||
2289 | #if defined(SGX_FEATURE_PERPIPE_BKPT_REGS) | ||
2290 | ui32Info0 = OSReadHWReg(psDevInfo->pvRegsBaseKM, bTrappedBPMaster?EUR_CR_MASTER_BREAKPOINT_TRAP_INFO0:SGX_MP_CORE_PIPE_SELECT(BREAKPOINT_TRAP_INFO0, ui32TrappedBPCoreNum, ui32TrappedBPPipeNum)); | ||
2291 | ui32Info1 = OSReadHWReg(psDevInfo->pvRegsBaseKM, bTrappedBPMaster?EUR_CR_MASTER_BREAKPOINT_TRAP_INFO1:SGX_MP_CORE_PIPE_SELECT(BREAKPOINT_TRAP_INFO1, ui32TrappedBPCoreNum, ui32TrappedBPPipeNum)); | ||
2292 | #else | ||
2206 | ui32Info0 = OSReadHWReg(psDevInfo->pvRegsBaseKM, bTrappedBPMaster?EUR_CR_MASTER_BREAKPOINT_TRAP_INFO0:SGX_MP_CORE_SELECT(EUR_CR_BREAKPOINT_TRAP_INFO0, ui32TrappedBPCoreNum)); | 2293 | ui32Info0 = OSReadHWReg(psDevInfo->pvRegsBaseKM, bTrappedBPMaster?EUR_CR_MASTER_BREAKPOINT_TRAP_INFO0:SGX_MP_CORE_SELECT(EUR_CR_BREAKPOINT_TRAP_INFO0, ui32TrappedBPCoreNum)); |
2207 | ui32Info1 = OSReadHWReg(psDevInfo->pvRegsBaseKM, bTrappedBPMaster?EUR_CR_MASTER_BREAKPOINT_TRAP_INFO1:SGX_MP_CORE_SELECT(EUR_CR_BREAKPOINT_TRAP_INFO1, ui32TrappedBPCoreNum)); | 2294 | ui32Info1 = OSReadHWReg(psDevInfo->pvRegsBaseKM, bTrappedBPMaster?EUR_CR_MASTER_BREAKPOINT_TRAP_INFO1:SGX_MP_CORE_SELECT(EUR_CR_BREAKPOINT_TRAP_INFO1, ui32TrappedBPCoreNum)); |
2295 | #endif | ||
2296 | #else | ||
2297 | ui32Info0 = OSReadHWReg(psDevInfo->pvRegsBaseKM, EUR_CR_BREAKPOINT_TRAP_INFO0); | ||
2298 | ui32Info1 = OSReadHWReg(psDevInfo->pvRegsBaseKM, EUR_CR_BREAKPOINT_TRAP_INFO1); | ||
2299 | #endif | ||
2208 | 2300 | ||
2301 | #ifdef SGX_FEATURE_PERPIPE_BKPT_REGS | ||
2302 | psMiscInfo->uData.sSGXBreakpointInfo.ui32BPIndex = (ui32Info1 & EUR_CR_PARTITION_BREAKPOINT_TRAP_INFO1_NUMBER_MASK) >> EUR_CR_PARTITION_BREAKPOINT_TRAP_INFO1_NUMBER_SHIFT; | ||
2303 | psMiscInfo->uData.sSGXBreakpointInfo.sTrappedBPDevVAddr.uiAddr = ui32Info0 & EUR_CR_PARTITION_BREAKPOINT_TRAP_INFO0_ADDRESS_MASK; | ||
2304 | psMiscInfo->uData.sSGXBreakpointInfo.ui32TrappedBPBurstLength = (ui32Info1 & EUR_CR_PARTITION_BREAKPOINT_TRAP_INFO1_SIZE_MASK) >> EUR_CR_PARTITION_BREAKPOINT_TRAP_INFO1_SIZE_SHIFT; | ||
2305 | psMiscInfo->uData.sSGXBreakpointInfo.bTrappedBPRead = !!(ui32Info1 & EUR_CR_PARTITION_BREAKPOINT_TRAP_INFO1_RNW_MASK); | ||
2306 | psMiscInfo->uData.sSGXBreakpointInfo.ui32TrappedBPDataMaster = (ui32Info1 & EUR_CR_PARTITION_BREAKPOINT_TRAP_INFO1_DATA_MASTER_MASK) >> EUR_CR_PARTITION_BREAKPOINT_TRAP_INFO1_DATA_MASTER_SHIFT; | ||
2307 | psMiscInfo->uData.sSGXBreakpointInfo.ui32TrappedBPTag = (ui32Info1 & EUR_CR_PARTITION_BREAKPOINT_TRAP_INFO1_TAG_MASK) >> EUR_CR_PARTITION_BREAKPOINT_TRAP_INFO1_TAG_SHIFT; | ||
2308 | #else | ||
2209 | psMiscInfo->uData.sSGXBreakpointInfo.ui32BPIndex = (ui32Info1 & EUR_CR_BREAKPOINT_TRAP_INFO1_NUMBER_MASK) >> EUR_CR_BREAKPOINT_TRAP_INFO1_NUMBER_SHIFT; | 2309 | psMiscInfo->uData.sSGXBreakpointInfo.ui32BPIndex = (ui32Info1 & EUR_CR_BREAKPOINT_TRAP_INFO1_NUMBER_MASK) >> EUR_CR_BREAKPOINT_TRAP_INFO1_NUMBER_SHIFT; |
2210 | psMiscInfo->uData.sSGXBreakpointInfo.sTrappedBPDevVAddr.uiAddr = ui32Info0 & EUR_CR_BREAKPOINT_TRAP_INFO0_ADDRESS_MASK; | 2310 | psMiscInfo->uData.sSGXBreakpointInfo.sTrappedBPDevVAddr.uiAddr = ui32Info0 & EUR_CR_BREAKPOINT_TRAP_INFO0_ADDRESS_MASK; |
2211 | psMiscInfo->uData.sSGXBreakpointInfo.ui32TrappedBPBurstLength = (ui32Info1 & EUR_CR_BREAKPOINT_TRAP_INFO1_SIZE_MASK) >> EUR_CR_BREAKPOINT_TRAP_INFO1_SIZE_SHIFT; | 2311 | psMiscInfo->uData.sSGXBreakpointInfo.ui32TrappedBPBurstLength = (ui32Info1 & EUR_CR_BREAKPOINT_TRAP_INFO1_SIZE_MASK) >> EUR_CR_BREAKPOINT_TRAP_INFO1_SIZE_SHIFT; |
2212 | psMiscInfo->uData.sSGXBreakpointInfo.bTrappedBPRead = !!(ui32Info1 & EUR_CR_BREAKPOINT_TRAP_INFO1_RNW_MASK); | 2312 | psMiscInfo->uData.sSGXBreakpointInfo.bTrappedBPRead = !!(ui32Info1 & EUR_CR_BREAKPOINT_TRAP_INFO1_RNW_MASK); |
2213 | psMiscInfo->uData.sSGXBreakpointInfo.ui32TrappedBPDataMaster = (ui32Info1 & EUR_CR_BREAKPOINT_TRAP_INFO1_DATA_MASTER_MASK) >> EUR_CR_BREAKPOINT_TRAP_INFO1_DATA_MASTER_SHIFT; | 2313 | psMiscInfo->uData.sSGXBreakpointInfo.ui32TrappedBPDataMaster = (ui32Info1 & EUR_CR_BREAKPOINT_TRAP_INFO1_DATA_MASTER_MASK) >> EUR_CR_BREAKPOINT_TRAP_INFO1_DATA_MASTER_SHIFT; |
2214 | psMiscInfo->uData.sSGXBreakpointInfo.ui32TrappedBPTag = (ui32Info1 & EUR_CR_BREAKPOINT_TRAP_INFO1_TAG_MASK) >> EUR_CR_BREAKPOINT_TRAP_INFO1_TAG_SHIFT; | 2314 | psMiscInfo->uData.sSGXBreakpointInfo.ui32TrappedBPTag = (ui32Info1 & EUR_CR_BREAKPOINT_TRAP_INFO1_TAG_MASK) >> EUR_CR_BREAKPOINT_TRAP_INFO1_TAG_SHIFT; |
2315 | #endif | ||
2316 | #if defined(SGX_FEATURE_MP) | ||
2317 | #if defined(SGX_FEATURE_PERPIPE_BKPT_REGS) | ||
2318 | |||
2319 | psMiscInfo->uData.sSGXBreakpointInfo.ui32CoreNum = bTrappedBPMaster?65535:(ui32TrappedBPCoreNum + (ui32TrappedBPPipeNum<<10)); | ||
2320 | #else | ||
2321 | |||
2215 | psMiscInfo->uData.sSGXBreakpointInfo.ui32CoreNum = bTrappedBPMaster?65535:ui32TrappedBPCoreNum; | 2322 | psMiscInfo->uData.sSGXBreakpointInfo.ui32CoreNum = bTrappedBPMaster?65535:ui32TrappedBPCoreNum; |
2323 | #endif | ||
2324 | #else | ||
2325 | #if defined(SGX_FEATURE_PERPIPE_BKPT_REGS) | ||
2326 | |||
2327 | #error non-mp perpipe regs not yet supported | ||
2328 | #else | ||
2329 | |||
2330 | psMiscInfo->uData.sSGXBreakpointInfo.ui32CoreNum = 65534; | ||
2331 | #endif | ||
2332 | #endif | ||
2216 | } | 2333 | } |
2217 | #endif | 2334 | #endif |
2218 | return PVRSRV_OK; | 2335 | return PVRSRV_OK; |
@@ -2224,12 +2341,24 @@ PVRSRV_ERROR SGXGetMiscInfoKM(PVRSRV_SGXDEV_INFO *psDevInfo, | |||
2224 | 2341 | ||
2225 | 2342 | ||
2226 | #if !defined(NO_HARDWARE) | 2343 | #if !defined(NO_HARDWARE) |
2344 | #if defined(SGX_FEATURE_MP) | ||
2227 | IMG_UINT32 ui32CoreNum; | 2345 | IMG_UINT32 ui32CoreNum; |
2228 | IMG_BOOL bMaster; | 2346 | IMG_BOOL bMaster; |
2347 | #if defined(SGX_FEATURE_PERPIPE_BKPT_REGS) | ||
2348 | IMG_UINT32 ui32PipeNum; | ||
2349 | #endif | ||
2350 | #endif | ||
2229 | IMG_UINT32 ui32OldSeqNum, ui32NewSeqNum; | 2351 | IMG_UINT32 ui32OldSeqNum, ui32NewSeqNum; |
2230 | 2352 | ||
2353 | #if defined(SGX_FEATURE_MP) | ||
2354 | #if defined(SGX_FEATURE_PERPIPE_BKPT_REGS) | ||
2355 | ui32PipeNum = psMiscInfo->uData.sSGXBreakpointInfo.ui32CoreNum >> 10; | ||
2356 | ui32CoreNum = psMiscInfo->uData.sSGXBreakpointInfo.ui32CoreNum & 1023; | ||
2357 | bMaster = psMiscInfo->uData.sSGXBreakpointInfo.ui32CoreNum > 32767; | ||
2358 | #else | ||
2231 | ui32CoreNum = psMiscInfo->uData.sSGXBreakpointInfo.ui32CoreNum; | 2359 | ui32CoreNum = psMiscInfo->uData.sSGXBreakpointInfo.ui32CoreNum; |
2232 | bMaster = ui32CoreNum > SGX_FEATURE_MP_CORE_COUNT; | 2360 | bMaster = ui32CoreNum > SGX_FEATURE_MP_CORE_COUNT_3D; |
2361 | #endif | ||
2233 | if (bMaster) | 2362 | if (bMaster) |
2234 | { | 2363 | { |
2235 | 2364 | ||
@@ -2243,8 +2372,18 @@ PVRSRV_ERROR SGXGetMiscInfoKM(PVRSRV_SGXDEV_INFO *psDevInfo, | |||
2243 | while (ui32OldSeqNum == ui32NewSeqNum); | 2372 | while (ui32OldSeqNum == ui32NewSeqNum); |
2244 | } | 2373 | } |
2245 | else | 2374 | else |
2375 | #endif | ||
2246 | { | 2376 | { |
2247 | 2377 | ||
2378 | #if defined(SGX_FEATURE_PERPIPE_BKPT_REGS) | ||
2379 | ui32OldSeqNum = 0x1c & OSReadHWReg(psDevInfo->pvRegsBaseKM, SGX_MP_CORE_PIPE_SELECT(BREAKPOINT, ui32CoreNum, ui32PipeNum)); | ||
2380 | OSWriteHWReg(psDevInfo->pvRegsBaseKM, SGX_MP_CORE_PIPE_SELECT(BREAKPOINT_TRAP, ui32CoreNum, ui32PipeNum), EUR_CR_PARTITION_BREAKPOINT_TRAP_WRNOTIFY_MASK | EUR_CR_PARTITION_BREAKPOINT_TRAP_CONTINUE_MASK); | ||
2381 | do | ||
2382 | { | ||
2383 | ui32NewSeqNum = 0x1c & OSReadHWReg(psDevInfo->pvRegsBaseKM, SGX_MP_CORE_PIPE_SELECT(BREAKPOINT, ui32CoreNum, ui32PipeNum)); | ||
2384 | } | ||
2385 | while (ui32OldSeqNum == ui32NewSeqNum); | ||
2386 | #else | ||
2248 | ui32OldSeqNum = 0x1c & OSReadHWReg(psDevInfo->pvRegsBaseKM, SGX_MP_CORE_SELECT(EUR_CR_BREAKPOINT, ui32CoreNum)); | 2387 | ui32OldSeqNum = 0x1c & OSReadHWReg(psDevInfo->pvRegsBaseKM, SGX_MP_CORE_SELECT(EUR_CR_BREAKPOINT, ui32CoreNum)); |
2249 | OSWriteHWReg(psDevInfo->pvRegsBaseKM, SGX_MP_CORE_SELECT(EUR_CR_BREAKPOINT_TRAP, ui32CoreNum), EUR_CR_BREAKPOINT_TRAP_WRNOTIFY_MASK | EUR_CR_BREAKPOINT_TRAP_CONTINUE_MASK); | 2388 | OSWriteHWReg(psDevInfo->pvRegsBaseKM, SGX_MP_CORE_SELECT(EUR_CR_BREAKPOINT_TRAP, ui32CoreNum), EUR_CR_BREAKPOINT_TRAP_WRNOTIFY_MASK | EUR_CR_BREAKPOINT_TRAP_CONTINUE_MASK); |
2250 | do | 2389 | do |
@@ -2252,6 +2391,7 @@ PVRSRV_ERROR SGXGetMiscInfoKM(PVRSRV_SGXDEV_INFO *psDevInfo, | |||
2252 | ui32NewSeqNum = 0x1c & OSReadHWReg(psDevInfo->pvRegsBaseKM, SGX_MP_CORE_SELECT(EUR_CR_BREAKPOINT, ui32CoreNum)); | 2391 | ui32NewSeqNum = 0x1c & OSReadHWReg(psDevInfo->pvRegsBaseKM, SGX_MP_CORE_SELECT(EUR_CR_BREAKPOINT, ui32CoreNum)); |
2253 | } | 2392 | } |
2254 | while (ui32OldSeqNum == ui32NewSeqNum); | 2393 | while (ui32OldSeqNum == ui32NewSeqNum); |
2394 | #endif | ||
2255 | } | 2395 | } |
2256 | #endif | 2396 | #endif |
2257 | return PVRSRV_OK; | 2397 | return PVRSRV_OK; |
@@ -2291,7 +2431,7 @@ PVRSRV_ERROR SGXGetMiscInfoKM(PVRSRV_SGXDEV_INFO *psDevInfo, | |||
2291 | case SGX_MISC_INFO_REQUEST_SGXREV: | 2431 | case SGX_MISC_INFO_REQUEST_SGXREV: |
2292 | { | 2432 | { |
2293 | PVRSRV_SGX_MISCINFO_FEATURES *psSGXFeatures; | 2433 | PVRSRV_SGX_MISCINFO_FEATURES *psSGXFeatures; |
2294 | eError = SGXGetMiscInfoUkernel(psDevInfo, psDeviceNode); | 2434 | eError = SGXGetMiscInfoUkernel(psDevInfo, psDeviceNode, hDevMemContext); |
2295 | if(eError != PVRSRV_OK) | 2435 | if(eError != PVRSRV_OK) |
2296 | { | 2436 | { |
2297 | PVR_DPF((PVR_DBG_ERROR, "An error occurred in SGXGetMiscInfoUkernel: %d\n", | 2437 | PVR_DPF((PVR_DBG_ERROR, "An error occurred in SGXGetMiscInfoUkernel: %d\n", |
@@ -2481,6 +2621,7 @@ PVRSRV_ERROR SGXGetMiscInfoKM(PVRSRV_SGXDEV_INFO *psDevInfo, | |||
2481 | &sCommandData, | 2621 | &sCommandData, |
2482 | KERNEL_ID, | 2622 | KERNEL_ID, |
2483 | 0, | 2623 | 0, |
2624 | hDevMemContext, | ||
2484 | IMG_FALSE); | 2625 | IMG_FALSE); |
2485 | return eError; | 2626 | return eError; |
2486 | } | 2627 | } |
@@ -2535,6 +2676,8 @@ PVRSRV_ERROR SGXReadHWPerfCBKM(IMG_HANDLE hDevHandle, | |||
2535 | SGXMKIF_HWPERF_CB_ENTRY *psMKPerfEntry = &psHWPerfCB->psHWPerfCBData[psHWPerfCB->ui32Roff]; | 2676 | SGXMKIF_HWPERF_CB_ENTRY *psMKPerfEntry = &psHWPerfCB->psHWPerfCBData[psHWPerfCB->ui32Roff]; |
2536 | 2677 | ||
2537 | psClientHWPerfEntry[i].ui32FrameNo = psMKPerfEntry->ui32FrameNo; | 2678 | psClientHWPerfEntry[i].ui32FrameNo = psMKPerfEntry->ui32FrameNo; |
2679 | psClientHWPerfEntry[i].ui32PID = psMKPerfEntry->ui32PID; | ||
2680 | psClientHWPerfEntry[i].ui32RTData = psMKPerfEntry->ui32RTData; | ||
2538 | psClientHWPerfEntry[i].ui32Type = psMKPerfEntry->ui32Type; | 2681 | psClientHWPerfEntry[i].ui32Type = psMKPerfEntry->ui32Type; |
2539 | psClientHWPerfEntry[i].ui32Ordinal = psMKPerfEntry->ui32Ordinal; | 2682 | psClientHWPerfEntry[i].ui32Ordinal = psMKPerfEntry->ui32Ordinal; |
2540 | psClientHWPerfEntry[i].ui32Info = psMKPerfEntry->ui32Info; | 2683 | psClientHWPerfEntry[i].ui32Info = psMKPerfEntry->ui32Info; |
@@ -2545,6 +2688,10 @@ PVRSRV_ERROR SGXReadHWPerfCBKM(IMG_HANDLE hDevHandle, | |||
2545 | &psMKPerfEntry->ui32Counters[0][0], | 2688 | &psMKPerfEntry->ui32Counters[0][0], |
2546 | sizeof(psMKPerfEntry->ui32Counters)); | 2689 | sizeof(psMKPerfEntry->ui32Counters)); |
2547 | 2690 | ||
2691 | OSMemCopy(&psClientHWPerfEntry[i].ui32MiscCounters[0][0], | ||
2692 | &psMKPerfEntry->ui32MiscCounters[0][0], | ||
2693 | sizeof(psMKPerfEntry->ui32MiscCounters)); | ||
2694 | |||
2548 | psHWPerfCB->ui32Roff = (psHWPerfCB->ui32Roff + 1) & (SGXMKIF_HWPERF_CB_SIZE - 1); | 2695 | psHWPerfCB->ui32Roff = (psHWPerfCB->ui32Roff + 1) & (SGXMKIF_HWPERF_CB_SIZE - 1); |
2549 | } | 2696 | } |
2550 | 2697 | ||
diff --git a/drivers/gpu/pvr/sgx/sgxkick.c b/drivers/gpu/pvr/sgx/sgxkick.c index 581640b8fd1..115204f67c2 100644 --- a/drivers/gpu/pvr/sgx/sgxkick.c +++ b/drivers/gpu/pvr/sgx/sgxkick.c | |||
@@ -36,29 +36,48 @@ | |||
36 | #include "osfunc.h" | 36 | #include "osfunc.h" |
37 | #include "pvr_debug.h" | 37 | #include "pvr_debug.h" |
38 | #include "sgxutils.h" | 38 | #include "sgxutils.h" |
39 | #include "ttrace.h" | ||
39 | 40 | ||
40 | IMG_EXPORT | 41 | IMG_EXPORT |
42 | #if defined (SUPPORT_SID_INTERFACE) | ||
43 | PVRSRV_ERROR SGXDoKickKM(IMG_HANDLE hDevHandle, SGX_CCB_KICK_KM *psCCBKick) | ||
44 | #else | ||
41 | PVRSRV_ERROR SGXDoKickKM(IMG_HANDLE hDevHandle, SGX_CCB_KICK *psCCBKick) | 45 | PVRSRV_ERROR SGXDoKickKM(IMG_HANDLE hDevHandle, SGX_CCB_KICK *psCCBKick) |
46 | #endif | ||
42 | { | 47 | { |
43 | PVRSRV_ERROR eError; | 48 | PVRSRV_ERROR eError; |
44 | PVRSRV_KERNEL_SYNC_INFO *psSyncInfo; | 49 | PVRSRV_KERNEL_SYNC_INFO *psSyncInfo; |
45 | PVRSRV_KERNEL_MEM_INFO *psCCBMemInfo = (PVRSRV_KERNEL_MEM_INFO *) psCCBKick->hCCBKernelMemInfo; | 50 | PVRSRV_KERNEL_MEM_INFO *psCCBMemInfo = (PVRSRV_KERNEL_MEM_INFO *) psCCBKick->hCCBKernelMemInfo; |
46 | SGXMKIF_CMDTA_SHARED *psTACmd; | 51 | SGXMKIF_CMDTA_SHARED *psTACmd; |
47 | IMG_UINT32 i; | 52 | IMG_UINT32 i; |
53 | IMG_HANDLE hDevMemContext = IMG_NULL; | ||
54 | #if defined(FIX_HW_BRN_31620) | ||
55 | hDevMemContext = psCCBKick->hDevMemContext; | ||
56 | #endif | ||
57 | PVR_TTRACE(PVRSRV_TRACE_GROUP_KICK, PVRSRV_TRACE_CLASS_FUNCTION_ENTER, KICK_TOKEN_DOKICK); | ||
48 | 58 | ||
49 | if (!CCB_OFFSET_IS_VALID(SGXMKIF_CMDTA_SHARED, psCCBMemInfo, psCCBKick, ui32CCBOffset)) | 59 | if (!CCB_OFFSET_IS_VALID(SGXMKIF_CMDTA_SHARED, psCCBMemInfo, psCCBKick, ui32CCBOffset)) |
50 | { | 60 | { |
51 | PVR_DPF((PVR_DBG_ERROR, "SGXDoKickKM: Invalid CCB offset")); | 61 | PVR_DPF((PVR_DBG_ERROR, "SGXDoKickKM: Invalid CCB offset")); |
62 | PVR_TTRACE(PVRSRV_TRACE_GROUP_KICK, PVRSRV_TRACE_CLASS_FUNCTION_EXIT, KICK_TOKEN_DOKICK); | ||
52 | return PVRSRV_ERROR_INVALID_PARAMS; | 63 | return PVRSRV_ERROR_INVALID_PARAMS; |
53 | } | 64 | } |
54 | 65 | ||
55 | 66 | ||
56 | psTACmd = CCB_DATA_FROM_OFFSET(SGXMKIF_CMDTA_SHARED, psCCBMemInfo, psCCBKick, ui32CCBOffset); | 67 | psTACmd = CCB_DATA_FROM_OFFSET(SGXMKIF_CMDTA_SHARED, psCCBMemInfo, psCCBKick, ui32CCBOffset); |
57 | 68 | ||
69 | PVR_TTRACE(PVRSRV_TRACE_GROUP_KICK, PVRSRV_TRACE_CLASS_CMD_START, KICK_TOKEN_DOKICK); | ||
70 | PVR_TTRACE_UI32(PVRSRV_TRACE_GROUP_KICK, PVRSRV_TRACE_CLASS_CCB, | ||
71 | KICK_TOKEN_CCB_OFFSET, psCCBKick->ui32CCBOffset); | ||
72 | |||
58 | 73 | ||
59 | if (psCCBKick->hTA3DSyncInfo) | 74 | if (psCCBKick->hTA3DSyncInfo) |
60 | { | 75 | { |
61 | psSyncInfo = (PVRSRV_KERNEL_SYNC_INFO *)psCCBKick->hTA3DSyncInfo; | 76 | psSyncInfo = (PVRSRV_KERNEL_SYNC_INFO *)psCCBKick->hTA3DSyncInfo; |
77 | |||
78 | PVR_TTRACE_SYNC_OBJECT(PVRSRV_TRACE_GROUP_KICK, KICK_TOKEN_TA3D_SYNC, | ||
79 | psSyncInfo, PVRSRV_SYNCOP_SAMPLE); | ||
80 | |||
62 | psTACmd->sTA3DDependency.sWriteOpsCompleteDevVAddr = psSyncInfo->sWriteOpsCompleteDevVAddr; | 81 | psTACmd->sTA3DDependency.sWriteOpsCompleteDevVAddr = psSyncInfo->sWriteOpsCompleteDevVAddr; |
63 | 82 | ||
64 | psTACmd->sTA3DDependency.ui32WriteOpsPendingVal = psSyncInfo->psSyncData->ui32WriteOpsPending; | 83 | psTACmd->sTA3DDependency.ui32WriteOpsPendingVal = psSyncInfo->psSyncData->ui32WriteOpsPending; |
@@ -73,6 +92,9 @@ PVRSRV_ERROR SGXDoKickKM(IMG_HANDLE hDevHandle, SGX_CCB_KICK *psCCBKick) | |||
73 | { | 92 | { |
74 | psSyncInfo = (PVRSRV_KERNEL_SYNC_INFO *)psCCBKick->hTASyncInfo; | 93 | psSyncInfo = (PVRSRV_KERNEL_SYNC_INFO *)psCCBKick->hTASyncInfo; |
75 | 94 | ||
95 | PVR_TTRACE_SYNC_OBJECT(PVRSRV_TRACE_GROUP_KICK, KICK_TOKEN_TA_SYNC, | ||
96 | psSyncInfo, PVRSRV_SYNCOP_SAMPLE); | ||
97 | |||
76 | psTACmd->sTATQSyncReadOpsCompleteDevVAddr = psSyncInfo->sReadOpsCompleteDevVAddr; | 98 | psTACmd->sTATQSyncReadOpsCompleteDevVAddr = psSyncInfo->sReadOpsCompleteDevVAddr; |
77 | psTACmd->sTATQSyncWriteOpsCompleteDevVAddr = psSyncInfo->sWriteOpsCompleteDevVAddr; | 99 | psTACmd->sTATQSyncWriteOpsCompleteDevVAddr = psSyncInfo->sWriteOpsCompleteDevVAddr; |
78 | 100 | ||
@@ -84,6 +106,9 @@ PVRSRV_ERROR SGXDoKickKM(IMG_HANDLE hDevHandle, SGX_CCB_KICK *psCCBKick) | |||
84 | { | 106 | { |
85 | psSyncInfo = (PVRSRV_KERNEL_SYNC_INFO *)psCCBKick->h3DSyncInfo; | 107 | psSyncInfo = (PVRSRV_KERNEL_SYNC_INFO *)psCCBKick->h3DSyncInfo; |
86 | 108 | ||
109 | PVR_TTRACE_SYNC_OBJECT(PVRSRV_TRACE_GROUP_KICK, KICK_TOKEN_3D_SYNC, | ||
110 | psSyncInfo, PVRSRV_SYNCOP_SAMPLE); | ||
111 | |||
87 | psTACmd->s3DTQSyncReadOpsCompleteDevVAddr = psSyncInfo->sReadOpsCompleteDevVAddr; | 112 | psTACmd->s3DTQSyncReadOpsCompleteDevVAddr = psSyncInfo->sReadOpsCompleteDevVAddr; |
88 | psTACmd->s3DTQSyncWriteOpsCompleteDevVAddr = psSyncInfo->sWriteOpsCompleteDevVAddr; | 113 | psTACmd->s3DTQSyncWriteOpsCompleteDevVAddr = psSyncInfo->sWriteOpsCompleteDevVAddr; |
89 | 114 | ||
@@ -174,6 +199,9 @@ PVRSRV_ERROR SGXDoKickKM(IMG_HANDLE hDevHandle, SGX_CCB_KICK *psCCBKick) | |||
174 | { | 199 | { |
175 | psSyncInfo = (PVRSRV_KERNEL_SYNC_INFO *) psCCBKick->ahSrcKernelSyncInfo[i]; | 200 | psSyncInfo = (PVRSRV_KERNEL_SYNC_INFO *) psCCBKick->ahSrcKernelSyncInfo[i]; |
176 | 201 | ||
202 | PVR_TTRACE_SYNC_OBJECT(PVRSRV_TRACE_GROUP_KICK, KICK_TOKEN_SRC_SYNC, | ||
203 | psSyncInfo, PVRSRV_SYNCOP_SAMPLE); | ||
204 | |||
177 | psTACmd->asSrcSyncs[i].sWriteOpsCompleteDevVAddr = psSyncInfo->sWriteOpsCompleteDevVAddr; | 205 | psTACmd->asSrcSyncs[i].sWriteOpsCompleteDevVAddr = psSyncInfo->sWriteOpsCompleteDevVAddr; |
178 | psTACmd->asSrcSyncs[i].sReadOpsCompleteDevVAddr = psSyncInfo->sReadOpsCompleteDevVAddr; | 206 | psTACmd->asSrcSyncs[i].sReadOpsCompleteDevVAddr = psSyncInfo->sReadOpsCompleteDevVAddr; |
179 | 207 | ||
@@ -191,7 +219,7 @@ PVRSRV_ERROR SGXDoKickKM(IMG_HANDLE hDevHandle, SGX_CCB_KICK *psCCBKick) | |||
191 | SGXMKIF_HWDEVICE_SYNC_LIST *psHWDeviceSyncList = psHWDstSyncListMemInfo->pvLinAddrKM; | 219 | SGXMKIF_HWDEVICE_SYNC_LIST *psHWDeviceSyncList = psHWDstSyncListMemInfo->pvLinAddrKM; |
192 | IMG_UINT32 ui32NumDstSyncs = psCCBKick->ui32NumDstSyncObjects; | 220 | IMG_UINT32 ui32NumDstSyncs = psCCBKick->ui32NumDstSyncObjects; |
193 | 221 | ||
194 | PVR_ASSERT(((PVRSRV_KERNEL_MEM_INFO *)psCCBKick->hKernelHWSyncListMemInfo)->ui32AllocSize >= (sizeof(SGXMKIF_HWDEVICE_SYNC_LIST) + | 222 | PVR_ASSERT(((PVRSRV_KERNEL_MEM_INFO *)psCCBKick->hKernelHWSyncListMemInfo)->uAllocSize >= (sizeof(SGXMKIF_HWDEVICE_SYNC_LIST) + |
195 | (sizeof(PVRSRV_DEVICE_SYNC_OBJECT) * ui32NumDstSyncs))); | 223 | (sizeof(PVRSRV_DEVICE_SYNC_OBJECT) * ui32NumDstSyncs))); |
196 | 224 | ||
197 | psHWDeviceSyncList->ui32NumSyncObjects = ui32NumDstSyncs; | 225 | psHWDeviceSyncList->ui32NumSyncObjects = ui32NumDstSyncs; |
@@ -214,6 +242,10 @@ PVRSRV_ERROR SGXDoKickKM(IMG_HANDLE hDevHandle, SGX_CCB_KICK *psCCBKick) | |||
214 | 242 | ||
215 | if (psSyncInfo) | 243 | if (psSyncInfo) |
216 | { | 244 | { |
245 | |||
246 | PVR_TTRACE_SYNC_OBJECT(PVRSRV_TRACE_GROUP_KICK, KICK_TOKEN_DST_SYNC, | ||
247 | psSyncInfo, PVRSRV_SYNCOP_SAMPLE); | ||
248 | |||
217 | psHWDeviceSyncList->asSyncData[i].sWriteOpsCompleteDevVAddr = psSyncInfo->sWriteOpsCompleteDevVAddr; | 249 | psHWDeviceSyncList->asSyncData[i].sWriteOpsCompleteDevVAddr = psSyncInfo->sWriteOpsCompleteDevVAddr; |
218 | psHWDeviceSyncList->asSyncData[i].sReadOpsCompleteDevVAddr = psSyncInfo->sReadOpsCompleteDevVAddr; | 250 | psHWDeviceSyncList->asSyncData[i].sReadOpsCompleteDevVAddr = psSyncInfo->sReadOpsCompleteDevVAddr; |
219 | 251 | ||
@@ -550,7 +582,10 @@ PVRSRV_ERROR SGXDoKickKM(IMG_HANDLE hDevHandle, SGX_CCB_KICK *psCCBKick) | |||
550 | } | 582 | } |
551 | #endif | 583 | #endif |
552 | 584 | ||
553 | eError = SGXScheduleCCBCommandKM(hDevHandle, SGXMKIF_CMD_TA, &psCCBKick->sCommand, KERNEL_ID, 0, psCCBKick->bLastInScene); | 585 | PVR_TTRACE(PVRSRV_TRACE_GROUP_KICK, PVRSRV_TRACE_CLASS_CMD_END, |
586 | KICK_TOKEN_DOKICK); | ||
587 | |||
588 | eError = SGXScheduleCCBCommandKM(hDevHandle, SGXMKIF_CMD_TA, &psCCBKick->sCommand, KERNEL_ID, 0, hDevMemContext, psCCBKick->bLastInScene); | ||
554 | if (eError == PVRSRV_ERROR_RETRY) | 589 | if (eError == PVRSRV_ERROR_RETRY) |
555 | { | 590 | { |
556 | if (psCCBKick->bFirstKickOrResume && psCCBKick->ui32NumDstSyncObjects > 0) | 591 | if (psCCBKick->bFirstKickOrResume && psCCBKick->ui32NumDstSyncObjects > 0) |
@@ -597,11 +632,15 @@ PVRSRV_ERROR SGXDoKickKM(IMG_HANDLE hDevHandle, SGX_CCB_KICK *psCCBKick) | |||
597 | } | 632 | } |
598 | #endif | 633 | #endif |
599 | 634 | ||
635 | PVR_TTRACE(PVRSRV_TRACE_GROUP_KICK, PVRSRV_TRACE_CLASS_FUNCTION_EXIT, | ||
636 | KICK_TOKEN_DOKICK); | ||
600 | return eError; | 637 | return eError; |
601 | } | 638 | } |
602 | else if (PVRSRV_OK != eError) | 639 | else if (PVRSRV_OK != eError) |
603 | { | 640 | { |
604 | PVR_DPF((PVR_DBG_ERROR, "SGXDoKickKM: SGXScheduleCCBCommandKM failed.")); | 641 | PVR_DPF((PVR_DBG_ERROR, "SGXDoKickKM: SGXScheduleCCBCommandKM failed.")); |
642 | PVR_TTRACE(PVRSRV_TRACE_GROUP_KICK, PVRSRV_TRACE_CLASS_FUNCTION_EXIT, | ||
643 | KICK_TOKEN_DOKICK); | ||
605 | return eError; | 644 | return eError; |
606 | } | 645 | } |
607 | 646 | ||
@@ -707,7 +746,8 @@ PVRSRV_ERROR SGXDoKickKM(IMG_HANDLE hDevHandle, SGX_CCB_KICK *psCCBKick) | |||
707 | } | 746 | } |
708 | } | 747 | } |
709 | #endif | 748 | #endif |
710 | 749 | PVR_TTRACE(PVRSRV_TRACE_GROUP_KICK, PVRSRV_TRACE_CLASS_FUNCTION_EXIT, | |
750 | KICK_TOKEN_DOKICK); | ||
711 | return eError; | 751 | return eError; |
712 | } | 752 | } |
713 | 753 | ||
diff --git a/drivers/gpu/pvr/sgx/sgxpower.c b/drivers/gpu/pvr/sgx/sgxpower.c index 427cb50dd92..bea113ed354 100644 --- a/drivers/gpu/pvr/sgx/sgxpower.c +++ b/drivers/gpu/pvr/sgx/sgxpower.c | |||
@@ -207,7 +207,7 @@ static IMG_VOID SGXPollForClockGating (PVRSRV_SGXDEV_INFO *psDevInfo, | |||
207 | #endif | 207 | #endif |
208 | 208 | ||
209 | PDUMPCOMMENT("%s", pszComment); | 209 | PDUMPCOMMENT("%s", pszComment); |
210 | PDUMPREGPOL(SGX_PDUMPREG_NAME, ui32Register, 0, ui32RegisterValue); | 210 | PDUMPREGPOL(SGX_PDUMPREG_NAME, ui32Register, 0, ui32RegisterValue, PDUMP_POLL_OPERATOR_EQUAL); |
211 | } | 211 | } |
212 | 212 | ||
213 | 213 | ||
@@ -224,6 +224,7 @@ PVRSRV_ERROR SGXPrePowerState (IMG_HANDLE hDevHandle, | |||
224 | IMG_UINT32 ui32PowerCmd, ui32CompleteStatus; | 224 | IMG_UINT32 ui32PowerCmd, ui32CompleteStatus; |
225 | SGXMKIF_COMMAND sCommand = {0}; | 225 | SGXMKIF_COMMAND sCommand = {0}; |
226 | IMG_UINT32 ui32Core; | 226 | IMG_UINT32 ui32Core; |
227 | IMG_UINT32 ui32CoresEnabled; | ||
227 | 228 | ||
228 | #if defined(SUPPORT_HW_RECOVERY) | 229 | #if defined(SUPPORT_HW_RECOVERY) |
229 | 230 | ||
@@ -252,7 +253,7 @@ PVRSRV_ERROR SGXPrePowerState (IMG_HANDLE hDevHandle, | |||
252 | 253 | ||
253 | sCommand.ui32Data[1] = ui32PowerCmd; | 254 | sCommand.ui32Data[1] = ui32PowerCmd; |
254 | 255 | ||
255 | eError = SGXScheduleCCBCommand(psDevInfo, SGXMKIF_CMD_POWER, &sCommand, KERNEL_ID, 0, IMG_FALSE); | 256 | eError = SGXScheduleCCBCommand(psDeviceNode, SGXMKIF_CMD_POWER, &sCommand, KERNEL_ID, 0, IMG_NULL, IMG_FALSE); |
256 | if (eError != PVRSRV_OK) | 257 | if (eError != PVRSRV_OK) |
257 | { | 258 | { |
258 | PVR_DPF((PVR_DBG_ERROR,"SGXPrePowerState: Failed to submit power down command")); | 259 | PVR_DPF((PVR_DBG_ERROR,"SGXPrePowerState: Failed to submit power down command")); |
@@ -284,7 +285,13 @@ PVRSRV_ERROR SGXPrePowerState (IMG_HANDLE hDevHandle, | |||
284 | MAKEUNIQUETAG(psDevInfo->psKernelSGXHostCtlMemInfo)); | 285 | MAKEUNIQUETAG(psDevInfo->psKernelSGXHostCtlMemInfo)); |
285 | #endif | 286 | #endif |
286 | 287 | ||
287 | for (ui32Core = 0; ui32Core < SGX_FEATURE_MP_CORE_COUNT; ui32Core++) | 288 | #if defined(SGX_FEATURE_MP) |
289 | ui32CoresEnabled = ((OSReadHWReg(psDevInfo->pvRegsBaseKM, EUR_CR_MASTER_CORE) & EUR_CR_MASTER_CORE_ENABLE_MASK) >> EUR_CR_MASTER_CORE_ENABLE_SHIFT) + 1; | ||
290 | #else | ||
291 | ui32CoresEnabled = 1; | ||
292 | #endif | ||
293 | |||
294 | for (ui32Core = 0; ui32Core < ui32CoresEnabled; ui32Core++) | ||
288 | { | 295 | { |
289 | 296 | ||
290 | SGXPollForClockGating(psDevInfo, | 297 | SGXPollForClockGating(psDevInfo, |
@@ -373,7 +380,7 @@ PVRSRV_ERROR SGXPostPowerState (IMG_HANDLE hDevHandle, | |||
373 | SGXMKIF_COMMAND sCommand = {0}; | 380 | SGXMKIF_COMMAND sCommand = {0}; |
374 | 381 | ||
375 | sCommand.ui32Data[1] = PVRSRV_POWERCMD_RESUME; | 382 | sCommand.ui32Data[1] = PVRSRV_POWERCMD_RESUME; |
376 | eError = SGXScheduleCCBCommand(psDevInfo, SGXMKIF_CMD_POWER, &sCommand, ISR_ID, 0, IMG_FALSE); | 383 | eError = SGXScheduleCCBCommand(psDeviceNode, SGXMKIF_CMD_POWER, &sCommand, ISR_ID, 0, IMG_NULL, IMG_FALSE); |
377 | if (eError != PVRSRV_OK) | 384 | if (eError != PVRSRV_OK) |
378 | { | 385 | { |
379 | PVR_DPF((PVR_DBG_ERROR,"SGXPostPowerState failed to schedule CCB command: %u", eError)); | 386 | PVR_DPF((PVR_DBG_ERROR,"SGXPostPowerState failed to schedule CCB command: %u", eError)); |
diff --git a/drivers/gpu/pvr/sgx/sgxreset.c b/drivers/gpu/pvr/sgx/sgxreset.c index 847ca24a233..d28898b1025 100644 --- a/drivers/gpu/pvr/sgx/sgxreset.c +++ b/drivers/gpu/pvr/sgx/sgxreset.c | |||
@@ -33,38 +33,162 @@ | |||
33 | #include "pdump_km.h" | 33 | #include "pdump_km.h" |
34 | 34 | ||
35 | 35 | ||
36 | static IMG_VOID SGXResetSoftReset(PVRSRV_SGXDEV_INFO *psDevInfo, | 36 | IMG_VOID SGXInitClocks(PVRSRV_SGXDEV_INFO *psDevInfo, |
37 | IMG_BOOL bResetBIF, | 37 | IMG_UINT32 ui32PDUMPFlags) |
38 | IMG_UINT32 ui32PDUMPFlags, | ||
39 | IMG_BOOL bPDump) | ||
40 | { | 38 | { |
41 | IMG_UINT32 ui32SoftResetRegVal; | 39 | IMG_UINT32 ui32RegVal; |
40 | |||
41 | #if !defined(PDUMP) | ||
42 | PVR_UNREFERENCED_PARAMETER(ui32PDUMPFlags); | ||
43 | #endif | ||
44 | |||
45 | ui32RegVal = psDevInfo->ui32ClkGateCtl; | ||
46 | OSWriteHWReg(psDevInfo->pvRegsBaseKM, EUR_CR_CLKGATECTL, ui32RegVal); | ||
47 | PDUMPREGWITHFLAGS(SGX_PDUMPREG_NAME, EUR_CR_CLKGATECTL, ui32RegVal, ui32PDUMPFlags); | ||
48 | |||
49 | #if defined(EUR_CR_CLKGATECTL2) | ||
50 | ui32RegVal = psDevInfo->ui32ClkGateCtl2; | ||
51 | OSWriteHWReg(psDevInfo->pvRegsBaseKM, EUR_CR_CLKGATECTL2, ui32RegVal); | ||
52 | PDUMPREGWITHFLAGS(SGX_PDUMPREG_NAME, EUR_CR_CLKGATECTL2, ui32RegVal, ui32PDUMPFlags); | ||
53 | #endif | ||
54 | } | ||
42 | 55 | ||
43 | #if defined(SGX_FEATURE_MP) | ||
44 | ui32SoftResetRegVal = | ||
45 | EUR_CR_MASTER_SOFT_RESET_IPF_RESET_MASK | | ||
46 | EUR_CR_MASTER_SOFT_RESET_DPM_RESET_MASK | | ||
47 | EUR_CR_MASTER_SOFT_RESET_VDM_RESET_MASK; | ||
48 | 56 | ||
49 | #if defined(SGX_FEATURE_PTLA) | 57 | static IMG_VOID SGXResetInitBIFContexts(PVRSRV_SGXDEV_INFO *psDevInfo, |
50 | ui32SoftResetRegVal |= EUR_CR_MASTER_SOFT_RESET_PTLA_RESET_MASK; | 58 | IMG_UINT32 ui32PDUMPFlags) |
51 | #endif | 59 | { |
52 | #if defined(SGX_FEATURE_SYSTEM_CACHE) | 60 | IMG_UINT32 ui32RegVal; |
53 | ui32SoftResetRegVal |= EUR_CR_MASTER_SOFT_RESET_SLC_RESET_MASK; | ||
54 | #endif | ||
55 | 61 | ||
56 | if (bResetBIF) | 62 | #if !defined(PDUMP) |
63 | PVR_UNREFERENCED_PARAMETER(ui32PDUMPFlags); | ||
64 | #endif | ||
65 | |||
66 | ui32RegVal = 0; | ||
67 | OSWriteHWReg(psDevInfo->pvRegsBaseKM, EUR_CR_BIF_CTRL, ui32RegVal); | ||
68 | PDUMPREGWITHFLAGS(SGX_PDUMPREG_NAME, EUR_CR_BIF_CTRL, ui32RegVal, ui32PDUMPFlags); | ||
69 | |||
70 | #if defined(SGX_FEATURE_MULTIPLE_MEM_CONTEXTS) | ||
71 | PDUMPCOMMENTWITHFLAGS(ui32PDUMPFlags, "Initialise the BIF bank settings\r\n"); | ||
72 | OSWriteHWReg(psDevInfo->pvRegsBaseKM, EUR_CR_BIF_BANK_SET, ui32RegVal); | ||
73 | PDUMPREGWITHFLAGS(SGX_PDUMPREG_NAME, EUR_CR_BIF_BANK_SET, ui32RegVal, ui32PDUMPFlags); | ||
74 | OSWriteHWReg(psDevInfo->pvRegsBaseKM, EUR_CR_BIF_BANK0, ui32RegVal); | ||
75 | PDUMPREGWITHFLAGS(SGX_PDUMPREG_NAME, EUR_CR_BIF_BANK0, ui32RegVal, ui32PDUMPFlags); | ||
76 | #endif | ||
77 | |||
78 | PDUMPCOMMENTWITHFLAGS(ui32PDUMPFlags, "Initialise the BIF directory list\r\n"); | ||
79 | OSWriteHWReg(psDevInfo->pvRegsBaseKM, EUR_CR_BIF_DIR_LIST_BASE0, ui32RegVal); | ||
80 | PDUMPREGWITHFLAGS(SGX_PDUMPREG_NAME, EUR_CR_BIF_DIR_LIST_BASE0, ui32RegVal, ui32PDUMPFlags); | ||
81 | |||
82 | #if defined(SGX_FEATURE_MULTIPLE_MEM_CONTEXTS) | ||
57 | { | 83 | { |
58 | ui32SoftResetRegVal |= EUR_CR_MASTER_SOFT_RESET_BIF_RESET_MASK; | 84 | IMG_UINT32 ui32DirList, ui32DirListReg; |
85 | |||
86 | for (ui32DirList = 1; | ||
87 | ui32DirList < SGX_FEATURE_BIF_NUM_DIRLISTS; | ||
88 | ui32DirList++) | ||
89 | { | ||
90 | ui32DirListReg = EUR_CR_BIF_DIR_LIST_BASE1 + 4 * (ui32DirList - 1); | ||
91 | OSWriteHWReg(psDevInfo->pvRegsBaseKM, ui32DirListReg, ui32RegVal); | ||
92 | PDUMPREGWITHFLAGS(SGX_PDUMPREG_NAME, ui32DirListReg, ui32RegVal, ui32PDUMPFlags); | ||
93 | } | ||
59 | } | 94 | } |
95 | #endif | ||
96 | } | ||
97 | |||
98 | |||
99 | static IMG_VOID SGXResetSetupBIFContexts(PVRSRV_SGXDEV_INFO *psDevInfo, | ||
100 | IMG_UINT32 ui32PDUMPFlags) | ||
101 | { | ||
102 | IMG_UINT32 ui32RegVal; | ||
103 | |||
104 | #if !defined(PDUMP) | ||
105 | PVR_UNREFERENCED_PARAMETER(ui32PDUMPFlags); | ||
106 | #endif | ||
107 | |||
108 | #if defined(SGX_FEATURE_MULTIPLE_MEM_CONTEXTS) | ||
109 | |||
110 | ui32RegVal = (SGX_BIF_DIR_LIST_INDEX_EDM << EUR_CR_BIF_BANK0_INDEX_EDM_SHIFT); | ||
111 | |||
112 | #if defined(SGX_FEATURE_2D_HARDWARE) && !defined(SGX_FEATURE_PTLA) | ||
113 | |||
114 | ui32RegVal |= (SGX_BIF_DIR_LIST_INDEX_EDM << EUR_CR_BIF_BANK0_INDEX_2D_SHIFT); | ||
115 | #endif | ||
116 | |||
117 | #if defined(FIX_HW_BRN_23410) | ||
118 | |||
119 | ui32RegVal |= (SGX_BIF_DIR_LIST_INDEX_EDM << EUR_CR_BIF_BANK0_INDEX_TA_SHIFT); | ||
120 | #endif | ||
121 | |||
122 | OSWriteHWReg(psDevInfo->pvRegsBaseKM, EUR_CR_BIF_BANK0, ui32RegVal); | ||
123 | PDUMPCOMMENTWITHFLAGS(ui32PDUMPFlags, "Set up EDM requestor page table in BIF\r\n"); | ||
124 | PDUMPREGWITHFLAGS(SGX_PDUMPREG_NAME, EUR_CR_BIF_BANK0, ui32RegVal, ui32PDUMPFlags); | ||
125 | #endif | ||
60 | 126 | ||
61 | OSWriteHWReg(psDevInfo->pvRegsBaseKM, EUR_CR_MASTER_SOFT_RESET, ui32SoftResetRegVal); | ||
62 | if (bPDump) | ||
63 | { | 127 | { |
64 | PDUMPREGWITHFLAGS(SGX_PDUMPREG_NAME, EUR_CR_MASTER_SOFT_RESET, ui32SoftResetRegVal, ui32PDUMPFlags); | 128 | IMG_UINT32 ui32EDMDirListReg; |
129 | |||
130 | |||
131 | #if (SGX_BIF_DIR_LIST_INDEX_EDM == 0) | ||
132 | ui32EDMDirListReg = EUR_CR_BIF_DIR_LIST_BASE0; | ||
133 | #else | ||
134 | |||
135 | ui32EDMDirListReg = EUR_CR_BIF_DIR_LIST_BASE1 + 4 * (SGX_BIF_DIR_LIST_INDEX_EDM - 1); | ||
136 | #endif | ||
137 | |||
138 | ui32RegVal = psDevInfo->sKernelPDDevPAddr.uiAddr >> SGX_MMU_PDE_ADDR_ALIGNSHIFT; | ||
139 | |||
140 | #if defined(FIX_HW_BRN_28011) | ||
141 | OSWriteHWReg(psDevInfo->pvRegsBaseKM, EUR_CR_BIF_DIR_LIST_BASE0, ui32RegVal); | ||
142 | PDUMPPDREGWITHFLAGS(&psDevInfo->sMMUAttrib, EUR_CR_BIF_DIR_LIST_BASE0, ui32RegVal, ui32PDUMPFlags, PDUMP_PD_UNIQUETAG); | ||
143 | #endif | ||
144 | |||
145 | OSWriteHWReg(psDevInfo->pvRegsBaseKM, ui32EDMDirListReg, ui32RegVal); | ||
146 | PDUMPCOMMENTWITHFLAGS(ui32PDUMPFlags, "Initialise the EDM's directory list base\r\n"); | ||
147 | PDUMPPDREGWITHFLAGS(&psDevInfo->sMMUAttrib, ui32EDMDirListReg, ui32RegVal, ui32PDUMPFlags, PDUMP_PD_UNIQUETAG); | ||
65 | } | 148 | } |
149 | } | ||
150 | |||
151 | |||
152 | static IMG_VOID SGXResetSleep(PVRSRV_SGXDEV_INFO *psDevInfo, | ||
153 | IMG_UINT32 ui32PDUMPFlags, | ||
154 | IMG_BOOL bPDump) | ||
155 | { | ||
156 | #if defined(PDUMP) | ||
157 | IMG_UINT32 ui32ReadRegister; | ||
158 | |||
159 | #if defined(SGX_FEATURE_MP) | ||
160 | ui32ReadRegister = EUR_CR_MASTER_SOFT_RESET; | ||
161 | #else | ||
162 | ui32ReadRegister = EUR_CR_SOFT_RESET; | ||
163 | #endif | ||
164 | #endif | ||
165 | |||
166 | #if !defined(PDUMP) | ||
167 | PVR_UNREFERENCED_PARAMETER(ui32PDUMPFlags); | ||
66 | #endif | 168 | #endif |
67 | 169 | ||
170 | |||
171 | OSWaitus(100 * 1000000 / psDevInfo->ui32CoreClockSpeed); | ||
172 | if (bPDump) | ||
173 | { | ||
174 | PDUMPIDLWITHFLAGS(30, ui32PDUMPFlags); | ||
175 | #if defined(PDUMP) | ||
176 | PDUMPCOMMENTWITHFLAGS(ui32PDUMPFlags, "Read back to flush the register writes\r\n"); | ||
177 | PDumpRegRead(SGX_PDUMPREG_NAME, ui32ReadRegister, ui32PDUMPFlags); | ||
178 | #endif | ||
179 | } | ||
180 | |||
181 | } | ||
182 | |||
183 | |||
184 | #if !defined(SGX_FEATURE_MP) | ||
185 | static IMG_VOID SGXResetSoftReset(PVRSRV_SGXDEV_INFO *psDevInfo, | ||
186 | IMG_BOOL bResetBIF, | ||
187 | IMG_UINT32 ui32PDUMPFlags, | ||
188 | IMG_BOOL bPDump) | ||
189 | { | ||
190 | IMG_UINT32 ui32SoftResetRegVal; | ||
191 | |||
68 | ui32SoftResetRegVal = | 192 | ui32SoftResetRegVal = |
69 | 193 | ||
70 | EUR_CR_SOFT_RESET_DPM_RESET_MASK | | 194 | EUR_CR_SOFT_RESET_DPM_RESET_MASK | |
@@ -139,27 +263,6 @@ static IMG_VOID SGXResetSoftReset(PVRSRV_SGXDEV_INFO *psDevInfo, | |||
139 | } | 263 | } |
140 | 264 | ||
141 | 265 | ||
142 | static IMG_VOID SGXResetSleep(PVRSRV_SGXDEV_INFO *psDevInfo, | ||
143 | IMG_UINT32 ui32PDUMPFlags, | ||
144 | IMG_BOOL bPDump) | ||
145 | { | ||
146 | #if !defined(PDUMP) | ||
147 | PVR_UNREFERENCED_PARAMETER(ui32PDUMPFlags); | ||
148 | #endif | ||
149 | |||
150 | |||
151 | OSWaitus(100 * 1000000 / psDevInfo->ui32CoreClockSpeed); | ||
152 | if (bPDump) | ||
153 | { | ||
154 | PDUMPIDLWITHFLAGS(30, ui32PDUMPFlags); | ||
155 | #if defined(PDUMP) | ||
156 | PDumpRegRead(SGX_PDUMPREG_NAME, EUR_CR_SOFT_RESET, ui32PDUMPFlags); | ||
157 | #endif | ||
158 | } | ||
159 | |||
160 | } | ||
161 | |||
162 | |||
163 | static IMG_VOID SGXResetInvalDC(PVRSRV_SGXDEV_INFO *psDevInfo, | 266 | static IMG_VOID SGXResetInvalDC(PVRSRV_SGXDEV_INFO *psDevInfo, |
164 | IMG_UINT32 ui32PDUMPFlags, | 267 | IMG_UINT32 ui32PDUMPFlags, |
165 | IMG_BOOL bPDump) | 268 | IMG_BOOL bPDump) |
@@ -209,16 +312,18 @@ static IMG_VOID SGXResetInvalDC(PVRSRV_SGXDEV_INFO *psDevInfo, | |||
209 | 312 | ||
210 | if (bPDump) | 313 | if (bPDump) |
211 | { | 314 | { |
212 | PDUMPREGPOLWITHFLAGS(SGX_PDUMPREG_NAME, EUR_CR_BIF_MEM_REQ_STAT, 0, EUR_CR_BIF_MEM_REQ_STAT_READS_MASK, ui32PDUMPFlags); | 315 | PDUMPREGPOLWITHFLAGS(SGX_PDUMPREG_NAME, EUR_CR_BIF_MEM_REQ_STAT, 0, EUR_CR_BIF_MEM_REQ_STAT_READS_MASK, ui32PDUMPFlags, PDUMP_POLL_OPERATOR_EQUAL); |
213 | } | 316 | } |
214 | } | 317 | } |
215 | #endif | 318 | #endif |
216 | } | 319 | } |
320 | #endif | ||
217 | 321 | ||
218 | 322 | ||
219 | IMG_VOID SGXReset(PVRSRV_SGXDEV_INFO *psDevInfo, | 323 | IMG_VOID SGXReset(PVRSRV_SGXDEV_INFO *psDevInfo, |
220 | IMG_BOOL bHardwareRecovery, | 324 | IMG_BOOL bHardwareRecovery, |
221 | IMG_UINT32 ui32PDUMPFlags) | 325 | IMG_UINT32 ui32PDUMPFlags) |
326 | #if !defined(SGX_FEATURE_MP) | ||
222 | { | 327 | { |
223 | IMG_UINT32 ui32RegVal; | 328 | IMG_UINT32 ui32RegVal; |
224 | #if defined(EUR_CR_BIF_INT_STAT_FAULT_REQ_MASK) | 329 | #if defined(EUR_CR_BIF_INT_STAT_FAULT_REQ_MASK) |
@@ -227,12 +332,10 @@ IMG_VOID SGXReset(PVRSRV_SGXDEV_INFO *psDevInfo, | |||
227 | const IMG_UINT32 ui32BifFaultMask = EUR_CR_BIF_INT_STAT_FAULT_MASK; | 332 | const IMG_UINT32 ui32BifFaultMask = EUR_CR_BIF_INT_STAT_FAULT_MASK; |
228 | #endif | 333 | #endif |
229 | 334 | ||
230 | #ifndef PDUMP | 335 | #if !defined(PDUMP) |
231 | PVR_UNREFERENCED_PARAMETER(ui32PDUMPFlags); | 336 | PVR_UNREFERENCED_PARAMETER(ui32PDUMPFlags); |
232 | #endif | 337 | #endif |
233 | 338 | ||
234 | psDevInfo->ui32NumResets++; | ||
235 | |||
236 | PDUMPCOMMENTWITHFLAGS(ui32PDUMPFlags, "Start of SGX reset sequence\r\n"); | 339 | PDUMPCOMMENTWITHFLAGS(ui32PDUMPFlags, "Start of SGX reset sequence\r\n"); |
237 | 340 | ||
238 | #if defined(FIX_HW_BRN_23944) | 341 | #if defined(FIX_HW_BRN_23944) |
@@ -274,37 +377,7 @@ IMG_VOID SGXReset(PVRSRV_SGXDEV_INFO *psDevInfo, | |||
274 | PDUMPREGWITHFLAGS(SGX_PDUMPREG_NAME, EUR_CR_BIF_36BIT_ADDRESSING, EUR_CR_BIF_36BIT_ADDRESSING_ENABLE_MASK, ui32PDUMPFlags); | 377 | PDUMPREGWITHFLAGS(SGX_PDUMPREG_NAME, EUR_CR_BIF_36BIT_ADDRESSING, EUR_CR_BIF_36BIT_ADDRESSING_ENABLE_MASK, ui32PDUMPFlags); |
275 | #endif | 378 | #endif |
276 | 379 | ||
277 | ui32RegVal = 0; | 380 | SGXResetInitBIFContexts(psDevInfo, ui32PDUMPFlags); |
278 | OSWriteHWReg(psDevInfo->pvRegsBaseKM, EUR_CR_BIF_CTRL, ui32RegVal); | ||
279 | PDUMPREGWITHFLAGS(SGX_PDUMPREG_NAME, EUR_CR_BIF_CTRL, ui32RegVal, ui32PDUMPFlags); | ||
280 | #if defined(SGX_FEATURE_MP) | ||
281 | OSWriteHWReg(psDevInfo->pvRegsBaseKM, EUR_CR_MASTER_BIF_CTRL, ui32RegVal); | ||
282 | PDUMPREGWITHFLAGS(SGX_PDUMPREG_NAME, EUR_CR_MASTER_BIF_CTRL, ui32RegVal, ui32PDUMPFlags); | ||
283 | #endif | ||
284 | #if defined(SGX_FEATURE_MULTIPLE_MEM_CONTEXTS) | ||
285 | OSWriteHWReg(psDevInfo->pvRegsBaseKM, EUR_CR_BIF_BANK_SET, ui32RegVal); | ||
286 | PDUMPREGWITHFLAGS(SGX_PDUMPREG_NAME, EUR_CR_BIF_BANK_SET, ui32RegVal, ui32PDUMPFlags); | ||
287 | OSWriteHWReg(psDevInfo->pvRegsBaseKM, EUR_CR_BIF_BANK0, ui32RegVal); | ||
288 | PDUMPREGWITHFLAGS(SGX_PDUMPREG_NAME, EUR_CR_BIF_BANK0, ui32RegVal, ui32PDUMPFlags); | ||
289 | #endif | ||
290 | |||
291 | OSWriteHWReg(psDevInfo->pvRegsBaseKM, EUR_CR_BIF_DIR_LIST_BASE0, ui32RegVal); | ||
292 | PDUMPREGWITHFLAGS(SGX_PDUMPREG_NAME, EUR_CR_BIF_DIR_LIST_BASE0, ui32RegVal, ui32PDUMPFlags); | ||
293 | |||
294 | #if defined(SGX_FEATURE_MULTIPLE_MEM_CONTEXTS) | ||
295 | { | ||
296 | IMG_UINT32 ui32DirList, ui32DirListReg; | ||
297 | |||
298 | for (ui32DirList = 1; | ||
299 | ui32DirList < SGX_FEATURE_BIF_NUM_DIRLISTS; | ||
300 | ui32DirList++) | ||
301 | { | ||
302 | ui32DirListReg = EUR_CR_BIF_DIR_LIST_BASE1 + 4 * (ui32DirList - 1); | ||
303 | OSWriteHWReg(psDevInfo->pvRegsBaseKM, ui32DirListReg, ui32RegVal); | ||
304 | PDUMPREGWITHFLAGS(SGX_PDUMPREG_NAME, ui32DirListReg, ui32RegVal, ui32PDUMPFlags); | ||
305 | } | ||
306 | } | ||
307 | #endif | ||
308 | 381 | ||
309 | #if defined(EUR_CR_BIF_MEM_ARB_CONFIG) | 382 | #if defined(EUR_CR_BIF_MEM_ARB_CONFIG) |
310 | 383 | ||
@@ -317,30 +390,6 @@ IMG_VOID SGXReset(PVRSRV_SGXDEV_INFO *psDevInfo, | |||
317 | #endif | 390 | #endif |
318 | 391 | ||
319 | #if defined(SGX_FEATURE_SYSTEM_CACHE) | 392 | #if defined(SGX_FEATURE_SYSTEM_CACHE) |
320 | #if defined(SGX_FEATURE_MP) | ||
321 | #if defined(SGX_BYPASS_SYSTEM_CACHE) | ||
322 | #error SGX_BYPASS_SYSTEM_CACHE not supported | ||
323 | #else | ||
324 | ui32RegVal = EUR_CR_MASTER_SLC_CTRL_USSE_INVAL_REQ0_MASK | | ||
325 | #if defined(FIX_HW_BRN_30954) | ||
326 | EUR_CR_MASTER_SLC_CTRL_DISABLE_REORDERING_MASK | | ||
327 | #endif | ||
328 | (0xC << EUR_CR_MASTER_SLC_CTRL_ARB_PAGE_SIZE_SHIFT); | ||
329 | OSWriteHWReg(psDevInfo->pvRegsBaseKM, EUR_CR_MASTER_SLC_CTRL, ui32RegVal); | ||
330 | PDUMPREG(SGX_PDUMPREG_NAME, EUR_CR_MASTER_SLC_CTRL, ui32RegVal); | ||
331 | |||
332 | ui32RegVal = EUR_CR_MASTER_SLC_CTRL_BYPASS_BYP_CC_MASK; | ||
333 | #if defined(FIX_HW_BRN_31195) | ||
334 | ui32RegVal |= EUR_CR_MASTER_SLC_CTRL_BYPASS_REQ_USE0_MASK | | ||
335 | EUR_CR_MASTER_SLC_CTRL_BYPASS_REQ_USE1_MASK | | ||
336 | EUR_CR_MASTER_SLC_CTRL_BYPASS_REQ_USE2_MASK | | ||
337 | EUR_CR_MASTER_SLC_CTRL_BYPASS_REQ_USE3_MASK | | ||
338 | EUR_CR_MASTER_SLC_CTRL_BYPASS_REQ_TA_MASK; | ||
339 | #endif | ||
340 | OSWriteHWReg(psDevInfo->pvRegsBaseKM, EUR_CR_MASTER_SLC_CTRL_BYPASS, ui32RegVal); | ||
341 | PDUMPREG(SGX_PDUMPREG_NAME, EUR_CR_MASTER_SLC_CTRL_BYPASS, ui32RegVal); | ||
342 | #endif | ||
343 | #else | ||
344 | #if defined(SGX_BYPASS_SYSTEM_CACHE) | 393 | #if defined(SGX_BYPASS_SYSTEM_CACHE) |
345 | 394 | ||
346 | ui32RegVal = MNE_CR_CTRL_BYPASS_ALL_MASK; | 395 | ui32RegVal = MNE_CR_CTRL_BYPASS_ALL_MASK; |
@@ -355,7 +404,6 @@ IMG_VOID SGXReset(PVRSRV_SGXDEV_INFO *psDevInfo, | |||
355 | OSWriteHWReg(psDevInfo->pvRegsBaseKM, MNE_CR_CTRL, ui32RegVal); | 404 | OSWriteHWReg(psDevInfo->pvRegsBaseKM, MNE_CR_CTRL, ui32RegVal); |
356 | PDUMPREG(SGX_PDUMPREG_NAME, MNE_CR_CTRL, ui32RegVal); | 405 | PDUMPREG(SGX_PDUMPREG_NAME, MNE_CR_CTRL, ui32RegVal); |
357 | #endif | 406 | #endif |
358 | #endif | ||
359 | 407 | ||
360 | if (bHardwareRecovery) | 408 | if (bHardwareRecovery) |
361 | { | 409 | { |
@@ -439,43 +487,7 @@ IMG_VOID SGXReset(PVRSRV_SGXDEV_INFO *psDevInfo, | |||
439 | 487 | ||
440 | 488 | ||
441 | 489 | ||
442 | #if defined(SGX_FEATURE_MULTIPLE_MEM_CONTEXTS) | 490 | SGXResetSetupBIFContexts(psDevInfo, ui32PDUMPFlags); |
443 | |||
444 | ui32RegVal = (SGX_BIF_DIR_LIST_INDEX_EDM << EUR_CR_BIF_BANK0_INDEX_EDM_SHIFT); | ||
445 | |||
446 | #if defined(SGX_FEATURE_2D_HARDWARE) && !defined(SGX_FEATURE_PTLA) | ||
447 | |||
448 | ui32RegVal |= (SGX_BIF_DIR_LIST_INDEX_EDM << EUR_CR_BIF_BANK0_INDEX_2D_SHIFT); | ||
449 | #endif | ||
450 | |||
451 | #if defined(FIX_HW_BRN_23410) | ||
452 | |||
453 | ui32RegVal |= (SGX_BIF_DIR_LIST_INDEX_EDM << EUR_CR_BIF_BANK0_INDEX_TA_SHIFT); | ||
454 | #endif | ||
455 | |||
456 | OSWriteHWReg(psDevInfo->pvRegsBaseKM, EUR_CR_BIF_BANK0, ui32RegVal); | ||
457 | PDUMPREGWITHFLAGS(SGX_PDUMPREG_NAME, EUR_CR_BIF_BANK0, ui32RegVal, ui32PDUMPFlags); | ||
458 | #endif | ||
459 | |||
460 | { | ||
461 | IMG_UINT32 ui32EDMDirListReg; | ||
462 | |||
463 | |||
464 | #if (SGX_BIF_DIR_LIST_INDEX_EDM == 0) | ||
465 | ui32EDMDirListReg = EUR_CR_BIF_DIR_LIST_BASE0; | ||
466 | #else | ||
467 | |||
468 | ui32EDMDirListReg = EUR_CR_BIF_DIR_LIST_BASE1 + 4 * (SGX_BIF_DIR_LIST_INDEX_EDM - 1); | ||
469 | #endif | ||
470 | |||
471 | #if defined(FIX_HW_BRN_28011) | ||
472 | OSWriteHWReg(psDevInfo->pvRegsBaseKM, EUR_CR_BIF_DIR_LIST_BASE0, psDevInfo->sKernelPDDevPAddr.uiAddr>>SGX_MMU_PDE_ADDR_ALIGNSHIFT); | ||
473 | PDUMPPDREGWITHFLAGS(&psDevInfo->sMMUAttrib, EUR_CR_BIF_DIR_LIST_BASE0, psDevInfo->sKernelPDDevPAddr.uiAddr>>SGX_MMU_PDE_ADDR_ALIGNSHIFT, ui32PDUMPFlags, PDUMP_PD_UNIQUETAG); | ||
474 | #endif | ||
475 | |||
476 | OSWriteHWReg(psDevInfo->pvRegsBaseKM, ui32EDMDirListReg, psDevInfo->sKernelPDDevPAddr.uiAddr>>SGX_MMU_PDE_ADDR_ALIGNSHIFT); | ||
477 | PDUMPPDREGWITHFLAGS(&psDevInfo->sMMUAttrib, ui32EDMDirListReg, psDevInfo->sKernelPDDevPAddr.uiAddr>>SGX_MMU_PDE_ADDR_ALIGNSHIFT, ui32PDUMPFlags, PDUMP_PD_UNIQUETAG); | ||
478 | } | ||
479 | 491 | ||
480 | #if defined(SGX_FEATURE_2D_HARDWARE) && !defined(SGX_FEATURE_PTLA) | 492 | #if defined(SGX_FEATURE_2D_HARDWARE) && !defined(SGX_FEATURE_PTLA) |
481 | 493 | ||
@@ -494,10 +506,6 @@ IMG_VOID SGXReset(PVRSRV_SGXDEV_INFO *psDevInfo, | |||
494 | 506 | ||
495 | 507 | ||
496 | ui32RegVal = 0; | 508 | ui32RegVal = 0; |
497 | #if defined(SGX_FEATURE_MP) | ||
498 | OSWriteHWReg(psDevInfo->pvRegsBaseKM, EUR_CR_MASTER_SOFT_RESET, ui32RegVal); | ||
499 | PDUMPREGWITHFLAGS(SGX_PDUMPREG_NAME, EUR_CR_MASTER_SOFT_RESET, ui32RegVal, ui32PDUMPFlags); | ||
500 | #endif | ||
501 | OSWriteHWReg(psDevInfo->pvRegsBaseKM, EUR_CR_SOFT_RESET, ui32RegVal); | 509 | OSWriteHWReg(psDevInfo->pvRegsBaseKM, EUR_CR_SOFT_RESET, ui32RegVal); |
502 | PDUMPREGWITHFLAGS(SGX_PDUMPREG_NAME, EUR_CR_SOFT_RESET, ui32RegVal, ui32PDUMPFlags); | 510 | PDUMPREGWITHFLAGS(SGX_PDUMPREG_NAME, EUR_CR_SOFT_RESET, ui32RegVal, ui32PDUMPFlags); |
503 | 511 | ||
@@ -507,4 +515,140 @@ IMG_VOID SGXReset(PVRSRV_SGXDEV_INFO *psDevInfo, | |||
507 | PDUMPCOMMENTWITHFLAGS(ui32PDUMPFlags, "End of SGX reset sequence\r\n"); | 515 | PDUMPCOMMENTWITHFLAGS(ui32PDUMPFlags, "End of SGX reset sequence\r\n"); |
508 | } | 516 | } |
509 | 517 | ||
518 | #else | ||
519 | |||
520 | { | ||
521 | IMG_UINT32 ui32RegVal; | ||
522 | |||
523 | PVR_UNREFERENCED_PARAMETER(bHardwareRecovery); | ||
524 | |||
525 | #if !defined(PDUMP) | ||
526 | PVR_UNREFERENCED_PARAMETER(ui32PDUMPFlags); | ||
527 | #endif | ||
528 | |||
529 | PDUMPCOMMENTWITHFLAGS(ui32PDUMPFlags, "Start of SGX MP reset sequence\r\n"); | ||
530 | |||
531 | |||
532 | ui32RegVal = EUR_CR_MASTER_SOFT_RESET_BIF_RESET_MASK | | ||
533 | EUR_CR_MASTER_SOFT_RESET_IPF_RESET_MASK | | ||
534 | EUR_CR_MASTER_SOFT_RESET_DPM_RESET_MASK | | ||
535 | EUR_CR_MASTER_SOFT_RESET_VDM_RESET_MASK; | ||
536 | |||
537 | #if defined(SGX_FEATURE_PTLA) | ||
538 | ui32RegVal |= EUR_CR_MASTER_SOFT_RESET_PTLA_RESET_MASK; | ||
539 | #endif | ||
540 | #if defined(SGX_FEATURE_SYSTEM_CACHE) | ||
541 | ui32RegVal |= EUR_CR_MASTER_SOFT_RESET_SLC_RESET_MASK; | ||
542 | #endif | ||
543 | |||
544 | |||
545 | ui32RegVal |= EUR_CR_MASTER_SOFT_RESET_CORE_RESET_MASK(0) | | ||
546 | EUR_CR_MASTER_SOFT_RESET_CORE_RESET_MASK(1) | | ||
547 | EUR_CR_MASTER_SOFT_RESET_CORE_RESET_MASK(2) | | ||
548 | EUR_CR_MASTER_SOFT_RESET_CORE_RESET_MASK(3); | ||
549 | |||
550 | OSWriteHWReg(psDevInfo->pvRegsBaseKM, EUR_CR_MASTER_SOFT_RESET, ui32RegVal); | ||
551 | PDUMPCOMMENTWITHFLAGS(ui32PDUMPFlags, "Soft reset hydra partition, hard reset the cores\r\n"); | ||
552 | PDUMPREGWITHFLAGS(SGX_PDUMPREG_NAME, EUR_CR_MASTER_SOFT_RESET, ui32RegVal, ui32PDUMPFlags); | ||
553 | |||
554 | SGXResetSleep(psDevInfo, ui32PDUMPFlags, IMG_TRUE); | ||
555 | |||
556 | ui32RegVal = 0; | ||
557 | OSWriteHWReg(psDevInfo->pvRegsBaseKM, EUR_CR_MASTER_BIF_CTRL, ui32RegVal); | ||
558 | PDUMPCOMMENTWITHFLAGS(ui32PDUMPFlags, "Initialise the hydra BIF control\r\n"); | ||
559 | PDUMPREGWITHFLAGS(SGX_PDUMPREG_NAME, EUR_CR_MASTER_BIF_CTRL, ui32RegVal, ui32PDUMPFlags); | ||
560 | |||
561 | #if defined(SGX_FEATURE_SYSTEM_CACHE) | ||
562 | #if defined(SGX_BYPASS_SYSTEM_CACHE) | ||
563 | #error SGX_BYPASS_SYSTEM_CACHE not supported | ||
564 | #else | ||
565 | ui32RegVal = EUR_CR_MASTER_SLC_CTRL_USSE_INVAL_REQ0_MASK | | ||
566 | #if defined(FIX_HW_BRN_30954) | ||
567 | EUR_CR_MASTER_SLC_CTRL_DISABLE_REORDERING_MASK | | ||
568 | #endif | ||
569 | (0xC << EUR_CR_MASTER_SLC_CTRL_ARB_PAGE_SIZE_SHIFT); | ||
570 | OSWriteHWReg(psDevInfo->pvRegsBaseKM, EUR_CR_MASTER_SLC_CTRL, ui32RegVal); | ||
571 | PDUMPCOMMENTWITHFLAGS(ui32PDUMPFlags, "Initialise the hydra SLC control\r\n"); | ||
572 | PDUMPREG(SGX_PDUMPREG_NAME, EUR_CR_MASTER_SLC_CTRL, ui32RegVal); | ||
573 | |||
574 | ui32RegVal = EUR_CR_MASTER_SLC_CTRL_BYPASS_BYP_CC_MASK; | ||
575 | #if defined(FIX_HW_BRN_31620) | ||
576 | ui32RegVal |= EUR_CR_MASTER_SLC_CTRL_BYPASS_REQ_MMU_MASK; | ||
577 | #endif | ||
578 | #if defined(FIX_HW_BRN_31195) | ||
579 | ui32RegVal |= EUR_CR_MASTER_SLC_CTRL_BYPASS_REQ_USE0_MASK | | ||
580 | EUR_CR_MASTER_SLC_CTRL_BYPASS_REQ_USE1_MASK | | ||
581 | EUR_CR_MASTER_SLC_CTRL_BYPASS_REQ_USE2_MASK | | ||
582 | EUR_CR_MASTER_SLC_CTRL_BYPASS_REQ_USE3_MASK | | ||
583 | EUR_CR_MASTER_SLC_CTRL_BYPASS_REQ_TA_MASK; | ||
584 | #endif | ||
585 | OSWriteHWReg(psDevInfo->pvRegsBaseKM, EUR_CR_MASTER_SLC_CTRL_BYPASS, ui32RegVal); | ||
586 | PDUMPCOMMENTWITHFLAGS(ui32PDUMPFlags, "Initialise the hydra SLC bypass control\r\n"); | ||
587 | PDUMPREG(SGX_PDUMPREG_NAME, EUR_CR_MASTER_SLC_CTRL_BYPASS, ui32RegVal); | ||
588 | #endif | ||
589 | #endif | ||
590 | |||
591 | SGXResetSleep(psDevInfo, ui32PDUMPFlags, IMG_TRUE); | ||
592 | |||
593 | |||
594 | ui32RegVal = 0; | ||
595 | OSWriteHWReg(psDevInfo->pvRegsBaseKM, EUR_CR_MASTER_SOFT_RESET, ui32RegVal); | ||
596 | PDUMPCOMMENTWITHFLAGS(ui32PDUMPFlags, "Remove the resets from all of SGX\r\n"); | ||
597 | PDUMPREGWITHFLAGS(SGX_PDUMPREG_NAME, EUR_CR_MASTER_SOFT_RESET, ui32RegVal, ui32PDUMPFlags); | ||
598 | |||
599 | SGXResetSleep(psDevInfo, ui32PDUMPFlags, IMG_TRUE); | ||
600 | |||
601 | PDUMPCOMMENTWITHFLAGS(ui32PDUMPFlags, "Turn on the slave cores' clock gating\r\n"); | ||
602 | SGXInitClocks(psDevInfo, ui32PDUMPFlags); | ||
603 | |||
604 | SGXResetSleep(psDevInfo, ui32PDUMPFlags, IMG_TRUE); | ||
605 | |||
606 | PDUMPCOMMENTWITHFLAGS(ui32PDUMPFlags, "Initialise the slave BIFs\r\n"); | ||
607 | |||
608 | #if defined(FIX_HW_BRN_31278) || defined(FIX_HW_BRN_31620) || defined(FIX_HW_BRN_31671) | ||
609 | #if defined(FIX_HW_BRN_31278) | ||
610 | |||
611 | ui32RegVal = (1<<EUR_CR_MASTER_BIF_MMU_CTRL_ADDR_HASH_MODE_SHIFT); | ||
612 | #else | ||
613 | ui32RegVal = (1<<EUR_CR_MASTER_BIF_MMU_CTRL_ADDR_HASH_MODE_SHIFT) | EUR_CR_MASTER_BIF_MMU_CTRL_PREFETCHING_ON_MASK; | ||
614 | #endif | ||
615 | #if !defined(FIX_HW_BRN_31620) && !defined(FIX_HW_BRN_31671) | ||
616 | |||
617 | ui32RegVal |= EUR_CR_MASTER_BIF_MMU_CTRL_ENABLE_DC_TLB_MASK; | ||
618 | #endif | ||
619 | |||
620 | |||
621 | OSWriteHWReg(psDevInfo->pvRegsBaseKM, EUR_CR_MASTER_BIF_MMU_CTRL, ui32RegVal); | ||
622 | PDUMPREGWITHFLAGS(SGX_PDUMPREG_NAME, EUR_CR_MASTER_BIF_MMU_CTRL, ui32RegVal, ui32PDUMPFlags); | ||
623 | |||
624 | #if defined(FIX_HW_BRN_31278) | ||
625 | |||
626 | ui32RegVal = (1<<EUR_CR_BIF_MMU_CTRL_ADDR_HASH_MODE_SHIFT); | ||
627 | #else | ||
628 | ui32RegVal = (1<<EUR_CR_BIF_MMU_CTRL_ADDR_HASH_MODE_SHIFT) | EUR_CR_BIF_MMU_CTRL_PREFETCHING_ON_MASK; | ||
629 | #endif | ||
630 | #if !defined(FIX_HW_BRN_31620) && !defined(FIX_HW_BRN_31671) | ||
631 | |||
632 | ui32RegVal |= EUR_CR_BIF_MMU_CTRL_ENABLE_DC_TLB_MASK; | ||
633 | #endif | ||
634 | |||
635 | |||
636 | { | ||
637 | IMG_UINT32 ui32Core; | ||
638 | |||
639 | for (ui32Core=0;ui32Core<SGX_FEATURE_MP_CORE_COUNT;ui32Core++) | ||
640 | { | ||
641 | OSWriteHWReg(psDevInfo->pvRegsBaseKM, SGX_MP_CORE_SELECT(EUR_CR_BIF_MMU_CTRL, ui32Core), ui32RegVal); | ||
642 | PDUMPREGWITHFLAGS(SGX_PDUMPREG_NAME, SGX_MP_CORE_SELECT(EUR_CR_BIF_MMU_CTRL, ui32Core), ui32RegVal, ui32PDUMPFlags); | ||
643 | } | ||
644 | } | ||
645 | #endif | ||
646 | |||
647 | SGXResetInitBIFContexts(psDevInfo, ui32PDUMPFlags); | ||
648 | SGXResetSetupBIFContexts(psDevInfo, ui32PDUMPFlags); | ||
649 | |||
650 | PDUMPCOMMENTWITHFLAGS(ui32PDUMPFlags, "End of SGX MP reset sequence\r\n"); | ||
651 | } | ||
652 | #endif | ||
653 | |||
510 | 654 | ||
diff --git a/drivers/gpu/pvr/sgx/sgxtransfer.c b/drivers/gpu/pvr/sgx/sgxtransfer.c index ab46ff70b27..ff738453c82 100644 --- a/drivers/gpu/pvr/sgx/sgxtransfer.c +++ b/drivers/gpu/pvr/sgx/sgxtransfer.c | |||
@@ -42,8 +42,13 @@ | |||
42 | #include "osfunc.h" | 42 | #include "osfunc.h" |
43 | #include "pvr_debug.h" | 43 | #include "pvr_debug.h" |
44 | #include "sgxutils.h" | 44 | #include "sgxutils.h" |
45 | #include "ttrace.h" | ||
45 | 46 | ||
47 | #if defined (SUPPORT_SID_INTERFACE) | ||
48 | IMG_EXPORT PVRSRV_ERROR SGXSubmitTransferKM(IMG_HANDLE hDevHandle, PVRSRV_TRANSFER_SGX_KICK_KM *psKick) | ||
49 | #else | ||
46 | IMG_EXPORT PVRSRV_ERROR SGXSubmitTransferKM(IMG_HANDLE hDevHandle, PVRSRV_TRANSFER_SGX_KICK *psKick) | 50 | IMG_EXPORT PVRSRV_ERROR SGXSubmitTransferKM(IMG_HANDLE hDevHandle, PVRSRV_TRANSFER_SGX_KICK *psKick) |
51 | #endif | ||
47 | { | 52 | { |
48 | PVRSRV_KERNEL_MEM_INFO *psCCBMemInfo = (PVRSRV_KERNEL_MEM_INFO *)psKick->hCCBMemInfo; | 53 | PVRSRV_KERNEL_MEM_INFO *psCCBMemInfo = (PVRSRV_KERNEL_MEM_INFO *)psKick->hCCBMemInfo; |
49 | SGXMKIF_COMMAND sCommand = {0}; | 54 | SGXMKIF_COMMAND sCommand = {0}; |
@@ -51,6 +56,7 @@ IMG_EXPORT PVRSRV_ERROR SGXSubmitTransferKM(IMG_HANDLE hDevHandle, PVRSRV_TRANSF | |||
51 | PVRSRV_KERNEL_SYNC_INFO *psSyncInfo; | 56 | PVRSRV_KERNEL_SYNC_INFO *psSyncInfo; |
52 | PVRSRV_ERROR eError; | 57 | PVRSRV_ERROR eError; |
53 | IMG_UINT32 loop; | 58 | IMG_UINT32 loop; |
59 | IMG_HANDLE hDevMemContext = IMG_NULL; | ||
54 | #if defined(PDUMP) | 60 | #if defined(PDUMP) |
55 | IMG_BOOL bPersistentProcess = IMG_FALSE; | 61 | IMG_BOOL bPersistentProcess = IMG_FALSE; |
56 | 62 | ||
@@ -62,20 +68,33 @@ IMG_EXPORT PVRSRV_ERROR SGXSubmitTransferKM(IMG_HANDLE hDevHandle, PVRSRV_TRANSF | |||
62 | } | 68 | } |
63 | } | 69 | } |
64 | #endif | 70 | #endif |
71 | #if defined(FIX_HW_BRN_31620) | ||
72 | hDevMemContext = psKick->hDevMemContext; | ||
73 | #endif | ||
74 | PVR_TTRACE(PVRSRV_TRACE_GROUP_TRANSFER, PVRSRV_TRACE_CLASS_FUNCTION_ENTER, TRANSFER_TOKEN_SUBMIT); | ||
65 | 75 | ||
66 | if (!CCB_OFFSET_IS_VALID(SGXMKIF_TRANSFERCMD_SHARED, psCCBMemInfo, psKick, ui32SharedCmdCCBOffset)) | 76 | if (!CCB_OFFSET_IS_VALID(SGXMKIF_TRANSFERCMD_SHARED, psCCBMemInfo, psKick, ui32SharedCmdCCBOffset)) |
67 | { | 77 | { |
68 | PVR_DPF((PVR_DBG_ERROR, "SGXSubmitTransferKM: Invalid CCB offset")); | 78 | PVR_DPF((PVR_DBG_ERROR, "SGXSubmitTransferKM: Invalid CCB offset")); |
79 | PVR_TTRACE(PVRSRV_TRACE_GROUP_TRANSFER, PVRSRV_TRACE_CLASS_FUNCTION_EXIT, | ||
80 | TRANSFER_TOKEN_SUBMIT); | ||
69 | return PVRSRV_ERROR_INVALID_PARAMS; | 81 | return PVRSRV_ERROR_INVALID_PARAMS; |
70 | } | 82 | } |
71 | 83 | ||
72 | 84 | ||
73 | psSharedTransferCmd = CCB_DATA_FROM_OFFSET(SGXMKIF_TRANSFERCMD_SHARED, psCCBMemInfo, psKick, ui32SharedCmdCCBOffset); | 85 | psSharedTransferCmd = CCB_DATA_FROM_OFFSET(SGXMKIF_TRANSFERCMD_SHARED, psCCBMemInfo, psKick, ui32SharedCmdCCBOffset); |
74 | 86 | ||
87 | PVR_TTRACE(PVRSRV_TRACE_GROUP_TRANSFER, PVRSRV_TRACE_CLASS_CMD_START, TRANSFER_TOKEN_SUBMIT); | ||
88 | PVR_TTRACE_UI32(PVRSRV_TRACE_GROUP_TRANSFER, PVRSRV_TRACE_CLASS_CCB, | ||
89 | TRANSFER_TOKEN_CCB_OFFSET, psKick->ui32SharedCmdCCBOffset); | ||
90 | |||
75 | if (psKick->hTASyncInfo != IMG_NULL) | 91 | if (psKick->hTASyncInfo != IMG_NULL) |
76 | { | 92 | { |
77 | psSyncInfo = (PVRSRV_KERNEL_SYNC_INFO *)psKick->hTASyncInfo; | 93 | psSyncInfo = (PVRSRV_KERNEL_SYNC_INFO *)psKick->hTASyncInfo; |
78 | 94 | ||
95 | PVR_TTRACE_SYNC_OBJECT(PVRSRV_TRACE_GROUP_TRANSFER, TRANSFER_TOKEN_TA_SYNC, | ||
96 | psSyncInfo, PVRSRV_SYNCOP_SAMPLE); | ||
97 | |||
79 | psSharedTransferCmd->ui32TASyncWriteOpsPendingVal = psSyncInfo->psSyncData->ui32WriteOpsPending++; | 98 | psSharedTransferCmd->ui32TASyncWriteOpsPendingVal = psSyncInfo->psSyncData->ui32WriteOpsPending++; |
80 | psSharedTransferCmd->ui32TASyncReadOpsPendingVal = psSyncInfo->psSyncData->ui32ReadOpsPending; | 99 | psSharedTransferCmd->ui32TASyncReadOpsPendingVal = psSyncInfo->psSyncData->ui32ReadOpsPending; |
81 | 100 | ||
@@ -92,6 +111,9 @@ IMG_EXPORT PVRSRV_ERROR SGXSubmitTransferKM(IMG_HANDLE hDevHandle, PVRSRV_TRANSF | |||
92 | { | 111 | { |
93 | psSyncInfo = (PVRSRV_KERNEL_SYNC_INFO *)psKick->h3DSyncInfo; | 112 | psSyncInfo = (PVRSRV_KERNEL_SYNC_INFO *)psKick->h3DSyncInfo; |
94 | 113 | ||
114 | PVR_TTRACE_SYNC_OBJECT(PVRSRV_TRACE_GROUP_TRANSFER, TRANSFER_TOKEN_3D_SYNC, | ||
115 | psSyncInfo, PVRSRV_SYNCOP_SAMPLE); | ||
116 | |||
95 | psSharedTransferCmd->ui323DSyncWriteOpsPendingVal = psSyncInfo->psSyncData->ui32WriteOpsPending++; | 117 | psSharedTransferCmd->ui323DSyncWriteOpsPendingVal = psSyncInfo->psSyncData->ui32WriteOpsPending++; |
96 | psSharedTransferCmd->ui323DSyncReadOpsPendingVal = psSyncInfo->psSyncData->ui32ReadOpsPending; | 118 | psSharedTransferCmd->ui323DSyncReadOpsPendingVal = psSyncInfo->psSyncData->ui32ReadOpsPending; |
97 | 119 | ||
@@ -112,10 +134,13 @@ IMG_EXPORT PVRSRV_ERROR SGXSubmitTransferKM(IMG_HANDLE hDevHandle, PVRSRV_TRANSF | |||
112 | { | 134 | { |
113 | psSyncInfo = (PVRSRV_KERNEL_SYNC_INFO *)psKick->ahSrcSyncInfo[loop]; | 135 | psSyncInfo = (PVRSRV_KERNEL_SYNC_INFO *)psKick->ahSrcSyncInfo[loop]; |
114 | 136 | ||
137 | PVR_TTRACE_SYNC_OBJECT(PVRSRV_TRACE_GROUP_TRANSFER, TRANSFER_TOKEN_SRC_SYNC, | ||
138 | psSyncInfo, PVRSRV_SYNCOP_SAMPLE); | ||
139 | |||
115 | psSharedTransferCmd->asSrcSyncs[loop].ui32WriteOpsPendingVal = psSyncInfo->psSyncData->ui32WriteOpsPending; | 140 | psSharedTransferCmd->asSrcSyncs[loop].ui32WriteOpsPendingVal = psSyncInfo->psSyncData->ui32WriteOpsPending; |
116 | psSharedTransferCmd->asSrcSyncs[loop].ui32ReadOpsPendingVal = psSyncInfo->psSyncData->ui32ReadOpsPending; | 141 | psSharedTransferCmd->asSrcSyncs[loop].ui32ReadOpsPendingVal = psSyncInfo->psSyncData->ui32ReadOpsPending; |
117 | 142 | ||
118 | psSharedTransferCmd->asSrcSyncs[loop].sWriteOpsCompleteDevVAddr = psSyncInfo->sWriteOpsCompleteDevVAddr; | 143 | psSharedTransferCmd->asSrcSyncs[loop].sWriteOpsCompleteDevVAddr = psSyncInfo->sWriteOpsCompleteDevVAddr; |
119 | psSharedTransferCmd->asSrcSyncs[loop].sReadOpsCompleteDevVAddr = psSyncInfo->sReadOpsCompleteDevVAddr; | 144 | psSharedTransferCmd->asSrcSyncs[loop].sReadOpsCompleteDevVAddr = psSyncInfo->sReadOpsCompleteDevVAddr; |
120 | 145 | ||
121 | } | 146 | } |
@@ -123,6 +148,9 @@ IMG_EXPORT PVRSRV_ERROR SGXSubmitTransferKM(IMG_HANDLE hDevHandle, PVRSRV_TRANSF | |||
123 | { | 148 | { |
124 | psSyncInfo = (PVRSRV_KERNEL_SYNC_INFO *)psKick->ahDstSyncInfo[loop]; | 149 | psSyncInfo = (PVRSRV_KERNEL_SYNC_INFO *)psKick->ahDstSyncInfo[loop]; |
125 | 150 | ||
151 | PVR_TTRACE_SYNC_OBJECT(PVRSRV_TRACE_GROUP_TRANSFER, TRANSFER_TOKEN_DST_SYNC, | ||
152 | psSyncInfo, PVRSRV_SYNCOP_SAMPLE); | ||
153 | |||
126 | psSharedTransferCmd->asDstSyncs[loop].ui32WriteOpsPendingVal = psSyncInfo->psSyncData->ui32WriteOpsPending; | 154 | psSharedTransferCmd->asDstSyncs[loop].ui32WriteOpsPendingVal = psSyncInfo->psSyncData->ui32WriteOpsPending; |
127 | psSharedTransferCmd->asDstSyncs[loop].ui32ReadOpsPendingVal = psSyncInfo->psSyncData->ui32ReadOpsPending; | 155 | psSharedTransferCmd->asDstSyncs[loop].ui32ReadOpsPendingVal = psSyncInfo->psSyncData->ui32ReadOpsPending; |
128 | 156 | ||
@@ -131,7 +159,7 @@ IMG_EXPORT PVRSRV_ERROR SGXSubmitTransferKM(IMG_HANDLE hDevHandle, PVRSRV_TRANSF | |||
131 | 159 | ||
132 | } | 160 | } |
133 | 161 | ||
134 | 162 | ||
135 | for (loop=0; loop<psKick->ui32NumSrcSync; loop++) | 163 | for (loop=0; loop<psKick->ui32NumSrcSync; loop++) |
136 | { | 164 | { |
137 | psSyncInfo = (PVRSRV_KERNEL_SYNC_INFO *)psKick->ahSrcSyncInfo[loop]; | 165 | psSyncInfo = (PVRSRV_KERNEL_SYNC_INFO *)psKick->ahSrcSyncInfo[loop]; |
@@ -146,7 +174,7 @@ IMG_EXPORT PVRSRV_ERROR SGXSubmitTransferKM(IMG_HANDLE hDevHandle, PVRSRV_TRANSF | |||
146 | 174 | ||
147 | #if defined(PDUMP) | 175 | #if defined(PDUMP) |
148 | if ((PDumpIsCaptureFrameKM() | 176 | if ((PDumpIsCaptureFrameKM() |
149 | || ((psKick->ui32PDumpFlags & PDUMP_FLAGS_CONTINUOUS) != 0)) | 177 | || ((psKick->ui32PDumpFlags & PDUMP_FLAGS_CONTINUOUS) != 0)) |
150 | && (bPersistentProcess == IMG_FALSE) ) | 178 | && (bPersistentProcess == IMG_FALSE) ) |
151 | { | 179 | { |
152 | PDUMPCOMMENT("Shared part of transfer command\r\n"); | 180 | PDUMPCOMMENT("Shared part of transfer command\r\n"); |
@@ -162,19 +190,19 @@ IMG_EXPORT PVRSRV_ERROR SGXSubmitTransferKM(IMG_HANDLE hDevHandle, PVRSRV_TRANSF | |||
162 | for (loop=0; loop<psKick->ui32NumSrcSync ; loop++) | 190 | for (loop=0; loop<psKick->ui32NumSrcSync ; loop++) |
163 | { | 191 | { |
164 | psSyncInfo = psKick->ahSrcSyncInfo[loop]; | 192 | psSyncInfo = psKick->ahSrcSyncInfo[loop]; |
165 | 193 | ||
166 | PDUMPCOMMENT("Hack src surface write op in transfer cmd\r\n"); | 194 | PDUMPCOMMENT("Hack src surface write op in transfer cmd\r\n"); |
167 | PDUMPMEM(&psSyncInfo->psSyncData->ui32LastOpDumpVal, | 195 | PDUMPMEM(&psSyncInfo->psSyncData->ui32LastOpDumpVal, |
168 | psCCBMemInfo, | 196 | psCCBMemInfo, |
169 | psKick->ui32CCBDumpWOff + offsetof(SGXMKIF_TRANSFERCMD_SHARED, asSrcSyncs) + loop * sizeof(PVRSRV_DEVICE_SYNC_OBJECT) + offsetof(PVRSRV_DEVICE_SYNC_OBJECT, ui32WriteOpsPendingVal), | 197 | psKick->ui32CCBDumpWOff + (IMG_UINT32)(offsetof(SGXMKIF_TRANSFERCMD_SHARED, asSrcSyncs) + loop * sizeof(PVRSRV_DEVICE_SYNC_OBJECT) + offsetof(PVRSRV_DEVICE_SYNC_OBJECT, ui32WriteOpsPendingVal)), |
170 | sizeof(psSyncInfo->psSyncData->ui32LastOpDumpVal), | 198 | sizeof(psSyncInfo->psSyncData->ui32LastOpDumpVal), |
171 | psKick->ui32PDumpFlags, | 199 | psKick->ui32PDumpFlags, |
172 | MAKEUNIQUETAG(psCCBMemInfo)); | 200 | MAKEUNIQUETAG(psCCBMemInfo)); |
173 | 201 | ||
174 | PDUMPCOMMENT("Hack src surface read op in transfer cmd\r\n"); | 202 | PDUMPCOMMENT("Hack src surface read op in transfer cmd\r\n"); |
175 | PDUMPMEM(&psSyncInfo->psSyncData->ui32LastReadOpDumpVal, | 203 | PDUMPMEM(&psSyncInfo->psSyncData->ui32LastReadOpDumpVal, |
176 | psCCBMemInfo, | 204 | psCCBMemInfo, |
177 | psKick->ui32CCBDumpWOff + offsetof(SGXMKIF_TRANSFERCMD_SHARED, asSrcSyncs) + loop * sizeof(PVRSRV_DEVICE_SYNC_OBJECT) + offsetof(PVRSRV_DEVICE_SYNC_OBJECT, ui32ReadOpsPendingVal), | 205 | psKick->ui32CCBDumpWOff + (IMG_UINT32)(offsetof(SGXMKIF_TRANSFERCMD_SHARED, asSrcSyncs) + loop * sizeof(PVRSRV_DEVICE_SYNC_OBJECT) + offsetof(PVRSRV_DEVICE_SYNC_OBJECT, ui32ReadOpsPendingVal)), |
178 | sizeof(psSyncInfo->psSyncData->ui32LastReadOpDumpVal), | 206 | sizeof(psSyncInfo->psSyncData->ui32LastReadOpDumpVal), |
179 | psKick->ui32PDumpFlags, | 207 | psKick->ui32PDumpFlags, |
180 | MAKEUNIQUETAG(psCCBMemInfo)); | 208 | MAKEUNIQUETAG(psCCBMemInfo)); |
@@ -186,11 +214,11 @@ IMG_EXPORT PVRSRV_ERROR SGXSubmitTransferKM(IMG_HANDLE hDevHandle, PVRSRV_TRANSF | |||
186 | for (loop=0; loop< psKick->ui32NumDstSync; loop++) | 214 | for (loop=0; loop< psKick->ui32NumDstSync; loop++) |
187 | { | 215 | { |
188 | psSyncInfo = psKick->ahDstSyncInfo[loop]; | 216 | psSyncInfo = psKick->ahDstSyncInfo[loop]; |
189 | 217 | ||
190 | PDUMPCOMMENT("Hack dest surface write op in transfer cmd\r\n"); | 218 | PDUMPCOMMENT("Hack dest surface write op in transfer cmd\r\n"); |
191 | PDUMPMEM(&psSyncInfo->psSyncData->ui32LastOpDumpVal, | 219 | PDUMPMEM(&psSyncInfo->psSyncData->ui32LastOpDumpVal, |
192 | psCCBMemInfo, | 220 | psCCBMemInfo, |
193 | psKick->ui32CCBDumpWOff + offsetof(SGXMKIF_TRANSFERCMD_SHARED, asDstSyncs) + loop * sizeof(PVRSRV_DEVICE_SYNC_OBJECT) + offsetof(PVRSRV_DEVICE_SYNC_OBJECT, ui32WriteOpsPendingVal) , | 221 | psKick->ui32CCBDumpWOff + (IMG_UINT32)(offsetof(SGXMKIF_TRANSFERCMD_SHARED, asDstSyncs) + loop * sizeof(PVRSRV_DEVICE_SYNC_OBJECT) + offsetof(PVRSRV_DEVICE_SYNC_OBJECT, ui32WriteOpsPendingVal)), |
194 | sizeof(psSyncInfo->psSyncData->ui32LastOpDumpVal), | 222 | sizeof(psSyncInfo->psSyncData->ui32LastOpDumpVal), |
195 | psKick->ui32PDumpFlags, | 223 | psKick->ui32PDumpFlags, |
196 | MAKEUNIQUETAG(psCCBMemInfo)); | 224 | MAKEUNIQUETAG(psCCBMemInfo)); |
@@ -198,7 +226,7 @@ IMG_EXPORT PVRSRV_ERROR SGXSubmitTransferKM(IMG_HANDLE hDevHandle, PVRSRV_TRANSF | |||
198 | PDUMPCOMMENT("Hack dest surface read op in transfer cmd\r\n"); | 226 | PDUMPCOMMENT("Hack dest surface read op in transfer cmd\r\n"); |
199 | PDUMPMEM(&psSyncInfo->psSyncData->ui32LastReadOpDumpVal, | 227 | PDUMPMEM(&psSyncInfo->psSyncData->ui32LastReadOpDumpVal, |
200 | psCCBMemInfo, | 228 | psCCBMemInfo, |
201 | psKick->ui32CCBDumpWOff + offsetof(SGXMKIF_TRANSFERCMD_SHARED, asDstSyncs) + loop * sizeof(PVRSRV_DEVICE_SYNC_OBJECT) + offsetof(PVRSRV_DEVICE_SYNC_OBJECT, ui32ReadOpsPendingVal), | 229 | psKick->ui32CCBDumpWOff + (IMG_UINT32)(offsetof(SGXMKIF_TRANSFERCMD_SHARED, asDstSyncs) + loop * sizeof(PVRSRV_DEVICE_SYNC_OBJECT) + offsetof(PVRSRV_DEVICE_SYNC_OBJECT, ui32ReadOpsPendingVal)), |
202 | sizeof(psSyncInfo->psSyncData->ui32LastReadOpDumpVal), | 230 | sizeof(psSyncInfo->psSyncData->ui32LastReadOpDumpVal), |
203 | psKick->ui32PDumpFlags, | 231 | psKick->ui32PDumpFlags, |
204 | MAKEUNIQUETAG(psCCBMemInfo)); | 232 | MAKEUNIQUETAG(psCCBMemInfo)); |
@@ -206,7 +234,7 @@ IMG_EXPORT PVRSRV_ERROR SGXSubmitTransferKM(IMG_HANDLE hDevHandle, PVRSRV_TRANSF | |||
206 | } | 234 | } |
207 | } | 235 | } |
208 | 236 | ||
209 | 237 | ||
210 | if((psKick->ui32Flags & SGXMKIF_TQFLAGS_KEEPPENDING)== 0UL) | 238 | if((psKick->ui32Flags & SGXMKIF_TQFLAGS_KEEPPENDING)== 0UL) |
211 | { | 239 | { |
212 | for (loop=0; loop<(psKick->ui32NumSrcSync); loop++) | 240 | for (loop=0; loop<(psKick->ui32NumSrcSync); loop++) |
@@ -224,16 +252,19 @@ IMG_EXPORT PVRSRV_ERROR SGXSubmitTransferKM(IMG_HANDLE hDevHandle, PVRSRV_TRANSF | |||
224 | psSyncInfo->psSyncData->ui32LastOpDumpVal++; | 252 | psSyncInfo->psSyncData->ui32LastOpDumpVal++; |
225 | } | 253 | } |
226 | } | 254 | } |
227 | } | 255 | } |
228 | #endif | 256 | #endif |
229 | 257 | ||
230 | sCommand.ui32Data[1] = psKick->sHWTransferContextDevVAddr.uiAddr; | 258 | sCommand.ui32Data[1] = psKick->sHWTransferContextDevVAddr.uiAddr; |
259 | |||
260 | PVR_TTRACE(PVRSRV_TRACE_GROUP_TRANSFER, PVRSRV_TRACE_CLASS_CMD_END, | ||
261 | TRANSFER_TOKEN_SUBMIT); | ||
231 | 262 | ||
232 | eError = SGXScheduleCCBCommandKM(hDevHandle, SGXMKIF_CMD_TRANSFER, &sCommand, KERNEL_ID, psKick->ui32PDumpFlags, IMG_FALSE); | 263 | eError = SGXScheduleCCBCommandKM(hDevHandle, SGXMKIF_CMD_TRANSFER, &sCommand, KERNEL_ID, psKick->ui32PDumpFlags, hDevMemContext, IMG_FALSE); |
233 | 264 | ||
234 | if (eError == PVRSRV_ERROR_RETRY) | 265 | if (eError == PVRSRV_ERROR_RETRY) |
235 | { | 266 | { |
236 | 267 | ||
237 | if ((psKick->ui32Flags & SGXMKIF_TQFLAGS_KEEPPENDING) == 0UL) | 268 | if ((psKick->ui32Flags & SGXMKIF_TQFLAGS_KEEPPENDING) == 0UL) |
238 | { | 269 | { |
239 | if (psKick->ui32NumSrcSync > 0) | 270 | if (psKick->ui32NumSrcSync > 0) |
@@ -264,14 +295,14 @@ IMG_EXPORT PVRSRV_ERROR SGXSubmitTransferKM(IMG_HANDLE hDevHandle, PVRSRV_TRANSF | |||
264 | #endif | 295 | #endif |
265 | } | 296 | } |
266 | 297 | ||
267 | 298 | ||
268 | if (psKick->hTASyncInfo != IMG_NULL) | 299 | if (psKick->hTASyncInfo != IMG_NULL) |
269 | { | 300 | { |
270 | psSyncInfo = (PVRSRV_KERNEL_SYNC_INFO *)psKick->hTASyncInfo; | 301 | psSyncInfo = (PVRSRV_KERNEL_SYNC_INFO *)psKick->hTASyncInfo; |
271 | psSyncInfo->psSyncData->ui32WriteOpsPending--; | 302 | psSyncInfo->psSyncData->ui32WriteOpsPending--; |
272 | } | 303 | } |
273 | 304 | ||
274 | 305 | ||
275 | if (psKick->h3DSyncInfo != IMG_NULL) | 306 | if (psKick->h3DSyncInfo != IMG_NULL) |
276 | { | 307 | { |
277 | psSyncInfo = (PVRSRV_KERNEL_SYNC_INFO *)psKick->h3DSyncInfo; | 308 | psSyncInfo = (PVRSRV_KERNEL_SYNC_INFO *)psKick->h3DSyncInfo; |
@@ -282,16 +313,18 @@ IMG_EXPORT PVRSRV_ERROR SGXSubmitTransferKM(IMG_HANDLE hDevHandle, PVRSRV_TRANSF | |||
282 | else if (PVRSRV_OK != eError) | 313 | else if (PVRSRV_OK != eError) |
283 | { | 314 | { |
284 | PVR_DPF((PVR_DBG_ERROR, "SGXSubmitTransferKM: SGXScheduleCCBCommandKM failed.")); | 315 | PVR_DPF((PVR_DBG_ERROR, "SGXSubmitTransferKM: SGXScheduleCCBCommandKM failed.")); |
316 | PVR_TTRACE(PVRSRV_TRACE_GROUP_TRANSFER, PVRSRV_TRACE_CLASS_FUNCTION_EXIT, | ||
317 | TRANSFER_TOKEN_SUBMIT); | ||
285 | return eError; | 318 | return eError; |
286 | } | 319 | } |
287 | 320 | ||
288 | 321 | ||
289 | #if defined(NO_HARDWARE) | 322 | #if defined(NO_HARDWARE) |
290 | if ((psKick->ui32Flags & SGXMKIF_TQFLAGS_NOSYNCUPDATE) == 0) | 323 | if ((psKick->ui32Flags & SGXMKIF_TQFLAGS_NOSYNCUPDATE) == 0) |
291 | { | 324 | { |
292 | IMG_UINT32 i; | 325 | IMG_UINT32 i; |
293 | 326 | ||
294 | 327 | ||
295 | for(i = 0; i < psKick->ui32NumSrcSync; i++) | 328 | for(i = 0; i < psKick->ui32NumSrcSync; i++) |
296 | { | 329 | { |
297 | psSyncInfo = (PVRSRV_KERNEL_SYNC_INFO *)psKick->ahSrcSyncInfo[i]; | 330 | psSyncInfo = (PVRSRV_KERNEL_SYNC_INFO *)psKick->ahSrcSyncInfo[i]; |
@@ -320,13 +353,18 @@ IMG_EXPORT PVRSRV_ERROR SGXSubmitTransferKM(IMG_HANDLE hDevHandle, PVRSRV_TRANSF | |||
320 | } | 353 | } |
321 | } | 354 | } |
322 | #endif | 355 | #endif |
323 | 356 | PVR_TTRACE(PVRSRV_TRACE_GROUP_TRANSFER, PVRSRV_TRACE_CLASS_FUNCTION_EXIT, | |
357 | TRANSFER_TOKEN_SUBMIT); | ||
324 | return eError; | 358 | return eError; |
325 | } | 359 | } |
326 | 360 | ||
327 | #if defined(SGX_FEATURE_2D_HARDWARE) | 361 | #if defined(SGX_FEATURE_2D_HARDWARE) |
362 | #if defined (SUPPORT_SID_INTERFACE) | ||
363 | IMG_EXPORT PVRSRV_ERROR SGXSubmit2DKM(IMG_HANDLE hDevHandle, PVRSRV_2D_SGX_KICK_KM *psKick) | ||
364 | #else | ||
328 | IMG_EXPORT PVRSRV_ERROR SGXSubmit2DKM(IMG_HANDLE hDevHandle, PVRSRV_2D_SGX_KICK *psKick) | 365 | IMG_EXPORT PVRSRV_ERROR SGXSubmit2DKM(IMG_HANDLE hDevHandle, PVRSRV_2D_SGX_KICK *psKick) |
329 | 366 | #endif | |
367 | |||
330 | { | 368 | { |
331 | PVRSRV_KERNEL_MEM_INFO *psCCBMemInfo = (PVRSRV_KERNEL_MEM_INFO *)psKick->hCCBMemInfo; | 369 | PVRSRV_KERNEL_MEM_INFO *psCCBMemInfo = (PVRSRV_KERNEL_MEM_INFO *)psKick->hCCBMemInfo; |
332 | SGXMKIF_COMMAND sCommand = {0}; | 370 | SGXMKIF_COMMAND sCommand = {0}; |
@@ -334,9 +372,10 @@ IMG_EXPORT PVRSRV_ERROR SGXSubmit2DKM(IMG_HANDLE hDevHandle, PVRSRV_2D_SGX_KICK | |||
334 | PVRSRV_KERNEL_SYNC_INFO *psSyncInfo; | 372 | PVRSRV_KERNEL_SYNC_INFO *psSyncInfo; |
335 | PVRSRV_ERROR eError; | 373 | PVRSRV_ERROR eError; |
336 | IMG_UINT32 i; | 374 | IMG_UINT32 i; |
375 | IMG_HANDLE hDevMemContext = IMG_NULL; | ||
337 | #if defined(PDUMP) | 376 | #if defined(PDUMP) |
338 | IMG_BOOL bPersistentProcess = IMG_FALSE; | 377 | IMG_BOOL bPersistentProcess = IMG_FALSE; |
339 | 378 | ||
340 | { | 379 | { |
341 | PVRSRV_PER_PROCESS_DATA* psPerProc = PVRSRVFindPerProcessData(); | 380 | PVRSRV_PER_PROCESS_DATA* psPerProc = PVRSRVFindPerProcessData(); |
342 | if(psPerProc != IMG_NULL) | 381 | if(psPerProc != IMG_NULL) |
@@ -344,6 +383,9 @@ IMG_EXPORT PVRSRV_ERROR SGXSubmit2DKM(IMG_HANDLE hDevHandle, PVRSRV_2D_SGX_KICK | |||
344 | bPersistentProcess = psPerProc->bPDumpPersistent; | 383 | bPersistentProcess = psPerProc->bPDumpPersistent; |
345 | } | 384 | } |
346 | } | 385 | } |
386 | #endif | ||
387 | #if defined(FIX_HW_BRN_31620) | ||
388 | hDevMemContext = psKick->hDevMemContext; | ||
347 | #endif | 389 | #endif |
348 | 390 | ||
349 | if (!CCB_OFFSET_IS_VALID(SGXMKIF_2DCMD_SHARED, psCCBMemInfo, psKick, ui32SharedCmdCCBOffset)) | 391 | if (!CCB_OFFSET_IS_VALID(SGXMKIF_2DCMD_SHARED, psCCBMemInfo, psKick, ui32SharedCmdCCBOffset)) |
@@ -351,13 +393,13 @@ IMG_EXPORT PVRSRV_ERROR SGXSubmit2DKM(IMG_HANDLE hDevHandle, PVRSRV_2D_SGX_KICK | |||
351 | PVR_DPF((PVR_DBG_ERROR, "SGXSubmit2DKM: Invalid CCB offset")); | 393 | PVR_DPF((PVR_DBG_ERROR, "SGXSubmit2DKM: Invalid CCB offset")); |
352 | return PVRSRV_ERROR_INVALID_PARAMS; | 394 | return PVRSRV_ERROR_INVALID_PARAMS; |
353 | } | 395 | } |
354 | 396 | ||
355 | 397 | ||
356 | ps2DCmd = CCB_DATA_FROM_OFFSET(SGXMKIF_2DCMD_SHARED, psCCBMemInfo, psKick, ui32SharedCmdCCBOffset); | 398 | ps2DCmd = CCB_DATA_FROM_OFFSET(SGXMKIF_2DCMD_SHARED, psCCBMemInfo, psKick, ui32SharedCmdCCBOffset); |
357 | 399 | ||
358 | OSMemSet(ps2DCmd, 0, sizeof(*ps2DCmd)); | 400 | OSMemSet(ps2DCmd, 0, sizeof(*ps2DCmd)); |
359 | 401 | ||
360 | 402 | ||
361 | if (psKick->hTASyncInfo != IMG_NULL) | 403 | if (psKick->hTASyncInfo != IMG_NULL) |
362 | { | 404 | { |
363 | psSyncInfo = (PVRSRV_KERNEL_SYNC_INFO *)psKick->hTASyncInfo; | 405 | psSyncInfo = (PVRSRV_KERNEL_SYNC_INFO *)psKick->hTASyncInfo; |
@@ -365,11 +407,11 @@ IMG_EXPORT PVRSRV_ERROR SGXSubmit2DKM(IMG_HANDLE hDevHandle, PVRSRV_2D_SGX_KICK | |||
365 | ps2DCmd->sTASyncData.ui32WriteOpsPendingVal = psSyncInfo->psSyncData->ui32WriteOpsPending++; | 407 | ps2DCmd->sTASyncData.ui32WriteOpsPendingVal = psSyncInfo->psSyncData->ui32WriteOpsPending++; |
366 | ps2DCmd->sTASyncData.ui32ReadOpsPendingVal = psSyncInfo->psSyncData->ui32ReadOpsPending; | 408 | ps2DCmd->sTASyncData.ui32ReadOpsPendingVal = psSyncInfo->psSyncData->ui32ReadOpsPending; |
367 | 409 | ||
368 | ps2DCmd->sTASyncData.sWriteOpsCompleteDevVAddr = psSyncInfo->sWriteOpsCompleteDevVAddr; | 410 | ps2DCmd->sTASyncData.sWriteOpsCompleteDevVAddr = psSyncInfo->sWriteOpsCompleteDevVAddr; |
369 | ps2DCmd->sTASyncData.sReadOpsCompleteDevVAddr = psSyncInfo->sReadOpsCompleteDevVAddr; | 411 | ps2DCmd->sTASyncData.sReadOpsCompleteDevVAddr = psSyncInfo->sReadOpsCompleteDevVAddr; |
370 | } | 412 | } |
371 | 413 | ||
372 | 414 | ||
373 | if (psKick->h3DSyncInfo != IMG_NULL) | 415 | if (psKick->h3DSyncInfo != IMG_NULL) |
374 | { | 416 | { |
375 | psSyncInfo = (PVRSRV_KERNEL_SYNC_INFO *)psKick->h3DSyncInfo; | 417 | psSyncInfo = (PVRSRV_KERNEL_SYNC_INFO *)psKick->h3DSyncInfo; |
@@ -381,7 +423,7 @@ IMG_EXPORT PVRSRV_ERROR SGXSubmit2DKM(IMG_HANDLE hDevHandle, PVRSRV_2D_SGX_KICK | |||
381 | ps2DCmd->s3DSyncData.sReadOpsCompleteDevVAddr = psSyncInfo->sReadOpsCompleteDevVAddr; | 423 | ps2DCmd->s3DSyncData.sReadOpsCompleteDevVAddr = psSyncInfo->sReadOpsCompleteDevVAddr; |
382 | } | 424 | } |
383 | 425 | ||
384 | 426 | ||
385 | ps2DCmd->ui32NumSrcSync = psKick->ui32NumSrcSync; | 427 | ps2DCmd->ui32NumSrcSync = psKick->ui32NumSrcSync; |
386 | for (i = 0; i < psKick->ui32NumSrcSync; i++) | 428 | for (i = 0; i < psKick->ui32NumSrcSync; i++) |
387 | { | 429 | { |
@@ -405,7 +447,7 @@ IMG_EXPORT PVRSRV_ERROR SGXSubmit2DKM(IMG_HANDLE hDevHandle, PVRSRV_2D_SGX_KICK | |||
405 | ps2DCmd->sDstSyncData.sReadOpsCompleteDevVAddr = psSyncInfo->sReadOpsCompleteDevVAddr; | 447 | ps2DCmd->sDstSyncData.sReadOpsCompleteDevVAddr = psSyncInfo->sReadOpsCompleteDevVAddr; |
406 | } | 448 | } |
407 | 449 | ||
408 | 450 | ||
409 | for (i = 0; i < psKick->ui32NumSrcSync; i++) | 451 | for (i = 0; i < psKick->ui32NumSrcSync; i++) |
410 | { | 452 | { |
411 | psSyncInfo = psKick->ahSrcSyncInfo[i]; | 453 | psSyncInfo = psKick->ahSrcSyncInfo[i]; |
@@ -423,7 +465,7 @@ IMG_EXPORT PVRSRV_ERROR SGXSubmit2DKM(IMG_HANDLE hDevHandle, PVRSRV_2D_SGX_KICK | |||
423 | || ((psKick->ui32PDumpFlags & PDUMP_FLAGS_CONTINUOUS) != 0)) | 465 | || ((psKick->ui32PDumpFlags & PDUMP_FLAGS_CONTINUOUS) != 0)) |
424 | && (bPersistentProcess == IMG_FALSE) ) | 466 | && (bPersistentProcess == IMG_FALSE) ) |
425 | { | 467 | { |
426 | 468 | ||
427 | PDUMPCOMMENT("Shared part of 2D command\r\n"); | 469 | PDUMPCOMMENT("Shared part of 2D command\r\n"); |
428 | PDUMPMEM(ps2DCmd, | 470 | PDUMPMEM(ps2DCmd, |
429 | psCCBMemInfo, | 471 | psCCBMemInfo, |
@@ -439,7 +481,7 @@ IMG_EXPORT PVRSRV_ERROR SGXSubmit2DKM(IMG_HANDLE hDevHandle, PVRSRV_2D_SGX_KICK | |||
439 | PDUMPCOMMENT("Hack src surface write op in 2D cmd\r\n"); | 481 | PDUMPCOMMENT("Hack src surface write op in 2D cmd\r\n"); |
440 | PDUMPMEM(&psSyncInfo->psSyncData->ui32LastOpDumpVal, | 482 | PDUMPMEM(&psSyncInfo->psSyncData->ui32LastOpDumpVal, |
441 | psCCBMemInfo, | 483 | psCCBMemInfo, |
442 | psKick->ui32CCBDumpWOff + offsetof(SGXMKIF_2DCMD_SHARED, sSrcSyncData[i].ui32WriteOpsPendingVal), | 484 | psKick->ui32CCBDumpWOff + (IMG_UINT32)offsetof(SGXMKIF_2DCMD_SHARED, sSrcSyncData[i].ui32WriteOpsPendingVal), |
443 | sizeof(psSyncInfo->psSyncData->ui32LastOpDumpVal), | 485 | sizeof(psSyncInfo->psSyncData->ui32LastOpDumpVal), |
444 | psKick->ui32PDumpFlags, | 486 | psKick->ui32PDumpFlags, |
445 | MAKEUNIQUETAG(psCCBMemInfo)); | 487 | MAKEUNIQUETAG(psCCBMemInfo)); |
@@ -447,7 +489,7 @@ IMG_EXPORT PVRSRV_ERROR SGXSubmit2DKM(IMG_HANDLE hDevHandle, PVRSRV_2D_SGX_KICK | |||
447 | PDUMPCOMMENT("Hack src surface read op in 2D cmd\r\n"); | 489 | PDUMPCOMMENT("Hack src surface read op in 2D cmd\r\n"); |
448 | PDUMPMEM(&psSyncInfo->psSyncData->ui32LastReadOpDumpVal, | 490 | PDUMPMEM(&psSyncInfo->psSyncData->ui32LastReadOpDumpVal, |
449 | psCCBMemInfo, | 491 | psCCBMemInfo, |
450 | psKick->ui32CCBDumpWOff + offsetof(SGXMKIF_2DCMD_SHARED, sSrcSyncData[i].ui32ReadOpsPendingVal), | 492 | psKick->ui32CCBDumpWOff + (IMG_UINT32)offsetof(SGXMKIF_2DCMD_SHARED, sSrcSyncData[i].ui32ReadOpsPendingVal), |
451 | sizeof(psSyncInfo->psSyncData->ui32LastReadOpDumpVal), | 493 | sizeof(psSyncInfo->psSyncData->ui32LastReadOpDumpVal), |
452 | psKick->ui32PDumpFlags, | 494 | psKick->ui32PDumpFlags, |
453 | MAKEUNIQUETAG(psCCBMemInfo)); | 495 | MAKEUNIQUETAG(psCCBMemInfo)); |
@@ -460,7 +502,7 @@ IMG_EXPORT PVRSRV_ERROR SGXSubmit2DKM(IMG_HANDLE hDevHandle, PVRSRV_2D_SGX_KICK | |||
460 | PDUMPCOMMENT("Hack dest surface write op in 2D cmd\r\n"); | 502 | PDUMPCOMMENT("Hack dest surface write op in 2D cmd\r\n"); |
461 | PDUMPMEM(&psSyncInfo->psSyncData->ui32LastOpDumpVal, | 503 | PDUMPMEM(&psSyncInfo->psSyncData->ui32LastOpDumpVal, |
462 | psCCBMemInfo, | 504 | psCCBMemInfo, |
463 | psKick->ui32CCBDumpWOff + offsetof(SGXMKIF_2DCMD_SHARED, sDstSyncData.ui32WriteOpsPendingVal), | 505 | psKick->ui32CCBDumpWOff + (IMG_UINT32)offsetof(SGXMKIF_2DCMD_SHARED, sDstSyncData.ui32WriteOpsPendingVal), |
464 | sizeof(psSyncInfo->psSyncData->ui32LastOpDumpVal), | 506 | sizeof(psSyncInfo->psSyncData->ui32LastOpDumpVal), |
465 | psKick->ui32PDumpFlags, | 507 | psKick->ui32PDumpFlags, |
466 | MAKEUNIQUETAG(psCCBMemInfo)); | 508 | MAKEUNIQUETAG(psCCBMemInfo)); |
@@ -468,13 +510,13 @@ IMG_EXPORT PVRSRV_ERROR SGXSubmit2DKM(IMG_HANDLE hDevHandle, PVRSRV_2D_SGX_KICK | |||
468 | PDUMPCOMMENT("Hack dest surface read op in 2D cmd\r\n"); | 510 | PDUMPCOMMENT("Hack dest surface read op in 2D cmd\r\n"); |
469 | PDUMPMEM(&psSyncInfo->psSyncData->ui32LastReadOpDumpVal, | 511 | PDUMPMEM(&psSyncInfo->psSyncData->ui32LastReadOpDumpVal, |
470 | psCCBMemInfo, | 512 | psCCBMemInfo, |
471 | psKick->ui32CCBDumpWOff + offsetof(SGXMKIF_2DCMD_SHARED, sDstSyncData.ui32ReadOpsPendingVal), | 513 | psKick->ui32CCBDumpWOff + (IMG_UINT32)offsetof(SGXMKIF_2DCMD_SHARED, sDstSyncData.ui32ReadOpsPendingVal), |
472 | sizeof(psSyncInfo->psSyncData->ui32LastReadOpDumpVal), | 514 | sizeof(psSyncInfo->psSyncData->ui32LastReadOpDumpVal), |
473 | psKick->ui32PDumpFlags, | 515 | psKick->ui32PDumpFlags, |
474 | MAKEUNIQUETAG(psCCBMemInfo)); | 516 | MAKEUNIQUETAG(psCCBMemInfo)); |
475 | } | 517 | } |
476 | 518 | ||
477 | 519 | ||
478 | for (i = 0; i < psKick->ui32NumSrcSync; i++) | 520 | for (i = 0; i < psKick->ui32NumSrcSync; i++) |
479 | { | 521 | { |
480 | psSyncInfo = psKick->ahSrcSyncInfo[i]; | 522 | psSyncInfo = psKick->ahSrcSyncInfo[i]; |
@@ -486,16 +528,16 @@ IMG_EXPORT PVRSRV_ERROR SGXSubmit2DKM(IMG_HANDLE hDevHandle, PVRSRV_2D_SGX_KICK | |||
486 | psSyncInfo = psKick->hDstSyncInfo; | 528 | psSyncInfo = psKick->hDstSyncInfo; |
487 | psSyncInfo->psSyncData->ui32LastOpDumpVal++; | 529 | psSyncInfo->psSyncData->ui32LastOpDumpVal++; |
488 | } | 530 | } |
489 | } | 531 | } |
490 | #endif | 532 | #endif |
491 | 533 | ||
492 | sCommand.ui32Data[1] = psKick->sHW2DContextDevVAddr.uiAddr; | 534 | sCommand.ui32Data[1] = psKick->sHW2DContextDevVAddr.uiAddr; |
493 | 535 | ||
494 | eError = SGXScheduleCCBCommandKM(hDevHandle, SGXMKIF_CMD_2D, &sCommand, KERNEL_ID, psKick->ui32PDumpFlags, IMG_FALSE); | 536 | eError = SGXScheduleCCBCommandKM(hDevHandle, SGXMKIF_CMD_2D, &sCommand, KERNEL_ID, psKick->ui32PDumpFlags, hDevMemContext, IMG_FALSE); |
495 | 537 | ||
496 | if (eError == PVRSRV_ERROR_RETRY) | 538 | if (eError == PVRSRV_ERROR_RETRY) |
497 | { | 539 | { |
498 | 540 | ||
499 | 541 | ||
500 | #if defined(PDUMP) | 542 | #if defined(PDUMP) |
501 | if (PDumpIsCaptureFrameKM()) | 543 | if (PDumpIsCaptureFrameKM()) |
diff --git a/drivers/gpu/pvr/sgx/sgxutils.c b/drivers/gpu/pvr/sgx/sgxutils.c index 7f640885b7f..0b205c5029f 100644 --- a/drivers/gpu/pvr/sgx/sgxutils.c +++ b/drivers/gpu/pvr/sgx/sgxutils.c | |||
@@ -40,6 +40,7 @@ | |||
40 | #include "osfunc.h" | 40 | #include "osfunc.h" |
41 | #include "pvr_debug.h" | 41 | #include "pvr_debug.h" |
42 | #include "sgxutils.h" | 42 | #include "sgxutils.h" |
43 | #include "ttrace.h" | ||
43 | 44 | ||
44 | #ifdef __linux__ | 45 | #ifdef __linux__ |
45 | #include <linux/kernel.h> | 46 | #include <linux/kernel.h> |
@@ -149,16 +150,23 @@ static INLINE SGXMKIF_COMMAND * SGXAcquireKernelCCBSlot(PVRSRV_SGX_CCB_INFO *psC | |||
149 | return IMG_NULL; | 150 | return IMG_NULL; |
150 | } | 151 | } |
151 | 152 | ||
152 | PVRSRV_ERROR SGXScheduleCCBCommand(PVRSRV_SGXDEV_INFO *psDevInfo, | 153 | PVRSRV_ERROR SGXScheduleCCBCommand(PVRSRV_DEVICE_NODE *psDeviceNode, |
153 | SGXMKIF_CMD_TYPE eCmdType, | 154 | SGXMKIF_CMD_TYPE eCmdType, |
154 | SGXMKIF_COMMAND *psCommandData, | 155 | SGXMKIF_COMMAND *psCommandData, |
155 | IMG_UINT32 ui32CallerID, | 156 | IMG_UINT32 ui32CallerID, |
156 | IMG_UINT32 ui32PDumpFlags, | 157 | IMG_UINT32 ui32PDumpFlags, |
157 | IMG_BOOL bLastInScene) | 158 | IMG_HANDLE hDevMemContext, |
159 | IMG_BOOL bLastInScene) | ||
158 | { | 160 | { |
159 | PVRSRV_SGX_CCB_INFO *psKernelCCB; | 161 | PVRSRV_SGX_CCB_INFO *psKernelCCB; |
160 | PVRSRV_ERROR eError = PVRSRV_OK; | 162 | PVRSRV_ERROR eError = PVRSRV_OK; |
161 | SGXMKIF_COMMAND *psSGXCommand; | 163 | SGXMKIF_COMMAND *psSGXCommand; |
164 | PVRSRV_SGXDEV_INFO *psDevInfo = psDeviceNode->pvDevice; | ||
165 | #if defined(FIX_HW_BRN_31620) | ||
166 | IMG_UINT32 ui32CacheMasks[4]; | ||
167 | IMG_UINT32 i; | ||
168 | MMU_CONTEXT *psMMUContext; | ||
169 | #endif | ||
162 | #if defined(PDUMP) | 170 | #if defined(PDUMP) |
163 | IMG_VOID *pvDumpCommand; | 171 | IMG_VOID *pvDumpCommand; |
164 | IMG_BOOL bPDumpIsSuspended = PDumpIsSuspended(); | 172 | IMG_BOOL bPDumpIsSuspended = PDumpIsSuspended(); |
@@ -168,12 +176,37 @@ PVRSRV_ERROR SGXScheduleCCBCommand(PVRSRV_SGXDEV_INFO *psDevInfo, | |||
168 | PVR_UNREFERENCED_PARAMETER(ui32PDumpFlags); | 176 | PVR_UNREFERENCED_PARAMETER(ui32PDumpFlags); |
169 | #endif | 177 | #endif |
170 | 178 | ||
171 | #if defined(FIX_HW_BRN_28889) | 179 | #if defined(FIX_HW_BRN_31620) |
180 | for(i=0;i<4;i++) | ||
181 | { | ||
182 | ui32CacheMasks[i] = 0; | ||
183 | } | ||
172 | 184 | ||
185 | psMMUContext = psDevInfo->hKernelMMUContext; | ||
186 | psDeviceNode->pfnMMUGetCacheFlushRange(psMMUContext, &ui32CacheMasks[0]); | ||
173 | 187 | ||
188 | |||
189 | if (hDevMemContext) | ||
190 | { | ||
191 | BM_CONTEXT *psBMContext = (BM_CONTEXT *) hDevMemContext; | ||
174 | 192 | ||
193 | psMMUContext = psBMContext->psMMUContext; | ||
194 | psDeviceNode->pfnMMUGetCacheFlushRange(psMMUContext, &ui32CacheMasks[2]); | ||
195 | } | ||
175 | 196 | ||
176 | if ( (eCmdType != SGXMKIF_CMD_PROCESS_QUEUES) && | 197 | |
198 | if (ui32CacheMasks[0] || ui32CacheMasks[1] || ui32CacheMasks[2] || ui32CacheMasks[3]) | ||
199 | { | ||
200 | psDevInfo->ui32CacheControl |= SGXMKIF_CC_INVAL_BIF_PD; | ||
201 | } | ||
202 | #endif | ||
203 | |||
204 | #if defined(FIX_HW_BRN_28889) | ||
205 | |||
206 | |||
207 | |||
208 | |||
209 | if ( (eCmdType != SGXMKIF_CMD_PROCESS_QUEUES) && | ||
177 | ((psDevInfo->ui32CacheControl & SGXMKIF_CC_INVAL_DATA) != 0) && | 210 | ((psDevInfo->ui32CacheControl & SGXMKIF_CC_INVAL_DATA) != 0) && |
178 | ((psDevInfo->ui32CacheControl & (SGXMKIF_CC_INVAL_BIF_PT | SGXMKIF_CC_INVAL_BIF_PD)) != 0)) | 211 | ((psDevInfo->ui32CacheControl & (SGXMKIF_CC_INVAL_BIF_PT | SGXMKIF_CC_INVAL_BIF_PD)) != 0)) |
179 | { | 212 | { |
@@ -183,18 +216,19 @@ PVRSRV_ERROR SGXScheduleCCBCommand(PVRSRV_SGXDEV_INFO *psDevInfo, | |||
183 | SGXMKIF_HOST_CTL *psSGXHostCtl = psDevInfo->psSGXHostCtl; | 216 | SGXMKIF_HOST_CTL *psSGXHostCtl = psDevInfo->psSGXHostCtl; |
184 | SGXMKIF_COMMAND sCacheCommand = {0}; | 217 | SGXMKIF_COMMAND sCacheCommand = {0}; |
185 | 218 | ||
186 | eError = SGXScheduleCCBCommand(psDevInfo, | 219 | eError = SGXScheduleCCBCommand(psDeviceNode, |
187 | SGXMKIF_CMD_PROCESS_QUEUES, | 220 | SGXMKIF_CMD_PROCESS_QUEUES, |
188 | &sCacheCommand, | 221 | &sCacheCommand, |
189 | ui32CallerID, | 222 | ui32CallerID, |
190 | ui32PDumpFlags, | 223 | ui32PDumpFlags, |
224 | hDevMemContext, | ||
191 | bLastInScene); | 225 | bLastInScene); |
192 | if (eError != PVRSRV_OK) | 226 | if (eError != PVRSRV_OK) |
193 | { | 227 | { |
194 | goto Exit; | 228 | goto Exit; |
195 | } | 229 | } |
196 | 230 | ||
197 | 231 | ||
198 | #if !defined(NO_HARDWARE) | 232 | #if !defined(NO_HARDWARE) |
199 | if(PollForValueKM(&psSGXHostCtl->ui32InvalStatus, | 233 | if(PollForValueKM(&psSGXHostCtl->ui32InvalStatus, |
200 | PVRSRV_USSE_EDM_BIF_INVAL_COMPLETE, | 234 | PVRSRV_USSE_EDM_BIF_INVAL_COMPLETE, |
@@ -207,9 +241,9 @@ PVRSRV_ERROR SGXScheduleCCBCommand(PVRSRV_SGXDEV_INFO *psDevInfo, | |||
207 | PVR_DBG_BREAK; | 241 | PVR_DBG_BREAK; |
208 | } | 242 | } |
209 | #endif | 243 | #endif |
210 | 244 | ||
211 | #if defined(PDUMP) | 245 | #if defined(PDUMP) |
212 | 246 | ||
213 | PDUMPCOMMENTWITHFLAGS(0, "Host Control - Poll for BIF cache invalidate request to complete"); | 247 | PDUMPCOMMENTWITHFLAGS(0, "Host Control - Poll for BIF cache invalidate request to complete"); |
214 | PDUMPMEMPOL(psSGXHostCtlMemInfo, | 248 | PDUMPMEMPOL(psSGXHostCtlMemInfo, |
215 | offsetof(SGXMKIF_HOST_CTL, ui32InvalStatus), | 249 | offsetof(SGXMKIF_HOST_CTL, ui32InvalStatus), |
@@ -218,15 +252,63 @@ PVRSRV_ERROR SGXScheduleCCBCommand(PVRSRV_SGXDEV_INFO *psDevInfo, | |||
218 | PDUMP_POLL_OPERATOR_EQUAL, | 252 | PDUMP_POLL_OPERATOR_EQUAL, |
219 | 0, | 253 | 0, |
220 | MAKEUNIQUETAG(psSGXHostCtlMemInfo)); | 254 | MAKEUNIQUETAG(psSGXHostCtlMemInfo)); |
221 | #endif | 255 | #endif |
222 | 256 | ||
223 | psSGXHostCtl->ui32InvalStatus &= ~(PVRSRV_USSE_EDM_BIF_INVAL_COMPLETE); | 257 | psSGXHostCtl->ui32InvalStatus &= ~(PVRSRV_USSE_EDM_BIF_INVAL_COMPLETE); |
224 | PDUMPMEM(IMG_NULL, psSGXHostCtlMemInfo, offsetof(SGXMKIF_HOST_CTL, ui32CleanupStatus), sizeof(IMG_UINT32), 0, MAKEUNIQUETAG(psSGXHostCtlMemInfo)); | 258 | PDUMPMEM(IMG_NULL, psSGXHostCtlMemInfo, offsetof(SGXMKIF_HOST_CTL, ui32CleanupStatus), sizeof(IMG_UINT32), 0, MAKEUNIQUETAG(psSGXHostCtlMemInfo)); |
225 | } | 259 | } |
260 | #else | ||
261 | PVR_UNREFERENCED_PARAMETER(hDevMemContext); | ||
226 | #endif | 262 | #endif |
263 | |||
264 | #if defined(FIX_HW_BRN_31620) | ||
265 | if ((eCmdType != SGXMKIF_CMD_FLUSHPDCACHE) && (psDevInfo->ui32CacheControl & SGXMKIF_CC_INVAL_BIF_PD)) | ||
266 | { | ||
267 | SGXMKIF_COMMAND sPDECacheCommand = {0}; | ||
268 | IMG_DEV_PHYADDR sDevPAddr; | ||
227 | 269 | ||
228 | #if defined(PDUMP) | 270 | |
271 | psMMUContext = psDevInfo->hKernelMMUContext; | ||
272 | |||
273 | psDeviceNode->pfnMMUGetPDPhysAddr(psMMUContext, &sDevPAddr); | ||
274 | sPDECacheCommand.ui32Data[0] = sDevPAddr.uiAddr | 1; | ||
275 | sPDECacheCommand.ui32Data[1] = ui32CacheMasks[0]; | ||
276 | sPDECacheCommand.ui32Data[2] = ui32CacheMasks[1]; | ||
277 | |||
278 | |||
279 | if (hDevMemContext) | ||
280 | { | ||
281 | BM_CONTEXT *psBMContext = (BM_CONTEXT *) hDevMemContext; | ||
229 | 282 | ||
283 | psMMUContext = psBMContext->psMMUContext; | ||
284 | |||
285 | psDeviceNode->pfnMMUGetPDPhysAddr(psMMUContext, &sDevPAddr); | ||
286 | |||
287 | sPDECacheCommand.ui32Data[3] = sDevPAddr.uiAddr | 1; | ||
288 | sPDECacheCommand.ui32Data[4] = ui32CacheMasks[2]; | ||
289 | sPDECacheCommand.ui32Data[5] = ui32CacheMasks[3]; | ||
290 | } | ||
291 | |||
292 | |||
293 | if (sPDECacheCommand.ui32Data[1] | sPDECacheCommand.ui32Data[2] | sPDECacheCommand.ui32Data[4] | | ||
294 | sPDECacheCommand.ui32Data[5]) | ||
295 | { | ||
296 | eError = SGXScheduleCCBCommand(psDeviceNode, | ||
297 | SGXMKIF_CMD_FLUSHPDCACHE, | ||
298 | &sPDECacheCommand, | ||
299 | ui32CallerID, | ||
300 | ui32PDumpFlags, | ||
301 | hDevMemContext, | ||
302 | bLastInScene); | ||
303 | if (eError != PVRSRV_OK) | ||
304 | { | ||
305 | goto Exit; | ||
306 | } | ||
307 | } | ||
308 | } | ||
309 | #endif | ||
310 | #if defined(PDUMP) | ||
311 | |||
230 | { | 312 | { |
231 | PVRSRV_PER_PROCESS_DATA* psPerProc = PVRSRVFindPerProcessData(); | 313 | PVRSRV_PER_PROCESS_DATA* psPerProc = PVRSRVFindPerProcessData(); |
232 | if(psPerProc != IMG_NULL) | 314 | if(psPerProc != IMG_NULL) |
@@ -234,44 +316,45 @@ PVRSRV_ERROR SGXScheduleCCBCommand(PVRSRV_SGXDEV_INFO *psDevInfo, | |||
234 | bPersistentProcess = psPerProc->bPDumpPersistent; | 316 | bPersistentProcess = psPerProc->bPDumpPersistent; |
235 | } | 317 | } |
236 | } | 318 | } |
237 | #endif | 319 | #endif |
238 | psKernelCCB = psDevInfo->psKernelCCBInfo; | 320 | psKernelCCB = psDevInfo->psKernelCCBInfo; |
239 | 321 | ||
240 | psSGXCommand = SGXAcquireKernelCCBSlot(psKernelCCB); | 322 | psSGXCommand = SGXAcquireKernelCCBSlot(psKernelCCB); |
241 | 323 | ||
242 | 324 | ||
243 | if(!psSGXCommand) | 325 | if(!psSGXCommand) |
244 | { | 326 | { |
327 | PVR_DPF((PVR_DBG_ERROR, "SGXScheduleCCBCommand: Wait for CCB space timed out")) ; | ||
245 | eError = PVRSRV_ERROR_TIMEOUT; | 328 | eError = PVRSRV_ERROR_TIMEOUT; |
246 | goto Exit; | 329 | goto Exit; |
247 | } | 330 | } |
248 | 331 | ||
249 | 332 | ||
250 | psCommandData->ui32CacheControl = psDevInfo->ui32CacheControl; | 333 | psCommandData->ui32CacheControl = psDevInfo->ui32CacheControl; |
251 | 334 | ||
252 | #if defined(PDUMP) | 335 | #if defined(PDUMP) |
253 | 336 | ||
254 | psDevInfo->sPDContext.ui32CacheControl |= psDevInfo->ui32CacheControl; | 337 | psDevInfo->sPDContext.ui32CacheControl |= psDevInfo->ui32CacheControl; |
255 | #endif | 338 | #endif |
256 | 339 | ||
257 | 340 | ||
258 | psDevInfo->ui32CacheControl = 0; | 341 | psDevInfo->ui32CacheControl = 0; |
259 | 342 | ||
260 | 343 | ||
261 | *psSGXCommand = *psCommandData; | 344 | *psSGXCommand = *psCommandData; |
262 | 345 | ||
263 | if (eCmdType >= SGXMKIF_CMD_MAX) | 346 | if (eCmdType >= SGXMKIF_CMD_MAX) |
264 | { | 347 | { |
265 | PVR_DPF((PVR_DBG_ERROR,"SGXScheduleCCBCommandKM: Unknown command type: %d", eCmdType)) ; | 348 | PVR_DPF((PVR_DBG_ERROR, "SGXScheduleCCBCommand: Unknown command type: %d", eCmdType)) ; |
266 | eError = PVRSRV_ERROR_INVALID_CCB_COMMAND; | 349 | eError = PVRSRV_ERROR_INVALID_CCB_COMMAND; |
267 | goto Exit; | 350 | goto Exit; |
268 | } | 351 | } |
269 | 352 | ||
270 | if((eCmdType == SGXMKIF_CMD_TA) && bLastInScene) | 353 | if ((eCmdType == SGXMKIF_CMD_TA) && bLastInScene) |
271 | { | 354 | { |
272 | SYS_DATA *psSysData; | 355 | SYS_DATA *psSysData; |
273 | 356 | ||
274 | 357 | ||
275 | SysAcquireData(&psSysData); | 358 | SysAcquireData(&psSysData); |
276 | 359 | ||
277 | if(psSysData->ePendingCacheOpType == PVRSRV_MISC_INFO_CPUCACHEOP_FLUSH) | 360 | if(psSysData->ePendingCacheOpType == PVRSRV_MISC_INFO_CPUCACHEOP_FLUSH) |
@@ -283,18 +366,18 @@ PVRSRV_ERROR SGXScheduleCCBCommand(PVRSRV_SGXDEV_INFO *psDevInfo, | |||
283 | OSCleanCPUCacheKM(); | 366 | OSCleanCPUCacheKM(); |
284 | } | 367 | } |
285 | 368 | ||
286 | 369 | ||
287 | psSysData->ePendingCacheOpType = PVRSRV_MISC_INFO_CPUCACHEOP_NONE; | 370 | psSysData->ePendingCacheOpType = PVRSRV_MISC_INFO_CPUCACHEOP_NONE; |
288 | } | 371 | } |
289 | 372 | ||
290 | PVR_ASSERT(eCmdType < SGXMKIF_CMD_MAX); | 373 | PVR_ASSERT(eCmdType < SGXMKIF_CMD_MAX); |
291 | psSGXCommand->ui32ServiceAddress = psDevInfo->aui32HostKickAddr[eCmdType]; | 374 | psSGXCommand->ui32ServiceAddress = psDevInfo->aui32HostKickAddr[eCmdType]; |
292 | 375 | ||
293 | #if defined(PDUMP) | 376 | #if defined(PDUMP) |
294 | if ((ui32CallerID != ISR_ID) && (bPDumpIsSuspended == IMG_FALSE) && | 377 | if ((ui32CallerID != ISR_ID) && (bPDumpIsSuspended == IMG_FALSE) && |
295 | (bPersistentProcess == IMG_FALSE) ) | 378 | (bPersistentProcess == IMG_FALSE) ) |
296 | { | 379 | { |
297 | 380 | ||
298 | PDUMPCOMMENTWITHFLAGS(ui32PDumpFlags, "Poll for space in the Kernel CCB\r\n"); | 381 | PDUMPCOMMENTWITHFLAGS(ui32PDumpFlags, "Poll for space in the Kernel CCB\r\n"); |
299 | PDUMPMEMPOL(psKernelCCB->psCCBCtlMemInfo, | 382 | PDUMPMEMPOL(psKernelCCB->psCCBCtlMemInfo, |
300 | offsetof(PVRSRV_SGX_CCB_CTL, ui32ReadOffset), | 383 | offsetof(PVRSRV_SGX_CCB_CTL, ui32ReadOffset), |
@@ -314,7 +397,7 @@ PVRSRV_ERROR SGXScheduleCCBCommand(PVRSRV_SGXDEV_INFO *psDevInfo, | |||
314 | ui32PDumpFlags, | 397 | ui32PDumpFlags, |
315 | MAKEUNIQUETAG(psKernelCCB->psCCBMemInfo)); | 398 | MAKEUNIQUETAG(psKernelCCB->psCCBMemInfo)); |
316 | 399 | ||
317 | 400 | ||
318 | PDUMPMEM(&psDevInfo->sPDContext.ui32CacheControl, | 401 | PDUMPMEM(&psDevInfo->sPDContext.ui32CacheControl, |
319 | psKernelCCB->psCCBMemInfo, | 402 | psKernelCCB->psCCBMemInfo, |
320 | psKernelCCB->ui32CCBDumpWOff * sizeof(SGXMKIF_COMMAND) + | 403 | psKernelCCB->ui32CCBDumpWOff * sizeof(SGXMKIF_COMMAND) + |
@@ -326,14 +409,14 @@ PVRSRV_ERROR SGXScheduleCCBCommand(PVRSRV_SGXDEV_INFO *psDevInfo, | |||
326 | if (PDumpIsCaptureFrameKM() | 409 | if (PDumpIsCaptureFrameKM() |
327 | || ((ui32PDumpFlags & PDUMP_FLAGS_CONTINUOUS) != 0)) | 410 | || ((ui32PDumpFlags & PDUMP_FLAGS_CONTINUOUS) != 0)) |
328 | { | 411 | { |
329 | 412 | ||
330 | psDevInfo->sPDContext.ui32CacheControl = 0; | 413 | psDevInfo->sPDContext.ui32CacheControl = 0; |
331 | } | 414 | } |
332 | } | 415 | } |
333 | #endif | 416 | #endif |
334 | 417 | ||
335 | #if defined(FIX_HW_BRN_26620) && defined(SGX_FEATURE_SYSTEM_CACHE) && !defined(SGX_BYPASS_SYSTEM_CACHE) | 418 | #if defined(FIX_HW_BRN_26620) && defined(SGX_FEATURE_SYSTEM_CACHE) && !defined(SGX_BYPASS_SYSTEM_CACHE) |
336 | 419 | ||
337 | eError = PollForValueKM (psKernelCCB->pui32ReadOffset, | 420 | eError = PollForValueKM (psKernelCCB->pui32ReadOffset, |
338 | *psKernelCCB->pui32WriteOffset, | 421 | *psKernelCCB->pui32WriteOffset, |
339 | 0xFF, | 422 | 0xFF, |
@@ -342,12 +425,13 @@ PVRSRV_ERROR SGXScheduleCCBCommand(PVRSRV_SGXDEV_INFO *psDevInfo, | |||
342 | IMG_FALSE); | 425 | IMG_FALSE); |
343 | if (eError != PVRSRV_OK) | 426 | if (eError != PVRSRV_OK) |
344 | { | 427 | { |
428 | PVR_DPF((PVR_DBG_ERROR, "SGXScheduleCCBCommand: Timeout waiting for previous command to be read")) ; | ||
345 | eError = PVRSRV_ERROR_TIMEOUT; | 429 | eError = PVRSRV_ERROR_TIMEOUT; |
346 | goto Exit; | 430 | goto Exit; |
347 | } | 431 | } |
348 | #endif | 432 | #endif |
349 | 433 | ||
350 | 434 | ||
351 | 435 | ||
352 | *psKernelCCB->pui32WriteOffset = (*psKernelCCB->pui32WriteOffset + 1) & 255; | 436 | *psKernelCCB->pui32WriteOffset = (*psKernelCCB->pui32WriteOffset + 1) & 255; |
353 | 437 | ||
@@ -400,6 +484,15 @@ PVRSRV_ERROR SGXScheduleCCBCommand(PVRSRV_SGXDEV_INFO *psDevInfo, | |||
400 | 484 | ||
401 | OSWriteMemoryBarrier(); | 485 | OSWriteMemoryBarrier(); |
402 | 486 | ||
487 | |||
488 | PVR_TTRACE_UI32(PVRSRV_TRACE_GROUP_MKSYNC, PVRSRV_TRACE_CLASS_NONE, | ||
489 | MKSYNC_TOKEN_KERNEL_CCB_OFFSET, *psKernelCCB->pui32WriteOffset); | ||
490 | PVR_TTRACE_UI32(PVRSRV_TRACE_GROUP_MKSYNC, PVRSRV_TRACE_CLASS_NONE, | ||
491 | MKSYNC_TOKEN_CORE_CLK, psDevInfo->ui32CoreClockSpeed); | ||
492 | PVR_TTRACE_UI32(PVRSRV_TRACE_GROUP_MKSYNC, PVRSRV_TRACE_CLASS_NONE, | ||
493 | MKSYNC_TOKEN_UKERNEL_CLK, psDevInfo->ui32uKernelTimerClock); | ||
494 | |||
495 | |||
403 | #if defined(FIX_HW_BRN_26620) && defined(SGX_FEATURE_SYSTEM_CACHE) && !defined(SGX_BYPASS_SYSTEM_CACHE) | 496 | #if defined(FIX_HW_BRN_26620) && defined(SGX_FEATURE_SYSTEM_CACHE) && !defined(SGX_BYPASS_SYSTEM_CACHE) |
404 | OSWriteHWReg(psDevInfo->pvRegsBaseKM, | 497 | OSWriteHWReg(psDevInfo->pvRegsBaseKM, |
405 | SGX_MP_CORE_SELECT(EUR_CR_EVENT_KICK2, 0), | 498 | SGX_MP_CORE_SELECT(EUR_CR_EVENT_KICK2, 0), |
@@ -413,7 +506,7 @@ PVRSRV_ERROR SGXScheduleCCBCommand(PVRSRV_SGXDEV_INFO *psDevInfo, | |||
413 | OSMemoryBarrier(); | 506 | OSMemoryBarrier(); |
414 | 507 | ||
415 | #if defined(NO_HARDWARE) | 508 | #if defined(NO_HARDWARE) |
416 | 509 | ||
417 | *psKernelCCB->pui32ReadOffset = (*psKernelCCB->pui32ReadOffset + 1) & 255; | 510 | *psKernelCCB->pui32ReadOffset = (*psKernelCCB->pui32ReadOffset + 1) & 255; |
418 | #endif | 511 | #endif |
419 | 512 | ||
@@ -427,10 +520,10 @@ PVRSRV_ERROR SGXScheduleCCBCommandKM(PVRSRV_DEVICE_NODE *psDeviceNode, | |||
427 | SGXMKIF_COMMAND *psCommandData, | 520 | SGXMKIF_COMMAND *psCommandData, |
428 | IMG_UINT32 ui32CallerID, | 521 | IMG_UINT32 ui32CallerID, |
429 | IMG_UINT32 ui32PDumpFlags, | 522 | IMG_UINT32 ui32PDumpFlags, |
523 | IMG_HANDLE hDevMemContext, | ||
430 | IMG_BOOL bLastInScene) | 524 | IMG_BOOL bLastInScene) |
431 | { | 525 | { |
432 | PVRSRV_ERROR eError; | 526 | PVRSRV_ERROR eError; |
433 | PVRSRV_SGXDEV_INFO *psDevInfo = psDeviceNode->pvDevice; | ||
434 | 527 | ||
435 | 528 | ||
436 | PDUMPSUSPEND(); | 529 | PDUMPSUSPEND(); |
@@ -474,7 +567,7 @@ PVRSRV_ERROR SGXScheduleCCBCommandKM(PVRSRV_DEVICE_NODE *psDeviceNode, | |||
474 | return eError; | 567 | return eError; |
475 | } | 568 | } |
476 | 569 | ||
477 | eError = SGXScheduleCCBCommand(psDevInfo, eCmdType, psCommandData, ui32CallerID, ui32PDumpFlags, bLastInScene); | 570 | eError = SGXScheduleCCBCommand(psDeviceNode, eCmdType, psCommandData, ui32CallerID, ui32PDumpFlags, hDevMemContext, bLastInScene); |
478 | 571 | ||
479 | PVRSRVPowerUnlock(ui32CallerID); | 572 | PVRSRVPowerUnlock(ui32CallerID); |
480 | 573 | ||
@@ -496,7 +589,7 @@ PVRSRV_ERROR SGXScheduleProcessQueuesKM(PVRSRV_DEVICE_NODE *psDeviceNode) | |||
496 | PVRSRV_ERROR eError; | 589 | PVRSRV_ERROR eError; |
497 | PVRSRV_SGXDEV_INFO *psDevInfo = psDeviceNode->pvDevice; | 590 | PVRSRV_SGXDEV_INFO *psDevInfo = psDeviceNode->pvDevice; |
498 | SGXMKIF_HOST_CTL *psHostCtl = psDevInfo->psKernelSGXHostCtlMemInfo->pvLinAddrKM; | 591 | SGXMKIF_HOST_CTL *psHostCtl = psDevInfo->psKernelSGXHostCtlMemInfo->pvLinAddrKM; |
499 | IMG_UINT32 ui32PowerStatus; | 592 | IMG_UINT32 ui32PowerStatus; |
500 | SGXMKIF_COMMAND sCommand = {0}; | 593 | SGXMKIF_COMMAND sCommand = {0}; |
501 | 594 | ||
502 | ui32PowerStatus = psHostCtl->ui32PowerStatus; | 595 | ui32PowerStatus = psHostCtl->ui32PowerStatus; |
@@ -506,7 +599,7 @@ PVRSRV_ERROR SGXScheduleProcessQueuesKM(PVRSRV_DEVICE_NODE *psDeviceNode) | |||
506 | return PVRSRV_OK; | 599 | return PVRSRV_OK; |
507 | } | 600 | } |
508 | 601 | ||
509 | eError = SGXScheduleCCBCommandKM(psDeviceNode, SGXMKIF_CMD_PROCESS_QUEUES, &sCommand, ISR_ID, 0, IMG_FALSE); | 602 | eError = SGXScheduleCCBCommandKM(psDeviceNode, SGXMKIF_CMD_PROCESS_QUEUES, &sCommand, ISR_ID, 0, IMG_NULL, IMG_FALSE); |
510 | if (eError != PVRSRV_OK) | 603 | if (eError != PVRSRV_OK) |
511 | { | 604 | { |
512 | PVR_DPF((PVR_DBG_ERROR,"SGXScheduleProcessQueuesKM failed to schedule CCB command: %u", eError)); | 605 | PVR_DPF((PVR_DBG_ERROR,"SGXScheduleProcessQueuesKM failed to schedule CCB command: %u", eError)); |
@@ -524,7 +617,11 @@ IMG_BOOL SGXIsDevicePowered(PVRSRV_DEVICE_NODE *psDeviceNode) | |||
524 | 617 | ||
525 | IMG_EXPORT | 618 | IMG_EXPORT |
526 | PVRSRV_ERROR SGXGetInternalDevInfoKM(IMG_HANDLE hDevCookie, | 619 | PVRSRV_ERROR SGXGetInternalDevInfoKM(IMG_HANDLE hDevCookie, |
620 | #if defined (SUPPORT_SID_INTERFACE) | ||
621 | SGX_INTERNAL_DEVINFO_KM *psSGXInternalDevInfo) | ||
622 | #else | ||
527 | SGX_INTERNAL_DEVINFO *psSGXInternalDevInfo) | 623 | SGX_INTERNAL_DEVINFO *psSGXInternalDevInfo) |
624 | #endif | ||
528 | { | 625 | { |
529 | PVRSRV_SGXDEV_INFO *psDevInfo = (PVRSRV_SGXDEV_INFO *)((PVRSRV_DEVICE_NODE *)hDevCookie)->pvDevice; | 626 | PVRSRV_SGXDEV_INFO *psDevInfo = (PVRSRV_SGXDEV_INFO *)((PVRSRV_DEVICE_NODE *)hDevCookie)->pvDevice; |
530 | 627 | ||
@@ -544,65 +641,58 @@ IMG_VOID SGXCleanupRequest(PVRSRV_DEVICE_NODE *psDeviceNode, | |||
544 | IMG_UINT32 ui32CleanupType) | 641 | IMG_UINT32 ui32CleanupType) |
545 | { | 642 | { |
546 | PVRSRV_ERROR eError; | 643 | PVRSRV_ERROR eError; |
547 | PVRSRV_SGXDEV_INFO *psSGXDevInfo = psDeviceNode->pvDevice; | 644 | PVRSRV_SGXDEV_INFO *psDevInfo = psDeviceNode->pvDevice; |
548 | PVRSRV_KERNEL_MEM_INFO *psSGXHostCtlMemInfo = psSGXDevInfo->psKernelSGXHostCtlMemInfo; | 645 | PVRSRV_KERNEL_MEM_INFO *psHostCtlMemInfo = psDevInfo->psKernelSGXHostCtlMemInfo; |
549 | SGXMKIF_HOST_CTL *psSGXHostCtl = psSGXHostCtlMemInfo->pvLinAddrKM; | 646 | SGXMKIF_HOST_CTL *psHostCtl = psHostCtlMemInfo->pvLinAddrKM; |
550 | 647 | ||
551 | if ((psSGXHostCtl->ui32PowerStatus & PVRSRV_USSE_EDM_POWMAN_NO_WORK) != 0) | 648 | SGXMKIF_COMMAND sCommand = {0}; |
552 | { | ||
553 | |||
554 | } | ||
555 | else | ||
556 | { | ||
557 | SGXMKIF_COMMAND sCommand = {0}; | ||
558 | |||
559 | PDUMPCOMMENTWITHFLAGS(0, "Request ukernel resouce clean-up"); | ||
560 | sCommand.ui32Data[0] = ui32CleanupType; | ||
561 | sCommand.ui32Data[1] = (psHWDataDevVAddr == IMG_NULL) ? 0 : psHWDataDevVAddr->uiAddr; | ||
562 | |||
563 | eError = SGXScheduleCCBCommandKM(psDeviceNode, SGXMKIF_CMD_CLEANUP, &sCommand, KERNEL_ID, 0, IMG_FALSE); | ||
564 | if (eError != PVRSRV_OK) | ||
565 | { | ||
566 | PVR_DPF((PVR_DBG_ERROR,"SGXCleanupRequest: Failed to submit clean-up command")); | ||
567 | PVR_DBG_BREAK; | ||
568 | } | ||
569 | 649 | ||
570 | 650 | sCommand.ui32Data[0] = ui32CleanupType; | |
571 | #if !defined(NO_HARDWARE) | 651 | sCommand.ui32Data[1] = (psHWDataDevVAddr == IMG_NULL) ? 0 : psHWDataDevVAddr->uiAddr; |
572 | if(PollForValueKM(&psSGXHostCtl->ui32CleanupStatus, | 652 | PDUMPCOMMENTWITHFLAGS(0, "Request ukernel resource clean-up, Type %u, Data 0x%X", sCommand.ui32Data[0], sCommand.ui32Data[1]); |
573 | PVRSRV_USSE_EDM_CLEANUPCMD_COMPLETE, | ||
574 | PVRSRV_USSE_EDM_CLEANUPCMD_COMPLETE, | ||
575 | 10 * MAX_HW_TIME_US, | ||
576 | 1000, | ||
577 | IMG_TRUE) != PVRSRV_OK) | ||
578 | { | ||
579 | PVR_DPF((PVR_DBG_ERROR,"SGXCleanupRequest: Wait for uKernel to clean up (%u) failed", ui32CleanupType)); | ||
580 | PVR_DBG_BREAK; | ||
581 | } | ||
582 | #endif | ||
583 | 653 | ||
584 | #if defined(PDUMP) | 654 | eError = SGXScheduleCCBCommandKM(psDeviceNode, SGXMKIF_CMD_CLEANUP, &sCommand, KERNEL_ID, 0, IMG_NULL, IMG_FALSE); |
585 | 655 | if (eError != PVRSRV_OK) | |
586 | PDUMPCOMMENTWITHFLAGS(0, "Host Control - Poll for clean-up request to complete"); | 656 | { |
587 | PDUMPMEMPOL(psSGXHostCtlMemInfo, | 657 | PVR_DPF((PVR_DBG_ERROR,"SGXCleanupRequest: Failed to submit clean-up command")); |
588 | offsetof(SGXMKIF_HOST_CTL, ui32CleanupStatus), | 658 | PVR_DBG_BREAK; |
589 | PVRSRV_USSE_EDM_CLEANUPCMD_COMPLETE, | 659 | } |
590 | PVRSRV_USSE_EDM_CLEANUPCMD_COMPLETE, | ||
591 | PDUMP_POLL_OPERATOR_EQUAL, | ||
592 | 0, | ||
593 | MAKEUNIQUETAG(psSGXHostCtlMemInfo)); | ||
594 | #endif | ||
595 | 660 | ||
596 | psSGXHostCtl->ui32CleanupStatus &= ~(PVRSRV_USSE_EDM_CLEANUPCMD_COMPLETE); | 661 | |
597 | PDUMPMEM(IMG_NULL, psSGXHostCtlMemInfo, offsetof(SGXMKIF_HOST_CTL, ui32CleanupStatus), sizeof(IMG_UINT32), 0, MAKEUNIQUETAG(psSGXHostCtlMemInfo)); | 662 | #if !defined(NO_HARDWARE) |
598 | 663 | if(PollForValueKM(&psHostCtl->ui32CleanupStatus, | |
599 | 664 | PVRSRV_USSE_EDM_CLEANUPCMD_COMPLETE, | |
600 | #if defined(SGX_FEATURE_SYSTEM_CACHE) | 665 | PVRSRV_USSE_EDM_CLEANUPCMD_COMPLETE, |
601 | psSGXDevInfo->ui32CacheControl |= (SGXMKIF_CC_INVAL_BIF_SL | SGXMKIF_CC_INVAL_DATA); | 666 | 10 * MAX_HW_TIME_US, |
602 | #else | 667 | 1000, |
603 | psSGXDevInfo->ui32CacheControl |= SGXMKIF_CC_INVAL_DATA; | 668 | IMG_TRUE) != PVRSRV_OK) |
604 | #endif | 669 | { |
670 | PVR_DPF((PVR_DBG_ERROR,"SGXCleanupRequest: Wait for uKernel to clean up (%u) failed", ui32CleanupType)); | ||
671 | PVR_DBG_BREAK; | ||
605 | } | 672 | } |
673 | #endif | ||
674 | |||
675 | #if defined(PDUMP) | ||
676 | |||
677 | PDUMPCOMMENTWITHFLAGS(0, "Host Control - Poll for clean-up request to complete"); | ||
678 | PDUMPMEMPOL(psHostCtlMemInfo, | ||
679 | offsetof(SGXMKIF_HOST_CTL, ui32CleanupStatus), | ||
680 | PVRSRV_USSE_EDM_CLEANUPCMD_COMPLETE, | ||
681 | PVRSRV_USSE_EDM_CLEANUPCMD_COMPLETE, | ||
682 | PDUMP_POLL_OPERATOR_EQUAL, | ||
683 | 0, | ||
684 | MAKEUNIQUETAG(psHostCtlMemInfo)); | ||
685 | #endif | ||
686 | |||
687 | psHostCtl->ui32CleanupStatus &= ~(PVRSRV_USSE_EDM_CLEANUPCMD_COMPLETE); | ||
688 | PDUMPMEM(IMG_NULL, psHostCtlMemInfo, offsetof(SGXMKIF_HOST_CTL, ui32CleanupStatus), sizeof(IMG_UINT32), 0, MAKEUNIQUETAG(psHostCtlMemInfo)); | ||
689 | |||
690 | |||
691 | #if defined(SGX_FEATURE_SYSTEM_CACHE) | ||
692 | psDevInfo->ui32CacheControl |= (SGXMKIF_CC_INVAL_BIF_SL | SGXMKIF_CC_INVAL_DATA); | ||
693 | #else | ||
694 | psDevInfo->ui32CacheControl |= SGXMKIF_CC_INVAL_DATA; | ||
695 | #endif | ||
606 | } | 696 | } |
607 | 697 | ||
608 | 698 | ||
@@ -1018,3 +1108,40 @@ IMG_UINT32 SGXConvertTimeStamp(PVRSRV_SGXDEV_INFO *psDevInfo, | |||
1018 | 1108 | ||
1019 | 1109 | ||
1020 | 1110 | ||
1111 | IMG_EXPORT | ||
1112 | PVRSRV_ERROR PVRSRVGetSGXRevDataKM(PVRSRV_DEVICE_NODE* psDeviceNode, IMG_UINT32 *pui32SGXCoreRev, | ||
1113 | IMG_UINT32 *pui32SGXCoreID) | ||
1114 | { | ||
1115 | PVRSRV_SGXDEV_INFO *psDevInfo = (PVRSRV_SGXDEV_INFO *)psDeviceNode->pvDevice; | ||
1116 | SGX_MISC_INFO sMiscInfo; | ||
1117 | PVRSRV_ERROR eError; | ||
1118 | |||
1119 | sMiscInfo.eRequest = SGX_MISC_INFO_REQUEST_SGXREV; | ||
1120 | eError = SGXGetMiscInfoKM(psDevInfo, &sMiscInfo, psDeviceNode, NULL); | ||
1121 | |||
1122 | *pui32SGXCoreRev = sMiscInfo.uData.sSGXFeatures.ui32CoreRev; | ||
1123 | *pui32SGXCoreID = sMiscInfo.uData.sSGXFeatures.ui32CoreID; | ||
1124 | return eError; | ||
1125 | } | ||
1126 | |||
1127 | |||
1128 | PVRSRV_ERROR SGXContextSuspend(PVRSRV_DEVICE_NODE *psDeviceNode, | ||
1129 | IMG_DEV_VIRTADDR *psHWContextDevVAddr, | ||
1130 | IMG_BOOL bResume) | ||
1131 | { | ||
1132 | PVRSRV_ERROR eError; | ||
1133 | SGXMKIF_COMMAND sCommand = {0}; | ||
1134 | |||
1135 | sCommand.ui32Data[0] = psHWContextDevVAddr->uiAddr; | ||
1136 | sCommand.ui32Data[1] = bResume ? PVRSRV_CTXSUSPCMD_RESUME : PVRSRV_CTXSUSPCMD_SUSPEND; | ||
1137 | |||
1138 | eError = SGXScheduleCCBCommandKM(psDeviceNode, SGXMKIF_CMD_CONTEXTSUSPEND, &sCommand, KERNEL_ID, 0, IMG_NULL, IMG_FALSE); | ||
1139 | if (eError != PVRSRV_OK) | ||
1140 | { | ||
1141 | PVR_DPF((PVR_DBG_ERROR,"SGXContextSuspend: Failed to submit context suspend command")); | ||
1142 | return eError; | ||
1143 | } | ||
1144 | |||
1145 | return eError; | ||
1146 | } | ||
1147 | |||
diff --git a/drivers/gpu/pvr/sgx/sgxutils.h b/drivers/gpu/pvr/sgx/sgxutils.h index ef03e4f3454..51e8696547f 100644 --- a/drivers/gpu/pvr/sgx/sgxutils.h +++ b/drivers/gpu/pvr/sgx/sgxutils.h | |||
@@ -27,10 +27,10 @@ | |||
27 | #include "perproc.h" | 27 | #include "perproc.h" |
28 | #include "sgxinfokm.h" | 28 | #include "sgxinfokm.h" |
29 | 29 | ||
30 | 30 | ||
31 | #define CCB_OFFSET_IS_VALID(type, psCCBMemInfo, psCCBKick, offset) \ | 31 | #define CCB_OFFSET_IS_VALID(type, psCCBMemInfo, psCCBKick, offset) \ |
32 | ((sizeof(type) <= (psCCBMemInfo)->ui32AllocSize) && \ | 32 | ((sizeof(type) <= (psCCBMemInfo)->uAllocSize) && \ |
33 | ((psCCBKick)->offset <= (psCCBMemInfo)->ui32AllocSize - sizeof(type))) | 33 | ((psCCBKick)->offset <= (psCCBMemInfo)->uAllocSize - sizeof(type))) |
34 | 34 | ||
35 | #define CCB_DATA_FROM_OFFSET(type, psCCBMemInfo, psCCBKick, offset) \ | 35 | #define CCB_DATA_FROM_OFFSET(type, psCCBMemInfo, psCCBKick, offset) \ |
36 | ((type *)(((IMG_CHAR *)(psCCBMemInfo)->pvLinAddrKM) + \ | 36 | ((type *)(((IMG_CHAR *)(psCCBMemInfo)->pvLinAddrKM) + \ |
@@ -42,18 +42,20 @@ IMG_VOID SGXTestActivePowerEvent(PVRSRV_DEVICE_NODE *psDeviceNode, | |||
42 | IMG_UINT32 ui32CallerID); | 42 | IMG_UINT32 ui32CallerID); |
43 | 43 | ||
44 | IMG_IMPORT | 44 | IMG_IMPORT |
45 | PVRSRV_ERROR SGXScheduleCCBCommand(PVRSRV_SGXDEV_INFO *psDevInfo, | 45 | PVRSRV_ERROR SGXScheduleCCBCommand(PVRSRV_DEVICE_NODE *psDeviceNode, |
46 | SGXMKIF_CMD_TYPE eCommandType, | 46 | SGXMKIF_CMD_TYPE eCommandType, |
47 | SGXMKIF_COMMAND *psCommandData, | 47 | SGXMKIF_COMMAND *psCommandData, |
48 | IMG_UINT32 ui32CallerID, | 48 | IMG_UINT32 ui32CallerID, |
49 | IMG_UINT32 ui32PDumpFlags, | 49 | IMG_UINT32 ui32PDumpFlags, |
50 | IMG_BOOL bLastInScene); | 50 | IMG_HANDLE hDevMemContext, |
51 | IMG_BOOL bLastInScene); | ||
51 | IMG_IMPORT | 52 | IMG_IMPORT |
52 | PVRSRV_ERROR SGXScheduleCCBCommandKM(PVRSRV_DEVICE_NODE *psDeviceNode, | 53 | PVRSRV_ERROR SGXScheduleCCBCommandKM(PVRSRV_DEVICE_NODE *psDeviceNode, |
53 | SGXMKIF_CMD_TYPE eCommandType, | 54 | SGXMKIF_CMD_TYPE eCommandType, |
54 | SGXMKIF_COMMAND *psCommandData, | 55 | SGXMKIF_COMMAND *psCommandData, |
55 | IMG_UINT32 ui32CallerID, | 56 | IMG_UINT32 ui32CallerID, |
56 | IMG_UINT32 ui32PDumpFlags, | 57 | IMG_UINT32 ui32PDumpFlags, |
58 | IMG_HANDLE hDevMemContext, | ||
57 | IMG_BOOL bLastInScene); | 59 | IMG_BOOL bLastInScene); |
58 | 60 | ||
59 | IMG_IMPORT | 61 | IMG_IMPORT |
@@ -99,4 +101,11 @@ IMG_VOID SGXCleanupRequest(PVRSRV_DEVICE_NODE *psDeviceNode, | |||
99 | IMG_DEV_VIRTADDR *psHWDataDevVAddr, | 101 | IMG_DEV_VIRTADDR *psHWDataDevVAddr, |
100 | IMG_UINT32 ui32CleanupType); | 102 | IMG_UINT32 ui32CleanupType); |
101 | 103 | ||
104 | IMG_IMPORT | ||
105 | PVRSRV_ERROR PVRSRVGetSGXRevDataKM(PVRSRV_DEVICE_NODE* psDeviceNode, IMG_UINT32 *pui32SGXCoreRev, | ||
106 | IMG_UINT32 *pui32SGXCoreID); | ||
107 | |||
108 | PVRSRV_ERROR SGXContextSuspend(PVRSRV_DEVICE_NODE *psDeviceNode, | ||
109 | IMG_DEV_VIRTADDR *psHWContextDevVAddr, | ||
110 | IMG_BOOL bResume); | ||
102 | 111 | ||
diff --git a/drivers/gpu/pvr/sgx531defs.h b/drivers/gpu/pvr/sgx531defs.h new file mode 100644 index 00000000000..b0c663c2be7 --- /dev/null +++ b/drivers/gpu/pvr/sgx531defs.h | |||
@@ -0,0 +1,544 @@ | |||
1 | /********************************************************************** | ||
2 | * | ||
3 | * Copyright(c) 2008 Imagination Technologies Ltd. All rights reserved. | ||
4 | * | ||
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. | ||
8 | * | ||
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. | ||
13 | * | ||
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. | ||
17 | * | ||
18 | * The full GNU General Public License is included in this distribution in | ||
19 | * the file called "COPYING". | ||
20 | * | ||
21 | * Contact Information: | ||
22 | * Imagination Technologies Ltd. <gpl-support@imgtec.com> | ||
23 | * Home Park Estate, Kings Langley, Herts, WD4 8LZ, UK | ||
24 | * | ||
25 | ******************************************************************************/ | ||
26 | |||
27 | #ifndef _SGX531DEFS_KM_H_ | ||
28 | #define _SGX531DEFS_KM_H_ | ||
29 | |||
30 | #define EUR_CR_CLKGATECTL 0x0000 | ||
31 | #define EUR_CR_CLKGATECTL_ISP_CLKG_MASK 0x00000003U | ||
32 | #define EUR_CR_CLKGATECTL_ISP_CLKG_SHIFT 0 | ||
33 | #define EUR_CR_CLKGATECTL_ISP2_CLKG_MASK 0x0000000CU | ||
34 | #define EUR_CR_CLKGATECTL_ISP2_CLKG_SHIFT 2 | ||
35 | #define EUR_CR_CLKGATECTL_TSP_CLKG_MASK 0x00000030U | ||
36 | #define EUR_CR_CLKGATECTL_TSP_CLKG_SHIFT 4 | ||
37 | #define EUR_CR_CLKGATECTL_TE_CLKG_MASK 0x000000C0U | ||
38 | #define EUR_CR_CLKGATECTL_TE_CLKG_SHIFT 6 | ||
39 | #define EUR_CR_CLKGATECTL_MTE_CLKG_MASK 0x00000300U | ||
40 | #define EUR_CR_CLKGATECTL_MTE_CLKG_SHIFT 8 | ||
41 | #define EUR_CR_CLKGATECTL_DPM_CLKG_MASK 0x00000C00U | ||
42 | #define EUR_CR_CLKGATECTL_DPM_CLKG_SHIFT 10 | ||
43 | #define EUR_CR_CLKGATECTL_VDM_CLKG_MASK 0x00003000U | ||
44 | #define EUR_CR_CLKGATECTL_VDM_CLKG_SHIFT 12 | ||
45 | #define EUR_CR_CLKGATECTL_PDS_CLKG_MASK 0x0000C000U | ||
46 | #define EUR_CR_CLKGATECTL_PDS_CLKG_SHIFT 14 | ||
47 | #define EUR_CR_CLKGATECTL_IDXFIFO_CLKG_MASK 0x00030000U | ||
48 | #define EUR_CR_CLKGATECTL_IDXFIFO_CLKG_SHIFT 16 | ||
49 | #define EUR_CR_CLKGATECTL_TA_CLKG_MASK 0x000C0000U | ||
50 | #define EUR_CR_CLKGATECTL_TA_CLKG_SHIFT 18 | ||
51 | #define EUR_CR_CLKGATECTL_AUTO_MAN_REG_MASK 0x01000000U | ||
52 | #define EUR_CR_CLKGATECTL_AUTO_MAN_REG_SHIFT 24 | ||
53 | #define EUR_CR_CLKGATECTL_SYSTEM_CLKG_MASK 0x10000000U | ||
54 | #define EUR_CR_CLKGATECTL_SYSTEM_CLKG_SHIFT 28 | ||
55 | #define EUR_CR_CLKGATECTL2 0x0004 | ||
56 | #define EUR_CR_CLKGATECTL2_PBE_CLKG_MASK 0x00000003U | ||
57 | #define EUR_CR_CLKGATECTL2_PBE_CLKG_SHIFT 0 | ||
58 | #define EUR_CR_CLKGATECTL2_CACHEL2_CLKG_MASK 0x0000000CU | ||
59 | #define EUR_CR_CLKGATECTL2_CACHEL2_CLKG_SHIFT 2 | ||
60 | #define EUR_CR_CLKGATECTL2_UCACHEL2_CLKG_MASK 0x00000030U | ||
61 | #define EUR_CR_CLKGATECTL2_UCACHEL2_CLKG_SHIFT 4 | ||
62 | #define EUR_CR_CLKGATECTL2_USE0_CLKG_MASK 0x000000C0U | ||
63 | #define EUR_CR_CLKGATECTL2_USE0_CLKG_SHIFT 6 | ||
64 | #define EUR_CR_CLKGATECTL2_ITR0_CLKG_MASK 0x00000300U | ||
65 | #define EUR_CR_CLKGATECTL2_ITR0_CLKG_SHIFT 8 | ||
66 | #define EUR_CR_CLKGATECTL2_TEX0_CLKG_MASK 0x00000C00U | ||
67 | #define EUR_CR_CLKGATECTL2_TEX0_CLKG_SHIFT 10 | ||
68 | #define EUR_CR_CLKGATECTL2_MADD0_CLKG_MASK 0x00003000U | ||
69 | #define EUR_CR_CLKGATECTL2_MADD0_CLKG_SHIFT 12 | ||
70 | #define EUR_CR_CLKGATECTL2_USE1_CLKG_MASK 0x0000C000U | ||
71 | #define EUR_CR_CLKGATECTL2_USE1_CLKG_SHIFT 14 | ||
72 | #define EUR_CR_CLKGATECTL2_ITR1_CLKG_MASK 0x00030000U | ||
73 | #define EUR_CR_CLKGATECTL2_ITR1_CLKG_SHIFT 16 | ||
74 | #define EUR_CR_CLKGATECTL2_TEX1_CLKG_MASK 0x000C0000U | ||
75 | #define EUR_CR_CLKGATECTL2_TEX1_CLKG_SHIFT 18 | ||
76 | #define EUR_CR_CLKGATECTL2_MADD1_CLKG_MASK 0x00300000U | ||
77 | #define EUR_CR_CLKGATECTL2_MADD1_CLKG_SHIFT 20 | ||
78 | #define EUR_CR_CLKGATESTATUS 0x0008 | ||
79 | #define EUR_CR_CLKGATESTATUS_ISP_CLKS_MASK 0x00000001U | ||
80 | #define EUR_CR_CLKGATESTATUS_ISP_CLKS_SHIFT 0 | ||
81 | #define EUR_CR_CLKGATESTATUS_ISP2_CLKS_MASK 0x00000002U | ||
82 | #define EUR_CR_CLKGATESTATUS_ISP2_CLKS_SHIFT 1 | ||
83 | #define EUR_CR_CLKGATESTATUS_TSP_CLKS_MASK 0x00000004U | ||
84 | #define EUR_CR_CLKGATESTATUS_TSP_CLKS_SHIFT 2 | ||
85 | #define EUR_CR_CLKGATESTATUS_TE_CLKS_MASK 0x00000008U | ||
86 | #define EUR_CR_CLKGATESTATUS_TE_CLKS_SHIFT 3 | ||
87 | #define EUR_CR_CLKGATESTATUS_MTE_CLKS_MASK 0x00000010U | ||
88 | #define EUR_CR_CLKGATESTATUS_MTE_CLKS_SHIFT 4 | ||
89 | #define EUR_CR_CLKGATESTATUS_DPM_CLKS_MASK 0x00000020U | ||
90 | #define EUR_CR_CLKGATESTATUS_DPM_CLKS_SHIFT 5 | ||
91 | #define EUR_CR_CLKGATESTATUS_VDM_CLKS_MASK 0x00000040U | ||
92 | #define EUR_CR_CLKGATESTATUS_VDM_CLKS_SHIFT 6 | ||
93 | #define EUR_CR_CLKGATESTATUS_PDS_CLKS_MASK 0x00000080U | ||
94 | #define EUR_CR_CLKGATESTATUS_PDS_CLKS_SHIFT 7 | ||
95 | #define EUR_CR_CLKGATESTATUS_PBE_CLKS_MASK 0x00000100U | ||
96 | #define EUR_CR_CLKGATESTATUS_PBE_CLKS_SHIFT 8 | ||
97 | #define EUR_CR_CLKGATESTATUS_CACHEL2_CLKS_MASK 0x00000200U | ||
98 | #define EUR_CR_CLKGATESTATUS_CACHEL2_CLKS_SHIFT 9 | ||
99 | #define EUR_CR_CLKGATESTATUS_UCACHEL2_CLKS_MASK 0x00000400U | ||
100 | #define EUR_CR_CLKGATESTATUS_UCACHEL2_CLKS_SHIFT 10 | ||
101 | #define EUR_CR_CLKGATESTATUS_USE0_CLKS_MASK 0x00000800U | ||
102 | #define EUR_CR_CLKGATESTATUS_USE0_CLKS_SHIFT 11 | ||
103 | #define EUR_CR_CLKGATESTATUS_ITR0_CLKS_MASK 0x00001000U | ||
104 | #define EUR_CR_CLKGATESTATUS_ITR0_CLKS_SHIFT 12 | ||
105 | #define EUR_CR_CLKGATESTATUS_TEX0_CLKS_MASK 0x00002000U | ||
106 | #define EUR_CR_CLKGATESTATUS_TEX0_CLKS_SHIFT 13 | ||
107 | #define EUR_CR_CLKGATESTATUS_MADD0_CLKS_MASK 0x00004000U | ||
108 | #define EUR_CR_CLKGATESTATUS_MADD0_CLKS_SHIFT 14 | ||
109 | #define EUR_CR_CLKGATESTATUS_USE1_CLKS_MASK 0x00008000U | ||
110 | #define EUR_CR_CLKGATESTATUS_USE1_CLKS_SHIFT 15 | ||
111 | #define EUR_CR_CLKGATESTATUS_ITR1_CLKS_MASK 0x00010000U | ||
112 | #define EUR_CR_CLKGATESTATUS_ITR1_CLKS_SHIFT 16 | ||
113 | #define EUR_CR_CLKGATESTATUS_TEX1_CLKS_MASK 0x00020000U | ||
114 | #define EUR_CR_CLKGATESTATUS_TEX1_CLKS_SHIFT 17 | ||
115 | #define EUR_CR_CLKGATESTATUS_MADD1_CLKS_MASK 0x00040000U | ||
116 | #define EUR_CR_CLKGATESTATUS_MADD1_CLKS_SHIFT 18 | ||
117 | #define EUR_CR_CLKGATESTATUS_IDXFIFO_CLKS_MASK 0x00080000U | ||
118 | #define EUR_CR_CLKGATESTATUS_IDXFIFO_CLKS_SHIFT 19 | ||
119 | #define EUR_CR_CLKGATESTATUS_TA_CLKS_MASK 0x00100000U | ||
120 | #define EUR_CR_CLKGATESTATUS_TA_CLKS_SHIFT 20 | ||
121 | #define EUR_CR_CLKGATECTLOVR 0x000C | ||
122 | #define EUR_CR_CLKGATECTLOVR_ISP_CLKO_MASK 0x00000003U | ||
123 | #define EUR_CR_CLKGATECTLOVR_ISP_CLKO_SHIFT 0 | ||
124 | #define EUR_CR_CLKGATECTLOVR_ISP2_CLKO_MASK 0x0000000CU | ||
125 | #define EUR_CR_CLKGATECTLOVR_ISP2_CLKO_SHIFT 2 | ||
126 | #define EUR_CR_CLKGATECTLOVR_TSP_CLKO_MASK 0x00000030U | ||
127 | #define EUR_CR_CLKGATECTLOVR_TSP_CLKO_SHIFT 4 | ||
128 | #define EUR_CR_CLKGATECTLOVR_TE_CLKO_MASK 0x000000C0U | ||
129 | #define EUR_CR_CLKGATECTLOVR_TE_CLKO_SHIFT 6 | ||
130 | #define EUR_CR_CLKGATECTLOVR_MTE_CLKO_MASK 0x00000300U | ||
131 | #define EUR_CR_CLKGATECTLOVR_MTE_CLKO_SHIFT 8 | ||
132 | #define EUR_CR_CLKGATECTLOVR_DPM_CLKO_MASK 0x00000C00U | ||
133 | #define EUR_CR_CLKGATECTLOVR_DPM_CLKO_SHIFT 10 | ||
134 | #define EUR_CR_CLKGATECTLOVR_VDM_CLKO_MASK 0x00003000U | ||
135 | #define EUR_CR_CLKGATECTLOVR_VDM_CLKO_SHIFT 12 | ||
136 | #define EUR_CR_CLKGATECTLOVR_PDS_CLKO_MASK 0x0000C000U | ||
137 | #define EUR_CR_CLKGATECTLOVR_PDS_CLKO_SHIFT 14 | ||
138 | #define EUR_CR_CLKGATECTLOVR_IDXFIFO_CLKO_MASK 0x00030000U | ||
139 | #define EUR_CR_CLKGATECTLOVR_IDXFIFO_CLKO_SHIFT 16 | ||
140 | #define EUR_CR_CLKGATECTLOVR_TA_CLKO_MASK 0x000C0000U | ||
141 | #define EUR_CR_CLKGATECTLOVR_TA_CLKO_SHIFT 18 | ||
142 | #define EUR_CR_CORE_ID 0x0020 | ||
143 | #define EUR_CR_CORE_ID_CONFIG_MASK 0x0000FFFFU | ||
144 | #define EUR_CR_CORE_ID_CONFIG_SHIFT 0 | ||
145 | #define EUR_CR_CORE_ID_ID_MASK 0xFFFF0000U | ||
146 | #define EUR_CR_CORE_ID_ID_SHIFT 16 | ||
147 | #define EUR_CR_CORE_REVISION 0x0024 | ||
148 | #define EUR_CR_CORE_REVISION_MAINTENANCE_MASK 0x000000FFU | ||
149 | #define EUR_CR_CORE_REVISION_MAINTENANCE_SHIFT 0 | ||
150 | #define EUR_CR_CORE_REVISION_MINOR_MASK 0x0000FF00U | ||
151 | #define EUR_CR_CORE_REVISION_MINOR_SHIFT 8 | ||
152 | #define EUR_CR_CORE_REVISION_MAJOR_MASK 0x00FF0000U | ||
153 | #define EUR_CR_CORE_REVISION_MAJOR_SHIFT 16 | ||
154 | #define EUR_CR_CORE_REVISION_DESIGNER_MASK 0xFF000000U | ||
155 | #define EUR_CR_CORE_REVISION_DESIGNER_SHIFT 24 | ||
156 | #define EUR_CR_DESIGNER_REV_FIELD1 0x0028 | ||
157 | #define EUR_CR_DESIGNER_REV_FIELD1_DESIGNER_REV_FIELD1_MASK 0xFFFFFFFFU | ||
158 | #define EUR_CR_DESIGNER_REV_FIELD1_DESIGNER_REV_FIELD1_SHIFT 0 | ||
159 | #define EUR_CR_DESIGNER_REV_FIELD2 0x002C | ||
160 | #define EUR_CR_DESIGNER_REV_FIELD2_DESIGNER_REV_FIELD2_MASK 0xFFFFFFFFU | ||
161 | #define EUR_CR_DESIGNER_REV_FIELD2_DESIGNER_REV_FIELD2_SHIFT 0 | ||
162 | #define EUR_CR_SOFT_RESET 0x0080 | ||
163 | #define EUR_CR_SOFT_RESET_BIF_RESET_MASK 0x00000001U | ||
164 | #define EUR_CR_SOFT_RESET_BIF_RESET_SHIFT 0 | ||
165 | #define EUR_CR_SOFT_RESET_VDM_RESET_MASK 0x00000002U | ||
166 | #define EUR_CR_SOFT_RESET_VDM_RESET_SHIFT 1 | ||
167 | #define EUR_CR_SOFT_RESET_DPM_RESET_MASK 0x00000004U | ||
168 | #define EUR_CR_SOFT_RESET_DPM_RESET_SHIFT 2 | ||
169 | #define EUR_CR_SOFT_RESET_TE_RESET_MASK 0x00000008U | ||
170 | #define EUR_CR_SOFT_RESET_TE_RESET_SHIFT 3 | ||
171 | #define EUR_CR_SOFT_RESET_MTE_RESET_MASK 0x00000010U | ||
172 | #define EUR_CR_SOFT_RESET_MTE_RESET_SHIFT 4 | ||
173 | #define EUR_CR_SOFT_RESET_ISP_RESET_MASK 0x00000020U | ||
174 | #define EUR_CR_SOFT_RESET_ISP_RESET_SHIFT 5 | ||
175 | #define EUR_CR_SOFT_RESET_ISP2_RESET_MASK 0x00000040U | ||
176 | #define EUR_CR_SOFT_RESET_ISP2_RESET_SHIFT 6 | ||
177 | #define EUR_CR_SOFT_RESET_TSP_RESET_MASK 0x00000080U | ||
178 | #define EUR_CR_SOFT_RESET_TSP_RESET_SHIFT 7 | ||
179 | #define EUR_CR_SOFT_RESET_PDS_RESET_MASK 0x00000100U | ||
180 | #define EUR_CR_SOFT_RESET_PDS_RESET_SHIFT 8 | ||
181 | #define EUR_CR_SOFT_RESET_PBE_RESET_MASK 0x00000200U | ||
182 | #define EUR_CR_SOFT_RESET_PBE_RESET_SHIFT 9 | ||
183 | #define EUR_CR_SOFT_RESET_CACHEL2_RESET_MASK 0x00000400U | ||
184 | #define EUR_CR_SOFT_RESET_CACHEL2_RESET_SHIFT 10 | ||
185 | #define EUR_CR_SOFT_RESET_UCACHEL2_RESET_MASK 0x00000800U | ||
186 | #define EUR_CR_SOFT_RESET_UCACHEL2_RESET_SHIFT 11 | ||
187 | #define EUR_CR_SOFT_RESET_MADD_RESET_MASK 0x00001000U | ||
188 | #define EUR_CR_SOFT_RESET_MADD_RESET_SHIFT 12 | ||
189 | #define EUR_CR_SOFT_RESET_ITR_RESET_MASK 0x00002000U | ||
190 | #define EUR_CR_SOFT_RESET_ITR_RESET_SHIFT 13 | ||
191 | #define EUR_CR_SOFT_RESET_TEX_RESET_MASK 0x00004000U | ||
192 | #define EUR_CR_SOFT_RESET_TEX_RESET_SHIFT 14 | ||
193 | #define EUR_CR_SOFT_RESET_USE_RESET_MASK 0x00008000U | ||
194 | #define EUR_CR_SOFT_RESET_USE_RESET_SHIFT 15 | ||
195 | #define EUR_CR_SOFT_RESET_IDXFIFO_RESET_MASK 0x00010000U | ||
196 | #define EUR_CR_SOFT_RESET_IDXFIFO_RESET_SHIFT 16 | ||
197 | #define EUR_CR_SOFT_RESET_TA_RESET_MASK 0x00020000U | ||
198 | #define EUR_CR_SOFT_RESET_TA_RESET_SHIFT 17 | ||
199 | #define EUR_CR_EVENT_HOST_ENABLE2 0x0110 | ||
200 | #define EUR_CR_EVENT_HOST_ENABLE2_TRIG_TA_MASK 0x00000010U | ||
201 | #define EUR_CR_EVENT_HOST_ENABLE2_TRIG_TA_SHIFT 4 | ||
202 | #define EUR_CR_EVENT_HOST_ENABLE2_TRIG_3D_MASK 0x00000008U | ||
203 | #define EUR_CR_EVENT_HOST_ENABLE2_TRIG_3D_SHIFT 3 | ||
204 | #define EUR_CR_EVENT_HOST_ENABLE2_TRIG_DL_MASK 0x00000004U | ||
205 | #define EUR_CR_EVENT_HOST_ENABLE2_TRIG_DL_SHIFT 2 | ||
206 | #define EUR_CR_EVENT_HOST_ENABLE2_DPM_3D_FREE_LOAD_MASK 0x00000002U | ||
207 | #define EUR_CR_EVENT_HOST_ENABLE2_DPM_3D_FREE_LOAD_SHIFT 1 | ||
208 | #define EUR_CR_EVENT_HOST_ENABLE2_DPM_TA_FREE_LOAD_MASK 0x00000001U | ||
209 | #define EUR_CR_EVENT_HOST_ENABLE2_DPM_TA_FREE_LOAD_SHIFT 0 | ||
210 | #define EUR_CR_EVENT_HOST_CLEAR2 0x0114 | ||
211 | #define EUR_CR_EVENT_HOST_CLEAR2_TRIG_TA_MASK 0x00000010U | ||
212 | #define EUR_CR_EVENT_HOST_CLEAR2_TRIG_TA_SHIFT 4 | ||
213 | #define EUR_CR_EVENT_HOST_CLEAR2_TRIG_3D_MASK 0x00000008U | ||
214 | #define EUR_CR_EVENT_HOST_CLEAR2_TRIG_3D_SHIFT 3 | ||
215 | #define EUR_CR_EVENT_HOST_CLEAR2_TRIG_DL_MASK 0x00000004U | ||
216 | #define EUR_CR_EVENT_HOST_CLEAR2_TRIG_DL_SHIFT 2 | ||
217 | #define EUR_CR_EVENT_HOST_CLEAR2_DPM_3D_FREE_LOAD_MASK 0x00000002U | ||
218 | #define EUR_CR_EVENT_HOST_CLEAR2_DPM_3D_FREE_LOAD_SHIFT 1 | ||
219 | #define EUR_CR_EVENT_HOST_CLEAR2_DPM_TA_FREE_LOAD_MASK 0x00000001U | ||
220 | #define EUR_CR_EVENT_HOST_CLEAR2_DPM_TA_FREE_LOAD_SHIFT 0 | ||
221 | #define EUR_CR_EVENT_STATUS2 0x0118 | ||
222 | #define EUR_CR_EVENT_STATUS2_TRIG_TA_MASK 0x00000010U | ||
223 | #define EUR_CR_EVENT_STATUS2_TRIG_TA_SHIFT 4 | ||
224 | #define EUR_CR_EVENT_STATUS2_TRIG_3D_MASK 0x00000008U | ||
225 | #define EUR_CR_EVENT_STATUS2_TRIG_3D_SHIFT 3 | ||
226 | #define EUR_CR_EVENT_STATUS2_TRIG_DL_MASK 0x00000004U | ||
227 | #define EUR_CR_EVENT_STATUS2_TRIG_DL_SHIFT 2 | ||
228 | #define EUR_CR_EVENT_STATUS2_DPM_3D_FREE_LOAD_MASK 0x00000002U | ||
229 | #define EUR_CR_EVENT_STATUS2_DPM_3D_FREE_LOAD_SHIFT 1 | ||
230 | #define EUR_CR_EVENT_STATUS2_DPM_TA_FREE_LOAD_MASK 0x00000001U | ||
231 | #define EUR_CR_EVENT_STATUS2_DPM_TA_FREE_LOAD_SHIFT 0 | ||
232 | #define EUR_CR_EVENT_STATUS 0x012CU | ||
233 | #define EUR_CR_EVENT_STATUS_MASTER_INTERRUPT_MASK 0x80000000U | ||
234 | #define EUR_CR_EVENT_STATUS_MASTER_INTERRUPT_SHIFT 31 | ||
235 | #define EUR_CR_EVENT_STATUS_TIMER_MASK 0x20000000U | ||
236 | #define EUR_CR_EVENT_STATUS_TIMER_SHIFT 29 | ||
237 | #define EUR_CR_EVENT_STATUS_TA_DPM_FAULT_MASK 0x10000000U | ||
238 | #define EUR_CR_EVENT_STATUS_TA_DPM_FAULT_SHIFT 28 | ||
239 | #define EUR_CR_EVENT_STATUS_TWOD_COMPLETE_MASK 0x08000000U | ||
240 | #define EUR_CR_EVENT_STATUS_TWOD_COMPLETE_SHIFT 27 | ||
241 | #define EUR_CR_EVENT_STATUS_MADD_CACHE_INVALCOMPLETE_MASK 0x04000000U | ||
242 | #define EUR_CR_EVENT_STATUS_MADD_CACHE_INVALCOMPLETE_SHIFT 26 | ||
243 | #define EUR_CR_EVENT_STATUS_DPM_OUT_OF_MEMORY_ZLS_MASK 0x02000000U | ||
244 | #define EUR_CR_EVENT_STATUS_DPM_OUT_OF_MEMORY_ZLS_SHIFT 25 | ||
245 | #define EUR_CR_EVENT_STATUS_DPM_TA_MEM_FREE_MASK 0x01000000U | ||
246 | #define EUR_CR_EVENT_STATUS_DPM_TA_MEM_FREE_SHIFT 24 | ||
247 | #define EUR_CR_EVENT_STATUS_ISP_END_TILE_MASK 0x00800000U | ||
248 | #define EUR_CR_EVENT_STATUS_ISP_END_TILE_SHIFT 23 | ||
249 | #define EUR_CR_EVENT_STATUS_DPM_INITEND_MASK 0x00400000U | ||
250 | #define EUR_CR_EVENT_STATUS_DPM_INITEND_SHIFT 22 | ||
251 | #define EUR_CR_EVENT_STATUS_OTPM_LOADED_MASK 0x00200000U | ||
252 | #define EUR_CR_EVENT_STATUS_OTPM_LOADED_SHIFT 21 | ||
253 | #define EUR_CR_EVENT_STATUS_OTPM_INV_MASK 0x00100000U | ||
254 | #define EUR_CR_EVENT_STATUS_OTPM_INV_SHIFT 20 | ||
255 | #define EUR_CR_EVENT_STATUS_OTPM_FLUSHED_MASK 0x00080000U | ||
256 | #define EUR_CR_EVENT_STATUS_OTPM_FLUSHED_SHIFT 19 | ||
257 | #define EUR_CR_EVENT_STATUS_PIXELBE_END_RENDER_MASK 0x00040000U | ||
258 | #define EUR_CR_EVENT_STATUS_PIXELBE_END_RENDER_SHIFT 18 | ||
259 | #define EUR_CR_EVENT_STATUS_ISP_HALT_MASK 0x00020000U | ||
260 | #define EUR_CR_EVENT_STATUS_ISP_HALT_SHIFT 17 | ||
261 | #define EUR_CR_EVENT_STATUS_ISP_VISIBILITY_FAIL_MASK 0x00010000U | ||
262 | #define EUR_CR_EVENT_STATUS_ISP_VISIBILITY_FAIL_SHIFT 16 | ||
263 | #define EUR_CR_EVENT_STATUS_BREAKPOINT_MASK 0x00008000U | ||
264 | #define EUR_CR_EVENT_STATUS_BREAKPOINT_SHIFT 15 | ||
265 | #define EUR_CR_EVENT_STATUS_SW_EVENT_MASK 0x00004000U | ||
266 | #define EUR_CR_EVENT_STATUS_SW_EVENT_SHIFT 14 | ||
267 | #define EUR_CR_EVENT_STATUS_TA_FINISHED_MASK 0x00002000U | ||
268 | #define EUR_CR_EVENT_STATUS_TA_FINISHED_SHIFT 13 | ||
269 | #define EUR_CR_EVENT_STATUS_TA_TERMINATE_MASK 0x00001000U | ||
270 | #define EUR_CR_EVENT_STATUS_TA_TERMINATE_SHIFT 12 | ||
271 | #define EUR_CR_EVENT_STATUS_TPC_CLEAR_MASK 0x00000800U | ||
272 | #define EUR_CR_EVENT_STATUS_TPC_CLEAR_SHIFT 11 | ||
273 | #define EUR_CR_EVENT_STATUS_TPC_FLUSH_MASK 0x00000400U | ||
274 | #define EUR_CR_EVENT_STATUS_TPC_FLUSH_SHIFT 10 | ||
275 | #define EUR_CR_EVENT_STATUS_DPM_CONTROL_CLEAR_MASK 0x00000200U | ||
276 | #define EUR_CR_EVENT_STATUS_DPM_CONTROL_CLEAR_SHIFT 9 | ||
277 | #define EUR_CR_EVENT_STATUS_DPM_CONTROL_LOAD_MASK 0x00000100U | ||
278 | #define EUR_CR_EVENT_STATUS_DPM_CONTROL_LOAD_SHIFT 8 | ||
279 | #define EUR_CR_EVENT_STATUS_DPM_CONTROL_STORE_MASK 0x00000080U | ||
280 | #define EUR_CR_EVENT_STATUS_DPM_CONTROL_STORE_SHIFT 7 | ||
281 | #define EUR_CR_EVENT_STATUS_DPM_STATE_CLEAR_MASK 0x00000040U | ||
282 | #define EUR_CR_EVENT_STATUS_DPM_STATE_CLEAR_SHIFT 6 | ||
283 | #define EUR_CR_EVENT_STATUS_DPM_STATE_LOAD_MASK 0x00000020U | ||
284 | #define EUR_CR_EVENT_STATUS_DPM_STATE_LOAD_SHIFT 5 | ||
285 | #define EUR_CR_EVENT_STATUS_DPM_STATE_STORE_MASK 0x00000010U | ||
286 | #define EUR_CR_EVENT_STATUS_DPM_STATE_STORE_SHIFT 4 | ||
287 | #define EUR_CR_EVENT_STATUS_DPM_REACHED_MEM_THRESH_MASK 0x00000008U | ||
288 | #define EUR_CR_EVENT_STATUS_DPM_REACHED_MEM_THRESH_SHIFT 3 | ||
289 | #define EUR_CR_EVENT_STATUS_DPM_OUT_OF_MEMORY_GBL_MASK 0x00000004U | ||
290 | #define EUR_CR_EVENT_STATUS_DPM_OUT_OF_MEMORY_GBL_SHIFT 2 | ||
291 | #define EUR_CR_EVENT_STATUS_DPM_OUT_OF_MEMORY_MT_MASK 0x00000002U | ||
292 | #define EUR_CR_EVENT_STATUS_DPM_OUT_OF_MEMORY_MT_SHIFT 1 | ||
293 | #define EUR_CR_EVENT_STATUS_DPM_3D_MEM_FREE_MASK 0x00000001U | ||
294 | #define EUR_CR_EVENT_STATUS_DPM_3D_MEM_FREE_SHIFT 0 | ||
295 | #define EUR_CR_EVENT_HOST_ENABLE 0x0130 | ||
296 | #define EUR_CR_EVENT_HOST_ENABLE_MASTER_INTERRUPT_MASK 0x80000000U | ||
297 | #define EUR_CR_EVENT_HOST_ENABLE_MASTER_INTERRUPT_SHIFT 31 | ||
298 | #define EUR_CR_EVENT_HOST_ENABLE_TIMER_MASK 0x20000000U | ||
299 | #define EUR_CR_EVENT_HOST_ENABLE_TIMER_SHIFT 29 | ||
300 | #define EUR_CR_EVENT_HOST_ENABLE_TA_DPM_FAULT_MASK 0x10000000U | ||
301 | #define EUR_CR_EVENT_HOST_ENABLE_TA_DPM_FAULT_SHIFT 28 | ||
302 | #define EUR_CR_EVENT_HOST_ENABLE_TWOD_COMPLETE_MASK 0x08000000U | ||
303 | #define EUR_CR_EVENT_HOST_ENABLE_TWOD_COMPLETE_SHIFT 27 | ||
304 | #define EUR_CR_EVENT_HOST_ENABLE_MADD_CACHE_INVALCOMPLETE_MASK 0x04000000U | ||
305 | #define EUR_CR_EVENT_HOST_ENABLE_MADD_CACHE_INVALCOMPLETE_SHIFT 26 | ||
306 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_OUT_OF_MEMORY_ZLS_MASK 0x02000000U | ||
307 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_OUT_OF_MEMORY_ZLS_SHIFT 25 | ||
308 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_TA_MEM_FREE_MASK 0x01000000U | ||
309 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_TA_MEM_FREE_SHIFT 24 | ||
310 | #define EUR_CR_EVENT_HOST_ENABLE_ISP_END_TILE_MASK 0x00800000U | ||
311 | #define EUR_CR_EVENT_HOST_ENABLE_ISP_END_TILE_SHIFT 23 | ||
312 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_INITEND_MASK 0x00400000U | ||
313 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_INITEND_SHIFT 22 | ||
314 | #define EUR_CR_EVENT_HOST_ENABLE_OTPM_LOADED_MASK 0x00200000U | ||
315 | #define EUR_CR_EVENT_HOST_ENABLE_OTPM_LOADED_SHIFT 21 | ||
316 | #define EUR_CR_EVENT_HOST_ENABLE_OTPM_INV_MASK 0x00100000U | ||
317 | #define EUR_CR_EVENT_HOST_ENABLE_OTPM_INV_SHIFT 20 | ||
318 | #define EUR_CR_EVENT_HOST_ENABLE_OTPM_FLUSHED_MASK 0x00080000U | ||
319 | #define EUR_CR_EVENT_HOST_ENABLE_OTPM_FLUSHED_SHIFT 19 | ||
320 | #define EUR_CR_EVENT_HOST_ENABLE_PIXELBE_END_RENDER_MASK 0x00040000U | ||
321 | #define EUR_CR_EVENT_HOST_ENABLE_PIXELBE_END_RENDER_SHIFT 18 | ||
322 | #define EUR_CR_EVENT_HOST_ENABLE_ISP_HALT_MASK 0x00020000U | ||
323 | #define EUR_CR_EVENT_HOST_ENABLE_ISP_HALT_SHIFT 17 | ||
324 | #define EUR_CR_EVENT_HOST_ENABLE_ISP_VISIBILITY_FAIL_MASK 0x00010000U | ||
325 | #define EUR_CR_EVENT_HOST_ENABLE_ISP_VISIBILITY_FAIL_SHIFT 16 | ||
326 | #define EUR_CR_EVENT_HOST_ENABLE_BREAKPOINT_MASK 0x00008000U | ||
327 | #define EUR_CR_EVENT_HOST_ENABLE_BREAKPOINT_SHIFT 15 | ||
328 | #define EUR_CR_EVENT_HOST_ENABLE_SW_EVENT_MASK 0x00004000U | ||
329 | #define EUR_CR_EVENT_HOST_ENABLE_SW_EVENT_SHIFT 14 | ||
330 | #define EUR_CR_EVENT_HOST_ENABLE_TA_FINISHED_MASK 0x00002000U | ||
331 | #define EUR_CR_EVENT_HOST_ENABLE_TA_FINISHED_SHIFT 13 | ||
332 | #define EUR_CR_EVENT_HOST_ENABLE_TA_TERMINATE_MASK 0x00001000U | ||
333 | #define EUR_CR_EVENT_HOST_ENABLE_TA_TERMINATE_SHIFT 12 | ||
334 | #define EUR_CR_EVENT_HOST_ENABLE_TPC_CLEAR_MASK 0x00000800U | ||
335 | #define EUR_CR_EVENT_HOST_ENABLE_TPC_CLEAR_SHIFT 11 | ||
336 | #define EUR_CR_EVENT_HOST_ENABLE_TPC_FLUSH_MASK 0x00000400U | ||
337 | #define EUR_CR_EVENT_HOST_ENABLE_TPC_FLUSH_SHIFT 10 | ||
338 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_CONTROL_CLEAR_MASK 0x00000200U | ||
339 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_CONTROL_CLEAR_SHIFT 9 | ||
340 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_CONTROL_LOAD_MASK 0x00000100U | ||
341 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_CONTROL_LOAD_SHIFT 8 | ||
342 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_CONTROL_STORE_MASK 0x00000080U | ||
343 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_CONTROL_STORE_SHIFT 7 | ||
344 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_STATE_CLEAR_MASK 0x00000040U | ||
345 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_STATE_CLEAR_SHIFT 6 | ||
346 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_STATE_LOAD_MASK 0x00000020U | ||
347 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_STATE_LOAD_SHIFT 5 | ||
348 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_STATE_STORE_MASK 0x00000010U | ||
349 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_STATE_STORE_SHIFT 4 | ||
350 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_REACHED_MEM_THRESH_MASK 0x00000008U | ||
351 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_REACHED_MEM_THRESH_SHIFT 3 | ||
352 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_OUT_OF_MEMORY_GBL_MASK 0x00000004U | ||
353 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_OUT_OF_MEMORY_GBL_SHIFT 2 | ||
354 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_OUT_OF_MEMORY_MT_MASK 0x00000002U | ||
355 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_OUT_OF_MEMORY_MT_SHIFT 1 | ||
356 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_3D_MEM_FREE_MASK 0x00000001U | ||
357 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_3D_MEM_FREE_SHIFT 0 | ||
358 | #define EUR_CR_EVENT_HOST_CLEAR 0x0134 | ||
359 | #define EUR_CR_EVENT_HOST_CLEAR_MASTER_INTERRUPT_MASK 0x80000000U | ||
360 | #define EUR_CR_EVENT_HOST_CLEAR_MASTER_INTERRUPT_SHIFT 31 | ||
361 | #define EUR_CR_EVENT_HOST_CLEAR_TIMER_MASK 0x20000000U | ||
362 | #define EUR_CR_EVENT_HOST_CLEAR_TIMER_SHIFT 29 | ||
363 | #define EUR_CR_EVENT_HOST_CLEAR_TA_DPM_FAULT_MASK 0x10000000U | ||
364 | #define EUR_CR_EVENT_HOST_CLEAR_TA_DPM_FAULT_SHIFT 28 | ||
365 | #define EUR_CR_EVENT_HOST_CLEAR_TWOD_COMPLETE_MASK 0x08000000U | ||
366 | #define EUR_CR_EVENT_HOST_CLEAR_TWOD_COMPLETE_SHIFT 27 | ||
367 | #define EUR_CR_EVENT_HOST_CLEAR_MADD_CACHE_INVALCOMPLETE_MASK 0x04000000U | ||
368 | #define EUR_CR_EVENT_HOST_CLEAR_MADD_CACHE_INVALCOMPLETE_SHIFT 26 | ||
369 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_OUT_OF_MEMORY_ZLS_MASK 0x02000000U | ||
370 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_OUT_OF_MEMORY_ZLS_SHIFT 25 | ||
371 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_TA_MEM_FREE_MASK 0x01000000U | ||
372 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_TA_MEM_FREE_SHIFT 24 | ||
373 | #define EUR_CR_EVENT_HOST_CLEAR_ISP_END_TILE_MASK 0x00800000U | ||
374 | #define EUR_CR_EVENT_HOST_CLEAR_ISP_END_TILE_SHIFT 23 | ||
375 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_INITEND_MASK 0x00400000U | ||
376 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_INITEND_SHIFT 22 | ||
377 | #define EUR_CR_EVENT_HOST_CLEAR_OTPM_LOADED_MASK 0x00200000U | ||
378 | #define EUR_CR_EVENT_HOST_CLEAR_OTPM_LOADED_SHIFT 21 | ||
379 | #define EUR_CR_EVENT_HOST_CLEAR_OTPM_INV_MASK 0x00100000U | ||
380 | #define EUR_CR_EVENT_HOST_CLEAR_OTPM_INV_SHIFT 20 | ||
381 | #define EUR_CR_EVENT_HOST_CLEAR_OTPM_FLUSHED_MASK 0x00080000U | ||
382 | #define EUR_CR_EVENT_HOST_CLEAR_OTPM_FLUSHED_SHIFT 19 | ||
383 | #define EUR_CR_EVENT_HOST_CLEAR_PIXELBE_END_RENDER_MASK 0x00040000U | ||
384 | #define EUR_CR_EVENT_HOST_CLEAR_PIXELBE_END_RENDER_SHIFT 18 | ||
385 | #define EUR_CR_EVENT_HOST_CLEAR_ISP_HALT_MASK 0x00020000U | ||
386 | #define EUR_CR_EVENT_HOST_CLEAR_ISP_HALT_SHIFT 17 | ||
387 | #define EUR_CR_EVENT_HOST_CLEAR_ISP_VISIBILITY_FAIL_MASK 0x00010000U | ||
388 | #define EUR_CR_EVENT_HOST_CLEAR_ISP_VISIBILITY_FAIL_SHIFT 16 | ||
389 | #define EUR_CR_EVENT_HOST_CLEAR_BREAKPOINT_MASK 0x00008000U | ||
390 | #define EUR_CR_EVENT_HOST_CLEAR_BREAKPOINT_SHIFT 15 | ||
391 | #define EUR_CR_EVENT_HOST_CLEAR_SW_EVENT_MASK 0x00004000U | ||
392 | #define EUR_CR_EVENT_HOST_CLEAR_SW_EVENT_SHIFT 14 | ||
393 | #define EUR_CR_EVENT_HOST_CLEAR_TA_FINISHED_MASK 0x00002000U | ||
394 | #define EUR_CR_EVENT_HOST_CLEAR_TA_FINISHED_SHIFT 13 | ||
395 | #define EUR_CR_EVENT_HOST_CLEAR_TA_TERMINATE_MASK 0x00001000U | ||
396 | #define EUR_CR_EVENT_HOST_CLEAR_TA_TERMINATE_SHIFT 12 | ||
397 | #define EUR_CR_EVENT_HOST_CLEAR_TPC_CLEAR_MASK 0x00000800U | ||
398 | #define EUR_CR_EVENT_HOST_CLEAR_TPC_CLEAR_SHIFT 11 | ||
399 | #define EUR_CR_EVENT_HOST_CLEAR_TPC_FLUSH_MASK 0x00000400U | ||
400 | #define EUR_CR_EVENT_HOST_CLEAR_TPC_FLUSH_SHIFT 10 | ||
401 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_CONTROL_CLEAR_MASK 0x00000200U | ||
402 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_CONTROL_CLEAR_SHIFT 9 | ||
403 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_CONTROL_LOAD_MASK 0x00000100U | ||
404 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_CONTROL_LOAD_SHIFT 8 | ||
405 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_CONTROL_STORE_MASK 0x00000080U | ||
406 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_CONTROL_STORE_SHIFT 7 | ||
407 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_STATE_CLEAR_MASK 0x00000040U | ||
408 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_STATE_CLEAR_SHIFT 6 | ||
409 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_STATE_LOAD_MASK 0x00000020U | ||
410 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_STATE_LOAD_SHIFT 5 | ||
411 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_STATE_STORE_MASK 0x00000010U | ||
412 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_STATE_STORE_SHIFT 4 | ||
413 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_REACHED_MEM_THRESH_MASK 0x00000008U | ||
414 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_REACHED_MEM_THRESH_SHIFT 3 | ||
415 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_OUT_OF_MEMORY_GBL_MASK 0x00000004U | ||
416 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_OUT_OF_MEMORY_GBL_SHIFT 2 | ||
417 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_OUT_OF_MEMORY_MT_MASK 0x00000002U | ||
418 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_OUT_OF_MEMORY_MT_SHIFT 1 | ||
419 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_3D_MEM_FREE_MASK 0x00000001U | ||
420 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_3D_MEM_FREE_SHIFT 0 | ||
421 | #define EUR_CR_TIMER 0x0144 | ||
422 | #define EUR_CR_TIMER_VALUE_MASK 0xFFFFFFFFU | ||
423 | #define EUR_CR_TIMER_VALUE_SHIFT 0 | ||
424 | #define EUR_CR_EVENT_KICK1 0x0AB0 | ||
425 | #define EUR_CR_EVENT_KICK1_NOW_MASK 0x000000FFU | ||
426 | #define EUR_CR_EVENT_KICK1_NOW_SHIFT 0 | ||
427 | #define EUR_CR_PDS_EXEC_BASE 0x0AB8 | ||
428 | #define EUR_CR_PDS_EXEC_BASE_ADDR_MASK 0x0FF00000U | ||
429 | #define EUR_CR_PDS_EXEC_BASE_ADDR_SHIFT 20 | ||
430 | #define EUR_CR_EVENT_KICK2 0x0AC0 | ||
431 | #define EUR_CR_EVENT_KICK2_NOW_MASK 0x00000001U | ||
432 | #define EUR_CR_EVENT_KICK2_NOW_SHIFT 0 | ||
433 | #define EUR_CR_EVENT_KICKER 0x0AC4 | ||
434 | #define EUR_CR_EVENT_KICKER_ADDRESS_MASK 0x0FFFFFF0U | ||
435 | #define EUR_CR_EVENT_KICKER_ADDRESS_SHIFT 4 | ||
436 | #define EUR_CR_EVENT_KICK 0x0AC8 | ||
437 | #define EUR_CR_EVENT_KICK_NOW_MASK 0x00000001U | ||
438 | #define EUR_CR_EVENT_KICK_NOW_SHIFT 0 | ||
439 | #define EUR_CR_EVENT_TIMER 0x0ACC | ||
440 | #define EUR_CR_EVENT_TIMER_ENABLE_MASK 0x01000000U | ||
441 | #define EUR_CR_EVENT_TIMER_ENABLE_SHIFT 24 | ||
442 | #define EUR_CR_EVENT_TIMER_VALUE_MASK 0x00FFFFFFU | ||
443 | #define EUR_CR_EVENT_TIMER_VALUE_SHIFT 0 | ||
444 | #define EUR_CR_PDS_INV0 0x0AD0 | ||
445 | #define EUR_CR_PDS_INV0_DSC_MASK 0x00000001U | ||
446 | #define EUR_CR_PDS_INV0_DSC_SHIFT 0 | ||
447 | #define EUR_CR_PDS_INV1 0x0AD4 | ||
448 | #define EUR_CR_PDS_INV1_DSC_MASK 0x00000001U | ||
449 | #define EUR_CR_PDS_INV1_DSC_SHIFT 0 | ||
450 | #define EUR_CR_EVENT_KICK3 0x0AD8 | ||
451 | #define EUR_CR_EVENT_KICK3_NOW_MASK 0x00000001U | ||
452 | #define EUR_CR_EVENT_KICK3_NOW_SHIFT 0 | ||
453 | #define EUR_CR_PDS_INV3 0x0ADC | ||
454 | #define EUR_CR_PDS_INV3_DSC_MASK 0x00000001U | ||
455 | #define EUR_CR_PDS_INV3_DSC_SHIFT 0 | ||
456 | #define EUR_CR_PDS_INV_CSC 0x0AE0 | ||
457 | #define EUR_CR_PDS_INV_CSC_KICK_MASK 0x00000001U | ||
458 | #define EUR_CR_PDS_INV_CSC_KICK_SHIFT 0 | ||
459 | #define EUR_CR_PDS_PC_BASE 0x0B2C | ||
460 | #define EUR_CR_PDS_PC_BASE_ADDRESS_MASK 0x00FFFFFFU | ||
461 | #define EUR_CR_PDS_PC_BASE_ADDRESS_SHIFT 0 | ||
462 | #define EUR_CR_BIF_CTRL 0x0C00 | ||
463 | #define EUR_CR_BIF_CTRL_NOREORDER_MASK 0x00000001U | ||
464 | #define EUR_CR_BIF_CTRL_NOREORDER_SHIFT 0 | ||
465 | #define EUR_CR_BIF_CTRL_PAUSE_MASK 0x00000002U | ||
466 | #define EUR_CR_BIF_CTRL_PAUSE_SHIFT 1 | ||
467 | #define EUR_CR_BIF_CTRL_FLUSH_MASK 0x00000004U | ||
468 | #define EUR_CR_BIF_CTRL_FLUSH_SHIFT 2 | ||
469 | #define EUR_CR_BIF_CTRL_INVALDC_MASK 0x00000008U | ||
470 | #define EUR_CR_BIF_CTRL_INVALDC_SHIFT 3 | ||
471 | #define EUR_CR_BIF_CTRL_CLEAR_FAULT_MASK 0x00000010U | ||
472 | #define EUR_CR_BIF_CTRL_CLEAR_FAULT_SHIFT 4 | ||
473 | #define EUR_CR_BIF_CTRL_MMU_BYPASS_CACHE_MASK 0x00000100U | ||
474 | #define EUR_CR_BIF_CTRL_MMU_BYPASS_CACHE_SHIFT 8 | ||
475 | #define EUR_CR_BIF_CTRL_MMU_BYPASS_VDM_MASK 0x00000200U | ||
476 | #define EUR_CR_BIF_CTRL_MMU_BYPASS_VDM_SHIFT 9 | ||
477 | #define EUR_CR_BIF_CTRL_MMU_BYPASS_TE_MASK 0x00000400U | ||
478 | #define EUR_CR_BIF_CTRL_MMU_BYPASS_TE_SHIFT 10 | ||
479 | #define EUR_CR_BIF_CTRL_MMU_BYPASS_PBE_MASK 0x00001000U | ||
480 | #define EUR_CR_BIF_CTRL_MMU_BYPASS_PBE_SHIFT 12 | ||
481 | #define EUR_CR_BIF_CTRL_MMU_BYPASS_TSPP_MASK 0x00002000U | ||
482 | #define EUR_CR_BIF_CTRL_MMU_BYPASS_TSPP_SHIFT 13 | ||
483 | #define EUR_CR_BIF_CTRL_MMU_BYPASS_ISP_MASK 0x00004000U | ||
484 | #define EUR_CR_BIF_CTRL_MMU_BYPASS_ISP_SHIFT 14 | ||
485 | #define EUR_CR_BIF_CTRL_MMU_BYPASS_USE_MASK 0x00008000U | ||
486 | #define EUR_CR_BIF_CTRL_MMU_BYPASS_USE_SHIFT 15 | ||
487 | #define EUR_CR_BIF_INT_STAT 0x0C04 | ||
488 | #define EUR_CR_BIF_INT_STAT_FAULT_MASK 0x00003FFFU | ||
489 | #define EUR_CR_BIF_INT_STAT_FAULT_SHIFT 0 | ||
490 | #define EUR_CR_BIF_INT_STAT_PF_N_RW_MASK 0x00004000U | ||
491 | #define EUR_CR_BIF_INT_STAT_PF_N_RW_SHIFT 14 | ||
492 | #define EUR_CR_BIF_INT_STAT_FLUSH_COMPLETE_MASK 0x00008000U | ||
493 | #define EUR_CR_BIF_INT_STAT_FLUSH_COMPLETE_SHIFT 15 | ||
494 | #define EUR_CR_BIF_FAULT 0x0C08 | ||
495 | #define EUR_CR_BIF_FAULT_SB_MASK 0x000001F0U | ||
496 | #define EUR_CR_BIF_FAULT_SB_SHIFT 4 | ||
497 | #define EUR_CR_BIF_FAULT_ADDR_MASK 0x0FFFF000U | ||
498 | #define EUR_CR_BIF_FAULT_ADDR_SHIFT 12 | ||
499 | #define EUR_CR_BIF_DIR_LIST_BASE0 0x0C84 | ||
500 | #define EUR_CR_BIF_DIR_LIST_BASE0_ADDR_MASK 0xFFFFF000U | ||
501 | #define EUR_CR_BIF_DIR_LIST_BASE0_ADDR_SHIFT 12 | ||
502 | #define EUR_CR_BIF_TA_REQ_BASE 0x0C90 | ||
503 | #define EUR_CR_BIF_TA_REQ_BASE_ADDR_MASK 0x0FF00000U | ||
504 | #define EUR_CR_BIF_TA_REQ_BASE_ADDR_SHIFT 20 | ||
505 | #define EUR_CR_BIF_MEM_REQ_STAT 0x0CA8 | ||
506 | #define EUR_CR_BIF_MEM_REQ_STAT_READS_MASK 0x000000FFU | ||
507 | #define EUR_CR_BIF_MEM_REQ_STAT_READS_SHIFT 0 | ||
508 | #define EUR_CR_BIF_3D_REQ_BASE 0x0CAC | ||
509 | #define EUR_CR_BIF_3D_REQ_BASE_ADDR_MASK 0x0FF00000U | ||
510 | #define EUR_CR_BIF_3D_REQ_BASE_ADDR_SHIFT 20 | ||
511 | #define EUR_CR_BIF_ZLS_REQ_BASE 0x0CB0 | ||
512 | #define EUR_CR_BIF_ZLS_REQ_BASE_ADDR_MASK 0x0FF00000U | ||
513 | #define EUR_CR_BIF_ZLS_REQ_BASE_ADDR_SHIFT 20 | ||
514 | #define EUR_CR_2D_BLIT_STATUS 0x0E04 | ||
515 | #define EUR_CR_2D_BLIT_STATUS_COMPLETE_MASK 0x00FFFFFFU | ||
516 | #define EUR_CR_2D_BLIT_STATUS_COMPLETE_SHIFT 0 | ||
517 | #define EUR_CR_2D_BLIT_STATUS_BUSY_MASK 0x01000000U | ||
518 | #define EUR_CR_2D_BLIT_STATUS_BUSY_SHIFT 24 | ||
519 | #define EUR_CR_2D_VIRTUAL_FIFO_0 0x0E10 | ||
520 | #define EUR_CR_2D_VIRTUAL_FIFO_0_ENABLE_MASK 0x00000001U | ||
521 | #define EUR_CR_2D_VIRTUAL_FIFO_0_ENABLE_SHIFT 0 | ||
522 | #define EUR_CR_2D_VIRTUAL_FIFO_0_FLOWRATE_MASK 0x0000000EU | ||
523 | #define EUR_CR_2D_VIRTUAL_FIFO_0_FLOWRATE_SHIFT 1 | ||
524 | #define EUR_CR_2D_VIRTUAL_FIFO_0_FLOWRATE_DIV_MASK 0x00000FF0U | ||
525 | #define EUR_CR_2D_VIRTUAL_FIFO_0_FLOWRATE_DIV_SHIFT 4 | ||
526 | #define EUR_CR_2D_VIRTUAL_FIFO_0_FLOWRATE_MUL_MASK 0x0000F000U | ||
527 | #define EUR_CR_2D_VIRTUAL_FIFO_0_FLOWRATE_MUL_SHIFT 12 | ||
528 | #define EUR_CR_2D_VIRTUAL_FIFO_1 0x0E14 | ||
529 | #define EUR_CR_2D_VIRTUAL_FIFO_1_MIN_ACC_MASK 0x00000FFFU | ||
530 | #define EUR_CR_2D_VIRTUAL_FIFO_1_MIN_ACC_SHIFT 0 | ||
531 | #define EUR_CR_2D_VIRTUAL_FIFO_1_MAX_ACC_MASK 0x00FFF000U | ||
532 | #define EUR_CR_2D_VIRTUAL_FIFO_1_MAX_ACC_SHIFT 12 | ||
533 | #define EUR_CR_2D_VIRTUAL_FIFO_1_MIN_METRIC_MASK 0xFF000000U | ||
534 | #define EUR_CR_2D_VIRTUAL_FIFO_1_MIN_METRIC_SHIFT 24 | ||
535 | #define EUR_CR_USE_CODE_BASE(X) (0x0A0C + (4 * (X))) | ||
536 | #define EUR_CR_USE_CODE_BASE_ADDR_MASK 0x00FFFFFFU | ||
537 | #define EUR_CR_USE_CODE_BASE_ADDR_SHIFT 0 | ||
538 | #define EUR_CR_USE_CODE_BASE_DM_MASK 0x03000000U | ||
539 | #define EUR_CR_USE_CODE_BASE_DM_SHIFT 24 | ||
540 | #define EUR_CR_USE_CODE_BASE_SIZE_UINT32 16 | ||
541 | #define EUR_CR_USE_CODE_BASE_NUM_ENTRIES 16 | ||
542 | |||
543 | #endif | ||
544 | |||
diff --git a/drivers/gpu/pvr/sgx535defs.h b/drivers/gpu/pvr/sgx535defs.h new file mode 100644 index 00000000000..04f43be12b1 --- /dev/null +++ b/drivers/gpu/pvr/sgx535defs.h | |||
@@ -0,0 +1,650 @@ | |||
1 | /********************************************************************** | ||
2 | * | ||
3 | * Copyright(c) 2008 Imagination Technologies Ltd. All rights reserved. | ||
4 | * | ||
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. | ||
8 | * | ||
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. | ||
13 | * | ||
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. | ||
17 | * | ||
18 | * The full GNU General Public License is included in this distribution in | ||
19 | * the file called "COPYING". | ||
20 | * | ||
21 | * Contact Information: | ||
22 | * Imagination Technologies Ltd. <gpl-support@imgtec.com> | ||
23 | * Home Park Estate, Kings Langley, Herts, WD4 8LZ, UK | ||
24 | * | ||
25 | ******************************************************************************/ | ||
26 | |||
27 | #ifndef _SGX535DEFS_KM_H_ | ||
28 | #define _SGX535DEFS_KM_H_ | ||
29 | |||
30 | #define EUR_CR_CLKGATECTL 0x0000 | ||
31 | #define EUR_CR_CLKGATECTL_2D_CLKG_MASK 0x00000003U | ||
32 | #define EUR_CR_CLKGATECTL_2D_CLKG_SHIFT 0 | ||
33 | #define EUR_CR_CLKGATECTL_ISP_CLKG_MASK 0x00000030U | ||
34 | #define EUR_CR_CLKGATECTL_ISP_CLKG_SHIFT 4 | ||
35 | #define EUR_CR_CLKGATECTL_TSP_CLKG_MASK 0x00000300U | ||
36 | #define EUR_CR_CLKGATECTL_TSP_CLKG_SHIFT 8 | ||
37 | #define EUR_CR_CLKGATECTL_TA_CLKG_MASK 0x00003000U | ||
38 | #define EUR_CR_CLKGATECTL_TA_CLKG_SHIFT 12 | ||
39 | #define EUR_CR_CLKGATECTL_DPM_CLKG_MASK 0x00030000U | ||
40 | #define EUR_CR_CLKGATECTL_DPM_CLKG_SHIFT 16 | ||
41 | #define EUR_CR_CLKGATECTL_USE_CLKG_MASK 0x00300000U | ||
42 | #define EUR_CR_CLKGATECTL_USE_CLKG_SHIFT 20 | ||
43 | #define EUR_CR_CLKGATECTL_AUTO_MAN_REG_MASK 0x01000000U | ||
44 | #define EUR_CR_CLKGATECTL_AUTO_MAN_REG_SHIFT 24 | ||
45 | #define EUR_CR_CLKGATESTATUS 0x0004 | ||
46 | #define EUR_CR_CLKGATESTATUS_2D_CLKS_MASK 0x00000001 | ||
47 | #define EUR_CR_CLKGATESTATUS_2D_CLKS_SHIFT 0 | ||
48 | #define EUR_CR_CLKGATESTATUS_ISP_CLKS_MASK 0x00000010U | ||
49 | #define EUR_CR_CLKGATESTATUS_ISP_CLKS_SHIFT 4 | ||
50 | #define EUR_CR_CLKGATESTATUS_TSP_CLKS_MASK 0x00000100U | ||
51 | #define EUR_CR_CLKGATESTATUS_TSP_CLKS_SHIFT 8 | ||
52 | #define EUR_CR_CLKGATESTATUS_TA_CLKS_MASK 0x00001000U | ||
53 | #define EUR_CR_CLKGATESTATUS_TA_CLKS_SHIFT 12 | ||
54 | #define EUR_CR_CLKGATESTATUS_DPM_CLKS_MASK 0x00010000U | ||
55 | #define EUR_CR_CLKGATESTATUS_DPM_CLKS_SHIFT 16 | ||
56 | #define EUR_CR_CLKGATESTATUS_USE_CLKS_MASK 0x00100000U | ||
57 | #define EUR_CR_CLKGATESTATUS_USE_CLKS_SHIFT 20 | ||
58 | #define EUR_CR_CLKGATECTLOVR 0x0008 | ||
59 | #define EUR_CR_CLKGATECTLOVR_2D_CLKO_MASK 0x00000003U | ||
60 | #define EUR_CR_CLKGATECTLOVR_2D_CLKO_SHIFT 0 | ||
61 | #define EUR_CR_CLKGATECTLOVR_ISP_CLKO_MASK 0x00000030U | ||
62 | #define EUR_CR_CLKGATECTLOVR_ISP_CLKO_SHIFT 4 | ||
63 | #define EUR_CR_CLKGATECTLOVR_TSP_CLKO_MASK 0x00000300U | ||
64 | #define EUR_CR_CLKGATECTLOVR_TSP_CLKO_SHIFT 8 | ||
65 | #define EUR_CR_CLKGATECTLOVR_TA_CLKO_MASK 0x00003000U | ||
66 | #define EUR_CR_CLKGATECTLOVR_TA_CLKO_SHIFT 12 | ||
67 | #define EUR_CR_CLKGATECTLOVR_DPM_CLKO_MASK 0x00030000U | ||
68 | #define EUR_CR_CLKGATECTLOVR_DPM_CLKO_SHIFT 16 | ||
69 | #define EUR_CR_CLKGATECTLOVR_USE_CLKO_MASK 0x00300000U | ||
70 | #define EUR_CR_CLKGATECTLOVR_USE_CLKO_SHIFT 20 | ||
71 | #define EUR_CR_CORE_ID 0x0010 | ||
72 | #define EUR_CR_CORE_ID_CONFIG_MASK 0x0000FFFFU | ||
73 | #define EUR_CR_CORE_ID_CONFIG_SHIFT 0 | ||
74 | #define EUR_CR_CORE_ID_ID_MASK 0xFFFF0000U | ||
75 | #define EUR_CR_CORE_ID_ID_SHIFT 16 | ||
76 | #define EUR_CR_CORE_REVISION 0x0014 | ||
77 | #define EUR_CR_CORE_REVISION_MAINTENANCE_MASK 0x000000FFU | ||
78 | #define EUR_CR_CORE_REVISION_MAINTENANCE_SHIFT 0 | ||
79 | #define EUR_CR_CORE_REVISION_MINOR_MASK 0x0000FF00U | ||
80 | #define EUR_CR_CORE_REVISION_MINOR_SHIFT 8 | ||
81 | #define EUR_CR_CORE_REVISION_MAJOR_MASK 0x00FF0000U | ||
82 | #define EUR_CR_CORE_REVISION_MAJOR_SHIFT 16 | ||
83 | #define EUR_CR_CORE_REVISION_DESIGNER_MASK 0xFF000000U | ||
84 | #define EUR_CR_CORE_REVISION_DESIGNER_SHIFT 24 | ||
85 | #define EUR_CR_DESIGNER_REV_FIELD1 0x0018 | ||
86 | #define EUR_CR_DESIGNER_REV_FIELD1_DESIGNER_REV_FIELD1_MASK 0xFFFFFFFFU | ||
87 | #define EUR_CR_DESIGNER_REV_FIELD1_DESIGNER_REV_FIELD1_SHIFT 0 | ||
88 | #define EUR_CR_DESIGNER_REV_FIELD2 0x001C | ||
89 | #define EUR_CR_DESIGNER_REV_FIELD2_DESIGNER_REV_FIELD2_MASK 0xFFFFFFFFU | ||
90 | #define EUR_CR_DESIGNER_REV_FIELD2_DESIGNER_REV_FIELD2_SHIFT 0 | ||
91 | #define EUR_CR_SOFT_RESET 0x0080 | ||
92 | #define EUR_CR_SOFT_RESET_BIF_RESET_MASK 0x00000001U | ||
93 | #define EUR_CR_SOFT_RESET_BIF_RESET_SHIFT 0 | ||
94 | #define EUR_CR_SOFT_RESET_TWOD_RESET_MASK 0x00000002U | ||
95 | #define EUR_CR_SOFT_RESET_TWOD_RESET_SHIFT 1 | ||
96 | #define EUR_CR_SOFT_RESET_DPM_RESET_MASK 0x00000004U | ||
97 | #define EUR_CR_SOFT_RESET_DPM_RESET_SHIFT 2 | ||
98 | #define EUR_CR_SOFT_RESET_TA_RESET_MASK 0x00000008U | ||
99 | #define EUR_CR_SOFT_RESET_TA_RESET_SHIFT 3 | ||
100 | #define EUR_CR_SOFT_RESET_USE_RESET_MASK 0x00000010U | ||
101 | #define EUR_CR_SOFT_RESET_USE_RESET_SHIFT 4 | ||
102 | #define EUR_CR_SOFT_RESET_ISP_RESET_MASK 0x00000020U | ||
103 | #define EUR_CR_SOFT_RESET_ISP_RESET_SHIFT 5 | ||
104 | #define EUR_CR_SOFT_RESET_TSP_RESET_MASK 0x00000040U | ||
105 | #define EUR_CR_SOFT_RESET_TSP_RESET_SHIFT 6 | ||
106 | #define EUR_CR_EVENT_HOST_ENABLE2 0x0110 | ||
107 | #define EUR_CR_EVENT_HOST_ENABLE2_TRIG_TA_MASK 0x00000080U | ||
108 | #define EUR_CR_EVENT_HOST_ENABLE2_TRIG_TA_SHIFT 7 | ||
109 | #define EUR_CR_EVENT_HOST_ENABLE2_TRIG_3D_MASK 0x00000040U | ||
110 | #define EUR_CR_EVENT_HOST_ENABLE2_TRIG_3D_SHIFT 6 | ||
111 | #define EUR_CR_EVENT_HOST_ENABLE2_TRIG_DL_MASK 0x00000020U | ||
112 | #define EUR_CR_EVENT_HOST_ENABLE2_TRIG_DL_SHIFT 5 | ||
113 | #define EUR_CR_EVENT_HOST_ENABLE2_BIF_REQUESTER_FAULT_MASK 0x00000010U | ||
114 | #define EUR_CR_EVENT_HOST_ENABLE2_BIF_REQUESTER_FAULT_SHIFT 4 | ||
115 | #define EUR_CR_EVENT_HOST_ENABLE2_DPM_DHOST_FREE_LOAD_MASK 0x00000008U | ||
116 | #define EUR_CR_EVENT_HOST_ENABLE2_DPM_DHOST_FREE_LOAD_SHIFT 3 | ||
117 | #define EUR_CR_EVENT_HOST_ENABLE2_DPM_HOST_FREE_LOAD_MASK 0x00000004U | ||
118 | #define EUR_CR_EVENT_HOST_ENABLE2_DPM_HOST_FREE_LOAD_SHIFT 2 | ||
119 | #define EUR_CR_EVENT_HOST_ENABLE2_DPM_3D_FREE_LOAD_MASK 0x00000002U | ||
120 | #define EUR_CR_EVENT_HOST_ENABLE2_DPM_3D_FREE_LOAD_SHIFT 1 | ||
121 | #define EUR_CR_EVENT_HOST_ENABLE2_DPM_TA_FREE_LOAD_MASK 0x00000001U | ||
122 | #define EUR_CR_EVENT_HOST_ENABLE2_DPM_TA_FREE_LOAD_SHIFT 0 | ||
123 | #define EUR_CR_EVENT_HOST_CLEAR2 0x0114 | ||
124 | #define EUR_CR_EVENT_HOST_CLEAR2_TRIG_TA_MASK 0x00000080U | ||
125 | #define EUR_CR_EVENT_HOST_CLEAR2_TRIG_TA_SHIFT 7 | ||
126 | #define EUR_CR_EVENT_HOST_CLEAR2_TRIG_3D_MASK 0x00000040U | ||
127 | #define EUR_CR_EVENT_HOST_CLEAR2_TRIG_3D_SHIFT 6 | ||
128 | #define EUR_CR_EVENT_HOST_CLEAR2_TRIG_DL_MASK 0x00000020U | ||
129 | #define EUR_CR_EVENT_HOST_CLEAR2_TRIG_DL_SHIFT 5 | ||
130 | #define EUR_CR_EVENT_HOST_CLEAR2_BIF_REQUESTER_FAULT_MASK 0x00000010U | ||
131 | #define EUR_CR_EVENT_HOST_CLEAR2_BIF_REQUESTER_FAULT_SHIFT 4 | ||
132 | #define EUR_CR_EVENT_HOST_CLEAR2_DPM_DHOST_FREE_LOAD_MASK 0x00000008U | ||
133 | #define EUR_CR_EVENT_HOST_CLEAR2_DPM_DHOST_FREE_LOAD_SHIFT 3 | ||
134 | #define EUR_CR_EVENT_HOST_CLEAR2_DPM_HOST_FREE_LOAD_MASK 0x00000004U | ||
135 | #define EUR_CR_EVENT_HOST_CLEAR2_DPM_HOST_FREE_LOAD_SHIFT 2 | ||
136 | #define EUR_CR_EVENT_HOST_CLEAR2_DPM_3D_FREE_LOAD_MASK 0x00000002U | ||
137 | #define EUR_CR_EVENT_HOST_CLEAR2_DPM_3D_FREE_LOAD_SHIFT 1 | ||
138 | #define EUR_CR_EVENT_HOST_CLEAR2_DPM_TA_FREE_LOAD_MASK 0x00000001U | ||
139 | #define EUR_CR_EVENT_HOST_CLEAR2_DPM_TA_FREE_LOAD_SHIFT 0 | ||
140 | #define EUR_CR_EVENT_STATUS2 0x0118U | ||
141 | #define EUR_CR_EVENT_STATUS2_TRIG_TA_MASK 0x00000080U | ||
142 | #define EUR_CR_EVENT_STATUS2_TRIG_TA_SHIFT 7 | ||
143 | #define EUR_CR_EVENT_STATUS2_TRIG_3D_MASK 0x00000040U | ||
144 | #define EUR_CR_EVENT_STATUS2_TRIG_3D_SHIFT 6 | ||
145 | #define EUR_CR_EVENT_STATUS2_TRIG_DL_MASK 0x00000020U | ||
146 | #define EUR_CR_EVENT_STATUS2_TRIG_DL_SHIFT 5 | ||
147 | #define EUR_CR_EVENT_STATUS2_BIF_REQUESTER_FAULT_MASK 0x00000010U | ||
148 | #define EUR_CR_EVENT_STATUS2_BIF_REQUESTER_FAULT_SHIFT 4 | ||
149 | #define EUR_CR_EVENT_STATUS2_DPM_DHOST_FREE_LOAD_MASK 0x00000008U | ||
150 | #define EUR_CR_EVENT_STATUS2_DPM_DHOST_FREE_LOAD_SHIFT 3 | ||
151 | #define EUR_CR_EVENT_STATUS2_DPM_HOST_FREE_LOAD_MASK 0x00000004U | ||
152 | #define EUR_CR_EVENT_STATUS2_DPM_HOST_FREE_LOAD_SHIFT 2 | ||
153 | #define EUR_CR_EVENT_STATUS2_DPM_3D_FREE_LOAD_MASK 0x00000002U | ||
154 | #define EUR_CR_EVENT_STATUS2_DPM_3D_FREE_LOAD_SHIFT 1 | ||
155 | #define EUR_CR_EVENT_STATUS2_DPM_TA_FREE_LOAD_MASK 0x00000001U | ||
156 | #define EUR_CR_EVENT_STATUS2_DPM_TA_FREE_LOAD_SHIFT 0 | ||
157 | #define EUR_CR_EVENT_STATUS 0x012CU | ||
158 | #define EUR_CR_EVENT_STATUS_MASTER_INTERRUPT_MASK 0x80000000U | ||
159 | #define EUR_CR_EVENT_STATUS_MASTER_INTERRUPT_SHIFT 31 | ||
160 | #define EUR_CR_EVENT_STATUS_TIMER_MASK 0x20000000U | ||
161 | #define EUR_CR_EVENT_STATUS_TIMER_SHIFT 29 | ||
162 | #define EUR_CR_EVENT_STATUS_TA_DPM_FAULT_MASK 0x10000000U | ||
163 | #define EUR_CR_EVENT_STATUS_TA_DPM_FAULT_SHIFT 28 | ||
164 | #define EUR_CR_EVENT_STATUS_TWOD_COMPLETE_MASK 0x08000000U | ||
165 | #define EUR_CR_EVENT_STATUS_TWOD_COMPLETE_SHIFT 27 | ||
166 | #define EUR_CR_EVENT_STATUS_MADD_CACHE_INVALCOMPLETE_MASK 0x04000000U | ||
167 | #define EUR_CR_EVENT_STATUS_MADD_CACHE_INVALCOMPLETE_SHIFT 26 | ||
168 | #define EUR_CR_EVENT_STATUS_DPM_OUT_OF_MEMORY_ZLS_MASK 0x02000000U | ||
169 | #define EUR_CR_EVENT_STATUS_DPM_OUT_OF_MEMORY_ZLS_SHIFT 25 | ||
170 | #define EUR_CR_EVENT_STATUS_DPM_TA_MEM_FREE_MASK 0x01000000U | ||
171 | #define EUR_CR_EVENT_STATUS_DPM_TA_MEM_FREE_SHIFT 24 | ||
172 | #define EUR_CR_EVENT_STATUS_ISP_END_TILE_MASK 0x00800000U | ||
173 | #define EUR_CR_EVENT_STATUS_ISP_END_TILE_SHIFT 23 | ||
174 | #define EUR_CR_EVENT_STATUS_DPM_INITEND_MASK 0x00400000U | ||
175 | #define EUR_CR_EVENT_STATUS_DPM_INITEND_SHIFT 22 | ||
176 | #define EUR_CR_EVENT_STATUS_OTPM_LOADED_MASK 0x00200000U | ||
177 | #define EUR_CR_EVENT_STATUS_OTPM_LOADED_SHIFT 21 | ||
178 | #define EUR_CR_EVENT_STATUS_OTPM_INV_MASK 0x00100000U | ||
179 | #define EUR_CR_EVENT_STATUS_OTPM_INV_SHIFT 20 | ||
180 | #define EUR_CR_EVENT_STATUS_OTPM_FLUSHED_MASK 0x00080000U | ||
181 | #define EUR_CR_EVENT_STATUS_OTPM_FLUSHED_SHIFT 19 | ||
182 | #define EUR_CR_EVENT_STATUS_PIXELBE_END_RENDER_MASK 0x00040000U | ||
183 | #define EUR_CR_EVENT_STATUS_PIXELBE_END_RENDER_SHIFT 18 | ||
184 | #define EUR_CR_EVENT_STATUS_ISP_HALT_MASK 0x00020000U | ||
185 | #define EUR_CR_EVENT_STATUS_ISP_HALT_SHIFT 17 | ||
186 | #define EUR_CR_EVENT_STATUS_ISP_VISIBILITY_FAIL_MASK 0x00010000U | ||
187 | #define EUR_CR_EVENT_STATUS_ISP_VISIBILITY_FAIL_SHIFT 16 | ||
188 | #define EUR_CR_EVENT_STATUS_BREAKPOINT_MASK 0x00008000U | ||
189 | #define EUR_CR_EVENT_STATUS_BREAKPOINT_SHIFT 15 | ||
190 | #define EUR_CR_EVENT_STATUS_SW_EVENT_MASK 0x00004000U | ||
191 | #define EUR_CR_EVENT_STATUS_SW_EVENT_SHIFT 14 | ||
192 | #define EUR_CR_EVENT_STATUS_TA_FINISHED_MASK 0x00002000U | ||
193 | #define EUR_CR_EVENT_STATUS_TA_FINISHED_SHIFT 13 | ||
194 | #define EUR_CR_EVENT_STATUS_TA_TERMINATE_MASK 0x00001000U | ||
195 | #define EUR_CR_EVENT_STATUS_TA_TERMINATE_SHIFT 12 | ||
196 | #define EUR_CR_EVENT_STATUS_TPC_CLEAR_MASK 0x00000800U | ||
197 | #define EUR_CR_EVENT_STATUS_TPC_CLEAR_SHIFT 11 | ||
198 | #define EUR_CR_EVENT_STATUS_TPC_FLUSH_MASK 0x00000400U | ||
199 | #define EUR_CR_EVENT_STATUS_TPC_FLUSH_SHIFT 10 | ||
200 | #define EUR_CR_EVENT_STATUS_DPM_CONTROL_CLEAR_MASK 0x00000200U | ||
201 | #define EUR_CR_EVENT_STATUS_DPM_CONTROL_CLEAR_SHIFT 9 | ||
202 | #define EUR_CR_EVENT_STATUS_DPM_CONTROL_LOAD_MASK 0x00000100U | ||
203 | #define EUR_CR_EVENT_STATUS_DPM_CONTROL_LOAD_SHIFT 8 | ||
204 | #define EUR_CR_EVENT_STATUS_DPM_CONTROL_STORE_MASK 0x00000080U | ||
205 | #define EUR_CR_EVENT_STATUS_DPM_CONTROL_STORE_SHIFT 7 | ||
206 | #define EUR_CR_EVENT_STATUS_DPM_STATE_CLEAR_MASK 0x00000040U | ||
207 | #define EUR_CR_EVENT_STATUS_DPM_STATE_CLEAR_SHIFT 6 | ||
208 | #define EUR_CR_EVENT_STATUS_DPM_STATE_LOAD_MASK 0x00000020U | ||
209 | #define EUR_CR_EVENT_STATUS_DPM_STATE_LOAD_SHIFT 5 | ||
210 | #define EUR_CR_EVENT_STATUS_DPM_STATE_STORE_MASK 0x00000010U | ||
211 | #define EUR_CR_EVENT_STATUS_DPM_STATE_STORE_SHIFT 4 | ||
212 | #define EUR_CR_EVENT_STATUS_DPM_REACHED_MEM_THRESH_MASK 0x00000008U | ||
213 | #define EUR_CR_EVENT_STATUS_DPM_REACHED_MEM_THRESH_SHIFT 3 | ||
214 | #define EUR_CR_EVENT_STATUS_DPM_OUT_OF_MEMORY_GBL_MASK 0x00000004U | ||
215 | #define EUR_CR_EVENT_STATUS_DPM_OUT_OF_MEMORY_GBL_SHIFT 2 | ||
216 | #define EUR_CR_EVENT_STATUS_DPM_OUT_OF_MEMORY_MT_MASK 0x00000002U | ||
217 | #define EUR_CR_EVENT_STATUS_DPM_OUT_OF_MEMORY_MT_SHIFT 1 | ||
218 | #define EUR_CR_EVENT_STATUS_DPM_3D_MEM_FREE_MASK 0x00000001U | ||
219 | #define EUR_CR_EVENT_STATUS_DPM_3D_MEM_FREE_SHIFT 0 | ||
220 | #define EUR_CR_EVENT_HOST_ENABLE 0x0130 | ||
221 | #define EUR_CR_EVENT_HOST_ENABLE_MASTER_INTERRUPT_MASK 0x80000000U | ||
222 | #define EUR_CR_EVENT_HOST_ENABLE_MASTER_INTERRUPT_SHIFT 31 | ||
223 | #define EUR_CR_EVENT_HOST_ENABLE_TIMER_MASK 0x20000000U | ||
224 | #define EUR_CR_EVENT_HOST_ENABLE_TIMER_SHIFT 29 | ||
225 | #define EUR_CR_EVENT_HOST_ENABLE_TA_DPM_FAULT_MASK 0x10000000U | ||
226 | #define EUR_CR_EVENT_HOST_ENABLE_TA_DPM_FAULT_SHIFT 28 | ||
227 | #define EUR_CR_EVENT_HOST_ENABLE_TWOD_COMPLETE_MASK 0x08000000U | ||
228 | #define EUR_CR_EVENT_HOST_ENABLE_TWOD_COMPLETE_SHIFT 27 | ||
229 | #define EUR_CR_EVENT_HOST_ENABLE_MADD_CACHE_INVALCOMPLETE_MASK 0x04000000U | ||
230 | #define EUR_CR_EVENT_HOST_ENABLE_MADD_CACHE_INVALCOMPLETE_SHIFT 26 | ||
231 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_OUT_OF_MEMORY_ZLS_MASK 0x02000000U | ||
232 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_OUT_OF_MEMORY_ZLS_SHIFT 25 | ||
233 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_TA_MEM_FREE_MASK 0x01000000U | ||
234 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_TA_MEM_FREE_SHIFT 24 | ||
235 | #define EUR_CR_EVENT_HOST_ENABLE_ISP_END_TILE_MASK 0x00800000U | ||
236 | #define EUR_CR_EVENT_HOST_ENABLE_ISP_END_TILE_SHIFT 23 | ||
237 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_INITEND_MASK 0x00400000U | ||
238 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_INITEND_SHIFT 22 | ||
239 | #define EUR_CR_EVENT_HOST_ENABLE_OTPM_LOADED_MASK 0x00200000U | ||
240 | #define EUR_CR_EVENT_HOST_ENABLE_OTPM_LOADED_SHIFT 21 | ||
241 | #define EUR_CR_EVENT_HOST_ENABLE_OTPM_INV_MASK 0x00100000U | ||
242 | #define EUR_CR_EVENT_HOST_ENABLE_OTPM_INV_SHIFT 20 | ||
243 | #define EUR_CR_EVENT_HOST_ENABLE_OTPM_FLUSHED_MASK 0x00080000U | ||
244 | #define EUR_CR_EVENT_HOST_ENABLE_OTPM_FLUSHED_SHIFT 19 | ||
245 | #define EUR_CR_EVENT_HOST_ENABLE_PIXELBE_END_RENDER_MASK 0x00040000U | ||
246 | #define EUR_CR_EVENT_HOST_ENABLE_PIXELBE_END_RENDER_SHIFT 18 | ||
247 | #define EUR_CR_EVENT_HOST_ENABLE_ISP_HALT_MASK 0x00020000U | ||
248 | #define EUR_CR_EVENT_HOST_ENABLE_ISP_HALT_SHIFT 17 | ||
249 | #define EUR_CR_EVENT_HOST_ENABLE_ISP_VISIBILITY_FAIL_MASK 0x00010000U | ||
250 | #define EUR_CR_EVENT_HOST_ENABLE_ISP_VISIBILITY_FAIL_SHIFT 16 | ||
251 | #define EUR_CR_EVENT_HOST_ENABLE_BREAKPOINT_MASK 0x00008000U | ||
252 | #define EUR_CR_EVENT_HOST_ENABLE_BREAKPOINT_SHIFT 15 | ||
253 | #define EUR_CR_EVENT_HOST_ENABLE_SW_EVENT_MASK 0x00004000U | ||
254 | #define EUR_CR_EVENT_HOST_ENABLE_SW_EVENT_SHIFT 14 | ||
255 | #define EUR_CR_EVENT_HOST_ENABLE_TA_FINISHED_MASK 0x00002000U | ||
256 | #define EUR_CR_EVENT_HOST_ENABLE_TA_FINISHED_SHIFT 13 | ||
257 | #define EUR_CR_EVENT_HOST_ENABLE_TA_TERMINATE_MASK 0x00001000U | ||
258 | #define EUR_CR_EVENT_HOST_ENABLE_TA_TERMINATE_SHIFT 12 | ||
259 | #define EUR_CR_EVENT_HOST_ENABLE_TPC_CLEAR_MASK 0x00000800U | ||
260 | #define EUR_CR_EVENT_HOST_ENABLE_TPC_CLEAR_SHIFT 11 | ||
261 | #define EUR_CR_EVENT_HOST_ENABLE_TPC_FLUSH_MASK 0x00000400U | ||
262 | #define EUR_CR_EVENT_HOST_ENABLE_TPC_FLUSH_SHIFT 10 | ||
263 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_CONTROL_CLEAR_MASK 0x00000200U | ||
264 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_CONTROL_CLEAR_SHIFT 9 | ||
265 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_CONTROL_LOAD_MASK 0x00000100U | ||
266 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_CONTROL_LOAD_SHIFT 8 | ||
267 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_CONTROL_STORE_MASK 0x00000080U | ||
268 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_CONTROL_STORE_SHIFT 7 | ||
269 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_STATE_CLEAR_MASK 0x00000040U | ||
270 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_STATE_CLEAR_SHIFT 6 | ||
271 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_STATE_LOAD_MASK 0x00000020U | ||
272 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_STATE_LOAD_SHIFT 5 | ||
273 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_STATE_STORE_MASK 0x00000010U | ||
274 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_STATE_STORE_SHIFT 4 | ||
275 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_REACHED_MEM_THRESH_MASK 0x00000008U | ||
276 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_REACHED_MEM_THRESH_SHIFT 3 | ||
277 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_OUT_OF_MEMORY_GBL_MASK 0x00000004U | ||
278 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_OUT_OF_MEMORY_GBL_SHIFT 2 | ||
279 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_OUT_OF_MEMORY_MT_MASK 0x00000002U | ||
280 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_OUT_OF_MEMORY_MT_SHIFT 1 | ||
281 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_3D_MEM_FREE_MASK 0x00000001U | ||
282 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_3D_MEM_FREE_SHIFT 0 | ||
283 | #define EUR_CR_EVENT_HOST_CLEAR 0x0134 | ||
284 | #define EUR_CR_EVENT_HOST_CLEAR_MASTER_INTERRUPT_MASK 0x80000000U | ||
285 | #define EUR_CR_EVENT_HOST_CLEAR_MASTER_INTERRUPT_SHIFT 31 | ||
286 | #define EUR_CR_EVENT_HOST_CLEAR_TIMER_MASK 0x20000000U | ||
287 | #define EUR_CR_EVENT_HOST_CLEAR_TIMER_SHIFT 29 | ||
288 | #define EUR_CR_EVENT_HOST_CLEAR_TA_DPM_FAULT_MASK 0x10000000U | ||
289 | #define EUR_CR_EVENT_HOST_CLEAR_TA_DPM_FAULT_SHIFT 28 | ||
290 | #define EUR_CR_EVENT_HOST_CLEAR_TWOD_COMPLETE_MASK 0x08000000U | ||
291 | #define EUR_CR_EVENT_HOST_CLEAR_TWOD_COMPLETE_SHIFT 27 | ||
292 | #define EUR_CR_EVENT_HOST_CLEAR_MADD_CACHE_INVALCOMPLETE_MASK 0x04000000U | ||
293 | #define EUR_CR_EVENT_HOST_CLEAR_MADD_CACHE_INVALCOMPLETE_SHIFT 26 | ||
294 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_OUT_OF_MEMORY_ZLS_MASK 0x02000000U | ||
295 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_OUT_OF_MEMORY_ZLS_SHIFT 25 | ||
296 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_TA_MEM_FREE_MASK 0x01000000U | ||
297 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_TA_MEM_FREE_SHIFT 24 | ||
298 | #define EUR_CR_EVENT_HOST_CLEAR_ISP_END_TILE_MASK 0x00800000U | ||
299 | #define EUR_CR_EVENT_HOST_CLEAR_ISP_END_TILE_SHIFT 23 | ||
300 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_INITEND_MASK 0x00400000U | ||
301 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_INITEND_SHIFT 22 | ||
302 | #define EUR_CR_EVENT_HOST_CLEAR_OTPM_LOADED_MASK 0x00200000U | ||
303 | #define EUR_CR_EVENT_HOST_CLEAR_OTPM_LOADED_SHIFT 21 | ||
304 | #define EUR_CR_EVENT_HOST_CLEAR_OTPM_INV_MASK 0x00100000U | ||
305 | #define EUR_CR_EVENT_HOST_CLEAR_OTPM_INV_SHIFT 20 | ||
306 | #define EUR_CR_EVENT_HOST_CLEAR_OTPM_FLUSHED_MASK 0x00080000U | ||
307 | #define EUR_CR_EVENT_HOST_CLEAR_OTPM_FLUSHED_SHIFT 19 | ||
308 | #define EUR_CR_EVENT_HOST_CLEAR_PIXELBE_END_RENDER_MASK 0x00040000U | ||
309 | #define EUR_CR_EVENT_HOST_CLEAR_PIXELBE_END_RENDER_SHIFT 18 | ||
310 | #define EUR_CR_EVENT_HOST_CLEAR_ISP_HALT_MASK 0x00020000U | ||
311 | #define EUR_CR_EVENT_HOST_CLEAR_ISP_HALT_SHIFT 17 | ||
312 | #define EUR_CR_EVENT_HOST_CLEAR_ISP_VISIBILITY_FAIL_MASK 0x00010000U | ||
313 | #define EUR_CR_EVENT_HOST_CLEAR_ISP_VISIBILITY_FAIL_SHIFT 16 | ||
314 | #define EUR_CR_EVENT_HOST_CLEAR_BREAKPOINT_MASK 0x00008000U | ||
315 | #define EUR_CR_EVENT_HOST_CLEAR_BREAKPOINT_SHIFT 15 | ||
316 | #define EUR_CR_EVENT_HOST_CLEAR_SW_EVENT_MASK 0x00004000U | ||
317 | #define EUR_CR_EVENT_HOST_CLEAR_SW_EVENT_SHIFT 14 | ||
318 | #define EUR_CR_EVENT_HOST_CLEAR_TA_FINISHED_MASK 0x00002000U | ||
319 | #define EUR_CR_EVENT_HOST_CLEAR_TA_FINISHED_SHIFT 13 | ||
320 | #define EUR_CR_EVENT_HOST_CLEAR_TA_TERMINATE_MASK 0x00001000U | ||
321 | #define EUR_CR_EVENT_HOST_CLEAR_TA_TERMINATE_SHIFT 12 | ||
322 | #define EUR_CR_EVENT_HOST_CLEAR_TPC_CLEAR_MASK 0x00000800U | ||
323 | #define EUR_CR_EVENT_HOST_CLEAR_TPC_CLEAR_SHIFT 11 | ||
324 | #define EUR_CR_EVENT_HOST_CLEAR_TPC_FLUSH_MASK 0x00000400U | ||
325 | #define EUR_CR_EVENT_HOST_CLEAR_TPC_FLUSH_SHIFT 10 | ||
326 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_CONTROL_CLEAR_MASK 0x00000200U | ||
327 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_CONTROL_CLEAR_SHIFT 9 | ||
328 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_CONTROL_LOAD_MASK 0x00000100U | ||
329 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_CONTROL_LOAD_SHIFT 8 | ||
330 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_CONTROL_STORE_MASK 0x00000080U | ||
331 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_CONTROL_STORE_SHIFT 7 | ||
332 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_STATE_CLEAR_MASK 0x00000040U | ||
333 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_STATE_CLEAR_SHIFT 6 | ||
334 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_STATE_LOAD_MASK 0x00000020U | ||
335 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_STATE_LOAD_SHIFT 5 | ||
336 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_STATE_STORE_MASK 0x00000010U | ||
337 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_STATE_STORE_SHIFT 4 | ||
338 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_REACHED_MEM_THRESH_MASK 0x00000008U | ||
339 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_REACHED_MEM_THRESH_SHIFT 3 | ||
340 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_OUT_OF_MEMORY_GBL_MASK 0x00000004U | ||
341 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_OUT_OF_MEMORY_GBL_SHIFT 2 | ||
342 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_OUT_OF_MEMORY_MT_MASK 0x00000002U | ||
343 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_OUT_OF_MEMORY_MT_SHIFT 1 | ||
344 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_3D_MEM_FREE_MASK 0x00000001U | ||
345 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_3D_MEM_FREE_SHIFT 0 | ||
346 | #define EUR_CR_PDS_EXEC_BASE 0x0AB8 | ||
347 | #define EUR_CR_PDS_EXEC_BASE_ADDR_MASK 0xFFF00000U | ||
348 | #define EUR_CR_PDS_EXEC_BASE_ADDR_SHIFT 20 | ||
349 | #define EUR_CR_EVENT_KICKER 0x0AC4 | ||
350 | #define EUR_CR_EVENT_KICKER_ADDRESS_MASK 0xFFFFFFF0U | ||
351 | #define EUR_CR_EVENT_KICKER_ADDRESS_SHIFT 4 | ||
352 | #define EUR_CR_EVENT_KICK 0x0AC8 | ||
353 | #define EUR_CR_EVENT_KICK_NOW_MASK 0x00000001U | ||
354 | #define EUR_CR_EVENT_KICK_NOW_SHIFT 0 | ||
355 | #define EUR_CR_EVENT_TIMER 0x0ACC | ||
356 | #define EUR_CR_EVENT_TIMER_ENABLE_MASK 0x01000000U | ||
357 | #define EUR_CR_EVENT_TIMER_ENABLE_SHIFT 24 | ||
358 | #define EUR_CR_EVENT_TIMER_VALUE_MASK 0x00FFFFFFU | ||
359 | #define EUR_CR_EVENT_TIMER_VALUE_SHIFT 0 | ||
360 | #define EUR_CR_PDS_INV0 0x0AD0 | ||
361 | #define EUR_CR_PDS_INV0_DSC_MASK 0x00000001U | ||
362 | #define EUR_CR_PDS_INV0_DSC_SHIFT 0 | ||
363 | #define EUR_CR_PDS_INV1 0x0AD4 | ||
364 | #define EUR_CR_PDS_INV1_DSC_MASK 0x00000001U | ||
365 | #define EUR_CR_PDS_INV1_DSC_SHIFT 0 | ||
366 | #define EUR_CR_PDS_INV2 0x0AD8 | ||
367 | #define EUR_CR_PDS_INV2_DSC_MASK 0x00000001U | ||
368 | #define EUR_CR_PDS_INV2_DSC_SHIFT 0 | ||
369 | #define EUR_CR_PDS_INV3 0x0ADC | ||
370 | #define EUR_CR_PDS_INV3_DSC_MASK 0x00000001U | ||
371 | #define EUR_CR_PDS_INV3_DSC_SHIFT 0 | ||
372 | #define EUR_CR_PDS_INV_CSC 0x0AE0 | ||
373 | #define EUR_CR_PDS_INV_CSC_KICK_MASK 0x00000001U | ||
374 | #define EUR_CR_PDS_INV_CSC_KICK_SHIFT 0 | ||
375 | #define EUR_CR_PDS_PC_BASE 0x0B2C | ||
376 | #define EUR_CR_PDS_PC_BASE_ADDRESS_MASK 0x3FFFFFFFU | ||
377 | #define EUR_CR_PDS_PC_BASE_ADDRESS_SHIFT 0 | ||
378 | #define EUR_CR_BIF_CTRL 0x0C00 | ||
379 | #define EUR_CR_BIF_CTRL_NOREORDER_MASK 0x00000001U | ||
380 | #define EUR_CR_BIF_CTRL_NOREORDER_SHIFT 0 | ||
381 | #define EUR_CR_BIF_CTRL_PAUSE_MASK 0x00000002U | ||
382 | #define EUR_CR_BIF_CTRL_PAUSE_SHIFT 1 | ||
383 | #define EUR_CR_BIF_CTRL_FLUSH_MASK 0x00000004U | ||
384 | #define EUR_CR_BIF_CTRL_FLUSH_SHIFT 2 | ||
385 | #define EUR_CR_BIF_CTRL_INVALDC_MASK 0x00000008U | ||
386 | #define EUR_CR_BIF_CTRL_INVALDC_SHIFT 3 | ||
387 | #define EUR_CR_BIF_CTRL_CLEAR_FAULT_MASK 0x00000010U | ||
388 | #define EUR_CR_BIF_CTRL_CLEAR_FAULT_SHIFT 4 | ||
389 | #define EUR_CR_BIF_CTRL_MMU_BYPASS_CACHE_MASK 0x00000100U | ||
390 | #define EUR_CR_BIF_CTRL_MMU_BYPASS_CACHE_SHIFT 8 | ||
391 | #define EUR_CR_BIF_CTRL_MMU_BYPASS_VDM_MASK 0x00000200U | ||
392 | #define EUR_CR_BIF_CTRL_MMU_BYPASS_VDM_SHIFT 9 | ||
393 | #define EUR_CR_BIF_CTRL_MMU_BYPASS_TE_MASK 0x00000400U | ||
394 | #define EUR_CR_BIF_CTRL_MMU_BYPASS_TE_SHIFT 10 | ||
395 | #define EUR_CR_BIF_CTRL_MMU_BYPASS_TWOD_MASK 0x00000800U | ||
396 | #define EUR_CR_BIF_CTRL_MMU_BYPASS_TWOD_SHIFT 11 | ||
397 | #define EUR_CR_BIF_CTRL_MMU_BYPASS_PBE_MASK 0x00001000U | ||
398 | #define EUR_CR_BIF_CTRL_MMU_BYPASS_PBE_SHIFT 12 | ||
399 | #define EUR_CR_BIF_CTRL_MMU_BYPASS_TSPP_MASK 0x00002000U | ||
400 | #define EUR_CR_BIF_CTRL_MMU_BYPASS_TSPP_SHIFT 13 | ||
401 | #define EUR_CR_BIF_CTRL_MMU_BYPASS_ISP_MASK 0x00004000U | ||
402 | #define EUR_CR_BIF_CTRL_MMU_BYPASS_ISP_SHIFT 14 | ||
403 | #define EUR_CR_BIF_CTRL_MMU_BYPASS_USE_MASK 0x00008000U | ||
404 | #define EUR_CR_BIF_CTRL_MMU_BYPASS_USE_SHIFT 15 | ||
405 | #define EUR_CR_BIF_CTRL_MMU_BYPASS_HOST_MASK 0x00010000U | ||
406 | #define EUR_CR_BIF_CTRL_MMU_BYPASS_HOST_SHIFT 16 | ||
407 | #define EUR_CR_BIF_INT_STAT 0x0C04 | ||
408 | #define EUR_CR_BIF_INT_STAT_FAULT_MASK 0x00003FFFU | ||
409 | #define EUR_CR_BIF_INT_STAT_FAULT_SHIFT 0 | ||
410 | #define EUR_CR_BIF_INT_STAT_PF_N_RW_MASK 0x00004000U | ||
411 | #define EUR_CR_BIF_INT_STAT_PF_N_RW_SHIFT 14 | ||
412 | #define EUR_CR_BIF_INT_STAT_FLUSH_COMPLETE_MASK 0x00008000U | ||
413 | #define EUR_CR_BIF_INT_STAT_FLUSH_COMPLETE_SHIFT 15 | ||
414 | #define EUR_CR_BIF_FAULT 0x0C08 | ||
415 | #define EUR_CR_BIF_FAULT_ADDR_MASK 0xFFFFF000U | ||
416 | #define EUR_CR_BIF_FAULT_ADDR_SHIFT 12 | ||
417 | #define EUR_CR_BIF_TILE0 0x0C0C | ||
418 | #define EUR_CR_BIF_TILE0_MIN_ADDRESS_MASK 0x00000FFFU | ||
419 | #define EUR_CR_BIF_TILE0_MIN_ADDRESS_SHIFT 0 | ||
420 | #define EUR_CR_BIF_TILE0_MAX_ADDRESS_MASK 0x00FFF000U | ||
421 | #define EUR_CR_BIF_TILE0_MAX_ADDRESS_SHIFT 12 | ||
422 | #define EUR_CR_BIF_TILE0_CFG_MASK 0x0F000000U | ||
423 | #define EUR_CR_BIF_TILE0_CFG_SHIFT 24 | ||
424 | #define EUR_CR_BIF_TILE1 0x0C10 | ||
425 | #define EUR_CR_BIF_TILE1_MIN_ADDRESS_MASK 0x00000FFFU | ||
426 | #define EUR_CR_BIF_TILE1_MIN_ADDRESS_SHIFT 0 | ||
427 | #define EUR_CR_BIF_TILE1_MAX_ADDRESS_MASK 0x00FFF000U | ||
428 | #define EUR_CR_BIF_TILE1_MAX_ADDRESS_SHIFT 12 | ||
429 | #define EUR_CR_BIF_TILE1_CFG_MASK 0x0F000000U | ||
430 | #define EUR_CR_BIF_TILE1_CFG_SHIFT 24 | ||
431 | #define EUR_CR_BIF_TILE2 0x0C14 | ||
432 | #define EUR_CR_BIF_TILE2_MIN_ADDRESS_MASK 0x00000FFFU | ||
433 | #define EUR_CR_BIF_TILE2_MIN_ADDRESS_SHIFT 0 | ||
434 | #define EUR_CR_BIF_TILE2_MAX_ADDRESS_MASK 0x00FFF000U | ||
435 | #define EUR_CR_BIF_TILE2_MAX_ADDRESS_SHIFT 12 | ||
436 | #define EUR_CR_BIF_TILE2_CFG_MASK 0x0F000000U | ||
437 | #define EUR_CR_BIF_TILE2_CFG_SHIFT 24 | ||
438 | #define EUR_CR_BIF_TILE3 0x0C18 | ||
439 | #define EUR_CR_BIF_TILE3_MIN_ADDRESS_MASK 0x00000FFFU | ||
440 | #define EUR_CR_BIF_TILE3_MIN_ADDRESS_SHIFT 0 | ||
441 | #define EUR_CR_BIF_TILE3_MAX_ADDRESS_MASK 0x00FFF000U | ||
442 | #define EUR_CR_BIF_TILE3_MAX_ADDRESS_SHIFT 12 | ||
443 | #define EUR_CR_BIF_TILE3_CFG_MASK 0x0F000000U | ||
444 | #define EUR_CR_BIF_TILE3_CFG_SHIFT 24 | ||
445 | #define EUR_CR_BIF_TILE4 0x0C1C | ||
446 | #define EUR_CR_BIF_TILE4_MIN_ADDRESS_MASK 0x00000FFFU | ||
447 | #define EUR_CR_BIF_TILE4_MIN_ADDRESS_SHIFT 0 | ||
448 | #define EUR_CR_BIF_TILE4_MAX_ADDRESS_MASK 0x00FFF000U | ||
449 | #define EUR_CR_BIF_TILE4_MAX_ADDRESS_SHIFT 12 | ||
450 | #define EUR_CR_BIF_TILE4_CFG_MASK 0x0F000000U | ||
451 | #define EUR_CR_BIF_TILE4_CFG_SHIFT 24 | ||
452 | #define EUR_CR_BIF_TILE5 0x0C20 | ||
453 | #define EUR_CR_BIF_TILE5_MIN_ADDRESS_MASK 0x00000FFFU | ||
454 | #define EUR_CR_BIF_TILE5_MIN_ADDRESS_SHIFT 0 | ||
455 | #define EUR_CR_BIF_TILE5_MAX_ADDRESS_MASK 0x00FFF000U | ||
456 | #define EUR_CR_BIF_TILE5_MAX_ADDRESS_SHIFT 12 | ||
457 | #define EUR_CR_BIF_TILE5_CFG_MASK 0x0F000000U | ||
458 | #define EUR_CR_BIF_TILE5_CFG_SHIFT 24 | ||
459 | #define EUR_CR_BIF_TILE6 0x0C24 | ||
460 | #define EUR_CR_BIF_TILE6_MIN_ADDRESS_MASK 0x00000FFFU | ||
461 | #define EUR_CR_BIF_TILE6_MIN_ADDRESS_SHIFT 0 | ||
462 | #define EUR_CR_BIF_TILE6_MAX_ADDRESS_MASK 0x00FFF000U | ||
463 | #define EUR_CR_BIF_TILE6_MAX_ADDRESS_SHIFT 12 | ||
464 | #define EUR_CR_BIF_TILE6_CFG_MASK 0x0F000000U | ||
465 | #define EUR_CR_BIF_TILE6_CFG_SHIFT 24 | ||
466 | #define EUR_CR_BIF_TILE7 0x0C28 | ||
467 | #define EUR_CR_BIF_TILE7_MIN_ADDRESS_MASK 0x00000FFFU | ||
468 | #define EUR_CR_BIF_TILE7_MIN_ADDRESS_SHIFT 0 | ||
469 | #define EUR_CR_BIF_TILE7_MAX_ADDRESS_MASK 0x00FFF000U | ||
470 | #define EUR_CR_BIF_TILE7_MAX_ADDRESS_SHIFT 12 | ||
471 | #define EUR_CR_BIF_TILE7_CFG_MASK 0x0F000000U | ||
472 | #define EUR_CR_BIF_TILE7_CFG_SHIFT 24 | ||
473 | #define EUR_CR_BIF_TILE8 0x0C2C | ||
474 | #define EUR_CR_BIF_TILE8_MIN_ADDRESS_MASK 0x00000FFFU | ||
475 | #define EUR_CR_BIF_TILE8_MIN_ADDRESS_SHIFT 0 | ||
476 | #define EUR_CR_BIF_TILE8_MAX_ADDRESS_MASK 0x00FFF000U | ||
477 | #define EUR_CR_BIF_TILE8_MAX_ADDRESS_SHIFT 12 | ||
478 | #define EUR_CR_BIF_TILE8_CFG_MASK 0x0F000000U | ||
479 | #define EUR_CR_BIF_TILE8_CFG_SHIFT 24 | ||
480 | #define EUR_CR_BIF_TILE9 0x0C30 | ||
481 | #define EUR_CR_BIF_TILE9_MIN_ADDRESS_MASK 0x00000FFFU | ||
482 | #define EUR_CR_BIF_TILE9_MIN_ADDRESS_SHIFT 0 | ||
483 | #define EUR_CR_BIF_TILE9_MAX_ADDRESS_MASK 0x00FFF000U | ||
484 | #define EUR_CR_BIF_TILE9_MAX_ADDRESS_SHIFT 12 | ||
485 | #define EUR_CR_BIF_TILE9_CFG_MASK 0x0F000000U | ||
486 | #define EUR_CR_BIF_TILE9_CFG_SHIFT 24 | ||
487 | #define EUR_CR_BIF_DIR_LIST_BASE1 0x0C38 | ||
488 | #define EUR_CR_BIF_DIR_LIST_BASE1_ADDR_MASK 0xFFFFF000U | ||
489 | #define EUR_CR_BIF_DIR_LIST_BASE1_ADDR_SHIFT 12 | ||
490 | #define EUR_CR_BIF_DIR_LIST_BASE2 0x0C3C | ||
491 | #define EUR_CR_BIF_DIR_LIST_BASE2_ADDR_MASK 0xFFFFF000U | ||
492 | #define EUR_CR_BIF_DIR_LIST_BASE2_ADDR_SHIFT 12 | ||
493 | #define EUR_CR_BIF_DIR_LIST_BASE3 0x0C40 | ||
494 | #define EUR_CR_BIF_DIR_LIST_BASE3_ADDR_MASK 0xFFFFF000U | ||
495 | #define EUR_CR_BIF_DIR_LIST_BASE3_ADDR_SHIFT 12 | ||
496 | #define EUR_CR_BIF_DIR_LIST_BASE4 0x0C44 | ||
497 | #define EUR_CR_BIF_DIR_LIST_BASE4_ADDR_MASK 0xFFFFF000U | ||
498 | #define EUR_CR_BIF_DIR_LIST_BASE4_ADDR_SHIFT 12 | ||
499 | #define EUR_CR_BIF_DIR_LIST_BASE5 0x0C48 | ||
500 | #define EUR_CR_BIF_DIR_LIST_BASE5_ADDR_MASK 0xFFFFF000U | ||
501 | #define EUR_CR_BIF_DIR_LIST_BASE5_ADDR_SHIFT 12 | ||
502 | #define EUR_CR_BIF_DIR_LIST_BASE6 0x0C4C | ||
503 | #define EUR_CR_BIF_DIR_LIST_BASE6_ADDR_MASK 0xFFFFF000U | ||
504 | #define EUR_CR_BIF_DIR_LIST_BASE6_ADDR_SHIFT 12 | ||
505 | #define EUR_CR_BIF_DIR_LIST_BASE7 0x0C50 | ||
506 | #define EUR_CR_BIF_DIR_LIST_BASE7_ADDR_MASK 0xFFFFF000U | ||
507 | #define EUR_CR_BIF_DIR_LIST_BASE7_ADDR_SHIFT 12 | ||
508 | #define EUR_CR_BIF_DIR_LIST_BASE8 0x0C54 | ||
509 | #define EUR_CR_BIF_DIR_LIST_BASE8_ADDR_MASK 0xFFFFF000U | ||
510 | #define EUR_CR_BIF_DIR_LIST_BASE8_ADDR_SHIFT 12 | ||
511 | #define EUR_CR_BIF_DIR_LIST_BASE9 0x0C58 | ||
512 | #define EUR_CR_BIF_DIR_LIST_BASE9_ADDR_MASK 0xFFFFF000U | ||
513 | #define EUR_CR_BIF_DIR_LIST_BASE9_ADDR_SHIFT 12 | ||
514 | #define EUR_CR_BIF_DIR_LIST_BASE10 0x0C5C | ||
515 | #define EUR_CR_BIF_DIR_LIST_BASE10_ADDR_MASK 0xFFFFF000U | ||
516 | #define EUR_CR_BIF_DIR_LIST_BASE10_ADDR_SHIFT 12 | ||
517 | #define EUR_CR_BIF_DIR_LIST_BASE11 0x0C60 | ||
518 | #define EUR_CR_BIF_DIR_LIST_BASE11_ADDR_MASK 0xFFFFF000U | ||
519 | #define EUR_CR_BIF_DIR_LIST_BASE11_ADDR_SHIFT 12 | ||
520 | #define EUR_CR_BIF_DIR_LIST_BASE12 0x0C64 | ||
521 | #define EUR_CR_BIF_DIR_LIST_BASE12_ADDR_MASK 0xFFFFF000U | ||
522 | #define EUR_CR_BIF_DIR_LIST_BASE12_ADDR_SHIFT 12 | ||
523 | #define EUR_CR_BIF_DIR_LIST_BASE13 0x0C68 | ||
524 | #define EUR_CR_BIF_DIR_LIST_BASE13_ADDR_MASK 0xFFFFF000U | ||
525 | #define EUR_CR_BIF_DIR_LIST_BASE13_ADDR_SHIFT 12 | ||
526 | #define EUR_CR_BIF_DIR_LIST_BASE14 0x0C6C | ||
527 | #define EUR_CR_BIF_DIR_LIST_BASE14_ADDR_MASK 0xFFFFF000U | ||
528 | #define EUR_CR_BIF_DIR_LIST_BASE14_ADDR_SHIFT 12 | ||
529 | #define EUR_CR_BIF_DIR_LIST_BASE15 0x0C70 | ||
530 | #define EUR_CR_BIF_DIR_LIST_BASE15_ADDR_MASK 0xFFFFF000U | ||
531 | #define EUR_CR_BIF_DIR_LIST_BASE15_ADDR_SHIFT 12 | ||
532 | #define EUR_CR_BIF_BANK_SET 0x0C74 | ||
533 | #define EUR_CR_BIF_BANK_SET_SELECT_MASK 0x000003FFU | ||
534 | #define EUR_CR_BIF_BANK_SET_SELECT_SHIFT 0 | ||
535 | #define EUR_CR_BIF_BANK0 0x0C78 | ||
536 | #define EUR_CR_BIF_BANK0_INDEX_EDM_MASK 0x0000000FU | ||
537 | #define EUR_CR_BIF_BANK0_INDEX_EDM_SHIFT 0 | ||
538 | #define EUR_CR_BIF_BANK0_INDEX_TA_MASK 0x000000F0U | ||
539 | #define EUR_CR_BIF_BANK0_INDEX_TA_SHIFT 4 | ||
540 | #define EUR_CR_BIF_BANK0_INDEX_HOST_MASK 0x00000F00U | ||
541 | #define EUR_CR_BIF_BANK0_INDEX_HOST_SHIFT 8 | ||
542 | #define EUR_CR_BIF_BANK0_INDEX_3D_MASK 0x0000F000U | ||
543 | #define EUR_CR_BIF_BANK0_INDEX_3D_SHIFT 12 | ||
544 | #define EUR_CR_BIF_BANK0_INDEX_2D_MASK 0x000F0000U | ||
545 | #define EUR_CR_BIF_BANK0_INDEX_2D_SHIFT 16 | ||
546 | #define EUR_CR_BIF_BANK1 0x0C7C | ||
547 | #define EUR_CR_BIF_BANK1_INDEX_EDM_MASK 0x0000000FU | ||
548 | #define EUR_CR_BIF_BANK1_INDEX_EDM_SHIFT 0 | ||
549 | #define EUR_CR_BIF_BANK1_INDEX_TA_MASK 0x000000F0U | ||
550 | #define EUR_CR_BIF_BANK1_INDEX_TA_SHIFT 4 | ||
551 | #define EUR_CR_BIF_BANK1_INDEX_HOST_MASK 0x00000F00U | ||
552 | #define EUR_CR_BIF_BANK1_INDEX_HOST_SHIFT 8 | ||
553 | #define EUR_CR_BIF_BANK1_INDEX_3D_MASK 0x0000F000U | ||
554 | #define EUR_CR_BIF_BANK1_INDEX_3D_SHIFT 12 | ||
555 | #define EUR_CR_BIF_BANK1_INDEX_2D_MASK 0x000F0000U | ||
556 | #define EUR_CR_BIF_BANK1_INDEX_2D_SHIFT 16 | ||
557 | #define EUR_CR_BIF_ADT_TTE 0x0C80 | ||
558 | #define EUR_CR_BIF_ADT_TTE_VALUE_MASK 0x000000FFU | ||
559 | #define EUR_CR_BIF_ADT_TTE_VALUE_SHIFT 0 | ||
560 | #define EUR_CR_BIF_DIR_LIST_BASE0 0x0C84 | ||
561 | #define EUR_CR_BIF_DIR_LIST_BASE0_ADDR_MASK 0xFFFFF000U | ||
562 | #define EUR_CR_BIF_DIR_LIST_BASE0_ADDR_SHIFT 12 | ||
563 | #define EUR_CR_BIF_TWOD_REQ_BASE 0x0C88 | ||
564 | #define EUR_CR_BIF_TWOD_REQ_BASE_ADDR_MASK 0xFFF00000U | ||
565 | #define EUR_CR_BIF_TWOD_REQ_BASE_ADDR_SHIFT 20 | ||
566 | #define EUR_CR_BIF_TA_REQ_BASE 0x0C90 | ||
567 | #define EUR_CR_BIF_TA_REQ_BASE_ADDR_MASK 0xFFF00000U | ||
568 | #define EUR_CR_BIF_TA_REQ_BASE_ADDR_SHIFT 20 | ||
569 | #define EUR_CR_BIF_MEM_ARB_FLOWRATES_1 0x0C94 | ||
570 | #define EUR_CR_BIF_MEM_ARB_FLOWRATES_1_MMU_MASK 0x00000007U | ||
571 | #define EUR_CR_BIF_MEM_ARB_FLOWRATES_1_MMU_SHIFT 0 | ||
572 | #define EUR_CR_BIF_MEM_ARB_FLOWRATES_1_CACHE_MASK 0x00000038U | ||
573 | #define EUR_CR_BIF_MEM_ARB_FLOWRATES_1_CACHE_SHIFT 3 | ||
574 | #define EUR_CR_BIF_MEM_ARB_FLOWRATES_1_VDM_MASK 0x000001C0U | ||
575 | #define EUR_CR_BIF_MEM_ARB_FLOWRATES_1_VDM_SHIFT 6 | ||
576 | #define EUR_CR_BIF_MEM_ARB_FLOWRATES_1_TE_MASK 0x00000E00U | ||
577 | #define EUR_CR_BIF_MEM_ARB_FLOWRATES_1_TE_SHIFT 9 | ||
578 | #define EUR_CR_BIF_MEM_ARB_FLOWRATES_1_TWOD_MASK 0x00007000U | ||
579 | #define EUR_CR_BIF_MEM_ARB_FLOWRATES_1_TWOD_SHIFT 12 | ||
580 | #define EUR_CR_BIF_MEM_ARB_FLOWRATES_1_PBE_MASK 0x00038000U | ||
581 | #define EUR_CR_BIF_MEM_ARB_FLOWRATES_1_PBE_SHIFT 15 | ||
582 | #define EUR_CR_BIF_MEM_ARB_FLOWRATES_2 0x0C98 | ||
583 | #define EUR_CR_BIF_MEM_ARB_FLOWRATES_2_HOST_MASK 0x00000007U | ||
584 | #define EUR_CR_BIF_MEM_ARB_FLOWRATES_2_HOST_SHIFT 0 | ||
585 | #define EUR_CR_BIF_MEM_ARB_FLOWRATES_2_USE_MASK 0x00000038U | ||
586 | #define EUR_CR_BIF_MEM_ARB_FLOWRATES_2_USE_SHIFT 3 | ||
587 | #define EUR_CR_BIF_MEM_ARB_FLOWRATES_2_ISP_MASK 0x000001C0U | ||
588 | #define EUR_CR_BIF_MEM_ARB_FLOWRATES_2_ISP_SHIFT 6 | ||
589 | #define EUR_CR_BIF_MEM_ARB_FLOWRATES_2_TSPP_MASK 0x00000E00U | ||
590 | #define EUR_CR_BIF_MEM_ARB_FLOWRATES_2_TSPP_SHIFT 9 | ||
591 | #define EUR_CR_BIF_MEM_ARB_CONFIG 0x0CA0 | ||
592 | #define EUR_CR_BIF_MEM_ARB_CONFIG_PAGE_SIZE_MASK 0x0000000FU | ||
593 | #define EUR_CR_BIF_MEM_ARB_CONFIG_PAGE_SIZE_SHIFT 0 | ||
594 | #define EUR_CR_BIF_MEM_ARB_CONFIG_BEST_CNT_MASK 0x00000FF0U | ||
595 | #define EUR_CR_BIF_MEM_ARB_CONFIG_BEST_CNT_SHIFT 4 | ||
596 | #define EUR_CR_BIF_MEM_ARB_CONFIG_TTE_THRESH_MASK 0x00FFF000U | ||
597 | #define EUR_CR_BIF_MEM_ARB_CONFIG_TTE_THRESH_SHIFT 12 | ||
598 | #define EUR_CR_BIF_MEM_REQ_STAT 0x0CA8 | ||
599 | #define EUR_CR_BIF_MEM_REQ_STAT_READS_MASK 0x000000FFU | ||
600 | #define EUR_CR_BIF_MEM_REQ_STAT_READS_SHIFT 0 | ||
601 | #define EUR_CR_BIF_3D_REQ_BASE 0x0CAC | ||
602 | #define EUR_CR_BIF_3D_REQ_BASE_ADDR_MASK 0xFFF00000U | ||
603 | #define EUR_CR_BIF_3D_REQ_BASE_ADDR_SHIFT 20 | ||
604 | #define EUR_CR_BIF_ZLS_REQ_BASE 0x0CB0 | ||
605 | #define EUR_CR_BIF_ZLS_REQ_BASE_ADDR_MASK 0xFFF00000U | ||
606 | #define EUR_CR_BIF_ZLS_REQ_BASE_ADDR_SHIFT 20 | ||
607 | #define EUR_CR_BIF_BANK_STATUS 0x0CB4 | ||
608 | #define EUR_CR_BIF_BANK_STATUS_3D_CURRENT_BANK_MASK 0x00000001U | ||
609 | #define EUR_CR_BIF_BANK_STATUS_3D_CURRENT_BANK_SHIFT 0 | ||
610 | #define EUR_CR_BIF_BANK_STATUS_TA_CURRENT_BANK_MASK 0x00000002U | ||
611 | #define EUR_CR_BIF_BANK_STATUS_TA_CURRENT_BANK_SHIFT 1 | ||
612 | #define EUR_CR_2D_BLIT_STATUS 0x0E04 | ||
613 | #define EUR_CR_2D_BLIT_STATUS_COMPLETE_MASK 0x00FFFFFFU | ||
614 | #define EUR_CR_2D_BLIT_STATUS_COMPLETE_SHIFT 0 | ||
615 | #define EUR_CR_2D_BLIT_STATUS_BUSY_MASK 0x01000000U | ||
616 | #define EUR_CR_2D_BLIT_STATUS_BUSY_SHIFT 24 | ||
617 | #define EUR_CR_2D_VIRTUAL_FIFO_0 0x0E10 | ||
618 | #define EUR_CR_2D_VIRTUAL_FIFO_0_ENABLE_MASK 0x00000001U | ||
619 | #define EUR_CR_2D_VIRTUAL_FIFO_0_ENABLE_SHIFT 0 | ||
620 | #define EUR_CR_2D_VIRTUAL_FIFO_0_FLOWRATE_MASK 0x0000000EU | ||
621 | #define EUR_CR_2D_VIRTUAL_FIFO_0_FLOWRATE_SHIFT 1 | ||
622 | #define EUR_CR_2D_VIRTUAL_FIFO_0_FLOWRATE_DIV_MASK 0x00000FF0U | ||
623 | #define EUR_CR_2D_VIRTUAL_FIFO_0_FLOWRATE_DIV_SHIFT 4 | ||
624 | #define EUR_CR_2D_VIRTUAL_FIFO_0_FLOWRATE_MUL_MASK 0x0000F000U | ||
625 | #define EUR_CR_2D_VIRTUAL_FIFO_0_FLOWRATE_MUL_SHIFT 12 | ||
626 | #define EUR_CR_2D_VIRTUAL_FIFO_1 0x0E14 | ||
627 | #define EUR_CR_2D_VIRTUAL_FIFO_1_MIN_ACC_MASK 0x00000FFFU | ||
628 | #define EUR_CR_2D_VIRTUAL_FIFO_1_MIN_ACC_SHIFT 0 | ||
629 | #define EUR_CR_2D_VIRTUAL_FIFO_1_MAX_ACC_MASK 0x00FFF000U | ||
630 | #define EUR_CR_2D_VIRTUAL_FIFO_1_MAX_ACC_SHIFT 12 | ||
631 | #define EUR_CR_2D_VIRTUAL_FIFO_1_MIN_METRIC_MASK 0xFF000000U | ||
632 | #define EUR_CR_2D_VIRTUAL_FIFO_1_MIN_METRIC_SHIFT 24 | ||
633 | #define EUR_CR_2D_SOCIF 0x0E18 | ||
634 | #define EUR_CR_2D_SOCIF_FREESPACE_MASK 0x000000FFU | ||
635 | #define EUR_CR_2D_SOCIF_FREESPACE_SHIFT 0 | ||
636 | #define EUR_CR_2D_ALPHA 0x0E1C | ||
637 | #define EUR_CR_2D_ALPHA_COMPONENT_ONE_MASK 0x0000FF00U | ||
638 | #define EUR_CR_2D_ALPHA_COMPONENT_ONE_SHIFT 8 | ||
639 | #define EUR_CR_2D_ALPHA_COMPONENT_ZERO_MASK 0x000000FFU | ||
640 | #define EUR_CR_2D_ALPHA_COMPONENT_ZERO_SHIFT 0 | ||
641 | #define EUR_CR_USE_CODE_BASE(X) (0x0A0C + (4 * (X))) | ||
642 | #define EUR_CR_USE_CODE_BASE_ADDR_MASK 0x01FFFFFFU | ||
643 | #define EUR_CR_USE_CODE_BASE_ADDR_SHIFT 0 | ||
644 | #define EUR_CR_USE_CODE_BASE_DM_MASK 0x06000000U | ||
645 | #define EUR_CR_USE_CODE_BASE_DM_SHIFT 25 | ||
646 | #define EUR_CR_USE_CODE_BASE_SIZE_UINT32 16 | ||
647 | #define EUR_CR_USE_CODE_BASE_NUM_ENTRIES 16 | ||
648 | |||
649 | #endif | ||
650 | |||
diff --git a/drivers/gpu/pvr/sgx543_v1.164defs.h b/drivers/gpu/pvr/sgx543_v1.164defs.h new file mode 100644 index 00000000000..e25cc5cc42c --- /dev/null +++ b/drivers/gpu/pvr/sgx543_v1.164defs.h | |||
@@ -0,0 +1,1284 @@ | |||
1 | /********************************************************************** | ||
2 | * | ||
3 | * Copyright(c) 2008 Imagination Technologies Ltd. All rights reserved. | ||
4 | * | ||
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. | ||
8 | * | ||
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. | ||
13 | * | ||
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. | ||
17 | * | ||
18 | * The full GNU General Public License is included in this distribution in | ||
19 | * the file called "COPYING". | ||
20 | * | ||
21 | * Contact Information: | ||
22 | * Imagination Technologies Ltd. <gpl-support@imgtec.com> | ||
23 | * Home Park Estate, Kings Langley, Herts, WD4 8LZ, UK | ||
24 | * | ||
25 | ******************************************************************************/ | ||
26 | |||
27 | #ifndef _SGX543DEFS_KM_H_ | ||
28 | #define _SGX543DEFS_KM_H_ | ||
29 | |||
30 | #define EUR_CR_CLKGATECTL 0x0000 | ||
31 | #define EUR_CR_CLKGATECTL_ISP_CLKG_MASK 0x00000003U | ||
32 | #define EUR_CR_CLKGATECTL_ISP_CLKG_SHIFT 0 | ||
33 | #define EUR_CR_CLKGATECTL_ISP_CLKG_SIGNED 0 | ||
34 | #define EUR_CR_CLKGATECTL_ISP2_CLKG_MASK 0x0000000CU | ||
35 | #define EUR_CR_CLKGATECTL_ISP2_CLKG_SHIFT 2 | ||
36 | #define EUR_CR_CLKGATECTL_ISP2_CLKG_SIGNED 0 | ||
37 | #define EUR_CR_CLKGATECTL_TSP_CLKG_MASK 0x00000030U | ||
38 | #define EUR_CR_CLKGATECTL_TSP_CLKG_SHIFT 4 | ||
39 | #define EUR_CR_CLKGATECTL_TSP_CLKG_SIGNED 0 | ||
40 | #define EUR_CR_CLKGATECTL_TE_CLKG_MASK 0x000000C0U | ||
41 | #define EUR_CR_CLKGATECTL_TE_CLKG_SHIFT 6 | ||
42 | #define EUR_CR_CLKGATECTL_TE_CLKG_SIGNED 0 | ||
43 | #define EUR_CR_CLKGATECTL_MTE_CLKG_MASK 0x00000300U | ||
44 | #define EUR_CR_CLKGATECTL_MTE_CLKG_SHIFT 8 | ||
45 | #define EUR_CR_CLKGATECTL_MTE_CLKG_SIGNED 0 | ||
46 | #define EUR_CR_CLKGATECTL_DPM_CLKG_MASK 0x00000C00U | ||
47 | #define EUR_CR_CLKGATECTL_DPM_CLKG_SHIFT 10 | ||
48 | #define EUR_CR_CLKGATECTL_DPM_CLKG_SIGNED 0 | ||
49 | #define EUR_CR_CLKGATECTL_VDM_CLKG_MASK 0x00003000U | ||
50 | #define EUR_CR_CLKGATECTL_VDM_CLKG_SHIFT 12 | ||
51 | #define EUR_CR_CLKGATECTL_VDM_CLKG_SIGNED 0 | ||
52 | #define EUR_CR_CLKGATECTL_PDS_CLKG_MASK 0x0000C000U | ||
53 | #define EUR_CR_CLKGATECTL_PDS_CLKG_SHIFT 14 | ||
54 | #define EUR_CR_CLKGATECTL_PDS_CLKG_SIGNED 0 | ||
55 | #define EUR_CR_CLKGATECTL_IDXFIFO_CLKG_MASK 0x00030000U | ||
56 | #define EUR_CR_CLKGATECTL_IDXFIFO_CLKG_SHIFT 16 | ||
57 | #define EUR_CR_CLKGATECTL_IDXFIFO_CLKG_SIGNED 0 | ||
58 | #define EUR_CR_CLKGATECTL_TA_CLKG_MASK 0x000C0000U | ||
59 | #define EUR_CR_CLKGATECTL_TA_CLKG_SHIFT 18 | ||
60 | #define EUR_CR_CLKGATECTL_TA_CLKG_SIGNED 0 | ||
61 | #define EUR_CR_CLKGATECTL_BIF_CORE_CLKG_MASK 0x00300000U | ||
62 | #define EUR_CR_CLKGATECTL_BIF_CORE_CLKG_SHIFT 20 | ||
63 | #define EUR_CR_CLKGATECTL_BIF_CORE_CLKG_SIGNED 0 | ||
64 | #define EUR_CR_CLKGATECTL_AUTO_MAN_REG_MASK 0x01000000U | ||
65 | #define EUR_CR_CLKGATECTL_AUTO_MAN_REG_SHIFT 24 | ||
66 | #define EUR_CR_CLKGATECTL_AUTO_MAN_REG_SIGNED 0 | ||
67 | #define EUR_CR_CLKGATECTL_SYSTEM_CLKG_MASK 0x10000000U | ||
68 | #define EUR_CR_CLKGATECTL_SYSTEM_CLKG_SHIFT 28 | ||
69 | #define EUR_CR_CLKGATECTL_SYSTEM_CLKG_SIGNED 0 | ||
70 | #define EUR_CR_CLKGATECTL2 0x0004 | ||
71 | #define EUR_CR_CLKGATECTL2_PBE_CLKG_MASK 0x00000003U | ||
72 | #define EUR_CR_CLKGATECTL2_PBE_CLKG_SHIFT 0 | ||
73 | #define EUR_CR_CLKGATECTL2_PBE_CLKG_SIGNED 0 | ||
74 | #define EUR_CR_CLKGATECTL2_TCU_L2_CLKG_MASK 0x0000000CU | ||
75 | #define EUR_CR_CLKGATECTL2_TCU_L2_CLKG_SHIFT 2 | ||
76 | #define EUR_CR_CLKGATECTL2_TCU_L2_CLKG_SIGNED 0 | ||
77 | #define EUR_CR_CLKGATECTL2_UCACHEL2_CLKG_MASK 0x00000030U | ||
78 | #define EUR_CR_CLKGATECTL2_UCACHEL2_CLKG_SHIFT 4 | ||
79 | #define EUR_CR_CLKGATECTL2_UCACHEL2_CLKG_SIGNED 0 | ||
80 | #define EUR_CR_CLKGATECTL2_USE0_CLKG_MASK 0x000000C0U | ||
81 | #define EUR_CR_CLKGATECTL2_USE0_CLKG_SHIFT 6 | ||
82 | #define EUR_CR_CLKGATECTL2_USE0_CLKG_SIGNED 0 | ||
83 | #define EUR_CR_CLKGATECTL2_ITR0_CLKG_MASK 0x00000300U | ||
84 | #define EUR_CR_CLKGATECTL2_ITR0_CLKG_SHIFT 8 | ||
85 | #define EUR_CR_CLKGATECTL2_ITR0_CLKG_SIGNED 0 | ||
86 | #define EUR_CR_CLKGATECTL2_TEX0_CLKG_MASK 0x00000C00U | ||
87 | #define EUR_CR_CLKGATECTL2_TEX0_CLKG_SHIFT 10 | ||
88 | #define EUR_CR_CLKGATECTL2_TEX0_CLKG_SIGNED 0 | ||
89 | #define EUR_CR_CLKGATECTL2_USE1_CLKG_MASK 0x0000C000U | ||
90 | #define EUR_CR_CLKGATECTL2_USE1_CLKG_SHIFT 14 | ||
91 | #define EUR_CR_CLKGATECTL2_USE1_CLKG_SIGNED 0 | ||
92 | #define EUR_CR_CLKGATECTL2_ITR1_CLKG_MASK 0x00030000U | ||
93 | #define EUR_CR_CLKGATECTL2_ITR1_CLKG_SHIFT 16 | ||
94 | #define EUR_CR_CLKGATECTL2_ITR1_CLKG_SIGNED 0 | ||
95 | #define EUR_CR_CLKGATECTL2_TEX1_CLKG_MASK 0x000C0000U | ||
96 | #define EUR_CR_CLKGATECTL2_TEX1_CLKG_SHIFT 18 | ||
97 | #define EUR_CR_CLKGATECTL2_TEX1_CLKG_SIGNED 0 | ||
98 | #define EUR_CR_CLKGATECTL2_DCU_L2_CLKG_MASK 0x00C00000U | ||
99 | #define EUR_CR_CLKGATECTL2_DCU_L2_CLKG_SHIFT 22 | ||
100 | #define EUR_CR_CLKGATECTL2_DCU_L2_CLKG_SIGNED 0 | ||
101 | #define EUR_CR_CLKGATECTL2_DCU1_L0L1_CLKG_MASK 0x03000000U | ||
102 | #define EUR_CR_CLKGATECTL2_DCU1_L0L1_CLKG_SHIFT 24 | ||
103 | #define EUR_CR_CLKGATECTL2_DCU1_L0L1_CLKG_SIGNED 0 | ||
104 | #define EUR_CR_CLKGATECTL2_DCU0_L0L1_CLKG_MASK 0x0C000000U | ||
105 | #define EUR_CR_CLKGATECTL2_DCU0_L0L1_CLKG_SHIFT 26 | ||
106 | #define EUR_CR_CLKGATECTL2_DCU0_L0L1_CLKG_SIGNED 0 | ||
107 | #define EUR_CR_CLKGATESTATUS 0x0008 | ||
108 | #define EUR_CR_CLKGATESTATUS_ISP_CLKS_MASK 0x00000001U | ||
109 | #define EUR_CR_CLKGATESTATUS_ISP_CLKS_SHIFT 0 | ||
110 | #define EUR_CR_CLKGATESTATUS_ISP_CLKS_SIGNED 0 | ||
111 | #define EUR_CR_CLKGATESTATUS_ISP2_CLKS_MASK 0x00000002U | ||
112 | #define EUR_CR_CLKGATESTATUS_ISP2_CLKS_SHIFT 1 | ||
113 | #define EUR_CR_CLKGATESTATUS_ISP2_CLKS_SIGNED 0 | ||
114 | #define EUR_CR_CLKGATESTATUS_TSP_CLKS_MASK 0x00000004U | ||
115 | #define EUR_CR_CLKGATESTATUS_TSP_CLKS_SHIFT 2 | ||
116 | #define EUR_CR_CLKGATESTATUS_TSP_CLKS_SIGNED 0 | ||
117 | #define EUR_CR_CLKGATESTATUS_TE_CLKS_MASK 0x00000008U | ||
118 | #define EUR_CR_CLKGATESTATUS_TE_CLKS_SHIFT 3 | ||
119 | #define EUR_CR_CLKGATESTATUS_TE_CLKS_SIGNED 0 | ||
120 | #define EUR_CR_CLKGATESTATUS_MTE_CLKS_MASK 0x00000010U | ||
121 | #define EUR_CR_CLKGATESTATUS_MTE_CLKS_SHIFT 4 | ||
122 | #define EUR_CR_CLKGATESTATUS_MTE_CLKS_SIGNED 0 | ||
123 | #define EUR_CR_CLKGATESTATUS_DPM_CLKS_MASK 0x00000020U | ||
124 | #define EUR_CR_CLKGATESTATUS_DPM_CLKS_SHIFT 5 | ||
125 | #define EUR_CR_CLKGATESTATUS_DPM_CLKS_SIGNED 0 | ||
126 | #define EUR_CR_CLKGATESTATUS_VDM_CLKS_MASK 0x00000040U | ||
127 | #define EUR_CR_CLKGATESTATUS_VDM_CLKS_SHIFT 6 | ||
128 | #define EUR_CR_CLKGATESTATUS_VDM_CLKS_SIGNED 0 | ||
129 | #define EUR_CR_CLKGATESTATUS_PDS_CLKS_MASK 0x00000080U | ||
130 | #define EUR_CR_CLKGATESTATUS_PDS_CLKS_SHIFT 7 | ||
131 | #define EUR_CR_CLKGATESTATUS_PDS_CLKS_SIGNED 0 | ||
132 | #define EUR_CR_CLKGATESTATUS_PBE_CLKS_MASK 0x00000100U | ||
133 | #define EUR_CR_CLKGATESTATUS_PBE_CLKS_SHIFT 8 | ||
134 | #define EUR_CR_CLKGATESTATUS_PBE_CLKS_SIGNED 0 | ||
135 | #define EUR_CR_CLKGATESTATUS_TCU_L2_CLKS_MASK 0x00000200U | ||
136 | #define EUR_CR_CLKGATESTATUS_TCU_L2_CLKS_SHIFT 9 | ||
137 | #define EUR_CR_CLKGATESTATUS_TCU_L2_CLKS_SIGNED 0 | ||
138 | #define EUR_CR_CLKGATESTATUS_UCACHEL2_CLKS_MASK 0x00000400U | ||
139 | #define EUR_CR_CLKGATESTATUS_UCACHEL2_CLKS_SHIFT 10 | ||
140 | #define EUR_CR_CLKGATESTATUS_UCACHEL2_CLKS_SIGNED 0 | ||
141 | #define EUR_CR_CLKGATESTATUS_USE0_CLKS_MASK 0x00000800U | ||
142 | #define EUR_CR_CLKGATESTATUS_USE0_CLKS_SHIFT 11 | ||
143 | #define EUR_CR_CLKGATESTATUS_USE0_CLKS_SIGNED 0 | ||
144 | #define EUR_CR_CLKGATESTATUS_ITR0_CLKS_MASK 0x00001000U | ||
145 | #define EUR_CR_CLKGATESTATUS_ITR0_CLKS_SHIFT 12 | ||
146 | #define EUR_CR_CLKGATESTATUS_ITR0_CLKS_SIGNED 0 | ||
147 | #define EUR_CR_CLKGATESTATUS_TEX0_CLKS_MASK 0x00002000U | ||
148 | #define EUR_CR_CLKGATESTATUS_TEX0_CLKS_SHIFT 13 | ||
149 | #define EUR_CR_CLKGATESTATUS_TEX0_CLKS_SIGNED 0 | ||
150 | #define EUR_CR_CLKGATESTATUS_USE1_CLKS_MASK 0x00008000U | ||
151 | #define EUR_CR_CLKGATESTATUS_USE1_CLKS_SHIFT 15 | ||
152 | #define EUR_CR_CLKGATESTATUS_USE1_CLKS_SIGNED 0 | ||
153 | #define EUR_CR_CLKGATESTATUS_ITR1_CLKS_MASK 0x00010000U | ||
154 | #define EUR_CR_CLKGATESTATUS_ITR1_CLKS_SHIFT 16 | ||
155 | #define EUR_CR_CLKGATESTATUS_ITR1_CLKS_SIGNED 0 | ||
156 | #define EUR_CR_CLKGATESTATUS_TEX1_CLKS_MASK 0x00020000U | ||
157 | #define EUR_CR_CLKGATESTATUS_TEX1_CLKS_SHIFT 17 | ||
158 | #define EUR_CR_CLKGATESTATUS_TEX1_CLKS_SIGNED 0 | ||
159 | #define EUR_CR_CLKGATESTATUS_IDXFIFO_CLKS_MASK 0x00080000U | ||
160 | #define EUR_CR_CLKGATESTATUS_IDXFIFO_CLKS_SHIFT 19 | ||
161 | #define EUR_CR_CLKGATESTATUS_IDXFIFO_CLKS_SIGNED 0 | ||
162 | #define EUR_CR_CLKGATESTATUS_TA_CLKS_MASK 0x00100000U | ||
163 | #define EUR_CR_CLKGATESTATUS_TA_CLKS_SHIFT 20 | ||
164 | #define EUR_CR_CLKGATESTATUS_TA_CLKS_SIGNED 0 | ||
165 | #define EUR_CR_CLKGATESTATUS_DCU_L2_CLKS_MASK 0x00200000U | ||
166 | #define EUR_CR_CLKGATESTATUS_DCU_L2_CLKS_SHIFT 21 | ||
167 | #define EUR_CR_CLKGATESTATUS_DCU_L2_CLKS_SIGNED 0 | ||
168 | #define EUR_CR_CLKGATESTATUS_DCU0_L0L1_CLKS_MASK 0x00400000U | ||
169 | #define EUR_CR_CLKGATESTATUS_DCU0_L0L1_CLKS_SHIFT 22 | ||
170 | #define EUR_CR_CLKGATESTATUS_DCU0_L0L1_CLKS_SIGNED 0 | ||
171 | #define EUR_CR_CLKGATESTATUS_DCU1_L0L1_CLKS_MASK 0x00800000U | ||
172 | #define EUR_CR_CLKGATESTATUS_DCU1_L0L1_CLKS_SHIFT 23 | ||
173 | #define EUR_CR_CLKGATESTATUS_DCU1_L0L1_CLKS_SIGNED 0 | ||
174 | #define EUR_CR_CLKGATESTATUS_BIF_CORE_CLKS_MASK 0x01000000U | ||
175 | #define EUR_CR_CLKGATESTATUS_BIF_CORE_CLKS_SHIFT 24 | ||
176 | #define EUR_CR_CLKGATESTATUS_BIF_CORE_CLKS_SIGNED 0 | ||
177 | #define EUR_CR_CLKGATECTLOVR 0x000C | ||
178 | #define EUR_CR_CLKGATECTLOVR_ISP_CLKO_MASK 0x00000003U | ||
179 | #define EUR_CR_CLKGATECTLOVR_ISP_CLKO_SHIFT 0 | ||
180 | #define EUR_CR_CLKGATECTLOVR_ISP_CLKO_SIGNED 0 | ||
181 | #define EUR_CR_CLKGATECTLOVR_ISP2_CLKO_MASK 0x0000000CU | ||
182 | #define EUR_CR_CLKGATECTLOVR_ISP2_CLKO_SHIFT 2 | ||
183 | #define EUR_CR_CLKGATECTLOVR_ISP2_CLKO_SIGNED 0 | ||
184 | #define EUR_CR_CLKGATECTLOVR_TSP_CLKO_MASK 0x00000030U | ||
185 | #define EUR_CR_CLKGATECTLOVR_TSP_CLKO_SHIFT 4 | ||
186 | #define EUR_CR_CLKGATECTLOVR_TSP_CLKO_SIGNED 0 | ||
187 | #define EUR_CR_CLKGATECTLOVR_TE_CLKO_MASK 0x000000C0U | ||
188 | #define EUR_CR_CLKGATECTLOVR_TE_CLKO_SHIFT 6 | ||
189 | #define EUR_CR_CLKGATECTLOVR_TE_CLKO_SIGNED 0 | ||
190 | #define EUR_CR_CLKGATECTLOVR_MTE_CLKO_MASK 0x00000300U | ||
191 | #define EUR_CR_CLKGATECTLOVR_MTE_CLKO_SHIFT 8 | ||
192 | #define EUR_CR_CLKGATECTLOVR_MTE_CLKO_SIGNED 0 | ||
193 | #define EUR_CR_CLKGATECTLOVR_DPM_CLKO_MASK 0x00000C00U | ||
194 | #define EUR_CR_CLKGATECTLOVR_DPM_CLKO_SHIFT 10 | ||
195 | #define EUR_CR_CLKGATECTLOVR_DPM_CLKO_SIGNED 0 | ||
196 | #define EUR_CR_CLKGATECTLOVR_VDM_CLKO_MASK 0x00003000U | ||
197 | #define EUR_CR_CLKGATECTLOVR_VDM_CLKO_SHIFT 12 | ||
198 | #define EUR_CR_CLKGATECTLOVR_VDM_CLKO_SIGNED 0 | ||
199 | #define EUR_CR_CLKGATECTLOVR_PDS_CLKO_MASK 0x0000C000U | ||
200 | #define EUR_CR_CLKGATECTLOVR_PDS_CLKO_SHIFT 14 | ||
201 | #define EUR_CR_CLKGATECTLOVR_PDS_CLKO_SIGNED 0 | ||
202 | #define EUR_CR_CLKGATECTLOVR_IDXFIFO_CLKO_MASK 0x00030000U | ||
203 | #define EUR_CR_CLKGATECTLOVR_IDXFIFO_CLKO_SHIFT 16 | ||
204 | #define EUR_CR_CLKGATECTLOVR_IDXFIFO_CLKO_SIGNED 0 | ||
205 | #define EUR_CR_CLKGATECTLOVR_TA_CLKO_MASK 0x000C0000U | ||
206 | #define EUR_CR_CLKGATECTLOVR_TA_CLKO_SHIFT 18 | ||
207 | #define EUR_CR_CLKGATECTLOVR_TA_CLKO_SIGNED 0 | ||
208 | #define EUR_CR_CLKGATECTLOVR_BIF_CORE_CLKO_MASK 0x00300000U | ||
209 | #define EUR_CR_CLKGATECTLOVR_BIF_CORE_CLKO_SHIFT 20 | ||
210 | #define EUR_CR_CLKGATECTLOVR_BIF_CORE_CLKO_SIGNED 0 | ||
211 | #define EUR_CR_POWER 0x001C | ||
212 | #define EUR_CR_POWER_PIPE_DISABLE_MASK 0x00000001U | ||
213 | #define EUR_CR_POWER_PIPE_DISABLE_SHIFT 0 | ||
214 | #define EUR_CR_POWER_PIPE_DISABLE_SIGNED 0 | ||
215 | #define EUR_CR_CORE_ID 0x0020 | ||
216 | #define EUR_CR_CORE_ID_CONFIG_MULTI_MASK 0x00000001U | ||
217 | #define EUR_CR_CORE_ID_CONFIG_MULTI_SHIFT 0 | ||
218 | #define EUR_CR_CORE_ID_CONFIG_MULTI_SIGNED 0 | ||
219 | #define EUR_CR_CORE_ID_CONFIG_BASE_MASK 0x00000002U | ||
220 | #define EUR_CR_CORE_ID_CONFIG_BASE_SHIFT 1 | ||
221 | #define EUR_CR_CORE_ID_CONFIG_BASE_SIGNED 0 | ||
222 | #define EUR_CR_CORE_ID_CONFIG_MASK 0x000000FCU | ||
223 | #define EUR_CR_CORE_ID_CONFIG_SHIFT 2 | ||
224 | #define EUR_CR_CORE_ID_CONFIG_SIGNED 0 | ||
225 | #define EUR_CR_CORE_ID_CONFIG_CORES_MASK 0x00000F00U | ||
226 | #define EUR_CR_CORE_ID_CONFIG_CORES_SHIFT 8 | ||
227 | #define EUR_CR_CORE_ID_CONFIG_CORES_SIGNED 0 | ||
228 | #define EUR_CR_CORE_ID_CONFIG_SLC_MASK 0x0000F000U | ||
229 | #define EUR_CR_CORE_ID_CONFIG_SLC_SHIFT 12 | ||
230 | #define EUR_CR_CORE_ID_CONFIG_SLC_SIGNED 0 | ||
231 | #define EUR_CR_CORE_ID_ID_MASK 0xFFFF0000U | ||
232 | #define EUR_CR_CORE_ID_ID_SHIFT 16 | ||
233 | #define EUR_CR_CORE_ID_ID_SIGNED 0 | ||
234 | #define EUR_CR_CORE_REVISION 0x0024 | ||
235 | #define EUR_CR_CORE_REVISION_MAINTENANCE_MASK 0x000000FFU | ||
236 | #define EUR_CR_CORE_REVISION_MAINTENANCE_SHIFT 0 | ||
237 | #define EUR_CR_CORE_REVISION_MAINTENANCE_SIGNED 0 | ||
238 | #define EUR_CR_CORE_REVISION_MINOR_MASK 0x0000FF00U | ||
239 | #define EUR_CR_CORE_REVISION_MINOR_SHIFT 8 | ||
240 | #define EUR_CR_CORE_REVISION_MINOR_SIGNED 0 | ||
241 | #define EUR_CR_CORE_REVISION_MAJOR_MASK 0x00FF0000U | ||
242 | #define EUR_CR_CORE_REVISION_MAJOR_SHIFT 16 | ||
243 | #define EUR_CR_CORE_REVISION_MAJOR_SIGNED 0 | ||
244 | #define EUR_CR_CORE_REVISION_DESIGNER_MASK 0xFF000000U | ||
245 | #define EUR_CR_CORE_REVISION_DESIGNER_SHIFT 24 | ||
246 | #define EUR_CR_CORE_REVISION_DESIGNER_SIGNED 0 | ||
247 | #define EUR_CR_DESIGNER_REV_FIELD1 0x0028 | ||
248 | #define EUR_CR_DESIGNER_REV_FIELD1_DESIGNER_REV_FIELD1_MASK 0xFFFFFFFFU | ||
249 | #define EUR_CR_DESIGNER_REV_FIELD1_DESIGNER_REV_FIELD1_SHIFT 0 | ||
250 | #define EUR_CR_DESIGNER_REV_FIELD1_DESIGNER_REV_FIELD1_SIGNED 0 | ||
251 | #define EUR_CR_DESIGNER_REV_FIELD2 0x002C | ||
252 | #define EUR_CR_DESIGNER_REV_FIELD2_DESIGNER_REV_FIELD2_MASK 0xFFFFFFFFU | ||
253 | #define EUR_CR_DESIGNER_REV_FIELD2_DESIGNER_REV_FIELD2_SHIFT 0 | ||
254 | #define EUR_CR_DESIGNER_REV_FIELD2_DESIGNER_REV_FIELD2_SIGNED 0 | ||
255 | #define EUR_CR_SOFT_RESET 0x0080 | ||
256 | #define EUR_CR_SOFT_RESET_BIF_RESET_MASK 0x00000001U | ||
257 | #define EUR_CR_SOFT_RESET_BIF_RESET_SHIFT 0 | ||
258 | #define EUR_CR_SOFT_RESET_BIF_RESET_SIGNED 0 | ||
259 | #define EUR_CR_SOFT_RESET_VDM_RESET_MASK 0x00000002U | ||
260 | #define EUR_CR_SOFT_RESET_VDM_RESET_SHIFT 1 | ||
261 | #define EUR_CR_SOFT_RESET_VDM_RESET_SIGNED 0 | ||
262 | #define EUR_CR_SOFT_RESET_DPM_RESET_MASK 0x00000004U | ||
263 | #define EUR_CR_SOFT_RESET_DPM_RESET_SHIFT 2 | ||
264 | #define EUR_CR_SOFT_RESET_DPM_RESET_SIGNED 0 | ||
265 | #define EUR_CR_SOFT_RESET_TE_RESET_MASK 0x00000008U | ||
266 | #define EUR_CR_SOFT_RESET_TE_RESET_SHIFT 3 | ||
267 | #define EUR_CR_SOFT_RESET_TE_RESET_SIGNED 0 | ||
268 | #define EUR_CR_SOFT_RESET_MTE_RESET_MASK 0x00000010U | ||
269 | #define EUR_CR_SOFT_RESET_MTE_RESET_SHIFT 4 | ||
270 | #define EUR_CR_SOFT_RESET_MTE_RESET_SIGNED 0 | ||
271 | #define EUR_CR_SOFT_RESET_ISP_RESET_MASK 0x00000020U | ||
272 | #define EUR_CR_SOFT_RESET_ISP_RESET_SHIFT 5 | ||
273 | #define EUR_CR_SOFT_RESET_ISP_RESET_SIGNED 0 | ||
274 | #define EUR_CR_SOFT_RESET_ISP2_RESET_MASK 0x00000040U | ||
275 | #define EUR_CR_SOFT_RESET_ISP2_RESET_SHIFT 6 | ||
276 | #define EUR_CR_SOFT_RESET_ISP2_RESET_SIGNED 0 | ||
277 | #define EUR_CR_SOFT_RESET_TSP_RESET_MASK 0x00000080U | ||
278 | #define EUR_CR_SOFT_RESET_TSP_RESET_SHIFT 7 | ||
279 | #define EUR_CR_SOFT_RESET_TSP_RESET_SIGNED 0 | ||
280 | #define EUR_CR_SOFT_RESET_PDS_RESET_MASK 0x00000100U | ||
281 | #define EUR_CR_SOFT_RESET_PDS_RESET_SHIFT 8 | ||
282 | #define EUR_CR_SOFT_RESET_PDS_RESET_SIGNED 0 | ||
283 | #define EUR_CR_SOFT_RESET_PBE_RESET_MASK 0x00000200U | ||
284 | #define EUR_CR_SOFT_RESET_PBE_RESET_SHIFT 9 | ||
285 | #define EUR_CR_SOFT_RESET_PBE_RESET_SIGNED 0 | ||
286 | #define EUR_CR_SOFT_RESET_TCU_L2_RESET_MASK 0x00000400U | ||
287 | #define EUR_CR_SOFT_RESET_TCU_L2_RESET_SHIFT 10 | ||
288 | #define EUR_CR_SOFT_RESET_TCU_L2_RESET_SIGNED 0 | ||
289 | #define EUR_CR_SOFT_RESET_UCACHEL2_RESET_MASK 0x00000800U | ||
290 | #define EUR_CR_SOFT_RESET_UCACHEL2_RESET_SHIFT 11 | ||
291 | #define EUR_CR_SOFT_RESET_UCACHEL2_RESET_SIGNED 0 | ||
292 | #define EUR_CR_SOFT_RESET_ITR_RESET_MASK 0x00002000U | ||
293 | #define EUR_CR_SOFT_RESET_ITR_RESET_SHIFT 13 | ||
294 | #define EUR_CR_SOFT_RESET_ITR_RESET_SIGNED 0 | ||
295 | #define EUR_CR_SOFT_RESET_TEX_RESET_MASK 0x00004000U | ||
296 | #define EUR_CR_SOFT_RESET_TEX_RESET_SHIFT 14 | ||
297 | #define EUR_CR_SOFT_RESET_TEX_RESET_SIGNED 0 | ||
298 | #define EUR_CR_SOFT_RESET_USE_RESET_MASK 0x00008000U | ||
299 | #define EUR_CR_SOFT_RESET_USE_RESET_SHIFT 15 | ||
300 | #define EUR_CR_SOFT_RESET_USE_RESET_SIGNED 0 | ||
301 | #define EUR_CR_SOFT_RESET_IDXFIFO_RESET_MASK 0x00010000U | ||
302 | #define EUR_CR_SOFT_RESET_IDXFIFO_RESET_SHIFT 16 | ||
303 | #define EUR_CR_SOFT_RESET_IDXFIFO_RESET_SIGNED 0 | ||
304 | #define EUR_CR_SOFT_RESET_TA_RESET_MASK 0x00020000U | ||
305 | #define EUR_CR_SOFT_RESET_TA_RESET_SHIFT 17 | ||
306 | #define EUR_CR_SOFT_RESET_TA_RESET_SIGNED 0 | ||
307 | #define EUR_CR_SOFT_RESET_DCU_L2_RESET_MASK 0x00040000U | ||
308 | #define EUR_CR_SOFT_RESET_DCU_L2_RESET_SHIFT 18 | ||
309 | #define EUR_CR_SOFT_RESET_DCU_L2_RESET_SIGNED 0 | ||
310 | #define EUR_CR_SOFT_RESET_DCU_L0L1_RESET_MASK 0x00080000U | ||
311 | #define EUR_CR_SOFT_RESET_DCU_L0L1_RESET_SHIFT 19 | ||
312 | #define EUR_CR_SOFT_RESET_DCU_L0L1_RESET_SIGNED 0 | ||
313 | #define EUR_CR_EVENT_HOST_ENABLE2 0x0110 | ||
314 | #define EUR_CR_EVENT_HOST_ENABLE2_DATA_BREAKPOINT_UNTRAPPED_MASK 0x00000800U | ||
315 | #define EUR_CR_EVENT_HOST_ENABLE2_DATA_BREAKPOINT_UNTRAPPED_SHIFT 11 | ||
316 | #define EUR_CR_EVENT_HOST_ENABLE2_DATA_BREAKPOINT_UNTRAPPED_SIGNED 0 | ||
317 | #define EUR_CR_EVENT_HOST_ENABLE2_DATA_BREAKPOINT_TRAPPED_MASK 0x00000400U | ||
318 | #define EUR_CR_EVENT_HOST_ENABLE2_DATA_BREAKPOINT_TRAPPED_SHIFT 10 | ||
319 | #define EUR_CR_EVENT_HOST_ENABLE2_DATA_BREAKPOINT_TRAPPED_SIGNED 0 | ||
320 | #define EUR_CR_EVENT_HOST_ENABLE2_MTE_CONTEXT_DRAINED_MASK 0x00000200U | ||
321 | #define EUR_CR_EVENT_HOST_ENABLE2_MTE_CONTEXT_DRAINED_SHIFT 9 | ||
322 | #define EUR_CR_EVENT_HOST_ENABLE2_MTE_CONTEXT_DRAINED_SIGNED 0 | ||
323 | #define EUR_CR_EVENT_HOST_ENABLE2_ISP2_ZLS_CSW_FINISHED_MASK 0x00000100U | ||
324 | #define EUR_CR_EVENT_HOST_ENABLE2_ISP2_ZLS_CSW_FINISHED_SHIFT 8 | ||
325 | #define EUR_CR_EVENT_HOST_ENABLE2_ISP2_ZLS_CSW_FINISHED_SIGNED 0 | ||
326 | #define EUR_CR_EVENT_HOST_ENABLE2_DCU_INVALCOMPLETE_MASK 0x00000080U | ||
327 | #define EUR_CR_EVENT_HOST_ENABLE2_DCU_INVALCOMPLETE_SHIFT 7 | ||
328 | #define EUR_CR_EVENT_HOST_ENABLE2_DCU_INVALCOMPLETE_SIGNED 0 | ||
329 | #define EUR_CR_EVENT_HOST_ENABLE2_MTE_STATE_FLUSHED_MASK 0x00000040U | ||
330 | #define EUR_CR_EVENT_HOST_ENABLE2_MTE_STATE_FLUSHED_SHIFT 6 | ||
331 | #define EUR_CR_EVENT_HOST_ENABLE2_MTE_STATE_FLUSHED_SIGNED 0 | ||
332 | #define EUR_CR_EVENT_HOST_ENABLE2_TE_RGNHDR_INIT_COMPLETE_MASK 0x00000020U | ||
333 | #define EUR_CR_EVENT_HOST_ENABLE2_TE_RGNHDR_INIT_COMPLETE_SHIFT 5 | ||
334 | #define EUR_CR_EVENT_HOST_ENABLE2_TE_RGNHDR_INIT_COMPLETE_SIGNED 0 | ||
335 | #define EUR_CR_EVENT_HOST_ENABLE2_TRIG_TA_MASK 0x00000010U | ||
336 | #define EUR_CR_EVENT_HOST_ENABLE2_TRIG_TA_SHIFT 4 | ||
337 | #define EUR_CR_EVENT_HOST_ENABLE2_TRIG_TA_SIGNED 0 | ||
338 | #define EUR_CR_EVENT_HOST_ENABLE2_TRIG_3D_MASK 0x00000008U | ||
339 | #define EUR_CR_EVENT_HOST_ENABLE2_TRIG_3D_SHIFT 3 | ||
340 | #define EUR_CR_EVENT_HOST_ENABLE2_TRIG_3D_SIGNED 0 | ||
341 | #define EUR_CR_EVENT_HOST_ENABLE2_TRIG_DL_MASK 0x00000004U | ||
342 | #define EUR_CR_EVENT_HOST_ENABLE2_TRIG_DL_SHIFT 2 | ||
343 | #define EUR_CR_EVENT_HOST_ENABLE2_TRIG_DL_SIGNED 0 | ||
344 | #define EUR_CR_EVENT_HOST_ENABLE2_DPM_3D_FREE_LOAD_MASK 0x00000002U | ||
345 | #define EUR_CR_EVENT_HOST_ENABLE2_DPM_3D_FREE_LOAD_SHIFT 1 | ||
346 | #define EUR_CR_EVENT_HOST_ENABLE2_DPM_3D_FREE_LOAD_SIGNED 0 | ||
347 | #define EUR_CR_EVENT_HOST_ENABLE2_DPM_TA_FREE_LOAD_MASK 0x00000001U | ||
348 | #define EUR_CR_EVENT_HOST_ENABLE2_DPM_TA_FREE_LOAD_SHIFT 0 | ||
349 | #define EUR_CR_EVENT_HOST_ENABLE2_DPM_TA_FREE_LOAD_SIGNED 0 | ||
350 | #define EUR_CR_EVENT_HOST_CLEAR2 0x0114 | ||
351 | #define EUR_CR_EVENT_HOST_CLEAR2_DATA_BREAKPOINT_UNTRAPPED_MASK 0x00000800U | ||
352 | #define EUR_CR_EVENT_HOST_CLEAR2_DATA_BREAKPOINT_UNTRAPPED_SHIFT 11 | ||
353 | #define EUR_CR_EVENT_HOST_CLEAR2_DATA_BREAKPOINT_UNTRAPPED_SIGNED 0 | ||
354 | #define EUR_CR_EVENT_HOST_CLEAR2_DATA_BREAKPOINT_TRAPPED_MASK 0x00000400U | ||
355 | #define EUR_CR_EVENT_HOST_CLEAR2_DATA_BREAKPOINT_TRAPPED_SHIFT 10 | ||
356 | #define EUR_CR_EVENT_HOST_CLEAR2_DATA_BREAKPOINT_TRAPPED_SIGNED 0 | ||
357 | #define EUR_CR_EVENT_HOST_CLEAR2_MTE_CONTEXT_DRAINED_MASK 0x00000200U | ||
358 | #define EUR_CR_EVENT_HOST_CLEAR2_MTE_CONTEXT_DRAINED_SHIFT 9 | ||
359 | #define EUR_CR_EVENT_HOST_CLEAR2_MTE_CONTEXT_DRAINED_SIGNED 0 | ||
360 | #define EUR_CR_EVENT_HOST_CLEAR2_ISP2_ZLS_CSW_FINISHED_MASK 0x00000100U | ||
361 | #define EUR_CR_EVENT_HOST_CLEAR2_ISP2_ZLS_CSW_FINISHED_SHIFT 8 | ||
362 | #define EUR_CR_EVENT_HOST_CLEAR2_ISP2_ZLS_CSW_FINISHED_SIGNED 0 | ||
363 | #define EUR_CR_EVENT_HOST_CLEAR2_DCU_INVALCOMPLETE_MASK 0x00000080U | ||
364 | #define EUR_CR_EVENT_HOST_CLEAR2_DCU_INVALCOMPLETE_SHIFT 7 | ||
365 | #define EUR_CR_EVENT_HOST_CLEAR2_DCU_INVALCOMPLETE_SIGNED 0 | ||
366 | #define EUR_CR_EVENT_HOST_CLEAR2_MTE_STATE_FLUSHED_MASK 0x00000040U | ||
367 | #define EUR_CR_EVENT_HOST_CLEAR2_MTE_STATE_FLUSHED_SHIFT 6 | ||
368 | #define EUR_CR_EVENT_HOST_CLEAR2_MTE_STATE_FLUSHED_SIGNED 0 | ||
369 | #define EUR_CR_EVENT_HOST_CLEAR2_TE_RGNHDR_INIT_COMPLETE_MASK 0x00000020U | ||
370 | #define EUR_CR_EVENT_HOST_CLEAR2_TE_RGNHDR_INIT_COMPLETE_SHIFT 5 | ||
371 | #define EUR_CR_EVENT_HOST_CLEAR2_TE_RGNHDR_INIT_COMPLETE_SIGNED 0 | ||
372 | #define EUR_CR_EVENT_HOST_CLEAR2_TRIG_TA_MASK 0x00000010U | ||
373 | #define EUR_CR_EVENT_HOST_CLEAR2_TRIG_TA_SHIFT 4 | ||
374 | #define EUR_CR_EVENT_HOST_CLEAR2_TRIG_TA_SIGNED 0 | ||
375 | #define EUR_CR_EVENT_HOST_CLEAR2_TRIG_3D_MASK 0x00000008U | ||
376 | #define EUR_CR_EVENT_HOST_CLEAR2_TRIG_3D_SHIFT 3 | ||
377 | #define EUR_CR_EVENT_HOST_CLEAR2_TRIG_3D_SIGNED 0 | ||
378 | #define EUR_CR_EVENT_HOST_CLEAR2_TRIG_DL_MASK 0x00000004U | ||
379 | #define EUR_CR_EVENT_HOST_CLEAR2_TRIG_DL_SHIFT 2 | ||
380 | #define EUR_CR_EVENT_HOST_CLEAR2_TRIG_DL_SIGNED 0 | ||
381 | #define EUR_CR_EVENT_HOST_CLEAR2_DPM_3D_FREE_LOAD_MASK 0x00000002U | ||
382 | #define EUR_CR_EVENT_HOST_CLEAR2_DPM_3D_FREE_LOAD_SHIFT 1 | ||
383 | #define EUR_CR_EVENT_HOST_CLEAR2_DPM_3D_FREE_LOAD_SIGNED 0 | ||
384 | #define EUR_CR_EVENT_HOST_CLEAR2_DPM_TA_FREE_LOAD_MASK 0x00000001U | ||
385 | #define EUR_CR_EVENT_HOST_CLEAR2_DPM_TA_FREE_LOAD_SHIFT 0 | ||
386 | #define EUR_CR_EVENT_HOST_CLEAR2_DPM_TA_FREE_LOAD_SIGNED 0 | ||
387 | #define EUR_CR_EVENT_STATUS2 0x0118 | ||
388 | #define EUR_CR_EVENT_STATUS2_DATA_BREAKPOINT_UNTRAPPED_MASK 0x00000800U | ||
389 | #define EUR_CR_EVENT_STATUS2_DATA_BREAKPOINT_UNTRAPPED_SHIFT 11 | ||
390 | #define EUR_CR_EVENT_STATUS2_DATA_BREAKPOINT_UNTRAPPED_SIGNED 0 | ||
391 | #define EUR_CR_EVENT_STATUS2_DATA_BREAKPOINT_TRAPPED_MASK 0x00000400U | ||
392 | #define EUR_CR_EVENT_STATUS2_DATA_BREAKPOINT_TRAPPED_SHIFT 10 | ||
393 | #define EUR_CR_EVENT_STATUS2_DATA_BREAKPOINT_TRAPPED_SIGNED 0 | ||
394 | #define EUR_CR_EVENT_STATUS2_MTE_CONTEXT_DRAINED_MASK 0x00000200U | ||
395 | #define EUR_CR_EVENT_STATUS2_MTE_CONTEXT_DRAINED_SHIFT 9 | ||
396 | #define EUR_CR_EVENT_STATUS2_MTE_CONTEXT_DRAINED_SIGNED 0 | ||
397 | #define EUR_CR_EVENT_STATUS2_ISP2_ZLS_CSW_FINISHED_MASK 0x00000100U | ||
398 | #define EUR_CR_EVENT_STATUS2_ISP2_ZLS_CSW_FINISHED_SHIFT 8 | ||
399 | #define EUR_CR_EVENT_STATUS2_ISP2_ZLS_CSW_FINISHED_SIGNED 0 | ||
400 | #define EUR_CR_EVENT_STATUS2_DCU_INVALCOMPLETE_MASK 0x00000080U | ||
401 | #define EUR_CR_EVENT_STATUS2_DCU_INVALCOMPLETE_SHIFT 7 | ||
402 | #define EUR_CR_EVENT_STATUS2_DCU_INVALCOMPLETE_SIGNED 0 | ||
403 | #define EUR_CR_EVENT_STATUS2_MTE_STATE_FLUSHED_MASK 0x00000040U | ||
404 | #define EUR_CR_EVENT_STATUS2_MTE_STATE_FLUSHED_SHIFT 6 | ||
405 | #define EUR_CR_EVENT_STATUS2_MTE_STATE_FLUSHED_SIGNED 0 | ||
406 | #define EUR_CR_EVENT_STATUS2_TE_RGNHDR_INIT_COMPLETE_MASK 0x00000020U | ||
407 | #define EUR_CR_EVENT_STATUS2_TE_RGNHDR_INIT_COMPLETE_SHIFT 5 | ||
408 | #define EUR_CR_EVENT_STATUS2_TE_RGNHDR_INIT_COMPLETE_SIGNED 0 | ||
409 | #define EUR_CR_EVENT_STATUS2_TRIG_TA_MASK 0x00000010U | ||
410 | #define EUR_CR_EVENT_STATUS2_TRIG_TA_SHIFT 4 | ||
411 | #define EUR_CR_EVENT_STATUS2_TRIG_TA_SIGNED 0 | ||
412 | #define EUR_CR_EVENT_STATUS2_TRIG_3D_MASK 0x00000008U | ||
413 | #define EUR_CR_EVENT_STATUS2_TRIG_3D_SHIFT 3 | ||
414 | #define EUR_CR_EVENT_STATUS2_TRIG_3D_SIGNED 0 | ||
415 | #define EUR_CR_EVENT_STATUS2_TRIG_DL_MASK 0x00000004U | ||
416 | #define EUR_CR_EVENT_STATUS2_TRIG_DL_SHIFT 2 | ||
417 | #define EUR_CR_EVENT_STATUS2_TRIG_DL_SIGNED 0 | ||
418 | #define EUR_CR_EVENT_STATUS2_DPM_3D_FREE_LOAD_MASK 0x00000002U | ||
419 | #define EUR_CR_EVENT_STATUS2_DPM_3D_FREE_LOAD_SHIFT 1 | ||
420 | #define EUR_CR_EVENT_STATUS2_DPM_3D_FREE_LOAD_SIGNED 0 | ||
421 | #define EUR_CR_EVENT_STATUS2_DPM_TA_FREE_LOAD_MASK 0x00000001U | ||
422 | #define EUR_CR_EVENT_STATUS2_DPM_TA_FREE_LOAD_SHIFT 0 | ||
423 | #define EUR_CR_EVENT_STATUS2_DPM_TA_FREE_LOAD_SIGNED 0 | ||
424 | #define EUR_CR_EVENT_STATUS 0x012C | ||
425 | #define EUR_CR_EVENT_STATUS_MASTER_INTERRUPT_MASK 0x80000000U | ||
426 | #define EUR_CR_EVENT_STATUS_MASTER_INTERRUPT_SHIFT 31 | ||
427 | #define EUR_CR_EVENT_STATUS_MASTER_INTERRUPT_SIGNED 0 | ||
428 | #define EUR_CR_EVENT_STATUS_TIMER_MASK 0x20000000U | ||
429 | #define EUR_CR_EVENT_STATUS_TIMER_SHIFT 29 | ||
430 | #define EUR_CR_EVENT_STATUS_TIMER_SIGNED 0 | ||
431 | #define EUR_CR_EVENT_STATUS_TA_DPM_FAULT_MASK 0x10000000U | ||
432 | #define EUR_CR_EVENT_STATUS_TA_DPM_FAULT_SHIFT 28 | ||
433 | #define EUR_CR_EVENT_STATUS_TA_DPM_FAULT_SIGNED 0 | ||
434 | #define EUR_CR_EVENT_STATUS_TCU_INVALCOMPLETE_MASK 0x04000000U | ||
435 | #define EUR_CR_EVENT_STATUS_TCU_INVALCOMPLETE_SHIFT 26 | ||
436 | #define EUR_CR_EVENT_STATUS_TCU_INVALCOMPLETE_SIGNED 0 | ||
437 | #define EUR_CR_EVENT_STATUS_DPM_OUT_OF_MEMORY_ZLS_MASK 0x02000000U | ||
438 | #define EUR_CR_EVENT_STATUS_DPM_OUT_OF_MEMORY_ZLS_SHIFT 25 | ||
439 | #define EUR_CR_EVENT_STATUS_DPM_OUT_OF_MEMORY_ZLS_SIGNED 0 | ||
440 | #define EUR_CR_EVENT_STATUS_DPM_TA_MEM_FREE_MASK 0x01000000U | ||
441 | #define EUR_CR_EVENT_STATUS_DPM_TA_MEM_FREE_SHIFT 24 | ||
442 | #define EUR_CR_EVENT_STATUS_DPM_TA_MEM_FREE_SIGNED 0 | ||
443 | #define EUR_CR_EVENT_STATUS_ISP_END_TILE_MASK 0x00800000U | ||
444 | #define EUR_CR_EVENT_STATUS_ISP_END_TILE_SHIFT 23 | ||
445 | #define EUR_CR_EVENT_STATUS_ISP_END_TILE_SIGNED 0 | ||
446 | #define EUR_CR_EVENT_STATUS_DPM_INITEND_MASK 0x00400000U | ||
447 | #define EUR_CR_EVENT_STATUS_DPM_INITEND_SHIFT 22 | ||
448 | #define EUR_CR_EVENT_STATUS_DPM_INITEND_SIGNED 0 | ||
449 | #define EUR_CR_EVENT_STATUS_OTPM_LOADED_MASK 0x00200000U | ||
450 | #define EUR_CR_EVENT_STATUS_OTPM_LOADED_SHIFT 21 | ||
451 | #define EUR_CR_EVENT_STATUS_OTPM_LOADED_SIGNED 0 | ||
452 | #define EUR_CR_EVENT_STATUS_OTPM_INV_MASK 0x00100000U | ||
453 | #define EUR_CR_EVENT_STATUS_OTPM_INV_SHIFT 20 | ||
454 | #define EUR_CR_EVENT_STATUS_OTPM_INV_SIGNED 0 | ||
455 | #define EUR_CR_EVENT_STATUS_OTPM_FLUSHED_MASK 0x00080000U | ||
456 | #define EUR_CR_EVENT_STATUS_OTPM_FLUSHED_SHIFT 19 | ||
457 | #define EUR_CR_EVENT_STATUS_OTPM_FLUSHED_SIGNED 0 | ||
458 | #define EUR_CR_EVENT_STATUS_PIXELBE_END_RENDER_MASK 0x00040000U | ||
459 | #define EUR_CR_EVENT_STATUS_PIXELBE_END_RENDER_SHIFT 18 | ||
460 | #define EUR_CR_EVENT_STATUS_PIXELBE_END_RENDER_SIGNED 0 | ||
461 | #define EUR_CR_EVENT_STATUS_BREAKPOINT_MASK 0x00008000U | ||
462 | #define EUR_CR_EVENT_STATUS_BREAKPOINT_SHIFT 15 | ||
463 | #define EUR_CR_EVENT_STATUS_BREAKPOINT_SIGNED 0 | ||
464 | #define EUR_CR_EVENT_STATUS_SW_EVENT_MASK 0x00004000U | ||
465 | #define EUR_CR_EVENT_STATUS_SW_EVENT_SHIFT 14 | ||
466 | #define EUR_CR_EVENT_STATUS_SW_EVENT_SIGNED 0 | ||
467 | #define EUR_CR_EVENT_STATUS_TA_FINISHED_MASK 0x00002000U | ||
468 | #define EUR_CR_EVENT_STATUS_TA_FINISHED_SHIFT 13 | ||
469 | #define EUR_CR_EVENT_STATUS_TA_FINISHED_SIGNED 0 | ||
470 | #define EUR_CR_EVENT_STATUS_TA_TERMINATE_MASK 0x00001000U | ||
471 | #define EUR_CR_EVENT_STATUS_TA_TERMINATE_SHIFT 12 | ||
472 | #define EUR_CR_EVENT_STATUS_TA_TERMINATE_SIGNED 0 | ||
473 | #define EUR_CR_EVENT_STATUS_TPC_CLEAR_MASK 0x00000800U | ||
474 | #define EUR_CR_EVENT_STATUS_TPC_CLEAR_SHIFT 11 | ||
475 | #define EUR_CR_EVENT_STATUS_TPC_CLEAR_SIGNED 0 | ||
476 | #define EUR_CR_EVENT_STATUS_TPC_FLUSH_MASK 0x00000400U | ||
477 | #define EUR_CR_EVENT_STATUS_TPC_FLUSH_SHIFT 10 | ||
478 | #define EUR_CR_EVENT_STATUS_TPC_FLUSH_SIGNED 0 | ||
479 | #define EUR_CR_EVENT_STATUS_DPM_CONTROL_CLEAR_MASK 0x00000200U | ||
480 | #define EUR_CR_EVENT_STATUS_DPM_CONTROL_CLEAR_SHIFT 9 | ||
481 | #define EUR_CR_EVENT_STATUS_DPM_CONTROL_CLEAR_SIGNED 0 | ||
482 | #define EUR_CR_EVENT_STATUS_DPM_CONTROL_LOAD_MASK 0x00000100U | ||
483 | #define EUR_CR_EVENT_STATUS_DPM_CONTROL_LOAD_SHIFT 8 | ||
484 | #define EUR_CR_EVENT_STATUS_DPM_CONTROL_LOAD_SIGNED 0 | ||
485 | #define EUR_CR_EVENT_STATUS_DPM_CONTROL_STORE_MASK 0x00000080U | ||
486 | #define EUR_CR_EVENT_STATUS_DPM_CONTROL_STORE_SHIFT 7 | ||
487 | #define EUR_CR_EVENT_STATUS_DPM_CONTROL_STORE_SIGNED 0 | ||
488 | #define EUR_CR_EVENT_STATUS_DPM_STATE_CLEAR_MASK 0x00000040U | ||
489 | #define EUR_CR_EVENT_STATUS_DPM_STATE_CLEAR_SHIFT 6 | ||
490 | #define EUR_CR_EVENT_STATUS_DPM_STATE_CLEAR_SIGNED 0 | ||
491 | #define EUR_CR_EVENT_STATUS_DPM_STATE_LOAD_MASK 0x00000020U | ||
492 | #define EUR_CR_EVENT_STATUS_DPM_STATE_LOAD_SHIFT 5 | ||
493 | #define EUR_CR_EVENT_STATUS_DPM_STATE_LOAD_SIGNED 0 | ||
494 | #define EUR_CR_EVENT_STATUS_DPM_STATE_STORE_MASK 0x00000010U | ||
495 | #define EUR_CR_EVENT_STATUS_DPM_STATE_STORE_SHIFT 4 | ||
496 | #define EUR_CR_EVENT_STATUS_DPM_STATE_STORE_SIGNED 0 | ||
497 | #define EUR_CR_EVENT_STATUS_DPM_REACHED_MEM_THRESH_MASK 0x00000008U | ||
498 | #define EUR_CR_EVENT_STATUS_DPM_REACHED_MEM_THRESH_SHIFT 3 | ||
499 | #define EUR_CR_EVENT_STATUS_DPM_REACHED_MEM_THRESH_SIGNED 0 | ||
500 | #define EUR_CR_EVENT_STATUS_DPM_OUT_OF_MEMORY_GBL_MASK 0x00000004U | ||
501 | #define EUR_CR_EVENT_STATUS_DPM_OUT_OF_MEMORY_GBL_SHIFT 2 | ||
502 | #define EUR_CR_EVENT_STATUS_DPM_OUT_OF_MEMORY_GBL_SIGNED 0 | ||
503 | #define EUR_CR_EVENT_STATUS_DPM_OUT_OF_MEMORY_MT_MASK 0x00000002U | ||
504 | #define EUR_CR_EVENT_STATUS_DPM_OUT_OF_MEMORY_MT_SHIFT 1 | ||
505 | #define EUR_CR_EVENT_STATUS_DPM_OUT_OF_MEMORY_MT_SIGNED 0 | ||
506 | #define EUR_CR_EVENT_STATUS_DPM_3D_MEM_FREE_MASK 0x00000001U | ||
507 | #define EUR_CR_EVENT_STATUS_DPM_3D_MEM_FREE_SHIFT 0 | ||
508 | #define EUR_CR_EVENT_STATUS_DPM_3D_MEM_FREE_SIGNED 0 | ||
509 | #define EUR_CR_EVENT_HOST_ENABLE 0x0130 | ||
510 | #define EUR_CR_EVENT_HOST_ENABLE_MASTER_INTERRUPT_MASK 0x80000000U | ||
511 | #define EUR_CR_EVENT_HOST_ENABLE_MASTER_INTERRUPT_SHIFT 31 | ||
512 | #define EUR_CR_EVENT_HOST_ENABLE_MASTER_INTERRUPT_SIGNED 0 | ||
513 | #define EUR_CR_EVENT_HOST_ENABLE_TIMER_MASK 0x20000000U | ||
514 | #define EUR_CR_EVENT_HOST_ENABLE_TIMER_SHIFT 29 | ||
515 | #define EUR_CR_EVENT_HOST_ENABLE_TIMER_SIGNED 0 | ||
516 | #define EUR_CR_EVENT_HOST_ENABLE_TA_DPM_FAULT_MASK 0x10000000U | ||
517 | #define EUR_CR_EVENT_HOST_ENABLE_TA_DPM_FAULT_SHIFT 28 | ||
518 | #define EUR_CR_EVENT_HOST_ENABLE_TA_DPM_FAULT_SIGNED 0 | ||
519 | #define EUR_CR_EVENT_HOST_ENABLE_TCU_INVALCOMPLETE_MASK 0x04000000U | ||
520 | #define EUR_CR_EVENT_HOST_ENABLE_TCU_INVALCOMPLETE_SHIFT 26 | ||
521 | #define EUR_CR_EVENT_HOST_ENABLE_TCU_INVALCOMPLETE_SIGNED 0 | ||
522 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_OUT_OF_MEMORY_ZLS_MASK 0x02000000U | ||
523 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_OUT_OF_MEMORY_ZLS_SHIFT 25 | ||
524 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_OUT_OF_MEMORY_ZLS_SIGNED 0 | ||
525 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_TA_MEM_FREE_MASK 0x01000000U | ||
526 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_TA_MEM_FREE_SHIFT 24 | ||
527 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_TA_MEM_FREE_SIGNED 0 | ||
528 | #define EUR_CR_EVENT_HOST_ENABLE_ISP_END_TILE_MASK 0x00800000U | ||
529 | #define EUR_CR_EVENT_HOST_ENABLE_ISP_END_TILE_SHIFT 23 | ||
530 | #define EUR_CR_EVENT_HOST_ENABLE_ISP_END_TILE_SIGNED 0 | ||
531 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_INITEND_MASK 0x00400000U | ||
532 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_INITEND_SHIFT 22 | ||
533 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_INITEND_SIGNED 0 | ||
534 | #define EUR_CR_EVENT_HOST_ENABLE_OTPM_LOADED_MASK 0x00200000U | ||
535 | #define EUR_CR_EVENT_HOST_ENABLE_OTPM_LOADED_SHIFT 21 | ||
536 | #define EUR_CR_EVENT_HOST_ENABLE_OTPM_LOADED_SIGNED 0 | ||
537 | #define EUR_CR_EVENT_HOST_ENABLE_OTPM_INV_MASK 0x00100000U | ||
538 | #define EUR_CR_EVENT_HOST_ENABLE_OTPM_INV_SHIFT 20 | ||
539 | #define EUR_CR_EVENT_HOST_ENABLE_OTPM_INV_SIGNED 0 | ||
540 | #define EUR_CR_EVENT_HOST_ENABLE_OTPM_FLUSHED_MASK 0x00080000U | ||
541 | #define EUR_CR_EVENT_HOST_ENABLE_OTPM_FLUSHED_SHIFT 19 | ||
542 | #define EUR_CR_EVENT_HOST_ENABLE_OTPM_FLUSHED_SIGNED 0 | ||
543 | #define EUR_CR_EVENT_HOST_ENABLE_PIXELBE_END_RENDER_MASK 0x00040000U | ||
544 | #define EUR_CR_EVENT_HOST_ENABLE_PIXELBE_END_RENDER_SHIFT 18 | ||
545 | #define EUR_CR_EVENT_HOST_ENABLE_PIXELBE_END_RENDER_SIGNED 0 | ||
546 | #define EUR_CR_EVENT_HOST_ENABLE_BREAKPOINT_MASK 0x00008000U | ||
547 | #define EUR_CR_EVENT_HOST_ENABLE_BREAKPOINT_SHIFT 15 | ||
548 | #define EUR_CR_EVENT_HOST_ENABLE_BREAKPOINT_SIGNED 0 | ||
549 | #define EUR_CR_EVENT_HOST_ENABLE_SW_EVENT_MASK 0x00004000U | ||
550 | #define EUR_CR_EVENT_HOST_ENABLE_SW_EVENT_SHIFT 14 | ||
551 | #define EUR_CR_EVENT_HOST_ENABLE_SW_EVENT_SIGNED 0 | ||
552 | #define EUR_CR_EVENT_HOST_ENABLE_TA_FINISHED_MASK 0x00002000U | ||
553 | #define EUR_CR_EVENT_HOST_ENABLE_TA_FINISHED_SHIFT 13 | ||
554 | #define EUR_CR_EVENT_HOST_ENABLE_TA_FINISHED_SIGNED 0 | ||
555 | #define EUR_CR_EVENT_HOST_ENABLE_TA_TERMINATE_MASK 0x00001000U | ||
556 | #define EUR_CR_EVENT_HOST_ENABLE_TA_TERMINATE_SHIFT 12 | ||
557 | #define EUR_CR_EVENT_HOST_ENABLE_TA_TERMINATE_SIGNED 0 | ||
558 | #define EUR_CR_EVENT_HOST_ENABLE_TPC_CLEAR_MASK 0x00000800U | ||
559 | #define EUR_CR_EVENT_HOST_ENABLE_TPC_CLEAR_SHIFT 11 | ||
560 | #define EUR_CR_EVENT_HOST_ENABLE_TPC_CLEAR_SIGNED 0 | ||
561 | #define EUR_CR_EVENT_HOST_ENABLE_TPC_FLUSH_MASK 0x00000400U | ||
562 | #define EUR_CR_EVENT_HOST_ENABLE_TPC_FLUSH_SHIFT 10 | ||
563 | #define EUR_CR_EVENT_HOST_ENABLE_TPC_FLUSH_SIGNED 0 | ||
564 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_CONTROL_CLEAR_MASK 0x00000200U | ||
565 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_CONTROL_CLEAR_SHIFT 9 | ||
566 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_CONTROL_CLEAR_SIGNED 0 | ||
567 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_CONTROL_LOAD_MASK 0x00000100U | ||
568 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_CONTROL_LOAD_SHIFT 8 | ||
569 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_CONTROL_LOAD_SIGNED 0 | ||
570 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_CONTROL_STORE_MASK 0x00000080U | ||
571 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_CONTROL_STORE_SHIFT 7 | ||
572 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_CONTROL_STORE_SIGNED 0 | ||
573 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_STATE_CLEAR_MASK 0x00000040U | ||
574 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_STATE_CLEAR_SHIFT 6 | ||
575 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_STATE_CLEAR_SIGNED 0 | ||
576 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_STATE_LOAD_MASK 0x00000020U | ||
577 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_STATE_LOAD_SHIFT 5 | ||
578 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_STATE_LOAD_SIGNED 0 | ||
579 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_STATE_STORE_MASK 0x00000010U | ||
580 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_STATE_STORE_SHIFT 4 | ||
581 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_STATE_STORE_SIGNED 0 | ||
582 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_REACHED_MEM_THRESH_MASK 0x00000008U | ||
583 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_REACHED_MEM_THRESH_SHIFT 3 | ||
584 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_REACHED_MEM_THRESH_SIGNED 0 | ||
585 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_OUT_OF_MEMORY_GBL_MASK 0x00000004U | ||
586 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_OUT_OF_MEMORY_GBL_SHIFT 2 | ||
587 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_OUT_OF_MEMORY_GBL_SIGNED 0 | ||
588 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_OUT_OF_MEMORY_MT_MASK 0x00000002U | ||
589 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_OUT_OF_MEMORY_MT_SHIFT 1 | ||
590 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_OUT_OF_MEMORY_MT_SIGNED 0 | ||
591 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_3D_MEM_FREE_MASK 0x00000001U | ||
592 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_3D_MEM_FREE_SHIFT 0 | ||
593 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_3D_MEM_FREE_SIGNED 0 | ||
594 | #define EUR_CR_EVENT_HOST_CLEAR 0x0134 | ||
595 | #define EUR_CR_EVENT_HOST_CLEAR_MASTER_INTERRUPT_MASK 0x80000000U | ||
596 | #define EUR_CR_EVENT_HOST_CLEAR_MASTER_INTERRUPT_SHIFT 31 | ||
597 | #define EUR_CR_EVENT_HOST_CLEAR_MASTER_INTERRUPT_SIGNED 0 | ||
598 | #define EUR_CR_EVENT_HOST_CLEAR_TIMER_MASK 0x20000000U | ||
599 | #define EUR_CR_EVENT_HOST_CLEAR_TIMER_SHIFT 29 | ||
600 | #define EUR_CR_EVENT_HOST_CLEAR_TIMER_SIGNED 0 | ||
601 | #define EUR_CR_EVENT_HOST_CLEAR_TA_DPM_FAULT_MASK 0x10000000U | ||
602 | #define EUR_CR_EVENT_HOST_CLEAR_TA_DPM_FAULT_SHIFT 28 | ||
603 | #define EUR_CR_EVENT_HOST_CLEAR_TA_DPM_FAULT_SIGNED 0 | ||
604 | #define EUR_CR_EVENT_HOST_CLEAR_TCU_INVALCOMPLETE_MASK 0x04000000U | ||
605 | #define EUR_CR_EVENT_HOST_CLEAR_TCU_INVALCOMPLETE_SHIFT 26 | ||
606 | #define EUR_CR_EVENT_HOST_CLEAR_TCU_INVALCOMPLETE_SIGNED 0 | ||
607 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_OUT_OF_MEMORY_ZLS_MASK 0x02000000U | ||
608 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_OUT_OF_MEMORY_ZLS_SHIFT 25 | ||
609 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_OUT_OF_MEMORY_ZLS_SIGNED 0 | ||
610 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_TA_MEM_FREE_MASK 0x01000000U | ||
611 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_TA_MEM_FREE_SHIFT 24 | ||
612 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_TA_MEM_FREE_SIGNED 0 | ||
613 | #define EUR_CR_EVENT_HOST_CLEAR_ISP_END_TILE_MASK 0x00800000U | ||
614 | #define EUR_CR_EVENT_HOST_CLEAR_ISP_END_TILE_SHIFT 23 | ||
615 | #define EUR_CR_EVENT_HOST_CLEAR_ISP_END_TILE_SIGNED 0 | ||
616 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_INITEND_MASK 0x00400000U | ||
617 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_INITEND_SHIFT 22 | ||
618 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_INITEND_SIGNED 0 | ||
619 | #define EUR_CR_EVENT_HOST_CLEAR_OTPM_LOADED_MASK 0x00200000U | ||
620 | #define EUR_CR_EVENT_HOST_CLEAR_OTPM_LOADED_SHIFT 21 | ||
621 | #define EUR_CR_EVENT_HOST_CLEAR_OTPM_LOADED_SIGNED 0 | ||
622 | #define EUR_CR_EVENT_HOST_CLEAR_OTPM_INV_MASK 0x00100000U | ||
623 | #define EUR_CR_EVENT_HOST_CLEAR_OTPM_INV_SHIFT 20 | ||
624 | #define EUR_CR_EVENT_HOST_CLEAR_OTPM_INV_SIGNED 0 | ||
625 | #define EUR_CR_EVENT_HOST_CLEAR_OTPM_FLUSHED_MASK 0x00080000U | ||
626 | #define EUR_CR_EVENT_HOST_CLEAR_OTPM_FLUSHED_SHIFT 19 | ||
627 | #define EUR_CR_EVENT_HOST_CLEAR_OTPM_FLUSHED_SIGNED 0 | ||
628 | #define EUR_CR_EVENT_HOST_CLEAR_PIXELBE_END_RENDER_MASK 0x00040000U | ||
629 | #define EUR_CR_EVENT_HOST_CLEAR_PIXELBE_END_RENDER_SHIFT 18 | ||
630 | #define EUR_CR_EVENT_HOST_CLEAR_PIXELBE_END_RENDER_SIGNED 0 | ||
631 | #define EUR_CR_EVENT_HOST_CLEAR_BREAKPOINT_MASK 0x00008000U | ||
632 | #define EUR_CR_EVENT_HOST_CLEAR_BREAKPOINT_SHIFT 15 | ||
633 | #define EUR_CR_EVENT_HOST_CLEAR_BREAKPOINT_SIGNED 0 | ||
634 | #define EUR_CR_EVENT_HOST_CLEAR_SW_EVENT_MASK 0x00004000U | ||
635 | #define EUR_CR_EVENT_HOST_CLEAR_SW_EVENT_SHIFT 14 | ||
636 | #define EUR_CR_EVENT_HOST_CLEAR_SW_EVENT_SIGNED 0 | ||
637 | #define EUR_CR_EVENT_HOST_CLEAR_TA_FINISHED_MASK 0x00002000U | ||
638 | #define EUR_CR_EVENT_HOST_CLEAR_TA_FINISHED_SHIFT 13 | ||
639 | #define EUR_CR_EVENT_HOST_CLEAR_TA_FINISHED_SIGNED 0 | ||
640 | #define EUR_CR_EVENT_HOST_CLEAR_TA_TERMINATE_MASK 0x00001000U | ||
641 | #define EUR_CR_EVENT_HOST_CLEAR_TA_TERMINATE_SHIFT 12 | ||
642 | #define EUR_CR_EVENT_HOST_CLEAR_TA_TERMINATE_SIGNED 0 | ||
643 | #define EUR_CR_EVENT_HOST_CLEAR_TPC_CLEAR_MASK 0x00000800U | ||
644 | #define EUR_CR_EVENT_HOST_CLEAR_TPC_CLEAR_SHIFT 11 | ||
645 | #define EUR_CR_EVENT_HOST_CLEAR_TPC_CLEAR_SIGNED 0 | ||
646 | #define EUR_CR_EVENT_HOST_CLEAR_TPC_FLUSH_MASK 0x00000400U | ||
647 | #define EUR_CR_EVENT_HOST_CLEAR_TPC_FLUSH_SHIFT 10 | ||
648 | #define EUR_CR_EVENT_HOST_CLEAR_TPC_FLUSH_SIGNED 0 | ||
649 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_CONTROL_CLEAR_MASK 0x00000200U | ||
650 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_CONTROL_CLEAR_SHIFT 9 | ||
651 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_CONTROL_CLEAR_SIGNED 0 | ||
652 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_CONTROL_LOAD_MASK 0x00000100U | ||
653 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_CONTROL_LOAD_SHIFT 8 | ||
654 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_CONTROL_LOAD_SIGNED 0 | ||
655 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_CONTROL_STORE_MASK 0x00000080U | ||
656 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_CONTROL_STORE_SHIFT 7 | ||
657 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_CONTROL_STORE_SIGNED 0 | ||
658 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_STATE_CLEAR_MASK 0x00000040U | ||
659 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_STATE_CLEAR_SHIFT 6 | ||
660 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_STATE_CLEAR_SIGNED 0 | ||
661 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_STATE_LOAD_MASK 0x00000020U | ||
662 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_STATE_LOAD_SHIFT 5 | ||
663 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_STATE_LOAD_SIGNED 0 | ||
664 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_STATE_STORE_MASK 0x00000010U | ||
665 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_STATE_STORE_SHIFT 4 | ||
666 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_STATE_STORE_SIGNED 0 | ||
667 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_REACHED_MEM_THRESH_MASK 0x00000008U | ||
668 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_REACHED_MEM_THRESH_SHIFT 3 | ||
669 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_REACHED_MEM_THRESH_SIGNED 0 | ||
670 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_OUT_OF_MEMORY_GBL_MASK 0x00000004U | ||
671 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_OUT_OF_MEMORY_GBL_SHIFT 2 | ||
672 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_OUT_OF_MEMORY_GBL_SIGNED 0 | ||
673 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_OUT_OF_MEMORY_MT_MASK 0x00000002U | ||
674 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_OUT_OF_MEMORY_MT_SHIFT 1 | ||
675 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_OUT_OF_MEMORY_MT_SIGNED 0 | ||
676 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_3D_MEM_FREE_MASK 0x00000001U | ||
677 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_3D_MEM_FREE_SHIFT 0 | ||
678 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_3D_MEM_FREE_SIGNED 0 | ||
679 | #define EUR_CR_TIMER 0x0144 | ||
680 | #define EUR_CR_TIMER_VALUE_MASK 0xFFFFFFFFU | ||
681 | #define EUR_CR_TIMER_VALUE_SHIFT 0 | ||
682 | #define EUR_CR_TIMER_VALUE_SIGNED 0 | ||
683 | #define EUR_CR_EVENT_KICK1 0x0AB0 | ||
684 | #define EUR_CR_EVENT_KICK1_NOW_MASK 0x000000FFU | ||
685 | #define EUR_CR_EVENT_KICK1_NOW_SHIFT 0 | ||
686 | #define EUR_CR_EVENT_KICK1_NOW_SIGNED 0 | ||
687 | #define EUR_CR_EVENT_KICK2 0x0AC0 | ||
688 | #define EUR_CR_EVENT_KICK2_NOW_MASK 0x00000001U | ||
689 | #define EUR_CR_EVENT_KICK2_NOW_SHIFT 0 | ||
690 | #define EUR_CR_EVENT_KICK2_NOW_SIGNED 0 | ||
691 | #define EUR_CR_EVENT_KICKER 0x0AC4 | ||
692 | #define EUR_CR_EVENT_KICKER_ADDRESS_MASK 0xFFFFFFF0U | ||
693 | #define EUR_CR_EVENT_KICKER_ADDRESS_SHIFT 4 | ||
694 | #define EUR_CR_EVENT_KICKER_ADDRESS_SIGNED 0 | ||
695 | #define EUR_CR_EVENT_KICK 0x0AC8 | ||
696 | #define EUR_CR_EVENT_KICK_NOW_MASK 0x00000001U | ||
697 | #define EUR_CR_EVENT_KICK_NOW_SHIFT 0 | ||
698 | #define EUR_CR_EVENT_KICK_NOW_SIGNED 0 | ||
699 | #define EUR_CR_EVENT_TIMER 0x0ACC | ||
700 | #define EUR_CR_EVENT_TIMER_ENABLE_MASK 0x01000000U | ||
701 | #define EUR_CR_EVENT_TIMER_ENABLE_SHIFT 24 | ||
702 | #define EUR_CR_EVENT_TIMER_ENABLE_SIGNED 0 | ||
703 | #define EUR_CR_EVENT_TIMER_VALUE_MASK 0x00FFFFFFU | ||
704 | #define EUR_CR_EVENT_TIMER_VALUE_SHIFT 0 | ||
705 | #define EUR_CR_EVENT_TIMER_VALUE_SIGNED 0 | ||
706 | #define EUR_CR_PDS_INV0 0x0AD0 | ||
707 | #define EUR_CR_PDS_INV0_DSC_MASK 0x00000001U | ||
708 | #define EUR_CR_PDS_INV0_DSC_SHIFT 0 | ||
709 | #define EUR_CR_PDS_INV0_DSC_SIGNED 0 | ||
710 | #define EUR_CR_PDS_INV1 0x0AD4 | ||
711 | #define EUR_CR_PDS_INV1_DSC_MASK 0x00000001U | ||
712 | #define EUR_CR_PDS_INV1_DSC_SHIFT 0 | ||
713 | #define EUR_CR_PDS_INV1_DSC_SIGNED 0 | ||
714 | #define EUR_CR_EVENT_KICK3 0x0AD8 | ||
715 | #define EUR_CR_EVENT_KICK3_NOW_MASK 0x00000001U | ||
716 | #define EUR_CR_EVENT_KICK3_NOW_SHIFT 0 | ||
717 | #define EUR_CR_EVENT_KICK3_NOW_SIGNED 0 | ||
718 | #define EUR_CR_PDS_INV3 0x0ADC | ||
719 | #define EUR_CR_PDS_INV3_DSC_MASK 0x00000001U | ||
720 | #define EUR_CR_PDS_INV3_DSC_SHIFT 0 | ||
721 | #define EUR_CR_PDS_INV3_DSC_SIGNED 0 | ||
722 | #define EUR_CR_PDS_INV_CSC 0x0AE0 | ||
723 | #define EUR_CR_PDS_INV_CSC_KICK_MASK 0x00000001U | ||
724 | #define EUR_CR_PDS_INV_CSC_KICK_SHIFT 0 | ||
725 | #define EUR_CR_PDS_INV_CSC_KICK_SIGNED 0 | ||
726 | #define EUR_CR_BIF_CTRL 0x0C00 | ||
727 | #define EUR_CR_BIF_CTRL_NOREORDER_MASK 0x00000001U | ||
728 | #define EUR_CR_BIF_CTRL_NOREORDER_SHIFT 0 | ||
729 | #define EUR_CR_BIF_CTRL_NOREORDER_SIGNED 0 | ||
730 | #define EUR_CR_BIF_CTRL_PAUSE_MASK 0x00000002U | ||
731 | #define EUR_CR_BIF_CTRL_PAUSE_SHIFT 1 | ||
732 | #define EUR_CR_BIF_CTRL_PAUSE_SIGNED 0 | ||
733 | #define EUR_CR_BIF_CTRL_CLEAR_FAULT_MASK 0x00000010U | ||
734 | #define EUR_CR_BIF_CTRL_CLEAR_FAULT_SHIFT 4 | ||
735 | #define EUR_CR_BIF_CTRL_CLEAR_FAULT_SIGNED 0 | ||
736 | #define EUR_CR_BIF_CTRL_MMU_BYPASS_VDM_MASK 0x00000200U | ||
737 | #define EUR_CR_BIF_CTRL_MMU_BYPASS_VDM_SHIFT 9 | ||
738 | #define EUR_CR_BIF_CTRL_MMU_BYPASS_VDM_SIGNED 0 | ||
739 | #define EUR_CR_BIF_CTRL_MMU_BYPASS_TA_MASK 0x00000400U | ||
740 | #define EUR_CR_BIF_CTRL_MMU_BYPASS_TA_SHIFT 10 | ||
741 | #define EUR_CR_BIF_CTRL_MMU_BYPASS_TA_SIGNED 0 | ||
742 | #define EUR_CR_BIF_CTRL_MMU_BYPASS_PBE_MASK 0x00001000U | ||
743 | #define EUR_CR_BIF_CTRL_MMU_BYPASS_PBE_SHIFT 12 | ||
744 | #define EUR_CR_BIF_CTRL_MMU_BYPASS_PBE_SIGNED 0 | ||
745 | #define EUR_CR_BIF_CTRL_MMU_BYPASS_TSPP_MASK 0x00002000U | ||
746 | #define EUR_CR_BIF_CTRL_MMU_BYPASS_TSPP_SHIFT 13 | ||
747 | #define EUR_CR_BIF_CTRL_MMU_BYPASS_TSPP_SIGNED 0 | ||
748 | #define EUR_CR_BIF_CTRL_MMU_BYPASS_ISP_MASK 0x00004000U | ||
749 | #define EUR_CR_BIF_CTRL_MMU_BYPASS_ISP_SHIFT 14 | ||
750 | #define EUR_CR_BIF_CTRL_MMU_BYPASS_ISP_SIGNED 0 | ||
751 | #define EUR_CR_BIF_CTRL_MMU_BYPASS_USE_MASK 0x00008000U | ||
752 | #define EUR_CR_BIF_CTRL_MMU_BYPASS_USE_SHIFT 15 | ||
753 | #define EUR_CR_BIF_CTRL_MMU_BYPASS_USE_SIGNED 0 | ||
754 | #define EUR_CR_BIF_CTRL_MMU_BYPASS_PTLA_MASK 0x00010000U | ||
755 | #define EUR_CR_BIF_CTRL_MMU_BYPASS_PTLA_SHIFT 16 | ||
756 | #define EUR_CR_BIF_CTRL_MMU_BYPASS_PTLA_SIGNED 0 | ||
757 | #define EUR_CR_BIF_CTRL_MMU_BYPASS_MASTER_VDM_MASK 0x00020000U | ||
758 | #define EUR_CR_BIF_CTRL_MMU_BYPASS_MASTER_VDM_SHIFT 17 | ||
759 | #define EUR_CR_BIF_CTRL_MMU_BYPASS_MASTER_VDM_SIGNED 0 | ||
760 | #define EUR_CR_BIF_CTRL_MMU_BYPASS_MASTER_IPF_MASK 0x00040000U | ||
761 | #define EUR_CR_BIF_CTRL_MMU_BYPASS_MASTER_IPF_SHIFT 18 | ||
762 | #define EUR_CR_BIF_CTRL_MMU_BYPASS_MASTER_IPF_SIGNED 0 | ||
763 | #define EUR_CR_BIF_CTRL_MMU_BYPASS_MASTER_DPM_MASK 0x00080000U | ||
764 | #define EUR_CR_BIF_CTRL_MMU_BYPASS_MASTER_DPM_SHIFT 19 | ||
765 | #define EUR_CR_BIF_CTRL_MMU_BYPASS_MASTER_DPM_SIGNED 0 | ||
766 | #define EUR_CR_BIF_INT_STAT 0x0C04 | ||
767 | #define EUR_CR_BIF_INT_STAT_FAULT_REQ_MASK 0x00003FFFU | ||
768 | #define EUR_CR_BIF_INT_STAT_FAULT_REQ_SHIFT 0 | ||
769 | #define EUR_CR_BIF_INT_STAT_FAULT_REQ_SIGNED 0 | ||
770 | #define EUR_CR_BIF_INT_STAT_FAULT_TYPE_MASK 0x00070000U | ||
771 | #define EUR_CR_BIF_INT_STAT_FAULT_TYPE_SHIFT 16 | ||
772 | #define EUR_CR_BIF_INT_STAT_FAULT_TYPE_SIGNED 0 | ||
773 | #define EUR_CR_BIF_INT_STAT_FLUSH_COMPLETE_MASK 0x00080000U | ||
774 | #define EUR_CR_BIF_INT_STAT_FLUSH_COMPLETE_SHIFT 19 | ||
775 | #define EUR_CR_BIF_INT_STAT_FLUSH_COMPLETE_SIGNED 0 | ||
776 | #define EUR_CR_BIF_FAULT 0x0C08 | ||
777 | #define EUR_CR_BIF_FAULT_CID_MASK 0x0000000FU | ||
778 | #define EUR_CR_BIF_FAULT_CID_SHIFT 0 | ||
779 | #define EUR_CR_BIF_FAULT_CID_SIGNED 0 | ||
780 | #define EUR_CR_BIF_FAULT_SB_MASK 0x000001F0U | ||
781 | #define EUR_CR_BIF_FAULT_SB_SHIFT 4 | ||
782 | #define EUR_CR_BIF_FAULT_SB_SIGNED 0 | ||
783 | #define EUR_CR_BIF_FAULT_ADDR_MASK 0xFFFFF000U | ||
784 | #define EUR_CR_BIF_FAULT_ADDR_SHIFT 12 | ||
785 | #define EUR_CR_BIF_FAULT_ADDR_SIGNED 0 | ||
786 | #define EUR_CR_BIF_TILE0 0x0C0C | ||
787 | #define EUR_CR_BIF_TILE0_MIN_ADDRESS_MASK 0x00000FFFU | ||
788 | #define EUR_CR_BIF_TILE0_MIN_ADDRESS_SHIFT 0 | ||
789 | #define EUR_CR_BIF_TILE0_MIN_ADDRESS_SIGNED 0 | ||
790 | #define EUR_CR_BIF_TILE0_MAX_ADDRESS_MASK 0x00FFF000U | ||
791 | #define EUR_CR_BIF_TILE0_MAX_ADDRESS_SHIFT 12 | ||
792 | #define EUR_CR_BIF_TILE0_MAX_ADDRESS_SIGNED 0 | ||
793 | #define EUR_CR_BIF_TILE0_CFG_MASK 0x0F000000U | ||
794 | #define EUR_CR_BIF_TILE0_CFG_SHIFT 24 | ||
795 | #define EUR_CR_BIF_TILE0_CFG_SIGNED 0 | ||
796 | #define EUR_CR_BIF_TILE1 0x0C10 | ||
797 | #define EUR_CR_BIF_TILE1_MIN_ADDRESS_MASK 0x00000FFFU | ||
798 | #define EUR_CR_BIF_TILE1_MIN_ADDRESS_SHIFT 0 | ||
799 | #define EUR_CR_BIF_TILE1_MIN_ADDRESS_SIGNED 0 | ||
800 | #define EUR_CR_BIF_TILE1_MAX_ADDRESS_MASK 0x00FFF000U | ||
801 | #define EUR_CR_BIF_TILE1_MAX_ADDRESS_SHIFT 12 | ||
802 | #define EUR_CR_BIF_TILE1_MAX_ADDRESS_SIGNED 0 | ||
803 | #define EUR_CR_BIF_TILE1_CFG_MASK 0x0F000000U | ||
804 | #define EUR_CR_BIF_TILE1_CFG_SHIFT 24 | ||
805 | #define EUR_CR_BIF_TILE1_CFG_SIGNED 0 | ||
806 | #define EUR_CR_BIF_TILE2 0x0C14 | ||
807 | #define EUR_CR_BIF_TILE2_MIN_ADDRESS_MASK 0x00000FFFU | ||
808 | #define EUR_CR_BIF_TILE2_MIN_ADDRESS_SHIFT 0 | ||
809 | #define EUR_CR_BIF_TILE2_MIN_ADDRESS_SIGNED 0 | ||
810 | #define EUR_CR_BIF_TILE2_MAX_ADDRESS_MASK 0x00FFF000U | ||
811 | #define EUR_CR_BIF_TILE2_MAX_ADDRESS_SHIFT 12 | ||
812 | #define EUR_CR_BIF_TILE2_MAX_ADDRESS_SIGNED 0 | ||
813 | #define EUR_CR_BIF_TILE2_CFG_MASK 0x0F000000U | ||
814 | #define EUR_CR_BIF_TILE2_CFG_SHIFT 24 | ||
815 | #define EUR_CR_BIF_TILE2_CFG_SIGNED 0 | ||
816 | #define EUR_CR_BIF_TILE3 0x0C18 | ||
817 | #define EUR_CR_BIF_TILE3_MIN_ADDRESS_MASK 0x00000FFFU | ||
818 | #define EUR_CR_BIF_TILE3_MIN_ADDRESS_SHIFT 0 | ||
819 | #define EUR_CR_BIF_TILE3_MIN_ADDRESS_SIGNED 0 | ||
820 | #define EUR_CR_BIF_TILE3_MAX_ADDRESS_MASK 0x00FFF000U | ||
821 | #define EUR_CR_BIF_TILE3_MAX_ADDRESS_SHIFT 12 | ||
822 | #define EUR_CR_BIF_TILE3_MAX_ADDRESS_SIGNED 0 | ||
823 | #define EUR_CR_BIF_TILE3_CFG_MASK 0x0F000000U | ||
824 | #define EUR_CR_BIF_TILE3_CFG_SHIFT 24 | ||
825 | #define EUR_CR_BIF_TILE3_CFG_SIGNED 0 | ||
826 | #define EUR_CR_BIF_TILE4 0x0C1C | ||
827 | #define EUR_CR_BIF_TILE4_MIN_ADDRESS_MASK 0x00000FFFU | ||
828 | #define EUR_CR_BIF_TILE4_MIN_ADDRESS_SHIFT 0 | ||
829 | #define EUR_CR_BIF_TILE4_MIN_ADDRESS_SIGNED 0 | ||
830 | #define EUR_CR_BIF_TILE4_MAX_ADDRESS_MASK 0x00FFF000U | ||
831 | #define EUR_CR_BIF_TILE4_MAX_ADDRESS_SHIFT 12 | ||
832 | #define EUR_CR_BIF_TILE4_MAX_ADDRESS_SIGNED 0 | ||
833 | #define EUR_CR_BIF_TILE4_CFG_MASK 0x0F000000U | ||
834 | #define EUR_CR_BIF_TILE4_CFG_SHIFT 24 | ||
835 | #define EUR_CR_BIF_TILE4_CFG_SIGNED 0 | ||
836 | #define EUR_CR_BIF_TILE5 0x0C20 | ||
837 | #define EUR_CR_BIF_TILE5_MIN_ADDRESS_MASK 0x00000FFFU | ||
838 | #define EUR_CR_BIF_TILE5_MIN_ADDRESS_SHIFT 0 | ||
839 | #define EUR_CR_BIF_TILE5_MIN_ADDRESS_SIGNED 0 | ||
840 | #define EUR_CR_BIF_TILE5_MAX_ADDRESS_MASK 0x00FFF000U | ||
841 | #define EUR_CR_BIF_TILE5_MAX_ADDRESS_SHIFT 12 | ||
842 | #define EUR_CR_BIF_TILE5_MAX_ADDRESS_SIGNED 0 | ||
843 | #define EUR_CR_BIF_TILE5_CFG_MASK 0x0F000000U | ||
844 | #define EUR_CR_BIF_TILE5_CFG_SHIFT 24 | ||
845 | #define EUR_CR_BIF_TILE5_CFG_SIGNED 0 | ||
846 | #define EUR_CR_BIF_TILE6 0x0C24 | ||
847 | #define EUR_CR_BIF_TILE6_MIN_ADDRESS_MASK 0x00000FFFU | ||
848 | #define EUR_CR_BIF_TILE6_MIN_ADDRESS_SHIFT 0 | ||
849 | #define EUR_CR_BIF_TILE6_MIN_ADDRESS_SIGNED 0 | ||
850 | #define EUR_CR_BIF_TILE6_MAX_ADDRESS_MASK 0x00FFF000U | ||
851 | #define EUR_CR_BIF_TILE6_MAX_ADDRESS_SHIFT 12 | ||
852 | #define EUR_CR_BIF_TILE6_MAX_ADDRESS_SIGNED 0 | ||
853 | #define EUR_CR_BIF_TILE6_CFG_MASK 0x0F000000U | ||
854 | #define EUR_CR_BIF_TILE6_CFG_SHIFT 24 | ||
855 | #define EUR_CR_BIF_TILE6_CFG_SIGNED 0 | ||
856 | #define EUR_CR_BIF_TILE7 0x0C28 | ||
857 | #define EUR_CR_BIF_TILE7_MIN_ADDRESS_MASK 0x00000FFFU | ||
858 | #define EUR_CR_BIF_TILE7_MIN_ADDRESS_SHIFT 0 | ||
859 | #define EUR_CR_BIF_TILE7_MIN_ADDRESS_SIGNED 0 | ||
860 | #define EUR_CR_BIF_TILE7_MAX_ADDRESS_MASK 0x00FFF000U | ||
861 | #define EUR_CR_BIF_TILE7_MAX_ADDRESS_SHIFT 12 | ||
862 | #define EUR_CR_BIF_TILE7_MAX_ADDRESS_SIGNED 0 | ||
863 | #define EUR_CR_BIF_TILE7_CFG_MASK 0x0F000000U | ||
864 | #define EUR_CR_BIF_TILE7_CFG_SHIFT 24 | ||
865 | #define EUR_CR_BIF_TILE7_CFG_SIGNED 0 | ||
866 | #define EUR_CR_BIF_TILE8 0x0C2C | ||
867 | #define EUR_CR_BIF_TILE8_MIN_ADDRESS_MASK 0x00000FFFU | ||
868 | #define EUR_CR_BIF_TILE8_MIN_ADDRESS_SHIFT 0 | ||
869 | #define EUR_CR_BIF_TILE8_MIN_ADDRESS_SIGNED 0 | ||
870 | #define EUR_CR_BIF_TILE8_MAX_ADDRESS_MASK 0x00FFF000U | ||
871 | #define EUR_CR_BIF_TILE8_MAX_ADDRESS_SHIFT 12 | ||
872 | #define EUR_CR_BIF_TILE8_MAX_ADDRESS_SIGNED 0 | ||
873 | #define EUR_CR_BIF_TILE8_CFG_MASK 0x0F000000U | ||
874 | #define EUR_CR_BIF_TILE8_CFG_SHIFT 24 | ||
875 | #define EUR_CR_BIF_TILE8_CFG_SIGNED 0 | ||
876 | #define EUR_CR_BIF_TILE9 0x0C30 | ||
877 | #define EUR_CR_BIF_TILE9_MIN_ADDRESS_MASK 0x00000FFFU | ||
878 | #define EUR_CR_BIF_TILE9_MIN_ADDRESS_SHIFT 0 | ||
879 | #define EUR_CR_BIF_TILE9_MIN_ADDRESS_SIGNED 0 | ||
880 | #define EUR_CR_BIF_TILE9_MAX_ADDRESS_MASK 0x00FFF000U | ||
881 | #define EUR_CR_BIF_TILE9_MAX_ADDRESS_SHIFT 12 | ||
882 | #define EUR_CR_BIF_TILE9_MAX_ADDRESS_SIGNED 0 | ||
883 | #define EUR_CR_BIF_TILE9_CFG_MASK 0x0F000000U | ||
884 | #define EUR_CR_BIF_TILE9_CFG_SHIFT 24 | ||
885 | #define EUR_CR_BIF_TILE9_CFG_SIGNED 0 | ||
886 | #define EUR_CR_BIF_CTRL_INVAL 0x0C34 | ||
887 | #define EUR_CR_BIF_CTRL_INVAL_PTE_MASK 0x00000004U | ||
888 | #define EUR_CR_BIF_CTRL_INVAL_PTE_SHIFT 2 | ||
889 | #define EUR_CR_BIF_CTRL_INVAL_PTE_SIGNED 0 | ||
890 | #define EUR_CR_BIF_CTRL_INVAL_ALL_MASK 0x00000008U | ||
891 | #define EUR_CR_BIF_CTRL_INVAL_ALL_SHIFT 3 | ||
892 | #define EUR_CR_BIF_CTRL_INVAL_ALL_SIGNED 0 | ||
893 | #define EUR_CR_BIF_DIR_LIST_BASE1 0x0C38 | ||
894 | #define EUR_CR_BIF_DIR_LIST_BASE1_ADDR_MASK 0xFFFFF000U | ||
895 | #define EUR_CR_BIF_DIR_LIST_BASE1_ADDR_SHIFT 12 | ||
896 | #define EUR_CR_BIF_DIR_LIST_BASE1_ADDR_SIGNED 0 | ||
897 | #define EUR_CR_BIF_DIR_LIST_BASE2 0x0C3C | ||
898 | #define EUR_CR_BIF_DIR_LIST_BASE2_ADDR_MASK 0xFFFFF000U | ||
899 | #define EUR_CR_BIF_DIR_LIST_BASE2_ADDR_SHIFT 12 | ||
900 | #define EUR_CR_BIF_DIR_LIST_BASE2_ADDR_SIGNED 0 | ||
901 | #define EUR_CR_BIF_DIR_LIST_BASE3 0x0C40 | ||
902 | #define EUR_CR_BIF_DIR_LIST_BASE3_ADDR_MASK 0xFFFFF000U | ||
903 | #define EUR_CR_BIF_DIR_LIST_BASE3_ADDR_SHIFT 12 | ||
904 | #define EUR_CR_BIF_DIR_LIST_BASE3_ADDR_SIGNED 0 | ||
905 | #define EUR_CR_BIF_DIR_LIST_BASE4 0x0C44 | ||
906 | #define EUR_CR_BIF_DIR_LIST_BASE4_ADDR_MASK 0xFFFFF000U | ||
907 | #define EUR_CR_BIF_DIR_LIST_BASE4_ADDR_SHIFT 12 | ||
908 | #define EUR_CR_BIF_DIR_LIST_BASE4_ADDR_SIGNED 0 | ||
909 | #define EUR_CR_BIF_DIR_LIST_BASE5 0x0C48 | ||
910 | #define EUR_CR_BIF_DIR_LIST_BASE5_ADDR_MASK 0xFFFFF000U | ||
911 | #define EUR_CR_BIF_DIR_LIST_BASE5_ADDR_SHIFT 12 | ||
912 | #define EUR_CR_BIF_DIR_LIST_BASE5_ADDR_SIGNED 0 | ||
913 | #define EUR_CR_BIF_DIR_LIST_BASE6 0x0C4C | ||
914 | #define EUR_CR_BIF_DIR_LIST_BASE6_ADDR_MASK 0xFFFFF000U | ||
915 | #define EUR_CR_BIF_DIR_LIST_BASE6_ADDR_SHIFT 12 | ||
916 | #define EUR_CR_BIF_DIR_LIST_BASE6_ADDR_SIGNED 0 | ||
917 | #define EUR_CR_BIF_DIR_LIST_BASE7 0x0C50 | ||
918 | #define EUR_CR_BIF_DIR_LIST_BASE7_ADDR_MASK 0xFFFFF000U | ||
919 | #define EUR_CR_BIF_DIR_LIST_BASE7_ADDR_SHIFT 12 | ||
920 | #define EUR_CR_BIF_DIR_LIST_BASE7_ADDR_SIGNED 0 | ||
921 | #define EUR_CR_BIF_BANK_SET 0x0C74 | ||
922 | #define EUR_CR_BIF_BANK_SET_SELECT_2D_MASK 0x00000001U | ||
923 | #define EUR_CR_BIF_BANK_SET_SELECT_2D_SHIFT 0 | ||
924 | #define EUR_CR_BIF_BANK_SET_SELECT_2D_SIGNED 0 | ||
925 | #define EUR_CR_BIF_BANK_SET_SELECT_3D_MASK 0x0000000CU | ||
926 | #define EUR_CR_BIF_BANK_SET_SELECT_3D_SHIFT 2 | ||
927 | #define EUR_CR_BIF_BANK_SET_SELECT_3D_SIGNED 0 | ||
928 | #define EUR_CR_BIF_BANK_SET_SELECT_HOST_MASK 0x00000010U | ||
929 | #define EUR_CR_BIF_BANK_SET_SELECT_HOST_SHIFT 4 | ||
930 | #define EUR_CR_BIF_BANK_SET_SELECT_HOST_SIGNED 0 | ||
931 | #define EUR_CR_BIF_BANK_SET_SELECT_TA_MASK 0x000000C0U | ||
932 | #define EUR_CR_BIF_BANK_SET_SELECT_TA_SHIFT 6 | ||
933 | #define EUR_CR_BIF_BANK_SET_SELECT_TA_SIGNED 0 | ||
934 | #define EUR_CR_BIF_BANK_SET_SELECT_EDM_MASK 0x00000100U | ||
935 | #define EUR_CR_BIF_BANK_SET_SELECT_EDM_SHIFT 8 | ||
936 | #define EUR_CR_BIF_BANK_SET_SELECT_EDM_SIGNED 0 | ||
937 | #define EUR_CR_BIF_BANK_SET_SELECT_DPM_LSS_MASK 0x00000200U | ||
938 | #define EUR_CR_BIF_BANK_SET_SELECT_DPM_LSS_SHIFT 9 | ||
939 | #define EUR_CR_BIF_BANK_SET_SELECT_DPM_LSS_SIGNED 0 | ||
940 | #define EUR_CR_BIF_BANK0 0x0C78 | ||
941 | #define EUR_CR_BIF_BANK0_INDEX_EDM_MASK 0x0000000FU | ||
942 | #define EUR_CR_BIF_BANK0_INDEX_EDM_SHIFT 0 | ||
943 | #define EUR_CR_BIF_BANK0_INDEX_EDM_SIGNED 0 | ||
944 | #define EUR_CR_BIF_BANK0_INDEX_TA_MASK 0x000000F0U | ||
945 | #define EUR_CR_BIF_BANK0_INDEX_TA_SHIFT 4 | ||
946 | #define EUR_CR_BIF_BANK0_INDEX_TA_SIGNED 0 | ||
947 | #define EUR_CR_BIF_BANK0_INDEX_3D_MASK 0x0000F000U | ||
948 | #define EUR_CR_BIF_BANK0_INDEX_3D_SHIFT 12 | ||
949 | #define EUR_CR_BIF_BANK0_INDEX_3D_SIGNED 0 | ||
950 | #define EUR_CR_BIF_BANK0_INDEX_PTLA_MASK 0x000F0000U | ||
951 | #define EUR_CR_BIF_BANK0_INDEX_PTLA_SHIFT 16 | ||
952 | #define EUR_CR_BIF_BANK0_INDEX_PTLA_SIGNED 0 | ||
953 | #define EUR_CR_BIF_BANK1 0x0C7C | ||
954 | #define EUR_CR_BIF_BANK1_INDEX_EDM_MASK 0x0000000FU | ||
955 | #define EUR_CR_BIF_BANK1_INDEX_EDM_SHIFT 0 | ||
956 | #define EUR_CR_BIF_BANK1_INDEX_EDM_SIGNED 0 | ||
957 | #define EUR_CR_BIF_BANK1_INDEX_TA_MASK 0x000000F0U | ||
958 | #define EUR_CR_BIF_BANK1_INDEX_TA_SHIFT 4 | ||
959 | #define EUR_CR_BIF_BANK1_INDEX_TA_SIGNED 0 | ||
960 | #define EUR_CR_BIF_BANK1_INDEX_3D_MASK 0x0000F000U | ||
961 | #define EUR_CR_BIF_BANK1_INDEX_3D_SHIFT 12 | ||
962 | #define EUR_CR_BIF_BANK1_INDEX_3D_SIGNED 0 | ||
963 | #define EUR_CR_BIF_DIR_LIST_BASE0 0x0C84 | ||
964 | #define EUR_CR_BIF_DIR_LIST_BASE0_ADDR_MASK 0xFFFFF000U | ||
965 | #define EUR_CR_BIF_DIR_LIST_BASE0_ADDR_SHIFT 12 | ||
966 | #define EUR_CR_BIF_DIR_LIST_BASE0_ADDR_SIGNED 0 | ||
967 | #define EUR_CR_BIF_TA_REQ_BASE 0x0C90 | ||
968 | #define EUR_CR_BIF_TA_REQ_BASE_ADDR_MASK 0xFFF00000U | ||
969 | #define EUR_CR_BIF_TA_REQ_BASE_ADDR_SHIFT 20 | ||
970 | #define EUR_CR_BIF_TA_REQ_BASE_ADDR_SIGNED 0 | ||
971 | #define EUR_CR_BIF_MEM_REQ_STAT 0x0CA8 | ||
972 | #define EUR_CR_BIF_MEM_REQ_STAT_READS_MASK 0x000000FFU | ||
973 | #define EUR_CR_BIF_MEM_REQ_STAT_READS_SHIFT 0 | ||
974 | #define EUR_CR_BIF_MEM_REQ_STAT_READS_SIGNED 0 | ||
975 | #define EUR_CR_BIF_3D_REQ_BASE 0x0CAC | ||
976 | #define EUR_CR_BIF_3D_REQ_BASE_ADDR_MASK 0xFFF00000U | ||
977 | #define EUR_CR_BIF_3D_REQ_BASE_ADDR_SHIFT 20 | ||
978 | #define EUR_CR_BIF_3D_REQ_BASE_ADDR_SIGNED 0 | ||
979 | #define EUR_CR_BIF_ZLS_REQ_BASE 0x0CB0 | ||
980 | #define EUR_CR_BIF_ZLS_REQ_BASE_ADDR_MASK 0xFFF00000U | ||
981 | #define EUR_CR_BIF_ZLS_REQ_BASE_ADDR_SHIFT 20 | ||
982 | #define EUR_CR_BIF_ZLS_REQ_BASE_ADDR_SIGNED 0 | ||
983 | #define EUR_CR_BIF_BANK_STATUS 0x0CB4 | ||
984 | #define EUR_CR_BIF_BANK_STATUS_3D_CURRENT_BANK_MASK 0x00000001U | ||
985 | #define EUR_CR_BIF_BANK_STATUS_3D_CURRENT_BANK_SHIFT 0 | ||
986 | #define EUR_CR_BIF_BANK_STATUS_3D_CURRENT_BANK_SIGNED 0 | ||
987 | #define EUR_CR_BIF_BANK_STATUS_TA_CURRENT_BANK_MASK 0x00000002U | ||
988 | #define EUR_CR_BIF_BANK_STATUS_TA_CURRENT_BANK_SHIFT 1 | ||
989 | #define EUR_CR_BIF_BANK_STATUS_TA_CURRENT_BANK_SIGNED 0 | ||
990 | #define EUR_CR_BIF_MMU_CTRL 0x0CD0 | ||
991 | #define EUR_CR_BIF_MMU_CTRL_PREFETCHING_ON_MASK 0x00000001U | ||
992 | #define EUR_CR_BIF_MMU_CTRL_PREFETCHING_ON_SHIFT 0 | ||
993 | #define EUR_CR_BIF_MMU_CTRL_PREFETCHING_ON_SIGNED 0 | ||
994 | #define EUR_CR_BIF_MMU_CTRL_ADDR_HASH_MODE_MASK 0x00000006U | ||
995 | #define EUR_CR_BIF_MMU_CTRL_ADDR_HASH_MODE_SHIFT 1 | ||
996 | #define EUR_CR_BIF_MMU_CTRL_ADDR_HASH_MODE_SIGNED 0 | ||
997 | #define EUR_CR_BIF_MMU_CTRL_ENABLE_WRITE_BURST_COLLATE_MASK 0x00000008U | ||
998 | #define EUR_CR_BIF_MMU_CTRL_ENABLE_WRITE_BURST_COLLATE_SHIFT 3 | ||
999 | #define EUR_CR_BIF_MMU_CTRL_ENABLE_WRITE_BURST_COLLATE_SIGNED 0 | ||
1000 | #define EUR_CR_BIF_MMU_CTRL_ENABLE_DC_TLB_MASK 0x00000010U | ||
1001 | #define EUR_CR_BIF_MMU_CTRL_ENABLE_DC_TLB_SHIFT 4 | ||
1002 | #define EUR_CR_BIF_MMU_CTRL_ENABLE_DC_TLB_SIGNED 0 | ||
1003 | #define EUR_CR_2D_BLIT_STATUS 0x0E04 | ||
1004 | #define EUR_CR_2D_BLIT_STATUS_COMPLETE_MASK 0x00FFFFFFU | ||
1005 | #define EUR_CR_2D_BLIT_STATUS_COMPLETE_SHIFT 0 | ||
1006 | #define EUR_CR_2D_BLIT_STATUS_COMPLETE_SIGNED 0 | ||
1007 | #define EUR_CR_2D_BLIT_STATUS_BUSY_MASK 0x01000000U | ||
1008 | #define EUR_CR_2D_BLIT_STATUS_BUSY_SHIFT 24 | ||
1009 | #define EUR_CR_2D_BLIT_STATUS_BUSY_SIGNED 0 | ||
1010 | #define EUR_CR_2D_VIRTUAL_FIFO_0 0x0E10 | ||
1011 | #define EUR_CR_2D_VIRTUAL_FIFO_0_ENABLE_MASK 0x00000001U | ||
1012 | #define EUR_CR_2D_VIRTUAL_FIFO_0_ENABLE_SHIFT 0 | ||
1013 | #define EUR_CR_2D_VIRTUAL_FIFO_0_ENABLE_SIGNED 0 | ||
1014 | #define EUR_CR_2D_VIRTUAL_FIFO_0_FLOWRATE_MASK 0x0000000EU | ||
1015 | #define EUR_CR_2D_VIRTUAL_FIFO_0_FLOWRATE_SHIFT 1 | ||
1016 | #define EUR_CR_2D_VIRTUAL_FIFO_0_FLOWRATE_SIGNED 0 | ||
1017 | #define EUR_CR_2D_VIRTUAL_FIFO_0_FLOWRATE_DIV_MASK 0x00000FF0U | ||
1018 | #define EUR_CR_2D_VIRTUAL_FIFO_0_FLOWRATE_DIV_SHIFT 4 | ||
1019 | #define EUR_CR_2D_VIRTUAL_FIFO_0_FLOWRATE_DIV_SIGNED 0 | ||
1020 | #define EUR_CR_2D_VIRTUAL_FIFO_0_FLOWRATE_MUL_MASK 0x0000F000U | ||
1021 | #define EUR_CR_2D_VIRTUAL_FIFO_0_FLOWRATE_MUL_SHIFT 12 | ||
1022 | #define EUR_CR_2D_VIRTUAL_FIFO_0_FLOWRATE_MUL_SIGNED 0 | ||
1023 | #define EUR_CR_2D_VIRTUAL_FIFO_1 0x0E14 | ||
1024 | #define EUR_CR_2D_VIRTUAL_FIFO_1_MIN_ACC_MASK 0x00000FFFU | ||
1025 | #define EUR_CR_2D_VIRTUAL_FIFO_1_MIN_ACC_SHIFT 0 | ||
1026 | #define EUR_CR_2D_VIRTUAL_FIFO_1_MIN_ACC_SIGNED 0 | ||
1027 | #define EUR_CR_2D_VIRTUAL_FIFO_1_MAX_ACC_MASK 0x00FFF000U | ||
1028 | #define EUR_CR_2D_VIRTUAL_FIFO_1_MAX_ACC_SHIFT 12 | ||
1029 | #define EUR_CR_2D_VIRTUAL_FIFO_1_MAX_ACC_SIGNED 0 | ||
1030 | #define EUR_CR_2D_VIRTUAL_FIFO_1_MIN_METRIC_MASK 0xFF000000U | ||
1031 | #define EUR_CR_2D_VIRTUAL_FIFO_1_MIN_METRIC_SHIFT 24 | ||
1032 | #define EUR_CR_2D_VIRTUAL_FIFO_1_MIN_METRIC_SIGNED 0 | ||
1033 | #define EUR_CR_BREAKPOINT0_START 0x0F44 | ||
1034 | #define EUR_CR_BREAKPOINT0_START_ADDRESS_MASK 0xFFFFFFF0U | ||
1035 | #define EUR_CR_BREAKPOINT0_START_ADDRESS_SHIFT 4 | ||
1036 | #define EUR_CR_BREAKPOINT0_START_ADDRESS_SIGNED 0 | ||
1037 | #define EUR_CR_BREAKPOINT0_END 0x0F48 | ||
1038 | #define EUR_CR_BREAKPOINT0_END_ADDRESS_MASK 0xFFFFFFF0U | ||
1039 | #define EUR_CR_BREAKPOINT0_END_ADDRESS_SHIFT 4 | ||
1040 | #define EUR_CR_BREAKPOINT0_END_ADDRESS_SIGNED 0 | ||
1041 | #define EUR_CR_BREAKPOINT0 0x0F4C | ||
1042 | #define EUR_CR_BREAKPOINT0_MASK_DM_MASK 0x00000038U | ||
1043 | #define EUR_CR_BREAKPOINT0_MASK_DM_SHIFT 3 | ||
1044 | #define EUR_CR_BREAKPOINT0_MASK_DM_SIGNED 0 | ||
1045 | #define EUR_CR_BREAKPOINT0_CTRL_TRAPENABLE_MASK 0x00000004U | ||
1046 | #define EUR_CR_BREAKPOINT0_CTRL_TRAPENABLE_SHIFT 2 | ||
1047 | #define EUR_CR_BREAKPOINT0_CTRL_TRAPENABLE_SIGNED 0 | ||
1048 | #define EUR_CR_BREAKPOINT0_CTRL_WENABLE_MASK 0x00000002U | ||
1049 | #define EUR_CR_BREAKPOINT0_CTRL_WENABLE_SHIFT 1 | ||
1050 | #define EUR_CR_BREAKPOINT0_CTRL_WENABLE_SIGNED 0 | ||
1051 | #define EUR_CR_BREAKPOINT0_CTRL_RENABLE_MASK 0x00000001U | ||
1052 | #define EUR_CR_BREAKPOINT0_CTRL_RENABLE_SHIFT 0 | ||
1053 | #define EUR_CR_BREAKPOINT0_CTRL_RENABLE_SIGNED 0 | ||
1054 | #define EUR_CR_BREAKPOINT1_START 0x0F50 | ||
1055 | #define EUR_CR_BREAKPOINT1_START_ADDRESS_MASK 0xFFFFFFF0U | ||
1056 | #define EUR_CR_BREAKPOINT1_START_ADDRESS_SHIFT 4 | ||
1057 | #define EUR_CR_BREAKPOINT1_START_ADDRESS_SIGNED 0 | ||
1058 | #define EUR_CR_BREAKPOINT1_END 0x0F54 | ||
1059 | #define EUR_CR_BREAKPOINT1_END_ADDRESS_MASK 0xFFFFFFF0U | ||
1060 | #define EUR_CR_BREAKPOINT1_END_ADDRESS_SHIFT 4 | ||
1061 | #define EUR_CR_BREAKPOINT1_END_ADDRESS_SIGNED 0 | ||
1062 | #define EUR_CR_BREAKPOINT1 0x0F58 | ||
1063 | #define EUR_CR_BREAKPOINT1_MASK_DM_MASK 0x00000038U | ||
1064 | #define EUR_CR_BREAKPOINT1_MASK_DM_SHIFT 3 | ||
1065 | #define EUR_CR_BREAKPOINT1_MASK_DM_SIGNED 0 | ||
1066 | #define EUR_CR_BREAKPOINT1_CTRL_TRAPENABLE_MASK 0x00000004U | ||
1067 | #define EUR_CR_BREAKPOINT1_CTRL_TRAPENABLE_SHIFT 2 | ||
1068 | #define EUR_CR_BREAKPOINT1_CTRL_TRAPENABLE_SIGNED 0 | ||
1069 | #define EUR_CR_BREAKPOINT1_CTRL_WENABLE_MASK 0x00000002U | ||
1070 | #define EUR_CR_BREAKPOINT1_CTRL_WENABLE_SHIFT 1 | ||
1071 | #define EUR_CR_BREAKPOINT1_CTRL_WENABLE_SIGNED 0 | ||
1072 | #define EUR_CR_BREAKPOINT1_CTRL_RENABLE_MASK 0x00000001U | ||
1073 | #define EUR_CR_BREAKPOINT1_CTRL_RENABLE_SHIFT 0 | ||
1074 | #define EUR_CR_BREAKPOINT1_CTRL_RENABLE_SIGNED 0 | ||
1075 | #define EUR_CR_BREAKPOINT2_START 0x0F5C | ||
1076 | #define EUR_CR_BREAKPOINT2_START_ADDRESS_MASK 0xFFFFFFF0U | ||
1077 | #define EUR_CR_BREAKPOINT2_START_ADDRESS_SHIFT 4 | ||
1078 | #define EUR_CR_BREAKPOINT2_START_ADDRESS_SIGNED 0 | ||
1079 | #define EUR_CR_BREAKPOINT2_END 0x0F60 | ||
1080 | #define EUR_CR_BREAKPOINT2_END_ADDRESS_MASK 0xFFFFFFF0U | ||
1081 | #define EUR_CR_BREAKPOINT2_END_ADDRESS_SHIFT 4 | ||
1082 | #define EUR_CR_BREAKPOINT2_END_ADDRESS_SIGNED 0 | ||
1083 | #define EUR_CR_BREAKPOINT2 0x0F64 | ||
1084 | #define EUR_CR_BREAKPOINT2_MASK_DM_MASK 0x00000038U | ||
1085 | #define EUR_CR_BREAKPOINT2_MASK_DM_SHIFT 3 | ||
1086 | #define EUR_CR_BREAKPOINT2_MASK_DM_SIGNED 0 | ||
1087 | #define EUR_CR_BREAKPOINT2_CTRL_TRAPENABLE_MASK 0x00000004U | ||
1088 | #define EUR_CR_BREAKPOINT2_CTRL_TRAPENABLE_SHIFT 2 | ||
1089 | #define EUR_CR_BREAKPOINT2_CTRL_TRAPENABLE_SIGNED 0 | ||
1090 | #define EUR_CR_BREAKPOINT2_CTRL_WENABLE_MASK 0x00000002U | ||
1091 | #define EUR_CR_BREAKPOINT2_CTRL_WENABLE_SHIFT 1 | ||
1092 | #define EUR_CR_BREAKPOINT2_CTRL_WENABLE_SIGNED 0 | ||
1093 | #define EUR_CR_BREAKPOINT2_CTRL_RENABLE_MASK 0x00000001U | ||
1094 | #define EUR_CR_BREAKPOINT2_CTRL_RENABLE_SHIFT 0 | ||
1095 | #define EUR_CR_BREAKPOINT2_CTRL_RENABLE_SIGNED 0 | ||
1096 | #define EUR_CR_BREAKPOINT3_START 0x0F68 | ||
1097 | #define EUR_CR_BREAKPOINT3_START_ADDRESS_MASK 0xFFFFFFF0U | ||
1098 | #define EUR_CR_BREAKPOINT3_START_ADDRESS_SHIFT 4 | ||
1099 | #define EUR_CR_BREAKPOINT3_START_ADDRESS_SIGNED 0 | ||
1100 | #define EUR_CR_BREAKPOINT3_END 0x0F6C | ||
1101 | #define EUR_CR_BREAKPOINT3_END_ADDRESS_MASK 0xFFFFFFF0U | ||
1102 | #define EUR_CR_BREAKPOINT3_END_ADDRESS_SHIFT 4 | ||
1103 | #define EUR_CR_BREAKPOINT3_END_ADDRESS_SIGNED 0 | ||
1104 | #define EUR_CR_BREAKPOINT3 0x0F70 | ||
1105 | #define EUR_CR_BREAKPOINT3_MASK_DM_MASK 0x00000038U | ||
1106 | #define EUR_CR_BREAKPOINT3_MASK_DM_SHIFT 3 | ||
1107 | #define EUR_CR_BREAKPOINT3_MASK_DM_SIGNED 0 | ||
1108 | #define EUR_CR_BREAKPOINT3_CTRL_TRAPENABLE_MASK 0x00000004U | ||
1109 | #define EUR_CR_BREAKPOINT3_CTRL_TRAPENABLE_SHIFT 2 | ||
1110 | #define EUR_CR_BREAKPOINT3_CTRL_TRAPENABLE_SIGNED 0 | ||
1111 | #define EUR_CR_BREAKPOINT3_CTRL_WENABLE_MASK 0x00000002U | ||
1112 | #define EUR_CR_BREAKPOINT3_CTRL_WENABLE_SHIFT 1 | ||
1113 | #define EUR_CR_BREAKPOINT3_CTRL_WENABLE_SIGNED 0 | ||
1114 | #define EUR_CR_BREAKPOINT3_CTRL_RENABLE_MASK 0x00000001U | ||
1115 | #define EUR_CR_BREAKPOINT3_CTRL_RENABLE_SHIFT 0 | ||
1116 | #define EUR_CR_BREAKPOINT3_CTRL_RENABLE_SIGNED 0 | ||
1117 | #define EUR_CR_BREAKPOINT_READ 0x0F74 | ||
1118 | #define EUR_CR_BREAKPOINT_READ_ADDRESS_MASK 0xFFFFFFF0U | ||
1119 | #define EUR_CR_BREAKPOINT_READ_ADDRESS_SHIFT 4 | ||
1120 | #define EUR_CR_BREAKPOINT_READ_ADDRESS_SIGNED 0 | ||
1121 | #define EUR_CR_BREAKPOINT_TRAP 0x0F78 | ||
1122 | #define EUR_CR_BREAKPOINT_TRAP_CONTINUE_MASK 0x00000002U | ||
1123 | #define EUR_CR_BREAKPOINT_TRAP_CONTINUE_SHIFT 1 | ||
1124 | #define EUR_CR_BREAKPOINT_TRAP_CONTINUE_SIGNED 0 | ||
1125 | #define EUR_CR_BREAKPOINT_TRAP_WRNOTIFY_MASK 0x00000001U | ||
1126 | #define EUR_CR_BREAKPOINT_TRAP_WRNOTIFY_SHIFT 0 | ||
1127 | #define EUR_CR_BREAKPOINT_TRAP_WRNOTIFY_SIGNED 0 | ||
1128 | #define EUR_CR_BREAKPOINT 0x0F7C | ||
1129 | #define EUR_CR_BREAKPOINT_MODULE_ID_MASK 0x000003C0U | ||
1130 | #define EUR_CR_BREAKPOINT_MODULE_ID_SHIFT 6 | ||
1131 | #define EUR_CR_BREAKPOINT_MODULE_ID_SIGNED 0 | ||
1132 | #define EUR_CR_BREAKPOINT_ID_MASK 0x00000030U | ||
1133 | #define EUR_CR_BREAKPOINT_ID_SHIFT 4 | ||
1134 | #define EUR_CR_BREAKPOINT_ID_SIGNED 0 | ||
1135 | #define EUR_CR_BREAKPOINT_UNTRAPPED_MASK 0x00000008U | ||
1136 | #define EUR_CR_BREAKPOINT_UNTRAPPED_SHIFT 3 | ||
1137 | #define EUR_CR_BREAKPOINT_UNTRAPPED_SIGNED 0 | ||
1138 | #define EUR_CR_BREAKPOINT_TRAPPED_MASK 0x00000004U | ||
1139 | #define EUR_CR_BREAKPOINT_TRAPPED_SHIFT 2 | ||
1140 | #define EUR_CR_BREAKPOINT_TRAPPED_SIGNED 0 | ||
1141 | #define EUR_CR_BREAKPOINT_TRAP_INFO0 0x0F80 | ||
1142 | #define EUR_CR_BREAKPOINT_TRAP_INFO0_ADDRESS_MASK 0xFFFFFFF0U | ||
1143 | #define EUR_CR_BREAKPOINT_TRAP_INFO0_ADDRESS_SHIFT 4 | ||
1144 | #define EUR_CR_BREAKPOINT_TRAP_INFO0_ADDRESS_SIGNED 0 | ||
1145 | #define EUR_CR_BREAKPOINT_TRAP_INFO1 0x0F84 | ||
1146 | #define EUR_CR_BREAKPOINT_TRAP_INFO1_SIZE_MASK 0x00007C00U | ||
1147 | #define EUR_CR_BREAKPOINT_TRAP_INFO1_SIZE_SHIFT 10 | ||
1148 | #define EUR_CR_BREAKPOINT_TRAP_INFO1_SIZE_SIGNED 0 | ||
1149 | #define EUR_CR_BREAKPOINT_TRAP_INFO1_NUMBER_MASK 0x00000300U | ||
1150 | #define EUR_CR_BREAKPOINT_TRAP_INFO1_NUMBER_SHIFT 8 | ||
1151 | #define EUR_CR_BREAKPOINT_TRAP_INFO1_NUMBER_SIGNED 0 | ||
1152 | #define EUR_CR_BREAKPOINT_TRAP_INFO1_TAG_MASK 0x000000F8U | ||
1153 | #define EUR_CR_BREAKPOINT_TRAP_INFO1_TAG_SHIFT 3 | ||
1154 | #define EUR_CR_BREAKPOINT_TRAP_INFO1_TAG_SIGNED 0 | ||
1155 | #define EUR_CR_BREAKPOINT_TRAP_INFO1_DATA_MASTER_MASK 0x00000006U | ||
1156 | #define EUR_CR_BREAKPOINT_TRAP_INFO1_DATA_MASTER_SHIFT 1 | ||
1157 | #define EUR_CR_BREAKPOINT_TRAP_INFO1_DATA_MASTER_SIGNED 0 | ||
1158 | #define EUR_CR_BREAKPOINT_TRAP_INFO1_RNW_MASK 0x00000001U | ||
1159 | #define EUR_CR_BREAKPOINT_TRAP_INFO1_RNW_SHIFT 0 | ||
1160 | #define EUR_CR_BREAKPOINT_TRAP_INFO1_RNW_SIGNED 0 | ||
1161 | #define EUR_CR_USE_CODE_BASE_0 0x0A0C | ||
1162 | #define EUR_CR_USE_CODE_BASE_ADDR_00_MASK 0x03FFFFFFU | ||
1163 | #define EUR_CR_USE_CODE_BASE_ADDR_00_SHIFT 0 | ||
1164 | #define EUR_CR_USE_CODE_BASE_ADDR_00_SIGNED 0 | ||
1165 | #define EUR_CR_USE_CODE_BASE_DM_00_MASK 0x0C000000U | ||
1166 | #define EUR_CR_USE_CODE_BASE_DM_00_SHIFT 26 | ||
1167 | #define EUR_CR_USE_CODE_BASE_DM_00_SIGNED 0 | ||
1168 | #define EUR_CR_USE_CODE_BASE_1 0x0A10 | ||
1169 | #define EUR_CR_USE_CODE_BASE_ADDR_01_MASK 0x03FFFFFFU | ||
1170 | #define EUR_CR_USE_CODE_BASE_ADDR_01_SHIFT 0 | ||
1171 | #define EUR_CR_USE_CODE_BASE_ADDR_01_SIGNED 0 | ||
1172 | #define EUR_CR_USE_CODE_BASE_DM_01_MASK 0x0C000000U | ||
1173 | #define EUR_CR_USE_CODE_BASE_DM_01_SHIFT 26 | ||
1174 | #define EUR_CR_USE_CODE_BASE_DM_01_SIGNED 0 | ||
1175 | #define EUR_CR_USE_CODE_BASE_2 0x0A14 | ||
1176 | #define EUR_CR_USE_CODE_BASE_ADDR_02_MASK 0x03FFFFFFU | ||
1177 | #define EUR_CR_USE_CODE_BASE_ADDR_02_SHIFT 0 | ||
1178 | #define EUR_CR_USE_CODE_BASE_ADDR_02_SIGNED 0 | ||
1179 | #define EUR_CR_USE_CODE_BASE_DM_02_MASK 0x0C000000U | ||
1180 | #define EUR_CR_USE_CODE_BASE_DM_02_SHIFT 26 | ||
1181 | #define EUR_CR_USE_CODE_BASE_DM_02_SIGNED 0 | ||
1182 | #define EUR_CR_USE_CODE_BASE_3 0x0A18 | ||
1183 | #define EUR_CR_USE_CODE_BASE_ADDR_03_MASK 0x03FFFFFFU | ||
1184 | #define EUR_CR_USE_CODE_BASE_ADDR_03_SHIFT 0 | ||
1185 | #define EUR_CR_USE_CODE_BASE_ADDR_03_SIGNED 0 | ||
1186 | #define EUR_CR_USE_CODE_BASE_DM_03_MASK 0x0C000000U | ||
1187 | #define EUR_CR_USE_CODE_BASE_DM_03_SHIFT 26 | ||
1188 | #define EUR_CR_USE_CODE_BASE_DM_03_SIGNED 0 | ||
1189 | #define EUR_CR_USE_CODE_BASE_4 0x0A1C | ||
1190 | #define EUR_CR_USE_CODE_BASE_ADDR_04_MASK 0x03FFFFFFU | ||
1191 | #define EUR_CR_USE_CODE_BASE_ADDR_04_SHIFT 0 | ||
1192 | #define EUR_CR_USE_CODE_BASE_ADDR_04_SIGNED 0 | ||
1193 | #define EUR_CR_USE_CODE_BASE_DM_04_MASK 0x0C000000U | ||
1194 | #define EUR_CR_USE_CODE_BASE_DM_04_SHIFT 26 | ||
1195 | #define EUR_CR_USE_CODE_BASE_DM_04_SIGNED 0 | ||
1196 | #define EUR_CR_USE_CODE_BASE_5 0x0A20 | ||
1197 | #define EUR_CR_USE_CODE_BASE_ADDR_05_MASK 0x03FFFFFFU | ||
1198 | #define EUR_CR_USE_CODE_BASE_ADDR_05_SHIFT 0 | ||
1199 | #define EUR_CR_USE_CODE_BASE_ADDR_05_SIGNED 0 | ||
1200 | #define EUR_CR_USE_CODE_BASE_DM_05_MASK 0x0C000000U | ||
1201 | #define EUR_CR_USE_CODE_BASE_DM_05_SHIFT 26 | ||
1202 | #define EUR_CR_USE_CODE_BASE_DM_05_SIGNED 0 | ||
1203 | #define EUR_CR_USE_CODE_BASE_6 0x0A24 | ||
1204 | #define EUR_CR_USE_CODE_BASE_ADDR_06_MASK 0x03FFFFFFU | ||
1205 | #define EUR_CR_USE_CODE_BASE_ADDR_06_SHIFT 0 | ||
1206 | #define EUR_CR_USE_CODE_BASE_ADDR_06_SIGNED 0 | ||
1207 | #define EUR_CR_USE_CODE_BASE_DM_06_MASK 0x0C000000U | ||
1208 | #define EUR_CR_USE_CODE_BASE_DM_06_SHIFT 26 | ||
1209 | #define EUR_CR_USE_CODE_BASE_DM_06_SIGNED 0 | ||
1210 | #define EUR_CR_USE_CODE_BASE_7 0x0A28 | ||
1211 | #define EUR_CR_USE_CODE_BASE_ADDR_07_MASK 0x03FFFFFFU | ||
1212 | #define EUR_CR_USE_CODE_BASE_ADDR_07_SHIFT 0 | ||
1213 | #define EUR_CR_USE_CODE_BASE_ADDR_07_SIGNED 0 | ||
1214 | #define EUR_CR_USE_CODE_BASE_DM_07_MASK 0x0C000000U | ||
1215 | #define EUR_CR_USE_CODE_BASE_DM_07_SHIFT 26 | ||
1216 | #define EUR_CR_USE_CODE_BASE_DM_07_SIGNED 0 | ||
1217 | #define EUR_CR_USE_CODE_BASE_8 0x0A2C | ||
1218 | #define EUR_CR_USE_CODE_BASE_ADDR_08_MASK 0x03FFFFFFU | ||
1219 | #define EUR_CR_USE_CODE_BASE_ADDR_08_SHIFT 0 | ||
1220 | #define EUR_CR_USE_CODE_BASE_ADDR_08_SIGNED 0 | ||
1221 | #define EUR_CR_USE_CODE_BASE_DM_08_MASK 0x0C000000U | ||
1222 | #define EUR_CR_USE_CODE_BASE_DM_08_SHIFT 26 | ||
1223 | #define EUR_CR_USE_CODE_BASE_DM_08_SIGNED 0 | ||
1224 | #define EUR_CR_USE_CODE_BASE_9 0x0A30 | ||
1225 | #define EUR_CR_USE_CODE_BASE_ADDR_09_MASK 0x03FFFFFFU | ||
1226 | #define EUR_CR_USE_CODE_BASE_ADDR_09_SHIFT 0 | ||
1227 | #define EUR_CR_USE_CODE_BASE_ADDR_09_SIGNED 0 | ||
1228 | #define EUR_CR_USE_CODE_BASE_DM_09_MASK 0x0C000000U | ||
1229 | #define EUR_CR_USE_CODE_BASE_DM_09_SHIFT 26 | ||
1230 | #define EUR_CR_USE_CODE_BASE_DM_09_SIGNED 0 | ||
1231 | #define EUR_CR_USE_CODE_BASE_10 0x0A34 | ||
1232 | #define EUR_CR_USE_CODE_BASE_ADDR_10_MASK 0x03FFFFFFU | ||
1233 | #define EUR_CR_USE_CODE_BASE_ADDR_10_SHIFT 0 | ||
1234 | #define EUR_CR_USE_CODE_BASE_ADDR_10_SIGNED 0 | ||
1235 | #define EUR_CR_USE_CODE_BASE_DM_10_MASK 0x0C000000U | ||
1236 | #define EUR_CR_USE_CODE_BASE_DM_10_SHIFT 26 | ||
1237 | #define EUR_CR_USE_CODE_BASE_DM_10_SIGNED 0 | ||
1238 | #define EUR_CR_USE_CODE_BASE_11 0x0A38 | ||
1239 | #define EUR_CR_USE_CODE_BASE_ADDR_11_MASK 0x03FFFFFFU | ||
1240 | #define EUR_CR_USE_CODE_BASE_ADDR_11_SHIFT 0 | ||
1241 | #define EUR_CR_USE_CODE_BASE_ADDR_11_SIGNED 0 | ||
1242 | #define EUR_CR_USE_CODE_BASE_DM_11_MASK 0x0C000000U | ||
1243 | #define EUR_CR_USE_CODE_BASE_DM_11_SHIFT 26 | ||
1244 | #define EUR_CR_USE_CODE_BASE_DM_11_SIGNED 0 | ||
1245 | #define EUR_CR_USE_CODE_BASE_12 0x0A3C | ||
1246 | #define EUR_CR_USE_CODE_BASE_ADDR_12_MASK 0x03FFFFFFU | ||
1247 | #define EUR_CR_USE_CODE_BASE_ADDR_12_SHIFT 0 | ||
1248 | #define EUR_CR_USE_CODE_BASE_ADDR_12_SIGNED 0 | ||
1249 | #define EUR_CR_USE_CODE_BASE_DM_12_MASK 0x0C000000U | ||
1250 | #define EUR_CR_USE_CODE_BASE_DM_12_SHIFT 26 | ||
1251 | #define EUR_CR_USE_CODE_BASE_DM_12_SIGNED 0 | ||
1252 | #define EUR_CR_USE_CODE_BASE_13 0x0A40 | ||
1253 | #define EUR_CR_USE_CODE_BASE_ADDR_13_MASK 0x03FFFFFFU | ||
1254 | #define EUR_CR_USE_CODE_BASE_ADDR_13_SHIFT 0 | ||
1255 | #define EUR_CR_USE_CODE_BASE_ADDR_13_SIGNED 0 | ||
1256 | #define EUR_CR_USE_CODE_BASE_DM_13_MASK 0x0C000000U | ||
1257 | #define EUR_CR_USE_CODE_BASE_DM_13_SHIFT 26 | ||
1258 | #define EUR_CR_USE_CODE_BASE_DM_13_SIGNED 0 | ||
1259 | #define EUR_CR_USE_CODE_BASE_14 0x0A44 | ||
1260 | #define EUR_CR_USE_CODE_BASE_ADDR_14_MASK 0x03FFFFFFU | ||
1261 | #define EUR_CR_USE_CODE_BASE_ADDR_14_SHIFT 0 | ||
1262 | #define EUR_CR_USE_CODE_BASE_ADDR_14_SIGNED 0 | ||
1263 | #define EUR_CR_USE_CODE_BASE_DM_14_MASK 0x0C000000U | ||
1264 | #define EUR_CR_USE_CODE_BASE_DM_14_SHIFT 26 | ||
1265 | #define EUR_CR_USE_CODE_BASE_DM_14_SIGNED 0 | ||
1266 | #define EUR_CR_USE_CODE_BASE_15 0x0A48 | ||
1267 | #define EUR_CR_USE_CODE_BASE_ADDR_15_MASK 0x03FFFFFFU | ||
1268 | #define EUR_CR_USE_CODE_BASE_ADDR_15_SHIFT 0 | ||
1269 | #define EUR_CR_USE_CODE_BASE_ADDR_15_SIGNED 0 | ||
1270 | #define EUR_CR_USE_CODE_BASE_DM_15_MASK 0x0C000000U | ||
1271 | #define EUR_CR_USE_CODE_BASE_DM_15_SHIFT 26 | ||
1272 | #define EUR_CR_USE_CODE_BASE_DM_15_SIGNED 0 | ||
1273 | #define EUR_CR_USE_CODE_BASE(X) (0x0A0C + (4 * (X))) | ||
1274 | #define EUR_CR_USE_CODE_BASE_ADDR_MASK 0x03FFFFFFU | ||
1275 | #define EUR_CR_USE_CODE_BASE_ADDR_SHIFT 0 | ||
1276 | #define EUR_CR_USE_CODE_BASE_ADDR_SIGNED 0 | ||
1277 | #define EUR_CR_USE_CODE_BASE_DM_MASK 0x0C000000U | ||
1278 | #define EUR_CR_USE_CODE_BASE_DM_SHIFT 26 | ||
1279 | #define EUR_CR_USE_CODE_BASE_DM_SIGNED 0 | ||
1280 | #define EUR_CR_USE_CODE_BASE_SIZE_UINT32 16 | ||
1281 | #define EUR_CR_USE_CODE_BASE_NUM_ENTRIES 16 | ||
1282 | |||
1283 | #endif | ||
1284 | |||
diff --git a/drivers/gpu/pvr/sgx543defs.h b/drivers/gpu/pvr/sgx543defs.h index ef8a06e5c2b..939a70ce8ba 100644 --- a/drivers/gpu/pvr/sgx543defs.h +++ b/drivers/gpu/pvr/sgx543defs.h | |||
@@ -58,6 +58,9 @@ | |||
58 | #define EUR_CR_CLKGATECTL_TA_CLKG_MASK 0x000C0000U | 58 | #define EUR_CR_CLKGATECTL_TA_CLKG_MASK 0x000C0000U |
59 | #define EUR_CR_CLKGATECTL_TA_CLKG_SHIFT 18 | 59 | #define EUR_CR_CLKGATECTL_TA_CLKG_SHIFT 18 |
60 | #define EUR_CR_CLKGATECTL_TA_CLKG_SIGNED 0 | 60 | #define EUR_CR_CLKGATECTL_TA_CLKG_SIGNED 0 |
61 | #define EUR_CR_CLKGATECTL_BIF_CORE_CLKG_MASK 0x00300000U | ||
62 | #define EUR_CR_CLKGATECTL_BIF_CORE_CLKG_SHIFT 20 | ||
63 | #define EUR_CR_CLKGATECTL_BIF_CORE_CLKG_SIGNED 0 | ||
61 | #define EUR_CR_CLKGATECTL_AUTO_MAN_REG_MASK 0x01000000U | 64 | #define EUR_CR_CLKGATECTL_AUTO_MAN_REG_MASK 0x01000000U |
62 | #define EUR_CR_CLKGATECTL_AUTO_MAN_REG_SHIFT 24 | 65 | #define EUR_CR_CLKGATECTL_AUTO_MAN_REG_SHIFT 24 |
63 | #define EUR_CR_CLKGATECTL_AUTO_MAN_REG_SIGNED 0 | 66 | #define EUR_CR_CLKGATECTL_AUTO_MAN_REG_SIGNED 0 |
@@ -168,6 +171,9 @@ | |||
168 | #define EUR_CR_CLKGATESTATUS_DCU1_L0L1_CLKS_MASK 0x00800000U | 171 | #define EUR_CR_CLKGATESTATUS_DCU1_L0L1_CLKS_MASK 0x00800000U |
169 | #define EUR_CR_CLKGATESTATUS_DCU1_L0L1_CLKS_SHIFT 23 | 172 | #define EUR_CR_CLKGATESTATUS_DCU1_L0L1_CLKS_SHIFT 23 |
170 | #define EUR_CR_CLKGATESTATUS_DCU1_L0L1_CLKS_SIGNED 0 | 173 | #define EUR_CR_CLKGATESTATUS_DCU1_L0L1_CLKS_SIGNED 0 |
174 | #define EUR_CR_CLKGATESTATUS_BIF_CORE_CLKS_MASK 0x01000000U | ||
175 | #define EUR_CR_CLKGATESTATUS_BIF_CORE_CLKS_SHIFT 24 | ||
176 | #define EUR_CR_CLKGATESTATUS_BIF_CORE_CLKS_SIGNED 0 | ||
171 | #define EUR_CR_CLKGATECTLOVR 0x000C | 177 | #define EUR_CR_CLKGATECTLOVR 0x000C |
172 | #define EUR_CR_CLKGATECTLOVR_ISP_CLKO_MASK 0x00000003U | 178 | #define EUR_CR_CLKGATECTLOVR_ISP_CLKO_MASK 0x00000003U |
173 | #define EUR_CR_CLKGATECTLOVR_ISP_CLKO_SHIFT 0 | 179 | #define EUR_CR_CLKGATECTLOVR_ISP_CLKO_SHIFT 0 |
@@ -199,6 +205,9 @@ | |||
199 | #define EUR_CR_CLKGATECTLOVR_TA_CLKO_MASK 0x000C0000U | 205 | #define EUR_CR_CLKGATECTLOVR_TA_CLKO_MASK 0x000C0000U |
200 | #define EUR_CR_CLKGATECTLOVR_TA_CLKO_SHIFT 18 | 206 | #define EUR_CR_CLKGATECTLOVR_TA_CLKO_SHIFT 18 |
201 | #define EUR_CR_CLKGATECTLOVR_TA_CLKO_SIGNED 0 | 207 | #define EUR_CR_CLKGATECTLOVR_TA_CLKO_SIGNED 0 |
208 | #define EUR_CR_CLKGATECTLOVR_BIF_CORE_CLKO_MASK 0x00300000U | ||
209 | #define EUR_CR_CLKGATECTLOVR_BIF_CORE_CLKO_SHIFT 20 | ||
210 | #define EUR_CR_CLKGATECTLOVR_BIF_CORE_CLKO_SIGNED 0 | ||
202 | #define EUR_CR_POWER 0x001C | 211 | #define EUR_CR_POWER 0x001C |
203 | #define EUR_CR_POWER_PIPE_DISABLE_MASK 0x00000001U | 212 | #define EUR_CR_POWER_PIPE_DISABLE_MASK 0x00000001U |
204 | #define EUR_CR_POWER_PIPE_DISABLE_SHIFT 0 | 213 | #define EUR_CR_POWER_PIPE_DISABLE_SHIFT 0 |
@@ -671,118 +680,6 @@ | |||
671 | #define EUR_CR_TIMER_VALUE_MASK 0xFFFFFFFFU | 680 | #define EUR_CR_TIMER_VALUE_MASK 0xFFFFFFFFU |
672 | #define EUR_CR_TIMER_VALUE_SHIFT 0 | 681 | #define EUR_CR_TIMER_VALUE_SHIFT 0 |
673 | #define EUR_CR_TIMER_VALUE_SIGNED 0 | 682 | #define EUR_CR_TIMER_VALUE_SIGNED 0 |
674 | #define EUR_CR_USE_CODE_BASE_0 0x0A0C | ||
675 | #define EUR_CR_USE_CODE_BASE_ADDR_00_MASK 0x03FFFFFFU | ||
676 | #define EUR_CR_USE_CODE_BASE_ADDR_00_SHIFT 0 | ||
677 | #define EUR_CR_USE_CODE_BASE_ADDR_00_SIGNED 0 | ||
678 | #define EUR_CR_USE_CODE_BASE_DM_00_MASK 0x0C000000U | ||
679 | #define EUR_CR_USE_CODE_BASE_DM_00_SHIFT 26 | ||
680 | #define EUR_CR_USE_CODE_BASE_DM_00_SIGNED 0 | ||
681 | #define EUR_CR_USE_CODE_BASE_1 0x0A10 | ||
682 | #define EUR_CR_USE_CODE_BASE_ADDR_01_MASK 0x03FFFFFFU | ||
683 | #define EUR_CR_USE_CODE_BASE_ADDR_01_SHIFT 0 | ||
684 | #define EUR_CR_USE_CODE_BASE_ADDR_01_SIGNED 0 | ||
685 | #define EUR_CR_USE_CODE_BASE_DM_01_MASK 0x0C000000U | ||
686 | #define EUR_CR_USE_CODE_BASE_DM_01_SHIFT 26 | ||
687 | #define EUR_CR_USE_CODE_BASE_DM_01_SIGNED 0 | ||
688 | #define EUR_CR_USE_CODE_BASE_2 0x0A14 | ||
689 | #define EUR_CR_USE_CODE_BASE_ADDR_02_MASK 0x03FFFFFFU | ||
690 | #define EUR_CR_USE_CODE_BASE_ADDR_02_SHIFT 0 | ||
691 | #define EUR_CR_USE_CODE_BASE_ADDR_02_SIGNED 0 | ||
692 | #define EUR_CR_USE_CODE_BASE_DM_02_MASK 0x0C000000U | ||
693 | #define EUR_CR_USE_CODE_BASE_DM_02_SHIFT 26 | ||
694 | #define EUR_CR_USE_CODE_BASE_DM_02_SIGNED 0 | ||
695 | #define EUR_CR_USE_CODE_BASE_3 0x0A18 | ||
696 | #define EUR_CR_USE_CODE_BASE_ADDR_03_MASK 0x03FFFFFFU | ||
697 | #define EUR_CR_USE_CODE_BASE_ADDR_03_SHIFT 0 | ||
698 | #define EUR_CR_USE_CODE_BASE_ADDR_03_SIGNED 0 | ||
699 | #define EUR_CR_USE_CODE_BASE_DM_03_MASK 0x0C000000U | ||
700 | #define EUR_CR_USE_CODE_BASE_DM_03_SHIFT 26 | ||
701 | #define EUR_CR_USE_CODE_BASE_DM_03_SIGNED 0 | ||
702 | #define EUR_CR_USE_CODE_BASE_4 0x0A1C | ||
703 | #define EUR_CR_USE_CODE_BASE_ADDR_04_MASK 0x03FFFFFFU | ||
704 | #define EUR_CR_USE_CODE_BASE_ADDR_04_SHIFT 0 | ||
705 | #define EUR_CR_USE_CODE_BASE_ADDR_04_SIGNED 0 | ||
706 | #define EUR_CR_USE_CODE_BASE_DM_04_MASK 0x0C000000U | ||
707 | #define EUR_CR_USE_CODE_BASE_DM_04_SHIFT 26 | ||
708 | #define EUR_CR_USE_CODE_BASE_DM_04_SIGNED 0 | ||
709 | #define EUR_CR_USE_CODE_BASE_5 0x0A20 | ||
710 | #define EUR_CR_USE_CODE_BASE_ADDR_05_MASK 0x03FFFFFFU | ||
711 | #define EUR_CR_USE_CODE_BASE_ADDR_05_SHIFT 0 | ||
712 | #define EUR_CR_USE_CODE_BASE_ADDR_05_SIGNED 0 | ||
713 | #define EUR_CR_USE_CODE_BASE_DM_05_MASK 0x0C000000U | ||
714 | #define EUR_CR_USE_CODE_BASE_DM_05_SHIFT 26 | ||
715 | #define EUR_CR_USE_CODE_BASE_DM_05_SIGNED 0 | ||
716 | #define EUR_CR_USE_CODE_BASE_6 0x0A24 | ||
717 | #define EUR_CR_USE_CODE_BASE_ADDR_06_MASK 0x03FFFFFFU | ||
718 | #define EUR_CR_USE_CODE_BASE_ADDR_06_SHIFT 0 | ||
719 | #define EUR_CR_USE_CODE_BASE_ADDR_06_SIGNED 0 | ||
720 | #define EUR_CR_USE_CODE_BASE_DM_06_MASK 0x0C000000U | ||
721 | #define EUR_CR_USE_CODE_BASE_DM_06_SHIFT 26 | ||
722 | #define EUR_CR_USE_CODE_BASE_DM_06_SIGNED 0 | ||
723 | #define EUR_CR_USE_CODE_BASE_7 0x0A28 | ||
724 | #define EUR_CR_USE_CODE_BASE_ADDR_07_MASK 0x03FFFFFFU | ||
725 | #define EUR_CR_USE_CODE_BASE_ADDR_07_SHIFT 0 | ||
726 | #define EUR_CR_USE_CODE_BASE_ADDR_07_SIGNED 0 | ||
727 | #define EUR_CR_USE_CODE_BASE_DM_07_MASK 0x0C000000U | ||
728 | #define EUR_CR_USE_CODE_BASE_DM_07_SHIFT 26 | ||
729 | #define EUR_CR_USE_CODE_BASE_DM_07_SIGNED 0 | ||
730 | #define EUR_CR_USE_CODE_BASE_8 0x0A2C | ||
731 | #define EUR_CR_USE_CODE_BASE_ADDR_08_MASK 0x03FFFFFFU | ||
732 | #define EUR_CR_USE_CODE_BASE_ADDR_08_SHIFT 0 | ||
733 | #define EUR_CR_USE_CODE_BASE_ADDR_08_SIGNED 0 | ||
734 | #define EUR_CR_USE_CODE_BASE_DM_08_MASK 0x0C000000U | ||
735 | #define EUR_CR_USE_CODE_BASE_DM_08_SHIFT 26 | ||
736 | #define EUR_CR_USE_CODE_BASE_DM_08_SIGNED 0 | ||
737 | #define EUR_CR_USE_CODE_BASE_9 0x0A30 | ||
738 | #define EUR_CR_USE_CODE_BASE_ADDR_09_MASK 0x03FFFFFFU | ||
739 | #define EUR_CR_USE_CODE_BASE_ADDR_09_SHIFT 0 | ||
740 | #define EUR_CR_USE_CODE_BASE_ADDR_09_SIGNED 0 | ||
741 | #define EUR_CR_USE_CODE_BASE_DM_09_MASK 0x0C000000U | ||
742 | #define EUR_CR_USE_CODE_BASE_DM_09_SHIFT 26 | ||
743 | #define EUR_CR_USE_CODE_BASE_DM_09_SIGNED 0 | ||
744 | #define EUR_CR_USE_CODE_BASE_10 0x0A34 | ||
745 | #define EUR_CR_USE_CODE_BASE_ADDR_10_MASK 0x03FFFFFFU | ||
746 | #define EUR_CR_USE_CODE_BASE_ADDR_10_SHIFT 0 | ||
747 | #define EUR_CR_USE_CODE_BASE_ADDR_10_SIGNED 0 | ||
748 | #define EUR_CR_USE_CODE_BASE_DM_10_MASK 0x0C000000U | ||
749 | #define EUR_CR_USE_CODE_BASE_DM_10_SHIFT 26 | ||
750 | #define EUR_CR_USE_CODE_BASE_DM_10_SIGNED 0 | ||
751 | #define EUR_CR_USE_CODE_BASE_11 0x0A38 | ||
752 | #define EUR_CR_USE_CODE_BASE_ADDR_11_MASK 0x03FFFFFFU | ||
753 | #define EUR_CR_USE_CODE_BASE_ADDR_11_SHIFT 0 | ||
754 | #define EUR_CR_USE_CODE_BASE_ADDR_11_SIGNED 0 | ||
755 | #define EUR_CR_USE_CODE_BASE_DM_11_MASK 0x0C000000U | ||
756 | #define EUR_CR_USE_CODE_BASE_DM_11_SHIFT 26 | ||
757 | #define EUR_CR_USE_CODE_BASE_DM_11_SIGNED 0 | ||
758 | #define EUR_CR_USE_CODE_BASE_12 0x0A3C | ||
759 | #define EUR_CR_USE_CODE_BASE_ADDR_12_MASK 0x03FFFFFFU | ||
760 | #define EUR_CR_USE_CODE_BASE_ADDR_12_SHIFT 0 | ||
761 | #define EUR_CR_USE_CODE_BASE_ADDR_12_SIGNED 0 | ||
762 | #define EUR_CR_USE_CODE_BASE_DM_12_MASK 0x0C000000U | ||
763 | #define EUR_CR_USE_CODE_BASE_DM_12_SHIFT 26 | ||
764 | #define EUR_CR_USE_CODE_BASE_DM_12_SIGNED 0 | ||
765 | #define EUR_CR_USE_CODE_BASE_13 0x0A40 | ||
766 | #define EUR_CR_USE_CODE_BASE_ADDR_13_MASK 0x03FFFFFFU | ||
767 | #define EUR_CR_USE_CODE_BASE_ADDR_13_SHIFT 0 | ||
768 | #define EUR_CR_USE_CODE_BASE_ADDR_13_SIGNED 0 | ||
769 | #define EUR_CR_USE_CODE_BASE_DM_13_MASK 0x0C000000U | ||
770 | #define EUR_CR_USE_CODE_BASE_DM_13_SHIFT 26 | ||
771 | #define EUR_CR_USE_CODE_BASE_DM_13_SIGNED 0 | ||
772 | #define EUR_CR_USE_CODE_BASE_14 0x0A44 | ||
773 | #define EUR_CR_USE_CODE_BASE_ADDR_14_MASK 0x03FFFFFFU | ||
774 | #define EUR_CR_USE_CODE_BASE_ADDR_14_SHIFT 0 | ||
775 | #define EUR_CR_USE_CODE_BASE_ADDR_14_SIGNED 0 | ||
776 | #define EUR_CR_USE_CODE_BASE_DM_14_MASK 0x0C000000U | ||
777 | #define EUR_CR_USE_CODE_BASE_DM_14_SHIFT 26 | ||
778 | #define EUR_CR_USE_CODE_BASE_DM_14_SIGNED 0 | ||
779 | #define EUR_CR_USE_CODE_BASE_15 0x0A48 | ||
780 | #define EUR_CR_USE_CODE_BASE_ADDR_15_MASK 0x03FFFFFFU | ||
781 | #define EUR_CR_USE_CODE_BASE_ADDR_15_SHIFT 0 | ||
782 | #define EUR_CR_USE_CODE_BASE_ADDR_15_SIGNED 0 | ||
783 | #define EUR_CR_USE_CODE_BASE_DM_15_MASK 0x0C000000U | ||
784 | #define EUR_CR_USE_CODE_BASE_DM_15_SHIFT 26 | ||
785 | #define EUR_CR_USE_CODE_BASE_DM_15_SIGNED 0 | ||
786 | #define EUR_CR_EVENT_KICK1 0x0AB0 | 683 | #define EUR_CR_EVENT_KICK1 0x0AB0 |
787 | #define EUR_CR_EVENT_KICK1_NOW_MASK 0x000000FFU | 684 | #define EUR_CR_EVENT_KICK1_NOW_MASK 0x000000FFU |
788 | #define EUR_CR_EVENT_KICK1_NOW_SHIFT 0 | 685 | #define EUR_CR_EVENT_KICK1_NOW_SHIFT 0 |
@@ -1090,6 +987,19 @@ | |||
1090 | #define EUR_CR_BIF_BANK_STATUS_TA_CURRENT_BANK_MASK 0x00000002U | 987 | #define EUR_CR_BIF_BANK_STATUS_TA_CURRENT_BANK_MASK 0x00000002U |
1091 | #define EUR_CR_BIF_BANK_STATUS_TA_CURRENT_BANK_SHIFT 1 | 988 | #define EUR_CR_BIF_BANK_STATUS_TA_CURRENT_BANK_SHIFT 1 |
1092 | #define EUR_CR_BIF_BANK_STATUS_TA_CURRENT_BANK_SIGNED 0 | 989 | #define EUR_CR_BIF_BANK_STATUS_TA_CURRENT_BANK_SIGNED 0 |
990 | #define EUR_CR_BIF_MMU_CTRL 0x0CD0 | ||
991 | #define EUR_CR_BIF_MMU_CTRL_PREFETCHING_ON_MASK 0x00000001U | ||
992 | #define EUR_CR_BIF_MMU_CTRL_PREFETCHING_ON_SHIFT 0 | ||
993 | #define EUR_CR_BIF_MMU_CTRL_PREFETCHING_ON_SIGNED 0 | ||
994 | #define EUR_CR_BIF_MMU_CTRL_ADDR_HASH_MODE_MASK 0x00000006U | ||
995 | #define EUR_CR_BIF_MMU_CTRL_ADDR_HASH_MODE_SHIFT 1 | ||
996 | #define EUR_CR_BIF_MMU_CTRL_ADDR_HASH_MODE_SIGNED 0 | ||
997 | #define EUR_CR_BIF_MMU_CTRL_ENABLE_WRITE_BURST_COLLATE_MASK 0x00000008U | ||
998 | #define EUR_CR_BIF_MMU_CTRL_ENABLE_WRITE_BURST_COLLATE_SHIFT 3 | ||
999 | #define EUR_CR_BIF_MMU_CTRL_ENABLE_WRITE_BURST_COLLATE_SIGNED 0 | ||
1000 | #define EUR_CR_BIF_MMU_CTRL_ENABLE_DC_TLB_MASK 0x00000010U | ||
1001 | #define EUR_CR_BIF_MMU_CTRL_ENABLE_DC_TLB_SHIFT 4 | ||
1002 | #define EUR_CR_BIF_MMU_CTRL_ENABLE_DC_TLB_SIGNED 0 | ||
1093 | #define EUR_CR_2D_BLIT_STATUS 0x0E04 | 1003 | #define EUR_CR_2D_BLIT_STATUS 0x0E04 |
1094 | #define EUR_CR_2D_BLIT_STATUS_COMPLETE_MASK 0x00FFFFFFU | 1004 | #define EUR_CR_2D_BLIT_STATUS_COMPLETE_MASK 0x00FFFFFFU |
1095 | #define EUR_CR_2D_BLIT_STATUS_COMPLETE_SHIFT 0 | 1005 | #define EUR_CR_2D_BLIT_STATUS_COMPLETE_SHIFT 0 |
@@ -1208,40 +1118,238 @@ | |||
1208 | #define EUR_CR_BREAKPOINT_READ_ADDRESS_MASK 0xFFFFFFF0U | 1118 | #define EUR_CR_BREAKPOINT_READ_ADDRESS_MASK 0xFFFFFFF0U |
1209 | #define EUR_CR_BREAKPOINT_READ_ADDRESS_SHIFT 4 | 1119 | #define EUR_CR_BREAKPOINT_READ_ADDRESS_SHIFT 4 |
1210 | #define EUR_CR_BREAKPOINT_READ_ADDRESS_SIGNED 0 | 1120 | #define EUR_CR_BREAKPOINT_READ_ADDRESS_SIGNED 0 |
1211 | #define EUR_CR_BREAKPOINT_TRAP 0x0F78 | 1121 | #define EUR_CR_PARTITION_BREAKPOINT_TRAP 0x0F78 |
1212 | #define EUR_CR_BREAKPOINT_TRAP_CONTINUE_MASK 0x00000002U | 1122 | #define EUR_CR_PARTITION_BREAKPOINT_TRAP_CONTINUE_MASK 0x00000002U |
1213 | #define EUR_CR_BREAKPOINT_TRAP_CONTINUE_SHIFT 1 | 1123 | #define EUR_CR_PARTITION_BREAKPOINT_TRAP_CONTINUE_SHIFT 1 |
1214 | #define EUR_CR_BREAKPOINT_TRAP_CONTINUE_SIGNED 0 | 1124 | #define EUR_CR_PARTITION_BREAKPOINT_TRAP_CONTINUE_SIGNED 0 |
1215 | #define EUR_CR_BREAKPOINT_TRAP_WRNOTIFY_MASK 0x00000001U | 1125 | #define EUR_CR_PARTITION_BREAKPOINT_TRAP_WRNOTIFY_MASK 0x00000001U |
1216 | #define EUR_CR_BREAKPOINT_TRAP_WRNOTIFY_SHIFT 0 | 1126 | #define EUR_CR_PARTITION_BREAKPOINT_TRAP_WRNOTIFY_SHIFT 0 |
1217 | #define EUR_CR_BREAKPOINT_TRAP_WRNOTIFY_SIGNED 0 | 1127 | #define EUR_CR_PARTITION_BREAKPOINT_TRAP_WRNOTIFY_SIGNED 0 |
1218 | #define EUR_CR_BREAKPOINT 0x0F7C | 1128 | #define EUR_CR_PARTITION_BREAKPOINT 0x0F7C |
1219 | #define EUR_CR_BREAKPOINT_UNTRAPPED_MASK 0x00000008U | 1129 | #define EUR_CR_PARTITION_BREAKPOINT_MODULE_ID_MASK 0x000003C0U |
1220 | #define EUR_CR_BREAKPOINT_UNTRAPPED_SHIFT 3 | 1130 | #define EUR_CR_PARTITION_BREAKPOINT_MODULE_ID_SHIFT 6 |
1221 | #define EUR_CR_BREAKPOINT_UNTRAPPED_SIGNED 0 | 1131 | #define EUR_CR_PARTITION_BREAKPOINT_MODULE_ID_SIGNED 0 |
1222 | #define EUR_CR_BREAKPOINT_TRAPPED_MASK 0x00000004U | 1132 | #define EUR_CR_PARTITION_BREAKPOINT_ID_MASK 0x00000030U |
1223 | #define EUR_CR_BREAKPOINT_TRAPPED_SHIFT 2 | 1133 | #define EUR_CR_PARTITION_BREAKPOINT_ID_SHIFT 4 |
1224 | #define EUR_CR_BREAKPOINT_TRAPPED_SIGNED 0 | 1134 | #define EUR_CR_PARTITION_BREAKPOINT_ID_SIGNED 0 |
1225 | #define EUR_CR_BREAKPOINT_TRAP_INFO0 0x0F80 | 1135 | #define EUR_CR_PARTITION_BREAKPOINT_UNTRAPPED_MASK 0x00000008U |
1226 | #define EUR_CR_BREAKPOINT_TRAP_INFO0_ADDRESS_MASK 0xFFFFFFF0U | 1136 | #define EUR_CR_PARTITION_BREAKPOINT_UNTRAPPED_SHIFT 3 |
1227 | #define EUR_CR_BREAKPOINT_TRAP_INFO0_ADDRESS_SHIFT 4 | 1137 | #define EUR_CR_PARTITION_BREAKPOINT_UNTRAPPED_SIGNED 0 |
1228 | #define EUR_CR_BREAKPOINT_TRAP_INFO0_ADDRESS_SIGNED 0 | 1138 | #define EUR_CR_PARTITION_BREAKPOINT_TRAPPED_MASK 0x00000004U |
1229 | #define EUR_CR_BREAKPOINT_TRAP_INFO1 0x0F84 | 1139 | #define EUR_CR_PARTITION_BREAKPOINT_TRAPPED_SHIFT 2 |
1230 | #define EUR_CR_BREAKPOINT_TRAP_INFO1_SIZE_MASK 0x00007C00U | 1140 | #define EUR_CR_PARTITION_BREAKPOINT_TRAPPED_SIGNED 0 |
1231 | #define EUR_CR_BREAKPOINT_TRAP_INFO1_SIZE_SHIFT 10 | 1141 | #define EUR_CR_PARTITION_BREAKPOINT_TRAP_INFO0 0x0F80 |
1232 | #define EUR_CR_BREAKPOINT_TRAP_INFO1_SIZE_SIGNED 0 | 1142 | #define EUR_CR_PARTITION_BREAKPOINT_TRAP_INFO0_ADDRESS_MASK 0xFFFFFFF0U |
1233 | #define EUR_CR_BREAKPOINT_TRAP_INFO1_NUMBER_MASK 0x00000300U | 1143 | #define EUR_CR_PARTITION_BREAKPOINT_TRAP_INFO0_ADDRESS_SHIFT 4 |
1234 | #define EUR_CR_BREAKPOINT_TRAP_INFO1_NUMBER_SHIFT 8 | 1144 | #define EUR_CR_PARTITION_BREAKPOINT_TRAP_INFO0_ADDRESS_SIGNED 0 |
1235 | #define EUR_CR_BREAKPOINT_TRAP_INFO1_NUMBER_SIGNED 0 | 1145 | #define EUR_CR_PARTITION_BREAKPOINT_TRAP_INFO1 0x0F84 |
1236 | #define EUR_CR_BREAKPOINT_TRAP_INFO1_TAG_MASK 0x000000F8U | 1146 | #define EUR_CR_PARTITION_BREAKPOINT_TRAP_INFO1_SIZE_MASK 0x00007C00U |
1237 | #define EUR_CR_BREAKPOINT_TRAP_INFO1_TAG_SHIFT 3 | 1147 | #define EUR_CR_PARTITION_BREAKPOINT_TRAP_INFO1_SIZE_SHIFT 10 |
1238 | #define EUR_CR_BREAKPOINT_TRAP_INFO1_TAG_SIGNED 0 | 1148 | #define EUR_CR_PARTITION_BREAKPOINT_TRAP_INFO1_SIZE_SIGNED 0 |
1239 | #define EUR_CR_BREAKPOINT_TRAP_INFO1_DATA_MASTER_MASK 0x00000006U | 1149 | #define EUR_CR_PARTITION_BREAKPOINT_TRAP_INFO1_NUMBER_MASK 0x00000300U |
1240 | #define EUR_CR_BREAKPOINT_TRAP_INFO1_DATA_MASTER_SHIFT 1 | 1150 | #define EUR_CR_PARTITION_BREAKPOINT_TRAP_INFO1_NUMBER_SHIFT 8 |
1241 | #define EUR_CR_BREAKPOINT_TRAP_INFO1_DATA_MASTER_SIGNED 0 | 1151 | #define EUR_CR_PARTITION_BREAKPOINT_TRAP_INFO1_NUMBER_SIGNED 0 |
1242 | #define EUR_CR_BREAKPOINT_TRAP_INFO1_RNW_MASK 0x00000001U | 1152 | #define EUR_CR_PARTITION_BREAKPOINT_TRAP_INFO1_TAG_MASK 0x000000F8U |
1243 | #define EUR_CR_BREAKPOINT_TRAP_INFO1_RNW_SHIFT 0 | 1153 | #define EUR_CR_PARTITION_BREAKPOINT_TRAP_INFO1_TAG_SHIFT 3 |
1244 | #define EUR_CR_BREAKPOINT_TRAP_INFO1_RNW_SIGNED 0 | 1154 | #define EUR_CR_PARTITION_BREAKPOINT_TRAP_INFO1_TAG_SIGNED 0 |
1155 | #define EUR_CR_PARTITION_BREAKPOINT_TRAP_INFO1_DATA_MASTER_MASK 0x00000006U | ||
1156 | #define EUR_CR_PARTITION_BREAKPOINT_TRAP_INFO1_DATA_MASTER_SHIFT 1 | ||
1157 | #define EUR_CR_PARTITION_BREAKPOINT_TRAP_INFO1_DATA_MASTER_SIGNED 0 | ||
1158 | #define EUR_CR_PARTITION_BREAKPOINT_TRAP_INFO1_RNW_MASK 0x00000001U | ||
1159 | #define EUR_CR_PARTITION_BREAKPOINT_TRAP_INFO1_RNW_SHIFT 0 | ||
1160 | #define EUR_CR_PARTITION_BREAKPOINT_TRAP_INFO1_RNW_SIGNED 0 | ||
1161 | #define EUR_CR_USE_CODE_BASE_0 0x0A0C | ||
1162 | #define EUR_CR_USE_CODE_BASE_ADDR_00_MASK 0x03FFFFFFU | ||
1163 | #define EUR_CR_USE_CODE_BASE_ADDR_00_SHIFT 0 | ||
1164 | #define EUR_CR_USE_CODE_BASE_ADDR_00_SIGNED 0 | ||
1165 | #define EUR_CR_USE_CODE_BASE_DM_00_MASK 0x0C000000U | ||
1166 | #define EUR_CR_USE_CODE_BASE_DM_00_SHIFT 26 | ||
1167 | #define EUR_CR_USE_CODE_BASE_DM_00_SIGNED 0 | ||
1168 | #define EUR_CR_USE_CODE_BASE_1 0x0A10 | ||
1169 | #define EUR_CR_USE_CODE_BASE_ADDR_01_MASK 0x03FFFFFFU | ||
1170 | #define EUR_CR_USE_CODE_BASE_ADDR_01_SHIFT 0 | ||
1171 | #define EUR_CR_USE_CODE_BASE_ADDR_01_SIGNED 0 | ||
1172 | #define EUR_CR_USE_CODE_BASE_DM_01_MASK 0x0C000000U | ||
1173 | #define EUR_CR_USE_CODE_BASE_DM_01_SHIFT 26 | ||
1174 | #define EUR_CR_USE_CODE_BASE_DM_01_SIGNED 0 | ||
1175 | #define EUR_CR_USE_CODE_BASE_2 0x0A14 | ||
1176 | #define EUR_CR_USE_CODE_BASE_ADDR_02_MASK 0x03FFFFFFU | ||
1177 | #define EUR_CR_USE_CODE_BASE_ADDR_02_SHIFT 0 | ||
1178 | #define EUR_CR_USE_CODE_BASE_ADDR_02_SIGNED 0 | ||
1179 | #define EUR_CR_USE_CODE_BASE_DM_02_MASK 0x0C000000U | ||
1180 | #define EUR_CR_USE_CODE_BASE_DM_02_SHIFT 26 | ||
1181 | #define EUR_CR_USE_CODE_BASE_DM_02_SIGNED 0 | ||
1182 | #define EUR_CR_USE_CODE_BASE_3 0x0A18 | ||
1183 | #define EUR_CR_USE_CODE_BASE_ADDR_03_MASK 0x03FFFFFFU | ||
1184 | #define EUR_CR_USE_CODE_BASE_ADDR_03_SHIFT 0 | ||
1185 | #define EUR_CR_USE_CODE_BASE_ADDR_03_SIGNED 0 | ||
1186 | #define EUR_CR_USE_CODE_BASE_DM_03_MASK 0x0C000000U | ||
1187 | #define EUR_CR_USE_CODE_BASE_DM_03_SHIFT 26 | ||
1188 | #define EUR_CR_USE_CODE_BASE_DM_03_SIGNED 0 | ||
1189 | #define EUR_CR_USE_CODE_BASE_4 0x0A1C | ||
1190 | #define EUR_CR_USE_CODE_BASE_ADDR_04_MASK 0x03FFFFFFU | ||
1191 | #define EUR_CR_USE_CODE_BASE_ADDR_04_SHIFT 0 | ||
1192 | #define EUR_CR_USE_CODE_BASE_ADDR_04_SIGNED 0 | ||
1193 | #define EUR_CR_USE_CODE_BASE_DM_04_MASK 0x0C000000U | ||
1194 | #define EUR_CR_USE_CODE_BASE_DM_04_SHIFT 26 | ||
1195 | #define EUR_CR_USE_CODE_BASE_DM_04_SIGNED 0 | ||
1196 | #define EUR_CR_USE_CODE_BASE_5 0x0A20 | ||
1197 | #define EUR_CR_USE_CODE_BASE_ADDR_05_MASK 0x03FFFFFFU | ||
1198 | #define EUR_CR_USE_CODE_BASE_ADDR_05_SHIFT 0 | ||
1199 | #define EUR_CR_USE_CODE_BASE_ADDR_05_SIGNED 0 | ||
1200 | #define EUR_CR_USE_CODE_BASE_DM_05_MASK 0x0C000000U | ||
1201 | #define EUR_CR_USE_CODE_BASE_DM_05_SHIFT 26 | ||
1202 | #define EUR_CR_USE_CODE_BASE_DM_05_SIGNED 0 | ||
1203 | #define EUR_CR_USE_CODE_BASE_6 0x0A24 | ||
1204 | #define EUR_CR_USE_CODE_BASE_ADDR_06_MASK 0x03FFFFFFU | ||
1205 | #define EUR_CR_USE_CODE_BASE_ADDR_06_SHIFT 0 | ||
1206 | #define EUR_CR_USE_CODE_BASE_ADDR_06_SIGNED 0 | ||
1207 | #define EUR_CR_USE_CODE_BASE_DM_06_MASK 0x0C000000U | ||
1208 | #define EUR_CR_USE_CODE_BASE_DM_06_SHIFT 26 | ||
1209 | #define EUR_CR_USE_CODE_BASE_DM_06_SIGNED 0 | ||
1210 | #define EUR_CR_USE_CODE_BASE_7 0x0A28 | ||
1211 | #define EUR_CR_USE_CODE_BASE_ADDR_07_MASK 0x03FFFFFFU | ||
1212 | #define EUR_CR_USE_CODE_BASE_ADDR_07_SHIFT 0 | ||
1213 | #define EUR_CR_USE_CODE_BASE_ADDR_07_SIGNED 0 | ||
1214 | #define EUR_CR_USE_CODE_BASE_DM_07_MASK 0x0C000000U | ||
1215 | #define EUR_CR_USE_CODE_BASE_DM_07_SHIFT 26 | ||
1216 | #define EUR_CR_USE_CODE_BASE_DM_07_SIGNED 0 | ||
1217 | #define EUR_CR_USE_CODE_BASE_8 0x0A2C | ||
1218 | #define EUR_CR_USE_CODE_BASE_ADDR_08_MASK 0x03FFFFFFU | ||
1219 | #define EUR_CR_USE_CODE_BASE_ADDR_08_SHIFT 0 | ||
1220 | #define EUR_CR_USE_CODE_BASE_ADDR_08_SIGNED 0 | ||
1221 | #define EUR_CR_USE_CODE_BASE_DM_08_MASK 0x0C000000U | ||
1222 | #define EUR_CR_USE_CODE_BASE_DM_08_SHIFT 26 | ||
1223 | #define EUR_CR_USE_CODE_BASE_DM_08_SIGNED 0 | ||
1224 | #define EUR_CR_USE_CODE_BASE_9 0x0A30 | ||
1225 | #define EUR_CR_USE_CODE_BASE_ADDR_09_MASK 0x03FFFFFFU | ||
1226 | #define EUR_CR_USE_CODE_BASE_ADDR_09_SHIFT 0 | ||
1227 | #define EUR_CR_USE_CODE_BASE_ADDR_09_SIGNED 0 | ||
1228 | #define EUR_CR_USE_CODE_BASE_DM_09_MASK 0x0C000000U | ||
1229 | #define EUR_CR_USE_CODE_BASE_DM_09_SHIFT 26 | ||
1230 | #define EUR_CR_USE_CODE_BASE_DM_09_SIGNED 0 | ||
1231 | #define EUR_CR_USE_CODE_BASE_10 0x0A34 | ||
1232 | #define EUR_CR_USE_CODE_BASE_ADDR_10_MASK 0x03FFFFFFU | ||
1233 | #define EUR_CR_USE_CODE_BASE_ADDR_10_SHIFT 0 | ||
1234 | #define EUR_CR_USE_CODE_BASE_ADDR_10_SIGNED 0 | ||
1235 | #define EUR_CR_USE_CODE_BASE_DM_10_MASK 0x0C000000U | ||
1236 | #define EUR_CR_USE_CODE_BASE_DM_10_SHIFT 26 | ||
1237 | #define EUR_CR_USE_CODE_BASE_DM_10_SIGNED 0 | ||
1238 | #define EUR_CR_USE_CODE_BASE_11 0x0A38 | ||
1239 | #define EUR_CR_USE_CODE_BASE_ADDR_11_MASK 0x03FFFFFFU | ||
1240 | #define EUR_CR_USE_CODE_BASE_ADDR_11_SHIFT 0 | ||
1241 | #define EUR_CR_USE_CODE_BASE_ADDR_11_SIGNED 0 | ||
1242 | #define EUR_CR_USE_CODE_BASE_DM_11_MASK 0x0C000000U | ||
1243 | #define EUR_CR_USE_CODE_BASE_DM_11_SHIFT 26 | ||
1244 | #define EUR_CR_USE_CODE_BASE_DM_11_SIGNED 0 | ||
1245 | #define EUR_CR_USE_CODE_BASE_12 0x0A3C | ||
1246 | #define EUR_CR_USE_CODE_BASE_ADDR_12_MASK 0x03FFFFFFU | ||
1247 | #define EUR_CR_USE_CODE_BASE_ADDR_12_SHIFT 0 | ||
1248 | #define EUR_CR_USE_CODE_BASE_ADDR_12_SIGNED 0 | ||
1249 | #define EUR_CR_USE_CODE_BASE_DM_12_MASK 0x0C000000U | ||
1250 | #define EUR_CR_USE_CODE_BASE_DM_12_SHIFT 26 | ||
1251 | #define EUR_CR_USE_CODE_BASE_DM_12_SIGNED 0 | ||
1252 | #define EUR_CR_USE_CODE_BASE_13 0x0A40 | ||
1253 | #define EUR_CR_USE_CODE_BASE_ADDR_13_MASK 0x03FFFFFFU | ||
1254 | #define EUR_CR_USE_CODE_BASE_ADDR_13_SHIFT 0 | ||
1255 | #define EUR_CR_USE_CODE_BASE_ADDR_13_SIGNED 0 | ||
1256 | #define EUR_CR_USE_CODE_BASE_DM_13_MASK 0x0C000000U | ||
1257 | #define EUR_CR_USE_CODE_BASE_DM_13_SHIFT 26 | ||
1258 | #define EUR_CR_USE_CODE_BASE_DM_13_SIGNED 0 | ||
1259 | #define EUR_CR_USE_CODE_BASE_14 0x0A44 | ||
1260 | #define EUR_CR_USE_CODE_BASE_ADDR_14_MASK 0x03FFFFFFU | ||
1261 | #define EUR_CR_USE_CODE_BASE_ADDR_14_SHIFT 0 | ||
1262 | #define EUR_CR_USE_CODE_BASE_ADDR_14_SIGNED 0 | ||
1263 | #define EUR_CR_USE_CODE_BASE_DM_14_MASK 0x0C000000U | ||
1264 | #define EUR_CR_USE_CODE_BASE_DM_14_SHIFT 26 | ||
1265 | #define EUR_CR_USE_CODE_BASE_DM_14_SIGNED 0 | ||
1266 | #define EUR_CR_USE_CODE_BASE_15 0x0A48 | ||
1267 | #define EUR_CR_USE_CODE_BASE_ADDR_15_MASK 0x03FFFFFFU | ||
1268 | #define EUR_CR_USE_CODE_BASE_ADDR_15_SHIFT 0 | ||
1269 | #define EUR_CR_USE_CODE_BASE_ADDR_15_SIGNED 0 | ||
1270 | #define EUR_CR_USE_CODE_BASE_DM_15_MASK 0x0C000000U | ||
1271 | #define EUR_CR_USE_CODE_BASE_DM_15_SHIFT 26 | ||
1272 | #define EUR_CR_USE_CODE_BASE_DM_15_SIGNED 0 | ||
1273 | #define EUR_CR_PIPE0_BREAKPOINT_TRAP 0x0F88 | ||
1274 | #define EUR_CR_PIPE0_BREAKPOINT_TRAP_CONTINUE_MASK 0x00000002U | ||
1275 | #define EUR_CR_PIPE0_BREAKPOINT_TRAP_CONTINUE_SHIFT 1 | ||
1276 | #define EUR_CR_PIPE0_BREAKPOINT_TRAP_CONTINUE_SIGNED 0 | ||
1277 | #define EUR_CR_PIPE0_BREAKPOINT_TRAP_WRNOTIFY_MASK 0x00000001U | ||
1278 | #define EUR_CR_PIPE0_BREAKPOINT_TRAP_WRNOTIFY_SHIFT 0 | ||
1279 | #define EUR_CR_PIPE0_BREAKPOINT_TRAP_WRNOTIFY_SIGNED 0 | ||
1280 | #define EUR_CR_PIPE0_BREAKPOINT 0x0F8C | ||
1281 | #define EUR_CR_PIPE0_BREAKPOINT_MODULE_ID_MASK 0x000003C0U | ||
1282 | #define EUR_CR_PIPE0_BREAKPOINT_MODULE_ID_SHIFT 6 | ||
1283 | #define EUR_CR_PIPE0_BREAKPOINT_MODULE_ID_SIGNED 0 | ||
1284 | #define EUR_CR_PIPE0_BREAKPOINT_ID_MASK 0x00000030U | ||
1285 | #define EUR_CR_PIPE0_BREAKPOINT_ID_SHIFT 4 | ||
1286 | #define EUR_CR_PIPE0_BREAKPOINT_ID_SIGNED 0 | ||
1287 | #define EUR_CR_PIPE0_BREAKPOINT_UNTRAPPED_MASK 0x00000008U | ||
1288 | #define EUR_CR_PIPE0_BREAKPOINT_UNTRAPPED_SHIFT 3 | ||
1289 | #define EUR_CR_PIPE0_BREAKPOINT_UNTRAPPED_SIGNED 0 | ||
1290 | #define EUR_CR_PIPE0_BREAKPOINT_TRAPPED_MASK 0x00000004U | ||
1291 | #define EUR_CR_PIPE0_BREAKPOINT_TRAPPED_SHIFT 2 | ||
1292 | #define EUR_CR_PIPE0_BREAKPOINT_TRAPPED_SIGNED 0 | ||
1293 | #define EUR_CR_PIPE0_BREAKPOINT_TRAP_INFO0 0x0F90 | ||
1294 | #define EUR_CR_PIPE0_BREAKPOINT_TRAP_INFO0_ADDRESS_MASK 0xFFFFFFF0U | ||
1295 | #define EUR_CR_PIPE0_BREAKPOINT_TRAP_INFO0_ADDRESS_SHIFT 4 | ||
1296 | #define EUR_CR_PIPE0_BREAKPOINT_TRAP_INFO0_ADDRESS_SIGNED 0 | ||
1297 | #define EUR_CR_PIPE0_BREAKPOINT_TRAP_INFO1 0x0F94 | ||
1298 | #define EUR_CR_PIPE0_BREAKPOINT_TRAP_INFO1_SIZE_MASK 0x00007C00U | ||
1299 | #define EUR_CR_PIPE0_BREAKPOINT_TRAP_INFO1_SIZE_SHIFT 10 | ||
1300 | #define EUR_CR_PIPE0_BREAKPOINT_TRAP_INFO1_SIZE_SIGNED 0 | ||
1301 | #define EUR_CR_PIPE0_BREAKPOINT_TRAP_INFO1_NUMBER_MASK 0x00000300U | ||
1302 | #define EUR_CR_PIPE0_BREAKPOINT_TRAP_INFO1_NUMBER_SHIFT 8 | ||
1303 | #define EUR_CR_PIPE0_BREAKPOINT_TRAP_INFO1_NUMBER_SIGNED 0 | ||
1304 | #define EUR_CR_PIPE0_BREAKPOINT_TRAP_INFO1_TAG_MASK 0x000000F8U | ||
1305 | #define EUR_CR_PIPE0_BREAKPOINT_TRAP_INFO1_TAG_SHIFT 3 | ||
1306 | #define EUR_CR_PIPE0_BREAKPOINT_TRAP_INFO1_TAG_SIGNED 0 | ||
1307 | #define EUR_CR_PIPE0_BREAKPOINT_TRAP_INFO1_DATA_MASTER_MASK 0x00000006U | ||
1308 | #define EUR_CR_PIPE0_BREAKPOINT_TRAP_INFO1_DATA_MASTER_SHIFT 1 | ||
1309 | #define EUR_CR_PIPE0_BREAKPOINT_TRAP_INFO1_DATA_MASTER_SIGNED 0 | ||
1310 | #define EUR_CR_PIPE0_BREAKPOINT_TRAP_INFO1_RNW_MASK 0x00000001U | ||
1311 | #define EUR_CR_PIPE0_BREAKPOINT_TRAP_INFO1_RNW_SHIFT 0 | ||
1312 | #define EUR_CR_PIPE0_BREAKPOINT_TRAP_INFO1_RNW_SIGNED 0 | ||
1313 | #define EUR_CR_PIPE1_BREAKPOINT_TRAP 0x0F98 | ||
1314 | #define EUR_CR_PIPE1_BREAKPOINT_TRAP_CONTINUE_MASK 0x00000002U | ||
1315 | #define EUR_CR_PIPE1_BREAKPOINT_TRAP_CONTINUE_SHIFT 1 | ||
1316 | #define EUR_CR_PIPE1_BREAKPOINT_TRAP_CONTINUE_SIGNED 0 | ||
1317 | #define EUR_CR_PIPE1_BREAKPOINT_TRAP_WRNOTIFY_MASK 0x00000001U | ||
1318 | #define EUR_CR_PIPE1_BREAKPOINT_TRAP_WRNOTIFY_SHIFT 0 | ||
1319 | #define EUR_CR_PIPE1_BREAKPOINT_TRAP_WRNOTIFY_SIGNED 0 | ||
1320 | #define EUR_CR_PIPE1_BREAKPOINT 0x0F9C | ||
1321 | #define EUR_CR_PIPE1_BREAKPOINT_MODULE_ID_MASK 0x000003C0U | ||
1322 | #define EUR_CR_PIPE1_BREAKPOINT_MODULE_ID_SHIFT 6 | ||
1323 | #define EUR_CR_PIPE1_BREAKPOINT_MODULE_ID_SIGNED 0 | ||
1324 | #define EUR_CR_PIPE1_BREAKPOINT_ID_MASK 0x00000030U | ||
1325 | #define EUR_CR_PIPE1_BREAKPOINT_ID_SHIFT 4 | ||
1326 | #define EUR_CR_PIPE1_BREAKPOINT_ID_SIGNED 0 | ||
1327 | #define EUR_CR_PIPE1_BREAKPOINT_UNTRAPPED_MASK 0x00000008U | ||
1328 | #define EUR_CR_PIPE1_BREAKPOINT_UNTRAPPED_SHIFT 3 | ||
1329 | #define EUR_CR_PIPE1_BREAKPOINT_UNTRAPPED_SIGNED 0 | ||
1330 | #define EUR_CR_PIPE1_BREAKPOINT_TRAPPED_MASK 0x00000004U | ||
1331 | #define EUR_CR_PIPE1_BREAKPOINT_TRAPPED_SHIFT 2 | ||
1332 | #define EUR_CR_PIPE1_BREAKPOINT_TRAPPED_SIGNED 0 | ||
1333 | #define EUR_CR_PIPE1_BREAKPOINT_TRAP_INFO0 0x0FA0 | ||
1334 | #define EUR_CR_PIPE1_BREAKPOINT_TRAP_INFO0_ADDRESS_MASK 0xFFFFFFF0U | ||
1335 | #define EUR_CR_PIPE1_BREAKPOINT_TRAP_INFO0_ADDRESS_SHIFT 4 | ||
1336 | #define EUR_CR_PIPE1_BREAKPOINT_TRAP_INFO0_ADDRESS_SIGNED 0 | ||
1337 | #define EUR_CR_PIPE1_BREAKPOINT_TRAP_INFO1 0x0FA4 | ||
1338 | #define EUR_CR_PIPE1_BREAKPOINT_TRAP_INFO1_SIZE_MASK 0x00007C00U | ||
1339 | #define EUR_CR_PIPE1_BREAKPOINT_TRAP_INFO1_SIZE_SHIFT 10 | ||
1340 | #define EUR_CR_PIPE1_BREAKPOINT_TRAP_INFO1_SIZE_SIGNED 0 | ||
1341 | #define EUR_CR_PIPE1_BREAKPOINT_TRAP_INFO1_NUMBER_MASK 0x00000300U | ||
1342 | #define EUR_CR_PIPE1_BREAKPOINT_TRAP_INFO1_NUMBER_SHIFT 8 | ||
1343 | #define EUR_CR_PIPE1_BREAKPOINT_TRAP_INFO1_NUMBER_SIGNED 0 | ||
1344 | #define EUR_CR_PIPE1_BREAKPOINT_TRAP_INFO1_TAG_MASK 0x000000F8U | ||
1345 | #define EUR_CR_PIPE1_BREAKPOINT_TRAP_INFO1_TAG_SHIFT 3 | ||
1346 | #define EUR_CR_PIPE1_BREAKPOINT_TRAP_INFO1_TAG_SIGNED 0 | ||
1347 | #define EUR_CR_PIPE1_BREAKPOINT_TRAP_INFO1_DATA_MASTER_MASK 0x00000006U | ||
1348 | #define EUR_CR_PIPE1_BREAKPOINT_TRAP_INFO1_DATA_MASTER_SHIFT 1 | ||
1349 | #define EUR_CR_PIPE1_BREAKPOINT_TRAP_INFO1_DATA_MASTER_SIGNED 0 | ||
1350 | #define EUR_CR_PIPE1_BREAKPOINT_TRAP_INFO1_RNW_MASK 0x00000001U | ||
1351 | #define EUR_CR_PIPE1_BREAKPOINT_TRAP_INFO1_RNW_SHIFT 0 | ||
1352 | #define EUR_CR_PIPE1_BREAKPOINT_TRAP_INFO1_RNW_SIGNED 0 | ||
1245 | #define EUR_CR_USE_CODE_BASE(X) (0x0A0C + (4 * (X))) | 1353 | #define EUR_CR_USE_CODE_BASE(X) (0x0A0C + (4 * (X))) |
1246 | #define EUR_CR_USE_CODE_BASE_ADDR_MASK 0x03FFFFFFU | 1354 | #define EUR_CR_USE_CODE_BASE_ADDR_MASK 0x03FFFFFFU |
1247 | #define EUR_CR_USE_CODE_BASE_ADDR_SHIFT 0 | 1355 | #define EUR_CR_USE_CODE_BASE_ADDR_SHIFT 0 |
diff --git a/drivers/gpu/pvr/sgx544defs.h b/drivers/gpu/pvr/sgx544defs.h new file mode 100644 index 00000000000..eb9268d4ecc --- /dev/null +++ b/drivers/gpu/pvr/sgx544defs.h | |||
@@ -0,0 +1,1351 @@ | |||
1 | /********************************************************************** | ||
2 | * | ||
3 | * Copyright(c) 2008 Imagination Technologies Ltd. All rights reserved. | ||
4 | * | ||
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. | ||
8 | * | ||
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. | ||
13 | * | ||
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. | ||
17 | * | ||
18 | * The full GNU General Public License is included in this distribution in | ||
19 | * the file called "COPYING". | ||
20 | * | ||
21 | * Contact Information: | ||
22 | * Imagination Technologies Ltd. <gpl-support@imgtec.com> | ||
23 | * Home Park Estate, Kings Langley, Herts, WD4 8LZ, UK | ||
24 | * | ||
25 | ******************************************************************************/ | ||
26 | |||
27 | #ifndef _SGX544DEFS_KM_H_ | ||
28 | #define _SGX544DEFS_KM_H_ | ||
29 | |||
30 | #define EUR_CR_CLKGATECTL 0x0000 | ||
31 | #define EUR_CR_CLKGATECTL_ISP_CLKG_MASK 0x00000003U | ||
32 | #define EUR_CR_CLKGATECTL_ISP_CLKG_SHIFT 0 | ||
33 | #define EUR_CR_CLKGATECTL_ISP_CLKG_SIGNED 0 | ||
34 | #define EUR_CR_CLKGATECTL_ISP2_CLKG_MASK 0x0000000CU | ||
35 | #define EUR_CR_CLKGATECTL_ISP2_CLKG_SHIFT 2 | ||
36 | #define EUR_CR_CLKGATECTL_ISP2_CLKG_SIGNED 0 | ||
37 | #define EUR_CR_CLKGATECTL_TSP_CLKG_MASK 0x00000030U | ||
38 | #define EUR_CR_CLKGATECTL_TSP_CLKG_SHIFT 4 | ||
39 | #define EUR_CR_CLKGATECTL_TSP_CLKG_SIGNED 0 | ||
40 | #define EUR_CR_CLKGATECTL_TE_CLKG_MASK 0x000000C0U | ||
41 | #define EUR_CR_CLKGATECTL_TE_CLKG_SHIFT 6 | ||
42 | #define EUR_CR_CLKGATECTL_TE_CLKG_SIGNED 0 | ||
43 | #define EUR_CR_CLKGATECTL_MTE_CLKG_MASK 0x00000300U | ||
44 | #define EUR_CR_CLKGATECTL_MTE_CLKG_SHIFT 8 | ||
45 | #define EUR_CR_CLKGATECTL_MTE_CLKG_SIGNED 0 | ||
46 | #define EUR_CR_CLKGATECTL_DPM_CLKG_MASK 0x00000C00U | ||
47 | #define EUR_CR_CLKGATECTL_DPM_CLKG_SHIFT 10 | ||
48 | #define EUR_CR_CLKGATECTL_DPM_CLKG_SIGNED 0 | ||
49 | #define EUR_CR_CLKGATECTL_VDM_CLKG_MASK 0x00003000U | ||
50 | #define EUR_CR_CLKGATECTL_VDM_CLKG_SHIFT 12 | ||
51 | #define EUR_CR_CLKGATECTL_VDM_CLKG_SIGNED 0 | ||
52 | #define EUR_CR_CLKGATECTL_PDS_CLKG_MASK 0x0000C000U | ||
53 | #define EUR_CR_CLKGATECTL_PDS_CLKG_SHIFT 14 | ||
54 | #define EUR_CR_CLKGATECTL_PDS_CLKG_SIGNED 0 | ||
55 | #define EUR_CR_CLKGATECTL_IDXFIFO_CLKG_MASK 0x00030000U | ||
56 | #define EUR_CR_CLKGATECTL_IDXFIFO_CLKG_SHIFT 16 | ||
57 | #define EUR_CR_CLKGATECTL_IDXFIFO_CLKG_SIGNED 0 | ||
58 | #define EUR_CR_CLKGATECTL_TA_CLKG_MASK 0x000C0000U | ||
59 | #define EUR_CR_CLKGATECTL_TA_CLKG_SHIFT 18 | ||
60 | #define EUR_CR_CLKGATECTL_TA_CLKG_SIGNED 0 | ||
61 | #define EUR_CR_CLKGATECTL_BIF_CORE_CLKG_MASK 0x00300000U | ||
62 | #define EUR_CR_CLKGATECTL_BIF_CORE_CLKG_SHIFT 20 | ||
63 | #define EUR_CR_CLKGATECTL_BIF_CORE_CLKG_SIGNED 0 | ||
64 | #define EUR_CR_CLKGATECTL_AUTO_MAN_REG_MASK 0x01000000U | ||
65 | #define EUR_CR_CLKGATECTL_AUTO_MAN_REG_SHIFT 24 | ||
66 | #define EUR_CR_CLKGATECTL_AUTO_MAN_REG_SIGNED 0 | ||
67 | #define EUR_CR_CLKGATECTL_SYSTEM_CLKG_MASK 0x10000000U | ||
68 | #define EUR_CR_CLKGATECTL_SYSTEM_CLKG_SHIFT 28 | ||
69 | #define EUR_CR_CLKGATECTL_SYSTEM_CLKG_SIGNED 0 | ||
70 | #define EUR_CR_CLKGATECTL2 0x0004 | ||
71 | #define EUR_CR_CLKGATECTL2_PBE_CLKG_MASK 0x00000003U | ||
72 | #define EUR_CR_CLKGATECTL2_PBE_CLKG_SHIFT 0 | ||
73 | #define EUR_CR_CLKGATECTL2_PBE_CLKG_SIGNED 0 | ||
74 | #define EUR_CR_CLKGATECTL2_TCU_L2_CLKG_MASK 0x0000000CU | ||
75 | #define EUR_CR_CLKGATECTL2_TCU_L2_CLKG_SHIFT 2 | ||
76 | #define EUR_CR_CLKGATECTL2_TCU_L2_CLKG_SIGNED 0 | ||
77 | #define EUR_CR_CLKGATECTL2_UCACHEL2_CLKG_MASK 0x00000030U | ||
78 | #define EUR_CR_CLKGATECTL2_UCACHEL2_CLKG_SHIFT 4 | ||
79 | #define EUR_CR_CLKGATECTL2_UCACHEL2_CLKG_SIGNED 0 | ||
80 | #define EUR_CR_CLKGATECTL2_USE0_CLKG_MASK 0x000000C0U | ||
81 | #define EUR_CR_CLKGATECTL2_USE0_CLKG_SHIFT 6 | ||
82 | #define EUR_CR_CLKGATECTL2_USE0_CLKG_SIGNED 0 | ||
83 | #define EUR_CR_CLKGATECTL2_ITR0_CLKG_MASK 0x00000300U | ||
84 | #define EUR_CR_CLKGATECTL2_ITR0_CLKG_SHIFT 8 | ||
85 | #define EUR_CR_CLKGATECTL2_ITR0_CLKG_SIGNED 0 | ||
86 | #define EUR_CR_CLKGATECTL2_TEX0_CLKG_MASK 0x00000C00U | ||
87 | #define EUR_CR_CLKGATECTL2_TEX0_CLKG_SHIFT 10 | ||
88 | #define EUR_CR_CLKGATECTL2_TEX0_CLKG_SIGNED 0 | ||
89 | #define EUR_CR_CLKGATECTL2_USE1_CLKG_MASK 0x0000C000U | ||
90 | #define EUR_CR_CLKGATECTL2_USE1_CLKG_SHIFT 14 | ||
91 | #define EUR_CR_CLKGATECTL2_USE1_CLKG_SIGNED 0 | ||
92 | #define EUR_CR_CLKGATECTL2_ITR1_CLKG_MASK 0x00030000U | ||
93 | #define EUR_CR_CLKGATECTL2_ITR1_CLKG_SHIFT 16 | ||
94 | #define EUR_CR_CLKGATECTL2_ITR1_CLKG_SIGNED 0 | ||
95 | #define EUR_CR_CLKGATECTL2_TEX1_CLKG_MASK 0x000C0000U | ||
96 | #define EUR_CR_CLKGATECTL2_TEX1_CLKG_SHIFT 18 | ||
97 | #define EUR_CR_CLKGATECTL2_TEX1_CLKG_SIGNED 0 | ||
98 | #define EUR_CR_CLKGATECTL2_DCU_L2_CLKG_MASK 0x00C00000U | ||
99 | #define EUR_CR_CLKGATECTL2_DCU_L2_CLKG_SHIFT 22 | ||
100 | #define EUR_CR_CLKGATECTL2_DCU_L2_CLKG_SIGNED 0 | ||
101 | #define EUR_CR_CLKGATECTL2_DCU1_L0L1_CLKG_MASK 0x03000000U | ||
102 | #define EUR_CR_CLKGATECTL2_DCU1_L0L1_CLKG_SHIFT 24 | ||
103 | #define EUR_CR_CLKGATECTL2_DCU1_L0L1_CLKG_SIGNED 0 | ||
104 | #define EUR_CR_CLKGATECTL2_DCU0_L0L1_CLKG_MASK 0x0C000000U | ||
105 | #define EUR_CR_CLKGATECTL2_DCU0_L0L1_CLKG_SHIFT 26 | ||
106 | #define EUR_CR_CLKGATECTL2_DCU0_L0L1_CLKG_SIGNED 0 | ||
107 | #define EUR_CR_CLKGATESTATUS 0x0008 | ||
108 | #define EUR_CR_CLKGATESTATUS_ISP_CLKS_MASK 0x00000001U | ||
109 | #define EUR_CR_CLKGATESTATUS_ISP_CLKS_SHIFT 0 | ||
110 | #define EUR_CR_CLKGATESTATUS_ISP_CLKS_SIGNED 0 | ||
111 | #define EUR_CR_CLKGATESTATUS_ISP2_CLKS_MASK 0x00000002U | ||
112 | #define EUR_CR_CLKGATESTATUS_ISP2_CLKS_SHIFT 1 | ||
113 | #define EUR_CR_CLKGATESTATUS_ISP2_CLKS_SIGNED 0 | ||
114 | #define EUR_CR_CLKGATESTATUS_TSP_CLKS_MASK 0x00000004U | ||
115 | #define EUR_CR_CLKGATESTATUS_TSP_CLKS_SHIFT 2 | ||
116 | #define EUR_CR_CLKGATESTATUS_TSP_CLKS_SIGNED 0 | ||
117 | #define EUR_CR_CLKGATESTATUS_TE_CLKS_MASK 0x00000008U | ||
118 | #define EUR_CR_CLKGATESTATUS_TE_CLKS_SHIFT 3 | ||
119 | #define EUR_CR_CLKGATESTATUS_TE_CLKS_SIGNED 0 | ||
120 | #define EUR_CR_CLKGATESTATUS_MTE_CLKS_MASK 0x00000010U | ||
121 | #define EUR_CR_CLKGATESTATUS_MTE_CLKS_SHIFT 4 | ||
122 | #define EUR_CR_CLKGATESTATUS_MTE_CLKS_SIGNED 0 | ||
123 | #define EUR_CR_CLKGATESTATUS_DPM_CLKS_MASK 0x00000020U | ||
124 | #define EUR_CR_CLKGATESTATUS_DPM_CLKS_SHIFT 5 | ||
125 | #define EUR_CR_CLKGATESTATUS_DPM_CLKS_SIGNED 0 | ||
126 | #define EUR_CR_CLKGATESTATUS_VDM_CLKS_MASK 0x00000040U | ||
127 | #define EUR_CR_CLKGATESTATUS_VDM_CLKS_SHIFT 6 | ||
128 | #define EUR_CR_CLKGATESTATUS_VDM_CLKS_SIGNED 0 | ||
129 | #define EUR_CR_CLKGATESTATUS_PDS_CLKS_MASK 0x00000080U | ||
130 | #define EUR_CR_CLKGATESTATUS_PDS_CLKS_SHIFT 7 | ||
131 | #define EUR_CR_CLKGATESTATUS_PDS_CLKS_SIGNED 0 | ||
132 | #define EUR_CR_CLKGATESTATUS_PBE_CLKS_MASK 0x00000100U | ||
133 | #define EUR_CR_CLKGATESTATUS_PBE_CLKS_SHIFT 8 | ||
134 | #define EUR_CR_CLKGATESTATUS_PBE_CLKS_SIGNED 0 | ||
135 | #define EUR_CR_CLKGATESTATUS_TCU_L2_CLKS_MASK 0x00000200U | ||
136 | #define EUR_CR_CLKGATESTATUS_TCU_L2_CLKS_SHIFT 9 | ||
137 | #define EUR_CR_CLKGATESTATUS_TCU_L2_CLKS_SIGNED 0 | ||
138 | #define EUR_CR_CLKGATESTATUS_UCACHEL2_CLKS_MASK 0x00000400U | ||
139 | #define EUR_CR_CLKGATESTATUS_UCACHEL2_CLKS_SHIFT 10 | ||
140 | #define EUR_CR_CLKGATESTATUS_UCACHEL2_CLKS_SIGNED 0 | ||
141 | #define EUR_CR_CLKGATESTATUS_USE0_CLKS_MASK 0x00000800U | ||
142 | #define EUR_CR_CLKGATESTATUS_USE0_CLKS_SHIFT 11 | ||
143 | #define EUR_CR_CLKGATESTATUS_USE0_CLKS_SIGNED 0 | ||
144 | #define EUR_CR_CLKGATESTATUS_ITR0_CLKS_MASK 0x00001000U | ||
145 | #define EUR_CR_CLKGATESTATUS_ITR0_CLKS_SHIFT 12 | ||
146 | #define EUR_CR_CLKGATESTATUS_ITR0_CLKS_SIGNED 0 | ||
147 | #define EUR_CR_CLKGATESTATUS_TEX0_CLKS_MASK 0x00002000U | ||
148 | #define EUR_CR_CLKGATESTATUS_TEX0_CLKS_SHIFT 13 | ||
149 | #define EUR_CR_CLKGATESTATUS_TEX0_CLKS_SIGNED 0 | ||
150 | #define EUR_CR_CLKGATESTATUS_USE1_CLKS_MASK 0x00008000U | ||
151 | #define EUR_CR_CLKGATESTATUS_USE1_CLKS_SHIFT 15 | ||
152 | #define EUR_CR_CLKGATESTATUS_USE1_CLKS_SIGNED 0 | ||
153 | #define EUR_CR_CLKGATESTATUS_ITR1_CLKS_MASK 0x00010000U | ||
154 | #define EUR_CR_CLKGATESTATUS_ITR1_CLKS_SHIFT 16 | ||
155 | #define EUR_CR_CLKGATESTATUS_ITR1_CLKS_SIGNED 0 | ||
156 | #define EUR_CR_CLKGATESTATUS_TEX1_CLKS_MASK 0x00020000U | ||
157 | #define EUR_CR_CLKGATESTATUS_TEX1_CLKS_SHIFT 17 | ||
158 | #define EUR_CR_CLKGATESTATUS_TEX1_CLKS_SIGNED 0 | ||
159 | #define EUR_CR_CLKGATESTATUS_IDXFIFO_CLKS_MASK 0x00080000U | ||
160 | #define EUR_CR_CLKGATESTATUS_IDXFIFO_CLKS_SHIFT 19 | ||
161 | #define EUR_CR_CLKGATESTATUS_IDXFIFO_CLKS_SIGNED 0 | ||
162 | #define EUR_CR_CLKGATESTATUS_TA_CLKS_MASK 0x00100000U | ||
163 | #define EUR_CR_CLKGATESTATUS_TA_CLKS_SHIFT 20 | ||
164 | #define EUR_CR_CLKGATESTATUS_TA_CLKS_SIGNED 0 | ||
165 | #define EUR_CR_CLKGATESTATUS_DCU_L2_CLKS_MASK 0x00200000U | ||
166 | #define EUR_CR_CLKGATESTATUS_DCU_L2_CLKS_SHIFT 21 | ||
167 | #define EUR_CR_CLKGATESTATUS_DCU_L2_CLKS_SIGNED 0 | ||
168 | #define EUR_CR_CLKGATESTATUS_DCU0_L0L1_CLKS_MASK 0x00400000U | ||
169 | #define EUR_CR_CLKGATESTATUS_DCU0_L0L1_CLKS_SHIFT 22 | ||
170 | #define EUR_CR_CLKGATESTATUS_DCU0_L0L1_CLKS_SIGNED 0 | ||
171 | #define EUR_CR_CLKGATESTATUS_DCU1_L0L1_CLKS_MASK 0x00800000U | ||
172 | #define EUR_CR_CLKGATESTATUS_DCU1_L0L1_CLKS_SHIFT 23 | ||
173 | #define EUR_CR_CLKGATESTATUS_DCU1_L0L1_CLKS_SIGNED 0 | ||
174 | #define EUR_CR_CLKGATESTATUS_BIF_CORE_CLKS_MASK 0x01000000U | ||
175 | #define EUR_CR_CLKGATESTATUS_BIF_CORE_CLKS_SHIFT 24 | ||
176 | #define EUR_CR_CLKGATESTATUS_BIF_CORE_CLKS_SIGNED 0 | ||
177 | #define EUR_CR_CLKGATECTLOVR 0x000C | ||
178 | #define EUR_CR_CLKGATECTLOVR_ISP_CLKO_MASK 0x00000003U | ||
179 | #define EUR_CR_CLKGATECTLOVR_ISP_CLKO_SHIFT 0 | ||
180 | #define EUR_CR_CLKGATECTLOVR_ISP_CLKO_SIGNED 0 | ||
181 | #define EUR_CR_CLKGATECTLOVR_ISP2_CLKO_MASK 0x0000000CU | ||
182 | #define EUR_CR_CLKGATECTLOVR_ISP2_CLKO_SHIFT 2 | ||
183 | #define EUR_CR_CLKGATECTLOVR_ISP2_CLKO_SIGNED 0 | ||
184 | #define EUR_CR_CLKGATECTLOVR_TSP_CLKO_MASK 0x00000030U | ||
185 | #define EUR_CR_CLKGATECTLOVR_TSP_CLKO_SHIFT 4 | ||
186 | #define EUR_CR_CLKGATECTLOVR_TSP_CLKO_SIGNED 0 | ||
187 | #define EUR_CR_CLKGATECTLOVR_TE_CLKO_MASK 0x000000C0U | ||
188 | #define EUR_CR_CLKGATECTLOVR_TE_CLKO_SHIFT 6 | ||
189 | #define EUR_CR_CLKGATECTLOVR_TE_CLKO_SIGNED 0 | ||
190 | #define EUR_CR_CLKGATECTLOVR_MTE_CLKO_MASK 0x00000300U | ||
191 | #define EUR_CR_CLKGATECTLOVR_MTE_CLKO_SHIFT 8 | ||
192 | #define EUR_CR_CLKGATECTLOVR_MTE_CLKO_SIGNED 0 | ||
193 | #define EUR_CR_CLKGATECTLOVR_DPM_CLKO_MASK 0x00000C00U | ||
194 | #define EUR_CR_CLKGATECTLOVR_DPM_CLKO_SHIFT 10 | ||
195 | #define EUR_CR_CLKGATECTLOVR_DPM_CLKO_SIGNED 0 | ||
196 | #define EUR_CR_CLKGATECTLOVR_VDM_CLKO_MASK 0x00003000U | ||
197 | #define EUR_CR_CLKGATECTLOVR_VDM_CLKO_SHIFT 12 | ||
198 | #define EUR_CR_CLKGATECTLOVR_VDM_CLKO_SIGNED 0 | ||
199 | #define EUR_CR_CLKGATECTLOVR_PDS_CLKO_MASK 0x0000C000U | ||
200 | #define EUR_CR_CLKGATECTLOVR_PDS_CLKO_SHIFT 14 | ||
201 | #define EUR_CR_CLKGATECTLOVR_PDS_CLKO_SIGNED 0 | ||
202 | #define EUR_CR_CLKGATECTLOVR_IDXFIFO_CLKO_MASK 0x00030000U | ||
203 | #define EUR_CR_CLKGATECTLOVR_IDXFIFO_CLKO_SHIFT 16 | ||
204 | #define EUR_CR_CLKGATECTLOVR_IDXFIFO_CLKO_SIGNED 0 | ||
205 | #define EUR_CR_CLKGATECTLOVR_TA_CLKO_MASK 0x000C0000U | ||
206 | #define EUR_CR_CLKGATECTLOVR_TA_CLKO_SHIFT 18 | ||
207 | #define EUR_CR_CLKGATECTLOVR_TA_CLKO_SIGNED 0 | ||
208 | #define EUR_CR_CLKGATECTLOVR_BIF_CORE_CLKO_MASK 0x00300000U | ||
209 | #define EUR_CR_CLKGATECTLOVR_BIF_CORE_CLKO_SHIFT 20 | ||
210 | #define EUR_CR_CLKGATECTLOVR_BIF_CORE_CLKO_SIGNED 0 | ||
211 | #define EUR_CR_POWER 0x001C | ||
212 | #define EUR_CR_POWER_PIPE_DISABLE_MASK 0x00000001U | ||
213 | #define EUR_CR_POWER_PIPE_DISABLE_SHIFT 0 | ||
214 | #define EUR_CR_POWER_PIPE_DISABLE_SIGNED 0 | ||
215 | #define EUR_CR_CORE_ID 0x0020 | ||
216 | #define EUR_CR_CORE_ID_CONFIG_MULTI_MASK 0x00000001U | ||
217 | #define EUR_CR_CORE_ID_CONFIG_MULTI_SHIFT 0 | ||
218 | #define EUR_CR_CORE_ID_CONFIG_MULTI_SIGNED 0 | ||
219 | #define EUR_CR_CORE_ID_CONFIG_BASE_MASK 0x00000002U | ||
220 | #define EUR_CR_CORE_ID_CONFIG_BASE_SHIFT 1 | ||
221 | #define EUR_CR_CORE_ID_CONFIG_BASE_SIGNED 0 | ||
222 | #define EUR_CR_CORE_ID_CONFIG_MASK 0x000000FCU | ||
223 | #define EUR_CR_CORE_ID_CONFIG_SHIFT 2 | ||
224 | #define EUR_CR_CORE_ID_CONFIG_SIGNED 0 | ||
225 | #define EUR_CR_CORE_ID_CONFIG_CORES_MASK 0x00000F00U | ||
226 | #define EUR_CR_CORE_ID_CONFIG_CORES_SHIFT 8 | ||
227 | #define EUR_CR_CORE_ID_CONFIG_CORES_SIGNED 0 | ||
228 | #define EUR_CR_CORE_ID_CONFIG_SLC_MASK 0x0000F000U | ||
229 | #define EUR_CR_CORE_ID_CONFIG_SLC_SHIFT 12 | ||
230 | #define EUR_CR_CORE_ID_CONFIG_SLC_SIGNED 0 | ||
231 | #define EUR_CR_CORE_ID_ID_MASK 0xFFFF0000U | ||
232 | #define EUR_CR_CORE_ID_ID_SHIFT 16 | ||
233 | #define EUR_CR_CORE_ID_ID_SIGNED 0 | ||
234 | #define EUR_CR_CORE_REVISION 0x0024 | ||
235 | #define EUR_CR_CORE_REVISION_MAINTENANCE_MASK 0x000000FFU | ||
236 | #define EUR_CR_CORE_REVISION_MAINTENANCE_SHIFT 0 | ||
237 | #define EUR_CR_CORE_REVISION_MAINTENANCE_SIGNED 0 | ||
238 | #define EUR_CR_CORE_REVISION_MINOR_MASK 0x0000FF00U | ||
239 | #define EUR_CR_CORE_REVISION_MINOR_SHIFT 8 | ||
240 | #define EUR_CR_CORE_REVISION_MINOR_SIGNED 0 | ||
241 | #define EUR_CR_CORE_REVISION_MAJOR_MASK 0x00FF0000U | ||
242 | #define EUR_CR_CORE_REVISION_MAJOR_SHIFT 16 | ||
243 | #define EUR_CR_CORE_REVISION_MAJOR_SIGNED 0 | ||
244 | #define EUR_CR_CORE_REVISION_DESIGNER_MASK 0xFF000000U | ||
245 | #define EUR_CR_CORE_REVISION_DESIGNER_SHIFT 24 | ||
246 | #define EUR_CR_CORE_REVISION_DESIGNER_SIGNED 0 | ||
247 | #define EUR_CR_DESIGNER_REV_FIELD1 0x0028 | ||
248 | #define EUR_CR_DESIGNER_REV_FIELD1_DESIGNER_REV_FIELD1_MASK 0xFFFFFFFFU | ||
249 | #define EUR_CR_DESIGNER_REV_FIELD1_DESIGNER_REV_FIELD1_SHIFT 0 | ||
250 | #define EUR_CR_DESIGNER_REV_FIELD1_DESIGNER_REV_FIELD1_SIGNED 0 | ||
251 | #define EUR_CR_DESIGNER_REV_FIELD2 0x002C | ||
252 | #define EUR_CR_DESIGNER_REV_FIELD2_DESIGNER_REV_FIELD2_MASK 0xFFFFFFFFU | ||
253 | #define EUR_CR_DESIGNER_REV_FIELD2_DESIGNER_REV_FIELD2_SHIFT 0 | ||
254 | #define EUR_CR_DESIGNER_REV_FIELD2_DESIGNER_REV_FIELD2_SIGNED 0 | ||
255 | #define EUR_CR_SOFT_RESET 0x0080 | ||
256 | #define EUR_CR_SOFT_RESET_BIF_RESET_MASK 0x00000001U | ||
257 | #define EUR_CR_SOFT_RESET_BIF_RESET_SHIFT 0 | ||
258 | #define EUR_CR_SOFT_RESET_BIF_RESET_SIGNED 0 | ||
259 | #define EUR_CR_SOFT_RESET_VDM_RESET_MASK 0x00000002U | ||
260 | #define EUR_CR_SOFT_RESET_VDM_RESET_SHIFT 1 | ||
261 | #define EUR_CR_SOFT_RESET_VDM_RESET_SIGNED 0 | ||
262 | #define EUR_CR_SOFT_RESET_DPM_RESET_MASK 0x00000004U | ||
263 | #define EUR_CR_SOFT_RESET_DPM_RESET_SHIFT 2 | ||
264 | #define EUR_CR_SOFT_RESET_DPM_RESET_SIGNED 0 | ||
265 | #define EUR_CR_SOFT_RESET_TE_RESET_MASK 0x00000008U | ||
266 | #define EUR_CR_SOFT_RESET_TE_RESET_SHIFT 3 | ||
267 | #define EUR_CR_SOFT_RESET_TE_RESET_SIGNED 0 | ||
268 | #define EUR_CR_SOFT_RESET_MTE_RESET_MASK 0x00000010U | ||
269 | #define EUR_CR_SOFT_RESET_MTE_RESET_SHIFT 4 | ||
270 | #define EUR_CR_SOFT_RESET_MTE_RESET_SIGNED 0 | ||
271 | #define EUR_CR_SOFT_RESET_ISP_RESET_MASK 0x00000020U | ||
272 | #define EUR_CR_SOFT_RESET_ISP_RESET_SHIFT 5 | ||
273 | #define EUR_CR_SOFT_RESET_ISP_RESET_SIGNED 0 | ||
274 | #define EUR_CR_SOFT_RESET_ISP2_RESET_MASK 0x00000040U | ||
275 | #define EUR_CR_SOFT_RESET_ISP2_RESET_SHIFT 6 | ||
276 | #define EUR_CR_SOFT_RESET_ISP2_RESET_SIGNED 0 | ||
277 | #define EUR_CR_SOFT_RESET_TSP_RESET_MASK 0x00000080U | ||
278 | #define EUR_CR_SOFT_RESET_TSP_RESET_SHIFT 7 | ||
279 | #define EUR_CR_SOFT_RESET_TSP_RESET_SIGNED 0 | ||
280 | #define EUR_CR_SOFT_RESET_PDS_RESET_MASK 0x00000100U | ||
281 | #define EUR_CR_SOFT_RESET_PDS_RESET_SHIFT 8 | ||
282 | #define EUR_CR_SOFT_RESET_PDS_RESET_SIGNED 0 | ||
283 | #define EUR_CR_SOFT_RESET_PBE_RESET_MASK 0x00000200U | ||
284 | #define EUR_CR_SOFT_RESET_PBE_RESET_SHIFT 9 | ||
285 | #define EUR_CR_SOFT_RESET_PBE_RESET_SIGNED 0 | ||
286 | #define EUR_CR_SOFT_RESET_TCU_L2_RESET_MASK 0x00000400U | ||
287 | #define EUR_CR_SOFT_RESET_TCU_L2_RESET_SHIFT 10 | ||
288 | #define EUR_CR_SOFT_RESET_TCU_L2_RESET_SIGNED 0 | ||
289 | #define EUR_CR_SOFT_RESET_UCACHEL2_RESET_MASK 0x00000800U | ||
290 | #define EUR_CR_SOFT_RESET_UCACHEL2_RESET_SHIFT 11 | ||
291 | #define EUR_CR_SOFT_RESET_UCACHEL2_RESET_SIGNED 0 | ||
292 | #define EUR_CR_SOFT_RESET_ITR_RESET_MASK 0x00002000U | ||
293 | #define EUR_CR_SOFT_RESET_ITR_RESET_SHIFT 13 | ||
294 | #define EUR_CR_SOFT_RESET_ITR_RESET_SIGNED 0 | ||
295 | #define EUR_CR_SOFT_RESET_TEX_RESET_MASK 0x00004000U | ||
296 | #define EUR_CR_SOFT_RESET_TEX_RESET_SHIFT 14 | ||
297 | #define EUR_CR_SOFT_RESET_TEX_RESET_SIGNED 0 | ||
298 | #define EUR_CR_SOFT_RESET_USE_RESET_MASK 0x00008000U | ||
299 | #define EUR_CR_SOFT_RESET_USE_RESET_SHIFT 15 | ||
300 | #define EUR_CR_SOFT_RESET_USE_RESET_SIGNED 0 | ||
301 | #define EUR_CR_SOFT_RESET_IDXFIFO_RESET_MASK 0x00010000U | ||
302 | #define EUR_CR_SOFT_RESET_IDXFIFO_RESET_SHIFT 16 | ||
303 | #define EUR_CR_SOFT_RESET_IDXFIFO_RESET_SIGNED 0 | ||
304 | #define EUR_CR_SOFT_RESET_TA_RESET_MASK 0x00020000U | ||
305 | #define EUR_CR_SOFT_RESET_TA_RESET_SHIFT 17 | ||
306 | #define EUR_CR_SOFT_RESET_TA_RESET_SIGNED 0 | ||
307 | #define EUR_CR_SOFT_RESET_DCU_L2_RESET_MASK 0x00040000U | ||
308 | #define EUR_CR_SOFT_RESET_DCU_L2_RESET_SHIFT 18 | ||
309 | #define EUR_CR_SOFT_RESET_DCU_L2_RESET_SIGNED 0 | ||
310 | #define EUR_CR_SOFT_RESET_DCU_L0L1_RESET_MASK 0x00080000U | ||
311 | #define EUR_CR_SOFT_RESET_DCU_L0L1_RESET_SHIFT 19 | ||
312 | #define EUR_CR_SOFT_RESET_DCU_L0L1_RESET_SIGNED 0 | ||
313 | #define EUR_CR_EVENT_HOST_ENABLE2 0x0110 | ||
314 | #define EUR_CR_EVENT_HOST_ENABLE2_DATA_BREAKPOINT_UNTRAPPED_MASK 0x00000800U | ||
315 | #define EUR_CR_EVENT_HOST_ENABLE2_DATA_BREAKPOINT_UNTRAPPED_SHIFT 11 | ||
316 | #define EUR_CR_EVENT_HOST_ENABLE2_DATA_BREAKPOINT_UNTRAPPED_SIGNED 0 | ||
317 | #define EUR_CR_EVENT_HOST_ENABLE2_DATA_BREAKPOINT_TRAPPED_MASK 0x00000400U | ||
318 | #define EUR_CR_EVENT_HOST_ENABLE2_DATA_BREAKPOINT_TRAPPED_SHIFT 10 | ||
319 | #define EUR_CR_EVENT_HOST_ENABLE2_DATA_BREAKPOINT_TRAPPED_SIGNED 0 | ||
320 | #define EUR_CR_EVENT_HOST_ENABLE2_MTE_CONTEXT_DRAINED_MASK 0x00000200U | ||
321 | #define EUR_CR_EVENT_HOST_ENABLE2_MTE_CONTEXT_DRAINED_SHIFT 9 | ||
322 | #define EUR_CR_EVENT_HOST_ENABLE2_MTE_CONTEXT_DRAINED_SIGNED 0 | ||
323 | #define EUR_CR_EVENT_HOST_ENABLE2_ISP2_ZLS_CSW_FINISHED_MASK 0x00000100U | ||
324 | #define EUR_CR_EVENT_HOST_ENABLE2_ISP2_ZLS_CSW_FINISHED_SHIFT 8 | ||
325 | #define EUR_CR_EVENT_HOST_ENABLE2_ISP2_ZLS_CSW_FINISHED_SIGNED 0 | ||
326 | #define EUR_CR_EVENT_HOST_ENABLE2_DCU_INVALCOMPLETE_MASK 0x00000080U | ||
327 | #define EUR_CR_EVENT_HOST_ENABLE2_DCU_INVALCOMPLETE_SHIFT 7 | ||
328 | #define EUR_CR_EVENT_HOST_ENABLE2_DCU_INVALCOMPLETE_SIGNED 0 | ||
329 | #define EUR_CR_EVENT_HOST_ENABLE2_MTE_STATE_FLUSHED_MASK 0x00000040U | ||
330 | #define EUR_CR_EVENT_HOST_ENABLE2_MTE_STATE_FLUSHED_SHIFT 6 | ||
331 | #define EUR_CR_EVENT_HOST_ENABLE2_MTE_STATE_FLUSHED_SIGNED 0 | ||
332 | #define EUR_CR_EVENT_HOST_ENABLE2_TE_RGNHDR_INIT_COMPLETE_MASK 0x00000020U | ||
333 | #define EUR_CR_EVENT_HOST_ENABLE2_TE_RGNHDR_INIT_COMPLETE_SHIFT 5 | ||
334 | #define EUR_CR_EVENT_HOST_ENABLE2_TE_RGNHDR_INIT_COMPLETE_SIGNED 0 | ||
335 | #define EUR_CR_EVENT_HOST_ENABLE2_TRIG_TA_MASK 0x00000010U | ||
336 | #define EUR_CR_EVENT_HOST_ENABLE2_TRIG_TA_SHIFT 4 | ||
337 | #define EUR_CR_EVENT_HOST_ENABLE2_TRIG_TA_SIGNED 0 | ||
338 | #define EUR_CR_EVENT_HOST_ENABLE2_TRIG_3D_MASK 0x00000008U | ||
339 | #define EUR_CR_EVENT_HOST_ENABLE2_TRIG_3D_SHIFT 3 | ||
340 | #define EUR_CR_EVENT_HOST_ENABLE2_TRIG_3D_SIGNED 0 | ||
341 | #define EUR_CR_EVENT_HOST_ENABLE2_TRIG_DL_MASK 0x00000004U | ||
342 | #define EUR_CR_EVENT_HOST_ENABLE2_TRIG_DL_SHIFT 2 | ||
343 | #define EUR_CR_EVENT_HOST_ENABLE2_TRIG_DL_SIGNED 0 | ||
344 | #define EUR_CR_EVENT_HOST_ENABLE2_DPM_3D_FREE_LOAD_MASK 0x00000002U | ||
345 | #define EUR_CR_EVENT_HOST_ENABLE2_DPM_3D_FREE_LOAD_SHIFT 1 | ||
346 | #define EUR_CR_EVENT_HOST_ENABLE2_DPM_3D_FREE_LOAD_SIGNED 0 | ||
347 | #define EUR_CR_EVENT_HOST_ENABLE2_DPM_TA_FREE_LOAD_MASK 0x00000001U | ||
348 | #define EUR_CR_EVENT_HOST_ENABLE2_DPM_TA_FREE_LOAD_SHIFT 0 | ||
349 | #define EUR_CR_EVENT_HOST_ENABLE2_DPM_TA_FREE_LOAD_SIGNED 0 | ||
350 | #define EUR_CR_EVENT_HOST_CLEAR2 0x0114 | ||
351 | #define EUR_CR_EVENT_HOST_CLEAR2_DATA_BREAKPOINT_UNTRAPPED_MASK 0x00000800U | ||
352 | #define EUR_CR_EVENT_HOST_CLEAR2_DATA_BREAKPOINT_UNTRAPPED_SHIFT 11 | ||
353 | #define EUR_CR_EVENT_HOST_CLEAR2_DATA_BREAKPOINT_UNTRAPPED_SIGNED 0 | ||
354 | #define EUR_CR_EVENT_HOST_CLEAR2_DATA_BREAKPOINT_TRAPPED_MASK 0x00000400U | ||
355 | #define EUR_CR_EVENT_HOST_CLEAR2_DATA_BREAKPOINT_TRAPPED_SHIFT 10 | ||
356 | #define EUR_CR_EVENT_HOST_CLEAR2_DATA_BREAKPOINT_TRAPPED_SIGNED 0 | ||
357 | #define EUR_CR_EVENT_HOST_CLEAR2_MTE_CONTEXT_DRAINED_MASK 0x00000200U | ||
358 | #define EUR_CR_EVENT_HOST_CLEAR2_MTE_CONTEXT_DRAINED_SHIFT 9 | ||
359 | #define EUR_CR_EVENT_HOST_CLEAR2_MTE_CONTEXT_DRAINED_SIGNED 0 | ||
360 | #define EUR_CR_EVENT_HOST_CLEAR2_ISP2_ZLS_CSW_FINISHED_MASK 0x00000100U | ||
361 | #define EUR_CR_EVENT_HOST_CLEAR2_ISP2_ZLS_CSW_FINISHED_SHIFT 8 | ||
362 | #define EUR_CR_EVENT_HOST_CLEAR2_ISP2_ZLS_CSW_FINISHED_SIGNED 0 | ||
363 | #define EUR_CR_EVENT_HOST_CLEAR2_DCU_INVALCOMPLETE_MASK 0x00000080U | ||
364 | #define EUR_CR_EVENT_HOST_CLEAR2_DCU_INVALCOMPLETE_SHIFT 7 | ||
365 | #define EUR_CR_EVENT_HOST_CLEAR2_DCU_INVALCOMPLETE_SIGNED 0 | ||
366 | #define EUR_CR_EVENT_HOST_CLEAR2_MTE_STATE_FLUSHED_MASK 0x00000040U | ||
367 | #define EUR_CR_EVENT_HOST_CLEAR2_MTE_STATE_FLUSHED_SHIFT 6 | ||
368 | #define EUR_CR_EVENT_HOST_CLEAR2_MTE_STATE_FLUSHED_SIGNED 0 | ||
369 | #define EUR_CR_EVENT_HOST_CLEAR2_TE_RGNHDR_INIT_COMPLETE_MASK 0x00000020U | ||
370 | #define EUR_CR_EVENT_HOST_CLEAR2_TE_RGNHDR_INIT_COMPLETE_SHIFT 5 | ||
371 | #define EUR_CR_EVENT_HOST_CLEAR2_TE_RGNHDR_INIT_COMPLETE_SIGNED 0 | ||
372 | #define EUR_CR_EVENT_HOST_CLEAR2_TRIG_TA_MASK 0x00000010U | ||
373 | #define EUR_CR_EVENT_HOST_CLEAR2_TRIG_TA_SHIFT 4 | ||
374 | #define EUR_CR_EVENT_HOST_CLEAR2_TRIG_TA_SIGNED 0 | ||
375 | #define EUR_CR_EVENT_HOST_CLEAR2_TRIG_3D_MASK 0x00000008U | ||
376 | #define EUR_CR_EVENT_HOST_CLEAR2_TRIG_3D_SHIFT 3 | ||
377 | #define EUR_CR_EVENT_HOST_CLEAR2_TRIG_3D_SIGNED 0 | ||
378 | #define EUR_CR_EVENT_HOST_CLEAR2_TRIG_DL_MASK 0x00000004U | ||
379 | #define EUR_CR_EVENT_HOST_CLEAR2_TRIG_DL_SHIFT 2 | ||
380 | #define EUR_CR_EVENT_HOST_CLEAR2_TRIG_DL_SIGNED 0 | ||
381 | #define EUR_CR_EVENT_HOST_CLEAR2_DPM_3D_FREE_LOAD_MASK 0x00000002U | ||
382 | #define EUR_CR_EVENT_HOST_CLEAR2_DPM_3D_FREE_LOAD_SHIFT 1 | ||
383 | #define EUR_CR_EVENT_HOST_CLEAR2_DPM_3D_FREE_LOAD_SIGNED 0 | ||
384 | #define EUR_CR_EVENT_HOST_CLEAR2_DPM_TA_FREE_LOAD_MASK 0x00000001U | ||
385 | #define EUR_CR_EVENT_HOST_CLEAR2_DPM_TA_FREE_LOAD_SHIFT 0 | ||
386 | #define EUR_CR_EVENT_HOST_CLEAR2_DPM_TA_FREE_LOAD_SIGNED 0 | ||
387 | #define EUR_CR_EVENT_STATUS2 0x0118 | ||
388 | #define EUR_CR_EVENT_STATUS2_DATA_BREAKPOINT_UNTRAPPED_MASK 0x00000800U | ||
389 | #define EUR_CR_EVENT_STATUS2_DATA_BREAKPOINT_UNTRAPPED_SHIFT 11 | ||
390 | #define EUR_CR_EVENT_STATUS2_DATA_BREAKPOINT_UNTRAPPED_SIGNED 0 | ||
391 | #define EUR_CR_EVENT_STATUS2_DATA_BREAKPOINT_TRAPPED_MASK 0x00000400U | ||
392 | #define EUR_CR_EVENT_STATUS2_DATA_BREAKPOINT_TRAPPED_SHIFT 10 | ||
393 | #define EUR_CR_EVENT_STATUS2_DATA_BREAKPOINT_TRAPPED_SIGNED 0 | ||
394 | #define EUR_CR_EVENT_STATUS2_MTE_CONTEXT_DRAINED_MASK 0x00000200U | ||
395 | #define EUR_CR_EVENT_STATUS2_MTE_CONTEXT_DRAINED_SHIFT 9 | ||
396 | #define EUR_CR_EVENT_STATUS2_MTE_CONTEXT_DRAINED_SIGNED 0 | ||
397 | #define EUR_CR_EVENT_STATUS2_ISP2_ZLS_CSW_FINISHED_MASK 0x00000100U | ||
398 | #define EUR_CR_EVENT_STATUS2_ISP2_ZLS_CSW_FINISHED_SHIFT 8 | ||
399 | #define EUR_CR_EVENT_STATUS2_ISP2_ZLS_CSW_FINISHED_SIGNED 0 | ||
400 | #define EUR_CR_EVENT_STATUS2_DCU_INVALCOMPLETE_MASK 0x00000080U | ||
401 | #define EUR_CR_EVENT_STATUS2_DCU_INVALCOMPLETE_SHIFT 7 | ||
402 | #define EUR_CR_EVENT_STATUS2_DCU_INVALCOMPLETE_SIGNED 0 | ||
403 | #define EUR_CR_EVENT_STATUS2_MTE_STATE_FLUSHED_MASK 0x00000040U | ||
404 | #define EUR_CR_EVENT_STATUS2_MTE_STATE_FLUSHED_SHIFT 6 | ||
405 | #define EUR_CR_EVENT_STATUS2_MTE_STATE_FLUSHED_SIGNED 0 | ||
406 | #define EUR_CR_EVENT_STATUS2_TE_RGNHDR_INIT_COMPLETE_MASK 0x00000020U | ||
407 | #define EUR_CR_EVENT_STATUS2_TE_RGNHDR_INIT_COMPLETE_SHIFT 5 | ||
408 | #define EUR_CR_EVENT_STATUS2_TE_RGNHDR_INIT_COMPLETE_SIGNED 0 | ||
409 | #define EUR_CR_EVENT_STATUS2_TRIG_TA_MASK 0x00000010U | ||
410 | #define EUR_CR_EVENT_STATUS2_TRIG_TA_SHIFT 4 | ||
411 | #define EUR_CR_EVENT_STATUS2_TRIG_TA_SIGNED 0 | ||
412 | #define EUR_CR_EVENT_STATUS2_TRIG_3D_MASK 0x00000008U | ||
413 | #define EUR_CR_EVENT_STATUS2_TRIG_3D_SHIFT 3 | ||
414 | #define EUR_CR_EVENT_STATUS2_TRIG_3D_SIGNED 0 | ||
415 | #define EUR_CR_EVENT_STATUS2_TRIG_DL_MASK 0x00000004U | ||
416 | #define EUR_CR_EVENT_STATUS2_TRIG_DL_SHIFT 2 | ||
417 | #define EUR_CR_EVENT_STATUS2_TRIG_DL_SIGNED 0 | ||
418 | #define EUR_CR_EVENT_STATUS2_DPM_3D_FREE_LOAD_MASK 0x00000002U | ||
419 | #define EUR_CR_EVENT_STATUS2_DPM_3D_FREE_LOAD_SHIFT 1 | ||
420 | #define EUR_CR_EVENT_STATUS2_DPM_3D_FREE_LOAD_SIGNED 0 | ||
421 | #define EUR_CR_EVENT_STATUS2_DPM_TA_FREE_LOAD_MASK 0x00000001U | ||
422 | #define EUR_CR_EVENT_STATUS2_DPM_TA_FREE_LOAD_SHIFT 0 | ||
423 | #define EUR_CR_EVENT_STATUS2_DPM_TA_FREE_LOAD_SIGNED 0 | ||
424 | #define EUR_CR_EVENT_STATUS 0x012C | ||
425 | #define EUR_CR_EVENT_STATUS_MASTER_INTERRUPT_MASK 0x80000000U | ||
426 | #define EUR_CR_EVENT_STATUS_MASTER_INTERRUPT_SHIFT 31 | ||
427 | #define EUR_CR_EVENT_STATUS_MASTER_INTERRUPT_SIGNED 0 | ||
428 | #define EUR_CR_EVENT_STATUS_TIMER_MASK 0x20000000U | ||
429 | #define EUR_CR_EVENT_STATUS_TIMER_SHIFT 29 | ||
430 | #define EUR_CR_EVENT_STATUS_TIMER_SIGNED 0 | ||
431 | #define EUR_CR_EVENT_STATUS_TA_DPM_FAULT_MASK 0x10000000U | ||
432 | #define EUR_CR_EVENT_STATUS_TA_DPM_FAULT_SHIFT 28 | ||
433 | #define EUR_CR_EVENT_STATUS_TA_DPM_FAULT_SIGNED 0 | ||
434 | #define EUR_CR_EVENT_STATUS_TCU_INVALCOMPLETE_MASK 0x04000000U | ||
435 | #define EUR_CR_EVENT_STATUS_TCU_INVALCOMPLETE_SHIFT 26 | ||
436 | #define EUR_CR_EVENT_STATUS_TCU_INVALCOMPLETE_SIGNED 0 | ||
437 | #define EUR_CR_EVENT_STATUS_DPM_OUT_OF_MEMORY_ZLS_MASK 0x02000000U | ||
438 | #define EUR_CR_EVENT_STATUS_DPM_OUT_OF_MEMORY_ZLS_SHIFT 25 | ||
439 | #define EUR_CR_EVENT_STATUS_DPM_OUT_OF_MEMORY_ZLS_SIGNED 0 | ||
440 | #define EUR_CR_EVENT_STATUS_DPM_TA_MEM_FREE_MASK 0x01000000U | ||
441 | #define EUR_CR_EVENT_STATUS_DPM_TA_MEM_FREE_SHIFT 24 | ||
442 | #define EUR_CR_EVENT_STATUS_DPM_TA_MEM_FREE_SIGNED 0 | ||
443 | #define EUR_CR_EVENT_STATUS_ISP_END_TILE_MASK 0x00800000U | ||
444 | #define EUR_CR_EVENT_STATUS_ISP_END_TILE_SHIFT 23 | ||
445 | #define EUR_CR_EVENT_STATUS_ISP_END_TILE_SIGNED 0 | ||
446 | #define EUR_CR_EVENT_STATUS_DPM_INITEND_MASK 0x00400000U | ||
447 | #define EUR_CR_EVENT_STATUS_DPM_INITEND_SHIFT 22 | ||
448 | #define EUR_CR_EVENT_STATUS_DPM_INITEND_SIGNED 0 | ||
449 | #define EUR_CR_EVENT_STATUS_OTPM_LOADED_MASK 0x00200000U | ||
450 | #define EUR_CR_EVENT_STATUS_OTPM_LOADED_SHIFT 21 | ||
451 | #define EUR_CR_EVENT_STATUS_OTPM_LOADED_SIGNED 0 | ||
452 | #define EUR_CR_EVENT_STATUS_OTPM_INV_MASK 0x00100000U | ||
453 | #define EUR_CR_EVENT_STATUS_OTPM_INV_SHIFT 20 | ||
454 | #define EUR_CR_EVENT_STATUS_OTPM_INV_SIGNED 0 | ||
455 | #define EUR_CR_EVENT_STATUS_OTPM_FLUSHED_MASK 0x00080000U | ||
456 | #define EUR_CR_EVENT_STATUS_OTPM_FLUSHED_SHIFT 19 | ||
457 | #define EUR_CR_EVENT_STATUS_OTPM_FLUSHED_SIGNED 0 | ||
458 | #define EUR_CR_EVENT_STATUS_PIXELBE_END_RENDER_MASK 0x00040000U | ||
459 | #define EUR_CR_EVENT_STATUS_PIXELBE_END_RENDER_SHIFT 18 | ||
460 | #define EUR_CR_EVENT_STATUS_PIXELBE_END_RENDER_SIGNED 0 | ||
461 | #define EUR_CR_EVENT_STATUS_BREAKPOINT_MASK 0x00008000U | ||
462 | #define EUR_CR_EVENT_STATUS_BREAKPOINT_SHIFT 15 | ||
463 | #define EUR_CR_EVENT_STATUS_BREAKPOINT_SIGNED 0 | ||
464 | #define EUR_CR_EVENT_STATUS_SW_EVENT_MASK 0x00004000U | ||
465 | #define EUR_CR_EVENT_STATUS_SW_EVENT_SHIFT 14 | ||
466 | #define EUR_CR_EVENT_STATUS_SW_EVENT_SIGNED 0 | ||
467 | #define EUR_CR_EVENT_STATUS_TA_FINISHED_MASK 0x00002000U | ||
468 | #define EUR_CR_EVENT_STATUS_TA_FINISHED_SHIFT 13 | ||
469 | #define EUR_CR_EVENT_STATUS_TA_FINISHED_SIGNED 0 | ||
470 | #define EUR_CR_EVENT_STATUS_TA_TERMINATE_MASK 0x00001000U | ||
471 | #define EUR_CR_EVENT_STATUS_TA_TERMINATE_SHIFT 12 | ||
472 | #define EUR_CR_EVENT_STATUS_TA_TERMINATE_SIGNED 0 | ||
473 | #define EUR_CR_EVENT_STATUS_TPC_CLEAR_MASK 0x00000800U | ||
474 | #define EUR_CR_EVENT_STATUS_TPC_CLEAR_SHIFT 11 | ||
475 | #define EUR_CR_EVENT_STATUS_TPC_CLEAR_SIGNED 0 | ||
476 | #define EUR_CR_EVENT_STATUS_TPC_FLUSH_MASK 0x00000400U | ||
477 | #define EUR_CR_EVENT_STATUS_TPC_FLUSH_SHIFT 10 | ||
478 | #define EUR_CR_EVENT_STATUS_TPC_FLUSH_SIGNED 0 | ||
479 | #define EUR_CR_EVENT_STATUS_DPM_CONTROL_CLEAR_MASK 0x00000200U | ||
480 | #define EUR_CR_EVENT_STATUS_DPM_CONTROL_CLEAR_SHIFT 9 | ||
481 | #define EUR_CR_EVENT_STATUS_DPM_CONTROL_CLEAR_SIGNED 0 | ||
482 | #define EUR_CR_EVENT_STATUS_DPM_CONTROL_LOAD_MASK 0x00000100U | ||
483 | #define EUR_CR_EVENT_STATUS_DPM_CONTROL_LOAD_SHIFT 8 | ||
484 | #define EUR_CR_EVENT_STATUS_DPM_CONTROL_LOAD_SIGNED 0 | ||
485 | #define EUR_CR_EVENT_STATUS_DPM_CONTROL_STORE_MASK 0x00000080U | ||
486 | #define EUR_CR_EVENT_STATUS_DPM_CONTROL_STORE_SHIFT 7 | ||
487 | #define EUR_CR_EVENT_STATUS_DPM_CONTROL_STORE_SIGNED 0 | ||
488 | #define EUR_CR_EVENT_STATUS_DPM_STATE_CLEAR_MASK 0x00000040U | ||
489 | #define EUR_CR_EVENT_STATUS_DPM_STATE_CLEAR_SHIFT 6 | ||
490 | #define EUR_CR_EVENT_STATUS_DPM_STATE_CLEAR_SIGNED 0 | ||
491 | #define EUR_CR_EVENT_STATUS_DPM_STATE_LOAD_MASK 0x00000020U | ||
492 | #define EUR_CR_EVENT_STATUS_DPM_STATE_LOAD_SHIFT 5 | ||
493 | #define EUR_CR_EVENT_STATUS_DPM_STATE_LOAD_SIGNED 0 | ||
494 | #define EUR_CR_EVENT_STATUS_DPM_STATE_STORE_MASK 0x00000010U | ||
495 | #define EUR_CR_EVENT_STATUS_DPM_STATE_STORE_SHIFT 4 | ||
496 | #define EUR_CR_EVENT_STATUS_DPM_STATE_STORE_SIGNED 0 | ||
497 | #define EUR_CR_EVENT_STATUS_DPM_REACHED_MEM_THRESH_MASK 0x00000008U | ||
498 | #define EUR_CR_EVENT_STATUS_DPM_REACHED_MEM_THRESH_SHIFT 3 | ||
499 | #define EUR_CR_EVENT_STATUS_DPM_REACHED_MEM_THRESH_SIGNED 0 | ||
500 | #define EUR_CR_EVENT_STATUS_DPM_OUT_OF_MEMORY_GBL_MASK 0x00000004U | ||
501 | #define EUR_CR_EVENT_STATUS_DPM_OUT_OF_MEMORY_GBL_SHIFT 2 | ||
502 | #define EUR_CR_EVENT_STATUS_DPM_OUT_OF_MEMORY_GBL_SIGNED 0 | ||
503 | #define EUR_CR_EVENT_STATUS_DPM_OUT_OF_MEMORY_MT_MASK 0x00000002U | ||
504 | #define EUR_CR_EVENT_STATUS_DPM_OUT_OF_MEMORY_MT_SHIFT 1 | ||
505 | #define EUR_CR_EVENT_STATUS_DPM_OUT_OF_MEMORY_MT_SIGNED 0 | ||
506 | #define EUR_CR_EVENT_STATUS_DPM_3D_MEM_FREE_MASK 0x00000001U | ||
507 | #define EUR_CR_EVENT_STATUS_DPM_3D_MEM_FREE_SHIFT 0 | ||
508 | #define EUR_CR_EVENT_STATUS_DPM_3D_MEM_FREE_SIGNED 0 | ||
509 | #define EUR_CR_EVENT_HOST_ENABLE 0x0130 | ||
510 | #define EUR_CR_EVENT_HOST_ENABLE_MASTER_INTERRUPT_MASK 0x80000000U | ||
511 | #define EUR_CR_EVENT_HOST_ENABLE_MASTER_INTERRUPT_SHIFT 31 | ||
512 | #define EUR_CR_EVENT_HOST_ENABLE_MASTER_INTERRUPT_SIGNED 0 | ||
513 | #define EUR_CR_EVENT_HOST_ENABLE_TIMER_MASK 0x20000000U | ||
514 | #define EUR_CR_EVENT_HOST_ENABLE_TIMER_SHIFT 29 | ||
515 | #define EUR_CR_EVENT_HOST_ENABLE_TIMER_SIGNED 0 | ||
516 | #define EUR_CR_EVENT_HOST_ENABLE_TA_DPM_FAULT_MASK 0x10000000U | ||
517 | #define EUR_CR_EVENT_HOST_ENABLE_TA_DPM_FAULT_SHIFT 28 | ||
518 | #define EUR_CR_EVENT_HOST_ENABLE_TA_DPM_FAULT_SIGNED 0 | ||
519 | #define EUR_CR_EVENT_HOST_ENABLE_TCU_INVALCOMPLETE_MASK 0x04000000U | ||
520 | #define EUR_CR_EVENT_HOST_ENABLE_TCU_INVALCOMPLETE_SHIFT 26 | ||
521 | #define EUR_CR_EVENT_HOST_ENABLE_TCU_INVALCOMPLETE_SIGNED 0 | ||
522 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_OUT_OF_MEMORY_ZLS_MASK 0x02000000U | ||
523 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_OUT_OF_MEMORY_ZLS_SHIFT 25 | ||
524 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_OUT_OF_MEMORY_ZLS_SIGNED 0 | ||
525 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_TA_MEM_FREE_MASK 0x01000000U | ||
526 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_TA_MEM_FREE_SHIFT 24 | ||
527 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_TA_MEM_FREE_SIGNED 0 | ||
528 | #define EUR_CR_EVENT_HOST_ENABLE_ISP_END_TILE_MASK 0x00800000U | ||
529 | #define EUR_CR_EVENT_HOST_ENABLE_ISP_END_TILE_SHIFT 23 | ||
530 | #define EUR_CR_EVENT_HOST_ENABLE_ISP_END_TILE_SIGNED 0 | ||
531 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_INITEND_MASK 0x00400000U | ||
532 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_INITEND_SHIFT 22 | ||
533 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_INITEND_SIGNED 0 | ||
534 | #define EUR_CR_EVENT_HOST_ENABLE_OTPM_LOADED_MASK 0x00200000U | ||
535 | #define EUR_CR_EVENT_HOST_ENABLE_OTPM_LOADED_SHIFT 21 | ||
536 | #define EUR_CR_EVENT_HOST_ENABLE_OTPM_LOADED_SIGNED 0 | ||
537 | #define EUR_CR_EVENT_HOST_ENABLE_OTPM_INV_MASK 0x00100000U | ||
538 | #define EUR_CR_EVENT_HOST_ENABLE_OTPM_INV_SHIFT 20 | ||
539 | #define EUR_CR_EVENT_HOST_ENABLE_OTPM_INV_SIGNED 0 | ||
540 | #define EUR_CR_EVENT_HOST_ENABLE_OTPM_FLUSHED_MASK 0x00080000U | ||
541 | #define EUR_CR_EVENT_HOST_ENABLE_OTPM_FLUSHED_SHIFT 19 | ||
542 | #define EUR_CR_EVENT_HOST_ENABLE_OTPM_FLUSHED_SIGNED 0 | ||
543 | #define EUR_CR_EVENT_HOST_ENABLE_PIXELBE_END_RENDER_MASK 0x00040000U | ||
544 | #define EUR_CR_EVENT_HOST_ENABLE_PIXELBE_END_RENDER_SHIFT 18 | ||
545 | #define EUR_CR_EVENT_HOST_ENABLE_PIXELBE_END_RENDER_SIGNED 0 | ||
546 | #define EUR_CR_EVENT_HOST_ENABLE_BREAKPOINT_MASK 0x00008000U | ||
547 | #define EUR_CR_EVENT_HOST_ENABLE_BREAKPOINT_SHIFT 15 | ||
548 | #define EUR_CR_EVENT_HOST_ENABLE_BREAKPOINT_SIGNED 0 | ||
549 | #define EUR_CR_EVENT_HOST_ENABLE_SW_EVENT_MASK 0x00004000U | ||
550 | #define EUR_CR_EVENT_HOST_ENABLE_SW_EVENT_SHIFT 14 | ||
551 | #define EUR_CR_EVENT_HOST_ENABLE_SW_EVENT_SIGNED 0 | ||
552 | #define EUR_CR_EVENT_HOST_ENABLE_TA_FINISHED_MASK 0x00002000U | ||
553 | #define EUR_CR_EVENT_HOST_ENABLE_TA_FINISHED_SHIFT 13 | ||
554 | #define EUR_CR_EVENT_HOST_ENABLE_TA_FINISHED_SIGNED 0 | ||
555 | #define EUR_CR_EVENT_HOST_ENABLE_TA_TERMINATE_MASK 0x00001000U | ||
556 | #define EUR_CR_EVENT_HOST_ENABLE_TA_TERMINATE_SHIFT 12 | ||
557 | #define EUR_CR_EVENT_HOST_ENABLE_TA_TERMINATE_SIGNED 0 | ||
558 | #define EUR_CR_EVENT_HOST_ENABLE_TPC_CLEAR_MASK 0x00000800U | ||
559 | #define EUR_CR_EVENT_HOST_ENABLE_TPC_CLEAR_SHIFT 11 | ||
560 | #define EUR_CR_EVENT_HOST_ENABLE_TPC_CLEAR_SIGNED 0 | ||
561 | #define EUR_CR_EVENT_HOST_ENABLE_TPC_FLUSH_MASK 0x00000400U | ||
562 | #define EUR_CR_EVENT_HOST_ENABLE_TPC_FLUSH_SHIFT 10 | ||
563 | #define EUR_CR_EVENT_HOST_ENABLE_TPC_FLUSH_SIGNED 0 | ||
564 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_CONTROL_CLEAR_MASK 0x00000200U | ||
565 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_CONTROL_CLEAR_SHIFT 9 | ||
566 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_CONTROL_CLEAR_SIGNED 0 | ||
567 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_CONTROL_LOAD_MASK 0x00000100U | ||
568 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_CONTROL_LOAD_SHIFT 8 | ||
569 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_CONTROL_LOAD_SIGNED 0 | ||
570 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_CONTROL_STORE_MASK 0x00000080U | ||
571 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_CONTROL_STORE_SHIFT 7 | ||
572 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_CONTROL_STORE_SIGNED 0 | ||
573 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_STATE_CLEAR_MASK 0x00000040U | ||
574 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_STATE_CLEAR_SHIFT 6 | ||
575 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_STATE_CLEAR_SIGNED 0 | ||
576 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_STATE_LOAD_MASK 0x00000020U | ||
577 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_STATE_LOAD_SHIFT 5 | ||
578 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_STATE_LOAD_SIGNED 0 | ||
579 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_STATE_STORE_MASK 0x00000010U | ||
580 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_STATE_STORE_SHIFT 4 | ||
581 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_STATE_STORE_SIGNED 0 | ||
582 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_REACHED_MEM_THRESH_MASK 0x00000008U | ||
583 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_REACHED_MEM_THRESH_SHIFT 3 | ||
584 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_REACHED_MEM_THRESH_SIGNED 0 | ||
585 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_OUT_OF_MEMORY_GBL_MASK 0x00000004U | ||
586 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_OUT_OF_MEMORY_GBL_SHIFT 2 | ||
587 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_OUT_OF_MEMORY_GBL_SIGNED 0 | ||
588 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_OUT_OF_MEMORY_MT_MASK 0x00000002U | ||
589 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_OUT_OF_MEMORY_MT_SHIFT 1 | ||
590 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_OUT_OF_MEMORY_MT_SIGNED 0 | ||
591 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_3D_MEM_FREE_MASK 0x00000001U | ||
592 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_3D_MEM_FREE_SHIFT 0 | ||
593 | #define EUR_CR_EVENT_HOST_ENABLE_DPM_3D_MEM_FREE_SIGNED 0 | ||
594 | #define EUR_CR_EVENT_HOST_CLEAR 0x0134 | ||
595 | #define EUR_CR_EVENT_HOST_CLEAR_MASTER_INTERRUPT_MASK 0x80000000U | ||
596 | #define EUR_CR_EVENT_HOST_CLEAR_MASTER_INTERRUPT_SHIFT 31 | ||
597 | #define EUR_CR_EVENT_HOST_CLEAR_MASTER_INTERRUPT_SIGNED 0 | ||
598 | #define EUR_CR_EVENT_HOST_CLEAR_TIMER_MASK 0x20000000U | ||
599 | #define EUR_CR_EVENT_HOST_CLEAR_TIMER_SHIFT 29 | ||
600 | #define EUR_CR_EVENT_HOST_CLEAR_TIMER_SIGNED 0 | ||
601 | #define EUR_CR_EVENT_HOST_CLEAR_TA_DPM_FAULT_MASK 0x10000000U | ||
602 | #define EUR_CR_EVENT_HOST_CLEAR_TA_DPM_FAULT_SHIFT 28 | ||
603 | #define EUR_CR_EVENT_HOST_CLEAR_TA_DPM_FAULT_SIGNED 0 | ||
604 | #define EUR_CR_EVENT_HOST_CLEAR_TCU_INVALCOMPLETE_MASK 0x04000000U | ||
605 | #define EUR_CR_EVENT_HOST_CLEAR_TCU_INVALCOMPLETE_SHIFT 26 | ||
606 | #define EUR_CR_EVENT_HOST_CLEAR_TCU_INVALCOMPLETE_SIGNED 0 | ||
607 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_OUT_OF_MEMORY_ZLS_MASK 0x02000000U | ||
608 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_OUT_OF_MEMORY_ZLS_SHIFT 25 | ||
609 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_OUT_OF_MEMORY_ZLS_SIGNED 0 | ||
610 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_TA_MEM_FREE_MASK 0x01000000U | ||
611 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_TA_MEM_FREE_SHIFT 24 | ||
612 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_TA_MEM_FREE_SIGNED 0 | ||
613 | #define EUR_CR_EVENT_HOST_CLEAR_ISP_END_TILE_MASK 0x00800000U | ||
614 | #define EUR_CR_EVENT_HOST_CLEAR_ISP_END_TILE_SHIFT 23 | ||
615 | #define EUR_CR_EVENT_HOST_CLEAR_ISP_END_TILE_SIGNED 0 | ||
616 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_INITEND_MASK 0x00400000U | ||
617 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_INITEND_SHIFT 22 | ||
618 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_INITEND_SIGNED 0 | ||
619 | #define EUR_CR_EVENT_HOST_CLEAR_OTPM_LOADED_MASK 0x00200000U | ||
620 | #define EUR_CR_EVENT_HOST_CLEAR_OTPM_LOADED_SHIFT 21 | ||
621 | #define EUR_CR_EVENT_HOST_CLEAR_OTPM_LOADED_SIGNED 0 | ||
622 | #define EUR_CR_EVENT_HOST_CLEAR_OTPM_INV_MASK 0x00100000U | ||
623 | #define EUR_CR_EVENT_HOST_CLEAR_OTPM_INV_SHIFT 20 | ||
624 | #define EUR_CR_EVENT_HOST_CLEAR_OTPM_INV_SIGNED 0 | ||
625 | #define EUR_CR_EVENT_HOST_CLEAR_OTPM_FLUSHED_MASK 0x00080000U | ||
626 | #define EUR_CR_EVENT_HOST_CLEAR_OTPM_FLUSHED_SHIFT 19 | ||
627 | #define EUR_CR_EVENT_HOST_CLEAR_OTPM_FLUSHED_SIGNED 0 | ||
628 | #define EUR_CR_EVENT_HOST_CLEAR_PIXELBE_END_RENDER_MASK 0x00040000U | ||
629 | #define EUR_CR_EVENT_HOST_CLEAR_PIXELBE_END_RENDER_SHIFT 18 | ||
630 | #define EUR_CR_EVENT_HOST_CLEAR_PIXELBE_END_RENDER_SIGNED 0 | ||
631 | #define EUR_CR_EVENT_HOST_CLEAR_BREAKPOINT_MASK 0x00008000U | ||
632 | #define EUR_CR_EVENT_HOST_CLEAR_BREAKPOINT_SHIFT 15 | ||
633 | #define EUR_CR_EVENT_HOST_CLEAR_BREAKPOINT_SIGNED 0 | ||
634 | #define EUR_CR_EVENT_HOST_CLEAR_SW_EVENT_MASK 0x00004000U | ||
635 | #define EUR_CR_EVENT_HOST_CLEAR_SW_EVENT_SHIFT 14 | ||
636 | #define EUR_CR_EVENT_HOST_CLEAR_SW_EVENT_SIGNED 0 | ||
637 | #define EUR_CR_EVENT_HOST_CLEAR_TA_FINISHED_MASK 0x00002000U | ||
638 | #define EUR_CR_EVENT_HOST_CLEAR_TA_FINISHED_SHIFT 13 | ||
639 | #define EUR_CR_EVENT_HOST_CLEAR_TA_FINISHED_SIGNED 0 | ||
640 | #define EUR_CR_EVENT_HOST_CLEAR_TA_TERMINATE_MASK 0x00001000U | ||
641 | #define EUR_CR_EVENT_HOST_CLEAR_TA_TERMINATE_SHIFT 12 | ||
642 | #define EUR_CR_EVENT_HOST_CLEAR_TA_TERMINATE_SIGNED 0 | ||
643 | #define EUR_CR_EVENT_HOST_CLEAR_TPC_CLEAR_MASK 0x00000800U | ||
644 | #define EUR_CR_EVENT_HOST_CLEAR_TPC_CLEAR_SHIFT 11 | ||
645 | #define EUR_CR_EVENT_HOST_CLEAR_TPC_CLEAR_SIGNED 0 | ||
646 | #define EUR_CR_EVENT_HOST_CLEAR_TPC_FLUSH_MASK 0x00000400U | ||
647 | #define EUR_CR_EVENT_HOST_CLEAR_TPC_FLUSH_SHIFT 10 | ||
648 | #define EUR_CR_EVENT_HOST_CLEAR_TPC_FLUSH_SIGNED 0 | ||
649 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_CONTROL_CLEAR_MASK 0x00000200U | ||
650 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_CONTROL_CLEAR_SHIFT 9 | ||
651 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_CONTROL_CLEAR_SIGNED 0 | ||
652 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_CONTROL_LOAD_MASK 0x00000100U | ||
653 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_CONTROL_LOAD_SHIFT 8 | ||
654 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_CONTROL_LOAD_SIGNED 0 | ||
655 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_CONTROL_STORE_MASK 0x00000080U | ||
656 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_CONTROL_STORE_SHIFT 7 | ||
657 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_CONTROL_STORE_SIGNED 0 | ||
658 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_STATE_CLEAR_MASK 0x00000040U | ||
659 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_STATE_CLEAR_SHIFT 6 | ||
660 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_STATE_CLEAR_SIGNED 0 | ||
661 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_STATE_LOAD_MASK 0x00000020U | ||
662 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_STATE_LOAD_SHIFT 5 | ||
663 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_STATE_LOAD_SIGNED 0 | ||
664 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_STATE_STORE_MASK 0x00000010U | ||
665 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_STATE_STORE_SHIFT 4 | ||
666 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_STATE_STORE_SIGNED 0 | ||
667 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_REACHED_MEM_THRESH_MASK 0x00000008U | ||
668 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_REACHED_MEM_THRESH_SHIFT 3 | ||
669 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_REACHED_MEM_THRESH_SIGNED 0 | ||
670 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_OUT_OF_MEMORY_GBL_MASK 0x00000004U | ||
671 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_OUT_OF_MEMORY_GBL_SHIFT 2 | ||
672 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_OUT_OF_MEMORY_GBL_SIGNED 0 | ||
673 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_OUT_OF_MEMORY_MT_MASK 0x00000002U | ||
674 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_OUT_OF_MEMORY_MT_SHIFT 1 | ||
675 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_OUT_OF_MEMORY_MT_SIGNED 0 | ||
676 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_3D_MEM_FREE_MASK 0x00000001U | ||
677 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_3D_MEM_FREE_SHIFT 0 | ||
678 | #define EUR_CR_EVENT_HOST_CLEAR_DPM_3D_MEM_FREE_SIGNED 0 | ||
679 | #define EUR_CR_TIMER 0x0144 | ||
680 | #define EUR_CR_TIMER_VALUE_MASK 0xFFFFFFFFU | ||
681 | #define EUR_CR_TIMER_VALUE_SHIFT 0 | ||
682 | #define EUR_CR_TIMER_VALUE_SIGNED 0 | ||
683 | #define EUR_CR_EVENT_KICK1 0x0AB0 | ||
684 | #define EUR_CR_EVENT_KICK1_NOW_MASK 0x000000FFU | ||
685 | #define EUR_CR_EVENT_KICK1_NOW_SHIFT 0 | ||
686 | #define EUR_CR_EVENT_KICK1_NOW_SIGNED 0 | ||
687 | #define EUR_CR_EVENT_KICK2 0x0AC0 | ||
688 | #define EUR_CR_EVENT_KICK2_NOW_MASK 0x00000001U | ||
689 | #define EUR_CR_EVENT_KICK2_NOW_SHIFT 0 | ||
690 | #define EUR_CR_EVENT_KICK2_NOW_SIGNED 0 | ||
691 | #define EUR_CR_EVENT_KICKER 0x0AC4 | ||
692 | #define EUR_CR_EVENT_KICKER_ADDRESS_MASK 0xFFFFFFF0U | ||
693 | #define EUR_CR_EVENT_KICKER_ADDRESS_SHIFT 4 | ||
694 | #define EUR_CR_EVENT_KICKER_ADDRESS_SIGNED 0 | ||
695 | #define EUR_CR_EVENT_KICK 0x0AC8 | ||
696 | #define EUR_CR_EVENT_KICK_NOW_MASK 0x00000001U | ||
697 | #define EUR_CR_EVENT_KICK_NOW_SHIFT 0 | ||
698 | #define EUR_CR_EVENT_KICK_NOW_SIGNED 0 | ||
699 | #define EUR_CR_EVENT_TIMER 0x0ACC | ||
700 | #define EUR_CR_EVENT_TIMER_ENABLE_MASK 0x01000000U | ||
701 | #define EUR_CR_EVENT_TIMER_ENABLE_SHIFT 24 | ||
702 | #define EUR_CR_EVENT_TIMER_ENABLE_SIGNED 0 | ||
703 | #define EUR_CR_EVENT_TIMER_VALUE_MASK 0x00FFFFFFU | ||
704 | #define EUR_CR_EVENT_TIMER_VALUE_SHIFT 0 | ||
705 | #define EUR_CR_EVENT_TIMER_VALUE_SIGNED 0 | ||
706 | #define EUR_CR_PDS_INV0 0x0AD0 | ||
707 | #define EUR_CR_PDS_INV0_DSC_MASK 0x00000001U | ||
708 | #define EUR_CR_PDS_INV0_DSC_SHIFT 0 | ||
709 | #define EUR_CR_PDS_INV0_DSC_SIGNED 0 | ||
710 | #define EUR_CR_PDS_INV1 0x0AD4 | ||
711 | #define EUR_CR_PDS_INV1_DSC_MASK 0x00000001U | ||
712 | #define EUR_CR_PDS_INV1_DSC_SHIFT 0 | ||
713 | #define EUR_CR_PDS_INV1_DSC_SIGNED 0 | ||
714 | #define EUR_CR_EVENT_KICK3 0x0AD8 | ||
715 | #define EUR_CR_EVENT_KICK3_NOW_MASK 0x00000001U | ||
716 | #define EUR_CR_EVENT_KICK3_NOW_SHIFT 0 | ||
717 | #define EUR_CR_EVENT_KICK3_NOW_SIGNED 0 | ||
718 | #define EUR_CR_PDS_INV3 0x0ADC | ||
719 | #define EUR_CR_PDS_INV3_DSC_MASK 0x00000001U | ||
720 | #define EUR_CR_PDS_INV3_DSC_SHIFT 0 | ||
721 | #define EUR_CR_PDS_INV3_DSC_SIGNED 0 | ||
722 | #define EUR_CR_PDS_INV_CSC 0x0AE0 | ||
723 | #define EUR_CR_PDS_INV_CSC_KICK_MASK 0x00000001U | ||
724 | #define EUR_CR_PDS_INV_CSC_KICK_SHIFT 0 | ||
725 | #define EUR_CR_PDS_INV_CSC_KICK_SIGNED 0 | ||
726 | #define EUR_CR_BIF_CTRL 0x0C00 | ||
727 | #define EUR_CR_BIF_CTRL_NOREORDER_MASK 0x00000001U | ||
728 | #define EUR_CR_BIF_CTRL_NOREORDER_SHIFT 0 | ||
729 | #define EUR_CR_BIF_CTRL_NOREORDER_SIGNED 0 | ||
730 | #define EUR_CR_BIF_CTRL_PAUSE_MASK 0x00000002U | ||
731 | #define EUR_CR_BIF_CTRL_PAUSE_SHIFT 1 | ||
732 | #define EUR_CR_BIF_CTRL_PAUSE_SIGNED 0 | ||
733 | #define EUR_CR_BIF_CTRL_CLEAR_FAULT_MASK 0x00000010U | ||
734 | #define EUR_CR_BIF_CTRL_CLEAR_FAULT_SHIFT 4 | ||
735 | #define EUR_CR_BIF_CTRL_CLEAR_FAULT_SIGNED 0 | ||
736 | #define EUR_CR_BIF_CTRL_MMU_BYPASS_VDM_MASK 0x00000200U | ||
737 | #define EUR_CR_BIF_CTRL_MMU_BYPASS_VDM_SHIFT 9 | ||
738 | #define EUR_CR_BIF_CTRL_MMU_BYPASS_VDM_SIGNED 0 | ||
739 | #define EUR_CR_BIF_CTRL_MMU_BYPASS_TA_MASK 0x00000400U | ||
740 | #define EUR_CR_BIF_CTRL_MMU_BYPASS_TA_SHIFT 10 | ||
741 | #define EUR_CR_BIF_CTRL_MMU_BYPASS_TA_SIGNED 0 | ||
742 | #define EUR_CR_BIF_CTRL_MMU_BYPASS_PBE_MASK 0x00001000U | ||
743 | #define EUR_CR_BIF_CTRL_MMU_BYPASS_PBE_SHIFT 12 | ||
744 | #define EUR_CR_BIF_CTRL_MMU_BYPASS_PBE_SIGNED 0 | ||
745 | #define EUR_CR_BIF_CTRL_MMU_BYPASS_TSPP_MASK 0x00002000U | ||
746 | #define EUR_CR_BIF_CTRL_MMU_BYPASS_TSPP_SHIFT 13 | ||
747 | #define EUR_CR_BIF_CTRL_MMU_BYPASS_TSPP_SIGNED 0 | ||
748 | #define EUR_CR_BIF_CTRL_MMU_BYPASS_ISP_MASK 0x00004000U | ||
749 | #define EUR_CR_BIF_CTRL_MMU_BYPASS_ISP_SHIFT 14 | ||
750 | #define EUR_CR_BIF_CTRL_MMU_BYPASS_ISP_SIGNED 0 | ||
751 | #define EUR_CR_BIF_CTRL_MMU_BYPASS_USE_MASK 0x00008000U | ||
752 | #define EUR_CR_BIF_CTRL_MMU_BYPASS_USE_SHIFT 15 | ||
753 | #define EUR_CR_BIF_CTRL_MMU_BYPASS_USE_SIGNED 0 | ||
754 | #define EUR_CR_BIF_CTRL_MMU_BYPASS_PTLA_MASK 0x00010000U | ||
755 | #define EUR_CR_BIF_CTRL_MMU_BYPASS_PTLA_SHIFT 16 | ||
756 | #define EUR_CR_BIF_CTRL_MMU_BYPASS_PTLA_SIGNED 0 | ||
757 | #define EUR_CR_BIF_CTRL_MMU_BYPASS_MASTER_VDM_MASK 0x00020000U | ||
758 | #define EUR_CR_BIF_CTRL_MMU_BYPASS_MASTER_VDM_SHIFT 17 | ||
759 | #define EUR_CR_BIF_CTRL_MMU_BYPASS_MASTER_VDM_SIGNED 0 | ||
760 | #define EUR_CR_BIF_CTRL_MMU_BYPASS_MASTER_IPF_MASK 0x00040000U | ||
761 | #define EUR_CR_BIF_CTRL_MMU_BYPASS_MASTER_IPF_SHIFT 18 | ||
762 | #define EUR_CR_BIF_CTRL_MMU_BYPASS_MASTER_IPF_SIGNED 0 | ||
763 | #define EUR_CR_BIF_CTRL_MMU_BYPASS_MASTER_DPM_MASK 0x00080000U | ||
764 | #define EUR_CR_BIF_CTRL_MMU_BYPASS_MASTER_DPM_SHIFT 19 | ||
765 | #define EUR_CR_BIF_CTRL_MMU_BYPASS_MASTER_DPM_SIGNED 0 | ||
766 | #define EUR_CR_BIF_INT_STAT 0x0C04 | ||
767 | #define EUR_CR_BIF_INT_STAT_FAULT_REQ_MASK 0x00003FFFU | ||
768 | #define EUR_CR_BIF_INT_STAT_FAULT_REQ_SHIFT 0 | ||
769 | #define EUR_CR_BIF_INT_STAT_FAULT_REQ_SIGNED 0 | ||
770 | #define EUR_CR_BIF_INT_STAT_FAULT_TYPE_MASK 0x00070000U | ||
771 | #define EUR_CR_BIF_INT_STAT_FAULT_TYPE_SHIFT 16 | ||
772 | #define EUR_CR_BIF_INT_STAT_FAULT_TYPE_SIGNED 0 | ||
773 | #define EUR_CR_BIF_INT_STAT_FLUSH_COMPLETE_MASK 0x00080000U | ||
774 | #define EUR_CR_BIF_INT_STAT_FLUSH_COMPLETE_SHIFT 19 | ||
775 | #define EUR_CR_BIF_INT_STAT_FLUSH_COMPLETE_SIGNED 0 | ||
776 | #define EUR_CR_BIF_FAULT 0x0C08 | ||
777 | #define EUR_CR_BIF_FAULT_CID_MASK 0x0000000FU | ||
778 | #define EUR_CR_BIF_FAULT_CID_SHIFT 0 | ||
779 | #define EUR_CR_BIF_FAULT_CID_SIGNED 0 | ||
780 | #define EUR_CR_BIF_FAULT_SB_MASK 0x000001F0U | ||
781 | #define EUR_CR_BIF_FAULT_SB_SHIFT 4 | ||
782 | #define EUR_CR_BIF_FAULT_SB_SIGNED 0 | ||
783 | #define EUR_CR_BIF_FAULT_ADDR_MASK 0xFFFFF000U | ||
784 | #define EUR_CR_BIF_FAULT_ADDR_SHIFT 12 | ||
785 | #define EUR_CR_BIF_FAULT_ADDR_SIGNED 0 | ||
786 | #define EUR_CR_BIF_TILE0 0x0C0C | ||
787 | #define EUR_CR_BIF_TILE0_MIN_ADDRESS_MASK 0x00000FFFU | ||
788 | #define EUR_CR_BIF_TILE0_MIN_ADDRESS_SHIFT 0 | ||
789 | #define EUR_CR_BIF_TILE0_MIN_ADDRESS_SIGNED 0 | ||
790 | #define EUR_CR_BIF_TILE0_MAX_ADDRESS_MASK 0x00FFF000U | ||
791 | #define EUR_CR_BIF_TILE0_MAX_ADDRESS_SHIFT 12 | ||
792 | #define EUR_CR_BIF_TILE0_MAX_ADDRESS_SIGNED 0 | ||
793 | #define EUR_CR_BIF_TILE0_CFG_MASK 0x0F000000U | ||
794 | #define EUR_CR_BIF_TILE0_CFG_SHIFT 24 | ||
795 | #define EUR_CR_BIF_TILE0_CFG_SIGNED 0 | ||
796 | #define EUR_CR_BIF_TILE1 0x0C10 | ||
797 | #define EUR_CR_BIF_TILE1_MIN_ADDRESS_MASK 0x00000FFFU | ||
798 | #define EUR_CR_BIF_TILE1_MIN_ADDRESS_SHIFT 0 | ||
799 | #define EUR_CR_BIF_TILE1_MIN_ADDRESS_SIGNED 0 | ||
800 | #define EUR_CR_BIF_TILE1_MAX_ADDRESS_MASK 0x00FFF000U | ||
801 | #define EUR_CR_BIF_TILE1_MAX_ADDRESS_SHIFT 12 | ||
802 | #define EUR_CR_BIF_TILE1_MAX_ADDRESS_SIGNED 0 | ||
803 | #define EUR_CR_BIF_TILE1_CFG_MASK 0x0F000000U | ||
804 | #define EUR_CR_BIF_TILE1_CFG_SHIFT 24 | ||
805 | #define EUR_CR_BIF_TILE1_CFG_SIGNED 0 | ||
806 | #define EUR_CR_BIF_TILE2 0x0C14 | ||
807 | #define EUR_CR_BIF_TILE2_MIN_ADDRESS_MASK 0x00000FFFU | ||
808 | #define EUR_CR_BIF_TILE2_MIN_ADDRESS_SHIFT 0 | ||
809 | #define EUR_CR_BIF_TILE2_MIN_ADDRESS_SIGNED 0 | ||
810 | #define EUR_CR_BIF_TILE2_MAX_ADDRESS_MASK 0x00FFF000U | ||
811 | #define EUR_CR_BIF_TILE2_MAX_ADDRESS_SHIFT 12 | ||
812 | #define EUR_CR_BIF_TILE2_MAX_ADDRESS_SIGNED 0 | ||
813 | #define EUR_CR_BIF_TILE2_CFG_MASK 0x0F000000U | ||
814 | #define EUR_CR_BIF_TILE2_CFG_SHIFT 24 | ||
815 | #define EUR_CR_BIF_TILE2_CFG_SIGNED 0 | ||
816 | #define EUR_CR_BIF_TILE3 0x0C18 | ||
817 | #define EUR_CR_BIF_TILE3_MIN_ADDRESS_MASK 0x00000FFFU | ||
818 | #define EUR_CR_BIF_TILE3_MIN_ADDRESS_SHIFT 0 | ||
819 | #define EUR_CR_BIF_TILE3_MIN_ADDRESS_SIGNED 0 | ||
820 | #define EUR_CR_BIF_TILE3_MAX_ADDRESS_MASK 0x00FFF000U | ||
821 | #define EUR_CR_BIF_TILE3_MAX_ADDRESS_SHIFT 12 | ||
822 | #define EUR_CR_BIF_TILE3_MAX_ADDRESS_SIGNED 0 | ||
823 | #define EUR_CR_BIF_TILE3_CFG_MASK 0x0F000000U | ||
824 | #define EUR_CR_BIF_TILE3_CFG_SHIFT 24 | ||
825 | #define EUR_CR_BIF_TILE3_CFG_SIGNED 0 | ||
826 | #define EUR_CR_BIF_TILE4 0x0C1C | ||
827 | #define EUR_CR_BIF_TILE4_MIN_ADDRESS_MASK 0x00000FFFU | ||
828 | #define EUR_CR_BIF_TILE4_MIN_ADDRESS_SHIFT 0 | ||
829 | #define EUR_CR_BIF_TILE4_MIN_ADDRESS_SIGNED 0 | ||
830 | #define EUR_CR_BIF_TILE4_MAX_ADDRESS_MASK 0x00FFF000U | ||
831 | #define EUR_CR_BIF_TILE4_MAX_ADDRESS_SHIFT 12 | ||
832 | #define EUR_CR_BIF_TILE4_MAX_ADDRESS_SIGNED 0 | ||
833 | #define EUR_CR_BIF_TILE4_CFG_MASK 0x0F000000U | ||
834 | #define EUR_CR_BIF_TILE4_CFG_SHIFT 24 | ||
835 | #define EUR_CR_BIF_TILE4_CFG_SIGNED 0 | ||
836 | #define EUR_CR_BIF_TILE5 0x0C20 | ||
837 | #define EUR_CR_BIF_TILE5_MIN_ADDRESS_MASK 0x00000FFFU | ||
838 | #define EUR_CR_BIF_TILE5_MIN_ADDRESS_SHIFT 0 | ||
839 | #define EUR_CR_BIF_TILE5_MIN_ADDRESS_SIGNED 0 | ||
840 | #define EUR_CR_BIF_TILE5_MAX_ADDRESS_MASK 0x00FFF000U | ||
841 | #define EUR_CR_BIF_TILE5_MAX_ADDRESS_SHIFT 12 | ||
842 | #define EUR_CR_BIF_TILE5_MAX_ADDRESS_SIGNED 0 | ||
843 | #define EUR_CR_BIF_TILE5_CFG_MASK 0x0F000000U | ||
844 | #define EUR_CR_BIF_TILE5_CFG_SHIFT 24 | ||
845 | #define EUR_CR_BIF_TILE5_CFG_SIGNED 0 | ||
846 | #define EUR_CR_BIF_TILE6 0x0C24 | ||
847 | #define EUR_CR_BIF_TILE6_MIN_ADDRESS_MASK 0x00000FFFU | ||
848 | #define EUR_CR_BIF_TILE6_MIN_ADDRESS_SHIFT 0 | ||
849 | #define EUR_CR_BIF_TILE6_MIN_ADDRESS_SIGNED 0 | ||
850 | #define EUR_CR_BIF_TILE6_MAX_ADDRESS_MASK 0x00FFF000U | ||
851 | #define EUR_CR_BIF_TILE6_MAX_ADDRESS_SHIFT 12 | ||
852 | #define EUR_CR_BIF_TILE6_MAX_ADDRESS_SIGNED 0 | ||
853 | #define EUR_CR_BIF_TILE6_CFG_MASK 0x0F000000U | ||
854 | #define EUR_CR_BIF_TILE6_CFG_SHIFT 24 | ||
855 | #define EUR_CR_BIF_TILE6_CFG_SIGNED 0 | ||
856 | #define EUR_CR_BIF_TILE7 0x0C28 | ||
857 | #define EUR_CR_BIF_TILE7_MIN_ADDRESS_MASK 0x00000FFFU | ||
858 | #define EUR_CR_BIF_TILE7_MIN_ADDRESS_SHIFT 0 | ||
859 | #define EUR_CR_BIF_TILE7_MIN_ADDRESS_SIGNED 0 | ||
860 | #define EUR_CR_BIF_TILE7_MAX_ADDRESS_MASK 0x00FFF000U | ||
861 | #define EUR_CR_BIF_TILE7_MAX_ADDRESS_SHIFT 12 | ||
862 | #define EUR_CR_BIF_TILE7_MAX_ADDRESS_SIGNED 0 | ||
863 | #define EUR_CR_BIF_TILE7_CFG_MASK 0x0F000000U | ||
864 | #define EUR_CR_BIF_TILE7_CFG_SHIFT 24 | ||
865 | #define EUR_CR_BIF_TILE7_CFG_SIGNED 0 | ||
866 | #define EUR_CR_BIF_TILE8 0x0C2C | ||
867 | #define EUR_CR_BIF_TILE8_MIN_ADDRESS_MASK 0x00000FFFU | ||
868 | #define EUR_CR_BIF_TILE8_MIN_ADDRESS_SHIFT 0 | ||
869 | #define EUR_CR_BIF_TILE8_MIN_ADDRESS_SIGNED 0 | ||
870 | #define EUR_CR_BIF_TILE8_MAX_ADDRESS_MASK 0x00FFF000U | ||
871 | #define EUR_CR_BIF_TILE8_MAX_ADDRESS_SHIFT 12 | ||
872 | #define EUR_CR_BIF_TILE8_MAX_ADDRESS_SIGNED 0 | ||
873 | #define EUR_CR_BIF_TILE8_CFG_MASK 0x0F000000U | ||
874 | #define EUR_CR_BIF_TILE8_CFG_SHIFT 24 | ||
875 | #define EUR_CR_BIF_TILE8_CFG_SIGNED 0 | ||
876 | #define EUR_CR_BIF_TILE9 0x0C30 | ||
877 | #define EUR_CR_BIF_TILE9_MIN_ADDRESS_MASK 0x00000FFFU | ||
878 | #define EUR_CR_BIF_TILE9_MIN_ADDRESS_SHIFT 0 | ||
879 | #define EUR_CR_BIF_TILE9_MIN_ADDRESS_SIGNED 0 | ||
880 | #define EUR_CR_BIF_TILE9_MAX_ADDRESS_MASK 0x00FFF000U | ||
881 | #define EUR_CR_BIF_TILE9_MAX_ADDRESS_SHIFT 12 | ||
882 | #define EUR_CR_BIF_TILE9_MAX_ADDRESS_SIGNED 0 | ||
883 | #define EUR_CR_BIF_TILE9_CFG_MASK 0x0F000000U | ||
884 | #define EUR_CR_BIF_TILE9_CFG_SHIFT 24 | ||
885 | #define EUR_CR_BIF_TILE9_CFG_SIGNED 0 | ||
886 | #define EUR_CR_BIF_CTRL_INVAL 0x0C34 | ||
887 | #define EUR_CR_BIF_CTRL_INVAL_PTE_MASK 0x00000004U | ||
888 | #define EUR_CR_BIF_CTRL_INVAL_PTE_SHIFT 2 | ||
889 | #define EUR_CR_BIF_CTRL_INVAL_PTE_SIGNED 0 | ||
890 | #define EUR_CR_BIF_CTRL_INVAL_ALL_MASK 0x00000008U | ||
891 | #define EUR_CR_BIF_CTRL_INVAL_ALL_SHIFT 3 | ||
892 | #define EUR_CR_BIF_CTRL_INVAL_ALL_SIGNED 0 | ||
893 | #define EUR_CR_BIF_DIR_LIST_BASE1 0x0C38 | ||
894 | #define EUR_CR_BIF_DIR_LIST_BASE1_ADDR_MASK 0xFFFFF000U | ||
895 | #define EUR_CR_BIF_DIR_LIST_BASE1_ADDR_SHIFT 12 | ||
896 | #define EUR_CR_BIF_DIR_LIST_BASE1_ADDR_SIGNED 0 | ||
897 | #define EUR_CR_BIF_DIR_LIST_BASE2 0x0C3C | ||
898 | #define EUR_CR_BIF_DIR_LIST_BASE2_ADDR_MASK 0xFFFFF000U | ||
899 | #define EUR_CR_BIF_DIR_LIST_BASE2_ADDR_SHIFT 12 | ||
900 | #define EUR_CR_BIF_DIR_LIST_BASE2_ADDR_SIGNED 0 | ||
901 | #define EUR_CR_BIF_DIR_LIST_BASE3 0x0C40 | ||
902 | #define EUR_CR_BIF_DIR_LIST_BASE3_ADDR_MASK 0xFFFFF000U | ||
903 | #define EUR_CR_BIF_DIR_LIST_BASE3_ADDR_SHIFT 12 | ||
904 | #define EUR_CR_BIF_DIR_LIST_BASE3_ADDR_SIGNED 0 | ||
905 | #define EUR_CR_BIF_DIR_LIST_BASE4 0x0C44 | ||
906 | #define EUR_CR_BIF_DIR_LIST_BASE4_ADDR_MASK 0xFFFFF000U | ||
907 | #define EUR_CR_BIF_DIR_LIST_BASE4_ADDR_SHIFT 12 | ||
908 | #define EUR_CR_BIF_DIR_LIST_BASE4_ADDR_SIGNED 0 | ||
909 | #define EUR_CR_BIF_DIR_LIST_BASE5 0x0C48 | ||
910 | #define EUR_CR_BIF_DIR_LIST_BASE5_ADDR_MASK 0xFFFFF000U | ||
911 | #define EUR_CR_BIF_DIR_LIST_BASE5_ADDR_SHIFT 12 | ||
912 | #define EUR_CR_BIF_DIR_LIST_BASE5_ADDR_SIGNED 0 | ||
913 | #define EUR_CR_BIF_DIR_LIST_BASE6 0x0C4C | ||
914 | #define EUR_CR_BIF_DIR_LIST_BASE6_ADDR_MASK 0xFFFFF000U | ||
915 | #define EUR_CR_BIF_DIR_LIST_BASE6_ADDR_SHIFT 12 | ||
916 | #define EUR_CR_BIF_DIR_LIST_BASE6_ADDR_SIGNED 0 | ||
917 | #define EUR_CR_BIF_DIR_LIST_BASE7 0x0C50 | ||
918 | #define EUR_CR_BIF_DIR_LIST_BASE7_ADDR_MASK 0xFFFFF000U | ||
919 | #define EUR_CR_BIF_DIR_LIST_BASE7_ADDR_SHIFT 12 | ||
920 | #define EUR_CR_BIF_DIR_LIST_BASE7_ADDR_SIGNED 0 | ||
921 | #define EUR_CR_BIF_BANK_SET 0x0C74 | ||
922 | #define EUR_CR_BIF_BANK_SET_SELECT_2D_MASK 0x00000001U | ||
923 | #define EUR_CR_BIF_BANK_SET_SELECT_2D_SHIFT 0 | ||
924 | #define EUR_CR_BIF_BANK_SET_SELECT_2D_SIGNED 0 | ||
925 | #define EUR_CR_BIF_BANK_SET_SELECT_3D_MASK 0x0000000CU | ||
926 | #define EUR_CR_BIF_BANK_SET_SELECT_3D_SHIFT 2 | ||
927 | #define EUR_CR_BIF_BANK_SET_SELECT_3D_SIGNED 0 | ||
928 | #define EUR_CR_BIF_BANK_SET_SELECT_HOST_MASK 0x00000010U | ||
929 | #define EUR_CR_BIF_BANK_SET_SELECT_HOST_SHIFT 4 | ||
930 | #define EUR_CR_BIF_BANK_SET_SELECT_HOST_SIGNED 0 | ||
931 | #define EUR_CR_BIF_BANK_SET_SELECT_TA_MASK 0x000000C0U | ||
932 | #define EUR_CR_BIF_BANK_SET_SELECT_TA_SHIFT 6 | ||
933 | #define EUR_CR_BIF_BANK_SET_SELECT_TA_SIGNED 0 | ||
934 | #define EUR_CR_BIF_BANK_SET_SELECT_EDM_MASK 0x00000100U | ||
935 | #define EUR_CR_BIF_BANK_SET_SELECT_EDM_SHIFT 8 | ||
936 | #define EUR_CR_BIF_BANK_SET_SELECT_EDM_SIGNED 0 | ||
937 | #define EUR_CR_BIF_BANK_SET_SELECT_DPM_LSS_MASK 0x00000200U | ||
938 | #define EUR_CR_BIF_BANK_SET_SELECT_DPM_LSS_SHIFT 9 | ||
939 | #define EUR_CR_BIF_BANK_SET_SELECT_DPM_LSS_SIGNED 0 | ||
940 | #define EUR_CR_BIF_BANK0 0x0C78 | ||
941 | #define EUR_CR_BIF_BANK0_INDEX_EDM_MASK 0x0000000FU | ||
942 | #define EUR_CR_BIF_BANK0_INDEX_EDM_SHIFT 0 | ||
943 | #define EUR_CR_BIF_BANK0_INDEX_EDM_SIGNED 0 | ||
944 | #define EUR_CR_BIF_BANK0_INDEX_TA_MASK 0x000000F0U | ||
945 | #define EUR_CR_BIF_BANK0_INDEX_TA_SHIFT 4 | ||
946 | #define EUR_CR_BIF_BANK0_INDEX_TA_SIGNED 0 | ||
947 | #define EUR_CR_BIF_BANK0_INDEX_3D_MASK 0x0000F000U | ||
948 | #define EUR_CR_BIF_BANK0_INDEX_3D_SHIFT 12 | ||
949 | #define EUR_CR_BIF_BANK0_INDEX_3D_SIGNED 0 | ||
950 | #define EUR_CR_BIF_BANK0_INDEX_PTLA_MASK 0x000F0000U | ||
951 | #define EUR_CR_BIF_BANK0_INDEX_PTLA_SHIFT 16 | ||
952 | #define EUR_CR_BIF_BANK0_INDEX_PTLA_SIGNED 0 | ||
953 | #define EUR_CR_BIF_BANK1 0x0C7C | ||
954 | #define EUR_CR_BIF_BANK1_INDEX_EDM_MASK 0x0000000FU | ||
955 | #define EUR_CR_BIF_BANK1_INDEX_EDM_SHIFT 0 | ||
956 | #define EUR_CR_BIF_BANK1_INDEX_EDM_SIGNED 0 | ||
957 | #define EUR_CR_BIF_BANK1_INDEX_TA_MASK 0x000000F0U | ||
958 | #define EUR_CR_BIF_BANK1_INDEX_TA_SHIFT 4 | ||
959 | #define EUR_CR_BIF_BANK1_INDEX_TA_SIGNED 0 | ||
960 | #define EUR_CR_BIF_BANK1_INDEX_3D_MASK 0x0000F000U | ||
961 | #define EUR_CR_BIF_BANK1_INDEX_3D_SHIFT 12 | ||
962 | #define EUR_CR_BIF_BANK1_INDEX_3D_SIGNED 0 | ||
963 | #define EUR_CR_BIF_DIR_LIST_BASE0 0x0C84 | ||
964 | #define EUR_CR_BIF_DIR_LIST_BASE0_ADDR_MASK 0xFFFFF000U | ||
965 | #define EUR_CR_BIF_DIR_LIST_BASE0_ADDR_SHIFT 12 | ||
966 | #define EUR_CR_BIF_DIR_LIST_BASE0_ADDR_SIGNED 0 | ||
967 | #define EUR_CR_BIF_TA_REQ_BASE 0x0C90 | ||
968 | #define EUR_CR_BIF_TA_REQ_BASE_ADDR_MASK 0xFFF00000U | ||
969 | #define EUR_CR_BIF_TA_REQ_BASE_ADDR_SHIFT 20 | ||
970 | #define EUR_CR_BIF_TA_REQ_BASE_ADDR_SIGNED 0 | ||
971 | #define EUR_CR_BIF_MEM_REQ_STAT 0x0CA8 | ||
972 | #define EUR_CR_BIF_MEM_REQ_STAT_READS_MASK 0x000000FFU | ||
973 | #define EUR_CR_BIF_MEM_REQ_STAT_READS_SHIFT 0 | ||
974 | #define EUR_CR_BIF_MEM_REQ_STAT_READS_SIGNED 0 | ||
975 | #define EUR_CR_BIF_3D_REQ_BASE 0x0CAC | ||
976 | #define EUR_CR_BIF_3D_REQ_BASE_ADDR_MASK 0xFFF00000U | ||
977 | #define EUR_CR_BIF_3D_REQ_BASE_ADDR_SHIFT 20 | ||
978 | #define EUR_CR_BIF_3D_REQ_BASE_ADDR_SIGNED 0 | ||
979 | #define EUR_CR_BIF_ZLS_REQ_BASE 0x0CB0 | ||
980 | #define EUR_CR_BIF_ZLS_REQ_BASE_ADDR_MASK 0xFFF00000U | ||
981 | #define EUR_CR_BIF_ZLS_REQ_BASE_ADDR_SHIFT 20 | ||
982 | #define EUR_CR_BIF_ZLS_REQ_BASE_ADDR_SIGNED 0 | ||
983 | #define EUR_CR_BIF_BANK_STATUS 0x0CB4 | ||
984 | #define EUR_CR_BIF_BANK_STATUS_3D_CURRENT_BANK_MASK 0x00000001U | ||
985 | #define EUR_CR_BIF_BANK_STATUS_3D_CURRENT_BANK_SHIFT 0 | ||
986 | #define EUR_CR_BIF_BANK_STATUS_3D_CURRENT_BANK_SIGNED 0 | ||
987 | #define EUR_CR_BIF_BANK_STATUS_TA_CURRENT_BANK_MASK 0x00000002U | ||
988 | #define EUR_CR_BIF_BANK_STATUS_TA_CURRENT_BANK_SHIFT 1 | ||
989 | #define EUR_CR_BIF_BANK_STATUS_TA_CURRENT_BANK_SIGNED 0 | ||
990 | #define EUR_CR_2D_BLIT_STATUS 0x0E04 | ||
991 | #define EUR_CR_2D_BLIT_STATUS_COMPLETE_MASK 0x00FFFFFFU | ||
992 | #define EUR_CR_2D_BLIT_STATUS_COMPLETE_SHIFT 0 | ||
993 | #define EUR_CR_2D_BLIT_STATUS_COMPLETE_SIGNED 0 | ||
994 | #define EUR_CR_2D_BLIT_STATUS_BUSY_MASK 0x01000000U | ||
995 | #define EUR_CR_2D_BLIT_STATUS_BUSY_SHIFT 24 | ||
996 | #define EUR_CR_2D_BLIT_STATUS_BUSY_SIGNED 0 | ||
997 | #define EUR_CR_2D_VIRTUAL_FIFO_0 0x0E10 | ||
998 | #define EUR_CR_2D_VIRTUAL_FIFO_0_ENABLE_MASK 0x00000001U | ||
999 | #define EUR_CR_2D_VIRTUAL_FIFO_0_ENABLE_SHIFT 0 | ||
1000 | #define EUR_CR_2D_VIRTUAL_FIFO_0_ENABLE_SIGNED 0 | ||
1001 | #define EUR_CR_2D_VIRTUAL_FIFO_0_FLOWRATE_MASK 0x0000000EU | ||
1002 | #define EUR_CR_2D_VIRTUAL_FIFO_0_FLOWRATE_SHIFT 1 | ||
1003 | #define EUR_CR_2D_VIRTUAL_FIFO_0_FLOWRATE_SIGNED 0 | ||
1004 | #define EUR_CR_2D_VIRTUAL_FIFO_0_FLOWRATE_DIV_MASK 0x00000FF0U | ||
1005 | #define EUR_CR_2D_VIRTUAL_FIFO_0_FLOWRATE_DIV_SHIFT 4 | ||
1006 | #define EUR_CR_2D_VIRTUAL_FIFO_0_FLOWRATE_DIV_SIGNED 0 | ||
1007 | #define EUR_CR_2D_VIRTUAL_FIFO_0_FLOWRATE_MUL_MASK 0x0000F000U | ||
1008 | #define EUR_CR_2D_VIRTUAL_FIFO_0_FLOWRATE_MUL_SHIFT 12 | ||
1009 | #define EUR_CR_2D_VIRTUAL_FIFO_0_FLOWRATE_MUL_SIGNED 0 | ||
1010 | #define EUR_CR_2D_VIRTUAL_FIFO_1 0x0E14 | ||
1011 | #define EUR_CR_2D_VIRTUAL_FIFO_1_MIN_ACC_MASK 0x00000FFFU | ||
1012 | #define EUR_CR_2D_VIRTUAL_FIFO_1_MIN_ACC_SHIFT 0 | ||
1013 | #define EUR_CR_2D_VIRTUAL_FIFO_1_MIN_ACC_SIGNED 0 | ||
1014 | #define EUR_CR_2D_VIRTUAL_FIFO_1_MAX_ACC_MASK 0x00FFF000U | ||
1015 | #define EUR_CR_2D_VIRTUAL_FIFO_1_MAX_ACC_SHIFT 12 | ||
1016 | #define EUR_CR_2D_VIRTUAL_FIFO_1_MAX_ACC_SIGNED 0 | ||
1017 | #define EUR_CR_2D_VIRTUAL_FIFO_1_MIN_METRIC_MASK 0xFF000000U | ||
1018 | #define EUR_CR_2D_VIRTUAL_FIFO_1_MIN_METRIC_SHIFT 24 | ||
1019 | #define EUR_CR_2D_VIRTUAL_FIFO_1_MIN_METRIC_SIGNED 0 | ||
1020 | #define EUR_CR_BREAKPOINT0_START 0x0F44 | ||
1021 | #define EUR_CR_BREAKPOINT0_START_ADDRESS_MASK 0xFFFFFFF0U | ||
1022 | #define EUR_CR_BREAKPOINT0_START_ADDRESS_SHIFT 4 | ||
1023 | #define EUR_CR_BREAKPOINT0_START_ADDRESS_SIGNED 0 | ||
1024 | #define EUR_CR_BREAKPOINT0_END 0x0F48 | ||
1025 | #define EUR_CR_BREAKPOINT0_END_ADDRESS_MASK 0xFFFFFFF0U | ||
1026 | #define EUR_CR_BREAKPOINT0_END_ADDRESS_SHIFT 4 | ||
1027 | #define EUR_CR_BREAKPOINT0_END_ADDRESS_SIGNED 0 | ||
1028 | #define EUR_CR_BREAKPOINT0 0x0F4C | ||
1029 | #define EUR_CR_BREAKPOINT0_MASK_DM_MASK 0x00000038U | ||
1030 | #define EUR_CR_BREAKPOINT0_MASK_DM_SHIFT 3 | ||
1031 | #define EUR_CR_BREAKPOINT0_MASK_DM_SIGNED 0 | ||
1032 | #define EUR_CR_BREAKPOINT0_CTRL_TRAPENABLE_MASK 0x00000004U | ||
1033 | #define EUR_CR_BREAKPOINT0_CTRL_TRAPENABLE_SHIFT 2 | ||
1034 | #define EUR_CR_BREAKPOINT0_CTRL_TRAPENABLE_SIGNED 0 | ||
1035 | #define EUR_CR_BREAKPOINT0_CTRL_WENABLE_MASK 0x00000002U | ||
1036 | #define EUR_CR_BREAKPOINT0_CTRL_WENABLE_SHIFT 1 | ||
1037 | #define EUR_CR_BREAKPOINT0_CTRL_WENABLE_SIGNED 0 | ||
1038 | #define EUR_CR_BREAKPOINT0_CTRL_RENABLE_MASK 0x00000001U | ||
1039 | #define EUR_CR_BREAKPOINT0_CTRL_RENABLE_SHIFT 0 | ||
1040 | #define EUR_CR_BREAKPOINT0_CTRL_RENABLE_SIGNED 0 | ||
1041 | #define EUR_CR_BREAKPOINT1_START 0x0F50 | ||
1042 | #define EUR_CR_BREAKPOINT1_START_ADDRESS_MASK 0xFFFFFFF0U | ||
1043 | #define EUR_CR_BREAKPOINT1_START_ADDRESS_SHIFT 4 | ||
1044 | #define EUR_CR_BREAKPOINT1_START_ADDRESS_SIGNED 0 | ||
1045 | #define EUR_CR_BREAKPOINT1_END 0x0F54 | ||
1046 | #define EUR_CR_BREAKPOINT1_END_ADDRESS_MASK 0xFFFFFFF0U | ||
1047 | #define EUR_CR_BREAKPOINT1_END_ADDRESS_SHIFT 4 | ||
1048 | #define EUR_CR_BREAKPOINT1_END_ADDRESS_SIGNED 0 | ||
1049 | #define EUR_CR_BREAKPOINT1 0x0F58 | ||
1050 | #define EUR_CR_BREAKPOINT1_MASK_DM_MASK 0x00000038U | ||
1051 | #define EUR_CR_BREAKPOINT1_MASK_DM_SHIFT 3 | ||
1052 | #define EUR_CR_BREAKPOINT1_MASK_DM_SIGNED 0 | ||
1053 | #define EUR_CR_BREAKPOINT1_CTRL_TRAPENABLE_MASK 0x00000004U | ||
1054 | #define EUR_CR_BREAKPOINT1_CTRL_TRAPENABLE_SHIFT 2 | ||
1055 | #define EUR_CR_BREAKPOINT1_CTRL_TRAPENABLE_SIGNED 0 | ||
1056 | #define EUR_CR_BREAKPOINT1_CTRL_WENABLE_MASK 0x00000002U | ||
1057 | #define EUR_CR_BREAKPOINT1_CTRL_WENABLE_SHIFT 1 | ||
1058 | #define EUR_CR_BREAKPOINT1_CTRL_WENABLE_SIGNED 0 | ||
1059 | #define EUR_CR_BREAKPOINT1_CTRL_RENABLE_MASK 0x00000001U | ||
1060 | #define EUR_CR_BREAKPOINT1_CTRL_RENABLE_SHIFT 0 | ||
1061 | #define EUR_CR_BREAKPOINT1_CTRL_RENABLE_SIGNED 0 | ||
1062 | #define EUR_CR_BREAKPOINT2_START 0x0F5C | ||
1063 | #define EUR_CR_BREAKPOINT2_START_ADDRESS_MASK 0xFFFFFFF0U | ||
1064 | #define EUR_CR_BREAKPOINT2_START_ADDRESS_SHIFT 4 | ||
1065 | #define EUR_CR_BREAKPOINT2_START_ADDRESS_SIGNED 0 | ||
1066 | #define EUR_CR_BREAKPOINT2_END 0x0F60 | ||
1067 | #define EUR_CR_BREAKPOINT2_END_ADDRESS_MASK 0xFFFFFFF0U | ||
1068 | #define EUR_CR_BREAKPOINT2_END_ADDRESS_SHIFT 4 | ||
1069 | #define EUR_CR_BREAKPOINT2_END_ADDRESS_SIGNED 0 | ||
1070 | #define EUR_CR_BREAKPOINT2 0x0F64 | ||
1071 | #define EUR_CR_BREAKPOINT2_MASK_DM_MASK 0x00000038U | ||
1072 | #define EUR_CR_BREAKPOINT2_MASK_DM_SHIFT 3 | ||
1073 | #define EUR_CR_BREAKPOINT2_MASK_DM_SIGNED 0 | ||
1074 | #define EUR_CR_BREAKPOINT2_CTRL_TRAPENABLE_MASK 0x00000004U | ||
1075 | #define EUR_CR_BREAKPOINT2_CTRL_TRAPENABLE_SHIFT 2 | ||
1076 | #define EUR_CR_BREAKPOINT2_CTRL_TRAPENABLE_SIGNED 0 | ||
1077 | #define EUR_CR_BREAKPOINT2_CTRL_WENABLE_MASK 0x00000002U | ||
1078 | #define EUR_CR_BREAKPOINT2_CTRL_WENABLE_SHIFT 1 | ||
1079 | #define EUR_CR_BREAKPOINT2_CTRL_WENABLE_SIGNED 0 | ||
1080 | #define EUR_CR_BREAKPOINT2_CTRL_RENABLE_MASK 0x00000001U | ||
1081 | #define EUR_CR_BREAKPOINT2_CTRL_RENABLE_SHIFT 0 | ||
1082 | #define EUR_CR_BREAKPOINT2_CTRL_RENABLE_SIGNED 0 | ||
1083 | #define EUR_CR_BREAKPOINT3_START 0x0F68 | ||
1084 | #define EUR_CR_BREAKPOINT3_START_ADDRESS_MASK 0xFFFFFFF0U | ||
1085 | #define EUR_CR_BREAKPOINT3_START_ADDRESS_SHIFT 4 | ||
1086 | #define EUR_CR_BREAKPOINT3_START_ADDRESS_SIGNED 0 | ||
1087 | #define EUR_CR_BREAKPOINT3_END 0x0F6C | ||
1088 | #define EUR_CR_BREAKPOINT3_END_ADDRESS_MASK 0xFFFFFFF0U | ||
1089 | #define EUR_CR_BREAKPOINT3_END_ADDRESS_SHIFT 4 | ||
1090 | #define EUR_CR_BREAKPOINT3_END_ADDRESS_SIGNED 0 | ||
1091 | #define EUR_CR_BREAKPOINT3 0x0F70 | ||
1092 | #define EUR_CR_BREAKPOINT3_MASK_DM_MASK 0x00000038U | ||
1093 | #define EUR_CR_BREAKPOINT3_MASK_DM_SHIFT 3 | ||
1094 | #define EUR_CR_BREAKPOINT3_MASK_DM_SIGNED 0 | ||
1095 | #define EUR_CR_BREAKPOINT3_CTRL_TRAPENABLE_MASK 0x00000004U | ||
1096 | #define EUR_CR_BREAKPOINT3_CTRL_TRAPENABLE_SHIFT 2 | ||
1097 | #define EUR_CR_BREAKPOINT3_CTRL_TRAPENABLE_SIGNED 0 | ||
1098 | #define EUR_CR_BREAKPOINT3_CTRL_WENABLE_MASK 0x00000002U | ||
1099 | #define EUR_CR_BREAKPOINT3_CTRL_WENABLE_SHIFT 1 | ||
1100 | #define EUR_CR_BREAKPOINT3_CTRL_WENABLE_SIGNED 0 | ||
1101 | #define EUR_CR_BREAKPOINT3_CTRL_RENABLE_MASK 0x00000001U | ||
1102 | #define EUR_CR_BREAKPOINT3_CTRL_RENABLE_SHIFT 0 | ||
1103 | #define EUR_CR_BREAKPOINT3_CTRL_RENABLE_SIGNED 0 | ||
1104 | #define EUR_CR_BREAKPOINT_READ 0x0F74 | ||
1105 | #define EUR_CR_BREAKPOINT_READ_ADDRESS_MASK 0xFFFFFFF0U | ||
1106 | #define EUR_CR_BREAKPOINT_READ_ADDRESS_SHIFT 4 | ||
1107 | #define EUR_CR_BREAKPOINT_READ_ADDRESS_SIGNED 0 | ||
1108 | #define EUR_CR_PARTITION_BREAKPOINT_TRAP 0x0F78 | ||
1109 | #define EUR_CR_PARTITION_BREAKPOINT_TRAP_CONTINUE_MASK 0x00000002U | ||
1110 | #define EUR_CR_PARTITION_BREAKPOINT_TRAP_CONTINUE_SHIFT 1 | ||
1111 | #define EUR_CR_PARTITION_BREAKPOINT_TRAP_CONTINUE_SIGNED 0 | ||
1112 | #define EUR_CR_PARTITION_BREAKPOINT_TRAP_WRNOTIFY_MASK 0x00000001U | ||
1113 | #define EUR_CR_PARTITION_BREAKPOINT_TRAP_WRNOTIFY_SHIFT 0 | ||
1114 | #define EUR_CR_PARTITION_BREAKPOINT_TRAP_WRNOTIFY_SIGNED 0 | ||
1115 | #define EUR_CR_PARTITION_BREAKPOINT 0x0F7C | ||
1116 | #define EUR_CR_PARTITION_BREAKPOINT_MODULE_ID_MASK 0x000003C0U | ||
1117 | #define EUR_CR_PARTITION_BREAKPOINT_MODULE_ID_SHIFT 6 | ||
1118 | #define EUR_CR_PARTITION_BREAKPOINT_MODULE_ID_SIGNED 0 | ||
1119 | #define EUR_CR_PARTITION_BREAKPOINT_ID_MASK 0x00000030U | ||
1120 | #define EUR_CR_PARTITION_BREAKPOINT_ID_SHIFT 4 | ||
1121 | #define EUR_CR_PARTITION_BREAKPOINT_ID_SIGNED 0 | ||
1122 | #define EUR_CR_PARTITION_BREAKPOINT_UNTRAPPED_MASK 0x00000008U | ||
1123 | #define EUR_CR_PARTITION_BREAKPOINT_UNTRAPPED_SHIFT 3 | ||
1124 | #define EUR_CR_PARTITION_BREAKPOINT_UNTRAPPED_SIGNED 0 | ||
1125 | #define EUR_CR_PARTITION_BREAKPOINT_TRAPPED_MASK 0x00000004U | ||
1126 | #define EUR_CR_PARTITION_BREAKPOINT_TRAPPED_SHIFT 2 | ||
1127 | #define EUR_CR_PARTITION_BREAKPOINT_TRAPPED_SIGNED 0 | ||
1128 | #define EUR_CR_PARTITION_BREAKPOINT_TRAP_INFO0 0x0F80 | ||
1129 | #define EUR_CR_PARTITION_BREAKPOINT_TRAP_INFO0_ADDRESS_MASK 0xFFFFFFF0U | ||
1130 | #define EUR_CR_PARTITION_BREAKPOINT_TRAP_INFO0_ADDRESS_SHIFT 4 | ||
1131 | #define EUR_CR_PARTITION_BREAKPOINT_TRAP_INFO0_ADDRESS_SIGNED 0 | ||
1132 | #define EUR_CR_PARTITION_BREAKPOINT_TRAP_INFO1 0x0F84 | ||
1133 | #define EUR_CR_PARTITION_BREAKPOINT_TRAP_INFO1_SIZE_MASK 0x00007C00U | ||
1134 | #define EUR_CR_PARTITION_BREAKPOINT_TRAP_INFO1_SIZE_SHIFT 10 | ||
1135 | #define EUR_CR_PARTITION_BREAKPOINT_TRAP_INFO1_SIZE_SIGNED 0 | ||
1136 | #define EUR_CR_PARTITION_BREAKPOINT_TRAP_INFO1_NUMBER_MASK 0x00000300U | ||
1137 | #define EUR_CR_PARTITION_BREAKPOINT_TRAP_INFO1_NUMBER_SHIFT 8 | ||
1138 | #define EUR_CR_PARTITION_BREAKPOINT_TRAP_INFO1_NUMBER_SIGNED 0 | ||
1139 | #define EUR_CR_PARTITION_BREAKPOINT_TRAP_INFO1_TAG_MASK 0x000000F8U | ||
1140 | #define EUR_CR_PARTITION_BREAKPOINT_TRAP_INFO1_TAG_SHIFT 3 | ||
1141 | #define EUR_CR_PARTITION_BREAKPOINT_TRAP_INFO1_TAG_SIGNED 0 | ||
1142 | #define EUR_CR_PARTITION_BREAKPOINT_TRAP_INFO1_DATA_MASTER_MASK 0x00000006U | ||
1143 | #define EUR_CR_PARTITION_BREAKPOINT_TRAP_INFO1_DATA_MASTER_SHIFT 1 | ||
1144 | #define EUR_CR_PARTITION_BREAKPOINT_TRAP_INFO1_DATA_MASTER_SIGNED 0 | ||
1145 | #define EUR_CR_PARTITION_BREAKPOINT_TRAP_INFO1_RNW_MASK 0x00000001U | ||
1146 | #define EUR_CR_PARTITION_BREAKPOINT_TRAP_INFO1_RNW_SHIFT 0 | ||
1147 | #define EUR_CR_PARTITION_BREAKPOINT_TRAP_INFO1_RNW_SIGNED 0 | ||
1148 | #define EUR_CR_USE_CODE_BASE_0 0x0A0C | ||
1149 | #define EUR_CR_USE_CODE_BASE_ADDR_00_MASK 0x03FFFFFFU | ||
1150 | #define EUR_CR_USE_CODE_BASE_ADDR_00_SHIFT 0 | ||
1151 | #define EUR_CR_USE_CODE_BASE_ADDR_00_SIGNED 0 | ||
1152 | #define EUR_CR_USE_CODE_BASE_DM_00_MASK 0x0C000000U | ||
1153 | #define EUR_CR_USE_CODE_BASE_DM_00_SHIFT 26 | ||
1154 | #define EUR_CR_USE_CODE_BASE_DM_00_SIGNED 0 | ||
1155 | #define EUR_CR_USE_CODE_BASE_1 0x0A10 | ||
1156 | #define EUR_CR_USE_CODE_BASE_ADDR_01_MASK 0x03FFFFFFU | ||
1157 | #define EUR_CR_USE_CODE_BASE_ADDR_01_SHIFT 0 | ||
1158 | #define EUR_CR_USE_CODE_BASE_ADDR_01_SIGNED 0 | ||
1159 | #define EUR_CR_USE_CODE_BASE_DM_01_MASK 0x0C000000U | ||
1160 | #define EUR_CR_USE_CODE_BASE_DM_01_SHIFT 26 | ||
1161 | #define EUR_CR_USE_CODE_BASE_DM_01_SIGNED 0 | ||
1162 | #define EUR_CR_USE_CODE_BASE_2 0x0A14 | ||
1163 | #define EUR_CR_USE_CODE_BASE_ADDR_02_MASK 0x03FFFFFFU | ||
1164 | #define EUR_CR_USE_CODE_BASE_ADDR_02_SHIFT 0 | ||
1165 | #define EUR_CR_USE_CODE_BASE_ADDR_02_SIGNED 0 | ||
1166 | #define EUR_CR_USE_CODE_BASE_DM_02_MASK 0x0C000000U | ||
1167 | #define EUR_CR_USE_CODE_BASE_DM_02_SHIFT 26 | ||
1168 | #define EUR_CR_USE_CODE_BASE_DM_02_SIGNED 0 | ||
1169 | #define EUR_CR_USE_CODE_BASE_3 0x0A18 | ||
1170 | #define EUR_CR_USE_CODE_BASE_ADDR_03_MASK 0x03FFFFFFU | ||
1171 | #define EUR_CR_USE_CODE_BASE_ADDR_03_SHIFT 0 | ||
1172 | #define EUR_CR_USE_CODE_BASE_ADDR_03_SIGNED 0 | ||
1173 | #define EUR_CR_USE_CODE_BASE_DM_03_MASK 0x0C000000U | ||
1174 | #define EUR_CR_USE_CODE_BASE_DM_03_SHIFT 26 | ||
1175 | #define EUR_CR_USE_CODE_BASE_DM_03_SIGNED 0 | ||
1176 | #define EUR_CR_USE_CODE_BASE_4 0x0A1C | ||
1177 | #define EUR_CR_USE_CODE_BASE_ADDR_04_MASK 0x03FFFFFFU | ||
1178 | #define EUR_CR_USE_CODE_BASE_ADDR_04_SHIFT 0 | ||
1179 | #define EUR_CR_USE_CODE_BASE_ADDR_04_SIGNED 0 | ||
1180 | #define EUR_CR_USE_CODE_BASE_DM_04_MASK 0x0C000000U | ||
1181 | #define EUR_CR_USE_CODE_BASE_DM_04_SHIFT 26 | ||
1182 | #define EUR_CR_USE_CODE_BASE_DM_04_SIGNED 0 | ||
1183 | #define EUR_CR_USE_CODE_BASE_5 0x0A20 | ||
1184 | #define EUR_CR_USE_CODE_BASE_ADDR_05_MASK 0x03FFFFFFU | ||
1185 | #define EUR_CR_USE_CODE_BASE_ADDR_05_SHIFT 0 | ||
1186 | #define EUR_CR_USE_CODE_BASE_ADDR_05_SIGNED 0 | ||
1187 | #define EUR_CR_USE_CODE_BASE_DM_05_MASK 0x0C000000U | ||
1188 | #define EUR_CR_USE_CODE_BASE_DM_05_SHIFT 26 | ||
1189 | #define EUR_CR_USE_CODE_BASE_DM_05_SIGNED 0 | ||
1190 | #define EUR_CR_USE_CODE_BASE_6 0x0A24 | ||
1191 | #define EUR_CR_USE_CODE_BASE_ADDR_06_MASK 0x03FFFFFFU | ||
1192 | #define EUR_CR_USE_CODE_BASE_ADDR_06_SHIFT 0 | ||
1193 | #define EUR_CR_USE_CODE_BASE_ADDR_06_SIGNED 0 | ||
1194 | #define EUR_CR_USE_CODE_BASE_DM_06_MASK 0x0C000000U | ||
1195 | #define EUR_CR_USE_CODE_BASE_DM_06_SHIFT 26 | ||
1196 | #define EUR_CR_USE_CODE_BASE_DM_06_SIGNED 0 | ||
1197 | #define EUR_CR_USE_CODE_BASE_7 0x0A28 | ||
1198 | #define EUR_CR_USE_CODE_BASE_ADDR_07_MASK 0x03FFFFFFU | ||
1199 | #define EUR_CR_USE_CODE_BASE_ADDR_07_SHIFT 0 | ||
1200 | #define EUR_CR_USE_CODE_BASE_ADDR_07_SIGNED 0 | ||
1201 | #define EUR_CR_USE_CODE_BASE_DM_07_MASK 0x0C000000U | ||
1202 | #define EUR_CR_USE_CODE_BASE_DM_07_SHIFT 26 | ||
1203 | #define EUR_CR_USE_CODE_BASE_DM_07_SIGNED 0 | ||
1204 | #define EUR_CR_USE_CODE_BASE_8 0x0A2C | ||
1205 | #define EUR_CR_USE_CODE_BASE_ADDR_08_MASK 0x03FFFFFFU | ||
1206 | #define EUR_CR_USE_CODE_BASE_ADDR_08_SHIFT 0 | ||
1207 | #define EUR_CR_USE_CODE_BASE_ADDR_08_SIGNED 0 | ||
1208 | #define EUR_CR_USE_CODE_BASE_DM_08_MASK 0x0C000000U | ||
1209 | #define EUR_CR_USE_CODE_BASE_DM_08_SHIFT 26 | ||
1210 | #define EUR_CR_USE_CODE_BASE_DM_08_SIGNED 0 | ||
1211 | #define EUR_CR_USE_CODE_BASE_9 0x0A30 | ||
1212 | #define EUR_CR_USE_CODE_BASE_ADDR_09_MASK 0x03FFFFFFU | ||
1213 | #define EUR_CR_USE_CODE_BASE_ADDR_09_SHIFT 0 | ||
1214 | #define EUR_CR_USE_CODE_BASE_ADDR_09_SIGNED 0 | ||
1215 | #define EUR_CR_USE_CODE_BASE_DM_09_MASK 0x0C000000U | ||
1216 | #define EUR_CR_USE_CODE_BASE_DM_09_SHIFT 26 | ||
1217 | #define EUR_CR_USE_CODE_BASE_DM_09_SIGNED 0 | ||
1218 | #define EUR_CR_USE_CODE_BASE_10 0x0A34 | ||
1219 | #define EUR_CR_USE_CODE_BASE_ADDR_10_MASK 0x03FFFFFFU | ||
1220 | #define EUR_CR_USE_CODE_BASE_ADDR_10_SHIFT 0 | ||
1221 | #define EUR_CR_USE_CODE_BASE_ADDR_10_SIGNED 0 | ||
1222 | #define EUR_CR_USE_CODE_BASE_DM_10_MASK 0x0C000000U | ||
1223 | #define EUR_CR_USE_CODE_BASE_DM_10_SHIFT 26 | ||
1224 | #define EUR_CR_USE_CODE_BASE_DM_10_SIGNED 0 | ||
1225 | #define EUR_CR_USE_CODE_BASE_11 0x0A38 | ||
1226 | #define EUR_CR_USE_CODE_BASE_ADDR_11_MASK 0x03FFFFFFU | ||
1227 | #define EUR_CR_USE_CODE_BASE_ADDR_11_SHIFT 0 | ||
1228 | #define EUR_CR_USE_CODE_BASE_ADDR_11_SIGNED 0 | ||
1229 | #define EUR_CR_USE_CODE_BASE_DM_11_MASK 0x0C000000U | ||
1230 | #define EUR_CR_USE_CODE_BASE_DM_11_SHIFT 26 | ||
1231 | #define EUR_CR_USE_CODE_BASE_DM_11_SIGNED 0 | ||
1232 | #define EUR_CR_USE_CODE_BASE_12 0x0A3C | ||
1233 | #define EUR_CR_USE_CODE_BASE_ADDR_12_MASK 0x03FFFFFFU | ||
1234 | #define EUR_CR_USE_CODE_BASE_ADDR_12_SHIFT 0 | ||
1235 | #define EUR_CR_USE_CODE_BASE_ADDR_12_SIGNED 0 | ||
1236 | #define EUR_CR_USE_CODE_BASE_DM_12_MASK 0x0C000000U | ||
1237 | #define EUR_CR_USE_CODE_BASE_DM_12_SHIFT 26 | ||
1238 | #define EUR_CR_USE_CODE_BASE_DM_12_SIGNED 0 | ||
1239 | #define EUR_CR_USE_CODE_BASE_13 0x0A40 | ||
1240 | #define EUR_CR_USE_CODE_BASE_ADDR_13_MASK 0x03FFFFFFU | ||
1241 | #define EUR_CR_USE_CODE_BASE_ADDR_13_SHIFT 0 | ||
1242 | #define EUR_CR_USE_CODE_BASE_ADDR_13_SIGNED 0 | ||
1243 | #define EUR_CR_USE_CODE_BASE_DM_13_MASK 0x0C000000U | ||
1244 | #define EUR_CR_USE_CODE_BASE_DM_13_SHIFT 26 | ||
1245 | #define EUR_CR_USE_CODE_BASE_DM_13_SIGNED 0 | ||
1246 | #define EUR_CR_USE_CODE_BASE_14 0x0A44 | ||
1247 | #define EUR_CR_USE_CODE_BASE_ADDR_14_MASK 0x03FFFFFFU | ||
1248 | #define EUR_CR_USE_CODE_BASE_ADDR_14_SHIFT 0 | ||
1249 | #define EUR_CR_USE_CODE_BASE_ADDR_14_SIGNED 0 | ||
1250 | #define EUR_CR_USE_CODE_BASE_DM_14_MASK 0x0C000000U | ||
1251 | #define EUR_CR_USE_CODE_BASE_DM_14_SHIFT 26 | ||
1252 | #define EUR_CR_USE_CODE_BASE_DM_14_SIGNED 0 | ||
1253 | #define EUR_CR_USE_CODE_BASE_15 0x0A48 | ||
1254 | #define EUR_CR_USE_CODE_BASE_ADDR_15_MASK 0x03FFFFFFU | ||
1255 | #define EUR_CR_USE_CODE_BASE_ADDR_15_SHIFT 0 | ||
1256 | #define EUR_CR_USE_CODE_BASE_ADDR_15_SIGNED 0 | ||
1257 | #define EUR_CR_USE_CODE_BASE_DM_15_MASK 0x0C000000U | ||
1258 | #define EUR_CR_USE_CODE_BASE_DM_15_SHIFT 26 | ||
1259 | #define EUR_CR_USE_CODE_BASE_DM_15_SIGNED 0 | ||
1260 | #define EUR_CR_PIPE0_BREAKPOINT_TRAP 0x0F88 | ||
1261 | #define EUR_CR_PIPE0_BREAKPOINT_TRAP_CONTINUE_MASK 0x00000002U | ||
1262 | #define EUR_CR_PIPE0_BREAKPOINT_TRAP_CONTINUE_SHIFT 1 | ||
1263 | #define EUR_CR_PIPE0_BREAKPOINT_TRAP_CONTINUE_SIGNED 0 | ||
1264 | #define EUR_CR_PIPE0_BREAKPOINT_TRAP_WRNOTIFY_MASK 0x00000001U | ||
1265 | #define EUR_CR_PIPE0_BREAKPOINT_TRAP_WRNOTIFY_SHIFT 0 | ||
1266 | #define EUR_CR_PIPE0_BREAKPOINT_TRAP_WRNOTIFY_SIGNED 0 | ||
1267 | #define EUR_CR_PIPE0_BREAKPOINT 0x0F8C | ||
1268 | #define EUR_CR_PIPE0_BREAKPOINT_MODULE_ID_MASK 0x000003C0U | ||
1269 | #define EUR_CR_PIPE0_BREAKPOINT_MODULE_ID_SHIFT 6 | ||
1270 | #define EUR_CR_PIPE0_BREAKPOINT_MODULE_ID_SIGNED 0 | ||
1271 | #define EUR_CR_PIPE0_BREAKPOINT_ID_MASK 0x00000030U | ||
1272 | #define EUR_CR_PIPE0_BREAKPOINT_ID_SHIFT 4 | ||
1273 | #define EUR_CR_PIPE0_BREAKPOINT_ID_SIGNED 0 | ||
1274 | #define EUR_CR_PIPE0_BREAKPOINT_UNTRAPPED_MASK 0x00000008U | ||
1275 | #define EUR_CR_PIPE0_BREAKPOINT_UNTRAPPED_SHIFT 3 | ||
1276 | #define EUR_CR_PIPE0_BREAKPOINT_UNTRAPPED_SIGNED 0 | ||
1277 | #define EUR_CR_PIPE0_BREAKPOINT_TRAPPED_MASK 0x00000004U | ||
1278 | #define EUR_CR_PIPE0_BREAKPOINT_TRAPPED_SHIFT 2 | ||
1279 | #define EUR_CR_PIPE0_BREAKPOINT_TRAPPED_SIGNED 0 | ||
1280 | #define EUR_CR_PIPE0_BREAKPOINT_TRAP_INFO0 0x0F90 | ||
1281 | #define EUR_CR_PIPE0_BREAKPOINT_TRAP_INFO0_ADDRESS_MASK 0xFFFFFFF0U | ||
1282 | #define EUR_CR_PIPE0_BREAKPOINT_TRAP_INFO0_ADDRESS_SHIFT 4 | ||
1283 | #define EUR_CR_PIPE0_BREAKPOINT_TRAP_INFO0_ADDRESS_SIGNED 0 | ||
1284 | #define EUR_CR_PIPE0_BREAKPOINT_TRAP_INFO1 0x0F94 | ||
1285 | #define EUR_CR_PIPE0_BREAKPOINT_TRAP_INFO1_SIZE_MASK 0x00007C00U | ||
1286 | #define EUR_CR_PIPE0_BREAKPOINT_TRAP_INFO1_SIZE_SHIFT 10 | ||
1287 | #define EUR_CR_PIPE0_BREAKPOINT_TRAP_INFO1_SIZE_SIGNED 0 | ||
1288 | #define EUR_CR_PIPE0_BREAKPOINT_TRAP_INFO1_NUMBER_MASK 0x00000300U | ||
1289 | #define EUR_CR_PIPE0_BREAKPOINT_TRAP_INFO1_NUMBER_SHIFT 8 | ||
1290 | #define EUR_CR_PIPE0_BREAKPOINT_TRAP_INFO1_NUMBER_SIGNED 0 | ||
1291 | #define EUR_CR_PIPE0_BREAKPOINT_TRAP_INFO1_TAG_MASK 0x000000F8U | ||
1292 | #define EUR_CR_PIPE0_BREAKPOINT_TRAP_INFO1_TAG_SHIFT 3 | ||
1293 | #define EUR_CR_PIPE0_BREAKPOINT_TRAP_INFO1_TAG_SIGNED 0 | ||
1294 | #define EUR_CR_PIPE0_BREAKPOINT_TRAP_INFO1_DATA_MASTER_MASK 0x00000006U | ||
1295 | #define EUR_CR_PIPE0_BREAKPOINT_TRAP_INFO1_DATA_MASTER_SHIFT 1 | ||
1296 | #define EUR_CR_PIPE0_BREAKPOINT_TRAP_INFO1_DATA_MASTER_SIGNED 0 | ||
1297 | #define EUR_CR_PIPE0_BREAKPOINT_TRAP_INFO1_RNW_MASK 0x00000001U | ||
1298 | #define EUR_CR_PIPE0_BREAKPOINT_TRAP_INFO1_RNW_SHIFT 0 | ||
1299 | #define EUR_CR_PIPE0_BREAKPOINT_TRAP_INFO1_RNW_SIGNED 0 | ||
1300 | #define EUR_CR_PIPE1_BREAKPOINT_TRAP 0x0F98 | ||
1301 | #define EUR_CR_PIPE1_BREAKPOINT_TRAP_CONTINUE_MASK 0x00000002U | ||
1302 | #define EUR_CR_PIPE1_BREAKPOINT_TRAP_CONTINUE_SHIFT 1 | ||
1303 | #define EUR_CR_PIPE1_BREAKPOINT_TRAP_CONTINUE_SIGNED 0 | ||
1304 | #define EUR_CR_PIPE1_BREAKPOINT_TRAP_WRNOTIFY_MASK 0x00000001U | ||
1305 | #define EUR_CR_PIPE1_BREAKPOINT_TRAP_WRNOTIFY_SHIFT 0 | ||
1306 | #define EUR_CR_PIPE1_BREAKPOINT_TRAP_WRNOTIFY_SIGNED 0 | ||
1307 | #define EUR_CR_PIPE1_BREAKPOINT 0x0F9C | ||
1308 | #define EUR_CR_PIPE1_BREAKPOINT_MODULE_ID_MASK 0x000003C0U | ||
1309 | #define EUR_CR_PIPE1_BREAKPOINT_MODULE_ID_SHIFT 6 | ||
1310 | #define EUR_CR_PIPE1_BREAKPOINT_MODULE_ID_SIGNED 0 | ||
1311 | #define EUR_CR_PIPE1_BREAKPOINT_ID_MASK 0x00000030U | ||
1312 | #define EUR_CR_PIPE1_BREAKPOINT_ID_SHIFT 4 | ||
1313 | #define EUR_CR_PIPE1_BREAKPOINT_ID_SIGNED 0 | ||
1314 | #define EUR_CR_PIPE1_BREAKPOINT_UNTRAPPED_MASK 0x00000008U | ||
1315 | #define EUR_CR_PIPE1_BREAKPOINT_UNTRAPPED_SHIFT 3 | ||
1316 | #define EUR_CR_PIPE1_BREAKPOINT_UNTRAPPED_SIGNED 0 | ||
1317 | #define EUR_CR_PIPE1_BREAKPOINT_TRAPPED_MASK 0x00000004U | ||
1318 | #define EUR_CR_PIPE1_BREAKPOINT_TRAPPED_SHIFT 2 | ||
1319 | #define EUR_CR_PIPE1_BREAKPOINT_TRAPPED_SIGNED 0 | ||
1320 | #define EUR_CR_PIPE1_BREAKPOINT_TRAP_INFO0 0x0FA0 | ||
1321 | #define EUR_CR_PIPE1_BREAKPOINT_TRAP_INFO0_ADDRESS_MASK 0xFFFFFFF0U | ||
1322 | #define EUR_CR_PIPE1_BREAKPOINT_TRAP_INFO0_ADDRESS_SHIFT 4 | ||
1323 | #define EUR_CR_PIPE1_BREAKPOINT_TRAP_INFO0_ADDRESS_SIGNED 0 | ||
1324 | #define EUR_CR_PIPE1_BREAKPOINT_TRAP_INFO1 0x0FA4 | ||
1325 | #define EUR_CR_PIPE1_BREAKPOINT_TRAP_INFO1_SIZE_MASK 0x00007C00U | ||
1326 | #define EUR_CR_PIPE1_BREAKPOINT_TRAP_INFO1_SIZE_SHIFT 10 | ||
1327 | #define EUR_CR_PIPE1_BREAKPOINT_TRAP_INFO1_SIZE_SIGNED 0 | ||
1328 | #define EUR_CR_PIPE1_BREAKPOINT_TRAP_INFO1_NUMBER_MASK 0x00000300U | ||
1329 | #define EUR_CR_PIPE1_BREAKPOINT_TRAP_INFO1_NUMBER_SHIFT 8 | ||
1330 | #define EUR_CR_PIPE1_BREAKPOINT_TRAP_INFO1_NUMBER_SIGNED 0 | ||
1331 | #define EUR_CR_PIPE1_BREAKPOINT_TRAP_INFO1_TAG_MASK 0x000000F8U | ||
1332 | #define EUR_CR_PIPE1_BREAKPOINT_TRAP_INFO1_TAG_SHIFT 3 | ||
1333 | #define EUR_CR_PIPE1_BREAKPOINT_TRAP_INFO1_TAG_SIGNED 0 | ||
1334 | #define EUR_CR_PIPE1_BREAKPOINT_TRAP_INFO1_DATA_MASTER_MASK 0x00000006U | ||
1335 | #define EUR_CR_PIPE1_BREAKPOINT_TRAP_INFO1_DATA_MASTER_SHIFT 1 | ||
1336 | #define EUR_CR_PIPE1_BREAKPOINT_TRAP_INFO1_DATA_MASTER_SIGNED 0 | ||
1337 | #define EUR_CR_PIPE1_BREAKPOINT_TRAP_INFO1_RNW_MASK 0x00000001U | ||
1338 | #define EUR_CR_PIPE1_BREAKPOINT_TRAP_INFO1_RNW_SHIFT 0 | ||
1339 | #define EUR_CR_PIPE1_BREAKPOINT_TRAP_INFO1_RNW_SIGNED 0 | ||
1340 | #define EUR_CR_USE_CODE_BASE(X) (0x0A0C + (4 * (X))) | ||
1341 | #define EUR_CR_USE_CODE_BASE_ADDR_MASK 0x03FFFFFFU | ||
1342 | #define EUR_CR_USE_CODE_BASE_ADDR_SHIFT 0 | ||
1343 | #define EUR_CR_USE_CODE_BASE_ADDR_SIGNED 0 | ||
1344 | #define EUR_CR_USE_CODE_BASE_DM_MASK 0x0C000000U | ||
1345 | #define EUR_CR_USE_CODE_BASE_DM_SHIFT 26 | ||
1346 | #define EUR_CR_USE_CODE_BASE_DM_SIGNED 0 | ||
1347 | #define EUR_CR_USE_CODE_BASE_SIZE_UINT32 16 | ||
1348 | #define EUR_CR_USE_CODE_BASE_NUM_ENTRIES 16 | ||
1349 | |||
1350 | #endif | ||
1351 | |||
diff --git a/drivers/gpu/pvr/sgx_bridge.h b/drivers/gpu/pvr/sgx_bridge.h index 10e59196ef9..3f43f76971e 100644 --- a/drivers/gpu/pvr/sgx_bridge.h +++ b/drivers/gpu/pvr/sgx_bridge.h | |||
@@ -27,7 +27,11 @@ | |||
27 | #if !defined(__SGX_BRIDGE_H__) | 27 | #if !defined(__SGX_BRIDGE_H__) |
28 | #define __SGX_BRIDGE_H__ | 28 | #define __SGX_BRIDGE_H__ |
29 | 29 | ||
30 | #if defined (SUPPORT_SID_INTERFACE) | ||
31 | #include "sgxapi.h" | ||
32 | #else | ||
30 | #include "sgxapi_km.h" | 33 | #include "sgxapi_km.h" |
34 | #endif | ||
31 | #include "sgxinfo.h" | 35 | #include "sgxinfo.h" |
32 | #include "pvr_bridge.h" | 36 | #include "pvr_bridge.h" |
33 | 37 | ||
@@ -106,8 +110,13 @@ typedef struct PVRSRV_BRIDGE_OUT_GETPHYSPAGEADDR | |||
106 | typedef struct PVRSRV_BRIDGE_IN_SGX_GETMMU_PDADDR_TAG | 110 | typedef struct PVRSRV_BRIDGE_IN_SGX_GETMMU_PDADDR_TAG |
107 | { | 111 | { |
108 | IMG_UINT32 ui32BridgeFlags; | 112 | IMG_UINT32 ui32BridgeFlags; |
113 | #if defined (SUPPORT_SID_INTERFACE) | ||
114 | IMG_SID hDevCookie; | ||
115 | IMG_SID hDevMemContext; | ||
116 | #else | ||
109 | IMG_HANDLE hDevCookie; | 117 | IMG_HANDLE hDevCookie; |
110 | IMG_HANDLE hDevMemContext; | 118 | IMG_HANDLE hDevMemContext; |
119 | #endif | ||
111 | }PVRSRV_BRIDGE_IN_SGX_GETMMU_PDADDR; | 120 | }PVRSRV_BRIDGE_IN_SGX_GETMMU_PDADDR; |
112 | 121 | ||
113 | 122 | ||
@@ -121,7 +130,11 @@ typedef struct PVRSRV_BRIDGE_OUT_SGX_GETMMU_PDADDR_TAG | |||
121 | typedef struct PVRSRV_BRIDGE_IN_GETCLIENTINFO_TAG | 130 | typedef struct PVRSRV_BRIDGE_IN_GETCLIENTINFO_TAG |
122 | { | 131 | { |
123 | IMG_UINT32 ui32BridgeFlags; | 132 | IMG_UINT32 ui32BridgeFlags; |
133 | #if defined (SUPPORT_SID_INTERFACE) | ||
134 | IMG_SID hDevCookie; | ||
135 | #else | ||
124 | IMG_HANDLE hDevCookie; | 136 | IMG_HANDLE hDevCookie; |
137 | #endif | ||
125 | }PVRSRV_BRIDGE_IN_GETCLIENTINFO; | 138 | }PVRSRV_BRIDGE_IN_GETCLIENTINFO; |
126 | 139 | ||
127 | 140 | ||
@@ -135,7 +148,11 @@ typedef struct PVRSRV_BRIDGE_OUT_GETINTERNALDEVINFO_TAG | |||
135 | typedef struct PVRSRV_BRIDGE_IN_GETINTERNALDEVINFO_TAG | 148 | typedef struct PVRSRV_BRIDGE_IN_GETINTERNALDEVINFO_TAG |
136 | { | 149 | { |
137 | IMG_UINT32 ui32BridgeFlags; | 150 | IMG_UINT32 ui32BridgeFlags; |
151 | #if defined (SUPPORT_SID_INTERFACE) | ||
152 | IMG_SID hDevCookie; | ||
153 | #else | ||
138 | IMG_HANDLE hDevCookie; | 154 | IMG_HANDLE hDevCookie; |
155 | #endif | ||
139 | }PVRSRV_BRIDGE_IN_GETINTERNALDEVINFO; | 156 | }PVRSRV_BRIDGE_IN_GETINTERNALDEVINFO; |
140 | 157 | ||
141 | 158 | ||
@@ -148,8 +165,12 @@ typedef struct PVRSRV_BRIDGE_OUT_GETCLIENTINFO_TAG | |||
148 | 165 | ||
149 | typedef struct PVRSRV_BRIDGE_IN_RELEASECLIENTINFO_TAG | 166 | typedef struct PVRSRV_BRIDGE_IN_RELEASECLIENTINFO_TAG |
150 | { | 167 | { |
151 | IMG_UINT32 ui32BridgeFlags; | 168 | IMG_UINT32 ui32BridgeFlags; |
152 | IMG_HANDLE hDevCookie; | 169 | #if defined (SUPPORT_SID_INTERFACE) |
170 | IMG_SID hDevCookie; | ||
171 | #else | ||
172 | IMG_HANDLE hDevCookie; | ||
173 | #endif | ||
153 | SGX_CLIENT_INFO sClientInfo; | 174 | SGX_CLIENT_INFO sClientInfo; |
154 | }PVRSRV_BRIDGE_IN_RELEASECLIENTINFO; | 175 | }PVRSRV_BRIDGE_IN_RELEASECLIENTINFO; |
155 | 176 | ||
@@ -157,14 +178,22 @@ typedef struct PVRSRV_BRIDGE_IN_RELEASECLIENTINFO_TAG | |||
157 | typedef struct PVRSRV_BRIDGE_IN_ISPBREAKPOLL_TAG | 178 | typedef struct PVRSRV_BRIDGE_IN_ISPBREAKPOLL_TAG |
158 | { | 179 | { |
159 | IMG_UINT32 ui32BridgeFlags; | 180 | IMG_UINT32 ui32BridgeFlags; |
181 | #if defined (SUPPORT_SID_INTERFACE) | ||
182 | IMG_SID hDevCookie; | ||
183 | #else | ||
160 | IMG_HANDLE hDevCookie; | 184 | IMG_HANDLE hDevCookie; |
185 | #endif | ||
161 | }PVRSRV_BRIDGE_IN_ISPBREAKPOLL; | 186 | }PVRSRV_BRIDGE_IN_ISPBREAKPOLL; |
162 | 187 | ||
163 | 188 | ||
164 | typedef struct PVRSRV_BRIDGE_IN_DOKICK_TAG | 189 | typedef struct PVRSRV_BRIDGE_IN_DOKICK_TAG |
165 | { | 190 | { |
166 | IMG_UINT32 ui32BridgeFlags; | 191 | IMG_UINT32 ui32BridgeFlags; |
192 | #if defined (SUPPORT_SID_INTERFACE) | ||
193 | IMG_SID hDevCookie; | ||
194 | #else | ||
167 | IMG_HANDLE hDevCookie; | 195 | IMG_HANDLE hDevCookie; |
196 | #endif | ||
168 | SGX_CCB_KICK sCCBKick; | 197 | SGX_CCB_KICK sCCBKick; |
169 | }PVRSRV_BRIDGE_IN_DOKICK; | 198 | }PVRSRV_BRIDGE_IN_DOKICK; |
170 | 199 | ||
@@ -172,7 +201,11 @@ typedef struct PVRSRV_BRIDGE_IN_DOKICK_TAG | |||
172 | typedef struct PVRSRV_BRIDGE_IN_SGX_SCHEDULE_PROCESS_QUEUES_TAG | 201 | typedef struct PVRSRV_BRIDGE_IN_SGX_SCHEDULE_PROCESS_QUEUES_TAG |
173 | { | 202 | { |
174 | IMG_UINT32 ui32BridgeFlags; | 203 | IMG_UINT32 ui32BridgeFlags; |
204 | #if defined (SUPPORT_SID_INTERFACE) | ||
205 | IMG_SID hDevCookie; | ||
206 | #else | ||
175 | IMG_HANDLE hDevCookie; | 207 | IMG_HANDLE hDevCookie; |
208 | #endif | ||
176 | }PVRSRV_BRIDGE_IN_SGX_SCHEDULE_PROCESS_QUEUES; | 209 | }PVRSRV_BRIDGE_IN_SGX_SCHEDULE_PROCESS_QUEUES; |
177 | 210 | ||
178 | 211 | ||
@@ -181,7 +214,11 @@ typedef struct PVRSRV_BRIDGE_IN_SGX_SCHEDULE_PROCESS_QUEUES_TAG | |||
181 | typedef struct PVRSRV_BRIDGE_IN_SUBMITTRANSFER_TAG | 214 | typedef struct PVRSRV_BRIDGE_IN_SUBMITTRANSFER_TAG |
182 | { | 215 | { |
183 | IMG_UINT32 ui32BridgeFlags; | 216 | IMG_UINT32 ui32BridgeFlags; |
217 | #if defined (SUPPORT_SID_INTERFACE) | ||
218 | IMG_SID hDevCookie; | ||
219 | #else | ||
184 | IMG_HANDLE hDevCookie; | 220 | IMG_HANDLE hDevCookie; |
221 | #endif | ||
185 | PVRSRV_TRANSFER_SGX_KICK sKick; | 222 | PVRSRV_TRANSFER_SGX_KICK sKick; |
186 | }PVRSRV_BRIDGE_IN_SUBMITTRANSFER; | 223 | }PVRSRV_BRIDGE_IN_SUBMITTRANSFER; |
187 | 224 | ||
@@ -190,8 +227,12 @@ typedef struct PVRSRV_BRIDGE_IN_SUBMITTRANSFER_TAG | |||
190 | typedef struct PVRSRV_BRIDGE_IN_SUBMIT2D_TAG | 227 | typedef struct PVRSRV_BRIDGE_IN_SUBMIT2D_TAG |
191 | { | 228 | { |
192 | IMG_UINT32 ui32BridgeFlags; | 229 | IMG_UINT32 ui32BridgeFlags; |
230 | #if defined (SUPPORT_SID_INTERFACE) | ||
231 | IMG_SID hDevCookie; | ||
232 | #else | ||
193 | IMG_HANDLE hDevCookie; | 233 | IMG_HANDLE hDevCookie; |
194 | PVRSRV_2D_SGX_KICK sKick; | 234 | #endif |
235 | PVRSRV_2D_SGX_KICK sKick; | ||
195 | } PVRSRV_BRIDGE_IN_SUBMIT2D; | 236 | } PVRSRV_BRIDGE_IN_SUBMIT2D; |
196 | #endif | 237 | #endif |
197 | #endif | 238 | #endif |
@@ -200,7 +241,11 @@ typedef struct PVRSRV_BRIDGE_IN_SUBMIT2D_TAG | |||
200 | typedef struct PVRSRV_BRIDGE_IN_READREGDWORD_TAG | 241 | typedef struct PVRSRV_BRIDGE_IN_READREGDWORD_TAG |
201 | { | 242 | { |
202 | IMG_UINT32 ui32BridgeFlags; | 243 | IMG_UINT32 ui32BridgeFlags; |
244 | #if defined (SUPPORT_SID_INTERFACE) | ||
245 | IMG_SID hDevCookie; | ||
246 | #else | ||
203 | IMG_HANDLE hDevCookie; | 247 | IMG_HANDLE hDevCookie; |
248 | #endif | ||
204 | IMG_PCHAR pszKey; | 249 | IMG_PCHAR pszKey; |
205 | IMG_PCHAR pszValue; | 250 | IMG_PCHAR pszValue; |
206 | }PVRSRV_BRIDGE_IN_READREGDWORD; | 251 | }PVRSRV_BRIDGE_IN_READREGDWORD; |
@@ -216,14 +261,22 @@ typedef struct PVRSRV_BRIDGE_OUT_READREGDWORD_TAG | |||
216 | typedef struct PVRSRV_BRIDGE_IN_SGXGETMISCINFO_TAG | 261 | typedef struct PVRSRV_BRIDGE_IN_SGXGETMISCINFO_TAG |
217 | { | 262 | { |
218 | IMG_UINT32 ui32BridgeFlags; | 263 | IMG_UINT32 ui32BridgeFlags; |
264 | #if defined (SUPPORT_SID_INTERFACE) | ||
265 | IMG_SID hDevCookie; | ||
266 | #else | ||
219 | IMG_HANDLE hDevCookie; | 267 | IMG_HANDLE hDevCookie; |
268 | #endif | ||
220 | SGX_MISC_INFO *psMiscInfo; | 269 | SGX_MISC_INFO *psMiscInfo; |
221 | }PVRSRV_BRIDGE_IN_SGXGETMISCINFO; | 270 | }PVRSRV_BRIDGE_IN_SGXGETMISCINFO; |
222 | 271 | ||
223 | typedef struct PVRSRV_BRIDGE_IN_SGXINFO_FOR_SRVINIT_TAG | 272 | typedef struct PVRSRV_BRIDGE_IN_SGXINFO_FOR_SRVINIT_TAG |
224 | { | 273 | { |
225 | IMG_UINT32 ui32BridgeFlags; | 274 | IMG_UINT32 ui32BridgeFlags; |
275 | #if defined (SUPPORT_SID_INTERFACE) | ||
276 | IMG_SID hDevCookie; | ||
277 | #else | ||
226 | IMG_HANDLE hDevCookie; | 278 | IMG_HANDLE hDevCookie; |
279 | #endif | ||
227 | }PVRSRV_BRIDGE_IN_SGXINFO_FOR_SRVINIT; | 280 | }PVRSRV_BRIDGE_IN_SGXINFO_FOR_SRVINIT; |
228 | 281 | ||
229 | typedef struct PVRSRV_BRIDGE_OUT_SGXINFO_FOR_SRVINIT_TAG | 282 | typedef struct PVRSRV_BRIDGE_OUT_SGXINFO_FOR_SRVINIT_TAG |
@@ -235,16 +288,32 @@ typedef struct PVRSRV_BRIDGE_OUT_SGXINFO_FOR_SRVINIT_TAG | |||
235 | typedef struct PVRSRV_BRIDGE_IN_SGXDEVINITPART2_TAG | 288 | typedef struct PVRSRV_BRIDGE_IN_SGXDEVINITPART2_TAG |
236 | { | 289 | { |
237 | IMG_UINT32 ui32BridgeFlags; | 290 | IMG_UINT32 ui32BridgeFlags; |
291 | #if defined (SUPPORT_SID_INTERFACE) | ||
292 | IMG_SID hDevCookie; | ||
293 | #else | ||
238 | IMG_HANDLE hDevCookie; | 294 | IMG_HANDLE hDevCookie; |
295 | #endif | ||
239 | SGX_BRIDGE_INIT_INFO sInitInfo; | 296 | SGX_BRIDGE_INIT_INFO sInitInfo; |
240 | }PVRSRV_BRIDGE_IN_SGXDEVINITPART2; | 297 | }PVRSRV_BRIDGE_IN_SGXDEVINITPART2; |
241 | 298 | ||
299 | typedef struct PVRSRV_BRIDGE_OUT_SGXDEVINITPART2_TAG | ||
300 | { | ||
301 | PVRSRV_ERROR eError; | ||
302 | IMG_UINT32 ui32KMBuildOptions; | ||
303 | |||
304 | }PVRSRV_BRIDGE_OUT_SGXDEVINITPART2; | ||
305 | |||
242 | 306 | ||
243 | typedef struct PVRSRV_BRIDGE_IN_2DQUERYBLTSCOMPLETE_TAG | 307 | typedef struct PVRSRV_BRIDGE_IN_2DQUERYBLTSCOMPLETE_TAG |
244 | { | 308 | { |
245 | IMG_UINT32 ui32BridgeFlags; | 309 | IMG_UINT32 ui32BridgeFlags; |
310 | #if defined (SUPPORT_SID_INTERFACE) | ||
311 | IMG_SID hDevCookie; | ||
312 | IMG_SID hKernSyncInfo; | ||
313 | #else | ||
246 | IMG_HANDLE hDevCookie; | 314 | IMG_HANDLE hDevCookie; |
247 | IMG_HANDLE hKernSyncInfo; | 315 | IMG_HANDLE hKernSyncInfo; |
316 | #endif | ||
248 | IMG_BOOL bWaitForComplete; | 317 | IMG_BOOL bWaitForComplete; |
249 | }PVRSRV_BRIDGE_IN_2DQUERYBLTSCOMPLETE; | 318 | }PVRSRV_BRIDGE_IN_2DQUERYBLTSCOMPLETE; |
250 | 319 | ||
@@ -254,13 +323,26 @@ typedef struct PVRSRV_BRIDGE_IN_2DQUERYBLTSCOMPLETE_TAG | |||
254 | typedef struct PVRSRV_BRIDGE_IN_SGXFINDSHAREDPBDESC_TAG | 323 | typedef struct PVRSRV_BRIDGE_IN_SGXFINDSHAREDPBDESC_TAG |
255 | { | 324 | { |
256 | IMG_UINT32 ui32BridgeFlags; | 325 | IMG_UINT32 ui32BridgeFlags; |
326 | #if defined (SUPPORT_SID_INTERFACE) | ||
327 | IMG_SID hDevCookie; | ||
328 | #else | ||
257 | IMG_HANDLE hDevCookie; | 329 | IMG_HANDLE hDevCookie; |
258 | IMG_BOOL bLockOnFailure; | 330 | #endif |
331 | IMG_BOOL bLockOnFailure; | ||
259 | IMG_UINT32 ui32TotalPBSize; | 332 | IMG_UINT32 ui32TotalPBSize; |
260 | }PVRSRV_BRIDGE_IN_SGXFINDSHAREDPBDESC; | 333 | }PVRSRV_BRIDGE_IN_SGXFINDSHAREDPBDESC; |
261 | 334 | ||
262 | typedef struct PVRSRV_BRIDGE_OUT_SGXFINDSHAREDPBDESC_TAG | 335 | typedef struct PVRSRV_BRIDGE_OUT_SGXFINDSHAREDPBDESC_TAG |
263 | { | 336 | { |
337 | #if defined (SUPPORT_SID_INTERFACE) | ||
338 | IMG_SID hKernelMemInfo; | ||
339 | IMG_SID hSharedPBDesc; | ||
340 | IMG_SID hSharedPBDescKernelMemInfoHandle; | ||
341 | IMG_SID hHWPBDescKernelMemInfoHandle; | ||
342 | IMG_SID hBlockKernelMemInfoHandle; | ||
343 | IMG_SID hHWBlockKernelMemInfoHandle; | ||
344 | IMG_SID ahSharedPBDescSubKernelMemInfoHandles[PVRSRV_BRIDGE_SGX_SHAREDPBDESC_MAX_SUBMEMINFOS]; | ||
345 | #else | ||
264 | IMG_HANDLE hKernelMemInfo; | 346 | IMG_HANDLE hKernelMemInfo; |
265 | IMG_HANDLE hSharedPBDesc; | 347 | IMG_HANDLE hSharedPBDesc; |
266 | IMG_HANDLE hSharedPBDescKernelMemInfoHandle; | 348 | IMG_HANDLE hSharedPBDescKernelMemInfoHandle; |
@@ -268,6 +350,7 @@ typedef struct PVRSRV_BRIDGE_OUT_SGXFINDSHAREDPBDESC_TAG | |||
268 | IMG_HANDLE hBlockKernelMemInfoHandle; | 350 | IMG_HANDLE hBlockKernelMemInfoHandle; |
269 | IMG_HANDLE hHWBlockKernelMemInfoHandle; | 351 | IMG_HANDLE hHWBlockKernelMemInfoHandle; |
270 | IMG_HANDLE ahSharedPBDescSubKernelMemInfoHandles[PVRSRV_BRIDGE_SGX_SHAREDPBDESC_MAX_SUBMEMINFOS]; | 352 | IMG_HANDLE ahSharedPBDescSubKernelMemInfoHandles[PVRSRV_BRIDGE_SGX_SHAREDPBDESC_MAX_SUBMEMINFOS]; |
353 | #endif | ||
271 | IMG_UINT32 ui32SharedPBDescSubKernelMemInfoHandlesCount; | 354 | IMG_UINT32 ui32SharedPBDescSubKernelMemInfoHandlesCount; |
272 | PVRSRV_ERROR eError; | 355 | PVRSRV_ERROR eError; |
273 | }PVRSRV_BRIDGE_OUT_SGXFINDSHAREDPBDESC; | 356 | }PVRSRV_BRIDGE_OUT_SGXFINDSHAREDPBDESC; |
@@ -275,7 +358,11 @@ typedef struct PVRSRV_BRIDGE_OUT_SGXFINDSHAREDPBDESC_TAG | |||
275 | typedef struct PVRSRV_BRIDGE_IN_SGXUNREFSHAREDPBDESC_TAG | 358 | typedef struct PVRSRV_BRIDGE_IN_SGXUNREFSHAREDPBDESC_TAG |
276 | { | 359 | { |
277 | IMG_UINT32 ui32BridgeFlags; | 360 | IMG_UINT32 ui32BridgeFlags; |
361 | #if defined (SUPPORT_SID_INTERFACE) | ||
362 | IMG_SID hSharedPBDesc; | ||
363 | #else | ||
278 | IMG_HANDLE hSharedPBDesc; | 364 | IMG_HANDLE hSharedPBDesc; |
365 | #endif | ||
279 | }PVRSRV_BRIDGE_IN_SGXUNREFSHAREDPBDESC; | 366 | }PVRSRV_BRIDGE_IN_SGXUNREFSHAREDPBDESC; |
280 | 367 | ||
281 | typedef struct PVRSRV_BRIDGE_OUT_SGXUNREFSHAREDPBDESC_TAG | 368 | typedef struct PVRSRV_BRIDGE_OUT_SGXUNREFSHAREDPBDESC_TAG |
@@ -287,20 +374,34 @@ typedef struct PVRSRV_BRIDGE_OUT_SGXUNREFSHAREDPBDESC_TAG | |||
287 | typedef struct PVRSRV_BRIDGE_IN_SGXADDSHAREDPBDESC_TAG | 374 | typedef struct PVRSRV_BRIDGE_IN_SGXADDSHAREDPBDESC_TAG |
288 | { | 375 | { |
289 | IMG_UINT32 ui32BridgeFlags; | 376 | IMG_UINT32 ui32BridgeFlags; |
377 | IMG_UINT32 ui32TotalPBSize; | ||
378 | #if defined (SUPPORT_SID_INTERFACE) | ||
379 | IMG_SID hDevCookie; | ||
380 | IMG_SID hSharedPBDescKernelMemInfo; | ||
381 | IMG_SID hHWPBDescKernelMemInfo; | ||
382 | IMG_SID hBlockKernelMemInfo; | ||
383 | IMG_SID hHWBlockKernelMemInfo; | ||
384 | IMG_SID *phKernelMemInfoHandles; | ||
385 | #else | ||
290 | IMG_HANDLE hDevCookie; | 386 | IMG_HANDLE hDevCookie; |
291 | IMG_HANDLE hSharedPBDescKernelMemInfo; | 387 | IMG_HANDLE hSharedPBDescKernelMemInfo; |
292 | IMG_HANDLE hHWPBDescKernelMemInfo; | 388 | IMG_HANDLE hHWPBDescKernelMemInfo; |
293 | IMG_HANDLE hBlockKernelMemInfo; | 389 | IMG_HANDLE hBlockKernelMemInfo; |
294 | IMG_HANDLE hHWBlockKernelMemInfo; | 390 | IMG_HANDLE hHWBlockKernelMemInfo; |
295 | IMG_UINT32 ui32TotalPBSize; | ||
296 | IMG_HANDLE *phKernelMemInfoHandles; | 391 | IMG_HANDLE *phKernelMemInfoHandles; |
392 | #endif | ||
297 | IMG_UINT32 ui32KernelMemInfoHandlesCount; | 393 | IMG_UINT32 ui32KernelMemInfoHandlesCount; |
394 | IMG_DEV_VIRTADDR sHWPBDescDevVAddr; | ||
298 | }PVRSRV_BRIDGE_IN_SGXADDSHAREDPBDESC; | 395 | }PVRSRV_BRIDGE_IN_SGXADDSHAREDPBDESC; |
299 | 396 | ||
300 | typedef struct PVRSRV_BRIDGE_OUT_SGXADDSHAREDPBDESC_TAG | 397 | typedef struct PVRSRV_BRIDGE_OUT_SGXADDSHAREDPBDESC_TAG |
301 | { | 398 | { |
302 | PVRSRV_ERROR eError; | 399 | PVRSRV_ERROR eError; |
400 | #if defined (SUPPORT_SID_INTERFACE) | ||
401 | IMG_SID hSharedPBDesc; | ||
402 | #else | ||
303 | IMG_HANDLE hSharedPBDesc; | 403 | IMG_HANDLE hSharedPBDesc; |
404 | #endif | ||
304 | }PVRSRV_BRIDGE_OUT_SGXADDSHAREDPBDESC; | 405 | }PVRSRV_BRIDGE_OUT_SGXADDSHAREDPBDESC; |
305 | 406 | ||
306 | 407 | ||
@@ -316,9 +417,15 @@ typedef struct PVRSRV_BRIDGE_IN_PDUMP_BUFFER_ARRAY_TAG | |||
316 | typedef struct PVRSRV_BRIDGE_IN_PDUMP_3D_SIGNATURE_REGISTERS_TAG | 417 | typedef struct PVRSRV_BRIDGE_IN_PDUMP_3D_SIGNATURE_REGISTERS_TAG |
317 | { | 418 | { |
318 | IMG_UINT32 ui32BridgeFlags; | 419 | IMG_UINT32 ui32BridgeFlags; |
420 | #if defined (SUPPORT_SID_INTERFACE) | ||
421 | IMG_SID hDevCookie; | ||
422 | IMG_SID hDevMemContext; | ||
423 | #else | ||
319 | IMG_HANDLE hDevCookie; | 424 | IMG_HANDLE hDevCookie; |
425 | IMG_HANDLE hDevMemContext; | ||
426 | #endif | ||
320 | IMG_UINT32 ui32DumpFrameNum; | 427 | IMG_UINT32 ui32DumpFrameNum; |
321 | IMG_BOOL bLastFrame; | 428 | IMG_BOOL bLastFrame; |
322 | IMG_UINT32 *pui32Registers; | 429 | IMG_UINT32 *pui32Registers; |
323 | IMG_UINT32 ui32NumRegisters; | 430 | IMG_UINT32 ui32NumRegisters; |
324 | }PVRSRV_BRIDGE_IN_PDUMP_3D_SIGNATURE_REGISTERS; | 431 | }PVRSRV_BRIDGE_IN_PDUMP_3D_SIGNATURE_REGISTERS; |
@@ -326,7 +433,11 @@ typedef struct PVRSRV_BRIDGE_IN_PDUMP_3D_SIGNATURE_REGISTERS_TAG | |||
326 | typedef struct PVRSRV_BRIDGE_IN_PDUMPCOUNTER_REGISTERS_TAG | 433 | typedef struct PVRSRV_BRIDGE_IN_PDUMPCOUNTER_REGISTERS_TAG |
327 | { | 434 | { |
328 | IMG_UINT32 ui32BridgeFlags; | 435 | IMG_UINT32 ui32BridgeFlags; |
436 | #if defined (SUPPORT_SID_INTERFACE) | ||
437 | IMG_SID hDevCookie; | ||
438 | #else | ||
329 | IMG_HANDLE hDevCookie; | 439 | IMG_HANDLE hDevCookie; |
440 | #endif | ||
330 | IMG_UINT32 ui32DumpFrameNum; | 441 | IMG_UINT32 ui32DumpFrameNum; |
331 | IMG_BOOL bLastFrame; | 442 | IMG_BOOL bLastFrame; |
332 | IMG_UINT32 *pui32Registers; | 443 | IMG_UINT32 *pui32Registers; |
@@ -336,7 +447,11 @@ typedef struct PVRSRV_BRIDGE_IN_PDUMPCOUNTER_REGISTERS_TAG | |||
336 | typedef struct PVRSRV_BRIDGE_IN_PDUMP_TA_SIGNATURE_REGISTERS_TAG | 447 | typedef struct PVRSRV_BRIDGE_IN_PDUMP_TA_SIGNATURE_REGISTERS_TAG |
337 | { | 448 | { |
338 | IMG_UINT32 ui32BridgeFlags; | 449 | IMG_UINT32 ui32BridgeFlags; |
450 | #if defined (SUPPORT_SID_INTERFACE) | ||
451 | IMG_SID hDevCookie; | ||
452 | #else | ||
339 | IMG_HANDLE hDevCookie; | 453 | IMG_HANDLE hDevCookie; |
454 | #endif | ||
340 | IMG_UINT32 ui32DumpFrameNum; | 455 | IMG_UINT32 ui32DumpFrameNum; |
341 | IMG_UINT32 ui32TAKickCount; | 456 | IMG_UINT32 ui32TAKickCount; |
342 | IMG_BOOL bLastFrame; | 457 | IMG_BOOL bLastFrame; |
@@ -347,7 +462,13 @@ typedef struct PVRSRV_BRIDGE_IN_PDUMP_TA_SIGNATURE_REGISTERS_TAG | |||
347 | typedef struct PVRSRV_BRIDGE_IN_PDUMP_HWPERFCB_TAG | 462 | typedef struct PVRSRV_BRIDGE_IN_PDUMP_HWPERFCB_TAG |
348 | { | 463 | { |
349 | IMG_UINT32 ui32BridgeFlags; | 464 | IMG_UINT32 ui32BridgeFlags; |
465 | #if defined (SUPPORT_SID_INTERFACE) | ||
466 | IMG_SID hDevCookie; | ||
467 | IMG_SID hDevMemContext; | ||
468 | #else | ||
350 | IMG_HANDLE hDevCookie; | 469 | IMG_HANDLE hDevCookie; |
470 | IMG_HANDLE hDevMemContext; | ||
471 | #endif | ||
351 | IMG_CHAR szFileName[PVRSRV_PDUMP_MAX_FILENAME_SIZE]; | 472 | IMG_CHAR szFileName[PVRSRV_PDUMP_MAX_FILENAME_SIZE]; |
352 | IMG_UINT32 ui32FileOffset; | 473 | IMG_UINT32 ui32FileOffset; |
353 | IMG_UINT32 ui32PDumpFlags; | 474 | IMG_UINT32 ui32PDumpFlags; |
@@ -357,12 +478,19 @@ typedef struct PVRSRV_BRIDGE_IN_PDUMP_HWPERFCB_TAG | |||
357 | typedef struct PVRSRV_BRIDGE_IN_PDUMP_SAVEMEM | 478 | typedef struct PVRSRV_BRIDGE_IN_PDUMP_SAVEMEM |
358 | { | 479 | { |
359 | IMG_UINT32 ui32BridgeFlags; | 480 | IMG_UINT32 ui32BridgeFlags; |
481 | #if defined (SUPPORT_SID_INTERFACE) | ||
482 | IMG_SID hDevCookie; | ||
483 | IMG_SID hDevMemContext; | ||
484 | #else | ||
360 | IMG_HANDLE hDevCookie; | 485 | IMG_HANDLE hDevCookie; |
486 | #endif | ||
361 | IMG_CHAR szFileName[PVRSRV_PDUMP_MAX_FILENAME_SIZE]; | 487 | IMG_CHAR szFileName[PVRSRV_PDUMP_MAX_FILENAME_SIZE]; |
362 | IMG_UINT32 ui32FileOffset; | 488 | IMG_UINT32 ui32FileOffset; |
363 | IMG_DEV_VIRTADDR sDevVAddr; | 489 | IMG_DEV_VIRTADDR sDevVAddr; |
364 | IMG_UINT32 ui32Size; | 490 | IMG_UINT32 ui32Size; |
365 | IMG_UINT32 ui32DataMaster; | 491 | #if !defined (SUPPORT_SID_INTERFACE) |
492 | IMG_HANDLE hDevMemContext; | ||
493 | #endif | ||
366 | IMG_UINT32 ui32PDumpFlags; | 494 | IMG_UINT32 ui32PDumpFlags; |
367 | 495 | ||
368 | }PVRSRV_BRIDGE_IN_PDUMP_SAVEMEM; | 496 | }PVRSRV_BRIDGE_IN_PDUMP_SAVEMEM; |
@@ -372,47 +500,77 @@ typedef struct PVRSRV_BRIDGE_IN_PDUMP_SAVEMEM | |||
372 | typedef struct PVRSRV_BRIDGE_IN_SGX_REGISTER_HW_RENDER_CONTEXT_TAG | 500 | typedef struct PVRSRV_BRIDGE_IN_SGX_REGISTER_HW_RENDER_CONTEXT_TAG |
373 | { | 501 | { |
374 | IMG_UINT32 ui32BridgeFlags; | 502 | IMG_UINT32 ui32BridgeFlags; |
503 | #if defined (SUPPORT_SID_INTERFACE) | ||
504 | IMG_SID hDevCookie; | ||
505 | #else | ||
375 | IMG_HANDLE hDevCookie; | 506 | IMG_HANDLE hDevCookie; |
507 | #endif | ||
376 | IMG_DEV_VIRTADDR sHWRenderContextDevVAddr; | 508 | IMG_DEV_VIRTADDR sHWRenderContextDevVAddr; |
377 | }PVRSRV_BRIDGE_IN_SGX_REGISTER_HW_RENDER_CONTEXT; | 509 | }PVRSRV_BRIDGE_IN_SGX_REGISTER_HW_RENDER_CONTEXT; |
378 | 510 | ||
379 | typedef struct PVRSRV_BRIDGE_OUT_SGX_REGISTER_HW_RENDER_CONTEXT_TAG | 511 | typedef struct PVRSRV_BRIDGE_OUT_SGX_REGISTER_HW_RENDER_CONTEXT_TAG |
380 | { | 512 | { |
381 | PVRSRV_ERROR eError; | 513 | PVRSRV_ERROR eError; |
514 | #if defined (SUPPORT_SID_INTERFACE) | ||
515 | IMG_SID hHWRenderContext; | ||
516 | #else | ||
382 | IMG_HANDLE hHWRenderContext; | 517 | IMG_HANDLE hHWRenderContext; |
518 | #endif | ||
383 | }PVRSRV_BRIDGE_OUT_SGX_REGISTER_HW_RENDER_CONTEXT; | 519 | }PVRSRV_BRIDGE_OUT_SGX_REGISTER_HW_RENDER_CONTEXT; |
384 | 520 | ||
385 | typedef struct PVRSRV_BRIDGE_IN_SGX_UNREGISTER_HW_RENDER_CONTEXT_TAG | 521 | typedef struct PVRSRV_BRIDGE_IN_SGX_UNREGISTER_HW_RENDER_CONTEXT_TAG |
386 | { | 522 | { |
387 | IMG_UINT32 ui32BridgeFlags; | 523 | IMG_UINT32 ui32BridgeFlags; |
524 | #if defined (SUPPORT_SID_INTERFACE) | ||
525 | IMG_SID hDevCookie; | ||
526 | IMG_SID hHWRenderContext; | ||
527 | #else | ||
388 | IMG_HANDLE hDevCookie; | 528 | IMG_HANDLE hDevCookie; |
389 | IMG_HANDLE hHWRenderContext; | 529 | IMG_HANDLE hHWRenderContext; |
530 | #endif | ||
390 | }PVRSRV_BRIDGE_IN_SGX_UNREGISTER_HW_RENDER_CONTEXT; | 531 | }PVRSRV_BRIDGE_IN_SGX_UNREGISTER_HW_RENDER_CONTEXT; |
391 | 532 | ||
392 | typedef struct PVRSRV_BRIDGE_IN_SGX_REGISTER_HW_TRANSFER_CONTEXT_TAG | 533 | typedef struct PVRSRV_BRIDGE_IN_SGX_REGISTER_HW_TRANSFER_CONTEXT_TAG |
393 | { | 534 | { |
394 | IMG_UINT32 ui32BridgeFlags; | 535 | IMG_UINT32 ui32BridgeFlags; |
536 | #if defined (SUPPORT_SID_INTERFACE) | ||
537 | IMG_SID hDevCookie; | ||
538 | #else | ||
395 | IMG_HANDLE hDevCookie; | 539 | IMG_HANDLE hDevCookie; |
540 | #endif | ||
396 | IMG_DEV_VIRTADDR sHWTransferContextDevVAddr; | 541 | IMG_DEV_VIRTADDR sHWTransferContextDevVAddr; |
397 | }PVRSRV_BRIDGE_IN_SGX_REGISTER_HW_TRANSFER_CONTEXT; | 542 | }PVRSRV_BRIDGE_IN_SGX_REGISTER_HW_TRANSFER_CONTEXT; |
398 | 543 | ||
399 | typedef struct PVRSRV_BRIDGE_OUT_SGX_REGISTER_HW_TRANSFER_CONTEXT_TAG | 544 | typedef struct PVRSRV_BRIDGE_OUT_SGX_REGISTER_HW_TRANSFER_CONTEXT_TAG |
400 | { | 545 | { |
401 | PVRSRV_ERROR eError; | 546 | PVRSRV_ERROR eError; |
547 | #if defined (SUPPORT_SID_INTERFACE) | ||
548 | IMG_SID hHWTransferContext; | ||
549 | #else | ||
402 | IMG_HANDLE hHWTransferContext; | 550 | IMG_HANDLE hHWTransferContext; |
551 | #endif | ||
403 | }PVRSRV_BRIDGE_OUT_SGX_REGISTER_HW_TRANSFER_CONTEXT; | 552 | }PVRSRV_BRIDGE_OUT_SGX_REGISTER_HW_TRANSFER_CONTEXT; |
404 | 553 | ||
405 | typedef struct PVRSRV_BRIDGE_IN_SGX_UNREGISTER_HW_TRANSFER_CONTEXT_TAG | 554 | typedef struct PVRSRV_BRIDGE_IN_SGX_UNREGISTER_HW_TRANSFER_CONTEXT_TAG |
406 | { | 555 | { |
407 | IMG_UINT32 ui32BridgeFlags; | 556 | IMG_UINT32 ui32BridgeFlags; |
557 | #if defined (SUPPORT_SID_INTERFACE) | ||
558 | IMG_SID hDevCookie; | ||
559 | IMG_SID hHWTransferContext; | ||
560 | #else | ||
408 | IMG_HANDLE hDevCookie; | 561 | IMG_HANDLE hDevCookie; |
409 | IMG_HANDLE hHWTransferContext; | 562 | IMG_HANDLE hHWTransferContext; |
563 | #endif | ||
410 | }PVRSRV_BRIDGE_IN_SGX_UNREGISTER_HW_TRANSFER_CONTEXT; | 564 | }PVRSRV_BRIDGE_IN_SGX_UNREGISTER_HW_TRANSFER_CONTEXT; |
411 | 565 | ||
412 | typedef struct PVRSRV_BRIDGE_IN_SGX_FLUSH_HW_RENDER_TARGET_TAG | 566 | typedef struct PVRSRV_BRIDGE_IN_SGX_FLUSH_HW_RENDER_TARGET_TAG |
413 | { | 567 | { |
414 | IMG_UINT32 ui32BridgeFlags; | 568 | IMG_UINT32 ui32BridgeFlags; |
569 | #if defined (SUPPORT_SID_INTERFACE) | ||
570 | IMG_SID hDevCookie; | ||
571 | #else | ||
415 | IMG_HANDLE hDevCookie; | 572 | IMG_HANDLE hDevCookie; |
573 | #endif | ||
416 | IMG_DEV_VIRTADDR sHWRTDataSetDevVAddr; | 574 | IMG_DEV_VIRTADDR sHWRTDataSetDevVAddr; |
417 | }PVRSRV_BRIDGE_IN_SGX_FLUSH_HW_RENDER_TARGET; | 575 | }PVRSRV_BRIDGE_IN_SGX_FLUSH_HW_RENDER_TARGET; |
418 | 576 | ||
@@ -421,21 +579,34 @@ typedef struct PVRSRV_BRIDGE_IN_SGX_FLUSH_HW_RENDER_TARGET_TAG | |||
421 | typedef struct PVRSRV_BRIDGE_IN_SGX_REGISTER_HW_2D_CONTEXT_TAG | 579 | typedef struct PVRSRV_BRIDGE_IN_SGX_REGISTER_HW_2D_CONTEXT_TAG |
422 | { | 580 | { |
423 | IMG_UINT32 ui32BridgeFlags; | 581 | IMG_UINT32 ui32BridgeFlags; |
582 | #if defined (SUPPORT_SID_INTERFACE) | ||
583 | IMG_SID hDevCookie; | ||
584 | #else | ||
424 | IMG_HANDLE hDevCookie; | 585 | IMG_HANDLE hDevCookie; |
586 | #endif | ||
425 | IMG_DEV_VIRTADDR sHW2DContextDevVAddr; | 587 | IMG_DEV_VIRTADDR sHW2DContextDevVAddr; |
426 | }PVRSRV_BRIDGE_IN_SGX_REGISTER_HW_2D_CONTEXT; | 588 | }PVRSRV_BRIDGE_IN_SGX_REGISTER_HW_2D_CONTEXT; |
427 | 589 | ||
428 | typedef struct PVRSRV_BRIDGE_OUT_SGX_REGISTER_HW_2D_CONTEXT_TAG | 590 | typedef struct PVRSRV_BRIDGE_OUT_SGX_REGISTER_HW_2D_CONTEXT_TAG |
429 | { | 591 | { |
430 | PVRSRV_ERROR eError; | 592 | PVRSRV_ERROR eError; |
593 | #if defined (SUPPORT_SID_INTERFACE) | ||
594 | IMG_SID hHW2DContext; | ||
595 | #else | ||
431 | IMG_HANDLE hHW2DContext; | 596 | IMG_HANDLE hHW2DContext; |
597 | #endif | ||
432 | }PVRSRV_BRIDGE_OUT_SGX_REGISTER_HW_2D_CONTEXT; | 598 | }PVRSRV_BRIDGE_OUT_SGX_REGISTER_HW_2D_CONTEXT; |
433 | 599 | ||
434 | typedef struct PVRSRV_BRIDGE_IN_SGX_UNREGISTER_HW_2D_CONTEXT_TAG | 600 | typedef struct PVRSRV_BRIDGE_IN_SGX_UNREGISTER_HW_2D_CONTEXT_TAG |
435 | { | 601 | { |
436 | IMG_UINT32 ui32BridgeFlags; | 602 | IMG_UINT32 ui32BridgeFlags; |
603 | #if defined (SUPPORT_SID_INTERFACE) | ||
604 | IMG_SID hDevCookie; | ||
605 | IMG_SID hHW2DContext; | ||
606 | #else | ||
437 | IMG_HANDLE hDevCookie; | 607 | IMG_HANDLE hDevCookie; |
438 | IMG_HANDLE hHW2DContext; | 608 | IMG_HANDLE hHW2DContext; |
609 | #endif | ||
439 | }PVRSRV_BRIDGE_IN_SGX_UNREGISTER_HW_2D_CONTEXT; | 610 | }PVRSRV_BRIDGE_IN_SGX_UNREGISTER_HW_2D_CONTEXT; |
440 | 611 | ||
441 | #define SGX2D_MAX_BLT_CMD_SIZ 256 | 612 | #define SGX2D_MAX_BLT_CMD_SIZ 256 |
@@ -445,7 +616,11 @@ typedef struct PVRSRV_BRIDGE_IN_SGX_UNREGISTER_HW_2D_CONTEXT_TAG | |||
445 | typedef struct PVRSRV_BRIDGE_IN_SGX_READ_HWPERF_CB_TAG | 616 | typedef struct PVRSRV_BRIDGE_IN_SGX_READ_HWPERF_CB_TAG |
446 | { | 617 | { |
447 | IMG_UINT32 ui32BridgeFlags; | 618 | IMG_UINT32 ui32BridgeFlags; |
619 | #if defined (SUPPORT_SID_INTERFACE) | ||
620 | IMG_SID hDevCookie; | ||
621 | #else | ||
448 | IMG_HANDLE hDevCookie; | 622 | IMG_HANDLE hDevCookie; |
623 | #endif | ||
449 | IMG_UINT32 ui32ArraySize; | 624 | IMG_UINT32 ui32ArraySize; |
450 | PVRSRV_SGX_HWPERF_CB_ENTRY *psHWPerfCBData; | 625 | PVRSRV_SGX_HWPERF_CB_ENTRY *psHWPerfCBData; |
451 | } PVRSRV_BRIDGE_IN_SGX_READ_HWPERF_CB; | 626 | } PVRSRV_BRIDGE_IN_SGX_READ_HWPERF_CB; |
diff --git a/drivers/gpu/pvr/sgx_mkif_km.h b/drivers/gpu/pvr/sgx_mkif_km.h index bd8f58b02a2..839cb87bd66 100644 --- a/drivers/gpu/pvr/sgx_mkif_km.h +++ b/drivers/gpu/pvr/sgx_mkif_km.h | |||
@@ -32,29 +32,25 @@ | |||
32 | #include "sgxapi_km.h" | 32 | #include "sgxapi_km.h" |
33 | 33 | ||
34 | 34 | ||
35 | #if !defined (SGX_MP_CORE_SELECT) | ||
35 | #if defined(SGX_FEATURE_MP) | 36 | #if defined(SGX_FEATURE_MP) |
36 | #define SGX_REG_BANK_SHIFT (12) | 37 | #define SGX_REG_BANK_SHIFT (14) |
37 | #define SGX_REG_BANK_SIZE (0x4000) | 38 | #define SGX_REG_BANK_SIZE (1 << SGX_REG_BANK_SHIFT) |
38 | #if defined(SGX541) | 39 | #define SGX_REG_BANK_BASE_INDEX (2) |
39 | #define SGX_REG_BANK_BASE_INDEX (1) | 40 | #define SGX_REG_BANK_MASTER_INDEX (1) |
40 | #define SGX_REG_BANK_MASTER_INDEX (SGX_REG_BANK_BASE_INDEX + SGX_FEATURE_MP_CORE_COUNT) | ||
41 | #else | ||
42 | #define SGX_REG_BANK_BASE_INDEX (2) | ||
43 | #define SGX_REG_BANK_MASTER_INDEX (1) | ||
44 | #endif | ||
45 | #define SGX_MP_CORE_SELECT(x,i) (x + ((i + SGX_REG_BANK_BASE_INDEX) * SGX_REG_BANK_SIZE)) | 41 | #define SGX_MP_CORE_SELECT(x,i) (x + ((i + SGX_REG_BANK_BASE_INDEX) * SGX_REG_BANK_SIZE)) |
46 | #define SGX_MP_MASTER_SELECT(x) (x + (SGX_REG_BANK_MASTER_INDEX * SGX_REG_BANK_SIZE)) | 42 | #define SGX_MP_MASTER_SELECT(x) (x + (SGX_REG_BANK_MASTER_INDEX * SGX_REG_BANK_SIZE)) |
47 | #else | 43 | #else |
48 | #define SGX_MP_CORE_SELECT(x,i) (x) | 44 | #define SGX_MP_CORE_SELECT(x,i) (x) |
49 | #endif | 45 | #endif |
46 | #endif | ||
50 | 47 | ||
51 | 48 | ||
52 | typedef struct _SGXMKIF_COMMAND_ | 49 | typedef struct _SGXMKIF_COMMAND_ |
53 | { | 50 | { |
54 | IMG_UINT32 ui32ServiceAddress; | 51 | IMG_UINT32 ui32ServiceAddress; |
55 | IMG_UINT32 ui32CacheControl; | 52 | IMG_UINT32 ui32CacheControl; |
56 | IMG_UINT32 ui32Data[4]; | 53 | IMG_UINT32 ui32Data[6]; |
57 | IMG_UINT32 ui32Padding[2]; | ||
58 | } SGXMKIF_COMMAND; | 54 | } SGXMKIF_COMMAND; |
59 | 55 | ||
60 | 56 | ||
@@ -82,7 +78,7 @@ typedef struct _SGXMKIF_HOST_CTL_ | |||
82 | volatile IMG_UINT32 ui32PowerStatus; | 78 | volatile IMG_UINT32 ui32PowerStatus; |
83 | volatile IMG_UINT32 ui32CleanupStatus; | 79 | volatile IMG_UINT32 ui32CleanupStatus; |
84 | #if defined(FIX_HW_BRN_28889) | 80 | #if defined(FIX_HW_BRN_28889) |
85 | volatile IMG_UINT32 ui32InvalStatus; | 81 | volatile IMG_UINT32 ui32InvalStatus; |
86 | #endif | 82 | #endif |
87 | #if defined(SUPPORT_HW_RECOVERY) | 83 | #if defined(SUPPORT_HW_RECOVERY) |
88 | IMG_UINT32 ui32uKernelDetectedLockups; | 84 | IMG_UINT32 ui32uKernelDetectedLockups; |
@@ -99,6 +95,7 @@ typedef struct _SGXMKIF_HOST_CTL_ | |||
99 | 95 | ||
100 | IMG_UINT32 ui32TimeWraps; | 96 | IMG_UINT32 ui32TimeWraps; |
101 | IMG_UINT32 ui32HostClock; | 97 | IMG_UINT32 ui32HostClock; |
98 | IMG_UINT32 ui32AssertFail; | ||
102 | 99 | ||
103 | #if defined(SGX_FEATURE_EXTENDED_PERF_COUNTERS) | 100 | #if defined(SGX_FEATURE_EXTENDED_PERF_COUNTERS) |
104 | IMG_UINT32 aui32PerfGroup[PVRSRV_SGX_HWPERF_NUM_COUNTERS]; | 101 | IMG_UINT32 aui32PerfGroup[PVRSRV_SGX_HWPERF_NUM_COUNTERS]; |
@@ -106,6 +103,10 @@ typedef struct _SGXMKIF_HOST_CTL_ | |||
106 | #else | 103 | #else |
107 | IMG_UINT32 ui32PerfGroup; | 104 | IMG_UINT32 ui32PerfGroup; |
108 | #endif | 105 | #endif |
106 | |||
107 | #if defined(FIX_HW_BRN_31939) | ||
108 | IMG_UINT32 ui32BRN31939Mem; | ||
109 | #endif | ||
109 | } SGXMKIF_HOST_CTL; | 110 | } SGXMKIF_HOST_CTL; |
110 | 111 | ||
111 | #define SGXMKIF_CMDTA_CTRLFLAGS_READY 0x00000001 | 112 | #define SGXMKIF_CMDTA_CTRLFLAGS_READY 0x00000001 |
@@ -171,14 +172,7 @@ typedef struct _SGXMKIF_TRANSFERCMD_SHARED_ | |||
171 | 172 | ||
172 | 173 | ||
173 | IMG_UINT32 ui32NumDstSyncs; | 174 | IMG_UINT32 ui32NumDstSyncs; |
174 | PVRSRV_DEVICE_SYNC_OBJECT asDstSyncs[SGX_MAX_DST_SYNCS]; | 175 | PVRSRV_DEVICE_SYNC_OBJECT asDstSyncs[SGX_MAX_DST_SYNCS]; |
175 | |||
176 | IMG_UINT32 ui32DstReadOpPendingVal; | ||
177 | IMG_DEV_VIRTADDR sDstReadOpsCompleteDevAddr; | ||
178 | |||
179 | IMG_UINT32 ui32DstWriteOpPendingVal; | ||
180 | IMG_DEV_VIRTADDR sDstWriteOpsCompleteDevAddr; | ||
181 | |||
182 | 176 | ||
183 | IMG_UINT32 ui32TASyncWriteOpsPendingVal; | 177 | IMG_UINT32 ui32TASyncWriteOpsPendingVal; |
184 | IMG_DEV_VIRTADDR sTASyncWriteOpsCompleteDevVAddr; | 178 | IMG_DEV_VIRTADDR sTASyncWriteOpsCompleteDevVAddr; |
@@ -236,7 +230,7 @@ typedef struct _SGXMKIF_HWDEVICE_SYNC_LIST_ | |||
236 | #define PVRSRV_USSE_EDM_CLEANUPCMD_COMPLETE (1UL << 0) | 230 | #define PVRSRV_USSE_EDM_CLEANUPCMD_COMPLETE (1UL << 0) |
237 | 231 | ||
238 | #if defined(FIX_HW_BRN_28889) | 232 | #if defined(FIX_HW_BRN_28889) |
239 | #define PVRSRV_USSE_EDM_BIF_INVAL_COMPLETE (1UL << 0) | 233 | #define PVRSRV_USSE_EDM_BIF_INVAL_COMPLETE (1UL << 0) |
240 | #endif | 234 | #endif |
241 | 235 | ||
242 | #define PVRSRV_USSE_MISCINFO_READY 0x1UL | 236 | #define PVRSRV_USSE_MISCINFO_READY 0x1UL |
@@ -250,18 +244,21 @@ typedef struct _SGXMKIF_HWDEVICE_SYNC_LIST_ | |||
250 | #endif | 244 | #endif |
251 | 245 | ||
252 | 246 | ||
253 | #define PVRSRV_CLEANUPCMD_RT 0x1 | 247 | #define PVRSRV_CLEANUPCMD_RT 0x1U |
254 | #define PVRSRV_CLEANUPCMD_RC 0x2 | 248 | #define PVRSRV_CLEANUPCMD_RC 0x2U |
255 | #define PVRSRV_CLEANUPCMD_TC 0x3 | 249 | #define PVRSRV_CLEANUPCMD_TC 0x3U |
256 | #define PVRSRV_CLEANUPCMD_2DC 0x4 | 250 | #define PVRSRV_CLEANUPCMD_2DC 0x4U |
257 | #define PVRSRV_CLEANUPCMD_PB 0x5 | 251 | #define PVRSRV_CLEANUPCMD_PB 0x5U |
258 | 252 | ||
259 | #define PVRSRV_POWERCMD_POWEROFF 0x1 | 253 | #define PVRSRV_POWERCMD_POWEROFF 0x1U |
260 | #define PVRSRV_POWERCMD_IDLE 0x2 | 254 | #define PVRSRV_POWERCMD_IDLE 0x2U |
261 | #define PVRSRV_POWERCMD_RESUME 0x3 | 255 | #define PVRSRV_POWERCMD_RESUME 0x3U |
262 | 256 | ||
257 | #define PVRSRV_CTXSUSPCMD_SUSPEND 0x1U | ||
258 | #define PVRSRV_CTXSUSPCMD_RESUME 0x2U | ||
263 | 259 | ||
264 | #if defined(SGX_FEATURE_BIF_NUM_DIRLISTS) | 260 | |
261 | #if defined(SGX_FEATURE_MULTIPLE_MEM_CONTEXTS) | ||
265 | #define SGX_BIF_DIR_LIST_INDEX_EDM (SGX_FEATURE_BIF_NUM_DIRLISTS - 1) | 262 | #define SGX_BIF_DIR_LIST_INDEX_EDM (SGX_FEATURE_BIF_NUM_DIRLISTS - 1) |
266 | #else | 263 | #else |
267 | #define SGX_BIF_DIR_LIST_INDEX_EDM (0) | 264 | #define SGX_BIF_DIR_LIST_INDEX_EDM (0) |
@@ -323,12 +320,16 @@ typedef struct _PVRSRV_SGX_MISCINFO_INFO | |||
323 | typedef struct _SGXMKIF_HWPERF_CB_ENTRY_ | 320 | typedef struct _SGXMKIF_HWPERF_CB_ENTRY_ |
324 | { | 321 | { |
325 | IMG_UINT32 ui32FrameNo; | 322 | IMG_UINT32 ui32FrameNo; |
323 | IMG_UINT32 ui32PID; | ||
324 | IMG_UINT32 ui32RTData; | ||
326 | IMG_UINT32 ui32Type; | 325 | IMG_UINT32 ui32Type; |
327 | IMG_UINT32 ui32Ordinal; | 326 | IMG_UINT32 ui32Ordinal; |
328 | IMG_UINT32 ui32Info; | 327 | IMG_UINT32 ui32Info; |
329 | IMG_UINT32 ui32TimeWraps; | 328 | IMG_UINT32 ui32TimeWraps; |
330 | IMG_UINT32 ui32Time; | 329 | IMG_UINT32 ui32Time; |
331 | IMG_UINT32 ui32Counters[SGX_FEATURE_MP_CORE_COUNT][PVRSRV_SGX_HWPERF_NUM_COUNTERS]; | 330 | |
331 | IMG_UINT32 ui32Counters[SGX_FEATURE_MP_CORE_COUNT_3D][PVRSRV_SGX_HWPERF_NUM_COUNTERS]; | ||
332 | IMG_UINT32 ui32MiscCounters[SGX_FEATURE_MP_CORE_COUNT_3D][PVRSRV_SGX_HWPERF_NUM_MISC_COUNTERS]; | ||
332 | } SGXMKIF_HWPERF_CB_ENTRY; | 333 | } SGXMKIF_HWPERF_CB_ENTRY; |
333 | 334 | ||
334 | typedef struct _SGXMKIF_HWPERF_CB_ | 335 | typedef struct _SGXMKIF_HWPERF_CB_ |
diff --git a/drivers/gpu/pvr/sgx_options.h b/drivers/gpu/pvr/sgx_options.h index 6f918947d8d..e81f3bf1d25 100644 --- a/drivers/gpu/pvr/sgx_options.h +++ b/drivers/gpu/pvr/sgx_options.h | |||
@@ -26,79 +26,84 @@ | |||
26 | 26 | ||
27 | #if defined(DEBUG) || defined (INTERNAL_TEST) | 27 | #if defined(DEBUG) || defined (INTERNAL_TEST) |
28 | #define DEBUG_SET_OFFSET OPTIONS_BIT0 | 28 | #define DEBUG_SET_OFFSET OPTIONS_BIT0 |
29 | #define OPTIONS_BIT0 0x1 | 29 | #define OPTIONS_BIT0 0x1U |
30 | #else | 30 | #else |
31 | #define OPTIONS_BIT0 0x0 | 31 | #define OPTIONS_BIT0 0x0 |
32 | #endif | 32 | #endif |
33 | 33 | ||
34 | #if defined(PDUMP) || defined (INTERNAL_TEST) | 34 | #if defined(PDUMP) || defined (INTERNAL_TEST) |
35 | #define PDUMP_SET_OFFSET OPTIONS_BIT1 | 35 | #define PDUMP_SET_OFFSET OPTIONS_BIT1 |
36 | #define OPTIONS_BIT1 (0x1 << 1) | 36 | #define OPTIONS_BIT1 (0x1U << 1) |
37 | #else | 37 | #else |
38 | #define OPTIONS_BIT1 0x0 | 38 | #define OPTIONS_BIT1 0x0 |
39 | #endif | 39 | #endif |
40 | 40 | ||
41 | #if defined(PVRSRV_USSE_EDM_STATUS_DEBUG) || defined (INTERNAL_TEST) | 41 | #if defined(PVRSRV_USSE_EDM_STATUS_DEBUG) || defined (INTERNAL_TEST) |
42 | #define PVRSRV_USSE_EDM_STATUS_DEBUG_SET_OFFSET OPTIONS_BIT2 | 42 | #define PVRSRV_USSE_EDM_STATUS_DEBUG_SET_OFFSET OPTIONS_BIT2 |
43 | #define OPTIONS_BIT2 (0x1 << 2) | 43 | #define OPTIONS_BIT2 (0x1U << 2) |
44 | #else | 44 | #else |
45 | #define OPTIONS_BIT2 0x0 | 45 | #define OPTIONS_BIT2 0x0 |
46 | #endif | 46 | #endif |
47 | 47 | ||
48 | #if defined(SUPPORT_HW_RECOVERY) || defined (INTERNAL_TEST) | 48 | #if defined(SUPPORT_HW_RECOVERY) || defined (INTERNAL_TEST) |
49 | #define SUPPORT_HW_RECOVERY_SET_OFFSET OPTIONS_BIT3 | 49 | #define SUPPORT_HW_RECOVERY_SET_OFFSET OPTIONS_BIT3 |
50 | #define OPTIONS_BIT3 (0x1 << 3) | 50 | #define OPTIONS_BIT3 (0x1U << 3) |
51 | #else | 51 | #else |
52 | #define OPTIONS_BIT3 0x0 | 52 | #define OPTIONS_BIT3 0x0 |
53 | #endif | 53 | #endif |
54 | 54 | ||
55 | 55 | ||
56 | 56 | ||
57 | #if defined (SUPPORT_SID_INTERFACE) | ||
58 | #define PVR_SECURE_HANDLES_SET_OFFSET OPTIONS_BIT4 | ||
59 | #define OPTIONS_BIT4 (0x1U << 4) | ||
60 | #else | ||
57 | #if defined(PVR_SECURE_HANDLES) || defined (INTERNAL_TEST) | 61 | #if defined(PVR_SECURE_HANDLES) || defined (INTERNAL_TEST) |
58 | #define PVR_SECURE_HANDLES_SET_OFFSET OPTIONS_BIT4 | 62 | #define PVR_SECURE_HANDLES_SET_OFFSET OPTIONS_BIT4 |
59 | #define OPTIONS_BIT4 (0x1 << 4) | 63 | #define OPTIONS_BIT4 (0x1U << 4) |
60 | #else | 64 | #else |
61 | #define OPTIONS_BIT4 0x0 | 65 | #define OPTIONS_BIT4 0x0 |
62 | #endif | 66 | #endif |
67 | #endif | ||
63 | 68 | ||
64 | #if defined(SGX_BYPASS_SYSTEM_CACHE) || defined (INTERNAL_TEST) | 69 | #if defined(SGX_BYPASS_SYSTEM_CACHE) || defined (INTERNAL_TEST) |
65 | #define SGX_BYPASS_SYSTEM_CACHE_SET_OFFSET OPTIONS_BIT5 | 70 | #define SGX_BYPASS_SYSTEM_CACHE_SET_OFFSET OPTIONS_BIT5 |
66 | #define OPTIONS_BIT5 (0x1 << 5) | 71 | #define OPTIONS_BIT5 (0x1U << 5) |
67 | #else | 72 | #else |
68 | #define OPTIONS_BIT5 0x0 | 73 | #define OPTIONS_BIT5 0x0 |
69 | #endif | 74 | #endif |
70 | 75 | ||
71 | #if defined(SGX_DMS_AGE_ENABLE) || defined (INTERNAL_TEST) | 76 | #if defined(SGX_DMS_AGE_ENABLE) || defined (INTERNAL_TEST) |
72 | #define SGX_DMS_AGE_ENABLE_SET_OFFSET OPTIONS_BIT6 | 77 | #define SGX_DMS_AGE_ENABLE_SET_OFFSET OPTIONS_BIT6 |
73 | #define OPTIONS_BIT6 (0x1 << 6) | 78 | #define OPTIONS_BIT6 (0x1U << 6) |
74 | #else | 79 | #else |
75 | #define OPTIONS_BIT6 0x0 | 80 | #define OPTIONS_BIT6 0x0 |
76 | #endif | 81 | #endif |
77 | 82 | ||
78 | #if defined(SGX_FAST_DPM_INIT) || defined (INTERNAL_TEST) | 83 | #if defined(SGX_FAST_DPM_INIT) || defined (INTERNAL_TEST) |
79 | #define SGX_FAST_DPM_INIT_SET_OFFSET OPTIONS_BIT8 | 84 | #define SGX_FAST_DPM_INIT_SET_OFFSET OPTIONS_BIT8 |
80 | #define OPTIONS_BIT8 (0x1 << 8) | 85 | #define OPTIONS_BIT8 (0x1U << 8) |
81 | #else | 86 | #else |
82 | #define OPTIONS_BIT8 0x0 | 87 | #define OPTIONS_BIT8 0x0 |
83 | #endif | 88 | #endif |
84 | 89 | ||
85 | #if defined(SGX_FEATURE_WRITEBACK_DCU) || defined (INTERNAL_TEST) | 90 | #if defined(SGX_FEATURE_WRITEBACK_DCU) || defined (INTERNAL_TEST) |
86 | #define SGX_FEATURE_DCU_SET_OFFSET OPTIONS_BIT9 | 91 | #define SGX_FEATURE_DCU_SET_OFFSET OPTIONS_BIT9 |
87 | #define OPTIONS_BIT9 (0x1 << 9) | 92 | #define OPTIONS_BIT9 (0x1U << 9) |
88 | #else | 93 | #else |
89 | #define OPTIONS_BIT9 0x0 | 94 | #define OPTIONS_BIT9 0x0 |
90 | #endif | 95 | #endif |
91 | 96 | ||
92 | #if defined(SGX_FEATURE_MP) || defined (INTERNAL_TEST) | 97 | #if defined(SGX_FEATURE_MP) || defined (INTERNAL_TEST) |
93 | #define SGX_FEATURE_MP_SET_OFFSET OPTIONS_BIT10 | 98 | #define SGX_FEATURE_MP_SET_OFFSET OPTIONS_BIT10 |
94 | #define OPTIONS_BIT10 (0x1 << 10) | 99 | #define OPTIONS_BIT10 (0x1U << 10) |
95 | #else | 100 | #else |
96 | #define OPTIONS_BIT10 0x0 | 101 | #define OPTIONS_BIT10 0x0 |
97 | #endif | 102 | #endif |
98 | 103 | ||
99 | #if defined(SGX_FEATURE_MULTITHREADED_UKERNEL) || defined (INTERNAL_TEST) | 104 | #if defined(SGX_FEATURE_MULTITHREADED_UKERNEL) || defined (INTERNAL_TEST) |
100 | #define SGX_FEATURE_MULTITHREADED_UKERNEL_SET_OFFSET OPTIONS_BIT11 | 105 | #define SGX_FEATURE_MULTITHREADED_UKERNEL_SET_OFFSET OPTIONS_BIT11 |
101 | #define OPTIONS_BIT11 (0x1 << 11) | 106 | #define OPTIONS_BIT11 (0x1U << 11) |
102 | #else | 107 | #else |
103 | #define OPTIONS_BIT11 0x0 | 108 | #define OPTIONS_BIT11 0x0 |
104 | #endif | 109 | #endif |
@@ -107,7 +112,7 @@ | |||
107 | 112 | ||
108 | #if defined(SGX_FEATURE_OVERLAPPED_SPM) || defined (INTERNAL_TEST) | 113 | #if defined(SGX_FEATURE_OVERLAPPED_SPM) || defined (INTERNAL_TEST) |
109 | #define SGX_FEATURE_OVERLAPPED_SPM_SET_OFFSET OPTIONS_BIT12 | 114 | #define SGX_FEATURE_OVERLAPPED_SPM_SET_OFFSET OPTIONS_BIT12 |
110 | #define OPTIONS_BIT12 (0x1 << 12) | 115 | #define OPTIONS_BIT12 (0x1U << 12) |
111 | #else | 116 | #else |
112 | #define OPTIONS_BIT12 0x0 | 117 | #define OPTIONS_BIT12 0x0 |
113 | #endif | 118 | #endif |
@@ -115,14 +120,14 @@ | |||
115 | 120 | ||
116 | #if defined(SGX_FEATURE_SYSTEM_CACHE) || defined (INTERNAL_TEST) | 121 | #if defined(SGX_FEATURE_SYSTEM_CACHE) || defined (INTERNAL_TEST) |
117 | #define SGX_FEATURE_SYSTEM_CACHE_SET_OFFSET OPTIONS_BIT13 | 122 | #define SGX_FEATURE_SYSTEM_CACHE_SET_OFFSET OPTIONS_BIT13 |
118 | #define OPTIONS_BIT13 (0x1 << 13) | 123 | #define OPTIONS_BIT13 (0x1U << 13) |
119 | #else | 124 | #else |
120 | #define OPTIONS_BIT13 0x0 | 125 | #define OPTIONS_BIT13 0x0 |
121 | #endif | 126 | #endif |
122 | 127 | ||
123 | #if defined(SGX_SUPPORT_HWPROFILING) || defined (INTERNAL_TEST) | 128 | #if defined(SGX_SUPPORT_HWPROFILING) || defined (INTERNAL_TEST) |
124 | #define SGX_SUPPORT_HWPROFILING_SET_OFFSET OPTIONS_BIT14 | 129 | #define SGX_SUPPORT_HWPROFILING_SET_OFFSET OPTIONS_BIT14 |
125 | #define OPTIONS_BIT14 (0x1 << 14) | 130 | #define OPTIONS_BIT14 (0x1U << 14) |
126 | #else | 131 | #else |
127 | #define OPTIONS_BIT14 0x0 | 132 | #define OPTIONS_BIT14 0x0 |
128 | #endif | 133 | #endif |
@@ -131,28 +136,28 @@ | |||
131 | 136 | ||
132 | #if defined(SUPPORT_ACTIVE_POWER_MANAGEMENT) || defined (INTERNAL_TEST) | 137 | #if defined(SUPPORT_ACTIVE_POWER_MANAGEMENT) || defined (INTERNAL_TEST) |
133 | #define SUPPORT_ACTIVE_POWER_MANAGEMENT_SET_OFFSET OPTIONS_BIT15 | 138 | #define SUPPORT_ACTIVE_POWER_MANAGEMENT_SET_OFFSET OPTIONS_BIT15 |
134 | #define OPTIONS_BIT15 (0x1 << 15) | 139 | #define OPTIONS_BIT15 (0x1U << 15) |
135 | #else | 140 | #else |
136 | #define OPTIONS_BIT15 0x0 | 141 | #define OPTIONS_BIT15 0x0 |
137 | #endif | 142 | #endif |
138 | 143 | ||
139 | #if defined(SUPPORT_DISPLAYCONTROLLER_TILING) || defined (INTERNAL_TEST) | 144 | #if defined(SUPPORT_DISPLAYCONTROLLER_TILING) || defined (INTERNAL_TEST) |
140 | #define SUPPORT_DISPLAYCONTROLLER_TILING_SET_OFFSET OPTIONS_BIT16 | 145 | #define SUPPORT_DISPLAYCONTROLLER_TILING_SET_OFFSET OPTIONS_BIT16 |
141 | #define OPTIONS_BIT16 (0x1 << 16) | 146 | #define OPTIONS_BIT16 (0x1U << 16) |
142 | #else | 147 | #else |
143 | #define OPTIONS_BIT16 0x0 | 148 | #define OPTIONS_BIT16 0x0 |
144 | #endif | 149 | #endif |
145 | 150 | ||
146 | #if defined(SUPPORT_PERCONTEXT_PB) || defined (INTERNAL_TEST) | 151 | #if defined(SUPPORT_PERCONTEXT_PB) || defined (INTERNAL_TEST) |
147 | #define SUPPORT_PERCONTEXT_PB_SET_OFFSET OPTIONS_BIT17 | 152 | #define SUPPORT_PERCONTEXT_PB_SET_OFFSET OPTIONS_BIT17 |
148 | #define OPTIONS_BIT17 (0x1 << 17) | 153 | #define OPTIONS_BIT17 (0x1U << 17) |
149 | #else | 154 | #else |
150 | #define OPTIONS_BIT17 0x0 | 155 | #define OPTIONS_BIT17 0x0 |
151 | #endif | 156 | #endif |
152 | 157 | ||
153 | #if defined(SUPPORT_SGX_HWPERF) || defined (INTERNAL_TEST) | 158 | #if defined(SUPPORT_SGX_HWPERF) || defined (INTERNAL_TEST) |
154 | #define SUPPORT_SGX_HWPERF_SET_OFFSET OPTIONS_BIT18 | 159 | #define SUPPORT_SGX_HWPERF_SET_OFFSET OPTIONS_BIT18 |
155 | #define OPTIONS_BIT18 (0x1 << 18) | 160 | #define OPTIONS_BIT18 (0x1U << 18) |
156 | #else | 161 | #else |
157 | #define OPTIONS_BIT18 0x0 | 162 | #define OPTIONS_BIT18 0x0 |
158 | #endif | 163 | #endif |
@@ -161,38 +166,45 @@ | |||
161 | 166 | ||
162 | #if defined(SUPPORT_SGX_MMU_DUMMY_PAGE) || defined (INTERNAL_TEST) | 167 | #if defined(SUPPORT_SGX_MMU_DUMMY_PAGE) || defined (INTERNAL_TEST) |
163 | #define SUPPORT_SGX_MMU_DUMMY_PAGE_SET_OFFSET OPTIONS_BIT19 | 168 | #define SUPPORT_SGX_MMU_DUMMY_PAGE_SET_OFFSET OPTIONS_BIT19 |
164 | #define OPTIONS_BIT19 (0x1 << 19) | 169 | #define OPTIONS_BIT19 (0x1U << 19) |
165 | #else | 170 | #else |
166 | #define OPTIONS_BIT19 0x0 | 171 | #define OPTIONS_BIT19 0x0 |
167 | #endif | 172 | #endif |
168 | 173 | ||
169 | #if defined(SUPPORT_SGX_PRIORITY_SCHEDULING) || defined (INTERNAL_TEST) | 174 | #if defined(SUPPORT_SGX_PRIORITY_SCHEDULING) || defined (INTERNAL_TEST) |
170 | #define SUPPORT_SGX_PRIORITY_SCHEDULING_SET_OFFSET OPTIONS_BIT20 | 175 | #define SUPPORT_SGX_PRIORITY_SCHEDULING_SET_OFFSET OPTIONS_BIT20 |
171 | #define OPTIONS_BIT20 (0x1 << 20) | 176 | #define OPTIONS_BIT20 (0x1U << 20) |
172 | #else | 177 | #else |
173 | #define OPTIONS_BIT20 0x0 | 178 | #define OPTIONS_BIT20 0x0 |
174 | #endif | 179 | #endif |
175 | 180 | ||
176 | #if defined(SUPPORT_SGX_LOW_LATENCY_SCHEDULING) || defined (INTERNAL_TEST) | 181 | #if defined(SUPPORT_SGX_LOW_LATENCY_SCHEDULING) || defined (INTERNAL_TEST) |
177 | #define SUPPORT_SGX_LOW_LATENCY_SCHEDULING_SET_OFFSET OPTIONS_BIT21 | 182 | #define SUPPORT_SGX_LOW_LATENCY_SCHEDULING_SET_OFFSET OPTIONS_BIT21 |
178 | #define OPTIONS_BIT21 (0x1 << 21) | 183 | #define OPTIONS_BIT21 (0x1U << 21) |
179 | #else | 184 | #else |
180 | #define OPTIONS_BIT21 0x0 | 185 | #define OPTIONS_BIT21 0x0 |
181 | #endif | 186 | #endif |
182 | 187 | ||
183 | #if defined(USE_SUPPORT_NO_TA3D_OVERLAP) || defined (INTERNAL_TEST) | 188 | #if defined(USE_SUPPORT_NO_TA3D_OVERLAP) || defined (INTERNAL_TEST) |
184 | #define USE_SUPPORT_NO_TA3D_OVERLAP_SET_OFFSET OPTIONS_BIT22 | 189 | #define USE_SUPPORT_NO_TA3D_OVERLAP_SET_OFFSET OPTIONS_BIT22 |
185 | #define OPTIONS_BIT22 (0x1 << 22) | 190 | #define OPTIONS_BIT22 (0x1U << 22) |
186 | #else | 191 | #else |
187 | #define OPTIONS_BIT22 0x0 | 192 | #define OPTIONS_BIT22 0x0 |
188 | #endif | 193 | #endif |
189 | 194 | ||
190 | |||
191 | #if defined(SGX_FEATURE_MP) || defined (INTERNAL_TEST) | 195 | #if defined(SGX_FEATURE_MP) || defined (INTERNAL_TEST) |
196 | #if defined(SGX_FEATURE_MP_CORE_COUNT) | ||
192 | #define OPTIONS_HIGHBYTE ((SGX_FEATURE_MP_CORE_COUNT-1) << SGX_FEATURE_MP_CORE_COUNT_SET_OFFSET) | 197 | #define OPTIONS_HIGHBYTE ((SGX_FEATURE_MP_CORE_COUNT-1) << SGX_FEATURE_MP_CORE_COUNT_SET_OFFSET) |
193 | #define SGX_FEATURE_MP_CORE_COUNT_SET_OFFSET 28UL | 198 | #define SGX_FEATURE_MP_CORE_COUNT_SET_OFFSET 28UL |
194 | #define SGX_FEATURE_MP_CORE_COUNT_SET_MASK 0xFF | 199 | #define SGX_FEATURE_MP_CORE_COUNT_SET_MASK 0xFF |
195 | #else | 200 | #else |
201 | #define OPTIONS_HIGHBYTE (((SGX_FEATURE_MP_CORE_COUNT_TA-1) << SGX_FEATURE_MP_CORE_COUNT_SET_OFFSET) |\ | ||
202 | ((SGX_FEATURE_MP_CORE_COUNT_3D-1) << SGX_FEATURE_MP_CORE_COUNT_SET_OFFSET_3D)) | ||
203 | #define SGX_FEATURE_MP_CORE_COUNT_SET_OFFSET 24UL | ||
204 | #define SGX_FEATURE_MP_CORE_COUNT_SET_OFFSET_3D 28UL | ||
205 | #define SGX_FEATURE_MP_CORE_COUNT_SET_MASK 0xFF | ||
206 | #endif | ||
207 | #else | ||
196 | #define OPTIONS_HIGHBYTE 0x0 | 208 | #define OPTIONS_HIGHBYTE 0x0 |
197 | #endif | 209 | #endif |
198 | 210 | ||
diff --git a/drivers/gpu/pvr/sgxapi_km.h b/drivers/gpu/pvr/sgxapi_km.h index f38a85c0dcd..3e4b281b3f9 100644 --- a/drivers/gpu/pvr/sgxapi_km.h +++ b/drivers/gpu/pvr/sgxapi_km.h | |||
@@ -51,19 +51,25 @@ extern "C" { | |||
51 | #define SGX_PDSPIXEL_CODEDATA_HEAP_ID 6 | 51 | #define SGX_PDSPIXEL_CODEDATA_HEAP_ID 6 |
52 | #define SGX_PDSVERTEX_CODEDATA_HEAP_ID 7 | 52 | #define SGX_PDSVERTEX_CODEDATA_HEAP_ID 7 |
53 | #define SGX_SYNCINFO_HEAP_ID 8 | 53 | #define SGX_SYNCINFO_HEAP_ID 8 |
54 | #define SGX_3DPARAMETERS_HEAP_ID 9 | 54 | #define SGX_SHARED_3DPARAMETERS_HEAP_ID 9 |
55 | #define SGX_PERCONTEXT_3DPARAMETERS_HEAP_ID 10 | ||
55 | #if defined(SUPPORT_SGX_GENERAL_MAPPING_HEAP) | 56 | #if defined(SUPPORT_SGX_GENERAL_MAPPING_HEAP) |
56 | #define SGX_GENERAL_MAPPING_HEAP_ID 10 | 57 | #define SGX_GENERAL_MAPPING_HEAP_ID 11 |
57 | #endif | 58 | #endif |
58 | #if defined(SGX_FEATURE_2D_HARDWARE) | 59 | #if defined(SGX_FEATURE_2D_HARDWARE) |
59 | #define SGX_2D_HEAP_ID 11 | 60 | #define SGX_2D_HEAP_ID 12 |
60 | #else | 61 | #else |
61 | #if defined(FIX_HW_BRN_26915) | 62 | #if defined(FIX_HW_BRN_26915) |
62 | #define SGX_CGBUFFER_HEAP_ID 12 | 63 | #define SGX_CGBUFFER_HEAP_ID 13 |
63 | #endif | 64 | #endif |
64 | #endif | 65 | #endif |
65 | #define SGX_MAX_HEAP_ID 13 | 66 | #define SGX_MAX_HEAP_ID 14 |
66 | 67 | ||
68 | #if (defined(SUPPORT_PERCONTEXT_PB) || defined(SUPPORT_HYBRID_PB)) | ||
69 | #define SGX_3DPARAMETERS_HEAP_ID SGX_PERCONTEXT_3DPARAMETERS_HEAP_ID | ||
70 | #else | ||
71 | #define SGX_3DPARAMETERS_HEAP_ID SGX_SHARED_3DPARAMETERS_HEAP_ID | ||
72 | #endif | ||
67 | #if defined(SGX543) || defined(SGX544) || defined(SGX554) | 73 | #if defined(SGX543) || defined(SGX544) || defined(SGX554) |
68 | #define SGX_USE_CODE_SEGMENT_RANGE_BITS 23 | 74 | #define SGX_USE_CODE_SEGMENT_RANGE_BITS 23 |
69 | #else | 75 | #else |
@@ -78,20 +84,17 @@ extern "C" { | |||
78 | #define SGX_MAX_TA_SRC_SYNCS 1 | 84 | #define SGX_MAX_TA_SRC_SYNCS 1 |
79 | #define SGX_MAX_3D_SRC_SYNCS 4 | 85 | #define SGX_MAX_3D_SRC_SYNCS 4 |
80 | #else | 86 | #else |
81 | #if defined(ANDROID) | ||
82 | #define SGX_MAX_SRC_SYNCS 8 | 87 | #define SGX_MAX_SRC_SYNCS 8 |
83 | #define SGX_MAX_DST_SYNCS 1 | 88 | #define SGX_MAX_DST_SYNCS 1 |
84 | #else | ||
85 | #define SGX_MAX_SRC_SYNCS 4 | ||
86 | #define SGX_MAX_DST_SYNCS 1 | ||
87 | #endif | ||
88 | #endif | 89 | #endif |
89 | 90 | ||
90 | 91 | ||
91 | #if defined(SGX_FEATURE_EXTENDED_PERF_COUNTERS) | 92 | #if defined(SGX_FEATURE_EXTENDED_PERF_COUNTERS) |
92 | #define PVRSRV_SGX_HWPERF_NUM_COUNTERS 8 | 93 | #define PVRSRV_SGX_HWPERF_NUM_COUNTERS 8 |
94 | #define PVRSRV_SGX_HWPERF_NUM_MISC_COUNTERS 11 | ||
93 | #else | 95 | #else |
94 | #define PVRSRV_SGX_HWPERF_NUM_COUNTERS 9 | 96 | #define PVRSRV_SGX_HWPERF_NUM_COUNTERS 9 |
97 | #define PVRSRV_SGX_HWPERF_NUM_MISC_COUNTERS 8 | ||
95 | #endif | 98 | #endif |
96 | 99 | ||
97 | #define PVRSRV_SGX_HWPERF_INVALID 0x1 | 100 | #define PVRSRV_SGX_HWPERF_INVALID 0x1 |
@@ -102,11 +105,19 @@ extern "C" { | |||
102 | #define PVRSRV_SGX_HWPERF_2D 0x5 | 105 | #define PVRSRV_SGX_HWPERF_2D 0x5 |
103 | #define PVRSRV_SGX_HWPERF_POWER 0x6 | 106 | #define PVRSRV_SGX_HWPERF_POWER 0x6 |
104 | #define PVRSRV_SGX_HWPERF_PERIODIC 0x7 | 107 | #define PVRSRV_SGX_HWPERF_PERIODIC 0x7 |
108 | #define PVRSRV_SGX_HWPERF_3DSPM 0x8 | ||
105 | 109 | ||
106 | #define PVRSRV_SGX_HWPERF_MK_EVENT 0x101 | 110 | #define PVRSRV_SGX_HWPERF_MK_EVENT 0x101 |
107 | #define PVRSRV_SGX_HWPERF_MK_TA 0x102 | 111 | #define PVRSRV_SGX_HWPERF_MK_TA 0x102 |
108 | #define PVRSRV_SGX_HWPERF_MK_3D 0x103 | 112 | #define PVRSRV_SGX_HWPERF_MK_3D 0x103 |
109 | #define PVRSRV_SGX_HWPERF_MK_2D 0x104 | 113 | #define PVRSRV_SGX_HWPERF_MK_2D 0x104 |
114 | #define PVRSRV_SGX_HWPERF_MK_TRANSFER_DUMMY 0x105 | ||
115 | #define PVRSRV_SGX_HWPERF_MK_TA_DUMMY 0x106 | ||
116 | #define PVRSRV_SGX_HWPERF_MK_3D_DUMMY 0x107 | ||
117 | #define PVRSRV_SGX_HWPERF_MK_2D_DUMMY 0x108 | ||
118 | #define PVRSRV_SGX_HWPERF_MK_TA_LOCKUP 0x109 | ||
119 | #define PVRSRV_SGX_HWPERF_MK_3D_LOCKUP 0x10A | ||
120 | #define PVRSRV_SGX_HWPERF_MK_2D_LOCKUP 0x10B | ||
110 | 121 | ||
111 | #define PVRSRV_SGX_HWPERF_TYPE_STARTEND_BIT 28 | 122 | #define PVRSRV_SGX_HWPERF_TYPE_STARTEND_BIT 28 |
112 | #define PVRSRV_SGX_HWPERF_TYPE_OP_MASK ((1UL << PVRSRV_SGX_HWPERF_TYPE_STARTEND_BIT) - 1) | 123 | #define PVRSRV_SGX_HWPERF_TYPE_OP_MASK ((1UL << PVRSRV_SGX_HWPERF_TYPE_STARTEND_BIT) - 1) |
@@ -124,6 +135,19 @@ extern "C" { | |||
124 | #define PVRSRV_SGX_HWPERF_TYPE_POWER_START (PVRSRV_SGX_HWPERF_POWER | PVRSRV_SGX_HWPERF_TYPE_OP_START) | 135 | #define PVRSRV_SGX_HWPERF_TYPE_POWER_START (PVRSRV_SGX_HWPERF_POWER | PVRSRV_SGX_HWPERF_TYPE_OP_START) |
125 | #define PVRSRV_SGX_HWPERF_TYPE_POWER_END (PVRSRV_SGX_HWPERF_POWER | PVRSRV_SGX_HWPERF_TYPE_OP_END) | 136 | #define PVRSRV_SGX_HWPERF_TYPE_POWER_END (PVRSRV_SGX_HWPERF_POWER | PVRSRV_SGX_HWPERF_TYPE_OP_END) |
126 | #define PVRSRV_SGX_HWPERF_TYPE_PERIODIC (PVRSRV_SGX_HWPERF_PERIODIC) | 137 | #define PVRSRV_SGX_HWPERF_TYPE_PERIODIC (PVRSRV_SGX_HWPERF_PERIODIC) |
138 | #define PVRSRV_SGX_HWPERF_TYPE_3DSPM_START (PVRSRV_SGX_HWPERF_3DSPM | PVRSRV_SGX_HWPERF_TYPE_OP_START) | ||
139 | #define PVRSRV_SGX_HWPERF_TYPE_3DSPM_END (PVRSRV_SGX_HWPERF_3DSPM | PVRSRV_SGX_HWPERF_TYPE_OP_END) | ||
140 | #define PVRSRV_SGX_HWPERF_TYPE_MK_TRANSFER_DUMMY_START (PVRSRV_SGX_HWPERF_MK_TRANSFER_DUMMY | PVRSRV_SGX_HWPERF_TYPE_OP_START) | ||
141 | #define PVRSRV_SGX_HWPERF_TYPE_MK_TRANSFER_DUMMY_END (PVRSRV_SGX_HWPERF_MK_TRANSFER_DUMMY | PVRSRV_SGX_HWPERF_TYPE_OP_END) | ||
142 | #define PVRSRV_SGX_HWPERF_TYPE_MK_TA_DUMMY_START (PVRSRV_SGX_HWPERF_MK_TA_DUMMY | PVRSRV_SGX_HWPERF_TYPE_OP_START) | ||
143 | #define PVRSRV_SGX_HWPERF_TYPE_MK_TA_DUMMY_END (PVRSRV_SGX_HWPERF_MK_TA_DUMMY | PVRSRV_SGX_HWPERF_TYPE_OP_END) | ||
144 | #define PVRSRV_SGX_HWPERF_TYPE_MK_3D_DUMMY_START (PVRSRV_SGX_HWPERF_MK_3D_DUMMY | PVRSRV_SGX_HWPERF_TYPE_OP_START) | ||
145 | #define PVRSRV_SGX_HWPERF_TYPE_MK_3D_DUMMY_END (PVRSRV_SGX_HWPERF_MK_3D_DUMMY | PVRSRV_SGX_HWPERF_TYPE_OP_END) | ||
146 | #define PVRSRV_SGX_HWPERF_TYPE_MK_2D_DUMMY_START (PVRSRV_SGX_HWPERF_MK_2D_DUMMY | PVRSRV_SGX_HWPERF_TYPE_OP_START) | ||
147 | #define PVRSRV_SGX_HWPERF_TYPE_MK_2D_DUMMY_END (PVRSRV_SGX_HWPERF_MK_2D_DUMMY | PVRSRV_SGX_HWPERF_TYPE_OP_END) | ||
148 | #define PVRSRV_SGX_HWPERF_TYPE_MK_TA_LOCKUP (PVRSRV_SGX_HWPERF_MK_TA_LOCKUP) | ||
149 | #define PVRSRV_SGX_HWPERF_TYPE_MK_3D_LOCKUP (PVRSRV_SGX_HWPERF_MK_3D_LOCKUP) | ||
150 | #define PVRSRV_SGX_HWPERF_TYPE_MK_2D_LOCKUP (PVRSRV_SGX_HWPERF_MK_2D_LOCKUP) | ||
127 | 151 | ||
128 | #define PVRSRV_SGX_HWPERF_TYPE_MK_EVENT_START (PVRSRV_SGX_HWPERF_MK_EVENT | PVRSRV_SGX_HWPERF_TYPE_OP_START) | 152 | #define PVRSRV_SGX_HWPERF_TYPE_MK_EVENT_START (PVRSRV_SGX_HWPERF_MK_EVENT | PVRSRV_SGX_HWPERF_TYPE_OP_START) |
129 | #define PVRSRV_SGX_HWPERF_TYPE_MK_EVENT_END (PVRSRV_SGX_HWPERF_MK_EVENT | PVRSRV_SGX_HWPERF_TYPE_OP_END) | 153 | #define PVRSRV_SGX_HWPERF_TYPE_MK_EVENT_END (PVRSRV_SGX_HWPERF_MK_EVENT | PVRSRV_SGX_HWPERF_TYPE_OP_END) |
@@ -144,11 +168,15 @@ extern "C" { | |||
144 | typedef struct _PVRSRV_SGX_HWPERF_CB_ENTRY_ | 168 | typedef struct _PVRSRV_SGX_HWPERF_CB_ENTRY_ |
145 | { | 169 | { |
146 | IMG_UINT32 ui32FrameNo; | 170 | IMG_UINT32 ui32FrameNo; |
171 | IMG_UINT32 ui32PID; | ||
172 | IMG_UINT32 ui32RTData; | ||
147 | IMG_UINT32 ui32Type; | 173 | IMG_UINT32 ui32Type; |
148 | IMG_UINT32 ui32Ordinal; | 174 | IMG_UINT32 ui32Ordinal; |
149 | IMG_UINT32 ui32Info; | 175 | IMG_UINT32 ui32Info; |
150 | IMG_UINT32 ui32Clocksx16; | 176 | IMG_UINT32 ui32Clocksx16; |
151 | IMG_UINT32 ui32Counters[SGX_FEATURE_MP_CORE_COUNT][PVRSRV_SGX_HWPERF_NUM_COUNTERS]; | 177 | |
178 | IMG_UINT32 ui32Counters[SGX_FEATURE_MP_CORE_COUNT_3D][PVRSRV_SGX_HWPERF_NUM_COUNTERS]; | ||
179 | IMG_UINT32 ui32MiscCounters[SGX_FEATURE_MP_CORE_COUNT_3D][PVRSRV_SGX_HWPERF_NUM_MISC_COUNTERS]; | ||
152 | } PVRSRV_SGX_HWPERF_CB_ENTRY; | 180 | } PVRSRV_SGX_HWPERF_CB_ENTRY; |
153 | 181 | ||
154 | 182 | ||
@@ -171,7 +199,6 @@ typedef enum _SGX_MISC_INFO_REQUEST_ | |||
171 | SGX_MISC_INFO_REQUEST_SET_HWPERF_STATUS, | 199 | SGX_MISC_INFO_REQUEST_SET_HWPERF_STATUS, |
172 | #if defined(SGX_FEATURE_DATA_BREAKPOINTS) | 200 | #if defined(SGX_FEATURE_DATA_BREAKPOINTS) |
173 | SGX_MISC_INFO_REQUEST_SET_BREAKPOINT, | 201 | SGX_MISC_INFO_REQUEST_SET_BREAKPOINT, |
174 | SGX_MISC_INFO_REQUEST_WAIT_FOR_BREAKPOINT, | ||
175 | SGX_MISC_INFO_REQUEST_POLL_BREAKPOINT, | 202 | SGX_MISC_INFO_REQUEST_POLL_BREAKPOINT, |
176 | SGX_MISC_INFO_REQUEST_RESUME_BREAKPOINT, | 203 | SGX_MISC_INFO_REQUEST_RESUME_BREAKPOINT, |
177 | #endif | 204 | #endif |
@@ -274,6 +301,7 @@ typedef struct _PVRSRV_SGX_MISCINFO_SET_HWPERF_STATUS | |||
274 | typedef struct _SGX_MISC_INFO_ | 301 | typedef struct _SGX_MISC_INFO_ |
275 | { | 302 | { |
276 | SGX_MISC_INFO_REQUEST eRequest; | 303 | SGX_MISC_INFO_REQUEST eRequest; |
304 | IMG_UINT32 ui32Padding; | ||
277 | #if defined(SUPPORT_SGX_EDM_MEMORY_DEBUG) | 305 | #if defined(SUPPORT_SGX_EDM_MEMORY_DEBUG) |
278 | IMG_DEV_VIRTADDR sDevVAddrSrc; | 306 | IMG_DEV_VIRTADDR sDevVAddrSrc; |
279 | IMG_DEV_VIRTADDR sDevVAddrDest; | 307 | IMG_DEV_VIRTADDR sDevVAddrDest; |
@@ -323,6 +351,7 @@ typedef struct _PVRSRV_SGX_PDUMP_CONTEXT_ | |||
323 | } PVRSRV_SGX_PDUMP_CONTEXT; | 351 | } PVRSRV_SGX_PDUMP_CONTEXT; |
324 | 352 | ||
325 | 353 | ||
354 | #if !defined (SUPPORT_SID_INTERFACE) | ||
326 | typedef struct _SGX_KICKTA_DUMP_ROFF_ | 355 | typedef struct _SGX_KICKTA_DUMP_ROFF_ |
327 | { | 356 | { |
328 | IMG_HANDLE hKernelMemInfo; | 357 | IMG_HANDLE hKernelMemInfo; |
@@ -331,8 +360,13 @@ typedef struct _SGX_KICKTA_DUMP_ROFF_ | |||
331 | IMG_UINT32 ui32Value; | 360 | IMG_UINT32 ui32Value; |
332 | IMG_PCHAR pszName; | 361 | IMG_PCHAR pszName; |
333 | } SGX_KICKTA_DUMP_ROFF, *PSGX_KICKTA_DUMP_ROFF; | 362 | } SGX_KICKTA_DUMP_ROFF, *PSGX_KICKTA_DUMP_ROFF; |
363 | #endif | ||
334 | 364 | ||
365 | #if defined (SUPPORT_SID_INTERFACE) | ||
366 | typedef struct _SGX_KICKTA_DUMP_BUFFER_KM_ | ||
367 | #else | ||
335 | typedef struct _SGX_KICKTA_DUMP_BUFFER_ | 368 | typedef struct _SGX_KICKTA_DUMP_BUFFER_ |
369 | #endif | ||
336 | { | 370 | { |
337 | IMG_UINT32 ui32SpaceUsed; | 371 | IMG_UINT32 ui32SpaceUsed; |
338 | IMG_UINT32 ui32Start; | 372 | IMG_UINT32 ui32Start; |
@@ -347,8 +381,13 @@ typedef struct _SGX_KICKTA_DUMP_BUFFER_ | |||
347 | IMG_DEV_VIRTADDR sCtrlDevVAddr; | 381 | IMG_DEV_VIRTADDR sCtrlDevVAddr; |
348 | #endif | 382 | #endif |
349 | IMG_PCHAR pszName; | 383 | IMG_PCHAR pszName; |
384 | #if defined (SUPPORT_SID_INTERFACE) | ||
385 | } SGX_KICKTA_DUMP_BUFFER_KM, *PSGX_KICKTA_DUMP_BUFFER_KM; | ||
386 | #else | ||
350 | } SGX_KICKTA_DUMP_BUFFER, *PSGX_KICKTA_DUMP_BUFFER; | 387 | } SGX_KICKTA_DUMP_BUFFER, *PSGX_KICKTA_DUMP_BUFFER; |
388 | #endif | ||
351 | 389 | ||
390 | #if !defined (SUPPORT_SID_INTERFACE) | ||
352 | #ifdef PDUMP | 391 | #ifdef PDUMP |
353 | typedef struct _SGX_KICKTA_PDUMP_ | 392 | typedef struct _SGX_KICKTA_PDUMP_ |
354 | { | 393 | { |
@@ -365,6 +404,7 @@ typedef struct _SGX_KICKTA_PDUMP_ | |||
365 | IMG_UINT32 ui32ROffArraySize; | 404 | IMG_UINT32 ui32ROffArraySize; |
366 | } SGX_KICKTA_PDUMP, *PSGX_KICKTA_PDUMP; | 405 | } SGX_KICKTA_PDUMP, *PSGX_KICKTA_PDUMP; |
367 | #endif | 406 | #endif |
407 | #endif | ||
368 | 408 | ||
369 | #if defined(TRANSFER_QUEUE) | 409 | #if defined(TRANSFER_QUEUE) |
370 | #if defined(SGX_FEATURE_2D_HARDWARE) | 410 | #if defined(SGX_FEATURE_2D_HARDWARE) |
diff --git a/drivers/gpu/pvr/sgxdefs.h b/drivers/gpu/pvr/sgxdefs.h index 9e5effbc853..3b870596fb5 100644 --- a/drivers/gpu/pvr/sgxdefs.h +++ b/drivers/gpu/pvr/sgxdefs.h | |||
@@ -45,11 +45,12 @@ | |||
45 | #if defined(SGX540) | 45 | #if defined(SGX540) |
46 | #include "sgx540defs.h" | 46 | #include "sgx540defs.h" |
47 | #else | 47 | #else |
48 | #if defined(SGX541) | ||
49 | #include "sgx541defs.h" | ||
50 | #else | ||
51 | #if defined(SGX543) | 48 | #if defined(SGX543) |
49 | #if SGX_CORE_REV == 113 || SGX_CORE_REV == 122 || SGX_CORE_REV == 1221 || SGX_CORE_REV == 140 | ||
50 | #include "sgx543_v1.164defs.h" | ||
51 | #else | ||
52 | #include "sgx543defs.h" | 52 | #include "sgx543defs.h" |
53 | #endif | ||
53 | #else | 54 | #else |
54 | #if defined(SGX544) | 55 | #if defined(SGX544) |
55 | #include "sgx544defs.h" | 56 | #include "sgx544defs.h" |
@@ -72,15 +73,10 @@ | |||
72 | #endif | 73 | #endif |
73 | #endif | 74 | #endif |
74 | #endif | 75 | #endif |
75 | #endif | ||
76 | 76 | ||
77 | #if defined(SGX_FEATURE_MP) | 77 | #if defined(SGX_FEATURE_MP) |
78 | #if defined(SGX541) | 78 | #if defined(SGX554) |
79 | #if SGX_CORE_REV == 100 | 79 | #include "sgxmpplusdefs.h" |
80 | #include "sgx541_100mpdefs.h" | ||
81 | #else | ||
82 | #include "sgx541mpdefs.h" | ||
83 | #endif | ||
84 | #else | 80 | #else |
85 | #include "sgxmpdefs.h" | 81 | #include "sgxmpdefs.h" |
86 | #endif | 82 | #endif |
diff --git a/drivers/gpu/pvr/sgxerrata.h b/drivers/gpu/pvr/sgxerrata.h index ded7a524283..8d76618accb 100644 --- a/drivers/gpu/pvr/sgxerrata.h +++ b/drivers/gpu/pvr/sgxerrata.h | |||
@@ -68,6 +68,10 @@ | |||
68 | #define FIX_HW_BRN_22934 | 68 | #define FIX_HW_BRN_22934 |
69 | #define FIX_HW_BRN_28889 | 69 | #define FIX_HW_BRN_28889 |
70 | #else | 70 | #else |
71 | #if SGX_CORE_REV == 1111 | ||
72 | #define FIX_HW_BRN_22934 | ||
73 | #define FIX_HW_BRN_28889 | ||
74 | #else | ||
71 | #if SGX_CORE_REV == 120 | 75 | #if SGX_CORE_REV == 120 |
72 | #define FIX_HW_BRN_22934 | 76 | #define FIX_HW_BRN_22934 |
73 | #define FIX_HW_BRN_28889 | 77 | #define FIX_HW_BRN_28889 |
@@ -88,6 +92,7 @@ | |||
88 | #endif | 92 | #endif |
89 | #endif | 93 | #endif |
90 | #endif | 94 | #endif |
95 | #endif | ||
91 | #endif | 96 | #endif |
92 | #endif | 97 | #endif |
93 | 98 | ||
@@ -240,15 +245,113 @@ | |||
240 | #endif | 245 | #endif |
241 | 246 | ||
242 | #if SGX_CORE_REV == 113 | 247 | #if SGX_CORE_REV == 113 |
248 | #define FIX_HW_BRN_29954 | ||
249 | #define FIX_HW_BRN_29997 | ||
243 | #define FIX_HW_BRN_30954 | 250 | #define FIX_HW_BRN_30954 |
251 | #define FIX_HW_BRN_31093 | ||
252 | #define FIX_HW_BRN_31195 | ||
253 | #define FIX_HW_BRN_31278 | ||
254 | #if defined(SGX_FEATURE_MP) | ||
255 | #define FIX_HW_BRN_31425 | ||
256 | #endif | ||
257 | #define FIX_HW_BRN_31620 | ||
258 | #define FIX_HW_BRN_31542 | ||
259 | #define FIX_HW_BRN_32044 | ||
244 | 260 | ||
245 | #else | 261 | #else |
246 | #if SGX_CORE_REV == 122 | 262 | #if SGX_CORE_REV == 122 |
247 | #define FIX_HW_BRN_30954 | 263 | #define FIX_HW_BRN_29954 |
248 | 264 | #define FIX_HW_BRN_29997 | |
265 | #define FIX_HW_BRN_30954 | ||
266 | #define FIX_HW_BRN_31093 | ||
267 | #define FIX_HW_BRN_31195 | ||
268 | #define FIX_HW_BRN_31278 | ||
269 | #if defined(SGX_FEATURE_MP) | ||
270 | #define FIX_HW_BRN_31425 | ||
271 | #endif | ||
272 | #define FIX_HW_BRN_31620 | ||
273 | #define FIX_HW_BRN_31542 | ||
274 | #define FIX_HW_BRN_32044 | ||
275 | |||
276 | #else | ||
277 | #if SGX_CORE_REV == 1221 | ||
278 | #define FIX_HW_BRN_29954 | ||
279 | #define FIX_HW_BRN_31195 | ||
280 | #define FIX_HW_BRN_31278 | ||
281 | #if defined(SGX_FEATURE_MP) | ||
282 | #define FIX_HW_BRN_31425 | ||
283 | #endif | ||
284 | #define FIX_HW_BRN_31620 | ||
285 | #define FIX_HW_BRN_31542 | ||
286 | #define FIX_HW_BRN_32044 | ||
287 | |||
249 | #else | 288 | #else |
250 | #if SGX_CORE_REV == 140 | 289 | #if SGX_CORE_REV == 140 |
251 | #define FIX_HW_BRN_30954 | 290 | #define FIX_HW_BRN_29954 |
291 | #define FIX_HW_BRN_30954 | ||
292 | #define FIX_HW_BRN_31093 | ||
293 | #define FIX_HW_BRN_31195 | ||
294 | #define FIX_HW_BRN_31278 | ||
295 | #if defined(SGX_FEATURE_MP) | ||
296 | #define FIX_HW_BRN_31425 | ||
297 | #endif | ||
298 | #define FIX_HW_BRN_31620 | ||
299 | #define FIX_HW_BRN_31542 | ||
300 | #define FIX_HW_BRN_32044 | ||
301 | |||
302 | #else | ||
303 | #if SGX_CORE_REV == 1401 | ||
304 | #define FIX_HW_BRN_29954 | ||
305 | #define FIX_HW_BRN_30954 | ||
306 | #define FIX_HW_BRN_31195 | ||
307 | #define FIX_HW_BRN_31278 | ||
308 | #if defined(SGX_FEATURE_MP) | ||
309 | #define FIX_HW_BRN_31425 | ||
310 | #endif | ||
311 | #define FIX_HW_BRN_31620 | ||
312 | #define FIX_HW_BRN_31542 | ||
313 | #define FIX_HW_BRN_32044 | ||
314 | |||
315 | #else | ||
316 | #if SGX_CORE_REV == 141 | ||
317 | #if defined(SGX_FEATURE_MP) | ||
318 | #define FIX_HW_BRN_31425 | ||
319 | #endif | ||
320 | #define FIX_HW_BRN_32044 | ||
321 | |||
322 | #else | ||
323 | #if SGX_CORE_REV == 211 | ||
324 | #define FIX_HW_BRN_31093 | ||
325 | #define FIX_HW_BRN_31195 | ||
326 | #define FIX_HW_BRN_31278 | ||
327 | #if defined(SGX_FEATURE_MP) | ||
328 | #define FIX_HW_BRN_31425 | ||
329 | #endif | ||
330 | #define FIX_HW_BRN_31620 | ||
331 | #define FIX_HW_BRN_31542 | ||
332 | #define FIX_HW_BRN_32044 | ||
333 | |||
334 | #else | ||
335 | #if SGX_CORE_REV == 2111 | ||
336 | #define FIX_HW_BRN_31093 | ||
337 | #define FIX_HW_BRN_31195 | ||
338 | #define FIX_HW_BRN_31278 | ||
339 | #if defined(SGX_FEATURE_MP) | ||
340 | #define FIX_HW_BRN_31425 | ||
341 | #endif | ||
342 | #define FIX_HW_BRN_31620 | ||
343 | #define FIX_HW_BRN_31542 | ||
344 | #define FIX_HW_BRN_30970 | ||
345 | #define FIX_HW_BRN_32044 | ||
346 | #define FIX_HW_BRN_30982 | ||
347 | |||
348 | #else | ||
349 | #if SGX_CORE_REV == 213 | ||
350 | #if defined(SGX_FEATURE_MP) | ||
351 | #define FIX_HW_BRN_31425 | ||
352 | #endif | ||
353 | #define FIX_HW_BRN_31542 | ||
354 | #define FIX_HW_BRN_32044 | ||
252 | 355 | ||
253 | #else | 356 | #else |
254 | #if SGX_CORE_REV == SGX_CORE_REV_HEAD | 357 | #if SGX_CORE_REV == SGX_CORE_REV_HEAD |
@@ -259,6 +362,12 @@ | |||
259 | #endif | 362 | #endif |
260 | #endif | 363 | #endif |
261 | #endif | 364 | #endif |
365 | #endif | ||
366 | #endif | ||
367 | #endif | ||
368 | #endif | ||
369 | #endif | ||
370 | #endif | ||
262 | 371 | ||
263 | #define SGX_CORE_DEFINED | 372 | #define SGX_CORE_DEFINED |
264 | #endif | 373 | #endif |
@@ -272,7 +381,24 @@ | |||
272 | #endif | 381 | #endif |
273 | 382 | ||
274 | #if SGX_CORE_REV == 100 | 383 | #if SGX_CORE_REV == 100 |
275 | 384 | #if defined(SGX_FEATURE_MP) | |
385 | #define FIX_HW_BRN_31425 | ||
386 | #endif | ||
387 | #else | ||
388 | #if SGX_CORE_REV == 102 | ||
389 | #if defined(SGX_FEATURE_MP) | ||
390 | #define FIX_HW_BRN_31425 | ||
391 | #endif | ||
392 | #else | ||
393 | #if SGX_CORE_REV == 103 | ||
394 | #if defined(SGX_FEATURE_MP) | ||
395 | #define FIX_HW_BRN_31425 | ||
396 | #endif | ||
397 | #else | ||
398 | #if SGX_CORE_REV == 105 | ||
399 | #if defined(SGX_FEATURE_MP) | ||
400 | #define FIX_HW_BRN_31425 | ||
401 | #endif | ||
276 | #else | 402 | #else |
277 | #if SGX_CORE_REV == SGX_CORE_REV_HEAD | 403 | #if SGX_CORE_REV == SGX_CORE_REV_HEAD |
278 | 404 | ||
@@ -280,6 +406,9 @@ | |||
280 | #error "sgxerrata.h: SGX544 Core Revision unspecified" | 406 | #error "sgxerrata.h: SGX544 Core Revision unspecified" |
281 | #endif | 407 | #endif |
282 | #endif | 408 | #endif |
409 | #endif | ||
410 | #endif | ||
411 | #endif | ||
283 | 412 | ||
284 | #define SGX_CORE_DEFINED | 413 | #define SGX_CORE_DEFINED |
285 | #endif | 414 | #endif |
@@ -302,12 +431,13 @@ | |||
302 | #if SGX_CORE_REV == 109 | 431 | #if SGX_CORE_REV == 109 |
303 | #define FIX_HW_BRN_29702 | 432 | #define FIX_HW_BRN_29702 |
304 | #define FIX_HW_BRN_29823 | 433 | #define FIX_HW_BRN_29823 |
434 | #define FIX_HW_BRN_31939 | ||
305 | #else | 435 | #else |
306 | #if SGX_CORE_REV == 1012 | 436 | #if SGX_CORE_REV == 1012 |
307 | #define FIX_HW_BRN_29823 | 437 | #define FIX_HW_BRN_31939 |
308 | #else | 438 | #else |
309 | #if SGX_CORE_REV == 1013 | 439 | #if SGX_CORE_REV == 1013 |
310 | #define FIX_HW_BRN_29823 | 440 | #define FIX_HW_BRN_31939 |
311 | #else | 441 | #else |
312 | #if SGX_CORE_REV == SGX_CORE_REV_HEAD | 442 | #if SGX_CORE_REV == SGX_CORE_REV_HEAD |
313 | 443 | ||
@@ -331,6 +461,16 @@ | |||
331 | #endif | 461 | #endif |
332 | 462 | ||
333 | #if SGX_CORE_REV == 100 | 463 | #if SGX_CORE_REV == 100 |
464 | #if defined(SGX_FEATURE_MP) | ||
465 | #define FIX_HW_BRN_31425 | ||
466 | #endif | ||
467 | #else | ||
468 | #if SGX_CORE_REV == 101 | ||
469 | #if defined(SGX_FEATURE_MP) | ||
470 | #define FIX_HW_BRN_31425 | ||
471 | #endif | ||
472 | #else | ||
473 | #if SGX_CORE_REV == 123 | ||
334 | 474 | ||
335 | #else | 475 | #else |
336 | #if SGX_CORE_REV == SGX_CORE_REV_HEAD | 476 | #if SGX_CORE_REV == SGX_CORE_REV_HEAD |
@@ -339,6 +479,8 @@ | |||
339 | #error "sgxerrata.h: SGX554 Core Revision unspecified" | 479 | #error "sgxerrata.h: SGX554 Core Revision unspecified" |
340 | #endif | 480 | #endif |
341 | #endif | 481 | #endif |
482 | #endif | ||
483 | #endif | ||
342 | 484 | ||
343 | #define SGX_CORE_DEFINED | 485 | #define SGX_CORE_DEFINED |
344 | #endif | 486 | #endif |
diff --git a/drivers/gpu/pvr/sgxfeaturedefs.h b/drivers/gpu/pvr/sgxfeaturedefs.h index 714bea3027a..97da0078e3b 100644 --- a/drivers/gpu/pvr/sgxfeaturedefs.h +++ b/drivers/gpu/pvr/sgxfeaturedefs.h | |||
@@ -52,6 +52,7 @@ | |||
52 | #define SGX_FEATURE_2D_HARDWARE | 52 | #define SGX_FEATURE_2D_HARDWARE |
53 | #define SGX_FEATURE_AUTOCLOCKGATING | 53 | #define SGX_FEATURE_AUTOCLOCKGATING |
54 | #define SUPPORT_SGX_GENERAL_MAPPING_HEAP | 54 | #define SUPPORT_SGX_GENERAL_MAPPING_HEAP |
55 | #define SGX_FEATURE_EDM_VERTEX_PDSADDR_FULL_RANGE | ||
55 | #else | 56 | #else |
56 | #if defined(SGX540) | 57 | #if defined(SGX540) |
57 | #define SGX_CORE_FRIENDLY_NAME "SGX540" | 58 | #define SGX_CORE_FRIENDLY_NAME "SGX540" |
@@ -60,16 +61,6 @@ | |||
60 | #define SGX_FEATURE_AUTOCLOCKGATING | 61 | #define SGX_FEATURE_AUTOCLOCKGATING |
61 | #define SGX_FEATURE_MULTI_EVENT_KICK | 62 | #define SGX_FEATURE_MULTI_EVENT_KICK |
62 | #else | 63 | #else |
63 | #if defined(SGX541) | ||
64 | #define SGX_CORE_FRIENDLY_NAME "SGX541" | ||
65 | #define SGX_CORE_ID SGX_CORE_ID_541 | ||
66 | #define SGX_FEATURE_ADDRESS_SPACE_SIZE (32) | ||
67 | #define SGX_FEATURE_MULTIPLE_MEM_CONTEXTS | ||
68 | #define SGX_FEATURE_BIF_NUM_DIRLISTS (8) | ||
69 | #define SGX_FEATURE_AUTOCLOCKGATING | ||
70 | #define SGX_FEATURE_SPM_MODE_0 | ||
71 | #define SGX_FEATURE_MULTI_EVENT_KICK | ||
72 | #else | ||
73 | #if defined(SGX543) | 64 | #if defined(SGX543) |
74 | #define SGX_CORE_FRIENDLY_NAME "SGX543" | 65 | #define SGX_CORE_FRIENDLY_NAME "SGX543" |
75 | #define SGX_CORE_ID SGX_CORE_ID_543 | 66 | #define SGX_CORE_ID SGX_CORE_ID_543 |
@@ -83,9 +74,19 @@ | |||
83 | #define SGX_FEATURE_SPM_MODE_0 | 74 | #define SGX_FEATURE_SPM_MODE_0 |
84 | #define SGX_FEATURE_MULTI_EVENT_KICK | 75 | #define SGX_FEATURE_MULTI_EVENT_KICK |
85 | #define SGX_FEATURE_DATA_BREAKPOINTS | 76 | #define SGX_FEATURE_DATA_BREAKPOINTS |
77 | #define SGX_FEATURE_PERPIPE_BKPT_REGS | ||
78 | #define SGX_FEATURE_PERPIPE_BKPT_REGS_NUMPIPES (2) | ||
86 | #define SGX_FEATURE_2D_HARDWARE | 79 | #define SGX_FEATURE_2D_HARDWARE |
87 | #define SGX_FEATURE_PTLA | 80 | #define SGX_FEATURE_PTLA |
88 | #define SGX_FEATURE_EXTENDED_PERF_COUNTERS | 81 | #define SGX_FEATURE_EXTENDED_PERF_COUNTERS |
82 | #define SGX_FEATURE_EDM_VERTEX_PDSADDR_FULL_RANGE | ||
83 | #if defined(SUPPORT_SGX_LOW_LATENCY_SCHEDULING) | ||
84 | #if defined(SGX_FEATURE_MP) | ||
85 | #define SGX_FEATURE_MASTER_VDM_CONTEXT_SWITCH | ||
86 | #endif | ||
87 | #define SGX_FEATURE_SLAVE_VDM_CONTEXT_SWITCH | ||
88 | #define SGX_FEATURE_ISP_CONTEXT_SWITCH_REV_3 | ||
89 | #endif | ||
89 | #else | 90 | #else |
90 | #if defined(SGX544) | 91 | #if defined(SGX544) |
91 | #define SGX_CORE_FRIENDLY_NAME "SGX544" | 92 | #define SGX_CORE_FRIENDLY_NAME "SGX544" |
@@ -99,8 +100,15 @@ | |||
99 | #define SGX_FEATURE_MONOLITHIC_UKERNEL | 100 | #define SGX_FEATURE_MONOLITHIC_UKERNEL |
100 | #define SGX_FEATURE_SPM_MODE_0 | 101 | #define SGX_FEATURE_SPM_MODE_0 |
101 | #define SGX_FEATURE_MULTI_EVENT_KICK | 102 | #define SGX_FEATURE_MULTI_EVENT_KICK |
102 | #define SGX_FEATURE_DATA_BREAKPOINTS | ||
103 | #define SGX_FEATURE_EXTENDED_PERF_COUNTERS | 103 | #define SGX_FEATURE_EXTENDED_PERF_COUNTERS |
104 | #define SGX_FEATURE_EDM_VERTEX_PDSADDR_FULL_RANGE | ||
105 | #if defined(SUPPORT_SGX_LOW_LATENCY_SCHEDULING) | ||
106 | #if defined(SGX_FEATURE_MP) | ||
107 | #define SGX_FEATURE_MASTER_VDM_CONTEXT_SWITCH | ||
108 | #endif | ||
109 | #define SGX_FEATURE_SLAVE_VDM_CONTEXT_SWITCH | ||
110 | #define SGX_FEATURE_ISP_CONTEXT_SWITCH_REV_3 | ||
111 | #endif | ||
104 | #else | 112 | #else |
105 | #if defined(SGX545) | 113 | #if defined(SGX545) |
106 | #define SGX_CORE_FRIENDLY_NAME "SGX545" | 114 | #define SGX_CORE_FRIENDLY_NAME "SGX545" |
@@ -130,6 +138,14 @@ | |||
130 | 138 | ||
131 | #define SGX_FEATURE_BIF_WIDE_TILING_AND_4K_ADDRESS | 139 | #define SGX_FEATURE_BIF_WIDE_TILING_AND_4K_ADDRESS |
132 | #define SGX_FEATURE_MULTI_EVENT_KICK | 140 | #define SGX_FEATURE_MULTI_EVENT_KICK |
141 | #define SGX_FEATURE_EDM_VERTEX_PDSADDR_FULL_RANGE | ||
142 | #if defined(SUPPORT_SGX_LOW_LATENCY_SCHEDULING) | ||
143 | #if defined(USE_SGX_CORE_REV_HEAD) | ||
144 | #define SGX_FEATURE_FAST_RENDER_CONTEXT_SWITCH | ||
145 | #endif | ||
146 | #define SGX_FEATURE_SLAVE_VDM_CONTEXT_SWITCH | ||
147 | #define SGX_FEATURE_ISP_CONTEXT_SWITCH_REV_2 | ||
148 | #endif | ||
133 | #else | 149 | #else |
134 | #if defined(SGX554) | 150 | #if defined(SGX554) |
135 | #define SGX_CORE_FRIENDLY_NAME "SGX554" | 151 | #define SGX_CORE_FRIENDLY_NAME "SGX554" |
@@ -143,8 +159,17 @@ | |||
143 | #define SGX_FEATURE_MONOLITHIC_UKERNEL | 159 | #define SGX_FEATURE_MONOLITHIC_UKERNEL |
144 | #define SGX_FEATURE_SPM_MODE_0 | 160 | #define SGX_FEATURE_SPM_MODE_0 |
145 | #define SGX_FEATURE_MULTI_EVENT_KICK | 161 | #define SGX_FEATURE_MULTI_EVENT_KICK |
146 | #define SGX_FEATURE_DATA_BREAKPOINTS | 162 | #define SGX_FEATURE_2D_HARDWARE |
163 | #define SGX_FEATURE_PTLA | ||
147 | #define SGX_FEATURE_EXTENDED_PERF_COUNTERS | 164 | #define SGX_FEATURE_EXTENDED_PERF_COUNTERS |
165 | #define SGX_FEATURE_EDM_VERTEX_PDSADDR_FULL_RANGE | ||
166 | #if defined(SUPPORT_SGX_LOW_LATENCY_SCHEDULING) | ||
167 | #if defined(SGX_FEATURE_MP) | ||
168 | #define SGX_FEATURE_MASTER_VDM_CONTEXT_SWITCH | ||
169 | #endif | ||
170 | #define SGX_FEATURE_SLAVE_VDM_CONTEXT_SWITCH | ||
171 | #define SGX_FEATURE_ISP_CONTEXT_SWITCH_REV_3 | ||
172 | #endif | ||
148 | #endif | 173 | #endif |
149 | #endif | 174 | #endif |
150 | #endif | 175 | #endif |
@@ -154,6 +179,15 @@ | |||
154 | #endif | 179 | #endif |
155 | #endif | 180 | #endif |
156 | #endif | 181 | #endif |
182 | |||
183 | #if defined(SGX_FEATURE_SLAVE_VDM_CONTEXT_SWITCH) \ | ||
184 | || defined(SGX_FEATURE_MASTER_VDM_CONTEXT_SWITCH) | ||
185 | #define SGX_FEATURE_VDM_CONTEXT_SWITCH | ||
186 | #endif | ||
187 | |||
188 | #if defined(SGX_FEATURE_ISP_CONTEXT_SWITCH_REV_2) \ | ||
189 | || defined(SGX_FEATURE_ISP_CONTEXT_SWITCH_REV_3) | ||
190 | #define SGX_FEATURE_ISP_CONTEXT_SWITCH | ||
157 | #endif | 191 | #endif |
158 | 192 | ||
159 | #if defined(FIX_HW_BRN_22693) | 193 | #if defined(FIX_HW_BRN_22693) |
@@ -182,14 +216,36 @@ | |||
182 | #endif | 216 | #endif |
183 | #endif | 217 | #endif |
184 | 218 | ||
185 | #if defined(SGX_FEATURE_MP) | 219 | #if defined(FIX_HW_BRN_29954) |
186 | #if !defined(SGX_FEATURE_MP_CORE_COUNT) | 220 | #undef SGX_FEATURE_PERPIPE_BKPT_REGS |
187 | #error SGX_FEATURE_MP_CORE_COUNT must be defined when SGX_FEATURE_MP is defined | ||
188 | #endif | 221 | #endif |
189 | #else | 222 | |
190 | #define SGX_FEATURE_MP_CORE_COUNT (1) | 223 | #if defined(FIX_HW_BRN_31620) |
224 | #undef SGX_FEATURE_MULTIPLE_MEM_CONTEXTS | ||
225 | #undef SGX_FEATURE_BIF_NUM_DIRLISTS | ||
191 | #endif | 226 | #endif |
192 | 227 | ||
228 | #if defined(SGX_FEATURE_MP) | ||
229 | #if defined(SGX_FEATURE_MP_CORE_COUNT_TA) && defined(SGX_FEATURE_MP_CORE_COUNT_3D) | ||
230 | #if (SGX_FEATURE_MP_CORE_COUNT_TA > SGX_FEATURE_MP_CORE_COUNT_3D) | ||
231 | #error Number of TA cores larger than number of 3D cores not supported in current driver | ||
232 | #endif | ||
233 | #else | ||
234 | #if defined(SGX_FEATURE_MP_CORE_COUNT) | ||
235 | #define SGX_FEATURE_MP_CORE_COUNT_TA (SGX_FEATURE_MP_CORE_COUNT) | ||
236 | #define SGX_FEATURE_MP_CORE_COUNT_3D (SGX_FEATURE_MP_CORE_COUNT) | ||
237 | #else | ||
238 | #error Either SGX_FEATURE_MP_CORE_COUNT or \ | ||
239 | both SGX_FEATURE_MP_CORE_COUNT_TA and SGX_FEATURE_MP_CORE_COUNT_3D \ | ||
240 | must be defined when SGX_FEATURE_MP is defined | ||
241 | #endif | ||
242 | #endif | ||
243 | #else | ||
244 | #define SGX_FEATURE_MP_CORE_COUNT (1) | ||
245 | #define SGX_FEATURE_MP_CORE_COUNT_TA (1) | ||
246 | #define SGX_FEATURE_MP_CORE_COUNT_3D (1) | ||
247 | #endif | ||
248 | |||
193 | #if defined(SUPPORT_SGX_LOW_LATENCY_SCHEDULING) && !defined(SUPPORT_SGX_PRIORITY_SCHEDULING) | 249 | #if defined(SUPPORT_SGX_LOW_LATENCY_SCHEDULING) && !defined(SUPPORT_SGX_PRIORITY_SCHEDULING) |
194 | #define SUPPORT_SGX_PRIORITY_SCHEDULING | 250 | #define SUPPORT_SGX_PRIORITY_SCHEDULING |
195 | #endif | 251 | #endif |
diff --git a/drivers/gpu/pvr/sgxinfo.h b/drivers/gpu/pvr/sgxinfo.h index 50f11134b43..51870873eec 100644 --- a/drivers/gpu/pvr/sgxinfo.h +++ b/drivers/gpu/pvr/sgxinfo.h | |||
@@ -30,12 +30,14 @@ | |||
30 | #include "sgxscript.h" | 30 | #include "sgxscript.h" |
31 | #include "servicesint.h" | 31 | #include "servicesint.h" |
32 | #include "services.h" | 32 | #include "services.h" |
33 | #if !defined (SUPPORT_SID_INTERFACE) | ||
33 | #include "sgxapi_km.h" | 34 | #include "sgxapi_km.h" |
35 | #endif | ||
34 | #include "sgx_mkif_km.h" | 36 | #include "sgx_mkif_km.h" |
35 | 37 | ||
36 | 38 | ||
37 | #define SGX_MAX_DEV_DATA 24 | 39 | #define SGX_MAX_DEV_DATA 24 |
38 | #define SGX_MAX_INIT_MEM_HANDLES 16 | 40 | #define SGX_MAX_INIT_MEM_HANDLES 18 |
39 | 41 | ||
40 | 42 | ||
41 | typedef struct _SGX_BRIDGE_INFO_FOR_SRVINIT | 43 | typedef struct _SGX_BRIDGE_INFO_FOR_SRVINIT |
@@ -51,12 +53,14 @@ typedef enum _SGXMKIF_CMD_TYPE_ | |||
51 | SGXMKIF_CMD_TRANSFER = 1, | 53 | SGXMKIF_CMD_TRANSFER = 1, |
52 | SGXMKIF_CMD_2D = 2, | 54 | SGXMKIF_CMD_2D = 2, |
53 | SGXMKIF_CMD_POWER = 3, | 55 | SGXMKIF_CMD_POWER = 3, |
54 | SGXMKIF_CMD_CLEANUP = 4, | 56 | SGXMKIF_CMD_CONTEXTSUSPEND = 4, |
55 | SGXMKIF_CMD_GETMISCINFO = 5, | 57 | SGXMKIF_CMD_CLEANUP = 5, |
56 | SGXMKIF_CMD_PROCESS_QUEUES = 6, | 58 | SGXMKIF_CMD_GETMISCINFO = 6, |
57 | SGXMKIF_CMD_DATABREAKPOINT = 7, | 59 | SGXMKIF_CMD_PROCESS_QUEUES = 7, |
58 | SGXMKIF_CMD_SETHWPERFSTATUS = 8, | 60 | SGXMKIF_CMD_DATABREAKPOINT = 8, |
59 | SGXMKIF_CMD_MAX = 9, | 61 | SGXMKIF_CMD_SETHWPERFSTATUS = 9, |
62 | SGXMKIF_CMD_FLUSHPDCACHE = 10, | ||
63 | SGXMKIF_CMD_MAX = 11, | ||
60 | 64 | ||
61 | SGXMKIF_CMD_FORCE_I32 = -1, | 65 | SGXMKIF_CMD_FORCE_I32 = -1, |
62 | 66 | ||
@@ -65,12 +69,21 @@ typedef enum _SGXMKIF_CMD_TYPE_ | |||
65 | 69 | ||
66 | typedef struct _SGX_BRIDGE_INIT_INFO_ | 70 | typedef struct _SGX_BRIDGE_INIT_INFO_ |
67 | { | 71 | { |
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; | ||
79 | #else | ||
68 | IMG_HANDLE hKernelCCBMemInfo; | 80 | IMG_HANDLE hKernelCCBMemInfo; |
69 | IMG_HANDLE hKernelCCBCtlMemInfo; | 81 | IMG_HANDLE hKernelCCBCtlMemInfo; |
70 | IMG_HANDLE hKernelCCBEventKickerMemInfo; | 82 | IMG_HANDLE hKernelCCBEventKickerMemInfo; |
71 | IMG_HANDLE hKernelSGXHostCtlMemInfo; | 83 | IMG_HANDLE hKernelSGXHostCtlMemInfo; |
72 | IMG_HANDLE hKernelSGXTA3DCtlMemInfo; | 84 | IMG_HANDLE hKernelSGXTA3DCtlMemInfo; |
73 | IMG_HANDLE hKernelSGXMiscMemInfo; | 85 | IMG_HANDLE hKernelSGXMiscMemInfo; |
86 | #endif | ||
74 | 87 | ||
75 | IMG_UINT32 aui32HostKickAddr[SGXMKIF_CMD_MAX]; | 88 | IMG_UINT32 aui32HostKickAddr[SGXMKIF_CMD_MAX]; |
76 | 89 | ||
@@ -80,33 +93,95 @@ typedef struct _SGX_BRIDGE_INIT_INFO_ | |||
80 | SGX_MISCINFO_STRUCT_SIZES sSGXStructSizes; | 93 | SGX_MISCINFO_STRUCT_SIZES sSGXStructSizes; |
81 | 94 | ||
82 | #if defined(SGX_SUPPORT_HWPROFILING) | 95 | #if defined(SGX_SUPPORT_HWPROFILING) |
96 | #if defined (SUPPORT_SID_INTERFACE) | ||
97 | IMG_SID hKernelHWProfilingMemInfo; | ||
98 | #else | ||
83 | IMG_HANDLE hKernelHWProfilingMemInfo; | 99 | IMG_HANDLE hKernelHWProfilingMemInfo; |
84 | #endif | 100 | #endif |
101 | #endif | ||
85 | #if defined(SUPPORT_SGX_HWPERF) | 102 | #if defined(SUPPORT_SGX_HWPERF) |
103 | #if defined (SUPPORT_SID_INTERFACE) | ||
104 | IMG_SID hKernelHWPerfCBMemInfo; | ||
105 | #else | ||
86 | IMG_HANDLE hKernelHWPerfCBMemInfo; | 106 | IMG_HANDLE hKernelHWPerfCBMemInfo; |
87 | #endif | 107 | #endif |
108 | #endif | ||
109 | #if defined (SUPPORT_SID_INTERFACE) | ||
110 | IMG_SID hKernelTASigBufferMemInfo; | ||
111 | IMG_SID hKernel3DSigBufferMemInfo; | ||
112 | #else | ||
88 | IMG_HANDLE hKernelTASigBufferMemInfo; | 113 | IMG_HANDLE hKernelTASigBufferMemInfo; |
89 | IMG_HANDLE hKernel3DSigBufferMemInfo; | 114 | IMG_HANDLE hKernel3DSigBufferMemInfo; |
115 | #endif | ||
90 | 116 | ||
91 | #if defined(FIX_HW_BRN_29702) | 117 | #if defined(FIX_HW_BRN_29702) |
118 | #if defined (SUPPORT_SID_INTERFACE) | ||
119 | IMG_SID hKernelCFIMemInfo; | ||
120 | #else | ||
92 | IMG_HANDLE hKernelCFIMemInfo; | 121 | IMG_HANDLE hKernelCFIMemInfo; |
93 | #endif | 122 | #endif |
123 | #endif | ||
94 | #if defined(FIX_HW_BRN_29823) | 124 | #if defined(FIX_HW_BRN_29823) |
125 | #if defined (SUPPORT_SID_INTERFACE) | ||
126 | IMG_SID hKernelDummyTermStreamMemInfo; | ||
127 | #else | ||
95 | IMG_HANDLE hKernelDummyTermStreamMemInfo; | 128 | IMG_HANDLE hKernelDummyTermStreamMemInfo; |
96 | #endif | 129 | #endif |
130 | #endif | ||
131 | |||
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; | ||
142 | #else | ||
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; | ||
151 | #endif | ||
152 | #endif | ||
153 | |||
154 | #if defined(SGX_FEATURE_VDM_CONTEXT_SWITCH) && defined(FIX_HW_BRN_31425) | ||
155 | IMG_HANDLE hKernelVDMSnapShotBufferMemInfo; | ||
156 | IMG_HANDLE hKernelVDMCtrlStreamBufferMemInfo; | ||
157 | #endif | ||
97 | #if defined(PVRSRV_USSE_EDM_STATUS_DEBUG) | 158 | #if defined(PVRSRV_USSE_EDM_STATUS_DEBUG) |
159 | #if defined (SUPPORT_SID_INTERFACE) | ||
160 | IMG_SID hKernelEDMStatusBufferMemInfo; | ||
161 | #else | ||
98 | IMG_HANDLE hKernelEDMStatusBufferMemInfo; | 162 | IMG_HANDLE hKernelEDMStatusBufferMemInfo; |
99 | #endif | 163 | #endif |
164 | #endif | ||
100 | #if defined(SGX_FEATURE_OVERLAPPED_SPM) | 165 | #if defined(SGX_FEATURE_OVERLAPPED_SPM) |
166 | #if defined (SUPPORT_SID_INTERFACE) | ||
167 | IMG_SID hKernelTmpRgnHeaderMemInfo; | ||
168 | #else | ||
101 | IMG_HANDLE hKernelTmpRgnHeaderMemInfo; | 169 | IMG_HANDLE hKernelTmpRgnHeaderMemInfo; |
102 | #endif | 170 | #endif |
171 | #endif | ||
103 | #if defined(SGX_FEATURE_SPM_MODE_0) | 172 | #if defined(SGX_FEATURE_SPM_MODE_0) |
173 | #if defined (SUPPORT_SID_INTERFACE) | ||
174 | IMG_SID hKernelTmpDPMStateMemInfo; | ||
175 | #else | ||
104 | IMG_HANDLE hKernelTmpDPMStateMemInfo; | 176 | IMG_HANDLE hKernelTmpDPMStateMemInfo; |
105 | #endif | 177 | #endif |
178 | #endif | ||
106 | 179 | ||
107 | IMG_UINT32 ui32EDMTaskReg0; | 180 | IMG_UINT32 ui32EDMTaskReg0; |
108 | IMG_UINT32 ui32EDMTaskReg1; | 181 | IMG_UINT32 ui32EDMTaskReg1; |
109 | 182 | ||
183 | IMG_UINT32 ui32ClkGateCtl; | ||
184 | IMG_UINT32 ui32ClkGateCtl2; | ||
110 | IMG_UINT32 ui32ClkGateStatusReg; | 185 | IMG_UINT32 ui32ClkGateStatusReg; |
111 | IMG_UINT32 ui32ClkGateStatusMask; | 186 | IMG_UINT32 ui32ClkGateStatusMask; |
112 | #if defined(SGX_FEATURE_MP) | 187 | #if defined(SGX_FEATURE_MP) |
@@ -119,7 +194,11 @@ typedef struct _SGX_BRIDGE_INIT_INFO_ | |||
119 | IMG_UINT32 ui32CacheControl; | 194 | IMG_UINT32 ui32CacheControl; |
120 | 195 | ||
121 | IMG_UINT32 asInitDevData[SGX_MAX_DEV_DATA]; | 196 | IMG_UINT32 asInitDevData[SGX_MAX_DEV_DATA]; |
197 | #if defined (SUPPORT_SID_INTERFACE) | ||
198 | IMG_SID asInitMemHandles[SGX_MAX_INIT_MEM_HANDLES]; | ||
199 | #else | ||
122 | IMG_HANDLE asInitMemHandles[SGX_MAX_INIT_MEM_HANDLES]; | 200 | IMG_HANDLE asInitMemHandles[SGX_MAX_INIT_MEM_HANDLES]; |
201 | #endif | ||
123 | 202 | ||
124 | } SGX_BRIDGE_INIT_INFO; | 203 | } SGX_BRIDGE_INIT_INFO; |
125 | 204 | ||
@@ -128,7 +207,11 @@ typedef struct _SGX_DEVICE_SYNC_LIST_ | |||
128 | { | 207 | { |
129 | PSGXMKIF_HWDEVICE_SYNC_LIST psHWDeviceSyncList; | 208 | PSGXMKIF_HWDEVICE_SYNC_LIST psHWDeviceSyncList; |
130 | 209 | ||
210 | #if defined (SUPPORT_SID_INTERFACE) | ||
211 | IMG_SID hKernelHWSyncListMemInfo; | ||
212 | #else | ||
131 | IMG_HANDLE hKernelHWSyncListMemInfo; | 213 | IMG_HANDLE hKernelHWSyncListMemInfo; |
214 | #endif | ||
132 | PVRSRV_CLIENT_MEM_INFO *psHWDeviceSyncListClientMemInfo; | 215 | PVRSRV_CLIENT_MEM_INFO *psHWDeviceSyncListClientMemInfo; |
133 | PVRSRV_CLIENT_MEM_INFO *psAccessResourceClientMemInfo; | 216 | PVRSRV_CLIENT_MEM_INFO *psAccessResourceClientMemInfo; |
134 | 217 | ||
@@ -138,27 +221,47 @@ typedef struct _SGX_DEVICE_SYNC_LIST_ | |||
138 | 221 | ||
139 | 222 | ||
140 | IMG_UINT32 ui32NumSyncObjects; | 223 | IMG_UINT32 ui32NumSyncObjects; |
224 | #if defined (SUPPORT_SID_INTERFACE) | ||
225 | IMG_SID ahSyncHandles[1]; | ||
226 | #else | ||
141 | IMG_HANDLE ahSyncHandles[1]; | 227 | IMG_HANDLE ahSyncHandles[1]; |
228 | #endif | ||
142 | } SGX_DEVICE_SYNC_LIST, *PSGX_DEVICE_SYNC_LIST; | 229 | } SGX_DEVICE_SYNC_LIST, *PSGX_DEVICE_SYNC_LIST; |
143 | 230 | ||
144 | 231 | ||
145 | typedef struct _SGX_INTERNEL_STATUS_UPDATE_ | 232 | typedef struct _SGX_INTERNEL_STATUS_UPDATE_ |
146 | { | 233 | { |
147 | CTL_STATUS sCtlStatus; | 234 | CTL_STATUS sCtlStatus; |
235 | #if defined (SUPPORT_SID_INTERFACE) | ||
236 | IMG_SID hKernelMemInfo; | ||
237 | #else | ||
148 | IMG_HANDLE hKernelMemInfo; | 238 | IMG_HANDLE hKernelMemInfo; |
239 | #endif | ||
149 | } SGX_INTERNEL_STATUS_UPDATE; | 240 | } SGX_INTERNEL_STATUS_UPDATE; |
150 | 241 | ||
151 | 242 | ||
152 | typedef struct _SGX_CCB_KICK_ | 243 | typedef struct _SGX_CCB_KICK_ |
153 | { | 244 | { |
154 | SGXMKIF_COMMAND sCommand; | 245 | SGXMKIF_COMMAND sCommand; |
155 | IMG_HANDLE hCCBKernelMemInfo; | 246 | #if defined (SUPPORT_SID_INTERFACE) |
247 | IMG_SID hCCBKernelMemInfo; | ||
248 | #else | ||
249 | IMG_HANDLE hCCBKernelMemInfo; | ||
250 | #endif | ||
156 | 251 | ||
157 | IMG_UINT32 ui32NumDstSyncObjects; | 252 | IMG_UINT32 ui32NumDstSyncObjects; |
253 | #if defined (SUPPORT_SID_INTERFACE) | ||
254 | IMG_SID hKernelHWSyncListMemInfo; | ||
255 | #else | ||
158 | IMG_HANDLE hKernelHWSyncListMemInfo; | 256 | IMG_HANDLE hKernelHWSyncListMemInfo; |
257 | #endif | ||
159 | 258 | ||
160 | 259 | ||
260 | #if defined (SUPPORT_SID_INTERFACE) | ||
261 | IMG_SID *pahDstSyncHandles; | ||
262 | #else | ||
161 | IMG_HANDLE *pahDstSyncHandles; | 263 | IMG_HANDLE *pahDstSyncHandles; |
264 | #endif | ||
162 | 265 | ||
163 | IMG_UINT32 ui32NumTAStatusVals; | 266 | IMG_UINT32 ui32NumTAStatusVals; |
164 | IMG_UINT32 ui32Num3DStatusVals; | 267 | IMG_UINT32 ui32Num3DStatusVals; |
@@ -167,9 +270,14 @@ typedef struct _SGX_CCB_KICK_ | |||
167 | SGX_INTERNEL_STATUS_UPDATE asTAStatusUpdate[SGX_MAX_TA_STATUS_VALS]; | 270 | SGX_INTERNEL_STATUS_UPDATE asTAStatusUpdate[SGX_MAX_TA_STATUS_VALS]; |
168 | SGX_INTERNEL_STATUS_UPDATE as3DStatusUpdate[SGX_MAX_3D_STATUS_VALS]; | 271 | SGX_INTERNEL_STATUS_UPDATE as3DStatusUpdate[SGX_MAX_3D_STATUS_VALS]; |
169 | #else | 272 | #else |
273 | #if defined (SUPPORT_SID_INTERFACE) | ||
274 | IMG_SID ahTAStatusSyncInfo[SGX_MAX_TA_STATUS_VALS]; | ||
275 | IMG_SID ah3DStatusSyncInfo[SGX_MAX_3D_STATUS_VALS]; | ||
276 | #else | ||
170 | IMG_HANDLE ahTAStatusSyncInfo[SGX_MAX_TA_STATUS_VALS]; | 277 | IMG_HANDLE ahTAStatusSyncInfo[SGX_MAX_TA_STATUS_VALS]; |
171 | IMG_HANDLE ah3DStatusSyncInfo[SGX_MAX_3D_STATUS_VALS]; | 278 | IMG_HANDLE ah3DStatusSyncInfo[SGX_MAX_3D_STATUS_VALS]; |
172 | #endif | 279 | #endif |
280 | #endif | ||
173 | 281 | ||
174 | IMG_BOOL bFirstKickOrResume; | 282 | IMG_BOOL bFirstKickOrResume; |
175 | #if (defined(NO_HARDWARE) || defined(PDUMP)) | 283 | #if (defined(NO_HARDWARE) || defined(PDUMP)) |
@@ -183,29 +291,53 @@ typedef struct _SGX_CCB_KICK_ | |||
183 | #if defined(SUPPORT_SGX_GENERALISED_SYNCOBJECTS) | 291 | #if defined(SUPPORT_SGX_GENERALISED_SYNCOBJECTS) |
184 | 292 | ||
185 | IMG_UINT32 ui32NumTASrcSyncs; | 293 | IMG_UINT32 ui32NumTASrcSyncs; |
294 | #if defined (SUPPORT_SID_INTERFACE) | ||
295 | IMG_SID ahTASrcKernelSyncInfo[SGX_MAX_TA_SRC_SYNCS]; | ||
296 | #else | ||
186 | IMG_HANDLE ahTASrcKernelSyncInfo[SGX_MAX_TA_SRC_SYNCS]; | 297 | IMG_HANDLE ahTASrcKernelSyncInfo[SGX_MAX_TA_SRC_SYNCS]; |
298 | #endif | ||
187 | IMG_UINT32 ui32NumTADstSyncs; | 299 | IMG_UINT32 ui32NumTADstSyncs; |
300 | #if defined (SUPPORT_SID_INTERFACE) | ||
301 | IMG_SID ahTADstKernelSyncInfo[SGX_MAX_TA_DST_SYNCS]; | ||
302 | #else | ||
188 | IMG_HANDLE ahTADstKernelSyncInfo[SGX_MAX_TA_DST_SYNCS]; | 303 | IMG_HANDLE ahTADstKernelSyncInfo[SGX_MAX_TA_DST_SYNCS]; |
304 | #endif | ||
189 | IMG_UINT32 ui32Num3DSrcSyncs; | 305 | IMG_UINT32 ui32Num3DSrcSyncs; |
306 | #if defined (SUPPORT_SID_INTERFACE) | ||
307 | IMG_SID ah3DSrcKernelSyncInfo[SGX_MAX_3D_SRC_SYNCS]; | ||
308 | #else | ||
190 | IMG_HANDLE ah3DSrcKernelSyncInfo[SGX_MAX_3D_SRC_SYNCS]; | 309 | IMG_HANDLE ah3DSrcKernelSyncInfo[SGX_MAX_3D_SRC_SYNCS]; |
310 | #endif | ||
191 | #else | 311 | #else |
192 | 312 | ||
193 | IMG_UINT32 ui32NumSrcSyncs; | 313 | IMG_UINT32 ui32NumSrcSyncs; |
314 | #if defined (SUPPORT_SID_INTERFACE) | ||
315 | IMG_SID ahSrcKernelSyncInfo[SGX_MAX_SRC_SYNCS]; | ||
316 | #else | ||
194 | IMG_HANDLE ahSrcKernelSyncInfo[SGX_MAX_SRC_SYNCS]; | 317 | IMG_HANDLE ahSrcKernelSyncInfo[SGX_MAX_SRC_SYNCS]; |
195 | #endif | 318 | #endif |
319 | #endif | ||
196 | 320 | ||
197 | 321 | ||
198 | IMG_BOOL bTADependency; | 322 | IMG_BOOL bTADependency; |
323 | #if defined (SUPPORT_SID_INTERFACE) | ||
324 | IMG_SID hTA3DSyncInfo; | ||
325 | |||
326 | IMG_SID hTASyncInfo; | ||
327 | IMG_SID h3DSyncInfo; | ||
328 | #else | ||
199 | IMG_HANDLE hTA3DSyncInfo; | 329 | IMG_HANDLE hTA3DSyncInfo; |
200 | 330 | ||
201 | IMG_HANDLE hTASyncInfo; | 331 | IMG_HANDLE hTASyncInfo; |
202 | IMG_HANDLE h3DSyncInfo; | 332 | IMG_HANDLE h3DSyncInfo; |
333 | #endif | ||
203 | #if defined(PDUMP) | 334 | #if defined(PDUMP) |
204 | IMG_UINT32 ui32CCBDumpWOff; | 335 | IMG_UINT32 ui32CCBDumpWOff; |
205 | #endif | 336 | #endif |
206 | #if defined(NO_HARDWARE) | 337 | #if defined(NO_HARDWARE) |
207 | IMG_UINT32 ui32WriteOpsPendingVal; | 338 | IMG_UINT32 ui32WriteOpsPendingVal; |
208 | #endif | 339 | #endif |
340 | IMG_HANDLE hDevMemContext; | ||
209 | } SGX_CCB_KICK; | 341 | } SGX_CCB_KICK; |
210 | 342 | ||
211 | 343 | ||
@@ -225,27 +357,56 @@ typedef struct _SGX_CLIENT_INFO_ | |||
225 | typedef struct _SGX_INTERNAL_DEVINFO_ | 357 | typedef struct _SGX_INTERNAL_DEVINFO_ |
226 | { | 358 | { |
227 | IMG_UINT32 ui32Flags; | 359 | IMG_UINT32 ui32Flags; |
360 | #if defined (SUPPORT_SID_INTERFACE) | ||
361 | IMG_SID hHostCtlKernelMemInfoHandle; | ||
362 | #else | ||
228 | IMG_HANDLE hHostCtlKernelMemInfoHandle; | 363 | IMG_HANDLE hHostCtlKernelMemInfoHandle; |
364 | #endif | ||
229 | IMG_BOOL bForcePTOff; | 365 | IMG_BOOL bForcePTOff; |
230 | } SGX_INTERNAL_DEVINFO; | 366 | } SGX_INTERNAL_DEVINFO; |
231 | 367 | ||
232 | 368 | ||
369 | typedef struct _SGX_INTERNAL_DEVINFO_KM_ | ||
370 | { | ||
371 | IMG_UINT32 ui32Flags; | ||
372 | IMG_HANDLE hHostCtlKernelMemInfoHandle; | ||
373 | IMG_BOOL bForcePTOff; | ||
374 | } SGX_INTERNAL_DEVINFO_KM; | ||
375 | |||
376 | |||
233 | #if defined(TRANSFER_QUEUE) | 377 | #if defined(TRANSFER_QUEUE) |
234 | typedef struct _PVRSRV_TRANSFER_SGX_KICK_ | 378 | typedef struct _PVRSRV_TRANSFER_SGX_KICK_ |
235 | { | 379 | { |
380 | #if defined (SUPPORT_SID_INTERFACE) | ||
381 | IMG_SID hCCBMemInfo; | ||
382 | #else | ||
236 | IMG_HANDLE hCCBMemInfo; | 383 | IMG_HANDLE hCCBMemInfo; |
384 | #endif | ||
237 | IMG_UINT32 ui32SharedCmdCCBOffset; | 385 | IMG_UINT32 ui32SharedCmdCCBOffset; |
238 | 386 | ||
239 | IMG_DEV_VIRTADDR sHWTransferContextDevVAddr; | 387 | IMG_DEV_VIRTADDR sHWTransferContextDevVAddr; |
240 | 388 | ||
389 | #if defined (SUPPORT_SID_INTERFACE) | ||
390 | IMG_SID hTASyncInfo; | ||
391 | IMG_SID h3DSyncInfo; | ||
392 | #else | ||
241 | IMG_HANDLE hTASyncInfo; | 393 | IMG_HANDLE hTASyncInfo; |
242 | IMG_HANDLE h3DSyncInfo; | 394 | IMG_HANDLE h3DSyncInfo; |
395 | #endif | ||
243 | 396 | ||
244 | IMG_UINT32 ui32NumSrcSync; | 397 | IMG_UINT32 ui32NumSrcSync; |
398 | #if defined (SUPPORT_SID_INTERFACE) | ||
399 | IMG_SID ahSrcSyncInfo[SGX_MAX_TRANSFER_SYNC_OPS]; | ||
400 | #else | ||
245 | IMG_HANDLE ahSrcSyncInfo[SGX_MAX_TRANSFER_SYNC_OPS]; | 401 | IMG_HANDLE ahSrcSyncInfo[SGX_MAX_TRANSFER_SYNC_OPS]; |
402 | #endif | ||
246 | 403 | ||
247 | IMG_UINT32 ui32NumDstSync; | 404 | IMG_UINT32 ui32NumDstSync; |
405 | #if defined (SUPPORT_SID_INTERFACE) | ||
406 | IMG_SID ahDstSyncInfo[SGX_MAX_TRANSFER_SYNC_OPS]; | ||
407 | #else | ||
248 | IMG_HANDLE ahDstSyncInfo[SGX_MAX_TRANSFER_SYNC_OPS]; | 408 | IMG_HANDLE ahDstSyncInfo[SGX_MAX_TRANSFER_SYNC_OPS]; |
409 | #endif | ||
249 | 410 | ||
250 | IMG_UINT32 ui32Flags; | 411 | IMG_UINT32 ui32Flags; |
251 | 412 | ||
@@ -253,17 +414,34 @@ typedef struct _PVRSRV_TRANSFER_SGX_KICK_ | |||
253 | #if defined(PDUMP) | 414 | #if defined(PDUMP) |
254 | IMG_UINT32 ui32CCBDumpWOff; | 415 | IMG_UINT32 ui32CCBDumpWOff; |
255 | #endif | 416 | #endif |
417 | IMG_HANDLE hDevMemContext; | ||
256 | } PVRSRV_TRANSFER_SGX_KICK, *PPVRSRV_TRANSFER_SGX_KICK; | 418 | } PVRSRV_TRANSFER_SGX_KICK, *PPVRSRV_TRANSFER_SGX_KICK; |
257 | 419 | ||
258 | #if defined(SGX_FEATURE_2D_HARDWARE) | 420 | #if defined(SGX_FEATURE_2D_HARDWARE) |
259 | typedef struct _PVRSRV_2D_SGX_KICK_ | 421 | typedef struct _PVRSRV_2D_SGX_KICK_ |
260 | { | 422 | { |
423 | #if defined (SUPPORT_SID_INTERFACE) | ||
424 | IMG_SID hCCBMemInfo; | ||
425 | #else | ||
261 | IMG_HANDLE hCCBMemInfo; | 426 | IMG_HANDLE hCCBMemInfo; |
427 | #endif | ||
262 | IMG_UINT32 ui32SharedCmdCCBOffset; | 428 | IMG_UINT32 ui32SharedCmdCCBOffset; |
263 | 429 | ||
264 | IMG_DEV_VIRTADDR sHW2DContextDevVAddr; | 430 | IMG_DEV_VIRTADDR sHW2DContextDevVAddr; |
265 | 431 | ||
266 | IMG_UINT32 ui32NumSrcSync; | 432 | IMG_UINT32 ui32NumSrcSync; |
433 | #if defined (SUPPORT_SID_INTERFACE) | ||
434 | IMG_SID ahSrcSyncInfo[SGX_MAX_2D_SRC_SYNC_OPS]; | ||
435 | |||
436 | |||
437 | IMG_SID hDstSyncInfo; | ||
438 | |||
439 | |||
440 | IMG_SID hTASyncInfo; | ||
441 | |||
442 | |||
443 | IMG_SID h3DSyncInfo; | ||
444 | #else | ||
267 | IMG_HANDLE ahSrcSyncInfo[SGX_MAX_2D_SRC_SYNC_OPS]; | 445 | IMG_HANDLE ahSrcSyncInfo[SGX_MAX_2D_SRC_SYNC_OPS]; |
268 | 446 | ||
269 | 447 | ||
@@ -274,11 +452,13 @@ typedef struct _PVRSRV_2D_SGX_KICK_ | |||
274 | 452 | ||
275 | 453 | ||
276 | IMG_HANDLE h3DSyncInfo; | 454 | IMG_HANDLE h3DSyncInfo; |
455 | #endif | ||
277 | 456 | ||
278 | IMG_UINT32 ui32PDumpFlags; | 457 | IMG_UINT32 ui32PDumpFlags; |
279 | #if defined(PDUMP) | 458 | #if defined(PDUMP) |
280 | IMG_UINT32 ui32CCBDumpWOff; | 459 | IMG_UINT32 ui32CCBDumpWOff; |
281 | #endif | 460 | #endif |
461 | IMG_HANDLE hDevMemContext; | ||
282 | } PVRSRV_2D_SGX_KICK, *PPVRSRV_2D_SGX_KICK; | 462 | } PVRSRV_2D_SGX_KICK, *PPVRSRV_2D_SGX_KICK; |
283 | #endif | 463 | #endif |
284 | #endif | 464 | #endif |
diff --git a/drivers/gpu/pvr/sgxmmu.h b/drivers/gpu/pvr/sgxmmu.h index 4df8003361c..ed74f532c62 100644 --- a/drivers/gpu/pvr/sgxmmu.h +++ b/drivers/gpu/pvr/sgxmmu.h | |||
@@ -44,19 +44,12 @@ | |||
44 | #endif | 44 | #endif |
45 | #define SGX_MMU_PDE_VALID (0x00000001U) | 45 | #define SGX_MMU_PDE_VALID (0x00000001U) |
46 | #define SGX_MMU_PDE_PAGE_SIZE_4K (0x00000000U) | 46 | #define SGX_MMU_PDE_PAGE_SIZE_4K (0x00000000U) |
47 | #if defined(SGX_FEATURE_VARIABLE_MMU_PAGE_SIZE) | 47 | #define SGX_MMU_PDE_PAGE_SIZE_16K (0x00000002U) |
48 | #define SGX_MMU_PDE_PAGE_SIZE_16K (0x00000002U) | 48 | #define SGX_MMU_PDE_PAGE_SIZE_64K (0x00000004U) |
49 | #define SGX_MMU_PDE_PAGE_SIZE_64K (0x00000004U) | 49 | #define SGX_MMU_PDE_PAGE_SIZE_256K (0x00000006U) |
50 | #define SGX_MMU_PDE_PAGE_SIZE_256K (0x00000006U) | 50 | #define SGX_MMU_PDE_PAGE_SIZE_1M (0x00000008U) |
51 | #define SGX_MMU_PDE_PAGE_SIZE_1M (0x00000008U) | 51 | #define SGX_MMU_PDE_PAGE_SIZE_4M (0x0000000AU) |
52 | #define SGX_MMU_PDE_PAGE_SIZE_4M (0x0000000AU) | 52 | #define SGX_MMU_PDE_PAGE_SIZE_MASK (0x0000000EU) |
53 | #define SGX_MMU_PDE_PAGE_SIZE_MASK (0x0000000EU) | ||
54 | #else | ||
55 | #define SGX_MMU_PDE_WRITEONLY (0x00000002U) | ||
56 | #define SGX_MMU_PDE_READONLY (0x00000004U) | ||
57 | #define SGX_MMU_PDE_CACHECONSISTENT (0x00000008U) | ||
58 | #define SGX_MMU_PDE_EDMPROTECT (0x00000010U) | ||
59 | #endif | ||
60 | 53 | ||
61 | #define SGX_MMU_PT_SHIFT (10) | 54 | #define SGX_MMU_PT_SHIFT (10) |
62 | #define SGX_MMU_PT_SIZE (1U<<SGX_MMU_PT_SHIFT) | 55 | #define SGX_MMU_PT_SIZE (1U<<SGX_MMU_PT_SHIFT) |
diff --git a/drivers/gpu/pvr/sgxmpdefs.h b/drivers/gpu/pvr/sgxmpdefs.h index b1b67bf784b..ace1d43ceb2 100644 --- a/drivers/gpu/pvr/sgxmpdefs.h +++ b/drivers/gpu/pvr/sgxmpdefs.h | |||
@@ -24,8 +24,8 @@ | |||
24 | * | 24 | * |
25 | ******************************************************************************/ | 25 | ******************************************************************************/ |
26 | 26 | ||
27 | #ifndef _SGXMPDEFS_KM_H_ | 27 | #ifndef _SGXMPDEFS_H_ |
28 | #define _SGXMPDEFS_KM_H_ | 28 | #define _SGXMPDEFS_H_ |
29 | 29 | ||
30 | #define EUR_CR_MASTER_BIF_CTRL 0x4C00 | 30 | #define EUR_CR_MASTER_BIF_CTRL 0x4C00 |
31 | #define EUR_CR_MASTER_BIF_CTRL_NOREORDER_MASK 0x00000001U | 31 | #define EUR_CR_MASTER_BIF_CTRL_NOREORDER_MASK 0x00000001U |
@@ -56,6 +56,16 @@ | |||
56 | #define EUR_CR_MASTER_BIF_CTRL_INVAL_ALL_MASK 0x00000008U | 56 | #define EUR_CR_MASTER_BIF_CTRL_INVAL_ALL_MASK 0x00000008U |
57 | #define EUR_CR_MASTER_BIF_CTRL_INVAL_ALL_SHIFT 3 | 57 | #define EUR_CR_MASTER_BIF_CTRL_INVAL_ALL_SHIFT 3 |
58 | #define EUR_CR_MASTER_BIF_CTRL_INVAL_ALL_SIGNED 0 | 58 | #define EUR_CR_MASTER_BIF_CTRL_INVAL_ALL_SIGNED 0 |
59 | #define EUR_CR_MASTER_BIF_MMU_CTRL 0x4CD0 | ||
60 | #define EUR_CR_MASTER_BIF_MMU_CTRL_PREFETCHING_ON_MASK 0x00000001U | ||
61 | #define EUR_CR_MASTER_BIF_MMU_CTRL_PREFETCHING_ON_SHIFT 0 | ||
62 | #define EUR_CR_MASTER_BIF_MMU_CTRL_PREFETCHING_ON_SIGNED 0 | ||
63 | #define EUR_CR_MASTER_BIF_MMU_CTRL_ADDR_HASH_MODE_MASK 0x00000006U | ||
64 | #define EUR_CR_MASTER_BIF_MMU_CTRL_ADDR_HASH_MODE_SHIFT 1 | ||
65 | #define EUR_CR_MASTER_BIF_MMU_CTRL_ADDR_HASH_MODE_SIGNED 0 | ||
66 | #define EUR_CR_MASTER_BIF_MMU_CTRL_ENABLE_DC_TLB_MASK 0x00000010U | ||
67 | #define EUR_CR_MASTER_BIF_MMU_CTRL_ENABLE_DC_TLB_SHIFT 4 | ||
68 | #define EUR_CR_MASTER_BIF_MMU_CTRL_ENABLE_DC_TLB_SIGNED 0 | ||
59 | #define EUR_CR_MASTER_SLC_CTRL 0x4D00 | 69 | #define EUR_CR_MASTER_SLC_CTRL 0x4D00 |
60 | #define EUR_CR_MASTER_SLC_CTRL_DISABLE_REORDERING_MASK 0x00800000U | 70 | #define EUR_CR_MASTER_SLC_CTRL_DISABLE_REORDERING_MASK 0x00800000U |
61 | #define EUR_CR_MASTER_SLC_CTRL_DISABLE_REORDERING_SHIFT 23 | 71 | #define EUR_CR_MASTER_SLC_CTRL_DISABLE_REORDERING_SHIFT 23 |
@@ -202,6 +212,19 @@ | |||
202 | #define EUR_CR_MASTER_SLC_CTRL_FLUSH_ALL_MASK 0x00000010U | 212 | #define EUR_CR_MASTER_SLC_CTRL_FLUSH_ALL_MASK 0x00000010U |
203 | #define EUR_CR_MASTER_SLC_CTRL_FLUSH_ALL_SHIFT 4 | 213 | #define EUR_CR_MASTER_SLC_CTRL_FLUSH_ALL_SHIFT 4 |
204 | #define EUR_CR_MASTER_SLC_CTRL_FLUSH_ALL_SIGNED 0 | 214 | #define EUR_CR_MASTER_SLC_CTRL_FLUSH_ALL_SIGNED 0 |
215 | #define EUR_CR_MASTER_SLC_CTRL_FLUSH_INV 0x4D34 | ||
216 | #define EUR_CR_MASTER_SLC_CTRL_FLUSH_INV_DM_EVENT_MASK 0x00000080U | ||
217 | #define EUR_CR_MASTER_SLC_CTRL_FLUSH_INV_DM_EVENT_SHIFT 7 | ||
218 | #define EUR_CR_MASTER_SLC_CTRL_FLUSH_INV_DM_EVENT_SIGNED 0 | ||
219 | #define EUR_CR_MASTER_SLC_CTRL_FLUSH_INV_DM_PIXEL_MASK 0x00000040U | ||
220 | #define EUR_CR_MASTER_SLC_CTRL_FLUSH_INV_DM_PIXEL_SHIFT 6 | ||
221 | #define EUR_CR_MASTER_SLC_CTRL_FLUSH_INV_DM_PIXEL_SIGNED 0 | ||
222 | #define EUR_CR_MASTER_SLC_CTRL_FLUSH_INV_DM_VERTEX_MASK 0x00000020U | ||
223 | #define EUR_CR_MASTER_SLC_CTRL_FLUSH_INV_DM_VERTEX_SHIFT 5 | ||
224 | #define EUR_CR_MASTER_SLC_CTRL_FLUSH_INV_DM_VERTEX_SIGNED 0 | ||
225 | #define EUR_CR_MASTER_SLC_CTRL_FLUSH_INV_ALL_MASK 0x00000010U | ||
226 | #define EUR_CR_MASTER_SLC_CTRL_FLUSH_INV_ALL_SHIFT 4 | ||
227 | #define EUR_CR_MASTER_SLC_CTRL_FLUSH_INV_ALL_SIGNED 0 | ||
205 | #define EUR_CR_MASTER_BREAKPOINT_READ 0x4F18 | 228 | #define EUR_CR_MASTER_BREAKPOINT_READ 0x4F18 |
206 | #define EUR_CR_MASTER_BREAKPOINT_READ_ADDRESS_MASK 0xFFFFFFF0U | 229 | #define EUR_CR_MASTER_BREAKPOINT_READ_ADDRESS_MASK 0xFFFFFFF0U |
207 | #define EUR_CR_MASTER_BREAKPOINT_READ_ADDRESS_SHIFT 4 | 230 | #define EUR_CR_MASTER_BREAKPOINT_READ_ADDRESS_SHIFT 4 |
@@ -214,6 +237,9 @@ | |||
214 | #define EUR_CR_MASTER_BREAKPOINT_TRAP_WRNOTIFY_SHIFT 0 | 237 | #define EUR_CR_MASTER_BREAKPOINT_TRAP_WRNOTIFY_SHIFT 0 |
215 | #define EUR_CR_MASTER_BREAKPOINT_TRAP_WRNOTIFY_SIGNED 0 | 238 | #define EUR_CR_MASTER_BREAKPOINT_TRAP_WRNOTIFY_SIGNED 0 |
216 | #define EUR_CR_MASTER_BREAKPOINT 0x4F20 | 239 | #define EUR_CR_MASTER_BREAKPOINT 0x4F20 |
240 | #define EUR_CR_MASTER_BREAKPOINT_ID_MASK 0x00000030U | ||
241 | #define EUR_CR_MASTER_BREAKPOINT_ID_SHIFT 4 | ||
242 | #define EUR_CR_MASTER_BREAKPOINT_ID_SIGNED 0 | ||
217 | #define EUR_CR_MASTER_BREAKPOINT_UNTRAPPED_MASK 0x00000008U | 243 | #define EUR_CR_MASTER_BREAKPOINT_UNTRAPPED_MASK 0x00000008U |
218 | #define EUR_CR_MASTER_BREAKPOINT_UNTRAPPED_SHIFT 3 | 244 | #define EUR_CR_MASTER_BREAKPOINT_UNTRAPPED_SHIFT 3 |
219 | #define EUR_CR_MASTER_BREAKPOINT_UNTRAPPED_SIGNED 0 | 245 | #define EUR_CR_MASTER_BREAKPOINT_UNTRAPPED_SIGNED 0 |
diff --git a/drivers/gpu/pvr/syscommon.h b/drivers/gpu/pvr/syscommon.h index 38b610738dd..46ac17375d1 100644 --- a/drivers/gpu/pvr/syscommon.h +++ b/drivers/gpu/pvr/syscommon.h | |||
@@ -57,6 +57,9 @@ typedef struct _SYS_DEVICE_ID_TAG | |||
57 | 57 | ||
58 | #define SYS_MAX_LOCAL_DEVMEM_ARENAS 4 | 58 | #define SYS_MAX_LOCAL_DEVMEM_ARENAS 4 |
59 | 59 | ||
60 | typedef IMG_HANDLE (*PFN_HTIMER_CREATE) (IMG_VOID); | ||
61 | typedef IMG_UINT32 (*PFN_HTIMER_GETUS) (IMG_HANDLE); | ||
62 | typedef IMG_VOID (*PFN_HTIMER_DESTROY) (IMG_HANDLE); | ||
60 | typedef struct _SYS_DATA_TAG_ | 63 | typedef struct _SYS_DATA_TAG_ |
61 | { | 64 | { |
62 | IMG_UINT32 ui32NumDevices; | 65 | IMG_UINT32 ui32NumDevices; |
@@ -81,14 +84,20 @@ typedef struct _SYS_DATA_TAG_ | |||
81 | struct _DEVICE_COMMAND_DATA_ *apsDeviceCommandData[SYS_DEVICE_COUNT]; | 84 | struct _DEVICE_COMMAND_DATA_ *apsDeviceCommandData[SYS_DEVICE_COUNT]; |
82 | 85 | ||
83 | 86 | ||
84 | IMG_BOOL bReProcessQueues; | ||
85 | |||
86 | RA_ARENA *apsLocalDevMemArena[SYS_MAX_LOCAL_DEVMEM_ARENAS]; | 87 | RA_ARENA *apsLocalDevMemArena[SYS_MAX_LOCAL_DEVMEM_ARENAS]; |
87 | 88 | ||
88 | IMG_CHAR *pszVersionString; | 89 | IMG_CHAR *pszVersionString; |
89 | PVRSRV_EVENTOBJECT *psGlobalEventObject; | 90 | #if defined (SUPPORT_SID_INTERFACE) |
91 | PVRSRV_EVENTOBJECT_KM *psGlobalEventObject; | ||
92 | #else | ||
93 | PVRSRV_EVENTOBJECT *psGlobalEventObject; | ||
94 | #endif | ||
90 | 95 | ||
91 | PVRSRV_MISC_INFO_CPUCACHEOP_TYPE ePendingCacheOpType; | 96 | PVRSRV_MISC_INFO_CPUCACHEOP_TYPE ePendingCacheOpType; |
97 | |||
98 | PFN_HTIMER_CREATE pfnHighResTimerCreate; | ||
99 | PFN_HTIMER_GETUS pfnHighResTimerGetus; | ||
100 | PFN_HTIMER_DESTROY pfnHighResTimerDestroy; | ||
92 | } SYS_DATA; | 101 | } SYS_DATA; |
93 | 102 | ||
94 | 103 | ||
@@ -120,8 +129,8 @@ PVRSRV_ERROR SysDevicePostPowerState(IMG_UINT32 ui32DeviceIndex, | |||
120 | PVRSRV_DEV_POWER_STATE eCurrentPowerState); | 129 | PVRSRV_DEV_POWER_STATE eCurrentPowerState); |
121 | 130 | ||
122 | #if defined(SYS_CUSTOM_POWERLOCK_WRAP) | 131 | #if defined(SYS_CUSTOM_POWERLOCK_WRAP) |
123 | PVRSRV_ERROR SysPowerLockWrap(SYS_DATA *psSysData); | 132 | PVRSRV_ERROR SysPowerLockWrap(IMG_VOID); |
124 | IMG_VOID SysPowerLockUnwrap(SYS_DATA *psSysData); | 133 | IMG_VOID SysPowerLockUnwrap(IMG_VOID); |
125 | #endif | 134 | #endif |
126 | 135 | ||
127 | PVRSRV_ERROR SysOEMFunction ( IMG_UINT32 ui32ID, | 136 | PVRSRV_ERROR SysOEMFunction ( IMG_UINT32 ui32ID, |
@@ -143,6 +152,7 @@ IMG_BOOL SysVerifySysPAddrToDevPAddr (PVRSRV_DEVICE_TYPE eDeviceType, IMG_SYS_PH | |||
143 | 152 | ||
144 | extern SYS_DATA* gpsSysData; | 153 | extern SYS_DATA* gpsSysData; |
145 | 154 | ||
155 | |||
146 | #if !defined(USE_CODE) | 156 | #if !defined(USE_CODE) |
147 | 157 | ||
148 | #ifdef INLINE_IS_PRAGMA | 158 | #ifdef INLINE_IS_PRAGMA |
@@ -216,5 +226,37 @@ static inline IMG_VOID SysWriteHWReg(IMG_PVOID pvLinRegBaseAddr, IMG_UINT32 ui32 | |||
216 | } | 226 | } |
217 | #endif | 227 | #endif |
218 | 228 | ||
229 | #ifdef INLINE_IS_PRAGMA | ||
230 | #pragma inline(SysHighResTimerCreate) | ||
231 | #endif | ||
232 | static INLINE IMG_HANDLE SysHighResTimerCreate(IMG_VOID) | ||
233 | { | ||
234 | SYS_DATA *psSysData; | ||
235 | |||
236 | SysAcquireData(&psSysData); | ||
237 | return psSysData->pfnHighResTimerCreate(); | ||
238 | } | ||
239 | |||
240 | #ifdef INLINE_IS_PRAGMA | ||
241 | #pragma inline(SysHighResTimerGetus) | ||
242 | #endif | ||
243 | static INLINE IMG_UINT32 SysHighResTimerGetus(IMG_HANDLE hTimer) | ||
244 | { | ||
245 | SYS_DATA *psSysData; | ||
246 | |||
247 | SysAcquireData(&psSysData); | ||
248 | return psSysData->pfnHighResTimerGetus(hTimer); | ||
249 | } | ||
250 | |||
251 | #ifdef INLINE_IS_PRAGMA | ||
252 | #pragma inline(SysHighResTimerDestroy) | ||
253 | #endif | ||
254 | static INLINE IMG_VOID SysHighResTimerDestroy(IMG_HANDLE hTimer) | ||
255 | { | ||
256 | SYS_DATA *psSysData; | ||
257 | |||
258 | SysAcquireData(&psSysData); | ||
259 | psSysData->pfnHighResTimerDestroy(hTimer); | ||
260 | } | ||
219 | #endif | 261 | #endif |
220 | 262 | ||
diff --git a/drivers/gpu/pvr/ttrace.h b/drivers/gpu/pvr/ttrace.h new file mode 100644 index 00000000000..159cbcaeb52 --- /dev/null +++ b/drivers/gpu/pvr/ttrace.h | |||
@@ -0,0 +1,184 @@ | |||
1 | /********************************************************************** | ||
2 | * | ||
3 | * Copyright(c) 2008 Imagination Technologies Ltd. All rights reserved. | ||
4 | * | ||
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. | ||
8 | * | ||
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. | ||
13 | * | ||
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. | ||
17 | * | ||
18 | * The full GNU General Public License is included in this distribution in | ||
19 | * the file called "COPYING". | ||
20 | * | ||
21 | * Contact Information: | ||
22 | * Imagination Technologies Ltd. <gpl-support@imgtec.com> | ||
23 | * Home Park Estate, Kings Langley, Herts, WD4 8LZ, UK | ||
24 | * | ||
25 | ******************************************************************************/ | ||
26 | |||
27 | #include "services_headers.h" | ||
28 | #include "ttrace_common.h" | ||
29 | #include "ttrace_tokens.h" | ||
30 | |||
31 | #ifndef __TTRACE_H__ | ||
32 | #define __TTRACE_H__ | ||
33 | |||
34 | #if defined(TTRACE) | ||
35 | |||
36 | #define PVR_TTRACE(group, class, token) \ | ||
37 | PVRSRVTimeTrace(group, class, token) | ||
38 | #define PVR_TTRACE_UI8(group, class, token, val) \ | ||
39 | PVRSRVTimeTraceUI8(group, class, token, val) | ||
40 | #define PVR_TTRACE_UI16(group, class, token, val) \ | ||
41 | PVRSRVTimeTraceUI16(group, class, token, val) | ||
42 | #define PVR_TTRACE_UI32(group, class, token, val) \ | ||
43 | PVRSRVTimeTraceUI32(group, class, token, val) | ||
44 | #define PVR_TTRACE_UI64(group, class, token, val) \ | ||
45 | PVRSRVTimeTraceUI64(group, class, token, val) | ||
46 | #define PVR_TTRACE_DEV_VIRTADDR(group, class, token, val) \ | ||
47 | PVRSRVTimeTraceDevVirtAddr(group, class, token, val) | ||
48 | #define PVR_TTRACE_CPU_PHYADDR(group, class, token, val) \ | ||
49 | PVRSRVTimeTraceCpuPhyAddr(group, class, token, val) | ||
50 | #define PVR_TTRACE_DEV_PHYADDR(group, class, token, val) \ | ||
51 | PVRSRVTimeTraceDevPhysAddr(group, class, token, val) | ||
52 | #define PVR_TTRACE_SYS_PHYADDR(group, class, token, val) \ | ||
53 | PVRSRVTimeTraceSysPhysAddr(group, class, token, val) | ||
54 | #define PVR_TTRACE_SYNC_OBJECT(group, token, syncobj, op) \ | ||
55 | PVRSRVTimeTraceSyncObject(group, token, syncobj, op) | ||
56 | |||
57 | IMG_IMPORT IMG_VOID IMG_CALLCONV PVRSRVTimeTraceArray(IMG_UINT32 ui32Group, IMG_UINT32 ui32Class, | ||
58 | IMG_UINT32 ui32Token, IMG_UINT32 ui32TypeSize, | ||
59 | IMG_UINT32 ui32Count, IMG_UINT8 *ui8Data); | ||
60 | |||
61 | #ifdef INLINE_IS_PRAGMA | ||
62 | #pragma inline(PVRSRVTimeTrace) | ||
63 | #endif | ||
64 | static INLINE IMG_VOID PVRSRVTimeTrace(IMG_UINT32 ui32Group, IMG_UINT32 ui32Class, | ||
65 | IMG_UINT32 ui32Token) | ||
66 | { | ||
67 | PVRSRVTimeTraceArray(ui32Group, ui32Class, ui32Token, 0, 0, NULL); | ||
68 | } | ||
69 | |||
70 | #ifdef INLINE_IS_PRAGMA | ||
71 | #pragma inline(PVRSRVTimeTraceUI8) | ||
72 | #endif | ||
73 | static INLINE IMG_VOID PVRSRVTimeTraceUI8(IMG_UINT32 ui32Group, IMG_UINT32 ui32Class, | ||
74 | IMG_UINT32 ui32Token, IMG_UINT8 ui8Value) | ||
75 | { | ||
76 | PVRSRVTimeTraceArray(ui32Group, ui32Class, ui32Token, PVRSRV_TRACE_TYPE_UI8, | ||
77 | 1, &ui8Value); | ||
78 | } | ||
79 | |||
80 | #ifdef INLINE_IS_PRAGMA | ||
81 | #pragma inline(PVRSRVTimeTraceUI16) | ||
82 | #endif | ||
83 | static INLINE IMG_VOID PVRSRVTimeTraceUI16(IMG_UINT32 ui32Group, IMG_UINT32 ui32Class, | ||
84 | IMG_UINT32 ui32Token, IMG_UINT16 ui16Value) | ||
85 | { | ||
86 | PVRSRVTimeTraceArray(ui32Group, ui32Class, ui32Token, PVRSRV_TRACE_TYPE_UI16, | ||
87 | 1, (IMG_UINT8 *) &ui16Value); | ||
88 | } | ||
89 | |||
90 | #ifdef INLINE_IS_PRAGMA | ||
91 | #pragma inline(PVRSRVTimeTraceUI32) | ||
92 | #endif | ||
93 | static INLINE IMG_VOID PVRSRVTimeTraceUI32(IMG_UINT32 ui32Group, IMG_UINT32 ui32Class, | ||
94 | IMG_UINT32 ui32Token, IMG_UINT32 ui32Value) | ||
95 | { | ||
96 | PVRSRVTimeTraceArray(ui32Group, ui32Class, ui32Token, PVRSRV_TRACE_TYPE_UI32, | ||
97 | 1, (IMG_UINT8 *) &ui32Value); | ||
98 | } | ||
99 | |||
100 | #ifdef INLINE_IS_PRAGMA | ||
101 | #pragma inline(PVRSRVTimeTraceUI64) | ||
102 | #endif | ||
103 | static INLINE IMG_VOID PVRSRVTimeTraceUI64(IMG_UINT32 ui32Group, IMG_UINT32 ui32Class, | ||
104 | IMG_UINT32 ui32Token, IMG_UINT64 ui64Value) | ||
105 | { | ||
106 | PVRSRVTimeTraceArray(ui32Group, ui32Class, ui32Token, PVRSRV_TRACE_TYPE_UI64, | ||
107 | 1, (IMG_UINT8 *) &ui64Value); | ||
108 | } | ||
109 | |||
110 | #ifdef INLINE_IS_PRAGMA | ||
111 | #pragma inline(PVRSRVTimeTraceDevVirtAddr) | ||
112 | #endif | ||
113 | static INLINE IMG_VOID PVRSRVTimeTraceDevVirtAddr(IMG_UINT32 ui32Group, IMG_UINT32 ui32Class, | ||
114 | IMG_UINT32 ui32Token, IMG_DEV_VIRTADDR psVAddr) | ||
115 | { | ||
116 | PVRSRVTimeTraceArray(ui32Group, ui32Class, ui32Token, PVRSRV_TRACE_TYPE_UI32, | ||
117 | 1, (IMG_UINT8 *) &psVAddr.uiAddr); | ||
118 | } | ||
119 | |||
120 | #ifdef INLINE_IS_PRAGMA | ||
121 | #pragma inline(PVRSRVTimeTraceCpuPhyAddr) | ||
122 | #endif | ||
123 | static INLINE IMG_VOID PVRSRVTimeTraceCpuPhyAddr(IMG_UINT32 ui32Group, IMG_UINT32 ui32Class, | ||
124 | IMG_UINT32 ui32Token, IMG_CPU_PHYADDR psPAddr) | ||
125 | { | ||
126 | PVRSRVTimeTraceArray(ui32Group, ui32Class, ui32Token, PVRSRV_TRACE_TYPE_UI32, | ||
127 | 1, (IMG_UINT8 *) &psPAddr.uiAddr); | ||
128 | } | ||
129 | |||
130 | #ifdef INLINE_IS_PRAGMA | ||
131 | #pragma inline(PVRSRVTimeTraceDevPhysAddr) | ||
132 | #endif | ||
133 | static INLINE IMG_VOID PVRSRVTimeTraceDevPhysAddr(IMG_UINT32 ui32Group, IMG_UINT32 ui32Class, | ||
134 | IMG_UINT32 ui32Token, IMG_DEV_PHYADDR psPAddr) | ||
135 | { | ||
136 | PVRSRVTimeTraceArray(ui32Group, ui32Class, ui32Token, PVRSRV_TRACE_TYPE_UI32, | ||
137 | 1, (IMG_UINT8 *) &psPAddr.uiAddr); | ||
138 | } | ||
139 | |||
140 | #ifdef INLINE_IS_PRAGMA | ||
141 | #pragma inline(PVRSRVTimeTraceSysPhysAddr) | ||
142 | #endif | ||
143 | static INLINE IMG_VOID PVRSRVTimeTraceSysPhysAddr(IMG_UINT32 ui32Group, IMG_UINT32 ui32Class, | ||
144 | IMG_UINT32 ui32Token, IMG_SYS_PHYADDR psPAddr) | ||
145 | { | ||
146 | PVRSRVTimeTraceArray(ui32Group, ui32Class, ui32Token, sizeof(psPAddr.uiAddr), | ||
147 | 1, (IMG_UINT8 *) &psPAddr.uiAddr); | ||
148 | } | ||
149 | |||
150 | #else | ||
151 | |||
152 | #define PVR_TTRACE(group, class, token) \ | ||
153 | ((void) 0) | ||
154 | #define PVR_TTRACE_UI8(group, class, token, val) \ | ||
155 | ((void) 0) | ||
156 | #define PVR_TTRACE_UI16(group, class, token, val) \ | ||
157 | ((void) 0) | ||
158 | #define PVR_TTRACE_UI32(group, class, token, val) \ | ||
159 | ((void) 0) | ||
160 | #define PVR_TTRACE_UI64(group, class, token, val) \ | ||
161 | ((void) 0) | ||
162 | #define PVR_TTRACE_DEV_VIRTADDR(group, class, token, val) \ | ||
163 | ((void) 0) | ||
164 | #define PVR_TTRACE_CPU_PHYADDR(group, class, token, val) \ | ||
165 | ((void) 0) | ||
166 | #define PVR_TTRACE_DEV_PHYADDR(group, class, token, val) \ | ||
167 | ((void) 0) | ||
168 | #define PVR_TTRACE_SYS_PHYADDR(group, class, token, val) \ | ||
169 | ((void) 0) | ||
170 | #define PVR_TTRACE_SYNC_OBJECT(group, token, syncobj, op) \ | ||
171 | ((void) 0) | ||
172 | |||
173 | #endif | ||
174 | |||
175 | IMG_IMPORT PVRSRV_ERROR PVRSRVTimeTraceInit(IMG_VOID); | ||
176 | IMG_IMPORT IMG_VOID PVRSRVTimeTraceDeinit(IMG_VOID); | ||
177 | |||
178 | IMG_IMPORT IMG_VOID PVRSRVTimeTraceSyncObject(IMG_UINT32 ui32Group, IMG_UINT32 ui32Token, | ||
179 | PVRSRV_KERNEL_SYNC_INFO *psSync, IMG_UINT8 ui8SyncOp); | ||
180 | IMG_IMPORT PVRSRV_ERROR PVRSRVTimeTraceBufferCreate(IMG_UINT32 ui32PID); | ||
181 | IMG_IMPORT PVRSRV_ERROR PVRSRVTimeTraceBufferDestroy(IMG_UINT32 ui32PID); | ||
182 | |||
183 | IMG_IMPORT IMG_VOID PVRSRVDumpTimeTraceBuffers(IMG_VOID); | ||
184 | #endif | ||
diff --git a/drivers/gpu/pvr/ttrace_common.h b/drivers/gpu/pvr/ttrace_common.h new file mode 100644 index 00000000000..b7f884e0992 --- /dev/null +++ b/drivers/gpu/pvr/ttrace_common.h | |||
@@ -0,0 +1,81 @@ | |||
1 | /********************************************************************** | ||
2 | * | ||
3 | * Copyright(c) 2008 Imagination Technologies Ltd. All rights reserved. | ||
4 | * | ||
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. | ||
8 | * | ||
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. | ||
13 | * | ||
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. | ||
17 | * | ||
18 | * The full GNU General Public License is included in this distribution in | ||
19 | * the file called "COPYING". | ||
20 | * | ||
21 | * Contact Information: | ||
22 | * Imagination Technologies Ltd. <gpl-support@imgtec.com> | ||
23 | * Home Park Estate, Kings Langley, Herts, WD4 8LZ, UK | ||
24 | * | ||
25 | ******************************************************************************/ | ||
26 | |||
27 | #include "img_types.h" | ||
28 | |||
29 | #ifndef __TTRACE_COMMON_H__ | ||
30 | #define __TTRACE_COMMON_H__ | ||
31 | |||
32 | #define PVRSRV_TRACE_HEADER 0 | ||
33 | #define PVRSRV_TRACE_TIMESTAMP 1 | ||
34 | #define PVRSRV_TRACE_HOSTUID 2 | ||
35 | #define PVRSRV_TRACE_DATA_HEADER 3 | ||
36 | #define PVRSRV_TRACE_DATA_PAYLOAD 4 | ||
37 | |||
38 | #define PVRSRV_TRACE_ITEM_SIZE 16 | ||
39 | |||
40 | #define PVRSRV_TRACE_GROUP_MASK 0xff | ||
41 | #define PVRSRV_TRACE_CLASS_MASK 0xff | ||
42 | #define PVRSRV_TRACE_TOKEN_MASK 0xffff | ||
43 | |||
44 | #define PVRSRV_TRACE_GROUP_SHIFT 24 | ||
45 | #define PVRSRV_TRACE_CLASS_SHIFT 16 | ||
46 | #define PVRSRV_TRACE_TOKEN_SHIFT 0 | ||
47 | |||
48 | #define PVRSRV_TRACE_SIZE_MASK 0xffff | ||
49 | #define PVRSRV_TRACE_TYPE_MASK 0xf | ||
50 | #define PVRSRV_TRACE_COUNT_MASK 0xfff | ||
51 | |||
52 | #define PVRSRV_TRACE_SIZE_SHIFT 16 | ||
53 | #define PVRSRV_TRACE_TYPE_SHIFT 12 | ||
54 | #define PVRSRV_TRACE_COUNT_SHIFT 0 | ||
55 | |||
56 | |||
57 | #define WRITE_HEADER(n,m) \ | ||
58 | ((m & PVRSRV_TRACE_##n##_MASK) << PVRSRV_TRACE_##n##_SHIFT) | ||
59 | |||
60 | #define READ_HEADER(n,m) \ | ||
61 | ((m & (PVRSRV_TRACE_##n##_MASK << PVRSRV_TRACE_##n##_SHIFT)) >> PVRSRV_TRACE_##n##_SHIFT) | ||
62 | |||
63 | #define TIME_TRACE_BUFFER_SIZE 4096 | ||
64 | |||
65 | #define PVRSRV_TRACE_TYPE_UI8 0 | ||
66 | #define PVRSRV_TRACE_TYPE_UI16 1 | ||
67 | #define PVRSRV_TRACE_TYPE_UI32 2 | ||
68 | #define PVRSRV_TRACE_TYPE_UI64 3 | ||
69 | |||
70 | #define PVRSRV_TRACE_TYPE_SYNC 15 | ||
71 | #define PVRSRV_TRACE_SYNC_UID 0 | ||
72 | #define PVRSRV_TRACE_SYNC_WOP 1 | ||
73 | #define PVRSRV_TRACE_SYNC_WOC 2 | ||
74 | #define PVRSRV_TRACE_SYNC_ROP 3 | ||
75 | #define PVRSRV_TRACE_SYNC_ROC 4 | ||
76 | #define PVRSRV_TRACE_SYNC_WO_DEV_VADDR 5 | ||
77 | #define PVRSRV_TRACE_SYNC_RO_DEV_VADDR 6 | ||
78 | #define PVRSRV_TRACE_SYNC_OP 7 | ||
79 | #define PVRSRV_TRACE_TYPE_SYNC_SIZE ((PVRSRV_TRACE_SYNC_OP + 1) * sizeof(IMG_UINT32)) | ||
80 | |||
81 | #endif | ||
diff --git a/drivers/gpu/pvr/ttrace_tokens.h b/drivers/gpu/pvr/ttrace_tokens.h new file mode 100644 index 00000000000..530ce3e380e --- /dev/null +++ b/drivers/gpu/pvr/ttrace_tokens.h | |||
@@ -0,0 +1,84 @@ | |||
1 | /********************************************************************** | ||
2 | * | ||
3 | * Copyright(c) 2008 Imagination Technologies Ltd. All rights reserved. | ||
4 | * | ||
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. | ||
8 | * | ||
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. | ||
13 | * | ||
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. | ||
17 | * | ||
18 | * The full GNU General Public License is included in this distribution in | ||
19 | * the file called "COPYING". | ||
20 | * | ||
21 | * Contact Information: | ||
22 | * Imagination Technologies Ltd. <gpl-support@imgtec.com> | ||
23 | * Home Park Estate, Kings Langley, Herts, WD4 8LZ, UK | ||
24 | * | ||
25 | ******************************************************************************/ | ||
26 | |||
27 | #ifndef __TTRACE_TOKENS_H__ | ||
28 | #define __TTRACE_TOKENS_H__ | ||
29 | |||
30 | #define PVRSRV_TRACE_GROUP_KICK 0 | ||
31 | #define PVRSRV_TRACE_GROUP_TRANSFER 1 | ||
32 | #define PVRSRV_TRACE_GROUP_QUEUE 2 | ||
33 | #define PVRSRV_TRACE_GROUP_POWER 3 | ||
34 | #define PVRSRV_TRACE_GROUP_MKSYNC 4 | ||
35 | |||
36 | #define PVRSRV_TRACE_GROUP_PADDING 255 | ||
37 | |||
38 | #define PVRSRV_TRACE_CLASS_FUNCTION_ENTER 0 | ||
39 | #define PVRSRV_TRACE_CLASS_FUNCTION_EXIT 1 | ||
40 | #define PVRSRV_TRACE_CLASS_SYNC 2 | ||
41 | #define PVRSRV_TRACE_CLASS_CCB 3 | ||
42 | #define PVRSRV_TRACE_CLASS_CMD_START 4 | ||
43 | #define PVRSRV_TRACE_CLASS_CMD_END 5 | ||
44 | #define PVRSRV_TRACE_CLASS_CMD_COMP_START 6 | ||
45 | #define PVRSRV_TRACE_CLASS_CMD_COMP_END 7 | ||
46 | |||
47 | #define PVRSRV_TRACE_CLASS_NONE 255 | ||
48 | |||
49 | #define PVRSRV_SYNCOP_SAMPLE 0 | ||
50 | #define PVRSRV_SYNCOP_COMPLETE 1 | ||
51 | #define PVRSRV_SYNCOP_DUMP 2 | ||
52 | |||
53 | #define KICK_TOKEN_DOKICK 0 | ||
54 | #define KICK_TOKEN_CCB_OFFSET 1 | ||
55 | #define KICK_TOKEN_TA3D_SYNC 2 | ||
56 | #define KICK_TOKEN_TA_SYNC 3 | ||
57 | #define KICK_TOKEN_3D_SYNC 4 | ||
58 | #define KICK_TOKEN_SRC_SYNC 5 | ||
59 | #define KICK_TOKEN_DST_SYNC 6 | ||
60 | |||
61 | #define TRANSFER_TOKEN_SUBMIT 0 | ||
62 | #define TRANSFER_TOKEN_TA_SYNC 1 | ||
63 | #define TRANSFER_TOKEN_3D_SYNC 2 | ||
64 | #define TRANSFER_TOKEN_SRC_SYNC 3 | ||
65 | #define TRANSFER_TOKEN_DST_SYNC 4 | ||
66 | #define TRANSFER_TOKEN_CCB_OFFSET 5 | ||
67 | |||
68 | #define QUEUE_TOKEN_GET_SPACE 0 | ||
69 | #define QUEUE_TOKEN_INSERTKM 1 | ||
70 | #define QUEUE_TOKEN_SUBMITKM 2 | ||
71 | #define QUEUE_TOKEN_PROCESS_COMMAND 3 | ||
72 | #define QUEUE_TOKEN_PROCESS_QUEUES 4 | ||
73 | #define QUEUE_TOKEN_COMMAND_COMPLETE 5 | ||
74 | #define QUEUE_TOKEN_UPDATE_DST 6 | ||
75 | #define QUEUE_TOKEN_UPDATE_SRC 7 | ||
76 | #define QUEUE_TOKEN_SRC_SYNC 8 | ||
77 | #define QUEUE_TOKEN_DST_SYNC 9 | ||
78 | #define QUEUE_TOKEN_COMMAND_TYPE 10 | ||
79 | |||
80 | #define MKSYNC_TOKEN_KERNEL_CCB_OFFSET 0 | ||
81 | #define MKSYNC_TOKEN_CORE_CLK 1 | ||
82 | #define MKSYNC_TOKEN_UKERNEL_CLK 2 | ||
83 | |||
84 | #endif | ||