drm.h
上传用户:jlfgdled
上传日期:2013-04-10
资源大小:33168k
文件大小:19k
源码类别:

Linux/Unix编程

开发平台:

Unix_Linux

  1. /* drm.h -- Header for Direct Rendering Manager -*- linux-c -*-
  2.  * Created: Mon Jan  4 10:05:05 1999 by faith@precisioninsight.com
  3.  *
  4.  * Copyright 1999 Precision Insight, Inc., Cedar Park, Texas.
  5.  * Copyright 2000 VA Linux Systems, Inc., Sunnyvale, California.
  6.  * All rights reserved.
  7.  *
  8.  * Permission is hereby granted, free of charge, to any person obtaining a
  9.  * copy of this software and associated documentation files (the "Software"),
  10.  * to deal in the Software without restriction, including without limitation
  11.  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
  12.  * and/or sell copies of the Software, and to permit persons to whom the
  13.  * Software is furnished to do so, subject to the following conditions:
  14.  *
  15.  * The above copyright notice and this permission notice (including the next
  16.  * paragraph) shall be included in all copies or substantial portions of the
  17.  * Software.
  18.  *
  19.  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  20.  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  21.  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
  22.  * VA LINUX SYSTEMS AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
  23.  * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
  24.  * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
  25.  * OTHER DEALINGS IN THE SOFTWARE.
  26.  *
  27.  * Authors:
  28.  *    Rickard E. (Rik) Faith <faith@valinux.com>
  29.  *
  30.  * Acknowledgements:
  31.  * Dec 1999, Richard Henderson <rth@twiddle.net>, move to generic cmpxchg.
  32.  *
  33.  */
  34. #ifndef _DRM_H_
  35. #define _DRM_H_
  36. #if defined(__linux__)
  37. #include <linux/config.h>
  38. #include <asm/ioctl.h> /* For _IO* macros */
  39. #define DRM_IOCTL_NR(n)      _IOC_NR(n)
  40. #elif defined(__FreeBSD__)
  41. #include <sys/ioccom.h>
  42. #define DRM_IOCTL_NR(n)      ((n) & 0xff)
  43. #endif
  44. #define XFREE86_VERSION(major,minor,patch,snap) 
  45. ((major << 16) | (minor << 8) | patch)
  46. #ifndef CONFIG_XFREE86_VERSION
  47. #define CONFIG_XFREE86_VERSION XFREE86_VERSION(4,1,0,0)
  48. #endif
  49. #if CONFIG_XFREE86_VERSION < XFREE86_VERSION(4,1,0,0)
  50. #define DRM_PROC_DEVICES "/proc/devices"
  51. #define DRM_PROC_MISC  "/proc/misc"
  52. #define DRM_PROC_DRM  "/proc/drm"
  53. #define DRM_DEV_DRM  "/dev/drm"
  54. #define DRM_DEV_MODE  (S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP)
  55. #define DRM_DEV_UID  0
  56. #define DRM_DEV_GID  0
  57. #endif
  58. #if CONFIG_XFREE86_VERSION >= XFREE86_VERSION(4,1,0,0)
  59. #define DRM_MAJOR       226
  60. #define DRM_MAX_MINOR   15
  61. #endif
  62. #define DRM_NAME "drm"   /* Name in kernel, /dev, and /proc     */
  63. #define DRM_MIN_ORDER 5   /* At least 2^5 bytes = 32 bytes     */
  64. #define DRM_MAX_ORDER 22   /* Up to 2^22 bytes = 4MB     */
  65. #define DRM_RAM_PERCENT 10   /* How much system ram can we lock?     */
  66. #define _DRM_LOCK_HELD 0x80000000 /* Hardware lock is held     */
  67. #define _DRM_LOCK_CONT 0x40000000 /* Hardware lock is contended     */
  68. #define _DRM_LOCK_IS_HELD(lock)    ((lock) & _DRM_LOCK_HELD)
  69. #define _DRM_LOCK_IS_CONT(lock)    ((lock) & _DRM_LOCK_CONT)
  70. #define _DRM_LOCKING_CONTEXT(lock) ((lock) & ~(_DRM_LOCK_HELD|_DRM_LOCK_CONT))
  71. typedef unsigned long drm_handle_t;
  72. typedef unsigned int  drm_context_t;
  73. typedef unsigned int  drm_drawable_t;
  74. typedef unsigned int  drm_magic_t;
  75. /* Warning: If you change this structure, make sure you change
  76.  * XF86DRIClipRectRec in the server as well */
  77. typedef struct drm_clip_rect {
  78. unsigned short x1;
  79. unsigned short y1;
  80. unsigned short x2;
  81. unsigned short y2;
  82. } drm_clip_rect_t;
  83. typedef struct drm_tex_region {
  84. unsigned char next;
  85. unsigned char prev;
  86. unsigned char in_use;
  87. unsigned char padding;
  88. unsigned int age;
  89. } drm_tex_region_t;
  90. /* Seperate include files for the i810/mga/r128 specific structures */
  91. #include "mga_drm.h"
  92. #include "i810_drm.h"
  93. #include "r128_drm.h"
  94. #include "radeon_drm.h"
  95. #include "sis_drm.h"
  96. #include "i830_drm.h"
  97. typedef struct drm_version {
  98. int    version_major;   /* Major version     */
  99. int    version_minor;   /* Minor version     */
  100. int    version_patchlevel;/* Patch level     */
  101. size_t name_len;   /* Length of name buffer     */
  102. char   *name;   /* Name of driver     */
  103. size_t date_len;   /* Length of date buffer     */
  104. char   *date;   /* User-space buffer to hold date     */
  105. size_t desc_len;   /* Length of desc buffer     */
  106. char   *desc;   /* User-space buffer to hold desc     */
  107. } drm_version_t;
  108. typedef struct drm_unique {
  109. size_t unique_len;   /* Length of unique     */
  110. char   *unique;   /* Unique name for driver instantiation   */
  111. } drm_unique_t;
  112. typedef struct drm_list {
  113. int  count;   /* Length of user-space structures     */
  114. drm_version_t  *version;
  115. } drm_list_t;
  116. typedef struct drm_block {
  117. int  unused;
  118. } drm_block_t;
  119. typedef struct drm_control {
  120. enum {
  121. DRM_ADD_COMMAND,
  122. DRM_RM_COMMAND,
  123. DRM_INST_HANDLER,
  124. DRM_UNINST_HANDLER
  125. }  func;
  126. int  irq;
  127. } drm_control_t;
  128. typedef enum drm_map_type {
  129. _DRM_FRAME_BUFFER   = 0,  /* WC (no caching), no core dump     */
  130. _DRM_REGISTERS     = 1,  /* no caching, no core dump     */
  131. _DRM_SHM     = 2,  /* shared, cached     */
  132. _DRM_AGP            = 3,  /* AGP/GART                               */
  133. _DRM_SCATTER_GATHER = 4   /* Scatter/gather memory for PCI DMA      */
  134. } drm_map_type_t;
  135. typedef enum drm_map_flags {
  136. _DRM_RESTRICTED      = 0x01, /* Cannot be mapped to user-virtual    */
  137. _DRM_READ_ONLY      = 0x02,
  138. _DRM_LOCKED      = 0x04, /* shared, cached, locked     */
  139. _DRM_KERNEL      = 0x08, /* kernel requires access     */
  140. _DRM_WRITE_COMBINING = 0x10, /* use write-combining if available    */
  141. _DRM_CONTAINS_LOCK   = 0x20, /* SHM page that contains lock     */
  142. _DRM_REMOVABLE      = 0x40  /* Removable mapping     */
  143. } drm_map_flags_t;
  144. typedef struct drm_ctx_priv_map {
  145. unsigned int ctx_id;  /* Context requesting private mapping */
  146. void *handle; /* Handle of map */
  147. } drm_ctx_priv_map_t;
  148. typedef struct drm_map {
  149. unsigned long offset;  /* Requested physical address (0 for SAREA)*/
  150. unsigned long size;  /* Requested physical size (bytes)     */
  151. drm_map_type_t type;  /* Type of memory to map     */
  152. drm_map_flags_t flags;  /* Flags     */
  153. void *handle; /* User-space: "Handle" to pass to mmap    */
  154.  /* Kernel-space: kernel-virtual address    */
  155. int mtrr;  /* MTRR slot used     */
  156.  /* Private data     */
  157. } drm_map_t;
  158. typedef struct drm_client {
  159. int idx; /* Which client desired?                    */
  160. int auth; /* Is client authenticated?                 */
  161. unsigned long pid; /* Process id                               */
  162. unsigned long uid; /* User id                                  */
  163. unsigned long magic; /* Magic                                    */
  164. unsigned long iocs; /* Ioctl count                              */
  165. } drm_client_t;
  166. typedef enum {
  167. _DRM_STAT_LOCK,
  168. _DRM_STAT_OPENS,
  169. _DRM_STAT_CLOSES,
  170. _DRM_STAT_IOCTLS,
  171. _DRM_STAT_LOCKS,
  172. _DRM_STAT_UNLOCKS,
  173. _DRM_STAT_VALUE, /* Generic value                      */
  174. _DRM_STAT_BYTE, /* Generic byte counter (1024bytes/K) */
  175. _DRM_STAT_COUNT, /* Generic non-byte counter (1000/k)  */
  176. _DRM_STAT_IRQ, /* IRQ */
  177. _DRM_STAT_PRIMARY, /* Primary DMA bytes */
  178. _DRM_STAT_SECONDARY, /* Secondary DMA bytes */
  179. _DRM_STAT_DMA, /* DMA */
  180. _DRM_STAT_SPECIAL, /* Special DMA (e.g., priority or polled) */
  181. _DRM_STAT_MISSED /* Missed DMA opportunity */
  182. /* Add to the *END* of the list */
  183. } drm_stat_type_t;
  184. typedef struct drm_stats {
  185. unsigned long count;
  186. struct {
  187. unsigned long   value;
  188. drm_stat_type_t type;
  189. } data[15];
  190. } drm_stats_t;
  191. typedef enum drm_lock_flags {
  192. _DRM_LOCK_READY      = 0x01, /* Wait until hardware is ready for DMA */
  193. _DRM_LOCK_QUIESCENT  = 0x02, /* Wait until hardware quiescent      */
  194. _DRM_LOCK_FLUSH      = 0x04, /* Flush this context's DMA queue first */
  195. _DRM_LOCK_FLUSH_ALL  = 0x08, /* Flush all DMA queues first      */
  196. /* These *HALT* flags aren't supported yet
  197.    -- they will be used to support the
  198.    full-screen DGA-like mode. */
  199. _DRM_HALT_ALL_QUEUES = 0x10, /* Halt all current and future queues   */
  200. _DRM_HALT_CUR_QUEUES = 0x20  /* Halt all current queues      */
  201. } drm_lock_flags_t;
  202. typedef struct drm_lock {
  203. int  context;
  204. drm_lock_flags_t flags;
  205. } drm_lock_t;
  206. typedef enum drm_dma_flags {       /* These values *MUST* match xf86drm.h */
  207.       /* Flags for DMA buffer dispatch      */
  208. _DRM_DMA_BLOCK       = 0x01, /* Block until buffer dispatched.
  209.  Note, the buffer may not yet have
  210.  been processed by the hardware --
  211.  getting a hardware lock with the
  212.  hardware quiescent will ensure
  213.  that the buffer has been
  214.  processed.      */
  215. _DRM_DMA_WHILE_LOCKED = 0x02, /* Dispatch while lock held      */
  216. _DRM_DMA_PRIORITY     = 0x04, /* High priority dispatch      */
  217.       /* Flags for DMA buffer request      */
  218. _DRM_DMA_WAIT       = 0x10, /* Wait for free buffers      */
  219. _DRM_DMA_SMALLER_OK   = 0x20, /* Smaller-than-requested buffers ok   */
  220. _DRM_DMA_LARGER_OK    = 0x40  /* Larger-than-requested buffers ok    */
  221. } drm_dma_flags_t;
  222. typedef struct drm_buf_desc {
  223. int       count;  /* Number of buffers of this size      */
  224. int       size;  /* Size in bytes      */
  225. int       low_mark;  /* Low water mark      */
  226. int       high_mark; /* High water mark      */
  227. enum {
  228. _DRM_PAGE_ALIGN = 0x01, /* Align on page boundaries for DMA  */
  229. _DRM_AGP_BUFFER = 0x02, /* Buffer is in agp space            */
  230. _DRM_SG_BUFFER  = 0x04  /* Scatter/gather memory buffer      */
  231. }       flags;
  232. unsigned long agp_start; /* Start address of where the agp buffers
  233.   * are in the agp aperture */
  234. } drm_buf_desc_t;
  235. typedef struct drm_buf_info {
  236. int        count; /* Entries in list      */
  237. drm_buf_desc_t *list;
  238. } drm_buf_info_t;
  239. typedef struct drm_buf_free {
  240. int        count;
  241. int        *list;
  242. } drm_buf_free_t;
  243. typedef struct drm_buf_pub {
  244. int   idx;        /* Index into master buflist      */
  245. int   total;       /* Buffer size      */
  246. int   used;        /* Amount of buffer in use (for DMA)  */
  247. void   *address;    /* Address of buffer      */
  248. } drm_buf_pub_t;
  249. typedef struct drm_buf_map {
  250. int       count; /* Length of buflist     */
  251. void       *virtual; /* Mmaped area in user-virtual     */
  252. drm_buf_pub_t *list; /* Buffer information     */
  253. } drm_buf_map_t;
  254. typedef struct drm_dma {
  255. /* Indices here refer to the offset into
  256.    buflist in drm_buf_get_t.  */
  257. int context;   /* Context handle     */
  258. int send_count;   /* Number of buffers to send     */
  259. int *send_indices;   /* List of handles to buffers     */
  260. int *send_sizes;   /* Lengths of data to send     */
  261. drm_dma_flags_t flags;   /* Flags     */
  262. int request_count;   /* Number of buffers requested    */
  263. int request_size;   /* Desired size for buffers     */
  264. int *request_indices; /* Buffer information     */
  265. int *request_sizes;
  266. int granted_count;   /* Number of buffers granted     */
  267. } drm_dma_t;
  268. typedef enum {
  269. _DRM_CONTEXT_PRESERVED = 0x01,
  270. _DRM_CONTEXT_2DONLY    = 0x02
  271. } drm_ctx_flags_t;
  272. typedef struct drm_ctx {
  273. drm_context_t handle;
  274. drm_ctx_flags_t flags;
  275. } drm_ctx_t;
  276. typedef struct drm_ctx_res {
  277. int count;
  278. drm_ctx_t *contexts;
  279. } drm_ctx_res_t;
  280. typedef struct drm_draw {
  281. drm_drawable_t handle;
  282. } drm_draw_t;
  283. typedef struct drm_auth {
  284. drm_magic_t magic;
  285. } drm_auth_t;
  286. typedef struct drm_irq_busid {
  287. int irq;
  288. int busnum;
  289. int devnum;
  290. int funcnum;
  291. } drm_irq_busid_t;
  292. typedef struct drm_agp_mode {
  293. unsigned long mode;
  294. } drm_agp_mode_t;
  295. /* For drm_agp_alloc -- allocated a buffer */
  296. typedef struct drm_agp_buffer {
  297. unsigned long size; /* In bytes -- will round to page boundary */
  298. unsigned long handle; /* Used for BIND/UNBIND ioctls */
  299. unsigned long type;     /* Type of memory to allocate  */
  300.         unsigned long physical; /* Physical used by i810       */
  301. } drm_agp_buffer_t;
  302. /* For drm_agp_bind */
  303. typedef struct drm_agp_binding {
  304. unsigned long handle;   /* From drm_agp_buffer */
  305. unsigned long offset; /* In bytes -- will round to page boundary */
  306. } drm_agp_binding_t;
  307. typedef struct drm_agp_info {
  308. int            agp_version_major;
  309. int            agp_version_minor;
  310. unsigned long  mode;
  311. unsigned long  aperture_base;  /* physical address */
  312. unsigned long  aperture_size;  /* bytes */
  313. unsigned long  memory_allowed; /* bytes */
  314. unsigned long  memory_used;
  315. /* PCI information */
  316. unsigned short id_vendor;
  317. unsigned short id_device;
  318. } drm_agp_info_t;
  319. typedef struct drm_scatter_gather {
  320. unsigned long size; /* In bytes -- will round to page boundary */
  321. unsigned long handle; /* Used for mapping / unmapping */
  322. } drm_scatter_gather_t;
  323. #define DRM_IOCTL_BASE 'd'
  324. #define DRM_IO(nr) _IO(DRM_IOCTL_BASE,nr)
  325. #define DRM_IOR(nr,size) _IOR(DRM_IOCTL_BASE,nr,size)
  326. #define DRM_IOW(nr,size) _IOW(DRM_IOCTL_BASE,nr,size)
  327. #define DRM_IOWR(nr,size) _IOWR(DRM_IOCTL_BASE,nr,size)
  328. #define DRM_IOCTL_VERSION DRM_IOWR(0x00, drm_version_t)
  329. #define DRM_IOCTL_GET_UNIQUE DRM_IOWR(0x01, drm_unique_t)
  330. #define DRM_IOCTL_GET_MAGIC DRM_IOR( 0x02, drm_auth_t)
  331. #define DRM_IOCTL_IRQ_BUSID DRM_IOWR(0x03, drm_irq_busid_t)
  332. #define DRM_IOCTL_GET_MAP               DRM_IOWR(0x04, drm_map_t)
  333. #define DRM_IOCTL_GET_CLIENT            DRM_IOWR(0x05, drm_client_t)
  334. #define DRM_IOCTL_GET_STATS             DRM_IOR( 0x06, drm_stats_t)
  335. #define DRM_IOCTL_SET_UNIQUE DRM_IOW( 0x10, drm_unique_t)
  336. #define DRM_IOCTL_AUTH_MAGIC DRM_IOW( 0x11, drm_auth_t)
  337. #define DRM_IOCTL_BLOCK DRM_IOWR(0x12, drm_block_t)
  338. #define DRM_IOCTL_UNBLOCK DRM_IOWR(0x13, drm_block_t)
  339. #define DRM_IOCTL_CONTROL DRM_IOW( 0x14, drm_control_t)
  340. #define DRM_IOCTL_ADD_MAP DRM_IOWR(0x15, drm_map_t)
  341. #define DRM_IOCTL_ADD_BUFS DRM_IOWR(0x16, drm_buf_desc_t)
  342. #define DRM_IOCTL_MARK_BUFS DRM_IOW( 0x17, drm_buf_desc_t)
  343. #define DRM_IOCTL_INFO_BUFS DRM_IOWR(0x18, drm_buf_info_t)
  344. #define DRM_IOCTL_MAP_BUFS DRM_IOWR(0x19, drm_buf_map_t)
  345. #define DRM_IOCTL_FREE_BUFS DRM_IOW( 0x1a, drm_buf_free_t)
  346. #define DRM_IOCTL_RM_MAP DRM_IOW( 0x1b, drm_map_t)
  347. #define DRM_IOCTL_SET_SAREA_CTX DRM_IOW( 0x1c, drm_ctx_priv_map_t)
  348. #define DRM_IOCTL_GET_SAREA_CTX  DRM_IOWR(0x1d, drm_ctx_priv_map_t)
  349. #define DRM_IOCTL_ADD_CTX DRM_IOWR(0x20, drm_ctx_t)
  350. #define DRM_IOCTL_RM_CTX DRM_IOWR(0x21, drm_ctx_t)
  351. #define DRM_IOCTL_MOD_CTX DRM_IOW( 0x22, drm_ctx_t)
  352. #define DRM_IOCTL_GET_CTX DRM_IOWR(0x23, drm_ctx_t)
  353. #define DRM_IOCTL_SWITCH_CTX DRM_IOW( 0x24, drm_ctx_t)
  354. #define DRM_IOCTL_NEW_CTX DRM_IOW( 0x25, drm_ctx_t)
  355. #define DRM_IOCTL_RES_CTX DRM_IOWR(0x26, drm_ctx_res_t)
  356. #define DRM_IOCTL_ADD_DRAW DRM_IOWR(0x27, drm_draw_t)
  357. #define DRM_IOCTL_RM_DRAW DRM_IOWR(0x28, drm_draw_t)
  358. #define DRM_IOCTL_DMA DRM_IOWR(0x29, drm_dma_t)
  359. #define DRM_IOCTL_LOCK DRM_IOW( 0x2a, drm_lock_t)
  360. #define DRM_IOCTL_UNLOCK DRM_IOW( 0x2b, drm_lock_t)
  361. #define DRM_IOCTL_FINISH DRM_IOW( 0x2c, drm_lock_t)
  362. #define DRM_IOCTL_AGP_ACQUIRE DRM_IO(  0x30)
  363. #define DRM_IOCTL_AGP_RELEASE DRM_IO(  0x31)
  364. #define DRM_IOCTL_AGP_ENABLE DRM_IOW( 0x32, drm_agp_mode_t)
  365. #define DRM_IOCTL_AGP_INFO DRM_IOR( 0x33, drm_agp_info_t)
  366. #define DRM_IOCTL_AGP_ALLOC DRM_IOWR(0x34, drm_agp_buffer_t)
  367. #define DRM_IOCTL_AGP_FREE DRM_IOW( 0x35, drm_agp_buffer_t)
  368. #define DRM_IOCTL_AGP_BIND DRM_IOW( 0x36, drm_agp_binding_t)
  369. #define DRM_IOCTL_AGP_UNBIND DRM_IOW( 0x37, drm_agp_binding_t)
  370. #define DRM_IOCTL_SG_ALLOC DRM_IOW( 0x38, drm_scatter_gather_t)
  371. #define DRM_IOCTL_SG_FREE DRM_IOW( 0x39, drm_scatter_gather_t)
  372. /* MGA specific ioctls */
  373. #define DRM_IOCTL_MGA_INIT DRM_IOW( 0x40, drm_mga_init_t)
  374. #define DRM_IOCTL_MGA_FLUSH DRM_IOW( 0x41, drm_lock_t)
  375. #define DRM_IOCTL_MGA_RESET DRM_IO(  0x42)
  376. #define DRM_IOCTL_MGA_SWAP DRM_IO(  0x43)
  377. #define DRM_IOCTL_MGA_CLEAR DRM_IOW( 0x44, drm_mga_clear_t)
  378. #define DRM_IOCTL_MGA_VERTEX DRM_IOW( 0x45, drm_mga_vertex_t)
  379. #define DRM_IOCTL_MGA_INDICES DRM_IOW( 0x46, drm_mga_indices_t)
  380. #define DRM_IOCTL_MGA_ILOAD DRM_IOW( 0x47, drm_mga_iload_t)
  381. #define DRM_IOCTL_MGA_BLIT DRM_IOW( 0x48, drm_mga_blit_t)
  382. /* i810 specific ioctls */
  383. #define DRM_IOCTL_I810_INIT DRM_IOW( 0x40, drm_i810_init_t)
  384. #define DRM_IOCTL_I810_VERTEX DRM_IOW( 0x41, drm_i810_vertex_t)
  385. #define DRM_IOCTL_I810_CLEAR DRM_IOW( 0x42, drm_i810_clear_t)
  386. #define DRM_IOCTL_I810_FLUSH DRM_IO(  0x43)
  387. #define DRM_IOCTL_I810_GETAGE DRM_IO(  0x44)
  388. #define DRM_IOCTL_I810_GETBUF DRM_IOWR(0x45, drm_i810_dma_t)
  389. #define DRM_IOCTL_I810_SWAP DRM_IO(  0x46)
  390. #define DRM_IOCTL_I810_COPY DRM_IOW( 0x47, drm_i810_copy_t)
  391. #define DRM_IOCTL_I810_DOCOPY DRM_IO(  0x48)
  392. #define DRM_IOCTL_I810_OV0INFO DRM_IOR( 0x49, drm_i810_overlay_t)
  393. #define DRM_IOCTL_I810_FSTATUS DRM_IO ( 0x4a)
  394. #define DRM_IOCTL_I810_OV0FLIP DRM_IO ( 0x4b)
  395. #define DRM_IOCTL_I810_MC DRM_IOW( 0x4c, drm_i810_mc_t)
  396. #define DRM_IOCTL_I810_RSTATUS DRM_IO ( 0x4d )
  397. /* Rage 128 specific ioctls */
  398. #define DRM_IOCTL_R128_INIT DRM_IOW( 0x40, drm_r128_init_t)
  399. #define DRM_IOCTL_R128_CCE_START DRM_IO(  0x41)
  400. #define DRM_IOCTL_R128_CCE_STOP DRM_IOW( 0x42, drm_r128_cce_stop_t)
  401. #define DRM_IOCTL_R128_CCE_RESET DRM_IO(  0x43)
  402. #define DRM_IOCTL_R128_CCE_IDLE DRM_IO(  0x44)
  403. #define DRM_IOCTL_R128_RESET DRM_IO(  0x46)
  404. #define DRM_IOCTL_R128_SWAP DRM_IO(  0x47)
  405. #define DRM_IOCTL_R128_CLEAR DRM_IOW( 0x48, drm_r128_clear_t)
  406. #define DRM_IOCTL_R128_VERTEX DRM_IOW( 0x49, drm_r128_vertex_t)
  407. #define DRM_IOCTL_R128_INDICES DRM_IOW( 0x4a, drm_r128_indices_t)
  408. #define DRM_IOCTL_R128_BLIT DRM_IOW( 0x4b, drm_r128_blit_t)
  409. #define DRM_IOCTL_R128_DEPTH DRM_IOW( 0x4c, drm_r128_depth_t)
  410. #define DRM_IOCTL_R128_STIPPLE DRM_IOW( 0x4d, drm_r128_stipple_t)
  411. #define DRM_IOCTL_R128_INDIRECT DRM_IOWR(0x4f, drm_r128_indirect_t)
  412. #define DRM_IOCTL_R128_FULLSCREEN DRM_IOW( 0x50, drm_r128_fullscreen_t)
  413. /* Radeon specific ioctls */
  414. #define DRM_IOCTL_RADEON_CP_INIT DRM_IOW( 0x40, drm_radeon_init_t)
  415. #define DRM_IOCTL_RADEON_CP_START DRM_IO(  0x41)
  416. #define DRM_IOCTL_RADEON_CP_STOP DRM_IOW( 0x42, drm_radeon_cp_stop_t)
  417. #define DRM_IOCTL_RADEON_CP_RESET DRM_IO(  0x43)
  418. #define DRM_IOCTL_RADEON_CP_IDLE DRM_IO(  0x44)
  419. #define DRM_IOCTL_RADEON_RESET DRM_IO(  0x45)
  420. #define DRM_IOCTL_RADEON_FULLSCREEN DRM_IOW( 0x46, drm_radeon_fullscreen_t)
  421. #define DRM_IOCTL_RADEON_SWAP DRM_IO(  0x47)
  422. #define DRM_IOCTL_RADEON_CLEAR DRM_IOW( 0x48, drm_radeon_clear_t)
  423. #define DRM_IOCTL_RADEON_VERTEX DRM_IOW( 0x49, drm_radeon_vertex_t)
  424. #define DRM_IOCTL_RADEON_INDICES DRM_IOW( 0x4a, drm_radeon_indices_t)
  425. #define DRM_IOCTL_RADEON_STIPPLE DRM_IOW( 0x4c, drm_radeon_stipple_t)
  426. #define DRM_IOCTL_RADEON_INDIRECT DRM_IOWR(0x4d, drm_radeon_indirect_t)
  427. #define DRM_IOCTL_RADEON_TEXTURE DRM_IOWR(0x4e, drm_radeon_texture_t)
  428. /* SiS specific ioctls */
  429. #define SIS_IOCTL_FB_ALLOC DRM_IOWR(0x44, drm_sis_mem_t)
  430. #define SIS_IOCTL_FB_FREE DRM_IOW( 0x45, drm_sis_mem_t)
  431. #define SIS_IOCTL_AGP_INIT DRM_IOWR(0x53, drm_sis_agp_t)
  432. #define SIS_IOCTL_AGP_ALLOC DRM_IOWR(0x54, drm_sis_mem_t)
  433. #define SIS_IOCTL_AGP_FREE DRM_IOW( 0x55, drm_sis_mem_t)
  434. #define SIS_IOCTL_FLIP DRM_IOW( 0x48, drm_sis_flip_t)
  435. #define SIS_IOCTL_FLIP_INIT DRM_IO(  0x49)
  436. #define SIS_IOCTL_FLIP_FINAL DRM_IO(  0x50)
  437. /* I830 specific ioctls */
  438. #define DRM_IOCTL_I830_INIT DRM_IOW( 0x40, drm_i830_init_t)
  439. #define DRM_IOCTL_I830_VERTEX DRM_IOW( 0x41, drm_i830_vertex_t)
  440. #define DRM_IOCTL_I830_CLEAR DRM_IOW( 0x42, drm_i830_clear_t)
  441. #define DRM_IOCTL_I830_FLUSH DRM_IO ( 0x43)
  442. #define DRM_IOCTL_I830_GETAGE DRM_IO ( 0x44)
  443. #define DRM_IOCTL_I830_GETBUF DRM_IOWR(0x45, drm_i830_dma_t)
  444. #define DRM_IOCTL_I830_SWAP DRM_IO ( 0x46)
  445. #define DRM_IOCTL_I830_COPY DRM_IOW( 0x47, drm_i830_copy_t)
  446. #define DRM_IOCTL_I830_DOCOPY DRM_IO ( 0x48)
  447. #endif