summaryrefslogtreecommitdiff
path: root/Source/DirectFB/gfxdrivers/matrox/regs.h
blob: a419b8353ea576cb3720bcdeb1868e6f32c53cb3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
#ifndef __MATROX__REGS_H__
#define __MATROX__REGS_H__

#define U8_TO_F0915(x)          (((u32) ((x+1) << 15)) & 0x00FFFFFF)

#define RS16(val)               ( (u16)((s16)(val)))
#define RS18(val)               (((u32)((s32)(val)))&0x003ffff)
#define RS24(val)               (((u32)((s32)(val)))&0x0ffffff)
#define RS27(val)               (((u32)((s32)(val)))&0x7ffffff)

#define DWGSYNC          0x2C4C
#define SYNC_DMA_BUSY    0x8325340              /* just a random number */

#define RST              0x1E40
#define OPMODE           0x1E54

#define CACHEFLUSH       0x1FFF

/* CRTC2 registers */
#define C2CTL            0x3C10
#    define C2EN                0x00000001
#    define C2PIXCLKSEL_PCICLK  0x00000000
#    define C2PIXCLKSEL_VDOCLK  0x00000002
#    define C2PIXCLKSEL_PIXPLL  0x00000004
#    define C2PIXCLKSEL_VIDPLL  0x00000006 /* SYSPLL on G400 */
#    define C2PIXCLKSEL_VDCLK   0x00004000 /* G450/G550 only */
#    define C2PIXCLKSEL_CRISTAL 0x00004002 /* G450/G550 only */
#    define C2PIXCLKSEL_SYSPLL  0x00004004 /* G450/G550 only */
#    define C2PIXCLKDIS         0x00000008
#    define CRTCDACSEL          0x00100000
#    define C2DEPTH_15BPP       0x00200000
#    define C2DEPTH_16BPP       0x00400000
#    define C2DEPTH_32BPP       0x00800000
#    define C2DEPTH_YCBCR422    0x00A00000
#    define C2DEPTH_YCBCR420    0x00E00000
#    define C2VCBCRSINGLE       0x01000000
#    define C2INTERLACE         0x02000000
#    define C2FIELDLENGTH       0x04000000
#    define C2FIELDPOL          0x08000000
#    define C2VIDRSTMOD_FALLING 0x00000000
#    define C2VIDRSTMOD_RISING  0x10000000
#    define C2VIDRSTMOD_BOTH    0x20000000
#    define C2HPLOADEN          0x40000000
#    define C2VPLOADEN          0x80000000
#define C2HPARAM         0x3C14
#define C2HSYNC          0x3C18
#define C2VPARAM         0x3C1C
#define C2VSYNC          0x3C20
#define C2PRELOAD        0x3C24
#define C2STARTADD0      0x3C28
#define C2STARTADD1      0x3C2C
#define C2PL2STARTADD0   0x3C30
#define C2PL2STARTADD1   0x3C34
#define C2PL3STARTADD0   0x3C38
#define C2PL3STARTADD1   0x3C3C
#define C2OFFSET         0x3C40
#define C2MISC           0x3C44
#    define C2HSYNCPOL          0x00000100
#    define C2VSYNCPOL          0x00000200
#define C2VCOUNT         0x3C48
#    define C2FIELD             0x01000000
#define C2DATACTL        0x3C4C
#    define C2DITHEN            0x00000001
#    define C2YFILTEN           0x00000002
#    define C2CBCRFILTEN        0x00000004
#    define C2SUBPICEN          0x00000008
#    define C2NTSCEN            0x00000010
#    define C2STATICKEYEN       0x00000020
#    define C2OFFSETDIVEN       0x00000040
#    define C2UYVYFMT           0x00000080
#    define C2STATICKEY         0x1F000000
#define C2SUBPICLUT      0x3C50
#define C2SPICSTARTADD0  0x3C54
#define C2SPICSTARTADD1  0x3C58

/* Backend scaler registers */
#define BESA1ORG         0x3D00
#define BESA2ORG         0x3D04
#define BESB1ORG         0x3D08
#define BESB2ORG         0x3D0C
#define BESA1CORG        0x3D10
#define BESA2CORG        0x3D14
#define BESB1CORG        0x3D18
#define BESB2CORG        0x3D1C
#define BESA1C3ORG       0x3D60
#define BESA2C3ORG       0x3D64
#define BESB1C3ORG       0x3D68
#define BESB2C3ORG       0x3D6C

#define BESCTL           0x3D20
#    define BESEN             0x00000001
#    define BESV1SRCSTP       0x00000040
#    define BESV2SRCSTP       0x00000080
#    define BESHFEN           0x00000400
#    define BESVFEN           0x00000800
#    define BESCUPS           0x00010000
#    define BES420PL          0x00020000

#define BESGLOBCTL       0x3DC0
#    define BESCORDER         0x00000008
#    define BES3PLANE         0x00000020
#    define BESUYVYFMT        0x00000040
#    define BESPROCAMP        0x00000080
#    define BESRGB15          0x00000100
#    define BESRGB16          0x00000200
#    define BESRGB32          0x00000300

#define BESHCOORD        0x3D28
#define BESHISCAL        0x3D30
#define BESHSRCEND       0x3D3C
#define BESHSRCLST       0x3D50
#define BESHSRCST        0x3D38
#define BESLUMACTL       0x3D40
#define BESPITCH         0x3D24
#define BESSTATUS        0x3DC4
#define BESV1SRCLST      0x3D54
#define BESV2SRCLST      0x3D58
#define BESV1WGHT        0x3D48
#define BESV2WGHT        0x3D4C
#define BESVCOORD        0x3D2C
#define BESVISCAL        0x3D34

/* DAC Registers */
#define DAC_INDEX        0x3C00
#define DAC_DATA         0x3C0A

#define MGAREG_VCOUNT    0x1e20

/* Alpha registers */

#define ALPHASTART       0x2C70
#define ALPHAXINC        0x2C74
#define ALPHAYINC        0x2C78

#define ALPHACTRL        0x2C7C
#define      SRC_ZERO                    0x00000000
#define      SRC_ONE                     0x00000001
#define      SRC_DST_COLOR               0x00000002
#define      SRC_ONE_MINUS_DST_COLOR     0x00000003
#define      SRC_ALPHA                   0x00000004
#define      SRC_ONE_MINUS_SRC_ALPHA     0x00000005
#define      SRC_DST_ALPHA               0x00000006
#define      SRC_ONE_MINUS_DST_ALPHA     0x00000007
#define      SRC_SRC_ALPHA_SATURATE      0x00000008

#define      DST_ZERO                    0x00000000
#define      DST_ONE                     0x00000010
#define      DST_SRC_COLOR               0x00000020
#define      DST_ONE_MINUS_SRC_COLOR     0x00000030
#define      DST_SRC_ALPHA               0x00000040
#define      DST_ONE_MINUS_SRC_ALPHA     0x00000050
#define      DST_DST_ALPHA               0x00000060
#define      DST_ONE_MINUS_DST_ALPHA     0x00000070

#define      ALPHACHANNEL                0x00000100
#define      VIDEOALPHA                  0x00000200

#define      DIFFUSEDALPHA               0x01000000
#define      MODULATEDALPHA              0x02000000

/* Texture registers */

#define TEXCTL        0x2C30
#define TEXCTL2       0x2C3C
#define TEXFILTER     0x2C58
#define TEXWIDTH      0x2C28
#define TEXHEIGHT     0x2C2C
#define TEXORG        0x2C24
#define TEXORG1       0x2CA4
#define TEXORG2       0x2CA8
#define TEXORG3       0x2CAC
#define TEXORG4       0x2CB0
#define TEXTRANS      0x2C34
#define TEXTRANSHIGH  0x2C38
#define TDUALSTAGE0   0x2CF8
#define TDUALSTAGE1   0x2CFC

#define TMR0          0x2C00
#define TMR1          0x2C04
#define TMR2          0x2C08
#define TMR3          0x2C0C
#define TMR4          0x2C10
#define TMR5          0x2C14
#define TMR6          0x2C18
#define TMR7          0x2C1C
#define TMR8          0x2C20

#define CUR_XWINDOWS    0x03

/* TEXCTL */
#define TW4           0x00000000
#define TW8           0x00000001
#define TW15          0x00000002
#define TW16          0x00000003
#define TW12          0x00000004

#define TW32          0x00000006
#define TW8A          0x00000007
#define TW8AL         0x00000008
#define TW422         0x0000000A
#define TW422UYVY     0x0000000B

#define TFORMAT       0x0000000F
#define TPITCHLIN     0x00000100
#define TPITCHEXT     0x000FFE00

#define NOPERSPECTIVE 0x00200000
#define TAKEY         0x02000000
#define TAMASK        0x04000000
#define CLAMPUV       0x18000000

#define DECALCKEY     0x01000000
#define TMODULATE     0x20000000
#define STRANS        0x40000000


/* TEXTCTL2 */
#define IDECAL        0x00000002
#define DECALDIS      0x00000004
#define CKSTRANSDIS   0x00000010


/* TEXFILTER */
#define MIN_NRST      0x00000000
#define MIN_BILIN     0x00000002
#define MIN_ANISO     0x0000000D
#define MAG_NRST      0x00000000
#define MAG_BILIN     0x00000020
#define FILTER_ALPHA  0x00100000

/* SGN */
#define SGN_BRKLEFT   0x00000100

#define DSTORG        0x2cb8
#define SRCORG        0x2cb4

#define MACCESS        0x1C04
#     define PW8       0x00000000
#     define PW16      0x00000001
#     define PW32      0x00000002
#     define PW24      0x00000003
#     define ZW16      0x00000000
#     define ZW32      0x00000008
#     define ZW15      0x00000010
#     define ZW24      0x00000018
#     define BYPASS332 0x10000000
#     define TLUTLOAD  0x20000000
#     define NODITHER  0x40000000
#     define DIT555    0x80000000


#define EXECUTE       0x100      /* or with register to execute a programmed
                                    accel command */

#define DWGCTL        0x1C00     /* Drawing control */
     /* opcod - Operation code */
#     define OP_LINE_OPEN      0x00
#     define OP_AUTOLINE_OPEN  0x01
#     define OP_LINE_CLOSE     0x02
#     define OP_AUTOLINE_CLOSE 0x03
#     define OP_TRAP           0x04
#     define OP_TRAP_ILOAD     0x05
#     define OP_TEXTURE_TRAP   0x06
#     define OP_ILOAD_HIQH     0x07
#     define OP_BITBLT         0x08
#     define OP_ILOAD          0x09
#     define OP_IDUMP          0x0A
#     define OP_FBITBLT        0x0C
#     define OP_ILOAD_SCALE    0x0D
#     define OP_ILOAD_HIQHV    0x0E
#     define OP_ILOAD_FILTER   0x0F

     /* atype - Access type */
#     define ATYPE_RPL         0x00
#     define ATYPE_RSTR        0x10
#     define ATYPE_ZI          0x30
#     define ATYPE_BLK         0x40
#     define ATYPE_I           0x70

     /* Flag */
#     define LINEAR            0x80
#     define NOCLIP          (1<<31)
#     define TRANSC          (1<<30)

     /* zmode - Z drawing mode */
#     define ZMODE_NOZCMP      0x000
#     define ZMODE_ZE          0x200
#     define ZMODE_ZNE         0x300
#     define ZMODE_ZLT         0x400
#     define ZMODE_ZLTE        0x500
#     define ZMODE_ZGT         0x600
#     define ZMODE_ZGTE        0x700

     /* Flags */
#     define SOLID             0x0800
#     define ARZERO            0x1000
#     define SGNZERO           0x2000
#     define SHFTZERO          0x4000

     /* bop - Boolean operation */
#     define BOP_CLEAR         0x00000
#     define BOP_NOR           0x10000
#     define BOP_COPYINV       0x30000
#     define BOP_INVERT        0x50000
#     define BOP_XOR           0x60000
#     define BOP_NAND          0x70000
#     define BOP_AND           0x80000
#     define BOP_EQUIV         0x90000
#     define BOP_NOOP          0xA0000
#     define BOP_IMP           0xB0000
#     define BOP_COPY          0xC0000
#     define BOP_OR            0xE0000
#     define BOP_SET           0xF0000

     /* bltmod - Blit mode selection */
#     define BLTMOD_BMONOLEF   0x00000000
#     define BLTMOD_BMONOWF    0x08000000
#     define BLTMOD_BPLAN      0x02000000
#     define BLTMOD_BFCOL      0x04000000
#     define BLTMOD_BUYUV      0x1C000000
#     define BLTMOD_BU32BGR    0x06000000
#     define BLTMOD_BU32RGB    0x0E000000
#     define BLTMOD_BU24BGR    0x16000000
#     define BLTMOD_BU24RGB    0x1E000000

#define ZORG          0x1C0C
#define PAT0          0x1C10
#define PAT1          0x1C14
#define PLNWT         0x1C1C
#define BCOL          0x1C20
#define FCOL          0x1C24
#define SRC0          0x1C30
#define SRC1          0x1C34
#define SRC2          0x1C38
#define SRC3          0x1C3C
#define XYSTRT        0x1C40
#define XYEND         0x1C44
#define SHIFT         0x1C50
#define DMAPAD        0x1C54
#define SGN           0x1C58
#define LEN           0x1C5C
#define AR0           0x1C60
#define AR1           0x1C64
#define AR2           0x1C68
#define AR3           0x1C6C
#define AR4           0x1C70
#define AR5           0x1C74
#define AR6           0x1C78
#define CXBNDRY       0x1C80
#define FXBNDRY       0x1C84
#define YDSTLEN       0x1C88
#define PITCH         0x1C8C
#define YDST          0x1C90
#define YDSTORG       0x1C94
#define YTOP          0x1C98
#define YBOT          0x1C9C
#define CXLEFT        0x1CA0
#define CXRIGHT       0x1CA4
#define FXLEFT        0x1CA8
#define FXRIGHT       0x1CAC
#define XDST          0x1CB0
#define DR0           0x1CC0
#define DR2           0x1CC8
#define DR3           0x1CCC
#define DR4           0x1CD0
#define DR6           0x1CD8
#define DR7           0x1CDC
#define DR8           0x1CE0
#define WO            0x1CE4
#define DR10          0x1CE8
#define DR11          0x1CEC
#define DR12          0x1CF0
#define DR14          0x1CF8
#define DR15          0x1CFC

#define FIFOSTATUS    0x1E10

#define STATUS        0x1E14
#     define DWGENGSTS   0x10000
#     define ENDPRDMASTS 0x20000

#define IEN           0x1E1C

#define BLIT_LEFT     1
#define BLIT_UP       4


#define SDXL          0x0002
#define SDXR          0x0020


/* DAC registers */

#define XMISCCTRL      0x1E
#     define DACPDN             0x01
#     define MFCSEL_MAFC        0x02
#     define MFCSEL_PANELLINK   0x04
#     define MFCSEL_DIS         0x06
#     define MFCSEL_MASK        0x06
#     define VGA8DAC            0x08
#     define RAMCS              0x10
#     define VDOUTSEL_MAFC12    0x00
#     define VDOUTSEL_BYPASS656 0x40
#     define VDOUTSEL_CRTC2RGB  0x80
#     define VDOUTSEL_CRTC2656  0xC0
#     define VDOUTSEL_MASK      0xE0

#define XGENIOCTRL     0x2A
#define XGENIODATA     0x2B

#define XKEYOPMODE     0x51

#define XCOLMSK0RED    0x52
#define XCOLMSK0GREEN  0x53
#define XCOLMSK0BLUE   0x54

#define XCOLKEY0RED    0x55
#define XCOLKEY0GREEN  0x56
#define XCOLKEY0BLUE   0x57

#define XDISPCTRL      0x8A
#     define DAC1OUTSEL_DIS     0x00
#     define DAC1OUTSEL_EN      0x01
#     define DAC1OUTSEL_MASK    0x01
#     define DAC2OUTSEL_DIS     0x00
#     define DAC2OUTSEL_CRTC1   0x04
#     define DAC2OUTSEL_CRTC2   0x08
#     define DAC2OUTSEL_TVE     0x0C
#     define DAC2OUTSEL_MASK    0x0C
#     define PANOUTSEL_DIS      0x00
#     define PANOUTSEL_CRTC1    0x20
#     define PANOUTSEL_CRTC2RGB 0x40
#     define PANOUTSEL_CRTC2656 0x60
#     define PANOUTSEL_MASK     0x60

#define XSYNCCTRL      0x8B
#     define DAC1HSOFF          0x01
#     define DAC1VSOFF          0x02
#     define DAC1HSPOL          0x04
#     define DAC1VSPOL          0x08
#     define DAC2HSOFF          0x10
#     define DAC2VSOFF          0x20
#     define DAC2HSPOL          0x40
#     define DAC2VSPOL          0x80

#define XPWRCTRL       0xA0
#     define DAC2PDN            0x01
#     define VIDPLLPDN          0x02
#     define PANPDN             0x04
#     define RFIFOPDN           0x08
#     define CFIFOPDN           0x10

#endif