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