gpu: pvr: V2: Find and fix all incorrect sync counter completion checks
[sgx.git] / pvr / pvr_bridge.h
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 __PVR_BRIDGE_H__
28 #define __PVR_BRIDGE_H__
29
30
31 #include "servicesint.h"
32
33
34 #include <linux/ioctl.h>
35
36 #define PVRSRV_IOC_GID      'g'
37 #define PVRSRV_IO(INDEX) \
38         _IO(PVRSRV_IOC_GID, INDEX, struct PVRSRV_BRIDGE_PACKAGE)
39 #define PVRSRV_IOW(INDEX) \
40         _IOW(PVRSRV_IOC_GID, INDEX, struct PVRSRV_BRIDGE_PACKAGE)
41 #define PVRSRV_IOR(INDEX) \
42         _IOR(PVRSRV_IOC_GID, INDEX, struct PVRSRV_BRIDGE_PACKAGE)
43 #define PVRSRV_IOWR(INDEX) \
44         _IOWR(PVRSRV_IOC_GID, INDEX, struct PVRSRV_BRIDGE_PACKAGE)
45
46
47 #define PVRSRV_BRIDGE_CORE_CMD_FIRST                            0
48 #define PVRSRV_BRIDGE_ENUM_DEVICES                              \
49                 PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+0)
50 #define PVRSRV_BRIDGE_ACQUIRE_DEVICEINFO                        \
51                 PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+1)
52 #define PVRSRV_BRIDGE_RELEASE_DEVICEINFO                        \
53                 PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+2)
54 #define PVRSRV_BRIDGE_CREATE_DEVMEMCONTEXT                      \
55                 PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+3)
56 #define PVRSRV_BRIDGE_DESTROY_DEVMEMCONTEXT                     \
57                 PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+4)
58 #define PVRSRV_BRIDGE_GET_DEVMEM_HEAPINFO                       \
59                 PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+5)
60 #define PVRSRV_BRIDGE_ALLOC_DEVICEMEM                           \
61                 PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+6)
62 #define PVRSRV_BRIDGE_FREE_DEVICEMEM                            \
63                 PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+7)
64 #define PVRSRV_BRIDGE_GETFREE_DEVICEMEM                         \
65                 PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+8)
66 #define PVRSRV_BRIDGE_CREATE_COMMANDQUEUE                       \
67                 PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+9)
68 #define PVRSRV_BRIDGE_DESTROY_COMMANDQUEUE                      \
69                 PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+10)
70 #define PVRSRV_BRIDGE_MHANDLE_TO_MMAP_DATA                      \
71                 PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+11)
72 #define PVRSRV_BRIDGE_CONNECT_SERVICES                          \
73                 PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+12)
74 #define PVRSRV_BRIDGE_DISCONNECT_SERVICES                       \
75                 PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+13)
76 #define PVRSRV_BRIDGE_WRAP_DEVICE_MEM                           \
77                 PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+14)
78 #define PVRSRV_BRIDGE_GET_DEVICEMEMINFO                         \
79                 PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+15)
80 #define PVRSRV_BRIDGE_RESERVE_DEV_VIRTMEM                       \
81                 PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+16)
82 #define PVRSRV_BRIDGE_FREE_DEV_VIRTMEM                          \
83                 PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+17)
84 #define PVRSRV_BRIDGE_MAP_EXT_MEMORY                            \
85                 PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+18)
86 #define PVRSRV_BRIDGE_UNMAP_EXT_MEMORY                          \
87                 PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+19)
88 #define PVRSRV_BRIDGE_MAP_DEV_MEMORY                            \
89                 PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+20)
90 #define PVRSRV_BRIDGE_UNMAP_DEV_MEMORY                          \
91                 PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+21)
92 #define PVRSRV_BRIDGE_MAP_DEVICECLASS_MEMORY                    \
93                 PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+22)
94 #define PVRSRV_BRIDGE_UNMAP_DEVICECLASS_MEMORY                  \
95                 PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+23)
96 #define PVRSRV_BRIDGE_MAP_MEM_INFO_TO_USER                      \
97                 PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+24)
98 #define PVRSRV_BRIDGE_UNMAP_MEM_INFO_FROM_USER                  \
99                 PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+25)
100 #define PVRSRV_BRIDGE_EXPORT_DEVICEMEM                          \
101                 PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+26)
102 #define PVRSRV_BRIDGE_RELEASE_MMAP_DATA                         \
103                 PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+27)
104 #define PVRSRV_BRIDGE_CACHE_FLUSH_DRM                           \
105                 PVRSRV_IOWR(PVRSRV_BRIDGE_CORE_CMD_FIRST+28)
106 #define PVRSRV_BRIDGE_CORE_CMD_LAST                             \
107                 (PVRSRV_BRIDGE_CORE_CMD_FIRST+28)
108
109 #define PVRSRV_BRIDGE_SIM_CMD_FIRST                             \
110                 (PVRSRV_BRIDGE_CORE_CMD_LAST+1)
111 #define PVRSRV_BRIDGE_PROCESS_SIMISR_EVENT                      \
112                 PVRSRV_IOWR(PVRSRV_BRIDGE_SIM_CMD_FIRST+0)
113 #define PVRSRV_BRIDGE_REGISTER_SIM_PROCESS                      \
114                 PVRSRV_IOWR(PVRSRV_BRIDGE_SIM_CMD_FIRST+1)
115 #define PVRSRV_BRIDGE_UNREGISTER_SIM_PROCESS                    \
116                 PVRSRV_IOWR(PVRSRV_BRIDGE_SIM_CMD_FIRST+2)
117 #define PVRSRV_BRIDGE_SIM_CMD_LAST                              \
118                 (PVRSRV_BRIDGE_SIM_CMD_FIRST+2)
119
120 #define PVRSRV_BRIDGE_MAPPING_CMD_FIRST                         \
121                 (PVRSRV_BRIDGE_SIM_CMD_LAST+1)
122 #define PVRSRV_BRIDGE_MAPPHYSTOUSERSPACE                        \
123                 PVRSRV_IOWR(PVRSRV_BRIDGE_MAPPING_CMD_FIRST+0)
124 #define PVRSRV_BRIDGE_UNMAPPHYSTOUSERSPACE                      \
125                 PVRSRV_IOWR(PVRSRV_BRIDGE_MAPPING_CMD_FIRST+1)
126 #define PVRSRV_BRIDGE_GETPHYSTOUSERSPACEMAP                     \
127                 PVRSRV_IOWR(PVRSRV_BRIDGE_MAPPING_CMD_FIRST+2)
128 #define PVRSRV_BRIDGE_MAPPING_CMD_LAST                          \
129                 (PVRSRV_BRIDGE_MAPPING_CMD_FIRST+2)
130
131 #define PVRSRV_BRIDGE_STATS_CMD_FIRST                           \
132                 (PVRSRV_BRIDGE_MAPPING_CMD_LAST+1)
133 #define PVRSRV_BRIDGE_GET_FB_STATS                              \
134                 PVRSRV_IOWR(PVRSRV_BRIDGE_STATS_CMD_FIRST+0)
135 #define PVRSRV_BRIDGE_STATS_CMD_LAST                            \
136                 (PVRSRV_BRIDGE_STATS_CMD_FIRST+0)
137
138 #define PVRSRV_BRIDGE_MISC_CMD_FIRST                            \
139                 (PVRSRV_BRIDGE_STATS_CMD_LAST+1)
140 #define PVRSRV_BRIDGE_GET_MISC_INFO                             \
141                 PVRSRV_IOWR(PVRSRV_BRIDGE_MISC_CMD_FIRST+0)
142 #define PVRSRV_BRIDGE_RELEASE_MISC_INFO                         \
143                 PVRSRV_IOWR(PVRSRV_BRIDGE_MISC_CMD_FIRST+1)
144 #define PVRSRV_BRIDGE_MISC_CMD_LAST                             \
145                 (PVRSRV_BRIDGE_MISC_CMD_FIRST+1)
146
147 #define PVRSRV_BRIDGE_OVERLAY_CMD_FIRST                         \
148                 (PVRSRV_BRIDGE_MISC_CMD_LAST+1)
149 #define PVRSRV_BRIDGE_OVERLAY_CMD_LAST                          \
150                 (PVRSRV_BRIDGE_OVERLAY_CMD_FIRST+1)
151
152 /* PDUMP was here */
153
154 #define PVRSRV_BRIDGE_OEM_CMD_FIRST                             \
155                 (PVRSRV_BRIDGE_OVERLAY_CMD_LAST+1)
156 #define PVRSRV_BRIDGE_GET_OEMJTABLE                             \
157                 PVRSRV_IOWR(PVRSRV_BRIDGE_OEM_CMD_FIRST+0)
158 #define PVRSRV_BRIDGE_OEM_CMD_LAST                              \
159                 (PVRSRV_BRIDGE_OEM_CMD_FIRST+0)
160
161 #define PVRSRV_BRIDGE_DEVCLASS_CMD_FIRST                        \
162                 (PVRSRV_BRIDGE_OEM_CMD_LAST+1)
163 #define PVRSRV_BRIDGE_ENUM_CLASS                                \
164                 PVRSRV_IOWR(PVRSRV_BRIDGE_DEVCLASS_CMD_FIRST+0)
165 #define PVRSRV_BRIDGE_DEVCLASS_CMD_LAST                         \
166                 (PVRSRV_BRIDGE_DEVCLASS_CMD_FIRST+0)
167
168 #define PVRSRV_BRIDGE_DISPCLASS_CMD_FIRST                       \
169                 (PVRSRV_BRIDGE_DEVCLASS_CMD_LAST+1)
170 #define PVRSRV_BRIDGE_OPEN_DISPCLASS_DEVICE                     \
171                 PVRSRV_IOWR(PVRSRV_BRIDGE_DISPCLASS_CMD_FIRST+0)
172 #define PVRSRV_BRIDGE_CLOSE_DISPCLASS_DEVICE                    \
173                 PVRSRV_IOWR(PVRSRV_BRIDGE_DISPCLASS_CMD_FIRST+1)
174 #define PVRSRV_BRIDGE_ENUM_DISPCLASS_FORMATS                    \
175                 PVRSRV_IOWR(PVRSRV_BRIDGE_DISPCLASS_CMD_FIRST+2)
176 #define PVRSRV_BRIDGE_ENUM_DISPCLASS_DIMS                       \
177                 PVRSRV_IOWR(PVRSRV_BRIDGE_DISPCLASS_CMD_FIRST+3)
178 #define PVRSRV_BRIDGE_GET_DISPCLASS_SYSBUFFER                   \
179                 PVRSRV_IOWR(PVRSRV_BRIDGE_DISPCLASS_CMD_FIRST+4)
180 #define PVRSRV_BRIDGE_GET_DISPCLASS_INFO                        \
181                 PVRSRV_IOWR(PVRSRV_BRIDGE_DISPCLASS_CMD_FIRST+5)
182 #define PVRSRV_BRIDGE_CREATE_DISPCLASS_SWAPCHAIN                \
183                 PVRSRV_IOWR(PVRSRV_BRIDGE_DISPCLASS_CMD_FIRST+6)
184 #define PVRSRV_BRIDGE_DESTROY_DISPCLASS_SWAPCHAIN               \
185                 PVRSRV_IOWR(PVRSRV_BRIDGE_DISPCLASS_CMD_FIRST+7)
186 #define PVRSRV_BRIDGE_SET_DISPCLASS_DSTRECT                     \
187                 PVRSRV_IOWR(PVRSRV_BRIDGE_DISPCLASS_CMD_FIRST+8)
188 #define PVRSRV_BRIDGE_SET_DISPCLASS_SRCRECT                     \
189                 PVRSRV_IOWR(PVRSRV_BRIDGE_DISPCLASS_CMD_FIRST+9)
190 #define PVRSRV_BRIDGE_SET_DISPCLASS_DSTCOLOURKEY                \
191                 PVRSRV_IOWR(PVRSRV_BRIDGE_DISPCLASS_CMD_FIRST+10)
192 #define PVRSRV_BRIDGE_SET_DISPCLASS_SRCCOLOURKEY                \
193                 PVRSRV_IOWR(PVRSRV_BRIDGE_DISPCLASS_CMD_FIRST+11)
194 #define PVRSRV_BRIDGE_GET_DISPCLASS_BUFFERS                     \
195                 PVRSRV_IOWR(PVRSRV_BRIDGE_DISPCLASS_CMD_FIRST+12)
196 #define PVRSRV_BRIDGE_SWAP_DISPCLASS_TO_BUFFER                  \
197                 PVRSRV_IOWR(PVRSRV_BRIDGE_DISPCLASS_CMD_FIRST+13)
198 #define PVRSRV_BRIDGE_SWAP_DISPCLASS_TO_SYSTEM                  \
199                 PVRSRV_IOWR(PVRSRV_BRIDGE_DISPCLASS_CMD_FIRST+14)
200 #define PVRSRV_BRIDGE_DISPCLASS_CMD_LAST                        \
201                 (PVRSRV_BRIDGE_DISPCLASS_CMD_FIRST+14)
202
203 #define PVRSRV_BRIDGE_BUFCLASS_CMD_FIRST                        \
204                 (PVRSRV_BRIDGE_DISPCLASS_CMD_LAST+1)
205 #define PVRSRV_BRIDGE_OPEN_BUFFERCLASS_DEVICE                   \
206                 PVRSRV_IOWR(PVRSRV_BRIDGE_BUFCLASS_CMD_FIRST+0)
207 #define PVRSRV_BRIDGE_CLOSE_BUFFERCLASS_DEVICE                  \
208                 PVRSRV_IOWR(PVRSRV_BRIDGE_BUFCLASS_CMD_FIRST+1)
209 #define PVRSRV_BRIDGE_GET_BUFFERCLASS_INFO                      \
210                 PVRSRV_IOWR(PVRSRV_BRIDGE_BUFCLASS_CMD_FIRST+2)
211 #define PVRSRV_BRIDGE_GET_BUFFERCLASS_BUFFER                    \
212                 PVRSRV_IOWR(PVRSRV_BRIDGE_BUFCLASS_CMD_FIRST+3)
213 #define PVRSRV_BRIDGE_BUFCLASS_CMD_LAST                         \
214                 (PVRSRV_BRIDGE_BUFCLASS_CMD_FIRST+3)
215
216 #define PVRSRV_BRIDGE_WRAP_CMD_FIRST                            \
217                 (PVRSRV_BRIDGE_BUFCLASS_CMD_LAST+1)
218 #define PVRSRV_BRIDGE_WRAP_EXT_MEMORY                           \
219                 PVRSRV_IOWR(PVRSRV_BRIDGE_WRAP_CMD_FIRST+0)
220 #define PVRSRV_BRIDGE_UNWRAP_EXT_MEMORY                         \
221                 PVRSRV_IOWR(PVRSRV_BRIDGE_WRAP_CMD_FIRST+1)
222 #define PVRSRV_BRIDGE_WRAP_CMD_LAST                             \
223                 (PVRSRV_BRIDGE_WRAP_CMD_FIRST+1)
224
225 #define PVRSRV_BRIDGE_SHAREDMEM_CMD_FIRST                       \
226                 (PVRSRV_BRIDGE_WRAP_CMD_LAST+1)
227 #define PVRSRV_BRIDGE_ALLOC_SHARED_SYS_MEM                      \
228                 PVRSRV_IOWR(PVRSRV_BRIDGE_SHAREDMEM_CMD_FIRST+0)
229 #define PVRSRV_BRIDGE_FREE_SHARED_SYS_MEM                       \
230                 PVRSRV_IOWR(PVRSRV_BRIDGE_SHAREDMEM_CMD_FIRST+1)
231 #define PVRSRV_BRIDGE_MAP_MEMINFO_MEM                           \
232                 PVRSRV_IOWR(PVRSRV_BRIDGE_SHAREDMEM_CMD_FIRST+2)
233 #define PVRSRV_BRIDGE_UNMAP_MEMINFO_MEM                         \
234                 PVRSRV_IOWR(PVRSRV_BRIDGE_SHAREDMEM_CMD_FIRST+3)
235 #define PVRSRV_BRIDGE_SHAREDMEM_CMD_LAST                        \
236                 (PVRSRV_BRIDGE_SHAREDMEM_CMD_FIRST+3)
237
238 #define PVRSRV_BRIDGE_SERVICES4_TMP_CMD_FIRST                   \
239                 (PVRSRV_BRIDGE_SHAREDMEM_CMD_LAST+1)
240 #define PVRSRV_BRIDGE_GETMMU_PD_DEVPADDR                        \
241                 PVRSRV_IOWR(PVRSRV_BRIDGE_SERVICES4_TMP_CMD_FIRST+0)
242 #define PVRSRV_BRIDGE_SERVICES4_TMP_CMD_LAST                    \
243                 (PVRSRV_BRIDGE_SERVICES4_TMP_CMD_FIRST+0)
244
245 #define PVRSRV_BRIDGE_INITSRV_CMD_FIRST                         \
246                 (PVRSRV_BRIDGE_SERVICES4_TMP_CMD_LAST+1)
247 #define PVRSRV_BRIDGE_INITSRV_CONNECT                           \
248                 PVRSRV_IOWR(PVRSRV_BRIDGE_INITSRV_CMD_FIRST+0)
249 #define PVRSRV_BRIDGE_INITSRV_DISCONNECT                        \
250                 PVRSRV_IOWR(PVRSRV_BRIDGE_INITSRV_CMD_FIRST+1)
251 #define PVRSRV_BRIDGE_INITSRV_CMD_LAST                          \
252                 (PVRSRV_BRIDGE_INITSRV_CMD_FIRST+1)
253
254 #define PVRSRV_BRIDGE_EVENT_OBJECT_CMD_FIRST                    \
255                 (PVRSRV_BRIDGE_INITSRV_CMD_LAST+1)
256 #define PVRSRV_BRIDGE_EVENT_OBJECT_WAIT                         \
257                 PVRSRV_IOWR(PVRSRV_BRIDGE_EVENT_OBJECT_CMD_FIRST+0)
258 #define PVRSRV_BRIDGE_EVENT_OBJECT_OPEN                         \
259                 PVRSRV_IOWR(PVRSRV_BRIDGE_EVENT_OBJECT_CMD_FIRST+1)
260 #define PVRSRV_BRIDGE_EVENT_OBJECT_CLOSE                        \
261                 PVRSRV_IOWR(PVRSRV_BRIDGE_EVENT_OBJECT_CMD_FIRST+2)
262 #define PVRSRV_BRIDGE_EVENT_OBJECT_CMD_LAST                     \
263                 (PVRSRV_BRIDGE_EVENT_OBJECT_CMD_FIRST+2)
264
265 #define PVRSRV_BRIDGE_SYNC_OPS_CMD_FIRST                        \
266                 (PVRSRV_BRIDGE_EVENT_OBJECT_CMD_LAST+1)
267 #define PVRSRV_BRIDGE_MODIFY_SYNC_OPS                           \
268                 PVRSRV_IOWR(PVRSRV_BRIDGE_SYNC_OPS_CMD_FIRST+0)
269 #define PVRSRV_BRIDGE_SYNC_OPS_CMD_LAST                         \
270                 (PVRSRV_BRIDGE_SYNC_OPS_CMD_FIRST+0)
271
272 #define PVRSRV_BRIDGE_LAST_NON_DEVICE_CMD                       \
273                 (PVRSRV_BRIDGE_SYNC_OPS_CMD_LAST+1)
274
275
276 #if defined(PDUMP)
277 #define PVRSRV_BRIDGE_PDUMP_CMD_FIRST           192
278 #define PVRSRV_BRIDGE_PDUMP_INIT                                \
279                 PVRSRV_IOWR(PVRSRV_BRIDGE_PDUMP_CMD_FIRST+0)
280 #define PVRSRV_BRIDGE_PDUMP_MEMPOL                              \
281                 PVRSRV_IOWR(PVRSRV_BRIDGE_PDUMP_CMD_FIRST+1)
282 #define PVRSRV_BRIDGE_PDUMP_DUMPMEM                             \
283                 PVRSRV_IOWR(PVRSRV_BRIDGE_PDUMP_CMD_FIRST+2)
284 #define PVRSRV_BRIDGE_PDUMP_REG                                 \
285                 PVRSRV_IOWR(PVRSRV_BRIDGE_PDUMP_CMD_FIRST+3)
286 #define PVRSRV_BRIDGE_PDUMP_REGPOL                              \
287                 PVRSRV_IOWR(PVRSRV_BRIDGE_PDUMP_CMD_FIRST+4)
288 #define PVRSRV_BRIDGE_PDUMP_COMMENT                             \
289                 PVRSRV_IOWR(PVRSRV_BRIDGE_PDUMP_CMD_FIRST+5)
290 #define PVRSRV_BRIDGE_PDUMP_SETFRAME                            \
291                 PVRSRV_IOWR(PVRSRV_BRIDGE_PDUMP_CMD_FIRST+6)
292 #define PVRSRV_BRIDGE_PDUMP_ISCAPTURING                         \
293                 PVRSRV_IOWR(PVRSRV_BRIDGE_PDUMP_CMD_FIRST+7)
294 #define PVRSRV_BRIDGE_PDUMP_DUMPBITMAP                          \
295                 PVRSRV_IOWR(PVRSRV_BRIDGE_PDUMP_CMD_FIRST+8)
296 #define PVRSRV_BRIDGE_PDUMP_DUMPREADREG                         \
297                 PVRSRV_IOWR(PVRSRV_BRIDGE_PDUMP_CMD_FIRST+9)
298 #define PVRSRV_BRIDGE_PDUMP_SYNCPOL                             \
299                 PVRSRV_IOWR(PVRSRV_BRIDGE_PDUMP_CMD_FIRST+10)
300 #define PVRSRV_BRIDGE_PDUMP_DUMPSYNC                            \
301                 PVRSRV_IOWR(PVRSRV_BRIDGE_PDUMP_CMD_FIRST+11)
302 #define PVRSRV_BRIDGE_PDUMP_MEMPAGES                            \
303                 PVRSRV_IOWR(PVRSRV_BRIDGE_PDUMP_CMD_FIRST+12)
304 #define PVRSRV_BRIDGE_PDUMP_DRIVERINFO                          \
305                 PVRSRV_IOWR(PVRSRV_BRIDGE_PDUMP_CMD_FIRST+13)
306 #define PVRSRV_BRIDGE_PDUMP_PDREG                               \
307                 PVRSRV_IOWR(PVRSRV_BRIDGE_PDUMP_CMD_FIRST+14)
308 #define PVRSRV_BRIDGE_PDUMP_DUMPPDDEVPADDR                      \
309                 PVRSRV_IOWR(PVRSRV_BRIDGE_PDUMP_CMD_FIRST+15)
310 #define PVRSRV_BRIDGE_PDUMP_CYCLE_COUNT_REG_READ                \
311                 PVRSRV_IOWR(PVRSRV_BRIDGE_PDUMP_CMD_FIRST+16)
312 #define PVRSRV_BRIDGE_PDUMP_STARTINITPHASE                      \
313                 PVRSRV_IOWR(PVRSRV_BRIDGE_PDUMP_CMD_FIRST+17)
314 #define PVRSRV_BRIDGE_PDUMP_STOPINITPHASE                       \
315                 PVRSRV_IOWR(PVRSRV_BRIDGE_PDUMP_CMD_FIRST+18)
316 #define PVRSRV_BRIDGE_PDUMP_CMD_LAST                            \
317                 (PVRSRV_BRIDGE_PDUMP_CMD_FIRST+18)
318 #endif /* PDUMP */
319
320
321 #define PVRSRV_KERNEL_MODE_CLIENT                               1
322
323 struct PVRSRV_BRIDGE_RETURN {
324         enum PVRSRV_ERROR eError;
325         void *pvData;
326 };
327
328 struct PVRSRV_BRIDGE_PACKAGE {
329         u32 ui32BridgeID;
330         u32 ui32Size;
331         void __user *pvParamIn;
332         u32 ui32InBufferSize;
333         void __user *pvParamOut;
334         u32 ui32OutBufferSize;
335
336         void *hKernelServices;
337 };
338
339 struct PVRSRV_BRIDGE_IN_ACQUIRE_DEVICEINFO {
340         u32 ui32BridgeFlags;
341         u32 uiDevIndex;
342         enum PVRSRV_DEVICE_TYPE eDeviceType;
343 };
344
345 struct PVRSRV_BRIDGE_IN_ENUMCLASS {
346         u32 ui32BridgeFlags;
347         enum PVRSRV_DEVICE_CLASS sDeviceClass;
348 };
349
350 struct PVRSRV_BRIDGE_IN_CLOSE_DISPCLASS_DEVICE {
351         u32 ui32BridgeFlags;
352         void *hDeviceKM;
353 };
354
355 struct PVRSRV_BRIDGE_IN_ENUM_DISPCLASS_FORMATS {
356         u32 ui32BridgeFlags;
357         void *hDeviceKM;
358 };
359
360 struct PVRSRV_BRIDGE_IN_GET_DISPCLASS_SYSBUFFER {
361         u32 ui32BridgeFlags;
362         void *hDeviceKM;
363 };
364
365 struct PVRSRV_BRIDGE_IN_GET_DISPCLASS_INFO {
366         u32 ui32BridgeFlags;
367         void *hDeviceKM;
368 };
369
370 struct PVRSRV_BRIDGE_IN_CLOSE_BUFFERCLASS_DEVICE {
371         u32 ui32BridgeFlags;
372         void *hDeviceKM;
373 };
374
375 struct PVRSRV_BRIDGE_IN_GET_BUFFERCLASS_INFO {
376         u32 ui32BridgeFlags;
377         void *hDeviceKM;
378 };
379
380 struct PVRSRV_BRIDGE_IN_RELEASE_DEVICEINFO {
381         u32 ui32BridgeFlags;
382         void *hDevCookie;
383 };
384
385 struct PVRSRV_BRIDGE_IN_FREE_CLASSDEVICEINFO {
386         u32 ui32BridgeFlags;
387         enum PVRSRV_DEVICE_CLASS DeviceClass;
388         void *pvDevInfo;
389 };
390
391 struct PVRSRV_BRIDGE_IN_GET_DEVMEM_HEAPINFO {
392         u32 ui32BridgeFlags;
393         void *hDevCookie;
394         void *hDevMemContext;
395 };
396
397 struct PVRSRV_BRIDGE_IN_CREATE_DEVMEMCONTEXT {
398         u32 ui32BridgeFlags;
399         void *hDevCookie;
400 };
401
402 struct PVRSRV_BRIDGE_IN_DESTROY_DEVMEMCONTEXT {
403         u32 ui32BridgeFlags;
404         void *hDevCookie;
405         void *hDevMemContext;
406 };
407
408 struct PVRSRV_BRIDGE_IN_ALLOCDEVICEMEM {
409         u32 ui32BridgeFlags;
410         void *hDevCookie;
411         void *hDevMemHeap;
412         u32 ui32Attribs;
413         u32 ui32Size;
414         u32 ui32Alignment;
415 };
416
417 struct PVRSRV_BRIDGE_IN_MAPMEMINFOTOUSER {
418         u32 ui32BridgeFlags;
419         struct PVRSRV_KERNEL_MEM_INFO *psKernelMemInfo;
420 };
421
422 struct PVRSRV_BRIDGE_IN_UNMAPMEMINFOFROMUSER {
423         u32 ui32BridgeFlags;
424         struct PVRSRV_KERNEL_MEM_INFO *psKernelMemInfo;
425         void *pvLinAddr;
426         void *hMappingInfo;
427 };
428
429 #define DRM_PVR2D_CFLUSH_FROM_GPU       1
430 #define DRM_PVR2D_CFLUSH_TO_GPU         2
431
432 struct PVRSRV_BRIDGE_IN_CACHEFLUSHDRMFROMUSER {
433         u32 ui32BridgeFlags;
434         void *hDevCookie;
435         u32 ui32Type;
436         u32 ui32Virt;
437         u32 ui32Length;
438 };
439
440 struct PVRSRV_BRIDGE_IN_FREEDEVICEMEM {
441         u32 ui32BridgeFlags;
442         void *hDevCookie;
443         struct PVRSRV_KERNEL_MEM_INFO *psKernelMemInfo;
444         struct PVRSRV_CLIENT_MEM_INFO sClientMemInfo;
445
446 };
447
448 struct PVRSRV_BRIDGE_IN_EXPORTDEVICEMEM {
449         u32 ui32BridgeFlags;
450         void *hDevCookie;
451         struct PVRSRV_KERNEL_MEM_INFO *psKernelMemInfo;
452
453 };
454
455 struct PVRSRV_BRIDGE_IN_GETFREEDEVICEMEM {
456         u32 ui32BridgeFlags;
457         u32 ui32Flags;
458 };
459
460 struct PVRSRV_BRIDGE_IN_CREATECOMMANDQUEUE {
461         u32 ui32BridgeFlags;
462         void *hDevCookie;
463         u32 ui32QueueSize;
464 };
465
466 struct PVRSRV_BRIDGE_IN_DESTROYCOMMANDQUEUE {
467         u32 ui32BridgeFlags;
468         void *hDevCookie;
469         struct PVRSRV_QUEUE_INFO *psQueueInfo;
470
471 };
472
473 struct PVRSRV_BRIDGE_IN_MHANDLE_TO_MMAP_DATA {
474         u32 ui32BridgeFlags;
475         void *hMHandle;
476 };
477
478 struct PVRSRV_BRIDGE_IN_RELEASE_MMAP_DATA {
479         u32 ui32BridgeFlags;
480         void *hMHandle;
481 };
482
483 struct PVRSRV_BRIDGE_IN_RESERVE_DEV_VIRTMEM {
484         u32 ui32BridgeFlags;
485         void *hDevMemHeap;
486         struct IMG_DEV_VIRTADDR *psDevVAddr;
487         u32 ui32Size;
488         u32 ui32Alignment;
489 };
490
491 struct PVRSRV_BRIDGE_OUT_CONNECT_SERVICES {
492         enum PVRSRV_ERROR eError;
493         void *hKernelServices;
494 };
495
496 struct PVRSRV_BRIDGE_OUT_RESERVE_DEV_VIRTMEM {
497         enum PVRSRV_ERROR eError;
498         struct PVRSRV_KERNEL_MEM_INFO *psKernelMemInfo;
499         struct PVRSRV_KERNEL_SYNC_INFO *psKernelSyncInfo;
500         struct PVRSRV_CLIENT_MEM_INFO sClientMemInfo;
501         struct PVRSRV_CLIENT_SYNC_INFO sClientSyncInfo;
502 };
503
504 struct PVRSRV_BRIDGE_IN_FREE_DEV_VIRTMEM {
505         u32 ui32BridgeFlags;
506         struct PVRSRV_KERNEL_MEM_INFO *psKernelMemInfo;
507         struct PVRSRV_CLIENT_MEM_INFO sClientMemInfo;
508         struct PVRSRV_CLIENT_SYNC_INFO sClientSyncInfo;
509 };
510
511 struct PVRSRV_BRIDGE_IN_MAP_DEV_MEMORY {
512         u32 ui32BridgeFlags;
513         void *hKernelMemInfo;
514         void *hDstDevMemHeap;
515 };
516
517 struct PVRSRV_BRIDGE_OUT_MAP_DEV_MEMORY {
518         enum PVRSRV_ERROR eError;
519         struct PVRSRV_KERNEL_MEM_INFO *psDstKernelMemInfo;
520         struct PVRSRV_KERNEL_SYNC_INFO *psDstKernelSyncInfo;
521         struct PVRSRV_CLIENT_MEM_INFO sDstClientMemInfo;
522         struct PVRSRV_CLIENT_SYNC_INFO sDstClientSyncInfo;
523 };
524
525 struct PVRSRV_BRIDGE_IN_UNMAP_DEV_MEMORY {
526         u32 ui32BridgeFlags;
527         struct PVRSRV_KERNEL_MEM_INFO *psKernelMemInfo;
528         struct PVRSRV_CLIENT_MEM_INFO sClientMemInfo;
529         struct PVRSRV_CLIENT_SYNC_INFO sClientSyncInfo;
530 };
531
532 struct PVRSRV_BRIDGE_IN_MAP_EXT_MEMORY {
533         u32 ui32BridgeFlags;
534         struct PVRSRV_KERNEL_MEM_INFO *psKernelMemInfo;
535         struct IMG_SYS_PHYADDR *psSysPAddr;
536         u32 ui32Flags;
537 };
538
539 struct PVRSRV_BRIDGE_IN_UNMAP_EXT_MEMORY {
540         u32 ui32BridgeFlags;
541         struct PVRSRV_CLIENT_MEM_INFO sClientMemInfo;
542         struct PVRSRV_CLIENT_SYNC_INFO sClientSyncInfo;
543         u32 ui32Flags;
544 };
545
546 struct PVRSRV_BRIDGE_IN_MAP_DEVICECLASS_MEMORY {
547         u32 ui32BridgeFlags;
548         void *hDeviceClassBuffer;
549         void *hDevMemContext;
550
551 };
552
553 struct PVRSRV_BRIDGE_OUT_MAP_DEVICECLASS_MEMORY {
554         enum PVRSRV_ERROR eError;
555         struct PVRSRV_CLIENT_MEM_INFO sClientMemInfo;
556         struct PVRSRV_CLIENT_SYNC_INFO sClientSyncInfo;
557         struct PVRSRV_KERNEL_MEM_INFO *psKernelMemInfo;
558         struct PVRSRV_KERNEL_SYNC_INFO *psKernelSyncInfo;
559         void *hMappingInfo;
560 };
561
562 struct PVRSRV_BRIDGE_IN_UNMAP_DEVICECLASS_MEMORY {
563         u32 ui32BridgeFlags;
564         struct PVRSRV_KERNEL_MEM_INFO *psKernelMemInfo;
565         struct PVRSRV_CLIENT_MEM_INFO sClientMemInfo;
566         struct PVRSRV_CLIENT_SYNC_INFO sClientSyncInfo;
567 };
568
569 struct PVRSRV_BRIDGE_IN_PDUMP_MEMPOL {
570         u32 ui32BridgeFlags;
571         struct PVRSRV_KERNEL_MEM_INFO *psKernelMemInfo;
572         u32 ui32Offset;
573         u32 ui32Value;
574         u32 ui32Mask;
575         IMG_BOOL bLastFrame;
576         IMG_BOOL bOverwrite;
577 };
578
579 struct PVRSRV_BRIDGE_IN_PDUMP_SYNCPOL {
580         u32 ui32BridgeFlags;
581         struct PVRSRV_KERNEL_SYNC_INFO *psKernelSyncInfo;
582         IMG_BOOL bIsRead;
583         u32 ui32Value;
584         u32 ui32Mask;
585 };
586
587 struct PVRSRV_BRIDGE_IN_PDUMP_DUMPMEM {
588         u32 ui32BridgeFlags;
589         void *pvLinAddr;
590         void *pvAltLinAddr;
591         struct PVRSRV_KERNEL_MEM_INFO *psKernelMemInfo;
592         u32 ui32Offset;
593         u32 ui32Bytes;
594         u32 ui32Flags;
595 };
596
597 struct PVRSRV_BRIDGE_IN_PDUMP_DUMPSYNC {
598         u32 ui32BridgeFlags;
599         void *pvAltLinAddr;
600         struct PVRSRV_KERNEL_SYNC_INFO *psKernelSyncInfo;
601         u32 ui32Offset;
602         u32 ui32Bytes;
603 };
604
605 struct PVRSRV_BRIDGE_IN_PDUMP_DUMPREG {
606         u32 ui32BridgeFlags;
607         struct PVRSRV_HWREG sHWReg;
608         u32 ui32Flags;
609 };
610
611 struct PVRSRV_BRIDGE_IN_PDUMP_REGPOL {
612         u32 ui32BridgeFlags;
613         struct PVRSRV_HWREG sHWReg;
614         u32 ui32Mask;
615         u32 ui32Flags;
616 };
617
618 struct PVRSRV_BRIDGE_IN_PDUMP_DUMPPDREG {
619         u32 ui32BridgeFlags;
620         struct PVRSRV_HWREG sHWReg;
621         u32 ui32Flags;
622 };
623
624 struct PVRSRV_BRIDGE_IN_PDUMP_MEMPAGES {
625         u32 ui32BridgeFlags;
626         void *hKernelMemInfo;
627         struct IMG_DEV_PHYADDR *pPages;
628         u32 ui32NumPages;
629         struct IMG_DEV_VIRTADDR sDevAddr;
630         u32 ui32Start;
631         u32 ui32Length;
632         IMG_BOOL bContinuous;
633 };
634
635 struct PVRSRV_BRIDGE_IN_PDUMP_COMMENT {
636         u32 ui32BridgeFlags;
637         char szComment[PVRSRV_PDUMP_MAX_COMMENT_SIZE];
638         u32 ui32Flags;
639 };
640
641 struct PVRSRV_BRIDGE_IN_PDUMP_SETFRAME {
642         u32 ui32BridgeFlags;
643         u32 ui32Frame;
644 };
645
646 struct PVRSRV_BRIDGE_IN_PDUMP_BITMAP {
647         u32 ui32BridgeFlags;
648         char szFileName[PVRSRV_PDUMP_MAX_FILENAME_SIZE];
649         u32 ui32FileOffset;
650         u32 ui32Width;
651         u32 ui32Height;
652         u32 ui32StrideInBytes;
653         struct IMG_DEV_VIRTADDR sDevBaseAddr;
654         u32 ui32Size;
655         enum PDUMP_PIXEL_FORMAT ePixelFormat;
656         enum PDUMP_MEM_FORMAT eMemFormat;
657         u32 ui32Flags;
658 };
659
660 struct PVRSRV_BRIDGE_IN_PDUMP_READREG {
661         u32 ui32BridgeFlags;
662         char szFileName[PVRSRV_PDUMP_MAX_FILENAME_SIZE];
663         u32 ui32FileOffset;
664         u32 ui32Address;
665         u32 ui32Size;
666         u32 ui32Flags;
667 };
668
669 struct PVRSRV_BRIDGE_IN_PDUMP_DRIVERINFO {
670         u32 ui32BridgeFlags;
671         char szString[PVRSRV_PDUMP_MAX_COMMENT_SIZE];
672         IMG_BOOL bContinuous;
673 };
674
675 struct PVRSRV_BRIDGE_IN_PDUMP_DUMPPDDEVPADDR {
676         u32 ui32BridgeFlags;
677         void *hKernelMemInfo;
678         u32 ui32Offset;
679         struct IMG_DEV_PHYADDR sPDDevPAddr;
680 };
681
682 struct PVRSRV_BRIDGE_IN_PDUMP_CYCLE_COUNT_REG_READ {
683         u32 ui32BridgeFlags;
684         u32 ui32RegOffset;
685         IMG_BOOL bLastFrame;
686 };
687
688 struct PVRSRV_BRIDGE_OUT_ENUMDEVICE {
689         enum PVRSRV_ERROR eError;
690         u32 ui32NumDevices;
691         struct PVRSRV_DEVICE_IDENTIFIER asDeviceIdentifier[PVRSRV_MAX_DEVICES];
692 };
693
694 struct PVRSRV_BRIDGE_OUT_ACQUIRE_DEVICEINFO {
695
696         enum PVRSRV_ERROR eError;
697         void *hDevCookie;
698 };
699
700 struct PVRSRV_BRIDGE_OUT_ENUMCLASS {
701         enum PVRSRV_ERROR eError;
702         u32 ui32NumDevices;
703         u32 ui32DevID[PVRSRV_MAX_DEVICES];
704 };
705
706 struct PVRSRV_BRIDGE_IN_OPEN_DISPCLASS_DEVICE {
707         u32 ui32BridgeFlags;
708         u32 ui32DeviceID;
709         void *hDevCookie;
710 };
711
712 struct PVRSRV_BRIDGE_OUT_OPEN_DISPCLASS_DEVICE {
713         enum PVRSRV_ERROR eError;
714         void *hDeviceKM;
715 };
716
717 struct PVRSRV_BRIDGE_IN_WRAP_EXT_MEMORY {
718         u32 ui32BridgeFlags;
719         void *hDevCookie;
720         void *hDevMemContext;
721         void *pvLinAddr;
722         u32 ui32ByteSize;
723         u32 ui32PageOffset;
724         IMG_BOOL bPhysContig;
725         u32 ui32NumPageTableEntries;
726         struct IMG_SYS_PHYADDR __user *psSysPAddr;
727 };
728
729 struct PVRSRV_BRIDGE_OUT_WRAP_EXT_MEMORY {
730         enum PVRSRV_ERROR eError;
731         struct PVRSRV_CLIENT_MEM_INFO sClientMemInfo;
732         struct PVRSRV_CLIENT_SYNC_INFO sClientSyncInfo;
733 };
734
735 struct PVRSRV_BRIDGE_IN_UNWRAP_EXT_MEMORY {
736         u32 ui32BridgeFlags;
737         void *hKernelMemInfo;
738         struct PVRSRV_CLIENT_MEM_INFO sClientMemInfo;
739         struct PVRSRV_CLIENT_SYNC_INFO sClientSyncInfo;
740
741 };
742
743 #define PVRSRV_MAX_DC_DISPLAY_FORMATS                   10
744 #define PVRSRV_MAX_DC_DISPLAY_DIMENSIONS                10
745 #define PVRSRV_MAX_DC_SWAPCHAIN_BUFFERS                 4
746 #define PVRSRV_MAX_DC_CLIP_RECTS                        32
747
748 struct PVRSRV_BRIDGE_OUT_ENUM_DISPCLASS_FORMATS {
749         enum PVRSRV_ERROR eError;
750         u32 ui32Count;
751         struct DISPLAY_FORMAT asFormat[PVRSRV_MAX_DC_DISPLAY_FORMATS];
752 };
753
754 struct PVRSRV_BRIDGE_IN_ENUM_DISPCLASS_DIMS {
755         u32 ui32BridgeFlags;
756         void *hDeviceKM;
757         struct DISPLAY_FORMAT sFormat;
758 };
759
760 struct PVRSRV_BRIDGE_OUT_ENUM_DISPCLASS_DIMS {
761         enum PVRSRV_ERROR eError;
762         u32 ui32Count;
763         struct DISPLAY_DIMS asDim[PVRSRV_MAX_DC_DISPLAY_DIMENSIONS];
764 };
765
766 struct PVRSRV_BRIDGE_OUT_GET_DISPCLASS_INFO {
767         enum PVRSRV_ERROR eError;
768         struct DISPLAY_INFO sDisplayInfo;
769 };
770
771 struct PVRSRV_BRIDGE_OUT_GET_DISPCLASS_SYSBUFFER {
772         enum PVRSRV_ERROR eError;
773         void *hBuffer;
774 };
775
776 struct PVRSRV_BRIDGE_IN_CREATE_DISPCLASS_SWAPCHAIN {
777         u32 ui32BridgeFlags;
778         void *hDeviceKM;
779         u32 ui32Flags;
780         struct DISPLAY_SURF_ATTRIBUTES sDstSurfAttrib;
781         struct DISPLAY_SURF_ATTRIBUTES sSrcSurfAttrib;
782         u32 ui32BufferCount;
783         u32 ui32OEMFlags;
784         u32 ui32SwapChainID;
785 };
786
787 struct PVRSRV_BRIDGE_OUT_CREATE_DISPCLASS_SWAPCHAIN {
788         enum PVRSRV_ERROR eError;
789         void *hSwapChain;
790         u32 ui32SwapChainID;
791 };
792
793 struct PVRSRV_BRIDGE_IN_DESTROY_DISPCLASS_SWAPCHAIN {
794         u32 ui32BridgeFlags;
795         void *hDeviceKM;
796         void *hSwapChain;
797 };
798
799 struct PVRSRV_BRIDGE_IN_SET_DISPCLASS_RECT {
800         u32 ui32BridgeFlags;
801         void *hDeviceKM;
802         void *hSwapChain;
803         struct IMG_RECT sRect;
804 };
805
806 struct PVRSRV_BRIDGE_IN_SET_DISPCLASS_COLOURKEY {
807         u32 ui32BridgeFlags;
808         void *hDeviceKM;
809         void *hSwapChain;
810         u32 ui32CKColour;
811 };
812
813 struct PVRSRV_BRIDGE_IN_GET_DISPCLASS_BUFFERS {
814         u32 ui32BridgeFlags;
815         void *hDeviceKM;
816         void *hSwapChain;
817 };
818
819 struct PVRSRV_BRIDGE_OUT_GET_DISPCLASS_BUFFERS {
820         enum PVRSRV_ERROR eError;
821         u32 ui32BufferCount;
822         void *ahBuffer[PVRSRV_MAX_DC_SWAPCHAIN_BUFFERS];
823 };
824
825 struct PVRSRV_BRIDGE_IN_SWAP_DISPCLASS_TO_BUFFER {
826         u32 ui32BridgeFlags;
827         void *hDeviceKM;
828         void *hBuffer;
829         u32 ui32SwapInterval;
830         void *hPrivateTag;
831         u32 ui32ClipRectCount;
832         struct IMG_RECT sClipRect[PVRSRV_MAX_DC_CLIP_RECTS];
833 };
834
835 struct PVRSRV_BRIDGE_IN_SWAP_DISPCLASS_TO_SYSTEM {
836         u32 ui32BridgeFlags;
837         void *hDeviceKM;
838         void *hSwapChain;
839 };
840
841 struct PVRSRV_BRIDGE_IN_OPEN_BUFFERCLASS_DEVICE {
842         u32 ui32BridgeFlags;
843         u32 ui32DeviceID;
844         void *hDevCookie;
845 };
846
847 struct PVRSRV_BRIDGE_OUT_OPEN_BUFFERCLASS_DEVICE {
848         enum PVRSRV_ERROR eError;
849         void *hDeviceKM;
850 };
851
852 struct PVRSRV_BRIDGE_OUT_GET_BUFFERCLASS_INFO {
853         enum PVRSRV_ERROR eError;
854         struct BUFFER_INFO sBufferInfo;
855 };
856
857 struct PVRSRV_BRIDGE_IN_GET_BUFFERCLASS_BUFFER {
858         u32 ui32BridgeFlags;
859         void *hDeviceKM;
860         u32 ui32BufferIndex;
861 };
862
863 struct PVRSRV_BRIDGE_OUT_GET_BUFFERCLASS_BUFFER {
864         enum PVRSRV_ERROR eError;
865         void *hBuffer;
866 };
867
868 struct PVRSRV_BRIDGE_OUT_GET_DEVMEM_HEAPINFO {
869         enum PVRSRV_ERROR eError;
870         u32 ui32ClientHeapCount;
871         struct PVRSRV_HEAP_INFO sHeapInfo[PVRSRV_MAX_CLIENT_HEAPS];
872 };
873
874 struct PVRSRV_BRIDGE_OUT_CREATE_DEVMEMCONTEXT {
875         enum PVRSRV_ERROR eError;
876         void *hDevMemContext;
877         u32 ui32ClientHeapCount;
878         struct PVRSRV_HEAP_INFO sHeapInfo[PVRSRV_MAX_CLIENT_HEAPS];
879 };
880
881 struct PVRSRV_BRIDGE_OUT_CREATE_DEVMEMHEAP {
882         enum PVRSRV_ERROR eError;
883         void *hDevMemHeap;
884 };
885
886 struct PVRSRV_BRIDGE_OUT_ALLOCDEVICEMEM {
887         enum PVRSRV_ERROR eError;
888         struct PVRSRV_KERNEL_MEM_INFO *psKernelMemInfo;
889         struct PVRSRV_KERNEL_SYNC_INFO *psKernelSyncInfo;
890         struct PVRSRV_CLIENT_MEM_INFO sClientMemInfo;
891         struct PVRSRV_CLIENT_SYNC_INFO sClientSyncInfo;
892
893 };
894
895 struct PVRSRV_BRIDGE_OUT_EXPORTDEVICEMEM {
896         enum PVRSRV_ERROR eError;
897         void *hMemInfo;
898
899 };
900
901 struct PVRSRV_BRIDGE_OUT_MAPMEMINFOTOUSER {
902         enum PVRSRV_ERROR eError;
903         void *pvLinAddr;
904         void *hMappingInfo;
905 };
906
907 struct PVRSRV_BRIDGE_OUT_GETFREEDEVICEMEM {
908         enum PVRSRV_ERROR eError;
909         u32 ui32Total;
910         u32 ui32Free;
911         u32 ui32LargestBlock;
912 };
913
914 #include "pvrmmap.h"
915 struct PVRSRV_BRIDGE_OUT_MHANDLE_TO_MMAP_DATA {
916         enum PVRSRV_ERROR eError;
917         u32 ui32MMapOffset;
918         u32 ui32ByteOffset;
919         u32 ui32RealByteSize;
920         u32 ui32UserVAddr;
921 };
922
923 struct PVRSRV_BRIDGE_OUT_RELEASE_MMAP_DATA {
924         enum PVRSRV_ERROR eError;
925         IMG_BOOL bMUnmap;
926         u32 ui32UserVAddr;
927         u32 ui32RealByteSize;
928 };
929
930 struct PVRSRV_BRIDGE_IN_GET_MISC_INFO {
931         u32 ui32BridgeFlags;
932         struct PVRSRV_MISC_INFO sMiscInfo;
933 };
934
935 struct PVRSRV_BRIDGE_OUT_GET_MISC_INFO {
936         enum PVRSRV_ERROR eError;
937         struct PVRSRV_MISC_INFO sMiscInfo;
938 };
939
940 struct PVRSRV_BRIDGE_IN_RELEASE_MISC_INFO {
941         u32 ui32BridgeFlags;
942         struct PVRSRV_MISC_INFO sMiscInfo;
943 };
944
945 struct PVRSRV_BRIDGE_OUT_RELEASE_MISC_INFO {
946         enum PVRSRV_ERROR eError;
947         struct PVRSRV_MISC_INFO sMiscInfo;
948 };
949
950 struct PVRSRV_BRIDGE_OUT_PDUMP_ISCAPTURING {
951         enum PVRSRV_ERROR eError;
952         IMG_BOOL bIsCapturing;
953 };
954
955 struct PVRSRV_BRIDGE_IN_GET_FB_STATS {
956         u32 ui32BridgeFlags;
957         u32 ui32Total;
958         u32 ui32Available;
959 };
960
961 struct PVRSRV_BRIDGE_IN_MAPPHYSTOUSERSPACE {
962         u32 ui32BridgeFlags;
963         void *hDevCookie;
964         struct IMG_SYS_PHYADDR sSysPhysAddr;
965         u32 uiSizeInBytes;
966 };
967
968 struct PVRSRV_BRIDGE_OUT_MAPPHYSTOUSERSPACE {
969         void *pvUserAddr;
970         u32 uiActualSize;
971         void *pvProcess;
972 };
973
974 struct PVRSRV_BRIDGE_IN_UNMAPPHYSTOUSERSPACE {
975         u32 ui32BridgeFlags;
976         void *hDevCookie;
977         void *pvUserAddr;
978         void *pvProcess;
979 };
980
981 struct PVRSRV_BRIDGE_OUT_GETPHYSTOUSERSPACEMAP {
982         void **ppvTbl;
983         u32 uiTblSize;
984 };
985
986 struct PVRSRV_BRIDGE_IN_REGISTER_SIM_PROCESS {
987         u32 ui32BridgeFlags;
988         void *hDevCookie;
989         void *pvProcess;
990 };
991
992 struct PVRSRV_BRIDGE_OUT_REGISTER_SIM_PROCESS {
993         struct IMG_SYS_PHYADDR sRegsPhysBase;
994         void *pvRegsBase;
995         void *pvProcess;
996         u32 ulNoOfEntries;
997         void *pvTblLinAddr;
998 };
999
1000 struct PVRSRV_BRIDGE_IN_UNREGISTER_SIM_PROCESS {
1001         u32 ui32BridgeFlags;
1002         void *hDevCookie;
1003         void *pvProcess;
1004         void *pvRegsBase;
1005 };
1006
1007 struct PVRSRV_BRIDGE_IN_PROCESS_SIMISR_EVENT {
1008         u32 ui32BridgeFlags;
1009         void *hDevCookie;
1010         u32 ui32StatusAndMask;
1011         enum PVRSRV_ERROR eError;
1012 };
1013
1014 struct PVRSRV_BRIDGE_IN_INITSRV_DISCONNECT {
1015         u32 ui32BridgeFlags;
1016         IMG_BOOL bInitSuccesful;
1017 };
1018
1019 struct PVRSRV_BRIDGE_IN_ALLOC_SHARED_SYS_MEM {
1020         u32 ui32BridgeFlags;
1021         u32 ui32Flags;
1022         u32 ui32Size;
1023 };
1024
1025 struct PVRSRV_BRIDGE_OUT_ALLOC_SHARED_SYS_MEM {
1026         enum PVRSRV_ERROR eError;
1027         struct PVRSRV_KERNEL_MEM_INFO *psKernelMemInfo;
1028         struct PVRSRV_CLIENT_MEM_INFO sClientMemInfo;
1029 };
1030
1031 struct PVRSRV_BRIDGE_IN_FREE_SHARED_SYS_MEM {
1032         u32 ui32BridgeFlags;
1033         struct PVRSRV_KERNEL_MEM_INFO *psKernelMemInfo;
1034         struct PVRSRV_CLIENT_MEM_INFO sClientMemInfo;
1035 };
1036
1037 struct PVRSRV_BRIDGE_OUT_FREE_SHARED_SYS_MEM {
1038         enum PVRSRV_ERROR eError;
1039 };
1040
1041 struct PVRSRV_BRIDGE_IN_MAP_MEMINFO_MEM {
1042         u32 ui32BridgeFlags;
1043         void *hKernelMemInfo;
1044 };
1045
1046 struct PVRSRV_BRIDGE_OUT_MAP_MEMINFO_MEM {
1047         struct PVRSRV_CLIENT_MEM_INFO sClientMemInfo;
1048         struct PVRSRV_CLIENT_SYNC_INFO sClientSyncInfo;
1049         struct PVRSRV_KERNEL_MEM_INFO *psKernelMemInfo;
1050         struct PVRSRV_KERNEL_SYNC_INFO *psKernelSyncInfo;
1051         enum PVRSRV_ERROR eError;
1052 };
1053
1054 struct PVRSRV_BRIDGE_IN_UNMAP_MEMINFO_MEM {
1055         u32 ui32BridgeFlags;
1056         struct PVRSRV_CLIENT_MEM_INFO sClientMemInfo;
1057 };
1058
1059 struct PVRSRV_BRIDGE_OUT_UNMAP_MEMINFO_MEM {
1060         enum PVRSRV_ERROR eError;
1061 };
1062
1063 struct PVRSRV_BRIDGE_IN_GETMMU_PD_DEVPADDR {
1064         u32 ui32BridgeFlags;
1065         void *hDevMemContext;
1066 };
1067
1068 struct PVRSRV_BRIDGE_OUT_GETMMU_PD_DEVPADDR {
1069         struct IMG_DEV_PHYADDR sPDDevPAddr;
1070         enum PVRSRV_ERROR eError;
1071 };
1072
1073 struct PVRSRV_BRIDGE_IN_EVENT_OBJECT_WAIT {
1074         u32 ui32BridgeFlags;
1075         void *hOSEventKM;
1076 };
1077
1078 struct PVRSRV_BRIDGE_IN_EVENT_OBJECT_OPEN {
1079         struct PVRSRV_EVENTOBJECT sEventObject;
1080 };
1081
1082 struct PVRSRV_BRIDGE_OUT_EVENT_OBJECT_OPEN {
1083         void *hOSEvent;
1084         enum PVRSRV_ERROR eError;
1085 };
1086
1087 struct PVRSRV_BRIDGE_IN_EVENT_OBJECT_CLOSE {
1088         struct PVRSRV_EVENTOBJECT sEventObject;
1089         void *hOSEventKM;
1090 };
1091
1092 struct PVRSRV_BRIDGE_IN_MODIFY_SYNC_OPS {
1093         u32 ui32BridgeFlags;
1094         void *hKernelSyncInfo;
1095         u32 ui32ModifyFlags;
1096
1097 };
1098
1099 struct PVRSRV_BRIDGE_OUT_MODIFY_SYNC_OPS {
1100         enum PVRSRV_ERROR eError;
1101         u32 ui32ReadOpsPending;
1102         u32 ui32ReadOpsComplete;
1103         u32 ui32WriteOpsPending;
1104         u32 ui32WriteOpsComplete;
1105
1106 };
1107
1108 #endif