Blame view
include/drm/drm.h
20.7 KB
1da177e4c Linux-2.6.12-rc2 |
1 |
/** |
b5e89ed53 drm: lindent the ... |
2 |
* \file drm.h |
1da177e4c Linux-2.6.12-rc2 |
3 |
* Header for the Direct Rendering Manager |
b5e89ed53 drm: lindent the ... |
4 |
* |
1da177e4c Linux-2.6.12-rc2 |
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
* \author Rickard E. (Rik) Faith <faith@valinux.com> * * \par Acknowledgments: * Dec 1999, Richard Henderson <rth@twiddle.net>, move to generic \c cmpxchg. */ /* * Copyright 1999 Precision Insight, Inc., Cedar Park, Texas. * Copyright 2000 VA Linux Systems, Inc., Sunnyvale, California. * All rights reserved. * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), * to deal in the Software without restriction, including without limitation * the rights to use, copy, modify, merge, publish, distribute, sublicense, * and/or sell copies of the Software, and to permit persons to whom the * Software is furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice (including the next * paragraph) shall be included in all copies or substantial portions of the * Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL * VA LINUX SYSTEMS AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR * OTHER DEALINGS IN THE SOFTWARE. */ |
1da177e4c Linux-2.6.12-rc2 |
35 36 37 38 |
#ifndef _DRM_H_ #define _DRM_H_ #if defined(__linux__) |
850eb83a6 drm: wrap config.... |
39 |
#if defined(__KERNEL__) |
850eb83a6 drm: wrap config.... |
40 |
#endif |
1da177e4c Linux-2.6.12-rc2 |
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
#include <asm/ioctl.h> /* For _IO* macros */ #define DRM_IOCTL_NR(n) _IOC_NR(n) #define DRM_IOC_VOID _IOC_NONE #define DRM_IOC_READ _IOC_READ #define DRM_IOC_WRITE _IOC_WRITE #define DRM_IOC_READWRITE _IOC_READ|_IOC_WRITE #define DRM_IOC(dir, group, nr, size) _IOC(dir, group, nr, size) #elif defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) #if defined(__FreeBSD__) && defined(IN_MODULE) /* Prevent name collision when including sys/ioccom.h */ #undef ioctl #include <sys/ioccom.h> #define ioctl(a,b,c) xf86ioctl(a,b,c) #else #include <sys/ioccom.h> |
b5e89ed53 drm: lindent the ... |
56 |
#endif /* __FreeBSD__ && xf86ioctl */ |
1da177e4c Linux-2.6.12-rc2 |
57 58 59 60 61 62 63 |
#define DRM_IOCTL_NR(n) ((n) & 0xff) #define DRM_IOC_VOID IOC_VOID #define DRM_IOC_READ IOC_OUT #define DRM_IOC_WRITE IOC_IN #define DRM_IOC_READWRITE IOC_INOUT #define DRM_IOC(dir, group, nr, size) _IOC(dir, group, nr, size) #endif |
1da177e4c Linux-2.6.12-rc2 |
64 65 |
#define DRM_MAJOR 226 #define DRM_MAX_MINOR 15 |
b589ee594 drm: remove XFREE... |
66 |
|
1da177e4c Linux-2.6.12-rc2 |
67 68 69 70 |
#define DRM_NAME "drm" /**< Name in kernel, /dev, and /proc */ #define DRM_MIN_ORDER 5 /**< At least 2^5 bytes = 32 bytes */ #define DRM_MAX_ORDER 22 /**< Up to 2^22 bytes = 4MB */ #define DRM_RAM_PERCENT 10 /**< How much system ram can we lock? */ |
b3a80a223 drm: update lock ... |
71 72 |
#define _DRM_LOCK_HELD 0x80000000U /**< Hardware lock is held */ #define _DRM_LOCK_CONT 0x40000000U /**< Hardware lock is contended */ |
1da177e4c Linux-2.6.12-rc2 |
73 74 75 |
#define _DRM_LOCK_IS_HELD(lock) ((lock) & _DRM_LOCK_HELD) #define _DRM_LOCK_IS_CONT(lock) ((lock) & _DRM_LOCK_CONT) #define _DRM_LOCKING_CONTEXT(lock) ((lock) & ~(_DRM_LOCK_HELD|_DRM_LOCK_CONT)) |
b5e89ed53 drm: lindent the ... |
76 77 78 79 |
typedef unsigned int drm_handle_t; typedef unsigned int drm_context_t; typedef unsigned int drm_drawable_t; typedef unsigned int drm_magic_t; |
1da177e4c Linux-2.6.12-rc2 |
80 81 82 |
/** * Cliprect. |
b5e89ed53 drm: lindent the ... |
83 |
* |
1da177e4c Linux-2.6.12-rc2 |
84 85 86 87 88 89 90 |
* \warning: If you change this structure, make sure you change * XF86DRIClipRectRec in the server as well * * ote KW: Actually it's illegal to change either for * backwards-compatibility reasons. */ |
c60ce623b drm: remove a bun... |
91 |
struct drm_clip_rect { |
b5e89ed53 drm: lindent the ... |
92 93 94 95 |
unsigned short x1; unsigned short y1; unsigned short x2; unsigned short y2; |
c60ce623b drm: remove a bun... |
96 |
}; |
1da177e4c Linux-2.6.12-rc2 |
97 |
|
1da177e4c Linux-2.6.12-rc2 |
98 |
/** |
bea5679f9 drm: Add support ... |
99 100 |
* Drawable information. */ |
c60ce623b drm: remove a bun... |
101 |
struct drm_drawable_info { |
bea5679f9 drm: Add support ... |
102 |
unsigned int num_rects; |
c60ce623b drm: remove a bun... |
103 104 |
struct drm_clip_rect *rects; }; |
bea5679f9 drm: Add support ... |
105 106 |
/** |
1da177e4c Linux-2.6.12-rc2 |
107 108 |
* Texture region, */ |
c60ce623b drm: remove a bun... |
109 |
struct drm_tex_region { |
b5e89ed53 drm: lindent the ... |
110 111 112 113 114 |
unsigned char next; unsigned char prev; unsigned char in_use; unsigned char padding; unsigned int age; |
c60ce623b drm: remove a bun... |
115 |
}; |
1da177e4c Linux-2.6.12-rc2 |
116 117 118 119 120 121 122 123 |
/** * Hardware lock. * * The lock structure is a simple cache-line aligned integer. To avoid * processor bus contention on a multiprocessor system, there should not be any * other data stored in the same cache line. */ |
c60ce623b drm: remove a bun... |
124 |
struct drm_hw_lock { |
1da177e4c Linux-2.6.12-rc2 |
125 |
__volatile__ unsigned int lock; /**< lock variable */ |
b5e89ed53 drm: lindent the ... |
126 |
char padding[60]; /**< Pad to cache line */ |
c60ce623b drm: remove a bun... |
127 |
}; |
1da177e4c Linux-2.6.12-rc2 |
128 |
|
1da177e4c Linux-2.6.12-rc2 |
129 130 |
/** * DRM_IOCTL_VERSION ioctl argument type. |
b5e89ed53 drm: lindent the ... |
131 |
* |
1da177e4c Linux-2.6.12-rc2 |
132 133 |
* \sa drmGetVersion(). */ |
c60ce623b drm: remove a bun... |
134 |
struct drm_version { |
b5e89ed53 drm: lindent the ... |
135 136 137 |
int version_major; /**< Major version */ int version_minor; /**< Minor version */ int version_patchlevel; /**< Patch level */ |
1da177e4c Linux-2.6.12-rc2 |
138 |
size_t name_len; /**< Length of name buffer */ |
b5e89ed53 drm: lindent the ... |
139 |
char __user *name; /**< Name of driver */ |
1da177e4c Linux-2.6.12-rc2 |
140 |
size_t date_len; /**< Length of date buffer */ |
b5e89ed53 drm: lindent the ... |
141 |
char __user *date; /**< User-space buffer to hold date */ |
1da177e4c Linux-2.6.12-rc2 |
142 |
size_t desc_len; /**< Length of desc buffer */ |
b5e89ed53 drm: lindent the ... |
143 |
char __user *desc; /**< User-space buffer to hold desc */ |
c60ce623b drm: remove a bun... |
144 |
}; |
1da177e4c Linux-2.6.12-rc2 |
145 |
|
1da177e4c Linux-2.6.12-rc2 |
146 147 148 149 150 |
/** * DRM_IOCTL_GET_UNIQUE ioctl argument type. * * \sa drmGetBusid() and drmSetBusId(). */ |
c60ce623b drm: remove a bun... |
151 |
struct drm_unique { |
1da177e4c Linux-2.6.12-rc2 |
152 |
size_t unique_len; /**< Length of unique */ |
b5e89ed53 drm: lindent the ... |
153 |
char __user *unique; /**< Unique name for driver instantiation */ |
c60ce623b drm: remove a bun... |
154 |
}; |
1da177e4c Linux-2.6.12-rc2 |
155 |
|
c60ce623b drm: remove a bun... |
156 |
struct drm_list { |
b5e89ed53 drm: lindent the ... |
157 |
int count; /**< Length of user-space structures */ |
c60ce623b drm: remove a bun... |
158 159 |
struct drm_version __user *version; }; |
1da177e4c Linux-2.6.12-rc2 |
160 |
|
c60ce623b drm: remove a bun... |
161 |
struct drm_block { |
b5e89ed53 drm: lindent the ... |
162 |
int unused; |
c60ce623b drm: remove a bun... |
163 |
}; |
1da177e4c Linux-2.6.12-rc2 |
164 |
|
1da177e4c Linux-2.6.12-rc2 |
165 166 167 168 169 |
/** * DRM_IOCTL_CONTROL ioctl argument type. * * \sa drmCtlInstHandler() and drmCtlUninstHandler(). */ |
c60ce623b drm: remove a bun... |
170 |
struct drm_control { |
1da177e4c Linux-2.6.12-rc2 |
171 172 173 174 175 |
enum { DRM_ADD_COMMAND, DRM_RM_COMMAND, DRM_INST_HANDLER, DRM_UNINST_HANDLER |
b5e89ed53 drm: lindent the ... |
176 177 |
} func; int irq; |
c60ce623b drm: remove a bun... |
178 |
}; |
1da177e4c Linux-2.6.12-rc2 |
179 |
|
1da177e4c Linux-2.6.12-rc2 |
180 181 182 |
/** * Type of memory to map. */ |
c60ce623b drm: remove a bun... |
183 |
enum drm_map_type { |
b5e89ed53 drm: lindent the ... |
184 185 186 187 |
_DRM_FRAME_BUFFER = 0, /**< WC (no caching), no core dump */ _DRM_REGISTERS = 1, /**< no caching, no core dump */ _DRM_SHM = 2, /**< shared, cached */ _DRM_AGP = 3, /**< AGP/GART */ |
2d0f9eaff drm: add _DRM_CON... |
188 |
_DRM_SCATTER_GATHER = 4, /**< Scatter/gather memory for PCI DMA */ |
b5e89ed53 drm: lindent the ... |
189 |
_DRM_CONSISTENT = 5, /**< Consistent memory for PCI DMA */ |
c60ce623b drm: remove a bun... |
190 |
}; |
1da177e4c Linux-2.6.12-rc2 |
191 |
|
1da177e4c Linux-2.6.12-rc2 |
192 193 194 |
/** * Memory mapping flags. */ |
c60ce623b drm: remove a bun... |
195 |
enum drm_map_flags { |
b5e89ed53 drm: lindent the ... |
196 197 198 199 |
_DRM_RESTRICTED = 0x01, /**< Cannot be mapped to user-virtual */ _DRM_READ_ONLY = 0x02, _DRM_LOCKED = 0x04, /**< shared, cached, locked */ _DRM_KERNEL = 0x08, /**< kernel requires access */ |
1da177e4c Linux-2.6.12-rc2 |
200 |
_DRM_WRITE_COMBINING = 0x10, /**< use write-combining if available */ |
b5e89ed53 drm: lindent the ... |
201 |
_DRM_CONTAINS_LOCK = 0x20, /**< SHM page that contains lock */ |
e3236a117 drm: add _DRM_DRI... |
202 203 |
_DRM_REMOVABLE = 0x40, /**< Removable mapping */ _DRM_DRIVER = 0x80 /**< Managed by driver */ |
c60ce623b drm: remove a bun... |
204 |
}; |
1da177e4c Linux-2.6.12-rc2 |
205 |
|
c60ce623b drm: remove a bun... |
206 |
struct drm_ctx_priv_map { |
b5e89ed53 drm: lindent the ... |
207 208 |
unsigned int ctx_id; /**< Context requesting private mapping */ void *handle; /**< Handle of map */ |
c60ce623b drm: remove a bun... |
209 |
}; |
1da177e4c Linux-2.6.12-rc2 |
210 |
|
1da177e4c Linux-2.6.12-rc2 |
211 212 213 214 215 216 |
/** * DRM_IOCTL_GET_MAP, DRM_IOCTL_ADD_MAP and DRM_IOCTL_RM_MAP ioctls * argument type. * * \sa drmAddMap(). */ |
c60ce623b drm: remove a bun... |
217 |
struct drm_map { |
b5e89ed53 drm: lindent the ... |
218 219 |
unsigned long offset; /**< Requested physical address (0 for SAREA)*/ unsigned long size; /**< Requested physical size (bytes) */ |
c60ce623b drm: remove a bun... |
220 221 |
enum drm_map_type type; /**< Type of memory to map */ enum drm_map_flags flags; /**< Flags */ |
b5e89ed53 drm: lindent the ... |
222 |
void *handle; /**< User-space: "Handle" to pass to mmap() */ |
1da177e4c Linux-2.6.12-rc2 |
223 |
/**< Kernel-space: kernel-virtual address */ |
b5e89ed53 drm: lindent the ... |
224 225 |
int mtrr; /**< MTRR slot used */ /* Private data */ |
c60ce623b drm: remove a bun... |
226 |
}; |
1da177e4c Linux-2.6.12-rc2 |
227 |
|
1da177e4c Linux-2.6.12-rc2 |
228 229 230 |
/** * DRM_IOCTL_GET_CLIENT ioctl argument type. */ |
c60ce623b drm: remove a bun... |
231 |
struct drm_client { |
b5e89ed53 drm: lindent the ... |
232 233 234 235 236 237 |
int idx; /**< Which client desired? */ int auth; /**< Is client authenticated? */ unsigned long pid; /**< Process ID */ unsigned long uid; /**< User ID */ unsigned long magic; /**< Magic */ unsigned long iocs; /**< Ioctl count */ |
c60ce623b drm: remove a bun... |
238 |
}; |
1da177e4c Linux-2.6.12-rc2 |
239 |
|
c60ce623b drm: remove a bun... |
240 |
enum drm_stat_type { |
1da177e4c Linux-2.6.12-rc2 |
241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 |
_DRM_STAT_LOCK, _DRM_STAT_OPENS, _DRM_STAT_CLOSES, _DRM_STAT_IOCTLS, _DRM_STAT_LOCKS, _DRM_STAT_UNLOCKS, _DRM_STAT_VALUE, /**< Generic value */ _DRM_STAT_BYTE, /**< Generic byte counter (1024bytes/K) */ _DRM_STAT_COUNT, /**< Generic non-byte counter (1000/k) */ _DRM_STAT_IRQ, /**< IRQ */ _DRM_STAT_PRIMARY, /**< Primary DMA bytes */ _DRM_STAT_SECONDARY, /**< Secondary DMA bytes */ _DRM_STAT_DMA, /**< DMA */ _DRM_STAT_SPECIAL, /**< Special DMA (e.g., priority or polled) */ _DRM_STAT_MISSED /**< Missed DMA opportunity */ |
b5e89ed53 drm: lindent the ... |
257 |
/* Add to the *END* of the list */ |
c60ce623b drm: remove a bun... |
258 |
}; |
1da177e4c Linux-2.6.12-rc2 |
259 |
|
1da177e4c Linux-2.6.12-rc2 |
260 261 262 |
/** * DRM_IOCTL_GET_STATS ioctl argument type. */ |
c60ce623b drm: remove a bun... |
263 |
struct drm_stats { |
1da177e4c Linux-2.6.12-rc2 |
264 265 |
unsigned long count; struct { |
b5e89ed53 drm: lindent the ... |
266 |
unsigned long value; |
c60ce623b drm: remove a bun... |
267 |
enum drm_stat_type type; |
1da177e4c Linux-2.6.12-rc2 |
268 |
} data[15]; |
c60ce623b drm: remove a bun... |
269 |
}; |
1da177e4c Linux-2.6.12-rc2 |
270 |
|
1da177e4c Linux-2.6.12-rc2 |
271 272 273 |
/** * Hardware locking flags. */ |
c60ce623b drm: remove a bun... |
274 |
enum drm_lock_flags { |
b5e89ed53 drm: lindent the ... |
275 276 277 278 279 280 281 |
_DRM_LOCK_READY = 0x01, /**< Wait until hardware is ready for DMA */ _DRM_LOCK_QUIESCENT = 0x02, /**< Wait until hardware quiescent */ _DRM_LOCK_FLUSH = 0x04, /**< Flush this context's DMA queue first */ _DRM_LOCK_FLUSH_ALL = 0x08, /**< Flush all DMA queues first */ /* These *HALT* flags aren't supported yet -- they will be used to support the full-screen DGA-like mode. */ |
1da177e4c Linux-2.6.12-rc2 |
282 283 |
_DRM_HALT_ALL_QUEUES = 0x10, /**< Halt all current and future queues */ _DRM_HALT_CUR_QUEUES = 0x20 /**< Halt all current queues */ |
c60ce623b drm: remove a bun... |
284 |
}; |
1da177e4c Linux-2.6.12-rc2 |
285 |
|
1da177e4c Linux-2.6.12-rc2 |
286 287 |
/** * DRM_IOCTL_LOCK, DRM_IOCTL_UNLOCK and DRM_IOCTL_FINISH ioctl argument type. |
b5e89ed53 drm: lindent the ... |
288 |
* |
1da177e4c Linux-2.6.12-rc2 |
289 290 |
* \sa drmGetLock() and drmUnlock(). */ |
c60ce623b drm: remove a bun... |
291 |
struct drm_lock { |
b5e89ed53 drm: lindent the ... |
292 |
int context; |
c60ce623b drm: remove a bun... |
293 294 |
enum drm_lock_flags flags; }; |
1da177e4c Linux-2.6.12-rc2 |
295 |
|
1da177e4c Linux-2.6.12-rc2 |
296 297 298 |
/** * DMA flags * |
b5e89ed53 drm: lindent the ... |
299 |
* \warning |
1da177e4c Linux-2.6.12-rc2 |
300 301 302 303 |
* These values \e must match xf86drm.h. * * \sa drm_dma. */ |
c60ce623b drm: remove a bun... |
304 |
enum drm_dma_flags { |
b5e89ed53 drm: lindent the ... |
305 306 |
/* Flags for DMA buffer dispatch */ _DRM_DMA_BLOCK = 0x01, /**< |
1da177e4c Linux-2.6.12-rc2 |
307 |
* Block until buffer dispatched. |
b5e89ed53 drm: lindent the ... |
308 |
* |
1da177e4c Linux-2.6.12-rc2 |
309 310 311 312 313 314 315 316 317 |
* ote The buffer may not yet have * been processed by the hardware -- * getting a hardware lock with the * hardware quiescent will ensure * that the buffer has been * processed. */ _DRM_DMA_WHILE_LOCKED = 0x02, /**< Dispatch while lock held */ |
b5e89ed53 drm: lindent the ... |
318 |
_DRM_DMA_PRIORITY = 0x04, /**< High priority dispatch */ |
1da177e4c Linux-2.6.12-rc2 |
319 |
|
b5e89ed53 drm: lindent the ... |
320 321 322 323 |
/* Flags for DMA buffer request */ _DRM_DMA_WAIT = 0x10, /**< Wait for free buffers */ _DRM_DMA_SMALLER_OK = 0x20, /**< Smaller-than-requested buffers OK */ _DRM_DMA_LARGER_OK = 0x40 /**< Larger-than-requested buffers OK */ |
c60ce623b drm: remove a bun... |
324 |
}; |
1da177e4c Linux-2.6.12-rc2 |
325 |
|
1da177e4c Linux-2.6.12-rc2 |
326 327 328 329 330 |
/** * DRM_IOCTL_ADD_BUFS and DRM_IOCTL_MARK_BUFS ioctl argument type. * * \sa drmAddBufs(). */ |
c60ce623b drm: remove a bun... |
331 |
struct drm_buf_desc { |
b5e89ed53 drm: lindent the ... |
332 333 334 335 |
int count; /**< Number of buffers of this size */ int size; /**< Size in bytes */ int low_mark; /**< Low water mark */ int high_mark; /**< High water mark */ |
1da177e4c Linux-2.6.12-rc2 |
336 |
enum { |
b5e89ed53 drm: lindent the ... |
337 338 339 |
_DRM_PAGE_ALIGN = 0x01, /**< Align on page boundaries for DMA */ _DRM_AGP_BUFFER = 0x02, /**< Buffer is in AGP space */ _DRM_SG_BUFFER = 0x04, /**< Scatter/gather memory buffer */ |
3417f33e7 drm: add flag for... |
340 341 |
_DRM_FB_BUFFER = 0x08, /**< Buffer is in frame buffer */ _DRM_PCI_BUFFER_RO = 0x10 /**< Map PCI DMA buffer read-only */ |
b5e89ed53 drm: lindent the ... |
342 343 |
} flags; unsigned long agp_start; /**< |
1da177e4c Linux-2.6.12-rc2 |
344 345 346 |
* Start address of where the AGP buffers are * in the AGP aperture */ |
c60ce623b drm: remove a bun... |
347 |
}; |
1da177e4c Linux-2.6.12-rc2 |
348 |
|
1da177e4c Linux-2.6.12-rc2 |
349 350 351 |
/** * DRM_IOCTL_INFO_BUFS ioctl argument type. */ |
c60ce623b drm: remove a bun... |
352 |
struct drm_buf_info { |
b5e89ed53 drm: lindent the ... |
353 |
int count; /**< Entries in list */ |
c60ce623b drm: remove a bun... |
354 355 |
struct drm_buf_desc __user *list; }; |
1da177e4c Linux-2.6.12-rc2 |
356 |
|
1da177e4c Linux-2.6.12-rc2 |
357 358 359 |
/** * DRM_IOCTL_FREE_BUFS ioctl argument type. */ |
c60ce623b drm: remove a bun... |
360 |
struct drm_buf_free { |
b5e89ed53 drm: lindent the ... |
361 362 |
int count; int __user *list; |
c60ce623b drm: remove a bun... |
363 |
}; |
1da177e4c Linux-2.6.12-rc2 |
364 |
|
1da177e4c Linux-2.6.12-rc2 |
365 366 367 368 369 |
/** * Buffer information * * \sa drm_buf_map. */ |
c60ce623b drm: remove a bun... |
370 |
struct drm_buf_pub { |
b5e89ed53 drm: lindent the ... |
371 372 373 374 |
int idx; /**< Index into the master buffer list */ int total; /**< Buffer size */ int used; /**< Amount of buffer in use (for DMA) */ void __user *address; /**< Address of buffer */ |
c60ce623b drm: remove a bun... |
375 |
}; |
1da177e4c Linux-2.6.12-rc2 |
376 |
|
1da177e4c Linux-2.6.12-rc2 |
377 378 379 |
/** * DRM_IOCTL_MAP_BUFS ioctl argument type. */ |
c60ce623b drm: remove a bun... |
380 |
struct drm_buf_map { |
b5e89ed53 drm: lindent the ... |
381 382 |
int count; /**< Length of the buffer list */ void __user *virtual; /**< Mmap'd area in user-virtual */ |
c60ce623b drm: remove a bun... |
383 384 |
struct drm_buf_pub __user *list; /**< Buffer information */ }; |
1da177e4c Linux-2.6.12-rc2 |
385 |
|
1da177e4c Linux-2.6.12-rc2 |
386 387 388 389 390 391 392 |
/** * DRM_IOCTL_DMA ioctl argument type. * * Indices here refer to the offset into the buffer list in drm_buf_get. * * \sa drmDMA(). */ |
c60ce623b drm: remove a bun... |
393 |
struct drm_dma { |
b5e89ed53 drm: lindent the ... |
394 395 396 397 |
int context; /**< Context handle */ int send_count; /**< Number of buffers to send */ int __user *send_indices; /**< List of handles to buffers */ int __user *send_sizes; /**< Lengths of data to send */ |
c60ce623b drm: remove a bun... |
398 |
enum drm_dma_flags flags; /**< Flags */ |
b5e89ed53 drm: lindent the ... |
399 400 401 402 403 |
int request_count; /**< Number of buffers requested */ int request_size; /**< Desired size for buffers */ int __user *request_indices; /**< Buffer information */ int __user *request_sizes; int granted_count; /**< Number of buffers granted */ |
c60ce623b drm: remove a bun... |
404 |
}; |
1da177e4c Linux-2.6.12-rc2 |
405 |
|
c60ce623b drm: remove a bun... |
406 |
enum drm_ctx_flags { |
1da177e4c Linux-2.6.12-rc2 |
407 |
_DRM_CONTEXT_PRESERVED = 0x01, |
b5e89ed53 drm: lindent the ... |
408 |
_DRM_CONTEXT_2DONLY = 0x02 |
c60ce623b drm: remove a bun... |
409 |
}; |
1da177e4c Linux-2.6.12-rc2 |
410 |
|
1da177e4c Linux-2.6.12-rc2 |
411 412 413 414 415 |
/** * DRM_IOCTL_ADD_CTX ioctl argument type. * * \sa drmCreateContext() and drmDestroyContext(). */ |
c60ce623b drm: remove a bun... |
416 |
struct drm_ctx { |
b5e89ed53 drm: lindent the ... |
417 |
drm_context_t handle; |
c60ce623b drm: remove a bun... |
418 419 |
enum drm_ctx_flags flags; }; |
1da177e4c Linux-2.6.12-rc2 |
420 |
|
1da177e4c Linux-2.6.12-rc2 |
421 422 423 |
/** * DRM_IOCTL_RES_CTX ioctl argument type. */ |
c60ce623b drm: remove a bun... |
424 |
struct drm_ctx_res { |
b5e89ed53 drm: lindent the ... |
425 |
int count; |
c60ce623b drm: remove a bun... |
426 427 |
struct drm_ctx __user *contexts; }; |
1da177e4c Linux-2.6.12-rc2 |
428 |
|
1da177e4c Linux-2.6.12-rc2 |
429 430 431 |
/** * DRM_IOCTL_ADD_DRAW and DRM_IOCTL_RM_DRAW ioctl argument type. */ |
c60ce623b drm: remove a bun... |
432 |
struct drm_draw { |
b5e89ed53 drm: lindent the ... |
433 |
drm_drawable_t handle; |
c60ce623b drm: remove a bun... |
434 |
}; |
1da177e4c Linux-2.6.12-rc2 |
435 |
|
1da177e4c Linux-2.6.12-rc2 |
436 |
/** |
bea5679f9 drm: Add support ... |
437 438 439 440 441 |
* DRM_IOCTL_UPDATE_DRAW ioctl argument type. */ typedef enum { DRM_DRAWABLE_CLIPRECTS, } drm_drawable_info_type_t; |
c60ce623b drm: remove a bun... |
442 |
struct drm_update_draw { |
bea5679f9 drm: Add support ... |
443 444 445 446 |
drm_drawable_t handle; unsigned int type; unsigned int num; unsigned long long data; |
c60ce623b drm: remove a bun... |
447 |
}; |
bea5679f9 drm: Add support ... |
448 449 |
/** |
1da177e4c Linux-2.6.12-rc2 |
450 451 |
* DRM_IOCTL_GET_MAGIC and DRM_IOCTL_AUTH_MAGIC ioctl argument type. */ |
c60ce623b drm: remove a bun... |
452 |
struct drm_auth { |
b5e89ed53 drm: lindent the ... |
453 |
drm_magic_t magic; |
c60ce623b drm: remove a bun... |
454 |
}; |
1da177e4c Linux-2.6.12-rc2 |
455 |
|
1da177e4c Linux-2.6.12-rc2 |
456 457 458 459 460 |
/** * DRM_IOCTL_IRQ_BUSID ioctl argument type. * * \sa drmGetInterruptFromBusID(). */ |
c60ce623b drm: remove a bun... |
461 |
struct drm_irq_busid { |
1da177e4c Linux-2.6.12-rc2 |
462 463 464 465 |
int irq; /**< IRQ number */ int busnum; /**< bus number */ int devnum; /**< device number */ int funcnum; /**< function number */ |
c60ce623b drm: remove a bun... |
466 |
}; |
1da177e4c Linux-2.6.12-rc2 |
467 |
|
c60ce623b drm: remove a bun... |
468 |
enum drm_vblank_seq_type { |
b5e89ed53 drm: lindent the ... |
469 470 |
_DRM_VBLANK_ABSOLUTE = 0x0, /**< Wait for specific vblank sequence number */ _DRM_VBLANK_RELATIVE = 0x1, /**< Wait for given number of vblanks */ |
ab285d74e drm: Core vsync: ... |
471 |
_DRM_VBLANK_NEXTONMISS = 0x10000000, /**< If missed, wait for next vblank */ |
776c9443e drm: add support ... |
472 |
_DRM_VBLANK_SECONDARY = 0x20000000, /**< Secondary display controller */ |
b5e89ed53 drm: lindent the ... |
473 |
_DRM_VBLANK_SIGNAL = 0x40000000 /**< Send signal instead of blocking */ |
c60ce623b drm: remove a bun... |
474 |
}; |
1da177e4c Linux-2.6.12-rc2 |
475 |
|
776c9443e drm: add support ... |
476 |
#define _DRM_VBLANK_TYPES_MASK (_DRM_VBLANK_ABSOLUTE | _DRM_VBLANK_RELATIVE) |
ab285d74e drm: Core vsync: ... |
477 478 |
#define _DRM_VBLANK_FLAGS_MASK (_DRM_VBLANK_SIGNAL | _DRM_VBLANK_SECONDARY | \ _DRM_VBLANK_NEXTONMISS) |
1da177e4c Linux-2.6.12-rc2 |
479 |
|
1da177e4c Linux-2.6.12-rc2 |
480 |
struct drm_wait_vblank_request { |
c60ce623b drm: remove a bun... |
481 |
enum drm_vblank_seq_type type; |
1da177e4c Linux-2.6.12-rc2 |
482 483 484 |
unsigned int sequence; unsigned long signal; }; |
1da177e4c Linux-2.6.12-rc2 |
485 |
struct drm_wait_vblank_reply { |
c60ce623b drm: remove a bun... |
486 |
enum drm_vblank_seq_type type; |
1da177e4c Linux-2.6.12-rc2 |
487 488 489 490 |
unsigned int sequence; long tval_sec; long tval_usec; }; |
1da177e4c Linux-2.6.12-rc2 |
491 492 493 494 495 |
/** * DRM_IOCTL_WAIT_VBLANK ioctl argument type. * * \sa drmWaitVBlank(). */ |
c60ce623b drm: remove a bun... |
496 |
union drm_wait_vblank { |
1da177e4c Linux-2.6.12-rc2 |
497 498 |
struct drm_wait_vblank_request request; struct drm_wait_vblank_reply reply; |
c60ce623b drm: remove a bun... |
499 |
}; |
1da177e4c Linux-2.6.12-rc2 |
500 |
|
1da177e4c Linux-2.6.12-rc2 |
501 502 503 504 505 |
/** * DRM_IOCTL_AGP_ENABLE ioctl argument type. * * \sa drmAgpEnable(). */ |
c60ce623b drm: remove a bun... |
506 |
struct drm_agp_mode { |
1da177e4c Linux-2.6.12-rc2 |
507 |
unsigned long mode; /**< AGP mode */ |
c60ce623b drm: remove a bun... |
508 |
}; |
1da177e4c Linux-2.6.12-rc2 |
509 |
|
1da177e4c Linux-2.6.12-rc2 |
510 511 512 513 514 |
/** * DRM_IOCTL_AGP_ALLOC and DRM_IOCTL_AGP_FREE ioctls argument type. * * \sa drmAgpAlloc() and drmAgpFree(). */ |
c60ce623b drm: remove a bun... |
515 |
struct drm_agp_buffer { |
1da177e4c Linux-2.6.12-rc2 |
516 517 |
unsigned long size; /**< In bytes -- will round to page boundary */ unsigned long handle; /**< Used for binding / unbinding */ |
b5e89ed53 drm: lindent the ... |
518 519 |
unsigned long type; /**< Type of memory to allocate */ unsigned long physical; /**< Physical used by i810 */ |
c60ce623b drm: remove a bun... |
520 |
}; |
1da177e4c Linux-2.6.12-rc2 |
521 |
|
1da177e4c Linux-2.6.12-rc2 |
522 523 524 525 526 |
/** * DRM_IOCTL_AGP_BIND and DRM_IOCTL_AGP_UNBIND ioctls argument type. * * \sa drmAgpBind() and drmAgpUnbind(). */ |
c60ce623b drm: remove a bun... |
527 |
struct drm_agp_binding { |
b5e89ed53 drm: lindent the ... |
528 |
unsigned long handle; /**< From drm_agp_buffer */ |
1da177e4c Linux-2.6.12-rc2 |
529 |
unsigned long offset; /**< In bytes -- will round to page boundary */ |
c60ce623b drm: remove a bun... |
530 |
}; |
1da177e4c Linux-2.6.12-rc2 |
531 |
|
1da177e4c Linux-2.6.12-rc2 |
532 533 534 535 536 537 538 |
/** * DRM_IOCTL_AGP_INFO ioctl argument type. * * \sa drmAgpVersionMajor(), drmAgpVersionMinor(), drmAgpGetMode(), * drmAgpBase(), drmAgpSize(), drmAgpMemoryUsed(), drmAgpMemoryAvail(), * drmAgpVendorId() and drmAgpDeviceId(). */ |
c60ce623b drm: remove a bun... |
539 |
struct drm_agp_info { |
b5e89ed53 drm: lindent the ... |
540 541 542 543 544 545 546 547 548 |
int agp_version_major; int agp_version_minor; unsigned long mode; unsigned long aperture_base; /* physical address */ unsigned long aperture_size; /* bytes */ unsigned long memory_allowed; /* bytes */ unsigned long memory_used; /* PCI information */ |
1da177e4c Linux-2.6.12-rc2 |
549 550 |
unsigned short id_vendor; unsigned short id_device; |
c60ce623b drm: remove a bun... |
551 |
}; |
1da177e4c Linux-2.6.12-rc2 |
552 |
|
1da177e4c Linux-2.6.12-rc2 |
553 554 555 |
/** * DRM_IOCTL_SG_ALLOC ioctl argument type. */ |
c60ce623b drm: remove a bun... |
556 |
struct drm_scatter_gather { |
1da177e4c Linux-2.6.12-rc2 |
557 558 |
unsigned long size; /**< In bytes -- will round to page boundary */ unsigned long handle; /**< Used for mapping / unmapping */ |
c60ce623b drm: remove a bun... |
559 |
}; |
1da177e4c Linux-2.6.12-rc2 |
560 561 562 563 |
/** * DRM_IOCTL_SET_VERSION ioctl argument type. */ |
c60ce623b drm: remove a bun... |
564 |
struct drm_set_version { |
1da177e4c Linux-2.6.12-rc2 |
565 566 567 568 |
int drm_di_major; int drm_di_minor; int drm_dd_major; int drm_dd_minor; |
c60ce623b drm: remove a bun... |
569 |
}; |
1da177e4c Linux-2.6.12-rc2 |
570 |
|
1da177e4c Linux-2.6.12-rc2 |
571 572 573 574 575 |
#define DRM_IOCTL_BASE 'd' #define DRM_IO(nr) _IO(DRM_IOCTL_BASE,nr) #define DRM_IOR(nr,type) _IOR(DRM_IOCTL_BASE,nr,type) #define DRM_IOW(nr,type) _IOW(DRM_IOCTL_BASE,nr,type) #define DRM_IOWR(nr,type) _IOWR(DRM_IOCTL_BASE,nr,type) |
c60ce623b drm: remove a bun... |
576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 |
#define DRM_IOCTL_VERSION DRM_IOWR(0x00, struct drm_version) #define DRM_IOCTL_GET_UNIQUE DRM_IOWR(0x01, struct drm_unique) #define DRM_IOCTL_GET_MAGIC DRM_IOR( 0x02, struct drm_auth) #define DRM_IOCTL_IRQ_BUSID DRM_IOWR(0x03, struct drm_irq_busid) #define DRM_IOCTL_GET_MAP DRM_IOWR(0x04, struct drm_map) #define DRM_IOCTL_GET_CLIENT DRM_IOWR(0x05, struct drm_client) #define DRM_IOCTL_GET_STATS DRM_IOR( 0x06, struct drm_stats) #define DRM_IOCTL_SET_VERSION DRM_IOWR(0x07, struct drm_set_version) #define DRM_IOCTL_SET_UNIQUE DRM_IOW( 0x10, struct drm_unique) #define DRM_IOCTL_AUTH_MAGIC DRM_IOW( 0x11, struct drm_auth) #define DRM_IOCTL_BLOCK DRM_IOWR(0x12, struct drm_block) #define DRM_IOCTL_UNBLOCK DRM_IOWR(0x13, struct drm_block) #define DRM_IOCTL_CONTROL DRM_IOW( 0x14, struct drm_control) #define DRM_IOCTL_ADD_MAP DRM_IOWR(0x15, struct drm_map) #define DRM_IOCTL_ADD_BUFS DRM_IOWR(0x16, struct drm_buf_desc) #define DRM_IOCTL_MARK_BUFS DRM_IOW( 0x17, struct drm_buf_desc) #define DRM_IOCTL_INFO_BUFS DRM_IOWR(0x18, struct drm_buf_info) #define DRM_IOCTL_MAP_BUFS DRM_IOWR(0x19, struct drm_buf_map) #define DRM_IOCTL_FREE_BUFS DRM_IOW( 0x1a, struct drm_buf_free) #define DRM_IOCTL_RM_MAP DRM_IOW( 0x1b, struct drm_map) #define DRM_IOCTL_SET_SAREA_CTX DRM_IOW( 0x1c, struct drm_ctx_priv_map) #define DRM_IOCTL_GET_SAREA_CTX DRM_IOWR(0x1d, struct drm_ctx_priv_map) #define DRM_IOCTL_ADD_CTX DRM_IOWR(0x20, struct drm_ctx) #define DRM_IOCTL_RM_CTX DRM_IOWR(0x21, struct drm_ctx) #define DRM_IOCTL_MOD_CTX DRM_IOW( 0x22, struct drm_ctx) #define DRM_IOCTL_GET_CTX DRM_IOWR(0x23, struct drm_ctx) #define DRM_IOCTL_SWITCH_CTX DRM_IOW( 0x24, struct drm_ctx) #define DRM_IOCTL_NEW_CTX DRM_IOW( 0x25, struct drm_ctx) #define DRM_IOCTL_RES_CTX DRM_IOWR(0x26, struct drm_ctx_res) #define DRM_IOCTL_ADD_DRAW DRM_IOWR(0x27, struct drm_draw) #define DRM_IOCTL_RM_DRAW DRM_IOWR(0x28, struct drm_draw) #define DRM_IOCTL_DMA DRM_IOWR(0x29, struct drm_dma) #define DRM_IOCTL_LOCK DRM_IOW( 0x2a, struct drm_lock) #define DRM_IOCTL_UNLOCK DRM_IOW( 0x2b, struct drm_lock) #define DRM_IOCTL_FINISH DRM_IOW( 0x2c, struct drm_lock) |
1da177e4c Linux-2.6.12-rc2 |
615 616 617 |
#define DRM_IOCTL_AGP_ACQUIRE DRM_IO( 0x30) #define DRM_IOCTL_AGP_RELEASE DRM_IO( 0x31) |
c60ce623b drm: remove a bun... |
618 619 620 621 622 623 |
#define DRM_IOCTL_AGP_ENABLE DRM_IOW( 0x32, struct drm_agp_mode) #define DRM_IOCTL_AGP_INFO DRM_IOR( 0x33, struct drm_agp_info) #define DRM_IOCTL_AGP_ALLOC DRM_IOWR(0x34, struct drm_agp_buffer) #define DRM_IOCTL_AGP_FREE DRM_IOW( 0x35, struct drm_agp_buffer) #define DRM_IOCTL_AGP_BIND DRM_IOW( 0x36, struct drm_agp_binding) #define DRM_IOCTL_AGP_UNBIND DRM_IOW( 0x37, struct drm_agp_binding) |
1da177e4c Linux-2.6.12-rc2 |
624 |
|
b55430590 drm: the sg alloc... |
625 |
#define DRM_IOCTL_SG_ALLOC DRM_IOWR(0x38, struct drm_scatter_gather) |
c60ce623b drm: remove a bun... |
626 |
#define DRM_IOCTL_SG_FREE DRM_IOW( 0x39, struct drm_scatter_gather) |
1da177e4c Linux-2.6.12-rc2 |
627 |
|
c60ce623b drm: remove a bun... |
628 |
#define DRM_IOCTL_WAIT_VBLANK DRM_IOWR(0x3a, union drm_wait_vblank) |
1da177e4c Linux-2.6.12-rc2 |
629 |
|
c60ce623b drm: remove a bun... |
630 |
#define DRM_IOCTL_UPDATE_DRAW DRM_IOW(0x3f, struct drm_update_draw) |
bea5679f9 drm: Add support ... |
631 |
|
1da177e4c Linux-2.6.12-rc2 |
632 633 |
/** * Device specific ioctls should only be in their respective headers |
99da6d861 drm: allow for mo... |
634 635 |
* The device specific ioctl range is from 0x40 to 0x99. * Generic IOCTLS restart at 0xA0. |
1da177e4c Linux-2.6.12-rc2 |
636 637 638 639 640 |
* * \sa drmCommandNone(), drmCommandRead(), drmCommandWrite(), and * drmCommandReadWrite(). */ #define DRM_COMMAND_BASE 0x40 |
99da6d861 drm: allow for mo... |
641 |
#define DRM_COMMAND_END 0xA0 |
1da177e4c Linux-2.6.12-rc2 |
642 |
|
c60ce623b drm: remove a bun... |
643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 |
/* typedef area */ #ifndef __KERNEL__ typedef struct drm_clip_rect drm_clip_rect_t; typedef struct drm_drawable_info drm_drawable_info_t; typedef struct drm_tex_region drm_tex_region_t; typedef struct drm_hw_lock drm_hw_lock_t; typedef struct drm_version drm_version_t; typedef struct drm_unique drm_unique_t; typedef struct drm_list drm_list_t; typedef struct drm_block drm_block_t; typedef struct drm_control drm_control_t; typedef enum drm_map_type drm_map_type_t; typedef enum drm_map_flags drm_map_flags_t; typedef struct drm_ctx_priv_map drm_ctx_priv_map_t; typedef struct drm_map drm_map_t; typedef struct drm_client drm_client_t; typedef enum drm_stat_type drm_stat_type_t; typedef struct drm_stats drm_stats_t; typedef enum drm_lock_flags drm_lock_flags_t; typedef struct drm_lock drm_lock_t; typedef enum drm_dma_flags drm_dma_flags_t; typedef struct drm_buf_desc drm_buf_desc_t; typedef struct drm_buf_info drm_buf_info_t; typedef struct drm_buf_free drm_buf_free_t; typedef struct drm_buf_pub drm_buf_pub_t; typedef struct drm_buf_map drm_buf_map_t; typedef struct drm_dma drm_dma_t; typedef union drm_wait_vblank drm_wait_vblank_t; typedef struct drm_agp_mode drm_agp_mode_t; typedef enum drm_ctx_flags drm_ctx_flags_t; typedef struct drm_ctx drm_ctx_t; typedef struct drm_ctx_res drm_ctx_res_t; typedef struct drm_draw drm_draw_t; typedef struct drm_update_draw drm_update_draw_t; typedef struct drm_auth drm_auth_t; typedef struct drm_irq_busid drm_irq_busid_t; typedef enum drm_vblank_seq_type drm_vblank_seq_type_t; typedef struct drm_agp_buffer drm_agp_buffer_t; typedef struct drm_agp_binding drm_agp_binding_t; typedef struct drm_agp_info drm_agp_info_t; typedef struct drm_scatter_gather drm_scatter_gather_t; typedef struct drm_set_version drm_set_version_t; #endif |
1da177e4c Linux-2.6.12-rc2 |
687 |
#endif |