1655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng/****************************************************************************
2655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ****************************************************************************
3655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ***
4655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ***   This header was automatically generated from a Linux kernel header
5655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ***   of the same name, to make information necessary for userspace to
6655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ***   call into the kernel available to libc.  It contains only constants,
7655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ***   structures, and macros generated from the original header, and thus,
8655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ***   contains no copyrightable information.
9655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ***
10655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ***   To edit the content of this header, modify the corresponding
11655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ***   source file (e.g. under external/kernel-headers/original/) then
12655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ***   run bionic/libc/kernel/tools/update_all.py
13655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ***
14655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ***   Any manual change here will be lost the next time this script will
15655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ***   be run. You've been warned!
16655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ***
17655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ****************************************************************************
18655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng ****************************************************************************/
19655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#ifndef __R128_DRM_H__
20655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define __R128_DRM_H__
21106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris#include "drm.h"
22106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris#ifdef __cplusplus
23106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris#endif
24106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris#ifndef __R128_SAREA_DEFINES__
2505d08e9716b5974d6ed08973f44930804890b902Christopher Ferris#define __R128_SAREA_DEFINES__
26655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define R128_UPLOAD_CONTEXT 0x001
27655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define R128_UPLOAD_SETUP 0x002
28655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define R128_UPLOAD_TEX0 0x004
2905d08e9716b5974d6ed08973f44930804890b902Christopher Ferris#define R128_UPLOAD_TEX1 0x008
30655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define R128_UPLOAD_TEX0IMAGES 0x010
31655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define R128_UPLOAD_TEX1IMAGES 0x020
32655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define R128_UPLOAD_CORE 0x040
3305d08e9716b5974d6ed08973f44930804890b902Christopher Ferris#define R128_UPLOAD_MASKS 0x080
34655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define R128_UPLOAD_WINDOW 0x100
35655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define R128_UPLOAD_CLIPRECTS 0x200
36655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define R128_REQUIRE_QUIESCENCE 0x400
3705d08e9716b5974d6ed08973f44930804890b902Christopher Ferris#define R128_UPLOAD_ALL 0x7ff
38655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define R128_FRONT 0x1
39655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define R128_BACK 0x2
40655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define R128_DEPTH 0x4
4105d08e9716b5974d6ed08973f44930804890b902Christopher Ferris#define R128_POINTS 0x1
42655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define R128_LINES 0x2
43655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define R128_LINE_STRIP 0x3
44655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define R128_TRIANGLES 0x4
4505d08e9716b5974d6ed08973f44930804890b902Christopher Ferris#define R128_TRIANGLE_FAN 0x5
46655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define R128_TRIANGLE_STRIP 0x6
47655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define R128_BUFFER_SIZE 16384
48655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define R128_INDEX_PRIM_OFFSET 20
4905d08e9716b5974d6ed08973f44930804890b902Christopher Ferris#define R128_HOSTDATA_BLIT_OFFSET 32
50655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define R128_NR_SAREA_CLIPRECTS 12
51655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define R128_LOCAL_TEX_HEAP 0
52655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define R128_AGP_TEX_HEAP 1
5305d08e9716b5974d6ed08973f44930804890b902Christopher Ferris#define R128_NR_TEX_HEAPS 2
54655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define R128_NR_TEX_REGIONS 64
55655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define R128_LOG_TEX_GRANULARITY 16
56655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define R128_NR_CONTEXT_REGS 12
5705d08e9716b5974d6ed08973f44930804890b902Christopher Ferris#define R128_MAX_TEXTURE_LEVELS 11
58655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define R128_MAX_TEXTURE_UNITS 2
59655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#endif
60655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengtypedef struct {
6105d08e9716b5974d6ed08973f44930804890b902Christopher Ferris  unsigned int dst_pitch_offset_c;
62d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  unsigned int dp_gui_master_cntl_c;
63d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  unsigned int sc_top_left_c;
64d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  unsigned int sc_bottom_right_c;
6505d08e9716b5974d6ed08973f44930804890b902Christopher Ferris  unsigned int z_offset_c;
66d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  unsigned int z_pitch_c;
67d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  unsigned int z_sten_cntl_c;
68d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  unsigned int tex_cntl_c;
6905d08e9716b5974d6ed08973f44930804890b902Christopher Ferris  unsigned int misc_3d_state_cntl_reg;
70d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  unsigned int texture_clr_cmp_clr_c;
71d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  unsigned int texture_clr_cmp_msk_c;
72d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  unsigned int fog_color_c;
7305d08e9716b5974d6ed08973f44930804890b902Christopher Ferris  unsigned int tex_size_pitch_c;
74d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  unsigned int constant_color_c;
75d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  unsigned int pm4_vc_fpu_setup;
76d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  unsigned int setup_cntl;
7705d08e9716b5974d6ed08973f44930804890b902Christopher Ferris  unsigned int dp_write_mask;
78d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  unsigned int sten_ref_mask_c;
79d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  unsigned int plane_3d_mask_c;
80d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  unsigned int window_xy_offset;
8105d08e9716b5974d6ed08973f44930804890b902Christopher Ferris  unsigned int scale_3d_cntl;
82655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng} drm_r128_context_regs_t;
83655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengtypedef struct {
84d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  unsigned int tex_cntl;
8505d08e9716b5974d6ed08973f44930804890b902Christopher Ferris  unsigned int tex_combine_cntl;
86d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  unsigned int tex_size_pitch;
87d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  unsigned int tex_offset[R128_MAX_TEXTURE_LEVELS];
88d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  unsigned int tex_border_color;
8905d08e9716b5974d6ed08973f44930804890b902Christopher Ferris} drm_r128_texture_regs_t;
90655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengtypedef struct drm_r128_sarea {
91d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  drm_r128_context_regs_t context_state;
92d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  drm_r128_texture_regs_t tex_state[R128_MAX_TEXTURE_UNITS];
9305d08e9716b5974d6ed08973f44930804890b902Christopher Ferris  unsigned int dirty;
94d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  unsigned int vertsize;
95d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  unsigned int vc_format;
96d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  struct drm_clip_rect boxes[R128_NR_SAREA_CLIPRECTS];
9705d08e9716b5974d6ed08973f44930804890b902Christopher Ferris  unsigned int nbox;
98d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  unsigned int last_frame;
99d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  unsigned int last_dispatch;
100d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  struct drm_tex_region tex_list[R128_NR_TEX_HEAPS][R128_NR_TEX_REGIONS + 1];
10105d08e9716b5974d6ed08973f44930804890b902Christopher Ferris  unsigned int tex_age[R128_NR_TEX_HEAPS];
102d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  int ctx_owner;
103d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  int pfAllowPageFlip;
104d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  int pfCurrentPage;
10505d08e9716b5974d6ed08973f44930804890b902Christopher Ferris} drm_r128_sarea_t;
106655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define DRM_R128_INIT 0x00
107655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define DRM_R128_CCE_START 0x01
108655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define DRM_R128_CCE_STOP 0x02
10905d08e9716b5974d6ed08973f44930804890b902Christopher Ferris#define DRM_R128_CCE_RESET 0x03
110655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define DRM_R128_CCE_IDLE 0x04
111655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define DRM_R128_RESET 0x06
112655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define DRM_R128_SWAP 0x07
11305d08e9716b5974d6ed08973f44930804890b902Christopher Ferris#define DRM_R128_CLEAR 0x08
114655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define DRM_R128_VERTEX 0x09
115655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define DRM_R128_INDICES 0x0a
116655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define DRM_R128_BLIT 0x0b
11705d08e9716b5974d6ed08973f44930804890b902Christopher Ferris#define DRM_R128_DEPTH 0x0c
118655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define DRM_R128_STIPPLE 0x0d
119655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define DRM_R128_INDIRECT 0x0f
120655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define DRM_R128_FULLSCREEN 0x10
12105d08e9716b5974d6ed08973f44930804890b902Christopher Ferris#define DRM_R128_CLEAR2 0x11
122655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define DRM_R128_GETPARAM 0x12
123655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define DRM_R128_FLIP 0x13
124d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao#define DRM_IOCTL_R128_INIT DRM_IOW(DRM_COMMAND_BASE + DRM_R128_INIT, drm_r128_init_t)
12505d08e9716b5974d6ed08973f44930804890b902Christopher Ferris#define DRM_IOCTL_R128_CCE_START DRM_IO(DRM_COMMAND_BASE + DRM_R128_CCE_START)
126d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao#define DRM_IOCTL_R128_CCE_STOP DRM_IOW(DRM_COMMAND_BASE + DRM_R128_CCE_STOP, drm_r128_cce_stop_t)
127d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao#define DRM_IOCTL_R128_CCE_RESET DRM_IO(DRM_COMMAND_BASE + DRM_R128_CCE_RESET)
128d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao#define DRM_IOCTL_R128_CCE_IDLE DRM_IO(DRM_COMMAND_BASE + DRM_R128_CCE_IDLE)
12905d08e9716b5974d6ed08973f44930804890b902Christopher Ferris#define DRM_IOCTL_R128_RESET DRM_IO(DRM_COMMAND_BASE + DRM_R128_RESET)
130d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao#define DRM_IOCTL_R128_SWAP DRM_IO(DRM_COMMAND_BASE + DRM_R128_SWAP)
131d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao#define DRM_IOCTL_R128_CLEAR DRM_IOW(DRM_COMMAND_BASE + DRM_R128_CLEAR, drm_r128_clear_t)
132d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao#define DRM_IOCTL_R128_VERTEX DRM_IOW(DRM_COMMAND_BASE + DRM_R128_VERTEX, drm_r128_vertex_t)
13305d08e9716b5974d6ed08973f44930804890b902Christopher Ferris#define DRM_IOCTL_R128_INDICES DRM_IOW(DRM_COMMAND_BASE + DRM_R128_INDICES, drm_r128_indices_t)
134d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao#define DRM_IOCTL_R128_BLIT DRM_IOW(DRM_COMMAND_BASE + DRM_R128_BLIT, drm_r128_blit_t)
135d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao#define DRM_IOCTL_R128_DEPTH DRM_IOW(DRM_COMMAND_BASE + DRM_R128_DEPTH, drm_r128_depth_t)
136d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao#define DRM_IOCTL_R128_STIPPLE DRM_IOW(DRM_COMMAND_BASE + DRM_R128_STIPPLE, drm_r128_stipple_t)
13705d08e9716b5974d6ed08973f44930804890b902Christopher Ferris#define DRM_IOCTL_R128_INDIRECT DRM_IOWR(DRM_COMMAND_BASE + DRM_R128_INDIRECT, drm_r128_indirect_t)
138d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao#define DRM_IOCTL_R128_FULLSCREEN DRM_IOW(DRM_COMMAND_BASE + DRM_R128_FULLSCREEN, drm_r128_fullscreen_t)
139d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao#define DRM_IOCTL_R128_CLEAR2 DRM_IOW(DRM_COMMAND_BASE + DRM_R128_CLEAR2, drm_r128_clear2_t)
140d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao#define DRM_IOCTL_R128_GETPARAM DRM_IOWR(DRM_COMMAND_BASE + DRM_R128_GETPARAM, drm_r128_getparam_t)
14105d08e9716b5974d6ed08973f44930804890b902Christopher Ferris#define DRM_IOCTL_R128_FLIP DRM_IO(DRM_COMMAND_BASE + DRM_R128_FLIP)
142655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengtypedef struct drm_r128_init {
143d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  enum {
144d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao    R128_INIT_CCE = 0x01,
14505d08e9716b5974d6ed08973f44930804890b902Christopher Ferris    R128_CLEANUP_CCE = 0x02
146d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  } func;
147d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  unsigned long sarea_priv_offset;
148d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  int is_pci;
14905d08e9716b5974d6ed08973f44930804890b902Christopher Ferris  int cce_mode;
150d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  int cce_secure;
151d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  int ring_size;
152d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  int usec_timeout;
15305d08e9716b5974d6ed08973f44930804890b902Christopher Ferris  unsigned int fb_bpp;
154d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  unsigned int front_offset, front_pitch;
155d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  unsigned int back_offset, back_pitch;
156d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  unsigned int depth_bpp;
15705d08e9716b5974d6ed08973f44930804890b902Christopher Ferris  unsigned int depth_offset, depth_pitch;
158d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  unsigned int span_offset;
159d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  unsigned long fb_offset;
160d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  unsigned long mmio_offset;
16105d08e9716b5974d6ed08973f44930804890b902Christopher Ferris  unsigned long ring_offset;
162d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  unsigned long ring_rptr_offset;
163d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  unsigned long buffers_offset;
164d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  unsigned long agp_textures_offset;
16505d08e9716b5974d6ed08973f44930804890b902Christopher Ferris} drm_r128_init_t;
166655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengtypedef struct drm_r128_cce_stop {
167d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  int flush;
168d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  int idle;
16905d08e9716b5974d6ed08973f44930804890b902Christopher Ferris} drm_r128_cce_stop_t;
170655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengtypedef struct drm_r128_clear {
171d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  unsigned int flags;
172d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  unsigned int clear_color;
17305d08e9716b5974d6ed08973f44930804890b902Christopher Ferris  unsigned int clear_depth;
174d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  unsigned int color_mask;
175d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  unsigned int depth_mask;
176655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng} drm_r128_clear_t;
17705d08e9716b5974d6ed08973f44930804890b902Christopher Ferristypedef struct drm_r128_vertex {
178d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  int prim;
179d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  int idx;
180d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  int count;
18105d08e9716b5974d6ed08973f44930804890b902Christopher Ferris  int discard;
182655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng} drm_r128_vertex_t;
183655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengtypedef struct drm_r128_indices {
184d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  int prim;
18505d08e9716b5974d6ed08973f44930804890b902Christopher Ferris  int idx;
186d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  int start;
187d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  int end;
188d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  int discard;
18905d08e9716b5974d6ed08973f44930804890b902Christopher Ferris} drm_r128_indices_t;
190655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengtypedef struct drm_r128_blit {
191d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  int idx;
192d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  int pitch;
19305d08e9716b5974d6ed08973f44930804890b902Christopher Ferris  int offset;
194d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  int format;
195d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  unsigned short x, y;
196d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  unsigned short width, height;
19705d08e9716b5974d6ed08973f44930804890b902Christopher Ferris} drm_r128_blit_t;
198655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengtypedef struct drm_r128_depth {
199d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  enum {
200d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao    R128_WRITE_SPAN = 0x01,
20105d08e9716b5974d6ed08973f44930804890b902Christopher Ferris    R128_WRITE_PIXELS = 0x02,
202d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao    R128_READ_SPAN = 0x03,
203d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao    R128_READ_PIXELS = 0x04
204d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  } func;
20505d08e9716b5974d6ed08973f44930804890b902Christopher Ferris  int n;
206d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  int __user * x;
207d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  int __user * y;
208d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  unsigned int __user * buffer;
20905d08e9716b5974d6ed08973f44930804890b902Christopher Ferris  unsigned char __user * mask;
210655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng} drm_r128_depth_t;
211655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengtypedef struct drm_r128_stipple {
212d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  unsigned int __user * mask;
21305d08e9716b5974d6ed08973f44930804890b902Christopher Ferris} drm_r128_stipple_t;
214655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengtypedef struct drm_r128_indirect {
215d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  int idx;
216d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  int start;
21705d08e9716b5974d6ed08973f44930804890b902Christopher Ferris  int end;
218d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  int discard;
219655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng} drm_r128_indirect_t;
220655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengtypedef struct drm_r128_fullscreen {
22105d08e9716b5974d6ed08973f44930804890b902Christopher Ferris  enum {
222d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao    R128_INIT_FULLSCREEN = 0x01,
223d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao    R128_CLEANUP_FULLSCREEN = 0x02
224d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  } func;
22505d08e9716b5974d6ed08973f44930804890b902Christopher Ferris} drm_r128_fullscreen_t;
226655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#define R128_PARAM_IRQ_NR 1
227655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Chengtypedef struct drm_r128_getparam {
228d7db594b8d1dab36b711bd887a9dd21675c87243Tao Bao  int param;
22905d08e9716b5974d6ed08973f44930804890b902Christopher Ferris  void __user * value;
230655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng} drm_r128_getparam_t;
231106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris#ifdef __cplusplus
232106b3a8a7dc03c19a45e322de425ac56aafac358Christopher Ferris#endif
233655a7c081f83b8351ed5f11a6c6accd9458293a8Ben Cheng#endif
234