check if uid changes across syscalls.
[trinity.git] / ioctls / drm.c
blob952a3566ae46a8788de021512322a4128f3df5e6
1 #include "config.h"
3 #ifdef USE_DRM
5 #include <stdlib.h>
6 #include <inttypes.h>
8 #include <drm/drm.h>
9 #ifdef USE_DRM_EXYNOS
10 #include <drm/exynos_drm.h>
11 #endif
12 #include <drm/i810_drm.h>
13 #include <drm/i915_drm.h>
14 #include <drm/mga_drm.h>
15 #include <drm/nouveau_drm.h>
16 #include <drm/r128_drm.h>
17 #include <drm/radeon_drm.h>
18 #include <drm/savage_drm.h>
20 #include "trinity.h"
21 #include "ioctls.h"
23 /* Copy-paste relevant stuff from header, as it is buggy. */
24 /* #include <drm/sis_drm.h> */
26 /* SiS specific ioctls */
27 #define NOT_USED_0_3
28 #define DRM_SIS_FB_ALLOC 0x04
29 #define DRM_SIS_FB_FREE 0x05
30 #define NOT_USED_6_12
31 #define DRM_SIS_AGP_INIT 0x13
32 #define DRM_SIS_AGP_ALLOC 0x14
33 #define DRM_SIS_AGP_FREE 0x15
34 #define DRM_SIS_FB_INIT 0x16
36 #define DRM_IOCTL_SIS_FB_ALLOC DRM_IOWR(DRM_COMMAND_BASE + DRM_SIS_FB_ALLOC, drm_sis_mem_t)
37 #define DRM_IOCTL_SIS_FB_FREE DRM_IOW( DRM_COMMAND_BASE + DRM_SIS_FB_FREE, drm_sis_mem_t)
38 #define DRM_IOCTL_SIS_AGP_INIT DRM_IOWR(DRM_COMMAND_BASE + DRM_SIS_AGP_INIT, drm_sis_agp_t)
39 #define DRM_IOCTL_SIS_AGP_ALLOC DRM_IOWR(DRM_COMMAND_BASE + DRM_SIS_AGP_ALLOC, drm_sis_mem_t)
40 #define DRM_IOCTL_SIS_AGP_FREE DRM_IOW( DRM_COMMAND_BASE + DRM_SIS_AGP_FREE, drm_sis_mem_t)
41 #define DRM_IOCTL_SIS_FB_INIT DRM_IOW( DRM_COMMAND_BASE + DRM_SIS_FB_INIT, drm_sis_fb_t)
43 #define DRM_IOCTL_SIS_FLIP DRM_IOW( 0x48, drm_sis_flip_t)
44 #define DRM_IOCTL_SIS_FLIP_INIT DRM_IO( 0x49)
45 #define DRM_IOCTL_SIS_FLIP_FINAL DRM_IO( 0x50)
48 /* deprecated nouveau ioctls */
50 * Copyright 2005 Stephane Marchesin.
51 * All Rights Reserved.
53 * Permission is hereby granted, free of charge, to any person obtaining a
54 * copy of this software and associated documentation files (the "Software"),
55 * to deal in the Software without restriction, including without limitation
56 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
57 * and/or sell copies of the Software, and to permit persons to whom the
58 * Software is furnished to do so, subject to the following conditions:
60 * The above copyright notice and this permission notice (including the next
61 * paragraph) shall be included in all copies or substantial portions of the
62 * Software.
64 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
65 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
66 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
67 * VA LINUX SYSTEMS AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
68 * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
69 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
70 * OTHER DEALINGS IN THE SOFTWARE.
72 #ifndef DRM_IOCTL_NOUVEAU_GETPARAM
73 struct drm_nouveau_getparam {
74 uint64_t param;
75 uint64_t value;
77 #define DRM_IOCTL_NOUVEAU_GETPARAM DRM_IOWR(DRM_COMMAND_BASE + DRM_NOUVEAU_GETPARAM, struct drm_nouveau_getparam)
78 #endif
80 #ifndef DRM_IOCTL_NOUVEAU_SETPARAM
81 struct drm_nouveau_setparam {
82 uint64_t param;
83 uint64_t value;
85 #define DRM_IOCTL_NOUVEAU_SETPARAM DRM_IOWR(DRM_COMMAND_BASE + DRM_NOUVEAU_SETPARAM, struct drm_nouveau_setparam)
86 #endif
88 #ifndef DRM_IOCTL_NOUVEAU_CHANNEL_ALLOC
89 struct drm_nouveau_channel_alloc {
90 uint32_t fb_ctxdma_handle;
91 uint32_t tt_ctxdma_handle;
93 int channel;
94 uint32_t pushbuf_domains;
96 /* Notifier memory */
97 uint32_t notifier_handle;
99 /* DRM-enforced subchannel assignments */
100 struct {
101 uint32_t handle;
102 uint32_t grclass;
103 } subchan[8];
104 uint32_t nr_subchan;
106 #define DRM_IOCTL_NOUVEAU_CHANNEL_ALLOC DRM_IOWR(DRM_COMMAND_BASE + DRM_NOUVEAU_CHANNEL_ALLOC, struct drm_nouveau_channel_alloc)
107 #endif
109 #ifndef DRM_IOCTL_NOUVEAU_CHANNEL_FREE
110 struct drm_nouveau_channel_free {
111 int channel;
113 #define DRM_IOCTL_NOUVEAU_CHANNEL_FREE DRM_IOW (DRM_COMMAND_BASE + DRM_NOUVEAU_CHANNEL_FREE, struct drm_nouveau_channel_free)
114 #endif
116 #ifndef DRM_IOCTL_NOUVEAU_GROBJ_ALLOC
117 struct drm_nouveau_grobj_alloc {
118 int channel;
119 uint32_t handle;
120 int class;
122 #define DRM_IOCTL_NOUVEAU_GROBJ_ALLOC DRM_IOW (DRM_COMMAND_BASE + DRM_NOUVEAU_GROBJ_ALLOC, struct drm_nouveau_grobj_alloc)
123 #endif
125 #ifndef DRM_IOCTL_NOUVEAU_NOTIFIEROBJ_ALLOC
126 struct drm_nouveau_notifierobj_alloc {
127 uint32_t channel;
128 uint32_t handle;
129 uint32_t size;
130 uint32_t offset;
132 #define DRM_IOCTL_NOUVEAU_NOTIFIEROBJ_ALLOC DRM_IOWR(DRM_COMMAND_BASE + DRM_NOUVEAU_NOTIFIEROBJ_ALLOC, struct drm_nouveau_notifierobj_alloc)
133 #endif
135 #ifndef DRM_IOCTL_NOUVEAU_GPUOBJ_FREE
136 struct drm_nouveau_gpuobj_free {
137 int channel;
138 uint32_t handle;
140 #define DRM_IOCTL_NOUVEAU_GPUOBJ_FREE DRM_IOW (DRM_COMMAND_BASE + DRM_NOUVEAU_GPUOBJ_FREE, struct drm_nouveau_gpuobj_free)
141 #endif
143 typedef struct {
144 int context;
145 unsigned long offset;
146 unsigned long size;
147 unsigned long free;
148 } drm_sis_mem_t;
150 typedef struct {
151 unsigned long offset, size;
152 } drm_sis_agp_t;
154 typedef struct {
155 unsigned long offset, size;
156 } drm_sis_fb_t;
158 /* header is buggy. */
159 /* #include <drm/via_drm.h> */
161 static const struct ioctl drm_ioctls[] = {
162 /* drm/drm.h */
163 IOCTL(DRM_IOCTL_VERSION),
164 IOCTL(DRM_IOCTL_GET_UNIQUE),
165 IOCTL(DRM_IOCTL_GET_MAGIC),
166 IOCTL(DRM_IOCTL_IRQ_BUSID),
167 IOCTL(DRM_IOCTL_GET_MAP),
168 IOCTL(DRM_IOCTL_GET_CLIENT),
169 IOCTL(DRM_IOCTL_GET_STATS),
170 IOCTL(DRM_IOCTL_SET_VERSION),
171 IOCTL(DRM_IOCTL_MODESET_CTL),
172 IOCTL(DRM_IOCTL_GEM_CLOSE),
173 IOCTL(DRM_IOCTL_GEM_FLINK),
174 IOCTL(DRM_IOCTL_GEM_OPEN),
175 #ifdef DRM_IOCTL_GET_CAP
176 IOCTL(DRM_IOCTL_GET_CAP),
177 #endif
178 IOCTL(DRM_IOCTL_SET_UNIQUE),
179 IOCTL(DRM_IOCTL_AUTH_MAGIC),
180 IOCTL(DRM_IOCTL_BLOCK),
181 IOCTL(DRM_IOCTL_UNBLOCK),
182 IOCTL(DRM_IOCTL_CONTROL),
183 IOCTL(DRM_IOCTL_ADD_MAP),
184 IOCTL(DRM_IOCTL_ADD_BUFS),
185 IOCTL(DRM_IOCTL_MARK_BUFS),
186 IOCTL(DRM_IOCTL_INFO_BUFS),
187 IOCTL(DRM_IOCTL_MAP_BUFS),
188 IOCTL(DRM_IOCTL_FREE_BUFS),
189 IOCTL(DRM_IOCTL_RM_MAP),
190 IOCTL(DRM_IOCTL_SET_SAREA_CTX),
191 IOCTL(DRM_IOCTL_GET_SAREA_CTX),
192 IOCTL(DRM_IOCTL_SET_MASTER),
193 IOCTL(DRM_IOCTL_DROP_MASTER),
194 IOCTL(DRM_IOCTL_ADD_CTX),
195 IOCTL(DRM_IOCTL_RM_CTX),
196 IOCTL(DRM_IOCTL_MOD_CTX),
197 IOCTL(DRM_IOCTL_GET_CTX),
198 IOCTL(DRM_IOCTL_SWITCH_CTX),
199 IOCTL(DRM_IOCTL_NEW_CTX),
200 IOCTL(DRM_IOCTL_RES_CTX),
201 IOCTL(DRM_IOCTL_ADD_DRAW),
202 IOCTL(DRM_IOCTL_RM_DRAW),
203 IOCTL(DRM_IOCTL_DMA),
204 IOCTL(DRM_IOCTL_LOCK),
205 IOCTL(DRM_IOCTL_UNLOCK),
206 IOCTL(DRM_IOCTL_FINISH),
207 #ifdef DRM_IOCTL_PRIME_HANDLE_TO_FD
208 IOCTL(DRM_IOCTL_PRIME_HANDLE_TO_FD),
209 #endif
210 #ifdef DRM_IOCTL_PRIME_FD_TO_HANDLE
211 IOCTL(DRM_IOCTL_PRIME_FD_TO_HANDLE),
212 #endif
213 IOCTL(DRM_IOCTL_AGP_ACQUIRE),
214 IOCTL(DRM_IOCTL_AGP_RELEASE),
215 IOCTL(DRM_IOCTL_AGP_ENABLE),
216 IOCTL(DRM_IOCTL_AGP_INFO),
217 IOCTL(DRM_IOCTL_AGP_ALLOC),
218 IOCTL(DRM_IOCTL_AGP_FREE),
219 IOCTL(DRM_IOCTL_AGP_BIND),
220 IOCTL(DRM_IOCTL_AGP_UNBIND),
221 IOCTL(DRM_IOCTL_SG_ALLOC),
222 IOCTL(DRM_IOCTL_SG_FREE),
223 IOCTL(DRM_IOCTL_WAIT_VBLANK),
224 IOCTL(DRM_IOCTL_UPDATE_DRAW),
225 IOCTL(DRM_IOCTL_MODE_GETRESOURCES),
226 IOCTL(DRM_IOCTL_MODE_GETCRTC),
227 IOCTL(DRM_IOCTL_MODE_SETCRTC),
228 IOCTL(DRM_IOCTL_MODE_CURSOR),
229 IOCTL(DRM_IOCTL_MODE_GETGAMMA),
230 IOCTL(DRM_IOCTL_MODE_SETGAMMA),
231 IOCTL(DRM_IOCTL_MODE_GETENCODER),
232 IOCTL(DRM_IOCTL_MODE_GETCONNECTOR),
233 IOCTL(DRM_IOCTL_MODE_ATTACHMODE),
234 IOCTL(DRM_IOCTL_MODE_DETACHMODE),
235 IOCTL(DRM_IOCTL_MODE_GETPROPERTY),
236 IOCTL(DRM_IOCTL_MODE_SETPROPERTY),
237 IOCTL(DRM_IOCTL_MODE_GETPROPBLOB),
238 IOCTL(DRM_IOCTL_MODE_GETFB),
239 IOCTL(DRM_IOCTL_MODE_ADDFB),
240 IOCTL(DRM_IOCTL_MODE_RMFB),
241 IOCTL(DRM_IOCTL_MODE_PAGE_FLIP),
242 IOCTL(DRM_IOCTL_MODE_DIRTYFB),
243 #ifdef DRM_IOCTL_MODE_CREATE_DUMB
244 IOCTL(DRM_IOCTL_MODE_CREATE_DUMB),
245 #endif
246 #ifdef DRM_IOCTL_MODE_MAP_DUMB
247 IOCTL(DRM_IOCTL_MODE_MAP_DUMB),
248 #endif
249 #ifdef DRM_IOCTL_MODE_DESTROY_DUMB
250 IOCTL(DRM_IOCTL_MODE_DESTROY_DUMB),
251 #endif
252 #ifdef DRM_IOCTL_MODE_GETPLANERESOURCES
253 IOCTL(DRM_IOCTL_MODE_GETPLANERESOURCES),
254 #endif
255 #ifdef DRM_IOCTL_MODE_GETPLANE
256 IOCTL(DRM_IOCTL_MODE_GETPLANE),
257 #endif
258 #ifdef DRM_IOCTL_MODE_SETPLANE
259 IOCTL(DRM_IOCTL_MODE_SETPLANE),
260 #endif
261 #ifdef DRM_IOCTL_MODE_ADDFB2
262 IOCTL(DRM_IOCTL_MODE_ADDFB2),
263 #endif
264 #ifdef DRM_IOCTL_MODE_OBJ_GETPROPERTIES
265 IOCTL(DRM_IOCTL_MODE_OBJ_GETPROPERTIES),
266 #endif
267 #ifdef DRM_IOCTL_MODE_OBJ_SETPROPERTY
268 IOCTL(DRM_IOCTL_MODE_OBJ_SETPROPERTY),
269 #endif
271 #ifdef USE_DRM_EXYNOS
272 /* exynos_drm.h */
273 IOCTL(DRM_IOCTL_EXYNOS_GEM_CREATE),
274 IOCTL(DRM_IOCTL_EXYNOS_GEM_MAP_OFFSET),
275 IOCTL(DRM_IOCTL_EXYNOS_GEM_MMAP),
276 #ifdef DRM_IOCTL_EXYNOS_GEM_GET
277 IOCTL(DRM_IOCTL_EXYNOS_GEM_GET),
278 #endif
279 IOCTL(DRM_IOCTL_EXYNOS_VIDI_CONNECTION),
280 #ifdef DRM_IOCTL_EXYNOS_G2D_GET_VER
281 IOCTL(DRM_IOCTL_EXYNOS_G2D_GET_VER),
282 #endif
283 #ifdef DRM_IOCTL_EXYNOS_G2D_SET_CMDLIST
284 IOCTL(DRM_IOCTL_EXYNOS_G2D_SET_CMDLIST),
285 #endif
286 #ifdef DRM_IOCTL_EXYNOS_G2D_EXEC
287 IOCTL(DRM_IOCTL_EXYNOS_G2D_EXEC),
288 #endif
289 #endif
291 /* i810_drm.h */
292 IOCTL(DRM_IOCTL_I810_INIT),
293 IOCTL(DRM_IOCTL_I810_VERTEX),
294 IOCTL(DRM_IOCTL_I810_CLEAR),
295 IOCTL(DRM_IOCTL_I810_FLUSH),
296 IOCTL(DRM_IOCTL_I810_GETAGE),
297 IOCTL(DRM_IOCTL_I810_GETBUF),
298 IOCTL(DRM_IOCTL_I810_SWAP),
299 IOCTL(DRM_IOCTL_I810_COPY),
300 IOCTL(DRM_IOCTL_I810_DOCOPY),
301 IOCTL(DRM_IOCTL_I810_OV0INFO),
302 IOCTL(DRM_IOCTL_I810_FSTATUS),
303 IOCTL(DRM_IOCTL_I810_OV0FLIP),
304 IOCTL(DRM_IOCTL_I810_MC),
305 IOCTL(DRM_IOCTL_I810_RSTATUS),
306 IOCTL(DRM_IOCTL_I810_FLIP),
308 /* i915_drm.h */
309 IOCTL(DRM_IOCTL_I915_INIT),
310 IOCTL(DRM_IOCTL_I915_FLUSH),
311 IOCTL(DRM_IOCTL_I915_FLIP),
312 IOCTL(DRM_IOCTL_I915_BATCHBUFFER),
313 IOCTL(DRM_IOCTL_I915_IRQ_EMIT),
314 IOCTL(DRM_IOCTL_I915_IRQ_WAIT),
315 IOCTL(DRM_IOCTL_I915_GETPARAM),
316 IOCTL(DRM_IOCTL_I915_SETPARAM),
317 IOCTL(DRM_IOCTL_I915_ALLOC),
318 IOCTL(DRM_IOCTL_I915_FREE),
319 IOCTL(DRM_IOCTL_I915_INIT_HEAP),
320 IOCTL(DRM_IOCTL_I915_CMDBUFFER),
321 IOCTL(DRM_IOCTL_I915_DESTROY_HEAP),
322 IOCTL(DRM_IOCTL_I915_SET_VBLANK_PIPE),
323 IOCTL(DRM_IOCTL_I915_GET_VBLANK_PIPE),
324 IOCTL(DRM_IOCTL_I915_VBLANK_SWAP),
325 #ifdef DRM_IOCTL_I915_HWS_ADDR
326 IOCTL(DRM_IOCTL_I915_HWS_ADDR),
327 #endif
328 IOCTL(DRM_IOCTL_I915_GEM_INIT),
329 IOCTL(DRM_IOCTL_I915_GEM_EXECBUFFER),
330 IOCTL(DRM_IOCTL_I915_GEM_EXECBUFFER2),
331 IOCTL(DRM_IOCTL_I915_GEM_PIN),
332 IOCTL(DRM_IOCTL_I915_GEM_UNPIN),
333 IOCTL(DRM_IOCTL_I915_GEM_BUSY),
334 #ifdef DRM_IOCTL_I915_GEM_SET_CACHING
335 IOCTL(DRM_IOCTL_I915_GEM_SET_CACHING),
336 #endif
337 #ifdef DRM_IOCTL_I915_GEM_GET_CACHING
338 IOCTL(DRM_IOCTL_I915_GEM_GET_CACHING),
339 #endif
340 IOCTL(DRM_IOCTL_I915_GEM_THROTTLE),
341 IOCTL(DRM_IOCTL_I915_GEM_ENTERVT),
342 IOCTL(DRM_IOCTL_I915_GEM_LEAVEVT),
343 IOCTL(DRM_IOCTL_I915_GEM_CREATE),
344 IOCTL(DRM_IOCTL_I915_GEM_PREAD),
345 IOCTL(DRM_IOCTL_I915_GEM_PWRITE),
346 IOCTL(DRM_IOCTL_I915_GEM_MMAP),
347 IOCTL(DRM_IOCTL_I915_GEM_MMAP_GTT),
348 IOCTL(DRM_IOCTL_I915_GEM_SET_DOMAIN),
349 IOCTL(DRM_IOCTL_I915_GEM_SW_FINISH),
350 IOCTL(DRM_IOCTL_I915_GEM_SET_TILING),
351 IOCTL(DRM_IOCTL_I915_GEM_GET_TILING),
352 IOCTL(DRM_IOCTL_I915_GEM_GET_APERTURE),
353 IOCTL(DRM_IOCTL_I915_GET_PIPE_FROM_CRTC_ID),
354 IOCTL(DRM_IOCTL_I915_GEM_MADVISE),
355 IOCTL(DRM_IOCTL_I915_OVERLAY_PUT_IMAGE),
356 IOCTL(DRM_IOCTL_I915_OVERLAY_ATTRS),
357 #ifdef DRM_IOCTL_I915_SET_SPRITE_COLORKEY
358 IOCTL(DRM_IOCTL_I915_SET_SPRITE_COLORKEY),
359 #endif
360 #ifdef DRM_IOCTL_I915_GET_SPRITE_COLORKEY
361 IOCTL(DRM_IOCTL_I915_GET_SPRITE_COLORKEY),
362 #endif
363 #ifdef DRM_IOCTL_I915_GEM_WAIT
364 IOCTL(DRM_IOCTL_I915_GEM_WAIT),
365 #endif
366 #ifdef DRM_IOCTL_I915_GEM_CONTEXT_CREATE
367 IOCTL(DRM_IOCTL_I915_GEM_CONTEXT_CREATE),
368 #endif
369 #ifdef DRM_IOCTL_I915_GEM_CONTEXT_DESTROY
370 IOCTL(DRM_IOCTL_I915_GEM_CONTEXT_DESTROY),
371 #endif
372 #ifdef DRM_IOCTL_I915_REG_READ
373 IOCTL(DRM_IOCTL_I915_REG_READ),
374 #endif
376 /* mga_drm.h */
377 IOCTL(DRM_IOCTL_MGA_INIT),
378 IOCTL(DRM_IOCTL_MGA_FLUSH),
379 IOCTL(DRM_IOCTL_MGA_RESET),
380 IOCTL(DRM_IOCTL_MGA_SWAP),
381 IOCTL(DRM_IOCTL_MGA_CLEAR),
382 IOCTL(DRM_IOCTL_MGA_VERTEX),
383 IOCTL(DRM_IOCTL_MGA_INDICES),
384 IOCTL(DRM_IOCTL_MGA_ILOAD),
385 IOCTL(DRM_IOCTL_MGA_BLIT),
386 IOCTL(DRM_IOCTL_MGA_GETPARAM),
387 IOCTL(DRM_IOCTL_MGA_SET_FENCE),
388 IOCTL(DRM_IOCTL_MGA_WAIT_FENCE),
389 IOCTL(DRM_IOCTL_MGA_DMA_BOOTSTRAP),
391 /* nouveau_drm.h */
392 IOCTL(DRM_IOCTL_NOUVEAU_GETPARAM),
393 IOCTL(DRM_IOCTL_NOUVEAU_SETPARAM),
394 IOCTL(DRM_IOCTL_NOUVEAU_CHANNEL_ALLOC),
395 IOCTL(DRM_IOCTL_NOUVEAU_CHANNEL_FREE),
396 IOCTL(DRM_IOCTL_NOUVEAU_GROBJ_ALLOC),
397 IOCTL(DRM_IOCTL_NOUVEAU_NOTIFIEROBJ_ALLOC),
398 IOCTL(DRM_IOCTL_NOUVEAU_GPUOBJ_FREE),
399 #ifdef DRM_IOCTL_NOUVEAU_GEM_NEW
400 IOCTL(DRM_IOCTL_NOUVEAU_GEM_NEW),
401 #endif
402 #ifdef DRM_IOCTL_NOUVEAU_GEM_PUSHBUF
403 IOCTL(DRM_IOCTL_NOUVEAU_GEM_PUSHBUF),
404 #endif
405 #ifdef DRM_IOCTL_NOUVEAU_GEM_CPU_PREP
406 IOCTL(DRM_IOCTL_NOUVEAU_GEM_CPU_PREP),
407 #endif
408 #ifdef DRM_IOCTL_NOUVEAU_GEM_CPU_FINI
409 IOCTL(DRM_IOCTL_NOUVEAU_GEM_CPU_FINI),
410 #endif
411 #ifdef DRM_IOCTL_NOUVEAU_GEM_INFO
412 IOCTL(DRM_IOCTL_NOUVEAU_GEM_INFO),
413 #endif
415 /* r128_drm.h */
416 IOCTL(DRM_IOCTL_R128_INIT),
417 IOCTL(DRM_IOCTL_R128_CCE_START),
418 IOCTL(DRM_IOCTL_R128_CCE_STOP),
419 IOCTL(DRM_IOCTL_R128_CCE_RESET),
420 IOCTL(DRM_IOCTL_R128_CCE_IDLE),
421 IOCTL(DRM_IOCTL_R128_RESET),
422 IOCTL(DRM_IOCTL_R128_SWAP),
423 IOCTL(DRM_IOCTL_R128_CLEAR),
424 IOCTL(DRM_IOCTL_R128_VERTEX),
425 IOCTL(DRM_IOCTL_R128_INDICES),
426 IOCTL(DRM_IOCTL_R128_BLIT),
427 IOCTL(DRM_IOCTL_R128_DEPTH),
428 IOCTL(DRM_IOCTL_R128_STIPPLE),
429 IOCTL(DRM_IOCTL_R128_INDIRECT),
430 IOCTL(DRM_IOCTL_R128_FULLSCREEN),
431 IOCTL(DRM_IOCTL_R128_GETPARAM),
432 IOCTL(DRM_IOCTL_R128_FLIP),
434 /* radeon_drm.h */
435 IOCTL(DRM_IOCTL_RADEON_CP_INIT),
436 IOCTL(DRM_IOCTL_RADEON_CP_START),
437 IOCTL(DRM_IOCTL_RADEON_CP_STOP),
438 IOCTL(DRM_IOCTL_RADEON_CP_RESET),
439 IOCTL(DRM_IOCTL_RADEON_CP_IDLE),
440 IOCTL(DRM_IOCTL_RADEON_RESET),
441 IOCTL(DRM_IOCTL_RADEON_FULLSCREEN),
442 IOCTL(DRM_IOCTL_RADEON_SWAP),
443 IOCTL(DRM_IOCTL_RADEON_CLEAR),
444 IOCTL(DRM_IOCTL_RADEON_VERTEX),
445 IOCTL(DRM_IOCTL_RADEON_INDICES),
446 IOCTL(DRM_IOCTL_RADEON_STIPPLE),
447 IOCTL(DRM_IOCTL_RADEON_INDIRECT),
448 IOCTL(DRM_IOCTL_RADEON_TEXTURE),
449 IOCTL(DRM_IOCTL_RADEON_VERTEX2),
450 IOCTL(DRM_IOCTL_RADEON_CMDBUF),
451 IOCTL(DRM_IOCTL_RADEON_GETPARAM),
452 IOCTL(DRM_IOCTL_RADEON_FLIP),
453 IOCTL(DRM_IOCTL_RADEON_ALLOC),
454 IOCTL(DRM_IOCTL_RADEON_FREE),
455 IOCTL(DRM_IOCTL_RADEON_INIT_HEAP),
456 IOCTL(DRM_IOCTL_RADEON_IRQ_EMIT),
457 IOCTL(DRM_IOCTL_RADEON_IRQ_WAIT),
458 IOCTL(DRM_IOCTL_RADEON_CP_RESUME),
459 IOCTL(DRM_IOCTL_RADEON_SETPARAM),
460 IOCTL(DRM_IOCTL_RADEON_SURF_ALLOC),
461 IOCTL(DRM_IOCTL_RADEON_SURF_FREE),
462 IOCTL(DRM_IOCTL_RADEON_GEM_INFO),
463 IOCTL(DRM_IOCTL_RADEON_GEM_CREATE),
464 IOCTL(DRM_IOCTL_RADEON_GEM_MMAP),
465 IOCTL(DRM_IOCTL_RADEON_GEM_PREAD),
466 IOCTL(DRM_IOCTL_RADEON_GEM_PWRITE),
467 IOCTL(DRM_IOCTL_RADEON_GEM_SET_DOMAIN),
468 IOCTL(DRM_IOCTL_RADEON_GEM_WAIT_IDLE),
469 IOCTL(DRM_IOCTL_RADEON_CS),
470 IOCTL(DRM_IOCTL_RADEON_INFO),
471 #ifdef DRM_IOCTL_RADEON_GEM_SET_TILING
472 IOCTL(DRM_IOCTL_RADEON_GEM_SET_TILING),
473 #endif
474 #ifdef DRM_IOCTL_RADEON_GEM_GET_TILING
475 IOCTL(DRM_IOCTL_RADEON_GEM_GET_TILING),
476 #endif
477 IOCTL(DRM_IOCTL_RADEON_GEM_BUSY),
478 #ifdef DRM_IOCTL_RADEON_GEM_VA
479 IOCTL(DRM_IOCTL_RADEON_GEM_VA),
480 #endif
482 /* savage_drm.h */
483 #ifdef DRM_IOCTL_SAVAGE_BCI_INIT
484 IOCTL(DRM_IOCTL_SAVAGE_BCI_INIT),
485 #endif
486 #ifdef DRM_IOCTL_SAVAGE_BCI_CMDBUF
487 IOCTL(DRM_IOCTL_SAVAGE_BCI_CMDBUF),
488 #endif
489 #ifdef DRM_IOCTL_SAVAGE_BCI_EVENT_EMIT
490 IOCTL(DRM_IOCTL_SAVAGE_BCI_EVENT_EMIT),
491 #endif
492 #ifdef DRM_IOCTL_SAVAGE_BCI_EVENT_WAIT
493 IOCTL(DRM_IOCTL_SAVAGE_BCI_EVENT_WAIT),
494 #endif
496 /* sis_drm.h */
497 IOCTL(DRM_IOCTL_SIS_FB_ALLOC),
498 IOCTL(DRM_IOCTL_SIS_FB_FREE),
499 IOCTL(DRM_IOCTL_SIS_AGP_INIT),
500 IOCTL(DRM_IOCTL_SIS_AGP_ALLOC),
501 IOCTL(DRM_IOCTL_SIS_AGP_FREE),
502 IOCTL(DRM_IOCTL_SIS_FB_INIT),
504 /* via_drm.h */
506 IOCTL(DRM_IOCTL_VIA_ALLOCMEM),
507 IOCTL(DRM_IOCTL_VIA_FREEMEM),
508 IOCTL(DRM_IOCTL_VIA_AGP_INIT),
509 IOCTL(DRM_IOCTL_VIA_FB_INIT),
510 IOCTL(DRM_IOCTL_VIA_MAP_INIT),
511 IOCTL(DRM_IOCTL_VIA_DEC_FUTEX),
512 IOCTL(DRM_IOCTL_VIA_DMA_INIT),
513 IOCTL(DRM_IOCTL_VIA_CMDBUFFER),
514 IOCTL(DRM_IOCTL_VIA_FLUSH),
515 IOCTL(DRM_IOCTL_VIA_PCICMD),
516 IOCTL(DRM_IOCTL_VIA_CMDBUF_SIZE),
517 IOCTL(DRM_IOCTL_VIA_WAIT_IRQ),
518 IOCTL(DRM_IOCTL_VIA_DMA_BLIT),
519 IOCTL(DRM_IOCTL_VIA_BLIT_SYNC),
523 static const char *const drm_devs[] = {
524 "drm",
527 static const struct ioctl_group drm_grp = {
528 .devtype = DEV_CHAR,
529 .devs = drm_devs,
530 .devs_cnt = ARRAY_SIZE(drm_devs),
531 .sanitise = pick_random_ioctl,
532 .ioctls = drm_ioctls,
533 .ioctls_cnt = ARRAY_SIZE(drm_ioctls),
536 REG_IOCTL_GROUP(drm_grp)
538 #endif /* USE_DRM */