source: trunk/src/opengl/glide/cvg/incsrc/cvgdefs.h

Last change on this file was 2888, checked in by sandervl, 26 years ago

Created Voodoo 2 dir

File size: 41.7 KB
Line 
1/*-*-c++-*-*/
2#ifndef __CVGDEFS_H__
3#define __CVGDEFS_H__
4
5/*
6** THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED ONLY
7** PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO RIGHT
8** TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DFX
9** INTERACTIVE, INC. A COPY OF THIS LICENSE MAY BE OBTAINED FROM THE
10** DISTRIBUTOR OR BY CONTACTING 3DFX INTERACTIVE INC(info@3dfx.com).
11** THIS PROGRAM IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
12** EXPRESSED OR IMPLIED. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR A
13** FULL TEXT OF THE NON-WARRANTY PROVISIONS.
14**
15** USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT TO
16** RESTRICTIONS AS SET FORTH IN SUBDIVISION (C)(1)(II) OF THE RIGHTS IN
17** TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 252.227-7013,
18** AND/OR IN SIMILAR OR SUCCESSOR CLAUSES IN THE FAR, DOD OR NASA FAR
19** SUPPLEMENT. UNPUBLISHED RIGHTS RESERVED UNDER THE COPYRIGHT LAWS OF
20** THE UNITED STATES.
21**
22** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
23**
24** $Revision: 1.1 $
25** $Date: 2000-02-25 00:37:49 $
26*/
27
28//----------------------- CMDFIFO Section ---------------------------
29//----------------------- CMDFIFO Section ---------------------------
30//----------------------- CMDFIFO Section ---------------------------
31
32// CVG/H3 abstraction
33#define SST_IS_CMDFIFO_ENABLED(sst) (sst->fbiInit7 & SST_EN_CMDFIFO)
34
35//----------------- SST cmdFifoBase bits ---------------------------
36#define SST_CMDFIFO_START_SHIFT 0
37#define SST_CMDFIFO_START (0x3FF<<SST_CMDFIFO_START_SHIFT)
38#define SST_CMDFIFO_END_SHIFT 16
39#define SST_CMDFIFO_END (0x3FF<<SST_CMDFIFO_END_SHIFT)
40
41// SST COMMAND PACKET defines
42#define SSTCP_PKT_SIZE 3
43#define SSTCP_PKT SST_MASK(SSTCP_PKT_SIZE)
44#define SSTCP_PKT0 0
45#define SSTCP_PKT1 1
46#define SSTCP_PKT2 2
47#define SSTCP_PKT3 3
48#define SSTCP_PKT4 4
49#define SSTCP_PKT5 5
50#define SSTCP_PKT6 6
51#define SSTCP_PKT7 7
52
53#define SSTCP_BOGUS_WORDS_SHIFT 29
54#define SSTCP_BOGUS_WORDS (7 << SSTCP_BOGUS_WORDS_SHIFT)
55
56// packet 0 defines
57#define SSTCP_PKT0_FUNC_SHIFT 3
58#define SSTCP_PKT0_FUNC (7 << SSTCP_PKT0_FUNC_SHIFT)
59#define SSTCP_PKT0_NOP ((0<<SSTCP_PKT0_FUNC_SHIFT) | SSTCP_PKT0)
60#define SSTCP_PKT0_JSR ((1<<SSTCP_PKT0_FUNC_SHIFT) | SSTCP_PKT0)
61#define SSTCP_PKT0_RET ((2<<SSTCP_PKT0_FUNC_SHIFT) | SSTCP_PKT0)
62#define SSTCP_PKT0_JMP_LOCAL ((3<<SSTCP_PKT0_FUNC_SHIFT) | SSTCP_PKT0)
63#define SSTCP_PKT0_JMP_AGP ((4<<SSTCP_PKT0_FUNC_SHIFT) | SSTCP_PKT0)
64#define SSTCP_PKT0_ADDR_SHIFT 6
65#define SSTCP_PKT0_ADDR (0x7FFFFF<<SSTCP_PKT0_ADDR_SHIFT)
66
67// packet 1 defines
68#define SSTCP_REGBASE_SHIFT SSTCP_PKT_SIZE
69#define SSTCP_REGBASE ((0xFFF)<<SSTCP_REGBASE_SHIFT)
70#define SSTCP_INC BIT(15)
71#define SSTCP_PKT1_NWORDS_SHIFT 16
72#define SSTCP_PKT1_NWORDS (0xFFFFUL<<SSTCP_PKT1_NWORDS_SHIFT)
73
74// packet 2 defines
75#define SSTCP_PKT2_MASK_SHIFT SSTCP_PKT_SIZE
76#define SSTCP_PKT2_MASK (0x1FFFFFFFUL<<SSTCP_PKT2_MASK_SHIFT)
77
78// packet 3 defines
79#define SSTCP_PKT3_CMD_SHIFT SSTCP_PKT_SIZE
80#define SSTCP_PKT3_CMD (0x7<<SSTCP_PKT3_CMD_SHIFT)
81# define SSTCP_PKT3_BDDBDD (0<<SSTCP_PKT3_CMD_SHIFT)
82# define SSTCP_PKT3_BDDDDD (1<<SSTCP_PKT3_CMD_SHIFT)
83# define SSTCP_PKT3_DDDDDD (2<<SSTCP_PKT3_CMD_SHIFT)
84#define SSTCP_PKT3_NUMVERTEX_SHIFT (SSTCP_PKT_SIZE+3)
85#define SSTCP_PKT3_NUMVERTEX (0xF << SSTCP_PKT3_NUMVERTEX_SHIFT)
86#define SSTCP_PKT3_PMASK_SHIFT (SSTCP_PKT_SIZE+3+4)
87#define SSTCP_PKT3_PMASK (0xFFFUL<<SSTCP_PKT3_PMASK_SHIFT)
88#define SSTCP_PKT3_SMODE_SHIFT (SSTCP_PKT3_PMASK_SHIFT+12)
89#define SSTCP_PKT3_SMODE (0x3FUL<<SSTCP_PKT3_SMODE_SHIFT)
90#define SSTCP_PKT3_PACKEDCOLOR BIT(28)
91
92// packet 4 defines
93#define SSTCP_REGBASE_SHIFT SSTCP_PKT_SIZE
94#define SSTCP_REGBASE ((0xFFF)<<SSTCP_REGBASE_SHIFT)
95#define SSTCP_PKT4_MASK_SHIFT 15
96#define SSTCP_PKT4_MASK (0x3FFFUL<<SSTCP_PKT4_MASK_SHIFT)
97
98// packet 5 defines
99#define SSTCP_PKT5_NWORDS_SHIFT 3
100#define SSTCP_PKT5_NWORDS (0x7FFFFUL<<SSTCP_PKT5_NWORDS_SHIFT)
101#define SSTCP_PKT5_BYTEN_WN_SHIFT 22
102#define SSTCP_PKT5_BYTEN_WN (0xFUL<<SSTCP_PKT5_BYTEN_WN_SHIFT)
103#define SSTCP_PKT5_BYTEN_W2_SHIFT 26
104#define SSTCP_PKT5_BYTEN_W2 (0xFUL<<SSTCP_PKT5_BYTEN_W2_SHIFT)
105#define SSTCP_PKT5_SPACE_SHIFT 30
106#define SSTCP_PKT5_SPACE (0x3UL<<SSTCP_PKT5_SPACE_SHIFT)
107#define SSTCP_PKT5_LFB (0x0UL<<SSTCP_PKT5_SPACE_SHIFT)
108#define SSTCP_PKT5_YUV (0x1UL<<SSTCP_PKT5_SPACE_SHIFT)
109#define SSTCP_PKT5_3DLFB (0x2UL<<SSTCP_PKT5_SPACE_SHIFT)
110#define SSTCP_PKT5_TEXPORT (0x3UL<<SSTCP_PKT5_SPACE_SHIFT)
111#define SSTCP_PKT5_BASEADDR 0x1FFFFFFUL
112
113//----------------------- 2D Section ---------------------------
114//----------------------- 2D Section ---------------------------
115//----------------------- 2D Section ---------------------------
116
117#define SSTG_XY_SIZE 11
118#define SSTG_BLIT_SIZE 12
119
120//----------------- SSTG CVG command bits ---------------------------
121#define SSTG_COMMAND_SHIFT 0
122#define SSTG_COMMAND (0x7<<SSTG_COMMAND_SHIFT)
123# define SSTG_BLT (0<<SSTG_COMMAND_SHIFT)
124# define SSTG_HOST_BLT (1<<SSTG_COMMAND_SHIFT)
125# define SSTG_RECTFILL (2<<SSTG_COMMAND_SHIFT)
126# define SSTG_FRECTFILL (3<<SSTG_COMMAND_SHIFT)
127
128#define SSTG_SRC_FORMAT_SHIFT 3
129# define SSTG_SRC_FORMAT (0x7UL << SSTG_SRC_FORMAT_SHIFT)
130# define SSTG_PIXFMT_1BPPstd (0x0UL << SSTG_SRC_FORMAT_SHIFT)
131# define SSTG_PIXFMT_1BPP (0x1UL << SSTG_SRC_FORMAT_SHIFT)
132# define SSTG_PIXFMT_16BPP (0x2UL << SSTG_SRC_FORMAT_SHIFT)
133# define SSTG_PIXFMT_24BPP (0x3UL << SSTG_SRC_FORMAT_SHIFT)
134# define SSTG_PIXFMT_24BPPdit2 (0x4UL << SSTG_SRC_FORMAT_SHIFT)
135# define SSTG_PIXFMT_24BPPdit4 (0x5UL << SSTG_SRC_FORMAT_SHIFT)
136#define SSTG_SRC_LANES_SHIFT 6
137# define SSTG_SRC_LANES (0x3UL << SSTG_SRC_LANES_SHIFT)
138# define SSTG_SRC_LANES_ARGB (0x0UL << SSTG_SRC_LANES_SHIFT)
139# define SSTG_SRC_LANES_ABGR (0x1UL << SSTG_SRC_LANES_SHIFT)
140# define SSTG_SRC_LANES_RGBA (0x2UL << SSTG_SRC_LANES_SHIFT)
141# define SSTG_SRC_LANES_BGRA (0x3UL << SSTG_SRC_LANES_SHIFT)
142
143#define SSTG_HOST_BYTE_SWIZZLE BIT(8)
144#define SSTG_HOST_WORD_SWIZZLE BIT(9)
145#define SSTG_EN_SRC_COLORKEY BIT(10)
146#define SSTG_EN_DST_COLORKEY BIT(12)
147#define SSTG_SRC_IS_TILED BIT(14)
148#define SSTG_DST_IS_TILED BIT(15)
149#define SSTG_EN_CLIP BIT(16)
150#define SSTG_TRANSPARENT BIT(17)
151
152#define SSTG_GO BIT(31)
153
154//----------------- SSTG baseAddr defines ---------------------------
155#define SSTG_LINEAR_STRIDE 0xFFF
156#define SSTG_TILES_INX 0x03F
157#define SSTG_TILES_BASEROW 0x3FF
158#define SSTG_TILES_INVERT_RS BIT(6)
159
160//----------------- SSTG rop defines ---------------------------
161#define SSTG_ROP_ZERO 0x0UL
162#define SSTG_ROP_NOR 0x1UL
163#define SSTG_ROP_ANDI 0x2UL
164#define SSTG_ROP_NSRC 0x3UL
165#define SSTG_ROP_ANDR 0x4UL
166#define SSTG_ROP_NDST 0x5UL
167#define SSTG_ROP_XOR 0x6UL
168#define SSTG_ROP_NAND 0x7UL
169#define SSTG_ROP_AND 0x8UL
170#define SSTG_ROP_XNOR 0x9UL
171#define SSTG_ROP_DST 0xaUL
172#define SSTG_ROP_ORI 0xbUL
173#define SSTG_ROP_SRC 0xcUL
174#define SSTG_ROP_ORR 0xdUL
175#define SSTG_ROP_OR 0xeUL
176#define SSTG_ROP_ONE 0xfUL
177
178
179//----------------------- 3D Section ---------------------------
180//----------------------- 3D Section ---------------------------
181//----------------------- 3D Section ---------------------------
182#define MAX_NUM_TMUS 3
183
184// SST commands
185#define SST_NOPCMD 1
186#define SST_TRIANGLECMD 2
187#define SST_FASTFILLCMD 3
188#define SST_SWAPBUFCMD 4
189#define SST_SBEGINTRICMD 5
190#define SST_SDRAWTRICMD 6
191
192// this crazy macro fixes the binary point within a floating point
193// number so that it has 'fracbits' to the right of the binary point
194// it also adds a '1' bit to the MSB so that slightly negative numbers
195// end up looking like twos complement numbers (they carry out from the '1')
196#define FLOAT_FIX(f,fracbits) ((f)+(float)(3<<(22-(fracbits))))
197
198#define SST_FLOAT(f,scale,shift) (unsigned long)((f)*((scale)*(float)(1<<shift)))
199#define SST_TLOD_MINMAX(lodmin,lodmax) \
200 (((lodmin) << (SST_LODMIN_SHIFT)) | \
201 ((lodmax) << (SST_LODMAX_SHIFT)))
202#define SST_TLOD_MINMAX_INT(lodmin,lodmax) \
203 (((lodmin) << (SST_LOD_FRACBITS+SST_LODMIN_SHIFT)) | \
204 ((lodmax) << (SST_LOD_FRACBITS+SST_LODMAX_SHIFT)))
205
206// this crazy macro tests the sign bit of a float by loading it into
207// an integer register and then testing the sign bit of the integer
208#define FLOAT_ISNEG(f) ((*(int *)(&(f))) < 0)
209
210// these crazy macros returns the sign of a number (1 if >= 0; -1 if < 0)
211#define ISIGN(x) (((x) | 0x40000000L) >> 30)
212#define FSIGN(f) ISIGN(*(long *)&f)
213
214#define BIT(n) (1UL<<(n))
215#define SST_MASK(n) (0xFFFFFFFFL >> (32-(n)))
216#define SST_MASK64(n) FX_MASK64(n)
217
218//----------------- SST binary point locations ---------------
219#define SST_LOD_SIZE 6
220#define SST_LOD_FRACBITS 2
221#define SST_XY_SIZE 16
222#define SST_XY_INTBITS 12
223#define SST_XY_FRACBITS 4
224#define SST_RGBA_SIZE 24
225#define SST_RGBA_INTBITS 8
226#define SST_RGBA_FRACBITS 12
227#define SST_Z_SIZE 32
228#define SST_Z_INTBITS 16
229#define SST_Z_FRACBITS 12
230// NOTE: below are ONLY for the fixed point registers
231#define SST_ST_SIZE 32
232#define SST_ST_INTBITS 14
233#define SST_ST_FRACBITS 18
234#define SST_W_SIZE 32
235#define SST_W_INTBITS 2
236#define SST_W_FRACBITS 30
237
238//----------------- SST status bits ---------------------------
239#define SST_FIFOLEVEL 0x3F
240#define SST_VRETRACE BIT(6)
241#define SST_FBI_BUSY BIT(7)
242#define SST_TMU_BUSY BIT(8)
243#define SST_TREX_BUSY SST_TMU_BUSY
244#define SST_BUSY BIT(9)
245#define SST_DISPLAYED_BUFFER_SHIFT 10
246#define SST_DISPLAYED_BUFFER (0x3<<SST_DISPLAYED_BUFFER_SHIFT)
247#define SST_MEMFIFOLEVEL_SHIFT 12
248#define SST_MEMFIFOLEVEL (0xFFFF<<SST_MEMFIFOLEVEL_SHIFT)
249#define SST_SWAPBUFPENDING_SHIFT 28
250#define SST_SWAPBUFPENDING (0x7<<SST_SWAPBUFPENDING_SHIFT)
251
252//----------------- SST intrCtrl bits ---------------------------
253#define SST_EN_HSYNC_RISING BIT(0)
254#define SST_EN_HSYNC_FALLING BIT(1)
255#define SST_EN_VSYNC_RISING BIT(2)
256#define SST_EN_VSYNC_FALLING BIT(3)
257#define SST_EN_PCI_FIFO_FULL BIT(4)
258#define SST_EN_USER_INTR BIT(5)
259#define SST_HSYNC_RISING BIT76)
260#define SST_HSYNC_FALLING BIT(7)
261#define SST_VSYNC_RISING BIT(8)
262#define SST_VSYNC_FALLING BIT(9)
263#define SST_PCI_FIFO_FULL BIT(10)
264#define SST_USER_INTR BIT(11)
265
266//----------------- SST lfbMode bits --------------------------
267#define SST_LFB_FORMAT_SHIFT 0
268#define SST_LFB_FORMAT (0xF<<SST_LFB_FORMAT_SHIFT)
269# define SST_LFB_565 (0<<SST_LFB_FORMAT_SHIFT)
270# define SST_LFB_555 (1<<SST_LFB_FORMAT_SHIFT)
271# define SST_LFB_1555 (2<<SST_LFB_FORMAT_SHIFT)
272# define SST_LFB_u1 (3<<SST_LFB_FORMAT_SHIFT)
273# define SST_LFB_888 (4<<SST_LFB_FORMAT_SHIFT)
274# define SST_LFB_8888 (5<<SST_LFB_FORMAT_SHIFT)
275# define SST_LFB_u2 (6<<SST_LFB_FORMAT_SHIFT)
276# define SST_LFB_u3 (7<<SST_LFB_FORMAT_SHIFT)
277# define SST_LFB_Z565 (12<<SST_LFB_FORMAT_SHIFT)
278# define SST_LFB_Z555 (13<<SST_LFB_FORMAT_SHIFT)
279# define SST_LFB_Z1555 (14<<SST_LFB_FORMAT_SHIFT)
280# define SST_LFB_ZZ (15<<SST_LFB_FORMAT_SHIFT)
281#define SST_LFB_WRITEBUFSELECT_SHIFT 4
282#define SST_LFB_WRITEBUFSELECT (0x3<<SST_LFB_WRITEBUFSELECT_SHIFT)
283# define SST_LFB_WRITEFRONTBUFFER (0<<SST_LFB_WRITEBUFSELECT_SHIFT)
284# define SST_LFB_WRITEBACKBUFFER (1<<SST_LFB_WRITEBUFSELECT_SHIFT)
285#define SST_LFB_READBUFSELECT_SHIFT 6
286#define SST_LFB_READBUFSELECT (0x3<<SST_LFB_READBUFSELECT_SHIFT)
287# define SST_LFB_READFRONTBUFFER (0<<SST_LFB_READBUFSELECT_SHIFT)
288# define SST_LFB_READBACKBUFFER (1<<SST_LFB_READBUFSELECT_SHIFT)
289# define SST_LFB_READDEPTHABUFFER (2<<SST_LFB_READBUFSELECT_SHIFT)
290# define SST_LFB_READAUXBUFFER SST_LFB_READDEPTHABUFFER
291#define SST_LFB_ENPIXPIPE BIT(8)
292#define SST_LFB_RGBALANES_SHIFT 9
293#define SST_LFB_RGBALANES (0x3<<SST_LFB_RGBALANES_SHIFT)
294# define SST_LFB_RGBALANES_ARGB (0<<SST_LFB_RGBALANES_SHIFT)
295# define SST_LFB_RGBALANES_ABGR (1<<SST_LFB_RGBALANES_SHIFT)
296# define SST_LFB_RGBALANES_RGBA (2<<SST_LFB_RGBALANES_SHIFT)
297# define SST_LFB_RGBALANES_BGRA (3<<SST_LFB_RGBALANES_SHIFT)
298#define SST_LFB_WRITE_SWAP16 BIT(11)
299#define SST_LFB_WRITE_BYTESWAP BIT(12)
300#define SST_LFB_YORIGIN BIT(13)
301#define SST_LFB_WSELECT BIT(14)
302#define SST_LFB_READ_SWAP16 BIT(15)
303#define SST_LFB_READ_BYTESWAP BIT(16)
304
305#define SST_LFB_ADDR_STRIDE 1024
306#define SST_LFB_ADDR_X_SHIFT 0
307#define SST_LFB_ADDR_X (0x3FF<<SST_LFB_ADDR_X_SHIFT)
308#define SST_LFB_ADDR_Y_SHIFT 10
309#define SST_LFB_ADDR_Y (0x3FF<<SST_LFB_ADDR_Y_SHIFT)
310
311
312
313//----------------- SST videoFilterRgbThreshold
314#define SST_VIDEOFILTER_BLUE_SHIFT 0
315#define SST_VIDEOFILTER_BLUE (0xff << SST_VIDEOFILTER_BLUE_SHIFT)
316#define SST_VIDEOFILTER_GREEN_SHIFT 8
317#define SST_VIDEOFILTER_GREEN (0xff << SST_VIDEOFILTER_GREEN_SHIFT)
318#define SST_VIDEOFILTER_RED_SHIFT 16
319#define SST_VIDEOFILTER_RED (0xff << SST_VIDEOFILTER_RED_SHIFT)
320
321//----------------- SST textureMode bits -----------------------
322#define SST_TPERSP_ST BIT(0)
323#define SST_TMINFILTER BIT(1)
324#define SST_TMAGFILTER BIT(2)
325#define SST_TCLAMPW BIT(3)
326#define SST_TLODDITHER BIT(4)
327#define SST_TNCCSELECT BIT(5) // selects which table
328#define SST_TCLAMPS BIT(6)
329#define SST_TCLAMPT BIT(7)
330#define SST_T8BIT(mode) ((mode&SST_TFORMAT)<SST_ARGB8332)
331#define SST_TFORMAT_SHIFT 8
332#define SST_TFORMAT (0xF<<SST_TFORMAT_SHIFT)
333# define SST_RGB332 (0<<SST_TFORMAT_SHIFT)
334# define SST_YIQ422 (1<<SST_TFORMAT_SHIFT)
335# define SST_A8 (2<<SST_TFORMAT_SHIFT)
336# define SST_I8 (3<<SST_TFORMAT_SHIFT)
337# define SST_AI44 (4<<SST_TFORMAT_SHIFT)
338# define SST_P8 (5<<SST_TFORMAT_SHIFT)
339# define SST_P8_ARGB6666 (6<<SST_TFORMAT_SHIFT)
340# define SST_ARGB8332 (8<<SST_TFORMAT_SHIFT)
341# define SST_AYIQ8422 (9<<SST_TFORMAT_SHIFT)
342# define SST_RGB565 (10<<SST_TFORMAT_SHIFT)
343# define SST_ARGB1555 (11<<SST_TFORMAT_SHIFT)
344# define SST_ARGB4444 (12<<SST_TFORMAT_SHIFT)
345# define SST_AI88 (13<<SST_TFORMAT_SHIFT)
346# define SST_AP88 (14<<SST_TFORMAT_SHIFT)
347#define SST_TC_ZERO_OTHER BIT(12)
348#define SST_TC_SUB_CLOCAL BIT(13)
349#define SST_TC_MSELECT_SHIFT 14
350#define SST_TC_MSELECT (0x7<<SST_TC_MSELECT_SHIFT)
351# define SST_TC_MONE (0<<SST_TC_MSELECT_SHIFT)
352# define SST_TC_MCLOCAL (1<<SST_TC_MSELECT_SHIFT)
353# define SST_TC_MAOTHER (2<<SST_TC_MSELECT_SHIFT)
354# define SST_TC_MALOCAL (3<<SST_TC_MSELECT_SHIFT)
355# define SST_TC_MLOD (4<<SST_TC_MSELECT_SHIFT)
356# define SST_TC_MLODFRAC (5<<SST_TC_MSELECT_SHIFT)
357#define SST_TC_REVERSE_BLEND BIT(17)
358#define SST_TC_ADD_CLOCAL BIT(18)
359#define SST_TC_ADD_ALOCAL BIT(19)
360#define SST_TC_INVERT_OUTPUT BIT(20)
361#define SST_TCA_ZERO_OTHER BIT(21)
362#define SST_TCA_SUB_CLOCAL BIT(22)
363#define SST_TCA_MSELECT_SHIFT 23
364#define SST_TCA_MSELECT (0x7<<SST_TCA_MSELECT_SHIFT)
365# define SST_TCA_MONE (0<<SST_TCA_MSELECT_SHIFT)
366# define SST_TCA_MCLOCAL (1<<SST_TCA_MSELECT_SHIFT)
367# define SST_TCA_MAOTHER (2<<SST_TCA_MSELECT_SHIFT)
368# define SST_TCA_MALOCAL (3<<SST_TCA_MSELECT_SHIFT)
369# define SST_TCA_MLOD (4<<SST_TCA_MSELECT_SHIFT)
370# define SST_TCA_MLODFRAC (5<<SST_TCA_MSELECT_SHIFT)
371#define SST_TCA_REVERSE_BLEND BIT(26)
372#define SST_TCA_ADD_CLOCAL BIT(27)
373#define SST_TCA_ADD_ALOCAL BIT(28)
374#define SST_TCA_INVERT_OUTPUT BIT(29)
375#define SST_TRILINEAR BIT(30)
376#define SST_SEQ_8_DOWNLD BIT(31)
377
378
379// here are some abstract constants that most people will be using
380// TC stands for Texture Combine (RGB channels)
381// TCA stands for Texture Combine Alpha (just the Alpha channel)
382// BLEND_ATT blends on the Alpha channel of the color passed from TMU to TMU
383// BLEND_ALOCAL blends on the Alpha channel of the local texture color
384// NOTE: and of the BLEND modes can be modified using SST_TC_REVERSE_BLEND
385// and/or SST_TCA_REVERSE_BLEND, these modifiers reverse the "polarity"
386// of the blend
387#define SST_TC_MZERO (SST_TC_MONE | SST_TC_REVERSE_BLEND)
388#define SST_TCA_MZERO (SST_TCA_MONE | SST_TCA_REVERSE_BLEND)
389
390#define SST_TCOMBINE_SHIFT 12 // RGB COMBINE MODES
391#define SST_TCOMBINE (0x1FF<<SST_TCOMBINE_SHIFT)
392# define SST_TC_REPLACE (SST_TC_ZERO_OTHER | SST_TC_ADD_CLOCAL)
393# define SST_TC_PASS (SST_TC_MONE)
394# define SST_TC_ADD (SST_TC_MONE | SST_TC_ADD_CLOCAL)
395# define SST_TC_SUB (SST_TC_SUB_CLOCAL | SST_TC_MONE)
396# define SST_TC_MULT (SST_TC_MCLOCAL | SST_TC_REVERSE_BLEND)
397# define SST_TC_ZERO (SST_TC_MZERO)
398# define SST_TC_ONE (SST_TC_MZERO | SST_TC_INVERT_OUTPUT)
399# define SST_TC_BLEND (SST_TC_SUB_CLOCAL | SST_TC_ADD_CLOCAL)
400# define SST_TC_BLEND_LOD (SST_TC_BLEND | SST_TC_MLOD)
401# define SST_TC_BLEND_LODFRAC (SST_TC_BLEND | SST_TC_MLODFRAC)
402# define SST_TC_BLEND_ATT (SST_TC_BLEND | SST_TC_MAOTHER)
403# define SST_TC_BLEND_ALOCAL (SST_TC_BLEND | SST_TC_MALOCAL)
404#define SST_TACOMBINE_SHIFT 21 // ALPHA COMBINE MODES
405#define SST_TACOMBINE (0x1FF<<SST_TACOMBINE_SHIFT)
406# define SST_TCA_REPLACE (SST_TCA_ZERO_OTHER | SST_TCA_ADD_CLOCAL)
407# define SST_TCA_PASS (SST_TCA_MONE)
408# define SST_TCA_ADD (SST_TCA_MONE | SST_TCA_ADD_CLOCAL)
409# define SST_TCA_SUB (SST_TCA_SUB_CLOCAL | SST_TCA_MONE)
410# define SST_TCA_MULT (SST_TCA_MCLOCAL | SST_TCA_REVERSE_BLEND)
411# define SST_TCA_ONE (SST_TCA_MZERO | SST_TCA_INVERT_OUTPUT)
412# define SST_TCA_ZERO (SST_TCA_MZERO)
413# define SST_TCA_BLEND (SST_TCA_SUB_CLOCAL | SST_TCA_ADD_CLOCAL)
414# define SST_TCA_BLEND_LOD (SST_TCA_BLEND | SST_TCA_MLOD)
415# define SST_TCA_BLEND_LODFRAC (SST_TCA_BLEND | SST_TCA_MLODFRAC)
416# define SST_TCA_BLEND_ATT (SST_TCA_BLEND | SST_TCA_MAOTHER)
417# define SST_TCA_BLEND_ALOCAL (SST_TCA_BLEND | SST_TCA_MALOCAL)
418#define SST_TMU_ACTIVE(texMode) \
419 ((texMode & (SST_TCOMBINE|SST_TACOMBINE)) != (SST_TC_PASS|SST_TCA_PASS))
420#define SST_TREX_ACTIVE(texMode) SST_TMU_ACTIVE(texMode)
421
422//----------------- SST tLOD bits -----------------------------
423#define SST_LODMIN_SHIFT 0 // 4.2 format
424#define SST_LODMIN (0x3F<<SST_LODMIN_SHIFT)
425#define SST_LODMAX_SHIFT 6
426#define SST_LODMAX (0x3F<<SST_LODMAX_SHIFT)
427#define SST_LODBIAS_SHIFT 12
428#define SST_LODBIAS (0x3F<<SST_LODBIAS_SHIFT)
429#define SST_LOD_ODD BIT(18)
430#define SST_LOD_TSPLIT BIT(19)
431#define SST_LOD_S_IS_WIDER BIT(20)
432#define SST_LOD_ASPECT_SHIFT 21
433#define SST_LOD_ASPECT (0x3<<SST_LOD_ASPECT_SHIFT)
434#define SST_LOD_ZEROFRAC BIT(23)
435#define SST_TMULTIBASEADDR BIT(24)
436#define SST_TDATA_SWIZZLE BIT(25)
437#define SST_TDATA_SWAP BIT(26)
438#define SST_TDIRECT_WRITE BIT(27)
439#define SST_TMIRRORS BIT(28)
440#define SST_TMIRRORT BIT(29)
441
442//----------------- SST tDetail bits --------------------------
443#define SST_DETAIL_MAX_SHIFT 0 // 8.0 format
444#define SST_DETAIL_MAX (0xFF<<SST_DETAIL_MAX_SHIFT)
445#define SST_DETAIL_BIAS_SHIFT 8 // 6.0 format signed
446#define SST_DETAIL_BIAS (0x3F<<SST_DETAIL_BIAS_SHIFT)
447#define SST_DETAIL_SCALE_SHIFT 14 // 3.0 format
448#define SST_DETAIL_SCALE (0x7<<SST_DETAIL_SCALE_SHIFT)
449#define SST_TMINFILTER_RGB BIT(17)
450#define SST_TMAGFILTER_RGB BIT(18)
451#define SST_TMINFILTER_A BIT(19)
452#define SST_TMAGFILTER_A BIT(20)
453#define SST_TFILTER_SEPARATE BIT(21)
454
455
456//----------------- SST fbzMode bits --------------------------
457#define SST_ENRECTCLIP BIT(0)
458#define SST_ENCHROMAKEY BIT(1)
459#define SST_ENSTIPPLE BIT(2)
460#define SST_WBUFFER BIT(3)
461#define SST_ENDEPTHBUFFER BIT(4)
462# define SST_ZFUNC_LT BIT(5)
463# define SST_ZFUNC_EQ BIT(6)
464# define SST_ZFUNC_GT BIT(7)
465# define SST_ZFUNC_SHIFT 5
466# define SST_ZFUNC ( 0x7 << SST_ZFUNC_SHIFT )
467#define SST_ENDITHER BIT(8)
468#define SST_RGBWRMASK BIT(9)
469#define SST_ZAWRMASK BIT(10)
470#define SST_DITHER2x2 BIT(11)
471#define SST_ENSTIPPLEPATTERN BIT(12)
472#define SST_ENALPHAMASK BIT(13)
473#define SST_DRAWBUFFER_SHIFT 14
474#define SST_DRAWBUFFER (0x3<<SST_DRAWBUFFER_SHIFT)
475#define SST_DRAWBUFFER_FRONT (0<<SST_DRAWBUFFER_SHIFT)
476#define SST_DRAWBUFFER_BACK (1<<SST_DRAWBUFFER_SHIFT)
477#define SST_ENZBIAS BIT(16)
478#define SST_YORIGIN BIT(17)
479#define SST_ENALPHABUFFER BIT(18)
480#define SST_ENDITHERSUBTRACT BIT(19)
481#define SST_ABLEND_DITHER_SUB_EN SST_ENDITHERSUBTRACT
482#define SST_ENDITHERSUBTRACT BIT(19)
483#define SST_ZCOMPARE_TO_ZACOLOR BIT(20)
484#define SST_DEPTH_FLOAT_SEL BIT(21)
485
486//----------------- SST fbzColorPath bits ---------------------------
487#define SST_RGBSELECT_SHIFT 0
488#define SST_RGBSELECT (0x3<<SST_RGBSELECT_SHIFT)
489# define SST_RGBSEL_RGBA (0<<SST_RGBSELECT_SHIFT)
490# define SST_RGBSEL_TMUOUT (1<<SST_RGBSELECT_SHIFT)
491# define SST_RGBSEL_TREXOUT SST_RGBSEL_TMUOUT
492# define SST_RGBSEL_C1 (2<<SST_RGBSELECT_SHIFT)
493# define SST_RGBSEL_LFB (3<<SST_RGBSELECT_SHIFT)
494#define SST_ASELECT_SHIFT 2
495#define SST_ASELECT (0x3<<SST_ASELECT_SHIFT)
496# define SST_ASEL_RGBA (0<<SST_ASELECT_SHIFT)
497# define SST_ASEL_TMUOUT (1<<SST_ASELECT_SHIFT)
498# define SST_ASEL_TREXOUT SST_ASEL_TMUOUT
499# define SST_ASEL_C1 (2<<SST_ASELECT_SHIFT)
500# define SST_ASEL_LFB (3<<SST_ASELECT_SHIFT)
501#define SST_LOCALSELECT_SHIFT 4
502#define SST_LOCALSELECT BIT(4)
503#define SST_ALOCALSELECT_SHIFT 5
504#define SST_ALOCALSELECT (0x3<<SST_ALOCALSELECT_SHIFT)
505#define SST_ALOCAL_ITERATOR (0<<SST_ALOCALSELECT_SHIFT)
506#define SST_ALOCAL_C0 (1<<SST_ALOCALSELECT_SHIFT)
507#define SST_ALOCAL_Z (2<<SST_ALOCALSELECT_SHIFT)
508#define SST_ALOCAL_W (3<<SST_ALOCALSELECT_SHIFT)
509#define SST_LOCALSELECT_OVERRIDE_WITH_ATEX BIT(7)
510#define SST_CC_ZERO_OTHER BIT(8)
511#define SST_CC_SUB_CLOCAL BIT(9)
512#define SST_CC_MSELECT_SHIFT 10
513#define SST_CC_MSELECT (0x7<<SST_CC_MSELECT_SHIFT)
514# define SST_CC_MONE (0<<SST_CC_MSELECT_SHIFT)
515# define SST_CC_MCLOCAL (1<<SST_CC_MSELECT_SHIFT)
516# define SST_CC_MAOTHER (2<<SST_CC_MSELECT_SHIFT)
517# define SST_CC_MALOCAL (3<<SST_CC_MSELECT_SHIFT)
518# define SST_CC_MATMU (4<<SST_CC_MSELECT_SHIFT)
519# define SST_CC_MATREX SST_CC_MATMU
520# define SST_CC_MRGBTMU (5<<SST_CC_MSELECT_SHIFT)
521#define SST_CC_REVERSE_BLEND BIT(13)
522#define SST_CC_ADD_CLOCAL BIT(14)
523#define SST_CC_ADD_ALOCAL BIT(15)
524#define SST_CC_INVERT_OUTPUT BIT(16)
525#define SST_CCA_ZERO_OTHER BIT(17)
526#define SST_CCA_SUB_CLOCAL BIT(18)
527#define SST_CCA_MSELECT_SHIFT 19
528#define SST_CCA_MSELECT (0x7<<SST_CCA_MSELECT_SHIFT)
529# define SST_CCA_MONE (0<<SST_CCA_MSELECT_SHIFT)
530# define SST_CCA_MCLOCAL (1<<SST_CCA_MSELECT_SHIFT)
531# define SST_CCA_MAOTHER (2<<SST_CCA_MSELECT_SHIFT)
532# define SST_CCA_MALOCAL (3<<SST_CCA_MSELECT_SHIFT)
533# define SST_CCA_MATMU (4<<SST_CCA_MSELECT_SHIFT)
534# define SST_CCA_MATREX SST_CCA_MATMU
535#define SST_CCA_REVERSE_BLEND BIT(22)
536#define SST_CCA_ADD_CLOCAL BIT(23)
537#define SST_CCA_ADD_ALOCAL BIT(24)
538#define SST_CCA_INVERT_OUTPUT BIT(25)
539#define SST_PARMADJUST BIT(26)
540#define SST_ENTEXTUREMAP BIT(27)
541#define SST_RGBAZ_CLAMP BIT(28)
542#define SST_ENANTIALIAS BIT(29)
543
544
545// here are some abstract constants that most people will be using
546// CC stands for Color Combine (RGB channels)
547// CCA stands for Color Combine Alpha (just the Alpha channel)
548// BLEND_ATT blends on the Alpha channel of the color passed from TMU to TMU
549// BLEND_ALOCAL blends on the Alpha channel of the local texture color
550// NOTE: and of the BLEND modes can be modified using SST_CC_REVERSE_BLEND
551// and/or SST_CCA_REVERSE_BLEND, these modifiers reverse the "polarity"
552// of the blend
553#define SST_CC_MZERO (SST_CC_MONE | SST_CC_REVERSE_BLEND)
554#define SST_CCA_MZERO (SST_CCA_MONE | SST_CCA_REVERSE_BLEND)
555
556#define SST_CCOMBINE_SHIFT 8 // RGB COMBINE MODES
557#define SST_CCOMBINE (0x1FF<<SST_CCOMBINE_SHIFT)
558# define SST_CC_REPLACE (SST_CC_ZERO_OTHER | SST_CC_ADD_CLOCAL)
559# define SST_CC_PASS (SST_CC_MONE)
560# define SST_CC_ADD (SST_CC_MONE | SST_CC_ADD_CLOCAL)
561# define SST_CC_SUB (SST_CC_SUB_CLOCAL | SST_CC_MONE)
562# define SST_CC_MULT (SST_CC_MCLOCAL | SST_CC_REVERSE_BLEND)
563# define SST_CC_ZERO (SST_CC_MZERO)
564# define SST_CC_ONE (SST_CC_MZERO | SST_CC_INVERT_OUTPUT)
565# define SST_CC_BLEND (SST_CC_SUB_CLOCAL | SST_CC_ADD_CLOCAL)
566# define SST_CC_BLEND_ATT (SST_CC_BLEND | SST_CC_MAOTHER)
567# define SST_CC_BLEND_ATEX (SST_CC_BLEND | SST_CC_MATMU)
568# define SST_CC_BLEND_ATEX_REV (SST_CC_BLEND | SST_CC_MATMU | SST_CC_REVERSE_BLEND)
569# define SST_CC_BLEND_ATT_REV (SST_CC_BLEND | SST_CC_MAOTHER | SST_CC_REVERSE_BLEND)
570# define SST_CC_BLEND_ALOCAL (SST_CC_BLEND | SST_CC_MALOCAL)
571#define SST_CACOMBINE_SHIFT 17 // ALPHA COMBINE MODES
572#define SST_CACOMBINE (0x1FF<<SST_CACOMBINE_SHIFT)
573# define SST_CCA_REPLACE (SST_CCA_ZERO_OTHER | SST_CCA_ADD_CLOCAL)
574# define SST_CCA_PASS (SST_CCA_MONE)
575# define SST_CCA_ADD (SST_CCA_MONE | SST_CCA_ADD_CLOCAL)
576# define SST_CCA_SUB (SST_CCA_SUB_CLOCAL | SST_CCA_MONE)
577# define SST_CCA_MULT (SST_CCA_MCLOCAL | SST_CCA_REVERSE_BLEND)
578# define SST_CCA_ONE (SST_CCA_MZERO | SST_CCA_INVERT_OUTPUT)
579# define SST_CCA_ZERO (SST_CCA_MZERO)
580# define SST_CCA_BLEND (SST_CCA_SUB_CLOCAL | SST_CCA_ADD_CLOCAL)
581# define SST_CCA_BLEND_ATT (SST_CCA_BLEND | SST_CCA_MAOTHER)
582# define SST_CCA_BLEND_ATEX (SST_CCA_BLEND | SST_CCA_MATMU)
583# define SST_CCA_BLEND_ATEX_REV (SST_CCA_BLEND | SST_CCA_MATMU | SST_CCA_REVERSE_BLEN)
584# define SST_CCA_BLEND_ATT_REV (SST_CCA_BLEND | SST_CCA_MAOTHER | SST_CCA_REVERSE_BLEND)
585# define SST_CCA_BLEND_ALOCAL (SST_CCA_BLEND | SST_CCA_MALOCAL)
586
587
588//----------------- SST fogMode bits ---------------------------
589#define SST_ENFOGGING BIT(0) // Afog*Cfog + (1-Afog)*Color
590#define SST_FOGADD BIT(1) // generates (1-Afog)*Color
591#define SST_FOGMULT BIT(2) // generates Afog*Cfog
592#define SST_FOG_ALPHA BIT(3) // use Alpha iterator to control fog
593#define SST_FOG_Z BIT(4) // use Z iterator to control fog
594#define SST_FOG_CONSTANT BIT(5) // simply add Cfog to color and clamp
595#define SST_FOG_DITHER BIT(6) // dither the Afog
596#define SST_FOG_ZONES BIT(7) // enable signed fog deltas
597
598//----------------- SST alphaMode bits ------------------------
599#define SST_ENALPHAFUNC BIT(0)
600#define SST_ALPHAFNC_SHIFT 1
601#define SST_ALPHAFUNC_SHIFT 1
602# define SST_ALPHAFUNC_LT BIT(1)
603# define SST_ALPHAFUNC_EQ BIT(2)
604# define SST_ALPHAFUNC_GT BIT(3)
605# define SST_ALPHAFNC ( 0x7 << SST_ALPHAFNC_SHIFT )
606# define SST_ALPHAFUNC ( 0x7 << SST_ALPHAFUNC_SHIFT )
607#define SST_ENALPHABLEND BIT(4)
608 // unused BIT(5)
609#define SST_RGBSRCFACT_SHIFT 8 // RGB source factor
610#define SST_RGBSRCFACT (0xF<<SST_RGBSRCFACT_SHIFT)
611# define SST_A_ZERO 0
612# define SST_A_SRCALPHA 1
613# define SST_A_COLOR 2
614# define SST_A_DSTALPHA 3
615# define SST_A_ONE 4
616# define SST_AOM_SRCALPHA 5
617# define SST_AOM_COLOR 6
618# define SST_AOM_DSTALPHA 7
619# define SST_A_SATURATE 0xF // for SRC factor only
620# define SST_A_COLORBEFOREFOG 0xF // for DST factor only
621#define SST_RGBDSTFACT_SHIFT 12 // RGB destination factor
622#define SST_RGBDSTFACT (0xF<<SST_RGBDSTFACT_SHIFT)
623#define SST_ASRCFACT_SHIFT 16 // A source factor
624#define SST_ASRCFACT (0xF<<SST_ASRCFACT_SHIFT)
625#define SST_ADSTFACT_SHIFT 20 // A destination factor
626#define SST_ADSTFACT (0xF<<SST_ADSTFACT_SHIFT)
627#define SST_ALPHAREF_SHIFT 24
628#define SST_ALPHAREF (0xFF<<SST_ALPHAREF_SHIFT)
629
630//---------------- SST zaColor bits ----------------------
631#define SST_ZACOLOR_DEPTH_SHIFT 0
632#define SST_ZACOLOR_DEPTH ( 0xFFFF << SST_ZACOLOR_DEPTH_SHIFT )
633#define SST_ZACOLOR_ALPHA_SHIFT 24
634#define SST_ZACOLOR_ALPHA ( 0xFF << SST_ZACOLOR_ALPHA_SHIFT )
635
636//----------------- SST chromaRange bits ------------------------
637#define SST_CHROMARANGE_BLUE_EX BIT(24)// Blue value in exclusive mode
638#define SST_CHROMARANGE_GREEN_EX BIT(25)// Green value in exclusive mode
639#define SST_CHROMARANGE_RED_EX BIT(26)// Red value in exclusive mode
640#define SST_CHROMARANGE_BLOCK_OR BIT(27)// Union of all colors.
641#define SST_ENCHROMARANGE BIT(28)
642#define SST_ENCHROMAKEY_TMU BIT(29) // only for TMU
643#define SST_ENCOLORSUBSTITUTION BIT(30) // only for TMU
644
645//----------------- SST clip bits ------------------------
646//clipLeftRight
647#define SST_CLIPLEFT_SHIFT 16
648#define SST_CLIPRIGHT_SHIFT 0
649//clipBottomTop
650#define SST_CLIPBOTTOM_SHIFT 16
651#define SST_CLIPTOP_SHIFT 0
652
653//----------------- SST sSetupMode bits ------------------------
654#define SST_SETUP_RGB BIT(0)
655#define SST_SETUP_A BIT(1)
656#define SST_SETUP_Z BIT(2)
657#define SST_SETUP_Wfbi BIT(3)
658#define SST_SETUP_W0 BIT(4)
659#define SST_SETUP_ST0 BIT(5)
660#define SST_SETUP_W1 BIT(6)
661#define SST_SETUP_ST1 BIT(7)
662#define SST_SETUP_FAN BIT(16)
663#define SST_SETUP_EN_CULLING BIT(17)
664#define SST_SETUP_CULL_NEGATIVE BIT(18)
665#define SST_SETUP_DIS_PINGPONG BIT(19)
666
667//----------------- SST fbiInit* ----------------------------
668// fbiInit0
669#define SST_EN_VGA_PASSTHRU BIT(0)
670#define SST_GRX_RESET BIT(1)
671#define SST_PCI_FIFO_RESET BIT(2)
672#define SST_EN_ENDIAN_SWAPPING BIT(3)
673#define SST_PCI_FIFO_LWM_SHIFT 6
674#define SST_PCI_FIFO_LWM (0x1F<<SST_PCI_FIFO_LWM_SHIFT)
675#define SST_EN_LFB_MEMFIFO BIT(11)
676#define SST_EN_TEX_MEMFIFO BIT(12)
677#define SST_MEM_FIFO_EN BIT(13)
678#define SST_MEM_FIFO_HWM_SHIFT 14
679#define SST_MEM_FIFO_HWM (0x7FF<<SST_MEM_FIFO_HWM_SHIFT)
680#define SST_MEM_FIFO_BURST_HWM_SHIFT 25
681#define SST_MEM_FIFO_BURST_HWM (0x3F<<SST_MEM_FIFO_BURST_HWM_SHIFT)
682// fbiInit1
683#define SST_PCI_WRWS_0 0x0
684#define SST_PCI_WRWS_1 BIT(1)
685#define SST_LFB_READ_EN BIT(3)
686#define SST_VIDEO_TILES_IN_X_SHIFT 4
687#define SST_VIDEO_TILES_IN_X (0xF<<SST_VIDEO_TILES_IN_X_SHIFT)
688# define SST_VIDEO_TILES_IN_X_448 (7<<SST_VIDEO_TILES_IN_X_SHIFT)
689# define SST_VIDEO_TILES_IN_X_512 (8<<SST_VIDEO_TILES_IN_X_SHIFT)
690# define SST_VIDEO_TILES_IN_X_640 (10<<SST_VIDEO_TILES_IN_X_SHIFT)
691# define SST_VIDEO_TILES_IN_X_832 (13<<SST_VIDEO_TILES_IN_X_SHIFT)
692# define SST_VIDEO_TILES_IN_X_800 SST_VIDEO_TILES_IN_X_832
693#define SST_VIDEO_RESET BIT(8)
694#define SST_VIDEO_RUN 0
695#define SST_VIDEO_STOP BIT(8)
696#define SST_HVSYNC_OVERRIDE BIT(9)
697#define SST_HSYNC_OVERRIDE_VAL BIT(10)
698#define SST_VSYNC_OVERRIDE_VAL BIT(11)
699#define SST_VIDEO_BLANK_EN BIT(12)
700#define SST_VIDEO_DATA_OE_EN BIT(13)
701#define SST_VIDEO_BLANK_OE_EN BIT(14)
702#define SST_VIDEO_HVSYNC_OE_EN BIT(15)
703#define SST_VIDEO_DCLK_OE_EN BIT(16)
704#define SST_VIDEO_VID_CLK_SEL BIT(17)
705#define SST_VIDEO_VID_CLK_2X 0x0
706#define SST_VIDEO_VID_CLK_SLAVE BIT(17)
707#define SST_VIDEO_VCLK_2X_INPUT_DEL_SHIFT 18
708#define SST_VIDEO_VCLK_2X_INPUT_DEL (0x3<<SST_VIDEO_VCLK_2X_INPUT_DEL_SHIFT)
709#define SST_VIDEO_VCLK_SEL_SHIFT 20
710# define SST_VIDEO_VCLK_SEL (0x3<<SST_VIDEO_VCLK_SEL_SHIFT)
711# define SST_VIDEO_VCLK_DIV2 (0x1<<SST_VIDEO_VCLK_SEL_SHIFT)
712#define SST_VIDEO_24BPP_EN BIT(22)
713#define SST_EN_SCANLINE_INTERLEAVE BIT(23)
714#define SST_VIDEO_FILTER_EN BIT(25)
715#define SST_VIDEO_INVERT_VID_CLK_2X BIT(26)
716#define SST_VIDEO_VCLK_2X_OUTPUT_DEL_SHIFT 27
717# define SST_VIDEO_VCLK_2X_OUTPUT_DEL (0x3<<SST_VIDEO_VCLK_2X_OUTPUT_DEL_SHIFT)
718#define SST_VIDEO_VCLK_DEL_SHIFT 29
719# define SST_VIDEO_VCLK_DEL (0x3<<SST_VIDEO_VCLK_DEL_SHIFT)
720#define SST_DISEN_RD_AHEAD_WR_RD BIT(31)
721#define SST_VIDEO_MASK 0x7e7ffe00
722// fbiInit2
723#define SST_VIDEO_DITHER_SUB_EN BIT(0)
724#define SST_DRAM_BANKING_CONFIG BIT(1)
725#define SST_EN_FAST_RAS_READ BIT(5)
726#define SST_EN_OE_GEN BIT(6)
727#define SST_EN_FAST_RD_AHEAD_WR BIT(7)
728#define SST_EN_DITHER_PASSTHRU BIT(8)
729#define SST_SWAP_ALGORITHM_SHIFT 9
730#define SST_SWAP_ALGORITHM (0x3<<SST_SWAP_ALGORITHM_SHIFT)
731# define SST_SWAP_VSYNC (0<<SST_SWAP_ALGORITHM_SHIFT)
732# define SST_SWAP_DACDATA0 (1<<SST_SWAP_ALGORITHM_SHIFT)
733# define SST_SWAP_FIFOSTALL (2<<SST_SWAP_ALGORITHM_SHIFT)
734#define SST_VIDEO_BUFFER_OFFSET_SHIFT 11
735#define SST_VIDEO_BUFFER_OFFSET (0x1FF<<SST_VIDEO_BUFFER_OFFSET_SHIFT)
736# define SST_VIDEO_BUFFER_OFFSET_448 (77<<SST_VIDEO_BUFFER_OFFSET_SHIFT)
737# define SST_VIDEO_BUFFER_OFFSET_512 (96<<SST_VIDEO_BUFFER_OFFSET_SHIFT)
738# define SST_VIDEO_BUFFER_OFFSET_640 (150<<SST_VIDEO_BUFFER_OFFSET_SHIFT)
739# define SST_VIDEO_BUFFER_OFFSET_832 (247<<SST_VIDEO_BUFFER_OFFSET_SHIFT)
740# define SST_VIDEO_BUFFER_OFFSET_1024 (384<<SST_VIDEO_BUFFER_OFFSET_SHIFT)
741#define SST_VIDEO_BUFFER_OFFSET_800 SST_VIDEO_BUFFER_OFFSET_832
742#define SST_EN_DRAM_BANKED BIT(20)
743#define SST_EN_DRAM_RD_AHEAD_FIFO BIT(21)
744#define SST_EN_DRAM_REFRESH BIT(22)
745#define SST_DRAM_REFRESH_CNTR_SHIFT 23
746# define SST_DRAM_REFRESH_CNTR (0x1FF<<SST_DRAM_REFRESH_CNTR_SHIFT)
747#define SST_DRAM_REFRESH_16MS (0x30 << SST_DRAM_REFRESH_CNTR_SHIFT)
748// fbiInit3
749#define SST_ALT_REGMAPPING BIT(0)
750#define SST_VIDEO_FIFO_THRESH_SHIFT 1
751# define SST_VIDEO_FIFO_THRESH (0x1F<<SST_VIDEO_FIFO_THRESH_SHIFT)
752#define SST_YORIGIN_TOP_SHIFT 22
753# define SST_YORIGIN_TOP (0x3FF<<SST_YORIGIN_TOP_SHIFT)
754#define SST_YORIGIN_SUBVAL_SHIFT SST_YORIGIN_TOP_SHIFT
755#define SST_YORIGIN_SUBVAL (0x3FF<<SST_YORIGIN_SUBVAL_SHIFT)
756// fbiInit4
757#define SST_FBIINIT4_DEFAULT 0x00000001
758#define SST_PCI_RDWS_1 0x0
759#define SST_PCI_RDWS_2 BIT(0)
760#define SST_EN_LFB_RDAHEAD BIT(1)
761#define SST_MEM_FIFO_LWM_SHIFT 2
762#define SST_MEM_FIFO_LWM (0x3F<<SST_MEM_FIFO_LWM_SHIFT)
763#define SST_MEM_FIFO_ROW_BASE_SHIFT 8
764#define SST_MEM_FIFO_ROW_BASE (0x3FF<<SST_MEM_FIFO_ROW_BASE_SHIFT)
765#define SST_MEM_FIFO_ROW_ROLL_SHIFT 18
766#define SST_MEM_FIFO_ROW_ROLL (0x3FF<<SST_MEM_FIFO_ROW_ROLL_SHIFT)
767// fbiInit7
768#define SST_EN_CMDFIFO BIT(8)
769#define SST_EN_CMDFIFO_OFFSCREEN BIT(9)
770#define SST_CMDFIFO_DISABLE_HOLES BIT(10)
771#define SST_CMDFIFO_RDFETCH_THRESH_SHIFT 11
772#define SST_CMDFIFO_RDFETCH_THRESH (0x1FUL<<SST_CMDFIFO_RDFETCH_THRESH_SHIFT)
773#define SST_CMDFIFO_REGS_SYNC_WRITES BIT(16)
774#define SST_CMDFIFO_REGS_SYNC_READS BIT(17)
775#define SST_PCI_PACKER_RESET BIT(18)
776#define SST_TMU_CHROMA_REG_WR_EN BIT(19)
777#define SST_CMDFIFO_PCI_TIMEOUT_SHIFT 20
778#define SST_CMDFIFO_PCI_TIMEOUT (0x7FUL<<SST_CMDFIFO_PCI_TIMEOUT_SHIFT)
779
780/*----------------- SST clutData bits -----------------------*/
781#define SST_CLUTDATA_INDEX_SHIFT 24
782#define SST_CLUTDATA_RED_SHIFT 16
783#define SST_CLUTDATA_GREEN_SHIFT 8
784#define SST_CLUTDATA_BLUE_SHIFT 0
785
786//----------------- SST dacData bits --------------------------
787#define SST_DACDATA_DATA (0xFF)
788#define SST_DACDATA_ADDR_SHIFT 8
789#define SST_DACDATA_ADDR (0x7<<SST_DACDATA_ADDR_SHIFT)
790#define SST_DACDATA_RD BIT(11)
791#define SST_DACDATA_WR 0x0
792
793//----------------- nopCMD bits -------------------------------
794#define SST_NOP_RESET_PIXEL_STATS BIT(0)
795#define SST_NOP_RESET_TRIANGLE_STATS BIT(1)
796
797//----------------- swapBufferCMD bits ------------------------
798#define SST_SWAP_EN_WAIT_ON_VSYNC BIT(0)
799#define SST_SWAP_BUFFER_INTERVAL_SHIFT 1
800#define SST_SWAP_BUFFER_INTERVAL (0xff << SST_SWAP_BUFFER_INTERVAL_SHIFT)
801#define SST_SWAP_DONT_SWAP BIT(9)
802
803//----------------- SST Configuration Registers ---------------
804#define SST_MEMBASE_ADDR 0x10
805#define SST_INIT_ENABLE 0x40
806#define SST_BUS_SNOOP0 0x44
807#define SST_BUS_SNOOP1 0x48
808#define SST_CFG_STATUS 0x4c
809
810//----------------- SST Remapped Registers --------------------
811#define SST_DAC_RD_DATA 0x00000218
812#define SST_VIDEO_CHECKSUM 0x0000021c
813
814//----------------- SST initEnable (Config register) bits -----
815#define SST_INITWR_EN BIT(0)
816#define SST_PCI_FIFOWR_EN BIT(1)
817#define SST_FBIINIT23_REMAP BIT(2)
818#define SST_SNOOP0_EN BIT(4)
819#define SST_SNOOP0_IO BIT(5)
820#define SST_SNOOP0_RD BIT(6)
821#define SST_SNOOP1_EN BIT(7)
822#define SST_SNOOP1_IO BIT(8)
823#define SST_SNOOP1_RD BIT(9)
824#define SST_SCANLINE_SLV_OWNPCI BIT(10)
825#define SST_SCANLINE_SLI_SLV BIT(11)
826
827//----------------- SST vRetrace bits ---------------------
828#define SST_VRETRACE_VSYNC_OFF 0xff
829
830//----------------- SST hSync bits ------------------------
831#define SST_HSYNC_ON 0xff
832#define SST_HSYNC_OFF_SHIFT 16
833#define SST_HSYNC_OFF (0x3ff << SST_HSYNCOFF_SHIFT)
834
835//----------------- SST vSync bits ------------------------
836#define SST_VSYNC_ON 0xff
837#define SST_VSYNC_OFF_SHIFT 16
838#define SST_VSYNC_OFF (0xfff << SST_VSYNC_OFF_SHIFT)
839
840//----------------- SST backPorch bits --------------------
841#define SST_HBACKPORCH 0xff
842#define SST_VBACKPORCH_SHIFT 16
843#define SST_VBACKPORCH (0xff << SST_VBACKPORCH_SHIFT)
844
845//----------------- SST videoDimensionS Register -----------
846#define SST_VIDEODIMENSIONS_X 0x3ff
847#define SST_VIDEODIMENSIONS_Y_SHIFT 16
848#define SST_VIDEODIMENSIONS_Y 0x3ff
849
850// Here are the defines for the alternate register mappings
851#define r_ALT r
852#define drdx_ALT g
853#define drdy_ALT b
854#define g_ALT z
855#define dgdx_ALT a
856#define dgdy_ALT s
857#define b_ALT t
858#define dbdx_ALT w
859
860#define dbdy_ALT drdx
861#define z_ALT dgdx
862#define dzdx_ALT dbdx
863#define dzdy_ALT dzdx
864#define a_ALT dadx
865#define dadx_ALT dsdx
866#define dady_ALT dtdx
867#define s_ALT dwdx
868
869#define dsdx_ALT drdy
870#define dsdy_ALT dgdy
871#define t_ALT dbdy
872#define dtdx_ALT dzdy
873#define dtdy_ALT dady
874#define w_ALT dsdy
875#define dwdx_ALT dtdy
876#define dwdy_ALT dwdy
877
878#define Fr_ALT Fr
879#define Fdrdx_ALT Fg
880#define Fdrdy_ALT Fb
881#define Fg_ALT Fz
882#define Fdgdx_ALT Fa
883#define Fdgdy_ALT Fs
884#define Fb_ALT Ft
885#define Fdbdx_ALT Fw
886
887#define Fdbdy_ALT Fdrdx
888#define Fz_ALT Fdgdx
889#define Fdzdx_ALT Fdbdx
890#define Fdzdy_ALT Fdzdx
891#define Fa_ALT Fdadx
892#define Fdadx_ALT Fdsdx
893#define Fdady_ALT Fdtdx
894#define Fs_ALT Fdwdx
895
896#define Fdsdx_ALT Fdrdy
897#define Fdsdy_ALT Fdgdy
898#define Ft_ALT Fdbdy
899#define Fdtdx_ALT Fdzdy
900#define Fdtdy_ALT Fdady
901#define Fw_ALT Fdsdy
902#define Fdwdx_ALT Fdtdy
903#define Fdwdy_ALT Fdwdy
904
905//----------------- useful addressing macros -----------------------
906// return pointer to SST at specified WRAP, CHIP, or TREX
907#define SST_WRAP(sst,n) ((SstRegs *)((n)*0x4000+(FxI32)(sst)))
908#define SST_CHIP(sst,n) ((SstRegs *)((n)*0x400+(FxI32)(sst)))
909#define SST_TMU(sst,n) ((SstRegs *)((0x800<<(n))+(FxI32)(sst)))
910#define SST_TREX(sst,n) SST_TMU(sst,n)
911
912#define SST_BYTESWAP_BIT BIT(20)
913#define SST_ALTMAP_BIT BIT(21)
914#define SST_LFB_BIT BIT(22)
915#define SST_TEX_BIT BIT(23)
916#define SST_LFB_ADDR SST_LFB_BIT
917#define SST_TEX_ADDR SST_TEX_BIT
918
919// for new H3 code
920#define SST_3D_OFFSET 0
921#define SST_LFB_OFFSET SST_LFB_ADDR
922#define SST_TEX_OFFSET SST_TEX_ADDR
923
924// return byte addresses of LFB and TEX spaces
925#define SST_LFB_ADDRESS(sst) (SST_LFB_BIT+(FxI32)(sst))
926#define SST_TEX_ADDRESS(sst) (SST_TEX_BIT+(FxI32)(sst))
927
928
929// SET macros for FBI
930#define SET_FBI(d,s) SET (*(&(d)+0x100),s)
931#define SET_FBIF(d,s) SETF(*(&(d)+0x100),s)
932
933// SET macros for TMU0
934#define SET_0(d,s) SET (*(&(d)+0x200),s)
935#define SET_0F(d,s) SETF(*(&(d)+0x200),s)
936
937// SET macros for FBI+TMU0
938#define SET_FBI_0(d,s) SET (*(&(d)+0x300),s)
939#define SET_FBI_0F(d,s) SETF(*(&(d)+0x300),s)
940
941// SET macros for TMU1
942#define SET_1(d,s) SET (*(&(d)+0x400),s)
943#define SET_1F(d,s) SETF(*(&(d)+0x400),s)
944
945// SET macros for FBI+TMU1
946#define SET_FBI_1(d,s) SET (*(&(d)+0x500),s)
947#define SET_FBI_1F(d,s) SETF(*(&(d)+0x500),s)
948
949#endif /* !__CVGDEFS_H__ */
Note: See TracBrowser for help on using the repository browser.