1 /**********************************************************************
3 * Copyright(c) 2008 Imagination Technologies Ltd. All rights reserved.
5 * This program is free software; you can redistribute it and/or modify it
6 * under the terms and conditions of the GNU General Public License,
7 * version 2, as published by the Free Software Foundation.
9 * This program is distributed in the hope it will be useful but, except
10 * as otherwise stated in writing, without any warranty; without even the
11 * implied warranty of merchantability or fitness for a particular purpose.
12 * See the GNU General Public License for more details.
14 * You should have received a copy of the GNU General Public License along with
15 * this program; if not, write to the Free Software Foundation, Inc.,
16 * 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
18 * The full GNU General Public License is included in this distribution in
19 * the file called "COPYING".
21 * Contact Information:
22 * Imagination Technologies Ltd. <gpl-support@imgtec.com>
23 * Home Park Estate, Kings Langley, Herts, WD4 8LZ, UK
25 ******************************************************************************/
27 #ifndef __PVR_BRIDGE_H__
28 #define __PVR_BRIDGE_H__
31 #include "servicesint.h"
34 #include <linux/ioctl.h>
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
272 #define PVRSRV_BRIDGE_LAST_NON_DEVICE_CMD \
273 (PVRSRV_BRIDGE_SYNC_OPS_CMD_LAST+1)
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)
321 #define PVRSRV_KERNEL_MODE_CLIENT 1
323 struct PVRSRV_BRIDGE_RETURN {
324 enum PVRSRV_ERROR eError;
328 struct PVRSRV_BRIDGE_PACKAGE {
331 void __user *pvParamIn;
332 u32 ui32InBufferSize;
333 void __user *pvParamOut;
334 u32 ui32OutBufferSize;
336 void *hKernelServices;
339 struct PVRSRV_BRIDGE_IN_ACQUIRE_DEVICEINFO {
342 enum PVRSRV_DEVICE_TYPE eDeviceType;
345 struct PVRSRV_BRIDGE_IN_ENUMCLASS {
347 enum PVRSRV_DEVICE_CLASS sDeviceClass;
350 struct PVRSRV_BRIDGE_IN_CLOSE_DISPCLASS_DEVICE {
355 struct PVRSRV_BRIDGE_IN_ENUM_DISPCLASS_FORMATS {
360 struct PVRSRV_BRIDGE_IN_GET_DISPCLASS_SYSBUFFER {
365 struct PVRSRV_BRIDGE_IN_GET_DISPCLASS_INFO {
370 struct PVRSRV_BRIDGE_IN_CLOSE_BUFFERCLASS_DEVICE {
375 struct PVRSRV_BRIDGE_IN_GET_BUFFERCLASS_INFO {
380 struct PVRSRV_BRIDGE_IN_RELEASE_DEVICEINFO {
385 struct PVRSRV_BRIDGE_IN_FREE_CLASSDEVICEINFO {
387 enum PVRSRV_DEVICE_CLASS DeviceClass;
391 struct PVRSRV_BRIDGE_IN_GET_DEVMEM_HEAPINFO {
394 void *hDevMemContext;
397 struct PVRSRV_BRIDGE_IN_CREATE_DEVMEMCONTEXT {
402 struct PVRSRV_BRIDGE_IN_DESTROY_DEVMEMCONTEXT {
405 void *hDevMemContext;
408 struct PVRSRV_BRIDGE_IN_ALLOCDEVICEMEM {
417 struct PVRSRV_BRIDGE_IN_MAPMEMINFOTOUSER {
419 struct PVRSRV_KERNEL_MEM_INFO *psKernelMemInfo;
422 struct PVRSRV_BRIDGE_IN_UNMAPMEMINFOFROMUSER {
424 struct PVRSRV_KERNEL_MEM_INFO *psKernelMemInfo;
429 #define DRM_PVR2D_CFLUSH_FROM_GPU 1
430 #define DRM_PVR2D_CFLUSH_TO_GPU 2
432 struct PVRSRV_BRIDGE_IN_CACHEFLUSHDRMFROMUSER {
440 struct PVRSRV_BRIDGE_IN_FREEDEVICEMEM {
443 struct PVRSRV_KERNEL_MEM_INFO *psKernelMemInfo;
444 struct PVRSRV_CLIENT_MEM_INFO sClientMemInfo;
448 struct PVRSRV_BRIDGE_IN_EXPORTDEVICEMEM {
451 struct PVRSRV_KERNEL_MEM_INFO *psKernelMemInfo;
455 struct PVRSRV_BRIDGE_IN_GETFREEDEVICEMEM {
460 struct PVRSRV_BRIDGE_IN_CREATECOMMANDQUEUE {
466 struct PVRSRV_BRIDGE_IN_DESTROYCOMMANDQUEUE {
469 struct PVRSRV_QUEUE_INFO *psQueueInfo;
473 struct PVRSRV_BRIDGE_IN_MHANDLE_TO_MMAP_DATA {
478 struct PVRSRV_BRIDGE_IN_RELEASE_MMAP_DATA {
483 struct PVRSRV_BRIDGE_IN_RESERVE_DEV_VIRTMEM {
486 struct IMG_DEV_VIRTADDR *psDevVAddr;
491 struct PVRSRV_BRIDGE_OUT_CONNECT_SERVICES {
492 enum PVRSRV_ERROR eError;
493 void *hKernelServices;
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;
504 struct PVRSRV_BRIDGE_IN_FREE_DEV_VIRTMEM {
506 struct PVRSRV_KERNEL_MEM_INFO *psKernelMemInfo;
507 struct PVRSRV_CLIENT_MEM_INFO sClientMemInfo;
508 struct PVRSRV_CLIENT_SYNC_INFO sClientSyncInfo;
511 struct PVRSRV_BRIDGE_IN_MAP_DEV_MEMORY {
513 void *hKernelMemInfo;
514 void *hDstDevMemHeap;
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;
525 struct PVRSRV_BRIDGE_IN_UNMAP_DEV_MEMORY {
527 struct PVRSRV_KERNEL_MEM_INFO *psKernelMemInfo;
528 struct PVRSRV_CLIENT_MEM_INFO sClientMemInfo;
529 struct PVRSRV_CLIENT_SYNC_INFO sClientSyncInfo;
532 struct PVRSRV_BRIDGE_IN_MAP_EXT_MEMORY {
534 struct PVRSRV_KERNEL_MEM_INFO *psKernelMemInfo;
535 struct IMG_SYS_PHYADDR *psSysPAddr;
539 struct PVRSRV_BRIDGE_IN_UNMAP_EXT_MEMORY {
541 struct PVRSRV_CLIENT_MEM_INFO sClientMemInfo;
542 struct PVRSRV_CLIENT_SYNC_INFO sClientSyncInfo;
546 struct PVRSRV_BRIDGE_IN_MAP_DEVICECLASS_MEMORY {
548 void *hDeviceClassBuffer;
549 void *hDevMemContext;
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;
562 struct PVRSRV_BRIDGE_IN_UNMAP_DEVICECLASS_MEMORY {
564 struct PVRSRV_KERNEL_MEM_INFO *psKernelMemInfo;
565 struct PVRSRV_CLIENT_MEM_INFO sClientMemInfo;
566 struct PVRSRV_CLIENT_SYNC_INFO sClientSyncInfo;
569 struct PVRSRV_BRIDGE_IN_PDUMP_MEMPOL {
571 struct PVRSRV_KERNEL_MEM_INFO *psKernelMemInfo;
579 struct PVRSRV_BRIDGE_IN_PDUMP_SYNCPOL {
581 struct PVRSRV_KERNEL_SYNC_INFO *psKernelSyncInfo;
587 struct PVRSRV_BRIDGE_IN_PDUMP_DUMPMEM {
591 struct PVRSRV_KERNEL_MEM_INFO *psKernelMemInfo;
597 struct PVRSRV_BRIDGE_IN_PDUMP_DUMPSYNC {
600 struct PVRSRV_KERNEL_SYNC_INFO *psKernelSyncInfo;
605 struct PVRSRV_BRIDGE_IN_PDUMP_DUMPREG {
607 struct PVRSRV_HWREG sHWReg;
611 struct PVRSRV_BRIDGE_IN_PDUMP_REGPOL {
613 struct PVRSRV_HWREG sHWReg;
618 struct PVRSRV_BRIDGE_IN_PDUMP_DUMPPDREG {
620 struct PVRSRV_HWREG sHWReg;
624 struct PVRSRV_BRIDGE_IN_PDUMP_MEMPAGES {
626 void *hKernelMemInfo;
627 struct IMG_DEV_PHYADDR *pPages;
629 struct IMG_DEV_VIRTADDR sDevAddr;
632 IMG_BOOL bContinuous;
635 struct PVRSRV_BRIDGE_IN_PDUMP_COMMENT {
637 char szComment[PVRSRV_PDUMP_MAX_COMMENT_SIZE];
641 struct PVRSRV_BRIDGE_IN_PDUMP_SETFRAME {
646 struct PVRSRV_BRIDGE_IN_PDUMP_BITMAP {
648 char szFileName[PVRSRV_PDUMP_MAX_FILENAME_SIZE];
652 u32 ui32StrideInBytes;
653 struct IMG_DEV_VIRTADDR sDevBaseAddr;
655 enum PDUMP_PIXEL_FORMAT ePixelFormat;
656 enum PDUMP_MEM_FORMAT eMemFormat;
660 struct PVRSRV_BRIDGE_IN_PDUMP_READREG {
662 char szFileName[PVRSRV_PDUMP_MAX_FILENAME_SIZE];
669 struct PVRSRV_BRIDGE_IN_PDUMP_DRIVERINFO {
671 char szString[PVRSRV_PDUMP_MAX_COMMENT_SIZE];
672 IMG_BOOL bContinuous;
675 struct PVRSRV_BRIDGE_IN_PDUMP_DUMPPDDEVPADDR {
677 void *hKernelMemInfo;
679 struct IMG_DEV_PHYADDR sPDDevPAddr;
682 struct PVRSRV_BRIDGE_IN_PDUMP_CYCLE_COUNT_REG_READ {
688 struct PVRSRV_BRIDGE_OUT_ENUMDEVICE {
689 enum PVRSRV_ERROR eError;
691 struct PVRSRV_DEVICE_IDENTIFIER asDeviceIdentifier[PVRSRV_MAX_DEVICES];
694 struct PVRSRV_BRIDGE_OUT_ACQUIRE_DEVICEINFO {
696 enum PVRSRV_ERROR eError;
700 struct PVRSRV_BRIDGE_OUT_ENUMCLASS {
701 enum PVRSRV_ERROR eError;
703 u32 ui32DevID[PVRSRV_MAX_DEVICES];
706 struct PVRSRV_BRIDGE_IN_OPEN_DISPCLASS_DEVICE {
712 struct PVRSRV_BRIDGE_OUT_OPEN_DISPCLASS_DEVICE {
713 enum PVRSRV_ERROR eError;
717 struct PVRSRV_BRIDGE_IN_WRAP_EXT_MEMORY {
720 void *hDevMemContext;
724 IMG_BOOL bPhysContig;
725 u32 ui32NumPageTableEntries;
726 struct IMG_SYS_PHYADDR __user *psSysPAddr;
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;
735 struct PVRSRV_BRIDGE_IN_UNWRAP_EXT_MEMORY {
737 void *hKernelMemInfo;
738 struct PVRSRV_CLIENT_MEM_INFO sClientMemInfo;
739 struct PVRSRV_CLIENT_SYNC_INFO sClientSyncInfo;
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
748 struct PVRSRV_BRIDGE_OUT_ENUM_DISPCLASS_FORMATS {
749 enum PVRSRV_ERROR eError;
751 struct DISPLAY_FORMAT asFormat[PVRSRV_MAX_DC_DISPLAY_FORMATS];
754 struct PVRSRV_BRIDGE_IN_ENUM_DISPCLASS_DIMS {
757 struct DISPLAY_FORMAT sFormat;
760 struct PVRSRV_BRIDGE_OUT_ENUM_DISPCLASS_DIMS {
761 enum PVRSRV_ERROR eError;
763 struct DISPLAY_DIMS asDim[PVRSRV_MAX_DC_DISPLAY_DIMENSIONS];
766 struct PVRSRV_BRIDGE_OUT_GET_DISPCLASS_INFO {
767 enum PVRSRV_ERROR eError;
768 struct DISPLAY_INFO sDisplayInfo;
771 struct PVRSRV_BRIDGE_OUT_GET_DISPCLASS_SYSBUFFER {
772 enum PVRSRV_ERROR eError;
776 struct PVRSRV_BRIDGE_IN_CREATE_DISPCLASS_SWAPCHAIN {
780 struct DISPLAY_SURF_ATTRIBUTES sDstSurfAttrib;
781 struct DISPLAY_SURF_ATTRIBUTES sSrcSurfAttrib;
787 struct PVRSRV_BRIDGE_OUT_CREATE_DISPCLASS_SWAPCHAIN {
788 enum PVRSRV_ERROR eError;
793 struct PVRSRV_BRIDGE_IN_DESTROY_DISPCLASS_SWAPCHAIN {
799 struct PVRSRV_BRIDGE_IN_SET_DISPCLASS_RECT {
803 struct IMG_RECT sRect;
806 struct PVRSRV_BRIDGE_IN_SET_DISPCLASS_COLOURKEY {
813 struct PVRSRV_BRIDGE_IN_GET_DISPCLASS_BUFFERS {
819 struct PVRSRV_BRIDGE_OUT_GET_DISPCLASS_BUFFERS {
820 enum PVRSRV_ERROR eError;
822 void *ahBuffer[PVRSRV_MAX_DC_SWAPCHAIN_BUFFERS];
825 struct PVRSRV_BRIDGE_IN_SWAP_DISPCLASS_TO_BUFFER {
829 u32 ui32SwapInterval;
831 u32 ui32ClipRectCount;
832 struct IMG_RECT sClipRect[PVRSRV_MAX_DC_CLIP_RECTS];
835 struct PVRSRV_BRIDGE_IN_SWAP_DISPCLASS_TO_SYSTEM {
841 struct PVRSRV_BRIDGE_IN_OPEN_BUFFERCLASS_DEVICE {
847 struct PVRSRV_BRIDGE_OUT_OPEN_BUFFERCLASS_DEVICE {
848 enum PVRSRV_ERROR eError;
852 struct PVRSRV_BRIDGE_OUT_GET_BUFFERCLASS_INFO {
853 enum PVRSRV_ERROR eError;
854 struct BUFFER_INFO sBufferInfo;
857 struct PVRSRV_BRIDGE_IN_GET_BUFFERCLASS_BUFFER {
863 struct PVRSRV_BRIDGE_OUT_GET_BUFFERCLASS_BUFFER {
864 enum PVRSRV_ERROR eError;
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];
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];
881 struct PVRSRV_BRIDGE_OUT_CREATE_DEVMEMHEAP {
882 enum PVRSRV_ERROR eError;
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;
895 struct PVRSRV_BRIDGE_OUT_EXPORTDEVICEMEM {
896 enum PVRSRV_ERROR eError;
901 struct PVRSRV_BRIDGE_OUT_MAPMEMINFOTOUSER {
902 enum PVRSRV_ERROR eError;
907 struct PVRSRV_BRIDGE_OUT_GETFREEDEVICEMEM {
908 enum PVRSRV_ERROR eError;
911 u32 ui32LargestBlock;
915 struct PVRSRV_BRIDGE_OUT_MHANDLE_TO_MMAP_DATA {
916 enum PVRSRV_ERROR eError;
919 u32 ui32RealByteSize;
923 struct PVRSRV_BRIDGE_OUT_RELEASE_MMAP_DATA {
924 enum PVRSRV_ERROR eError;
927 u32 ui32RealByteSize;
930 struct PVRSRV_BRIDGE_IN_GET_MISC_INFO {
932 struct PVRSRV_MISC_INFO sMiscInfo;
935 struct PVRSRV_BRIDGE_OUT_GET_MISC_INFO {
936 enum PVRSRV_ERROR eError;
937 struct PVRSRV_MISC_INFO sMiscInfo;
940 struct PVRSRV_BRIDGE_IN_RELEASE_MISC_INFO {
942 struct PVRSRV_MISC_INFO sMiscInfo;
945 struct PVRSRV_BRIDGE_OUT_RELEASE_MISC_INFO {
946 enum PVRSRV_ERROR eError;
947 struct PVRSRV_MISC_INFO sMiscInfo;
950 struct PVRSRV_BRIDGE_OUT_PDUMP_ISCAPTURING {
951 enum PVRSRV_ERROR eError;
952 IMG_BOOL bIsCapturing;
955 struct PVRSRV_BRIDGE_IN_GET_FB_STATS {
961 struct PVRSRV_BRIDGE_IN_MAPPHYSTOUSERSPACE {
964 struct IMG_SYS_PHYADDR sSysPhysAddr;
968 struct PVRSRV_BRIDGE_OUT_MAPPHYSTOUSERSPACE {
974 struct PVRSRV_BRIDGE_IN_UNMAPPHYSTOUSERSPACE {
981 struct PVRSRV_BRIDGE_OUT_GETPHYSTOUSERSPACEMAP {
986 struct PVRSRV_BRIDGE_IN_REGISTER_SIM_PROCESS {
992 struct PVRSRV_BRIDGE_OUT_REGISTER_SIM_PROCESS {
993 struct IMG_SYS_PHYADDR sRegsPhysBase;
1000 struct PVRSRV_BRIDGE_IN_UNREGISTER_SIM_PROCESS {
1001 u32 ui32BridgeFlags;
1007 struct PVRSRV_BRIDGE_IN_PROCESS_SIMISR_EVENT {
1008 u32 ui32BridgeFlags;
1010 u32 ui32StatusAndMask;
1011 enum PVRSRV_ERROR eError;
1014 struct PVRSRV_BRIDGE_IN_INITSRV_DISCONNECT {
1015 u32 ui32BridgeFlags;
1016 IMG_BOOL bInitSuccesful;
1019 struct PVRSRV_BRIDGE_IN_ALLOC_SHARED_SYS_MEM {
1020 u32 ui32BridgeFlags;
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;
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;
1037 struct PVRSRV_BRIDGE_OUT_FREE_SHARED_SYS_MEM {
1038 enum PVRSRV_ERROR eError;
1041 struct PVRSRV_BRIDGE_IN_MAP_MEMINFO_MEM {
1042 u32 ui32BridgeFlags;
1043 void *hKernelMemInfo;
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;
1054 struct PVRSRV_BRIDGE_IN_UNMAP_MEMINFO_MEM {
1055 u32 ui32BridgeFlags;
1056 struct PVRSRV_CLIENT_MEM_INFO sClientMemInfo;
1059 struct PVRSRV_BRIDGE_OUT_UNMAP_MEMINFO_MEM {
1060 enum PVRSRV_ERROR eError;
1063 struct PVRSRV_BRIDGE_IN_GETMMU_PD_DEVPADDR {
1064 u32 ui32BridgeFlags;
1065 void *hDevMemContext;
1068 struct PVRSRV_BRIDGE_OUT_GETMMU_PD_DEVPADDR {
1069 struct IMG_DEV_PHYADDR sPDDevPAddr;
1070 enum PVRSRV_ERROR eError;
1073 struct PVRSRV_BRIDGE_IN_EVENT_OBJECT_WAIT {
1074 u32 ui32BridgeFlags;
1078 struct PVRSRV_BRIDGE_IN_EVENT_OBJECT_OPEN {
1079 struct PVRSRV_EVENTOBJECT sEventObject;
1082 struct PVRSRV_BRIDGE_OUT_EVENT_OBJECT_OPEN {
1084 enum PVRSRV_ERROR eError;
1087 struct PVRSRV_BRIDGE_IN_EVENT_OBJECT_CLOSE {
1088 struct PVRSRV_EVENTOBJECT sEventObject;
1092 struct PVRSRV_BRIDGE_IN_MODIFY_SYNC_OPS {
1093 u32 ui32BridgeFlags;
1094 void *hKernelSyncInfo;
1095 u32 ui32ModifyFlags;
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;