tdfx_priv.h revision 02be438a
1/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/tdfx/tdfx_priv.h,v 1.11 2001/06/05 15:54:15 alanh Exp $ */
2
3
4#ifndef _TDFX_FIFO_H_
5#define _TDFX_FIFO_H_
6
7typedef unsigned int   uint32;
8typedef unsigned short uint16;
9typedef unsigned char  uint8;
10typedef int   int32;
11typedef short int16;
12typedef char  int8;
13
14#define CMDFIFO_PAGES 64
15
16#define PROPSAREADATA \
17  volatile int fifoPtr; \
18  volatile int fifoRead;
19
20#define PROPDATASTD \
21  volatile unsigned int *fifoPtr; \
22  volatile unsigned int *fifoRead; \
23  int fifoSlots; \
24  unsigned int *fifoBase; \
25  unsigned int *fifoEnd; \
26  int fifoOffset; \
27  int fifoSize
28
29#define PROPDATADBG \
30  unsigned int *fifoMirrorBase; \
31  unsigned int *fifoMirrorPtr;
32
33#ifdef FIFO_DEBUG
34#define PROPDATA PROPDATASTD; \
35	PROPDATADBG
36#else
37#define PROPDATA PROPDATASTD;
38#endif
39
40#ifdef TDFX_DEBUG_CMDS
41#define TDFXMakeRoom(p, n) \
42  do { \
43    if (fifoCnt) \
44      ErrorF("Previous TDFXMakeRoom passed incorrect size\n"); \
45    cmdCnt=n; \
46    TDFXAllocateSlots(p, (n)+1); \
47  while (0)
48#define TDFXWriteLong(p, a, v)
49  do { \
50    if (lastAddr & a<lastAddr) \
51      ErrorF("TDFXWriteLong not ordered\n"); \
52    cmdCnt--; \
53    WRITE_FIFO(p, a, v); \
54  while (0)
55#else
56#define TDFXMakeRoom(p, n) TDFXAllocateSlots(p, (n)+1)
57#define TDFXWriteLong(p, a, v) WRITE_FIFO(p, a, v)
58#endif
59#define DECLARE SET_PKT2_HEADER
60#define DECLARE_LAUNCH SET_PK1_HEADER_LAUNCH
61#define TDFXSendNOP TDFXSendNOPFifo
62
63/*
64** Structures for Banshee AGP/CMD Transfer/MISC registers.
65*/
66typedef volatile struct _H3CmdFifo
67{
68	uint32 baseAddrL;
69	uint32 baseSize;
70	uint32 bump;
71	uint32 readPtrL;
72	uint32 readPtrH;
73	uint32 aMin;
74	uint32 unusedA;
75	uint32 aMax;
76	uint32 unusedB;
77	uint32 depth;
78	uint32 holeCount;
79	uint32 reserved;
80} H3CmdFifo;
81
82Bool TDFXInitFifo(ScreenPtr pScreen);
83void TDFXShutdownFifo(ScreenPtr pScreen);
84void TDFXAllocateSlots(TDFXPtr pTDFX, int slots);
85void TDFXSendNOPFifo2D(ScrnInfoPtr pScreen);
86
87#define CHECK_FOR_ROOM(_n) \
88	if ((pTDFX->fifoSlots -= (_n)) < 0) \
89		cmdfifo_make_room(adapter, fifo_ptr, _n); \
90
91#if X_BYTE_ORDER == X_BIG_ENDIAN
92#define BE_BSWAP32(val) ((((val) & 0x000000ff) << 24) | \
93                     (((val) & 0x0000ff00) << 8) |  \
94                     (((val) & 0x00ff0000) >> 8) |  \
95                     (((val) & 0xff000000) >> 24))
96
97#define BE_WSWAP32(val) ((((val) & 0x0000ffff) << 16) | \
98                     (((val) & 0xffff0000) >> 16))
99 void TDFXWriteFifo_24(TDFXPtr pTDFX, int val);
100 void TDFXWriteFifo_16(TDFXPtr pTDFX, int val);
101 void TDFXWriteFifo_8(TDFXPtr pTDFX, int val);
102#else
103/* Don't swap on little-endian platforms */
104#define BE_BSWAP32(val) val
105#define BE_WSWAP32(val) val
106#endif
107
108
109#ifdef DEBUG_FIFO
110#define WRITE_FIFO(ptr, loc, _val) \
111  do { \
112    *pTDFX->fifoMirrorPtr++ = _val; \
113    *pTDFX->fifoPtr++ = _val; \
114  } while(0)
115#else
116#if X_BYTE_ORDER == X_BIG_ENDIAN
117#define WRITE_FIFO(ptr, loc, _val) \
118  do { \
119    pTDFX->writeFifo(ptr, _val); \
120  } while (0)
121#else
122#define WRITE_FIFO(ptr, loc, _val) \
123  do { \
124    *pTDFX->fifoPtr++ = _val; \
125  } while(0)
126#endif /* X_BYTE_ORDER == X_BIG_ENDIAN */
127#endif /* DEBUG_FIFO */
128
129#if X_BYTE_ORDER == X_BIG_ENDIAN
130#define FLUSH_WCB()
131#else
132#define FLUSH_WCB() inb(0x80)
133#endif
134
135/*
136** Send a packet header type 1 (2D) to the cmdfifo
137*/
138#define SET_2DPK1_HEADER(_ndwords, _inc, _reg) \
139	WRITE_FIFO ( pTDFX, 0, (_ndwords) << SSTCP_PKT1_NWORDS_SHIFT | \
140	                ((_inc) ? SSTCP_PKT1_INC : SSTCP_PKT1_NOINC) | \
141	                SSTCP_PKT1_2D | \
142	                FIELD_OFFSET(H3_2D_REGISTERS, _reg)/4 << SSTCP_REGBASE_SHIFT | \
143	                SSTCP_PKT1 \
144	              )
145
146/*
147** Send a packet header type 1 to begin at launchArea[0] to the cmdfifo
148*/
149#define SET_PK1_HEADER_LAUNCH(_ndwords, _inc) \
150	WRITE_FIFO ( pTDFX, 0, (_ndwords) << SSTCP_PKT1_NWORDS_SHIFT | \
151	                ((_inc) ? SSTCP_PKT1_INC : SSTCP_PKT1_NOINC) | \
152	                SSTCP_PKT1_LAUNCH | SSTCP_PKT1 \
153	              )
154
155/*
156** Send a packet header type 1 to begin at colorPattern[0] to the cmdfifo
157*/
158#define SET_PK1_HEADER_COLORPATTERN(_ndwords, _inc) \
159	WRITE_FIFO ( pTDFX, 0, (_ndwords) << SSTCP_PKT1_NWORDS_SHIFT | \
160	                ((_inc) ? SSTCP_PKT1_INC : SSTCP_PKT1_NOINC) | \
161	                SSTCP_PKT1_COLORPATTERN | SSTCP_PKT1 \
162	              )
163
164/*
165** Send a packet header type 2 to the cmdfifo
166*/
167#define SET_PKT2_HEADER(_mask) \
168    WRITE_FIFO (pTDFX, 0, ((_mask) << SSTCP_PKT2_MASK_SHIFT) | SSTCP_PKT2)
169
170/*
171** These are used to select a register mask for use with
172** command fifo packet type 4.  The defines represent an
173** offset register from the base register.
174** e.g. R5 = baseReg + 5, R0 = baseReg etc..
175*/
176#define R0  (1 << 0)
177#define R1  (1 << 1)
178#define R2  (1 << 2)
179#define R3  (1 << 3)
180#define R4  (1 << 4)
181#define R5  (1 << 5)
182#define R6  (1 << 6)
183#define R7  (1 << 7)
184#define R8  (1 << 8)
185#define R9  (1 << 9)
186#define R10 (1 << 10)
187#define R11 (1 << 11)
188#define R12 (1 << 12)
189#define R13 (1 << 13)
190
191#define SET_2DPK4_HEADER(_mask, _reg0) \
192	WRITE_FIFO ( pTDFX, 0, ((_mask) << SSTCP_PKT4_MASK_SHIFT) | \
193	                SSTCP_PKT4_2D | \
194	                (_reg0) | \
195	                SSTCP_PKT4 \
196	              )
197
198#define SET_3DPK4_HEADER(_mask, _reg0) \
199	WRITE_FIFO ( pTDFX, 0, ((_mask) << SSTCP_PKT4_MASK_SHIFT) | \
200	                (_reg0) | \
201	                SSTCP_PKT4 \
202	              )
203
204/*----------------- SST cmdFifo*.baseSize bits --------------------------- */
205#define SST_CMDFIFO_SIZE		0xFF
206#define SST_EN_CMDFIFO			BIT(8)
207#define SST_CMDFIFO_AGP			BIT(9)
208#define SST_CMDFIFO_DISABLE_HOLES	BIT(10)
209
210/* SST COMMAND PACKET defines */
211#define SSTCP_PKT_SIZE	3
212#define SSTCP_PKT	SST_MASK(SSTCP_PKT_SIZE)
213#define SSTCP_PKT0	0
214#define SSTCP_PKT1	1
215#define SSTCP_PKT2	2
216#define SSTCP_PKT3	3
217#define SSTCP_PKT4	4
218#define SSTCP_PKT5	5
219#define SSTCP_PKT6	6
220#define SSTCP_PKT7	7
221
222#define SSTCP_BOGUS_WORDS_SHIFT	29
223#define SSTCP_BOGUS_WORDS	(7 << SSTCP_BOGUS_WORDS_SHIFT)
224
225/* packet 0 defines */
226#define SSTCP_PKT0_FUNC_SHIFT	3
227#define SSTCP_PKT0_FUNC		(7 << SSTCP_PKT0_FUNC_SHIFT)
228#define SSTCP_PKT0_NOP		((0<<SSTCP_PKT0_FUNC_SHIFT) | SSTCP_PKT0)
229#define SSTCP_PKT0_JSR		((1<<SSTCP_PKT0_FUNC_SHIFT) | SSTCP_PKT0)
230#define SSTCP_PKT0_RET		((2<<SSTCP_PKT0_FUNC_SHIFT) | SSTCP_PKT0)
231#define SSTCP_PKT0_JMP_LOCAL	((3<<SSTCP_PKT0_FUNC_SHIFT) | SSTCP_PKT0)
232#define SSTCP_PKT0_JMP_AGP	((4<<SSTCP_PKT0_FUNC_SHIFT) | SSTCP_PKT0)
233#define SSTCP_PKT0_ADDR_SHIFT	6
234#define SSTCP_PKT0_ADDR		(0x7FFFFF<<SSTCP_PKT0_ADDR_SHIFT)
235
236/* packet 1 defines */
237#define SSTCP_REGBASE_SHIFT	SSTCP_PKT_SIZE
238#ifdef H4
239#define SSTCP_REGBASE		(0x7FF<<SSTCP_REGBASE_SHIFT)
240#define SSTCP_REGBASE_FROM_ADDR(x) ( (((x)>>2) & 0x7FF) << SSTCP_REGBASE_SHIFT )
241#else
242#define SSTCP_REGBASE		((0x3FF)<<SSTCP_REGBASE_SHIFT)
243#define SSTCP_REGBASE_FROM_ADDR(x) ( (((x)>>2) & 0x3FF) << SSTCP_REGBASE_SHIFT )
244#endif
245#define SSTCP_PKT1_2D	BIT(14)
246#define SSTCP_INC           BIT(15)
247#define SSTCP_PKT1_NWORDS_SHIFT	16
248#define SSTCP_PKT1_NWORDS	(0xFFFFUL<<SSTCP_PKT1_NWORDS_SHIFT)
249
250#define SSTCP_PKT1_NOINC           0
251#define SSTCP_PKT1_INC             SSTCP_INC
252#define SSTCP_PKT1_CLIP0MIN        (SSTCP_PKT1_2D | (0x02 << SSTCP_REGBASE_SHIFT))
253#define SSTCP_PKT1_CLIP0MAX        (SSTCP_PKT1_2D | (0x03 << SSTCP_REGBASE_SHIFT))
254#define SSTCP_PKT1_DSTBASEADDR     (SSTCP_PKT1_2D | (0x04 << SSTCP_REGBASE_SHIFT))
255#define SSTCP_PKT1_DSTFORMAT       (SSTCP_PKT1_2D | (0x05 << SSTCP_REGBASE_SHIFT))
256#define SSTCP_PKT1_SRCCOLORKEYMIN  (SSTCP_PKT1_2D | (0x06 << SSTCP_REGBASE_SHIFT))
257#define SSTCP_PKT1_SRCCOLORKEYMAX  (SSTCP_PKT1_2D | (0x07 << SSTCP_REGBASE_SHIFT))
258#define SSTCP_PKT1_DSTCOLORKEYMIN  (SSTCP_PKT1_2D | (0x08 << SSTCP_REGBASE_SHIFT))
259#define SSTCP_PKT1_DSTCOLORKEYMAX  (SSTCP_PKT1_2D | (0x09 << SSTCP_REGBASE_SHIFT))
260#define SSTCP_PKT1_BRESERROR0      (SSTCP_PKT1_2D | (0x0a << SSTCP_REGBASE_SHIFT))
261#define SSTCP_PKT1_BRESERROR1      (SSTCP_PKT1_2D | (0x0b << SSTCP_REGBASE_SHIFT))
262#define SSTCP_PKT1_ROP             (SSTCP_PKT1_2D | (0x0c << SSTCP_REGBASE_SHIFT))
263#define SSTCP_PKT1_SRCBASEADDR     (SSTCP_PKT1_2D | (0x0d << SSTCP_REGBASE_SHIFT))
264#define SSTCP_PKT1_COMMANDEXTRA    (SSTCP_PKT1_2D | (0x0e << SSTCP_REGBASE_SHIFT))
265#define SSTCP_PKT1_LINESTIPPLE     (SSTCP_PKT1_2D | (0x0f << SSTCP_REGBASE_SHIFT))
266#define SSTCP_PKT1_LINESTYLE       (SSTCP_PKT1_2D | (0x10 << SSTCP_REGBASE_SHIFT))
267#define SSTCP_PKT1_PATTERN0ALIAS   (SSTCP_PKT1_2D | (0x11 << SSTCP_REGBASE_SHIFT))
268#define SSTCP_PKT1_PATTERN1ALIAS   (SSTCP_PKT1_2D | (0x12 << SSTCP_REGBASE_SHIFT))
269#define SSTCP_PKT1_CLIP1MIN        (SSTCP_PKT1_2D | (0x13 << SSTCP_REGBASE_SHIFT))
270#define SSTCP_PKT1_CLIP1MAX        (SSTCP_PKT1_2D | (0x14 << SSTCP_REGBASE_SHIFT))
271#define SSTCP_PKT1_SRCFORMAT       (SSTCP_PKT1_2D | (0x15 << SSTCP_REGBASE_SHIFT))
272#define SSTCP_PKT1_SRCSIZE         (SSTCP_PKT1_2D | (0x16 << SSTCP_REGBASE_SHIFT))
273#define SSTCP_PKT1_SRCXY           (SSTCP_PKT1_2D | (0x17 << SSTCP_REGBASE_SHIFT))
274#define SSTCP_PKT1_COLORBACK       (SSTCP_PKT1_2D | (0x18 << SSTCP_REGBASE_SHIFT))
275#define SSTCP_PKT1_COLORFORE       (SSTCP_PKT1_2D | (0x19 << SSTCP_REGBASE_SHIFT))
276#define SSTCP_PKT1_DSTSIZE         (SSTCP_PKT1_2D | (0x1a << SSTCP_REGBASE_SHIFT))
277#define SSTCP_PKT1_DSTXY           (SSTCP_PKT1_2D | (0x1b << SSTCP_REGBASE_SHIFT))
278#define SSTCP_PKT1_COMMAND         (SSTCP_PKT1_2D | (0x1c << SSTCP_REGBASE_SHIFT))
279#define SSTCP_PKT1_LAUNCH          (SSTCP_PKT1_2D | (0x20 << SSTCP_REGBASE_SHIFT))
280#define SSTCP_PKT1_COLORPATTERN    (SSTCP_PKT1_2D | (0x40 << SSTCP_REGBASE_SHIFT))
281
282/* packet 2 defines */
283#define SSTCP_PKT2_MASK_SHIFT	SSTCP_PKT_SIZE
284#define SSTCP_PKT2_MASK		(0x1FFFFFFFUL<<SSTCP_PKT2_MASK_SHIFT)
285
286#define SSTCP_CLIP0MIN         0x00000001L
287#define SSTCP_CLIP0MAX         0x00000002L
288#define SSTCP_DSTBASEADDR      0x00000004L
289#define SSTCP_DSTFORMAT        0x00000008L
290#define SSTCP_SRCCOLORKEYMIN   0x00000010L
291#define SSTCP_SRCCOLORKEYMAX   0x00000020L
292#define SSTCP_DSTCOLORKEYMIN   0x00000040L
293#define SSTCP_DSTCOLORKEYMAX   0x00000080L
294#define SSTCP_BRESERROR0       0x00000100L
295#define SSTCP_BRESERROR1       0x00000200L
296#define SSTCP_ROP              0x00000400L
297#define SSTCP_SRCBASEADDR      0x00000800L
298#define SSTCP_COMMANDEXTRA     0x00001000L
299#define SSTCP_LINESTIPPLE      0x00002000L
300#define SSTCP_LINESTYLE        0x00004000L
301#define SSTCP_PATTERN0ALIAS    0x00008000L
302#define SSTCP_PATTERN1ALIAS    0x00010000L
303#define SSTCP_CLIP1MIN         0x00020000L
304#define SSTCP_CLIP1MAX         0x00040000L
305#define SSTCP_SRCFORMAT        0x00080000L
306#define SSTCP_SRCSIZE          0x00100000L
307#define SSTCP_SRCXY            0x00200000L
308#define SSTCP_COLORBACK        0x00400000L
309#define SSTCP_COLORFORE        0x00800000L
310#define SSTCP_DSTSIZE          0x01000000L
311#define SSTCP_DSTXY            0x02000000L
312#define SSTCP_COMMAND          0x04000000L
313
314/* packet 3 defines */
315#define SSTCP_PKT3_CMD_SHIFT	SSTCP_PKT_SIZE
316#define SSTCP_PKT3_CMD		(0x7<<SSTCP_PKT3_CMD_SHIFT)
317#  define SSTCP_PKT3_BDDBDD	(0<<SSTCP_PKT3_CMD_SHIFT)
318#  define SSTCP_PKT3_BDDDDD	(1<<SSTCP_PKT3_CMD_SHIFT)
319#  define SSTCP_PKT3_DDDDDD	(2<<SSTCP_PKT3_CMD_SHIFT)
320#define SSTCP_PKT3_NUMVERTEX_SHIFT (SSTCP_PKT_SIZE+3)
321#define SSTCP_PKT3_NUMVERTEX	(0xF << SSTCP_PKT3_NUMVERTEX_SHIFT)
322#define SSTCP_PKT3_PMASK_SHIFT	(SSTCP_PKT_SIZE+3+4)
323#define SSTCP_PKT3_PMASK	(0xFFFUL<<SSTCP_PKT3_PMASK_SHIFT)
324#define SSTCP_PKT3_SMODE_SHIFT	(SSTCP_PKT3_PMASK_SHIFT+12)
325#define SSTCP_PKT3_SMODE	(0x3FUL<<SSTCP_PKT3_SMODE_SHIFT)
326#define SSTCP_PKT3_PACKEDCOLOR	BIT(28)
327
328/* packet 4 defines */
329#define SSTCP_REGBASE_SHIFT	SSTCP_PKT_SIZE
330#ifdef H4
331#define SSTCP_REGBASE		((0x7FF)<<SSTCP_REGBASE_SHIFT)
332#else
333#define SSTCP_REGBASE		((0x3FF)<<SSTCP_REGBASE_SHIFT)
334#endif
335#define SSTCP_PKT4_2D		BIT(14)
336#define SSTCP_PKT4_MASK_SHIFT	15
337#define SSTCP_PKT4_MASK		(0x3FFFUL<<SSTCP_PKT4_MASK_SHIFT)
338
339#define SSTCP_PKT4_CLIP0MIN        (SSTCP_PKT4_2D | (0x02 << SSTCP_REGBASE_SHIFT))
340#define SSTCP_PKT4_CLIP0MAX        (SSTCP_PKT4_2D | (0x03 << SSTCP_REGBASE_SHIFT))
341#define SSTCP_PKT4_DSTBASEADDR     (SSTCP_PKT4_2D | (0x04 << SSTCP_REGBASE_SHIFT))
342#define SSTCP_PKT4_DSTFORMAT       (SSTCP_PKT4_2D | (0x05 << SSTCP_REGBASE_SHIFT))
343#define SSTCP_PKT4_SRCCOLORKEYMIN  (SSTCP_PKT4_2D | (0x06 << SSTCP_REGBASE_SHIFT))
344#define SSTCP_PKT4_SRCCOLORKEYMAX  (SSTCP_PKT4_2D | (0x07 << SSTCP_REGBASE_SHIFT))
345#define SSTCP_PKT4_DSTCOLORKEYMIN  (SSTCP_PKT4_2D | (0x08 << SSTCP_REGBASE_SHIFT))
346#define SSTCP_PKT4_DSTCOLORKEYMAX  (SSTCP_PKT4_2D | (0x09 << SSTCP_REGBASE_SHIFT))
347#define SSTCP_PKT4_BRESERROR0      (SSTCP_PKT4_2D | (0x0a << SSTCP_REGBASE_SHIFT))
348#define SSTCP_PKT4_BRESERROR1      (SSTCP_PKT4_2D | (0x0b << SSTCP_REGBASE_SHIFT))
349#define SSTCP_PKT4_ROP             (SSTCP_PKT4_2D | (0x0c << SSTCP_REGBASE_SHIFT))
350#define SSTCP_PKT4_SRCBASEADDR     (SSTCP_PKT4_2D | (0x0d << SSTCP_REGBASE_SHIFT))
351#define SSTCP_PKT4_COMMANDEXTRA    (SSTCP_PKT4_2D | (0x0e << SSTCP_REGBASE_SHIFT))
352#define SSTCP_PKT4_LINESTIPPLE     (SSTCP_PKT4_2D | (0x0f << SSTCP_REGBASE_SHIFT))
353#define SSTCP_PKT4_LINESTYLE       (SSTCP_PKT4_2D | (0x10 << SSTCP_REGBASE_SHIFT))
354#define SSTCP_PKT4_PATTERN0ALIAS   (SSTCP_PKT4_2D | (0x11 << SSTCP_REGBASE_SHIFT))
355#define SSTCP_PKT4_PATTERN1ALIAS   (SSTCP_PKT4_2D | (0x12 << SSTCP_REGBASE_SHIFT))
356#define SSTCP_PKT4_CLIP1MIN        (SSTCP_PKT4_2D | (0x13 << SSTCP_REGBASE_SHIFT))
357#define SSTCP_PKT4_CLIP1MAX        (SSTCP_PKT4_2D | (0x14 << SSTCP_REGBASE_SHIFT))
358#define SSTCP_PKT4_SRCFORMAT       (SSTCP_PKT4_2D | (0x15 << SSTCP_REGBASE_SHIFT))
359#define SSTCP_PKT4_SRCSIZE         (SSTCP_PKT4_2D | (0x16 << SSTCP_REGBASE_SHIFT))
360#define SSTCP_PKT4_SRCXY           (SSTCP_PKT4_2D | (0x17 << SSTCP_REGBASE_SHIFT))
361#define SSTCP_PKT4_COLORBACK       (SSTCP_PKT4_2D | (0x18 << SSTCP_REGBASE_SHIFT))
362#define SSTCP_PKT4_COLORFORE       (SSTCP_PKT4_2D | (0x19 << SSTCP_REGBASE_SHIFT))
363#define SSTCP_PKT4_DSTSIZE         (SSTCP_PKT4_2D | (0x1a << SSTCP_REGBASE_SHIFT))
364#define SSTCP_PKT4_DSTXY           (SSTCP_PKT4_2D | (0x1b << SSTCP_REGBASE_SHIFT))
365#define SSTCP_PKT4_COMMAND         (SSTCP_PKT4_2D | (0x1c << SSTCP_REGBASE_SHIFT))
366
367/* packet 5 defines */
368#define SSTCP_PKT5_NWORDS_SHIFT	3
369#define SSTCP_PKT5_NWORDS	(0x7FFFFUL<<SSTCP_PKT5_NWORDS_SHIFT)
370#define SSTCP_PKT5_BYTEN_WN_SHIFT 22
371#define SSTCP_PKT5_BYTEN_WN	(0xFUL<<SSTCP_PKT5_BYTEN_WN_SHIFT)
372#define SSTCP_PKT5_BYTEN_W2_SHIFT 26
373#define SSTCP_PKT5_BYTEN_W2	(0xFUL<<SSTCP_PKT5_BYTEN_W2_SHIFT)
374#define SSTCP_PKT5_SPACE_SHIFT	30
375#define SSTCP_PKT5_SPACE	(0x3UL<<SSTCP_PKT5_SPACE_SHIFT)
376#define SSTCP_PKT5_LFB		(0x0UL<<SSTCP_PKT5_SPACE_SHIFT)
377#define SSTCP_PKT5_YUV		(0x1UL<<SSTCP_PKT5_SPACE_SHIFT)
378#define SSTCP_PKT5_3DLFB	(0x2UL<<SSTCP_PKT5_SPACE_SHIFT)
379#define SSTCP_PKT5_TEXPORT	(0x3UL<<SSTCP_PKT5_SPACE_SHIFT)
380#define SSTCP_PKT5_BASEADDR	0x1FFFFFFUL
381
382/* packet 6 defines */
383#define SSTCP_PKT6_SPACE_SHIFT  3
384#define SSTCP_PKT6_SPACE        (0x3UL<<SSTCP_PKT6_SPACE_SHIFT)
385#define SSTCP_PKT6_LFB          (0x0UL<<SSTCP_PKT6_SPACE_SHIFT)
386#define SSTCP_PKT6_YUV          (0x1UL<<SSTCP_PKT6_SPACE_SHIFT)
387#define SSTCP_PKT6_3DLFB        (0x2UL<<SSTCP_PKT6_SPACE_SHIFT)
388#define SSTCP_PKT6_TEXPORT      (0x3UL<<SSTCP_PKT6_SPACE_SHIFT)
389#define SSTCP_PKT6_NBYTES_SHIFT 5
390#define SSTCP_PKT6_NBYTES       (SST_MASK(20) << SSTCP_PKT6_NBYTES_SHIFT)
391#define SSTCP_PKT6_SRC_BASELOW            SST_MASK(32)
392#define SSTCP_PKT6_SRC_WIDTH              SST_MASK(14)
393#define SSTCP_PKT6_SRC_STRIDE_SHIFT       14
394#define SSTCP_PKT6_SRC_STRIDE             (SST_MASK(14) <<SSTCP_PKT6_SRC_STRIDE_SHIFT)
395#define SSTCP_PKT6_SRC_BASEHIGH_SHIFT     28
396#define SSTCP_PKT6_SRC_BASEHIGH           (SST_MASK(4) <<SSTCP_PKT6_SRC_BASEHIGH_SHIFT)
397#define SSTCP_PKT6_FRAME_BUFFER_OFFSET    SST_MASK(26)
398#define SSTCP_PKT6_DST_STRIDE             SST_MASK(15)
399
400#define SST_FIFO_OFFSET 0x0080000
401#define SST_FIFO_BASEADDR0 SST_FIFO_OFFSET+0x20
402#define SST_FIFO_BASESIZE0 SST_FIFO_OFFSET+0x24
403#define SST_FIFO_BUMP0 SST_FIFO_OFFSET+0x28
404#define SST_FIFO_RDPTRL0 SST_FIFO_OFFSET+0x2c
405#define SST_FIFO_RDPTRH0 SST_FIFO_OFFSET+0x30
406#define SST_FIFO_AMIN0 SST_FIFO_OFFSET+0x34
407#define SST_FIFO_AMAX0 SST_FIFO_OFFSET+0x3c
408#define SST_FIFO_DEPTH0 SST_FIFO_OFFSET+0x44
409#define SST_FIFO_HOLECNT0 SST_FIFO_OFFSET+0x48
410
411#define SST_FIFO_BASEADDR1 SST_FIFO_OFFSET+0x50
412#define SST_FIFO_BASESIZE1 SST_FIFO_OFFSET+0x54
413#define SST_FIFO_BUMP1 SST_FIFO_OFFSET+0x58
414#define SST_FIFO_RDPTRL1 SST_FIFO_OFFSET+0x5c
415#define SST_FIFO_RDPTRH1 SST_FIFO_OFFSET+0x60
416#define SST_FIFO_AMIN1 SST_FIFO_OFFSET+0x64
417#define SST_FIFO_AMAX1 SST_FIFO_OFFSET+0x6c
418#define SST_FIFO_DEPTH1 SST_FIFO_OFFSET+0x74
419#define SST_FIFO_HOLECNT1 SST_FIFO_OFFSET+0x78
420
421#define SST_FIFO_FIFOTHRESH SST_FIFO_OFFSET+0x80
422
423#endif
424