aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/char/drm/ffb_drv.h
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/char/drm/ffb_drv.h')
-rw-r--r--drivers/char/drm/ffb_drv.h433
1 files changed, 263 insertions, 170 deletions
diff --git a/drivers/char/drm/ffb_drv.h b/drivers/char/drm/ffb_drv.h
index 8bf7f1e143f1..582afa6dd2b4 100644
--- a/drivers/char/drm/ffb_drv.h
+++ b/drivers/char/drm/ffb_drv.h
@@ -5,7 +5,7 @@
5 */ 5 */
6 6
7/* Auxilliary clips. */ 7/* Auxilliary clips. */
8typedef struct { 8typedef struct {
9 volatile unsigned int min; 9 volatile unsigned int min;
10 volatile unsigned int max; 10 volatile unsigned int max;
11} ffb_auxclip, *ffb_auxclipPtr; 11} ffb_auxclip, *ffb_auxclipPtr;
@@ -15,172 +15,265 @@ typedef struct _ffb_fbc {
15 /* Next vertex registers, on the right we list which drawops 15 /* Next vertex registers, on the right we list which drawops
16 * use said register and the logical name the register has in 16 * use said register and the logical name the register has in
17 * that context. 17 * that context.
18 */ /* DESCRIPTION DRAWOP(NAME) */ 18 *//* DESCRIPTION DRAWOP(NAME) */
19/*0x00*/unsigned int pad1[3]; /* Reserved */ 19 /*0x00*/ unsigned int pad1[3];
20/*0x0c*/volatile unsigned int alpha; /* ALPHA Transparency */ 20 /* Reserved */
21/*0x10*/volatile unsigned int red; /* RED */ 21 /*0x0c*/ volatile unsigned int alpha;
22/*0x14*/volatile unsigned int green; /* GREEN */ 22 /* ALPHA Transparency */
23/*0x18*/volatile unsigned int blue; /* BLUE */ 23 /*0x10*/ volatile unsigned int red;
24/*0x1c*/volatile unsigned int z; /* DEPTH */ 24 /* RED */
25/*0x20*/volatile unsigned int y; /* Y triangle(DOYF) */ 25 /*0x14*/ volatile unsigned int green;
26 /* aadot(DYF) */ 26 /* GREEN */
27 /* ddline(DYF) */ 27 /*0x18*/ volatile unsigned int blue;
28 /* aaline(DYF) */ 28 /* BLUE */
29/*0x24*/volatile unsigned int x; /* X triangle(DOXF) */ 29 /*0x1c*/ volatile unsigned int z;
30 /* aadot(DXF) */ 30 /* DEPTH */
31 /* ddline(DXF) */ 31 /*0x20*/ volatile unsigned int y;
32 /* aaline(DXF) */ 32 /* Y triangle(DOYF) */
33/*0x28*/unsigned int pad2[2]; /* Reserved */ 33 /* aadot(DYF) */
34/*0x30*/volatile unsigned int ryf; /* Y (alias to DOYF) ddline(RYF) */ 34 /* ddline(DYF) */
35 /* aaline(RYF) */ 35 /* aaline(DYF) */
36 /* triangle(RYF) */ 36 /*0x24*/ volatile unsigned int x;
37/*0x34*/volatile unsigned int rxf; /* X ddline(RXF) */ 37 /* X triangle(DOXF) */
38 /* aaline(RXF) */ 38 /* aadot(DXF) */
39 /* triangle(RXF) */ 39 /* ddline(DXF) */
40/*0x38*/unsigned int pad3[2]; /* Reserved */ 40 /* aaline(DXF) */
41/*0x40*/volatile unsigned int dmyf; /* Y (alias to DOYF) triangle(DMYF) */ 41 /*0x28*/ unsigned int pad2[2];
42/*0x44*/volatile unsigned int dmxf; /* X triangle(DMXF) */ 42 /* Reserved */
43/*0x48*/unsigned int pad4[2]; /* Reserved */ 43 /*0x30*/ volatile unsigned int ryf;
44/*0x50*/volatile unsigned int ebyi; /* Y (alias to RYI) polygon(EBYI) */ 44 /* Y (alias to DOYF) ddline(RYF) */
45/*0x54*/volatile unsigned int ebxi; /* X polygon(EBXI) */ 45 /* aaline(RYF) */
46/*0x58*/unsigned int pad5[2]; /* Reserved */ 46 /* triangle(RYF) */
47/*0x60*/volatile unsigned int by; /* Y brline(RYI) */ 47 /*0x34*/ volatile unsigned int rxf;
48 /* fastfill(OP) */ 48 /* X ddline(RXF) */
49 /* polygon(YI) */ 49 /* aaline(RXF) */
50 /* rectangle(YI) */ 50 /* triangle(RXF) */
51 /* bcopy(SRCY) */ 51 /*0x38*/ unsigned int pad3[2];
52 /* vscroll(SRCY) */ 52 /* Reserved */
53/*0x64*/volatile unsigned int bx; /* X brline(RXI) */ 53 /*0x40*/ volatile unsigned int dmyf;
54 /* polygon(XI) */ 54 /* Y (alias to DOYF) triangle(DMYF) */
55 /* rectangle(XI) */ 55 /*0x44*/ volatile unsigned int dmxf;
56 /* bcopy(SRCX) */ 56 /* X triangle(DMXF) */
57 /* vscroll(SRCX) */ 57 /*0x48*/ unsigned int pad4[2];
58 /* fastfill(GO) */ 58 /* Reserved */
59/*0x68*/volatile unsigned int dy; /* destination Y fastfill(DSTY) */ 59 /*0x50*/ volatile unsigned int ebyi;
60 /* bcopy(DSRY) */ 60 /* Y (alias to RYI) polygon(EBYI) */
61 /* vscroll(DSRY) */ 61 /*0x54*/ volatile unsigned int ebxi;
62/*0x6c*/volatile unsigned int dx; /* destination X fastfill(DSTX) */ 62 /* X polygon(EBXI) */
63 /* bcopy(DSTX) */ 63 /*0x58*/ unsigned int pad5[2];
64 /* vscroll(DSTX) */ 64 /* Reserved */
65/*0x70*/volatile unsigned int bh; /* Y (alias to RYI) brline(DYI) */ 65 /*0x60*/ volatile unsigned int by;
66 /* dot(DYI) */ 66 /* Y brline(RYI) */
67 /* polygon(ETYI) */ 67 /* fastfill(OP) */
68 /* Height fastfill(H) */ 68 /* polygon(YI) */
69 /* bcopy(H) */ 69 /* rectangle(YI) */
70 /* vscroll(H) */ 70 /* bcopy(SRCY) */
71 /* Y count fastfill(NY) */ 71 /* vscroll(SRCY) */
72/*0x74*/volatile unsigned int bw; /* X dot(DXI) */ 72 /*0x64*/ volatile unsigned int bx;
73 /* brline(DXI) */ 73 /* X brline(RXI) */
74 /* polygon(ETXI) */ 74 /* polygon(XI) */
75 /* fastfill(W) */ 75 /* rectangle(XI) */
76 /* bcopy(W) */ 76 /* bcopy(SRCX) */
77 /* vscroll(W) */ 77 /* vscroll(SRCX) */
78 /* fastfill(NX) */ 78 /* fastfill(GO) */
79/*0x78*/unsigned int pad6[2]; /* Reserved */ 79 /*0x68*/ volatile unsigned int dy;
80/*0x80*/unsigned int pad7[32]; /* Reserved */ 80 /* destination Y fastfill(DSTY) */
81 81 /* bcopy(DSRY) */
82 /* vscroll(DSRY) */
83 /*0x6c*/ volatile unsigned int dx;
84 /* destination X fastfill(DSTX) */
85 /* bcopy(DSTX) */
86 /* vscroll(DSTX) */
87 /*0x70*/ volatile unsigned int bh;
88 /* Y (alias to RYI) brline(DYI) */
89 /* dot(DYI) */
90 /* polygon(ETYI) */
91 /* Height fastfill(H) */
92 /* bcopy(H) */
93 /* vscroll(H) */
94 /* Y count fastfill(NY) */
95 /*0x74*/ volatile unsigned int bw;
96 /* X dot(DXI) */
97 /* brline(DXI) */
98 /* polygon(ETXI) */
99 /* fastfill(W) */
100 /* bcopy(W) */
101 /* vscroll(W) */
102 /* fastfill(NX) */
103 /*0x78*/ unsigned int pad6[2];
104 /* Reserved */
105 /*0x80*/ unsigned int pad7[32];
106 /* Reserved */
107
82 /* Setup Unit's vertex state register */ 108 /* Setup Unit's vertex state register */
83/*100*/ volatile unsigned int suvtx; 109/*100*/ volatile unsigned int suvtx;
84/*104*/ unsigned int pad8[63]; /* Reserved */ 110 /*104*/ unsigned int pad8[63];
85 111 /* Reserved */
112
86 /* Frame Buffer Control Registers */ 113 /* Frame Buffer Control Registers */
87/*200*/ volatile unsigned int ppc; /* Pixel Processor Control */ 114 /*200*/ volatile unsigned int ppc;
88/*204*/ volatile unsigned int wid; /* Current WID */ 115 /* Pixel Processor Control */
89/*208*/ volatile unsigned int fg; /* FG data */ 116 /*204*/ volatile unsigned int wid;
90/*20c*/ volatile unsigned int bg; /* BG data */ 117 /* Current WID */
91/*210*/ volatile unsigned int consty; /* Constant Y */ 118 /*208*/ volatile unsigned int fg;
92/*214*/ volatile unsigned int constz; /* Constant Z */ 119 /* FG data */
93/*218*/ volatile unsigned int xclip; /* X Clip */ 120 /*20c*/ volatile unsigned int bg;
94/*21c*/ volatile unsigned int dcss; /* Depth Cue Scale Slope */ 121 /* BG data */
95/*220*/ volatile unsigned int vclipmin; /* Viewclip XY Min Bounds */ 122 /*210*/ volatile unsigned int consty;
96/*224*/ volatile unsigned int vclipmax; /* Viewclip XY Max Bounds */ 123 /* Constant Y */
97/*228*/ volatile unsigned int vclipzmin; /* Viewclip Z Min Bounds */ 124 /*214*/ volatile unsigned int constz;
98/*22c*/ volatile unsigned int vclipzmax; /* Viewclip Z Max Bounds */ 125 /* Constant Z */
99/*230*/ volatile unsigned int dcsf; /* Depth Cue Scale Front Bound */ 126 /*218*/ volatile unsigned int xclip;
100/*234*/ volatile unsigned int dcsb; /* Depth Cue Scale Back Bound */ 127 /* X Clip */
101/*238*/ volatile unsigned int dczf; /* Depth Cue Z Front */ 128 /*21c*/ volatile unsigned int dcss;
102/*23c*/ volatile unsigned int dczb; /* Depth Cue Z Back */ 129 /* Depth Cue Scale Slope */
103/*240*/ unsigned int pad9; /* Reserved */ 130 /*220*/ volatile unsigned int vclipmin;
104/*244*/ volatile unsigned int blendc; /* Alpha Blend Control */ 131 /* Viewclip XY Min Bounds */
105/*248*/ volatile unsigned int blendc1; /* Alpha Blend Color 1 */ 132 /*224*/ volatile unsigned int vclipmax;
106/*24c*/ volatile unsigned int blendc2; /* Alpha Blend Color 2 */ 133 /* Viewclip XY Max Bounds */
107/*250*/ volatile unsigned int fbramitc; /* FB RAM Interleave Test Control */ 134 /*228*/ volatile unsigned int vclipzmin;
108/*254*/ volatile unsigned int fbc; /* Frame Buffer Control */ 135 /* Viewclip Z Min Bounds */
109/*258*/ volatile unsigned int rop; /* Raster OPeration */ 136 /*22c*/ volatile unsigned int vclipzmax;
110/*25c*/ volatile unsigned int cmp; /* Frame Buffer Compare */ 137 /* Viewclip Z Max Bounds */
111/*260*/ volatile unsigned int matchab; /* Buffer AB Match Mask */ 138 /*230*/ volatile unsigned int dcsf;
112/*264*/ volatile unsigned int matchc; /* Buffer C(YZ) Match Mask */ 139 /* Depth Cue Scale Front Bound */
113/*268*/ volatile unsigned int magnab; /* Buffer AB Magnitude Mask */ 140 /*234*/ volatile unsigned int dcsb;
114/*26c*/ volatile unsigned int magnc; /* Buffer C(YZ) Magnitude Mask */ 141 /* Depth Cue Scale Back Bound */
115/*270*/ volatile unsigned int fbcfg0; /* Frame Buffer Config 0 */ 142 /*238*/ volatile unsigned int dczf;
116/*274*/ volatile unsigned int fbcfg1; /* Frame Buffer Config 1 */ 143 /* Depth Cue Z Front */
117/*278*/ volatile unsigned int fbcfg2; /* Frame Buffer Config 2 */ 144 /*23c*/ volatile unsigned int dczb;
118/*27c*/ volatile unsigned int fbcfg3; /* Frame Buffer Config 3 */ 145 /* Depth Cue Z Back */
119/*280*/ volatile unsigned int ppcfg; /* Pixel Processor Config */ 146 /*240*/ unsigned int pad9;
120/*284*/ volatile unsigned int pick; /* Picking Control */ 147 /* Reserved */
121/*288*/ volatile unsigned int fillmode; /* FillMode */ 148 /*244*/ volatile unsigned int blendc;
122/*28c*/ volatile unsigned int fbramwac; /* FB RAM Write Address Control */ 149 /* Alpha Blend Control */
123/*290*/ volatile unsigned int pmask; /* RGB PlaneMask */ 150 /*248*/ volatile unsigned int blendc1;
124/*294*/ volatile unsigned int xpmask; /* X PlaneMask */ 151 /* Alpha Blend Color 1 */
125/*298*/ volatile unsigned int ypmask; /* Y PlaneMask */ 152 /*24c*/ volatile unsigned int blendc2;
126/*29c*/ volatile unsigned int zpmask; /* Z PlaneMask */ 153 /* Alpha Blend Color 2 */
127/*2a0*/ ffb_auxclip auxclip[4]; /* Auxilliary Viewport Clip */ 154 /*250*/ volatile unsigned int fbramitc;
128 155 /* FB RAM Interleave Test Control */
156 /*254*/ volatile unsigned int fbc;
157 /* Frame Buffer Control */
158 /*258*/ volatile unsigned int rop;
159 /* Raster OPeration */
160 /*25c*/ volatile unsigned int cmp;
161 /* Frame Buffer Compare */
162 /*260*/ volatile unsigned int matchab;
163 /* Buffer AB Match Mask */
164 /*264*/ volatile unsigned int matchc;
165 /* Buffer C(YZ) Match Mask */
166 /*268*/ volatile unsigned int magnab;
167 /* Buffer AB Magnitude Mask */
168 /*26c*/ volatile unsigned int magnc;
169 /* Buffer C(YZ) Magnitude Mask */
170 /*270*/ volatile unsigned int fbcfg0;
171 /* Frame Buffer Config 0 */
172 /*274*/ volatile unsigned int fbcfg1;
173 /* Frame Buffer Config 1 */
174 /*278*/ volatile unsigned int fbcfg2;
175 /* Frame Buffer Config 2 */
176 /*27c*/ volatile unsigned int fbcfg3;
177 /* Frame Buffer Config 3 */
178 /*280*/ volatile unsigned int ppcfg;
179 /* Pixel Processor Config */
180 /*284*/ volatile unsigned int pick;
181 /* Picking Control */
182 /*288*/ volatile unsigned int fillmode;
183 /* FillMode */
184 /*28c*/ volatile unsigned int fbramwac;
185 /* FB RAM Write Address Control */
186 /*290*/ volatile unsigned int pmask;
187 /* RGB PlaneMask */
188 /*294*/ volatile unsigned int xpmask;
189 /* X PlaneMask */
190 /*298*/ volatile unsigned int ypmask;
191 /* Y PlaneMask */
192 /*29c*/ volatile unsigned int zpmask;
193 /* Z PlaneMask */
194 /*2a0*/ ffb_auxclip auxclip[4];
195 /* Auxilliary Viewport Clip */
196
129 /* New 3dRAM III support regs */ 197 /* New 3dRAM III support regs */
130/*2c0*/ volatile unsigned int rawblend2; 198/*2c0*/ volatile unsigned int rawblend2;
131/*2c4*/ volatile unsigned int rawpreblend; 199/*2c4*/ volatile unsigned int rawpreblend;
132/*2c8*/ volatile unsigned int rawstencil; 200/*2c8*/ volatile unsigned int rawstencil;
133/*2cc*/ volatile unsigned int rawstencilctl; 201/*2cc*/ volatile unsigned int rawstencilctl;
134/*2d0*/ volatile unsigned int threedram1; 202/*2d0*/ volatile unsigned int threedram1;
135/*2d4*/ volatile unsigned int threedram2; 203/*2d4*/ volatile unsigned int threedram2;
136/*2d8*/ volatile unsigned int passin; 204/*2d8*/ volatile unsigned int passin;
137/*2dc*/ volatile unsigned int rawclrdepth; 205/*2dc*/ volatile unsigned int rawclrdepth;
138/*2e0*/ volatile unsigned int rawpmask; 206/*2e0*/ volatile unsigned int rawpmask;
139/*2e4*/ volatile unsigned int rawcsrc; 207/*2e4*/ volatile unsigned int rawcsrc;
140/*2e8*/ volatile unsigned int rawmatch; 208/*2e8*/ volatile unsigned int rawmatch;
141/*2ec*/ volatile unsigned int rawmagn; 209/*2ec*/ volatile unsigned int rawmagn;
142/*2f0*/ volatile unsigned int rawropblend; 210/*2f0*/ volatile unsigned int rawropblend;
143/*2f4*/ volatile unsigned int rawcmp; 211/*2f4*/ volatile unsigned int rawcmp;
144/*2f8*/ volatile unsigned int rawwac; 212/*2f8*/ volatile unsigned int rawwac;
145/*2fc*/ volatile unsigned int fbramid; 213/*2fc*/ volatile unsigned int fbramid;
146 214
147/*300*/ volatile unsigned int drawop; /* Draw OPeration */ 215 /*300*/ volatile unsigned int drawop;
148/*304*/ unsigned int pad10[2]; /* Reserved */ 216 /* Draw OPeration */
149/*30c*/ volatile unsigned int lpat; /* Line Pattern control */ 217 /*304*/ unsigned int pad10[2];
150/*310*/ unsigned int pad11; /* Reserved */ 218 /* Reserved */
151/*314*/ volatile unsigned int fontxy; /* XY Font coordinate */ 219 /*30c*/ volatile unsigned int lpat;
152/*318*/ volatile unsigned int fontw; /* Font Width */ 220 /* Line Pattern control */
153/*31c*/ volatile unsigned int fontinc; /* Font Increment */ 221 /*310*/ unsigned int pad11;
154/*320*/ volatile unsigned int font; /* Font bits */ 222 /* Reserved */
155/*324*/ unsigned int pad12[3]; /* Reserved */ 223 /*314*/ volatile unsigned int fontxy;
156/*330*/ volatile unsigned int blend2; 224 /* XY Font coordinate */
157/*334*/ volatile unsigned int preblend; 225 /*318*/ volatile unsigned int fontw;
158/*338*/ volatile unsigned int stencil; 226 /* Font Width */
159/*33c*/ volatile unsigned int stencilctl; 227 /*31c*/ volatile unsigned int fontinc;
228 /* Font Increment */
229 /*320*/ volatile unsigned int font;
230 /* Font bits */
231 /*324*/ unsigned int pad12[3];
232 /* Reserved */
233/*330*/ volatile unsigned int blend2;
234/*334*/ volatile unsigned int preblend;
235/*338*/ volatile unsigned int stencil;
236/*33c*/ volatile unsigned int stencilctl;
160 237
161/*340*/ unsigned int pad13[4]; /* Reserved */ 238 /*340*/ unsigned int pad13[4];
162/*350*/ volatile unsigned int dcss1; /* Depth Cue Scale Slope 1 */ 239 /* Reserved */
163/*354*/ volatile unsigned int dcss2; /* Depth Cue Scale Slope 2 */ 240 /*350*/ volatile unsigned int dcss1;
164/*358*/ volatile unsigned int dcss3; /* Depth Cue Scale Slope 3 */ 241 /* Depth Cue Scale Slope 1 */
165/*35c*/ volatile unsigned int widpmask; 242 /*354*/ volatile unsigned int dcss2;
166/*360*/ volatile unsigned int dcs2; 243 /* Depth Cue Scale Slope 2 */
167/*364*/ volatile unsigned int dcs3; 244 /*358*/ volatile unsigned int dcss3;
168/*368*/ volatile unsigned int dcs4; 245 /* Depth Cue Scale Slope 3 */
169/*36c*/ unsigned int pad14; /* Reserved */ 246/*35c*/ volatile unsigned int widpmask;
170/*370*/ volatile unsigned int dcd2; 247/*360*/ volatile unsigned int dcs2;
171/*374*/ volatile unsigned int dcd3; 248/*364*/ volatile unsigned int dcs3;
172/*378*/ volatile unsigned int dcd4; 249/*368*/ volatile unsigned int dcs4;
173/*37c*/ unsigned int pad15; /* Reserved */ 250 /*36c*/ unsigned int pad14;
174/*380*/ volatile unsigned int pattern[32]; /* area Pattern */ 251 /* Reserved */
175/*400*/ unsigned int pad16[8]; /* Reserved */ 252/*370*/ volatile unsigned int dcd2;
176/*420*/ volatile unsigned int reset; /* chip RESET */ 253/*374*/ volatile unsigned int dcd3;
177/*424*/ unsigned int pad17[247]; /* Reserved */ 254/*378*/ volatile unsigned int dcd4;
178/*800*/ volatile unsigned int devid; /* Device ID */ 255 /*37c*/ unsigned int pad15;
179/*804*/ unsigned int pad18[63]; /* Reserved */ 256 /* Reserved */
180/*900*/ volatile unsigned int ucsr; /* User Control & Status Register */ 257 /*380*/ volatile unsigned int pattern[32];
181/*904*/ unsigned int pad19[31]; /* Reserved */ 258 /* area Pattern */
182/*980*/ volatile unsigned int mer; /* Mode Enable Register */ 259 /*400*/ unsigned int pad16[8];
183/*984*/ unsigned int pad20[1439]; /* Reserved */ 260 /* Reserved */
261 /*420*/ volatile unsigned int reset;
262 /* chip RESET */
263 /*424*/ unsigned int pad17[247];
264 /* Reserved */
265 /*800*/ volatile unsigned int devid;
266 /* Device ID */
267 /*804*/ unsigned int pad18[63];
268 /* Reserved */
269 /*900*/ volatile unsigned int ucsr;
270 /* User Control & Status Register */
271 /*904*/ unsigned int pad19[31];
272 /* Reserved */
273 /*980*/ volatile unsigned int mer;
274 /* Mode Enable Register */
275 /*984*/ unsigned int pad20[1439];
276 /* Reserved */
184} ffb_fbc, *ffb_fbcPtr; 277} ffb_fbc, *ffb_fbcPtr;
185 278
186struct ffb_hw_context { 279struct ffb_hw_context {
@@ -263,16 +356,16 @@ enum ffb_chip_type {
263 356
264typedef struct ffb_dev_priv { 357typedef struct ffb_dev_priv {
265 /* Misc software state. */ 358 /* Misc software state. */
266 int prom_node; 359 int prom_node;
267 enum ffb_chip_type ffb_type; 360 enum ffb_chip_type ffb_type;
268 u64 card_phys_base; 361 u64 card_phys_base;
269 struct miscdevice miscdev; 362 struct miscdevice miscdev;
270 363
271 /* Controller registers. */ 364 /* Controller registers. */
272 ffb_fbcPtr regs; 365 ffb_fbcPtr regs;
273 366
274 /* Context table. */ 367 /* Context table. */
275 struct ffb_hw_context *hw_state[FFB_MAX_CTXS]; 368 struct ffb_hw_context *hw_state[FFB_MAX_CTXS];
276} ffb_dev_priv_t; 369} ffb_dev_priv_t;
277 370
278extern unsigned long ffb_get_unmapped_area(struct file *filp, 371extern unsigned long ffb_get_unmapped_area(struct file *filp,
@@ -283,4 +376,4 @@ extern unsigned long ffb_get_unmapped_area(struct file *filp,
283extern void ffb_set_context_ioctls(void); 376extern void ffb_set_context_ioctls(void);
284extern drm_ioctl_desc_t DRM(ioctls)[]; 377extern drm_ioctl_desc_t DRM(ioctls)[];
285 378
286extern int ffb_driver_context_switch(drm_device_t *dev, int old, int new); 379extern int ffb_driver_context_switch(drm_device_t * dev, int old, int new);