1 /*
2  * This header was generated from the Linux kernel headers by update_headers.py,
3  * to provide necessary information from kernel to userspace, such as constants,
4  * structures, and macros, and thus, contains no copyrightable information.
5  */
6 #ifndef __SAVAGE_DRM_H__
7 #define __SAVAGE_DRM_H__
8 #include "drm.h"
9 #if defined(__cplusplus)
10 extern "C" {
11 #endif
12 #ifndef __SAVAGE_SAREA_DEFINES__
13 #define __SAVAGE_SAREA_DEFINES__
14 #define SAVAGE_CARD_HEAP		0
15 #define SAVAGE_AGP_HEAP			1
16 #define SAVAGE_NR_TEX_HEAPS		2
17 #define SAVAGE_NR_TEX_REGIONS		16
18 #define SAVAGE_LOG_MIN_TEX_REGION_SIZE	16
19 #endif
20 typedef struct _drm_savage_sarea {
21 
22 	struct drm_tex_region texList[SAVAGE_NR_TEX_HEAPS][SAVAGE_NR_TEX_REGIONS +
23 						      1];
24 	unsigned int texAge[SAVAGE_NR_TEX_HEAPS];
25 
26 	int ctxOwner;
27 } drm_savage_sarea_t, *drm_savage_sarea_ptr;
28 #define DRM_SAVAGE_BCI_INIT		0x00
29 #define DRM_SAVAGE_BCI_CMDBUF           0x01
30 #define DRM_SAVAGE_BCI_EVENT_EMIT	0x02
31 #define DRM_SAVAGE_BCI_EVENT_WAIT	0x03
32 #define DRM_IOCTL_SAVAGE_BCI_INIT		DRM_IOW( DRM_COMMAND_BASE + DRM_SAVAGE_BCI_INIT, drm_savage_init_t)
33 #define DRM_IOCTL_SAVAGE_BCI_CMDBUF		DRM_IOW( DRM_COMMAND_BASE + DRM_SAVAGE_BCI_CMDBUF, drm_savage_cmdbuf_t)
34 #define DRM_IOCTL_SAVAGE_BCI_EVENT_EMIT	DRM_IOWR(DRM_COMMAND_BASE + DRM_SAVAGE_BCI_EVENT_EMIT, drm_savage_event_emit_t)
35 #define DRM_IOCTL_SAVAGE_BCI_EVENT_WAIT	DRM_IOW( DRM_COMMAND_BASE + DRM_SAVAGE_BCI_EVENT_WAIT, drm_savage_event_wait_t)
36 #define SAVAGE_DMA_PCI	1
37 #define SAVAGE_DMA_AGP	3
38 typedef struct drm_savage_init {
39 	enum {
40 		SAVAGE_INIT_BCI = 1,
41 		SAVAGE_CLEANUP_BCI = 2
42 	} func;
43 	unsigned int sarea_priv_offset;
44 
45 	unsigned int cob_size;
46 	unsigned int bci_threshold_lo, bci_threshold_hi;
47 	unsigned int dma_type;
48 
49 	unsigned int fb_bpp;
50 	unsigned int front_offset, front_pitch;
51 	unsigned int back_offset, back_pitch;
52 	unsigned int depth_bpp;
53 	unsigned int depth_offset, depth_pitch;
54 
55 	unsigned int texture_offset;
56 	unsigned int texture_size;
57 
58 	unsigned long status_offset;
59 	unsigned long buffers_offset;
60 	unsigned long agp_textures_offset;
61 	unsigned long cmd_dma_offset;
62 } drm_savage_init_t;
63 typedef union drm_savage_cmd_header drm_savage_cmd_header_t;
64 typedef struct drm_savage_cmdbuf {
65 
66 	drm_savage_cmd_header_t __user *cmd_addr;
67 	unsigned int size;
68 	unsigned int dma_idx;
69 	int discard;
70 
71 	unsigned int __user *vb_addr;
72 	unsigned int vb_size;
73 	unsigned int vb_stride;
74 
75 	struct drm_clip_rect __user *box_addr;
76 	unsigned int nbox;
77 } drm_savage_cmdbuf_t;
78 #define SAVAGE_WAIT_2D  0x1
79 #define SAVAGE_WAIT_3D  0x2
80 #define SAVAGE_WAIT_IRQ 0x4
81 typedef struct drm_savage_event {
82 	unsigned int count;
83 	unsigned int flags;
84 } drm_savage_event_emit_t, drm_savage_event_wait_t;
85 #define SAVAGE_CMD_STATE	0
86 #define SAVAGE_CMD_DMA_PRIM	1
87 #define SAVAGE_CMD_VB_PRIM	2
88 #define SAVAGE_CMD_DMA_IDX	3
89 #define SAVAGE_CMD_VB_IDX	4
90 #define SAVAGE_CMD_CLEAR	5
91 #define SAVAGE_CMD_SWAP		6
92 #define SAVAGE_PRIM_TRILIST	0
93 #define SAVAGE_PRIM_TRISTRIP	1
94 #define SAVAGE_PRIM_TRIFAN	2
95 #define SAVAGE_PRIM_TRILIST_201	3
96 #define SAVAGE_SKIP_Z		0x01
97 #define SAVAGE_SKIP_W		0x02
98 #define SAVAGE_SKIP_C0		0x04
99 #define SAVAGE_SKIP_C1		0x08
100 #define SAVAGE_SKIP_S0		0x10
101 #define SAVAGE_SKIP_T0		0x20
102 #define SAVAGE_SKIP_ST0		0x30
103 #define SAVAGE_SKIP_S1		0x40
104 #define SAVAGE_SKIP_T1		0x80
105 #define SAVAGE_SKIP_ST1		0xc0
106 #define SAVAGE_SKIP_ALL_S3D	0x3f
107 #define SAVAGE_SKIP_ALL_S4	0xff
108 #define SAVAGE_FRONT		0x1
109 #define SAVAGE_BACK		0x2
110 #define SAVAGE_DEPTH		0x4
111 union drm_savage_cmd_header {
112 	struct {
113 		unsigned char cmd;
114 		unsigned char pad0;
115 		unsigned short pad1;
116 		unsigned short pad2;
117 		unsigned short pad3;
118 	} cmd;
119 	struct {
120 		unsigned char cmd;
121 		unsigned char global;
122 		unsigned short count;
123 		unsigned short start;
124 		unsigned short pad3;
125 	} state;
126 	struct {
127 		unsigned char cmd;
128 		unsigned char prim;
129 		unsigned short skip;
130 		unsigned short count;
131 		unsigned short start;
132 	} prim;
133 	struct {
134 		unsigned char cmd;
135 		unsigned char prim;
136 		unsigned short skip;
137 		unsigned short count;
138 		unsigned short pad3;
139 	} idx;
140 	struct {
141 		unsigned char cmd;
142 		unsigned char pad0;
143 		unsigned short pad1;
144 		unsigned int flags;
145 	} clear0;
146 	struct {
147 		unsigned int mask;
148 		unsigned int value;
149 	} clear1;
150 };
151 #if defined(__cplusplus)
152 }
153 #endif
154 #endif
155