1 #ifndef __MATROX__REGS_H__
2 #define __MATROX__REGS_H__
3 
4 #define U8_TO_F0915(x)          (((u32) ((x+1) << 15)) & 0x00FFFFFF)
5 
6 #define RS16(val)               ( (u16)((s16)(val)))
7 #define RS18(val)               (((u32)((s32)(val)))&0x003ffff)
8 #define RS24(val)               (((u32)((s32)(val)))&0x0ffffff)
9 #define RS27(val)               (((u32)((s32)(val)))&0x7ffffff)
10 
11 #define DWGSYNC          0x2C4C
12 #define SYNC_DMA_BUSY    0x8325340              /* just a random number */
13 
14 #define RST              0x1E40
15 #define OPMODE           0x1E54
16 
17 #define CACHEFLUSH       0x1FFF
18 
19 /* CRTC2 registers */
20 #define C2CTL            0x3C10
21 #    define C2EN                0x00000001
22 #    define C2PIXCLKSEL_PCICLK  0x00000000
23 #    define C2PIXCLKSEL_VDOCLK  0x00000002
24 #    define C2PIXCLKSEL_PIXPLL  0x00000004
25 #    define C2PIXCLKSEL_VIDPLL  0x00000006 /* SYSPLL on G400 */
26 #    define C2PIXCLKSEL_VDCLK   0x00004000 /* G450/G550 only */
27 #    define C2PIXCLKSEL_CRISTAL 0x00004002 /* G450/G550 only */
28 #    define C2PIXCLKSEL_SYSPLL  0x00004004 /* G450/G550 only */
29 #    define C2PIXCLKDIS         0x00000008
30 #    define CRTCDACSEL          0x00100000
31 #    define C2DEPTH_15BPP       0x00200000
32 #    define C2DEPTH_16BPP       0x00400000
33 #    define C2DEPTH_32BPP       0x00800000
34 #    define C2DEPTH_YCBCR422    0x00A00000
35 #    define C2DEPTH_YCBCR420    0x00E00000
36 #    define C2VCBCRSINGLE       0x01000000
37 #    define C2INTERLACE         0x02000000
38 #    define C2FIELDLENGTH       0x04000000
39 #    define C2FIELDPOL          0x08000000
40 #    define C2VIDRSTMOD_FALLING 0x00000000
41 #    define C2VIDRSTMOD_RISING  0x10000000
42 #    define C2VIDRSTMOD_BOTH    0x20000000
43 #    define C2HPLOADEN          0x40000000
44 #    define C2VPLOADEN          0x80000000
45 #define C2HPARAM         0x3C14
46 #define C2HSYNC          0x3C18
47 #define C2VPARAM         0x3C1C
48 #define C2VSYNC          0x3C20
49 #define C2PRELOAD        0x3C24
50 #define C2STARTADD0      0x3C28
51 #define C2STARTADD1      0x3C2C
52 #define C2PL2STARTADD0   0x3C30
53 #define C2PL2STARTADD1   0x3C34
54 #define C2PL3STARTADD0   0x3C38
55 #define C2PL3STARTADD1   0x3C3C
56 #define C2OFFSET         0x3C40
57 #define C2MISC           0x3C44
58 #    define C2HSYNCPOL          0x00000100
59 #    define C2VSYNCPOL          0x00000200
60 #define C2VCOUNT         0x3C48
61 #    define C2FIELD             0x01000000
62 #define C2DATACTL        0x3C4C
63 #    define C2DITHEN            0x00000001
64 #    define C2YFILTEN           0x00000002
65 #    define C2CBCRFILTEN        0x00000004
66 #    define C2SUBPICEN          0x00000008
67 #    define C2NTSCEN            0x00000010
68 #    define C2STATICKEYEN       0x00000020
69 #    define C2OFFSETDIVEN       0x00000040
70 #    define C2UYVYFMT           0x00000080
71 #    define C2STATICKEY         0x1F000000
72 #define C2SUBPICLUT      0x3C50
73 #define C2SPICSTARTADD0  0x3C54
74 #define C2SPICSTARTADD1  0x3C58
75 
76 /* Backend scaler registers */
77 #define BESA1ORG         0x3D00
78 #define BESA2ORG         0x3D04
79 #define BESB1ORG         0x3D08
80 #define BESB2ORG         0x3D0C
81 #define BESA1CORG        0x3D10
82 #define BESA2CORG        0x3D14
83 #define BESB1CORG        0x3D18
84 #define BESB2CORG        0x3D1C
85 #define BESA1C3ORG       0x3D60
86 #define BESA2C3ORG       0x3D64
87 #define BESB1C3ORG       0x3D68
88 #define BESB2C3ORG       0x3D6C
89 
90 #define BESCTL           0x3D20
91 #    define BESEN             0x00000001
92 #    define BESV1SRCSTP       0x00000040
93 #    define BESV2SRCSTP       0x00000080
94 #    define BESHFEN           0x00000400
95 #    define BESVFEN           0x00000800
96 #    define BESCUPS           0x00010000
97 #    define BES420PL          0x00020000
98 
99 #define BESGLOBCTL       0x3DC0
100 #    define BESCORDER         0x00000008
101 #    define BES3PLANE         0x00000020
102 #    define BESUYVYFMT        0x00000040
103 #    define BESPROCAMP        0x00000080
104 #    define BESRGB15          0x00000100
105 #    define BESRGB16          0x00000200
106 #    define BESRGB32          0x00000300
107 
108 #define BESHCOORD        0x3D28
109 #define BESHISCAL        0x3D30
110 #define BESHSRCEND       0x3D3C
111 #define BESHSRCLST       0x3D50
112 #define BESHSRCST        0x3D38
113 #define BESLUMACTL       0x3D40
114 #define BESPITCH         0x3D24
115 #define BESSTATUS        0x3DC4
116 #define BESV1SRCLST      0x3D54
117 #define BESV2SRCLST      0x3D58
118 #define BESV1WGHT        0x3D48
119 #define BESV2WGHT        0x3D4C
120 #define BESVCOORD        0x3D2C
121 #define BESVISCAL        0x3D34
122 
123 /* DAC Registers */
124 #define DAC_INDEX        0x3C00
125 #define DAC_DATA         0x3C0A
126 
127 #define MGAREG_VCOUNT    0x1e20
128 
129 /* Alpha registers */
130 
131 #define ALPHASTART       0x2C70
132 #define ALPHAXINC        0x2C74
133 #define ALPHAYINC        0x2C78
134 
135 #define ALPHACTRL        0x2C7C
136 #define      SRC_ZERO                    0x00000000
137 #define      SRC_ONE                     0x00000001
138 #define      SRC_DST_COLOR               0x00000002
139 #define      SRC_ONE_MINUS_DST_COLOR     0x00000003
140 #define      SRC_ALPHA                   0x00000004
141 #define      SRC_ONE_MINUS_SRC_ALPHA     0x00000005
142 #define      SRC_DST_ALPHA               0x00000006
143 #define      SRC_ONE_MINUS_DST_ALPHA     0x00000007
144 #define      SRC_SRC_ALPHA_SATURATE      0x00000008
145 
146 #define      DST_ZERO                    0x00000000
147 #define      DST_ONE                     0x00000010
148 #define      DST_SRC_COLOR               0x00000020
149 #define      DST_ONE_MINUS_SRC_COLOR     0x00000030
150 #define      DST_SRC_ALPHA               0x00000040
151 #define      DST_ONE_MINUS_SRC_ALPHA     0x00000050
152 #define      DST_DST_ALPHA               0x00000060
153 #define      DST_ONE_MINUS_DST_ALPHA     0x00000070
154 
155 #define      ALPHACHANNEL                0x00000100
156 #define      VIDEOALPHA                  0x00000200
157 
158 #define      DIFFUSEDALPHA               0x01000000
159 #define      MODULATEDALPHA              0x02000000
160 
161 /* Texture registers */
162 
163 #define TEXCTL        0x2C30
164 #define TEXCTL2       0x2C3C
165 #define TEXFILTER     0x2C58
166 #define TEXWIDTH      0x2C28
167 #define TEXHEIGHT     0x2C2C
168 #define TEXORG        0x2C24
169 #define TEXORG1       0x2CA4
170 #define TEXORG2       0x2CA8
171 #define TEXORG3       0x2CAC
172 #define TEXORG4       0x2CB0
173 #define TEXTRANS      0x2C34
174 #define TEXTRANSHIGH  0x2C38
175 #define TDUALSTAGE0   0x2CF8
176 #define TDUALSTAGE1   0x2CFC
177 
178 #define TMR0          0x2C00
179 #define TMR1          0x2C04
180 #define TMR2          0x2C08
181 #define TMR3          0x2C0C
182 #define TMR4          0x2C10
183 #define TMR5          0x2C14
184 #define TMR6          0x2C18
185 #define TMR7          0x2C1C
186 #define TMR8          0x2C20
187 
188 #define CUR_XWINDOWS    0x03
189 
190 /* TEXCTL */
191 #define TW4           0x00000000
192 #define TW8           0x00000001
193 #define TW15          0x00000002
194 #define TW16          0x00000003
195 #define TW12          0x00000004
196 
197 #define TW32          0x00000006
198 #define TW8A          0x00000007
199 #define TW8AL         0x00000008
200 #define TW422         0x0000000A
201 #define TW422UYVY     0x0000000B
202 
203 #define TFORMAT       0x0000000F
204 #define TPITCHLIN     0x00000100
205 #define TPITCHEXT     0x000FFE00
206 
207 #define NOPERSPECTIVE 0x00200000
208 #define TAKEY         0x02000000
209 #define TAMASK        0x04000000
210 #define CLAMPUV       0x18000000
211 
212 #define DECALCKEY     0x01000000
213 #define TMODULATE     0x20000000
214 #define STRANS        0x40000000
215 
216 
217 /* TEXTCTL2 */
218 #define IDECAL        0x00000002
219 #define DECALDIS      0x00000004
220 #define CKSTRANSDIS   0x00000010
221 
222 
223 /* TEXFILTER */
224 #define MIN_NRST      0x00000000
225 #define MIN_BILIN     0x00000002
226 #define MIN_ANISO     0x0000000D
227 #define MAG_NRST      0x00000000
228 #define MAG_BILIN     0x00000020
229 #define FILTER_ALPHA  0x00100000
230 
231 /* SGN */
232 #define SGN_BRKLEFT   0x00000100
233 
234 #define DSTORG        0x2cb8
235 #define SRCORG        0x2cb4
236 
237 #define MACCESS        0x1C04
238 #     define PW8       0x00000000
239 #     define PW16      0x00000001
240 #     define PW32      0x00000002
241 #     define PW24      0x00000003
242 #     define ZW16      0x00000000
243 #     define ZW32      0x00000008
244 #     define ZW15      0x00000010
245 #     define ZW24      0x00000018
246 #     define BYPASS332 0x10000000
247 #     define TLUTLOAD  0x20000000
248 #     define NODITHER  0x40000000
249 #     define DIT555    0x80000000
250 
251 
252 #define EXECUTE       0x100      /* or with register to execute a programmed
253                                     accel command */
254 
255 #define DWGCTL        0x1C00     /* Drawing control */
256      /* opcod - Operation code */
257 #     define OP_LINE_OPEN      0x00
258 #     define OP_AUTOLINE_OPEN  0x01
259 #     define OP_LINE_CLOSE     0x02
260 #     define OP_AUTOLINE_CLOSE 0x03
261 #     define OP_TRAP           0x04
262 #     define OP_TRAP_ILOAD     0x05
263 #     define OP_TEXTURE_TRAP   0x06
264 #     define OP_ILOAD_HIQH     0x07
265 #     define OP_BITBLT         0x08
266 #     define OP_ILOAD          0x09
267 #     define OP_IDUMP          0x0A
268 #     define OP_FBITBLT        0x0C
269 #     define OP_ILOAD_SCALE    0x0D
270 #     define OP_ILOAD_HIQHV    0x0E
271 #     define OP_ILOAD_FILTER   0x0F
272 
273      /* atype - Access type */
274 #     define ATYPE_RPL         0x00
275 #     define ATYPE_RSTR        0x10
276 #     define ATYPE_ZI          0x30
277 #     define ATYPE_BLK         0x40
278 #     define ATYPE_I           0x70
279 
280      /* Flag */
281 #     define LINEAR            0x80
282 #     define NOCLIP          (1<<31)
283 #     define TRANSC          (1<<30)
284 
285      /* zmode - Z drawing mode */
286 #     define ZMODE_NOZCMP      0x000
287 #     define ZMODE_ZE          0x200
288 #     define ZMODE_ZNE         0x300
289 #     define ZMODE_ZLT         0x400
290 #     define ZMODE_ZLTE        0x500
291 #     define ZMODE_ZGT         0x600
292 #     define ZMODE_ZGTE        0x700
293 
294      /* Flags */
295 #     define SOLID             0x0800
296 #     define ARZERO            0x1000
297 #     define SGNZERO           0x2000
298 #     define SHFTZERO          0x4000
299 
300      /* bop - Boolean operation */
301 #     define BOP_CLEAR         0x00000
302 #     define BOP_NOR           0x10000
303 #     define BOP_COPYINV       0x30000
304 #     define BOP_INVERT        0x50000
305 #     define BOP_XOR           0x60000
306 #     define BOP_NAND          0x70000
307 #     define BOP_AND           0x80000
308 #     define BOP_EQUIV         0x90000
309 #     define BOP_NOOP          0xA0000
310 #     define BOP_IMP           0xB0000
311 #     define BOP_COPY          0xC0000
312 #     define BOP_OR            0xE0000
313 #     define BOP_SET           0xF0000
314 
315      /* bltmod - Blit mode selection */
316 #     define BLTMOD_BMONOLEF   0x00000000
317 #     define BLTMOD_BMONOWF    0x08000000
318 #     define BLTMOD_BPLAN      0x02000000
319 #     define BLTMOD_BFCOL      0x04000000
320 #     define BLTMOD_BUYUV      0x1C000000
321 #     define BLTMOD_BU32BGR    0x06000000
322 #     define BLTMOD_BU32RGB    0x0E000000
323 #     define BLTMOD_BU24BGR    0x16000000
324 #     define BLTMOD_BU24RGB    0x1E000000
325 
326 #define ZORG          0x1C0C
327 #define PAT0          0x1C10
328 #define PAT1          0x1C14
329 #define PLNWT         0x1C1C
330 #define BCOL          0x1C20
331 #define FCOL          0x1C24
332 #define SRC0          0x1C30
333 #define SRC1          0x1C34
334 #define SRC2          0x1C38
335 #define SRC3          0x1C3C
336 #define XYSTRT        0x1C40
337 #define XYEND         0x1C44
338 #define SHIFT         0x1C50
339 #define DMAPAD        0x1C54
340 #define SGN           0x1C58
341 #define LEN           0x1C5C
342 #define AR0           0x1C60
343 #define AR1           0x1C64
344 #define AR2           0x1C68
345 #define AR3           0x1C6C
346 #define AR4           0x1C70
347 #define AR5           0x1C74
348 #define AR6           0x1C78
349 #define CXBNDRY       0x1C80
350 #define FXBNDRY       0x1C84
351 #define YDSTLEN       0x1C88
352 #define PITCH         0x1C8C
353 #define YDST          0x1C90
354 #define YDSTORG       0x1C94
355 #define YTOP          0x1C98
356 #define YBOT          0x1C9C
357 #define CXLEFT        0x1CA0
358 #define CXRIGHT       0x1CA4
359 #define FXLEFT        0x1CA8
360 #define FXRIGHT       0x1CAC
361 #define XDST          0x1CB0
362 #define DR0           0x1CC0
363 #define DR2           0x1CC8
364 #define DR3           0x1CCC
365 #define DR4           0x1CD0
366 #define DR6           0x1CD8
367 #define DR7           0x1CDC
368 #define DR8           0x1CE0
369 #define WO            0x1CE4
370 #define DR10          0x1CE8
371 #define DR11          0x1CEC
372 #define DR12          0x1CF0
373 #define DR14          0x1CF8
374 #define DR15          0x1CFC
375 
376 #define FIFOSTATUS    0x1E10
377 
378 #define STATUS        0x1E14
379 #     define DWGENGSTS   0x10000
380 #     define ENDPRDMASTS 0x20000
381 
382 #define IEN           0x1E1C
383 
384 #define BLIT_LEFT     1
385 #define BLIT_UP       4
386 
387 
388 #define SDXL          0x0002
389 #define SDXR          0x0020
390 
391 
392 /* DAC registers */
393 
394 #define XMISCCTRL      0x1E
395 #     define DACPDN             0x01
396 #     define MFCSEL_MAFC        0x02
397 #     define MFCSEL_PANELLINK   0x04
398 #     define MFCSEL_DIS         0x06
399 #     define MFCSEL_MASK        0x06
400 #     define VGA8DAC            0x08
401 #     define RAMCS              0x10
402 #     define VDOUTSEL_MAFC12    0x00
403 #     define VDOUTSEL_BYPASS656 0x40
404 #     define VDOUTSEL_CRTC2RGB  0x80
405 #     define VDOUTSEL_CRTC2656  0xC0
406 #     define VDOUTSEL_MASK      0xE0
407 
408 #define XGENIOCTRL     0x2A
409 #define XGENIODATA     0x2B
410 
411 #define XKEYOPMODE     0x51
412 
413 #define XCOLMSK0RED    0x52
414 #define XCOLMSK0GREEN  0x53
415 #define XCOLMSK0BLUE   0x54
416 
417 #define XCOLKEY0RED    0x55
418 #define XCOLKEY0GREEN  0x56
419 #define XCOLKEY0BLUE   0x57
420 
421 #define XDISPCTRL      0x8A
422 #     define DAC1OUTSEL_DIS     0x00
423 #     define DAC1OUTSEL_EN      0x01
424 #     define DAC1OUTSEL_MASK    0x01
425 #     define DAC2OUTSEL_DIS     0x00
426 #     define DAC2OUTSEL_CRTC1   0x04
427 #     define DAC2OUTSEL_CRTC2   0x08
428 #     define DAC2OUTSEL_TVE     0x0C
429 #     define DAC2OUTSEL_MASK    0x0C
430 #     define PANOUTSEL_DIS      0x00
431 #     define PANOUTSEL_CRTC1    0x20
432 #     define PANOUTSEL_CRTC2RGB 0x40
433 #     define PANOUTSEL_CRTC2656 0x60
434 #     define PANOUTSEL_MASK     0x60
435 
436 #define XSYNCCTRL      0x8B
437 #     define DAC1HSOFF          0x01
438 #     define DAC1VSOFF          0x02
439 #     define DAC1HSPOL          0x04
440 #     define DAC1VSPOL          0x08
441 #     define DAC2HSOFF          0x10
442 #     define DAC2VSOFF          0x20
443 #     define DAC2HSPOL          0x40
444 #     define DAC2VSPOL          0x80
445 
446 #define XPWRCTRL       0xA0
447 #     define DAC2PDN            0x01
448 #     define VIDPLLPDN          0x02
449 #     define PANPDN             0x04
450 #     define RFIFOPDN           0x08
451 #     define CFIFOPDN           0x10
452 
453 #endif
454 
455