3 #ifndef _PMAX_DEV_PXREG_H_
4 #define _PMAX_DEV_PXREG_H_
71 #define STAMP_CMD_POINTS (0x0000)
72 #define STAMP_CMD_LINES (0x0001)
73 #define STAMP_CMD_TRIANGLES (0x0002)
74 #define STAMP_CMD_COPYSPANS (0x0005)
75 #define STAMP_CMD_READSPANS (0x0006)
76 #define STAMP_CMD_WRITESPANS (0x0007)
77 #define STAMP_CMD_VIDEO (0x0008)
80 #define STAMP_RGB_NONE (0x0000)
81 #define STAMP_RGB_CONST (0x0010)
82 #define STAMP_RGB_FLAT (0x0020)
83 #define STAMP_RGB_SMOOTH (0x0030)
86 #define STAMP_Z_NONE (0x0000)
87 #define STAMP_Z_CONST (0x0040)
88 #define STAMP_Z_FLAT (0x0080)
89 #define STAMP_Z_SMOOTH (0x00c0)
92 #define STAMP_XY_NONE (0x0000)
93 #define STAMP_XY_PERPACKET (0x0100)
94 #define STAMP_XY_PERPRIMATIVE (0x0200)
97 #define STAMP_LW_NONE (0x0000)
98 #define STAMP_LW_PERPACKET (0x0400)
99 #define STAMP_LW_PERPRIMATIVE (0x0800)
102 #define STAMP_CLIPRECT (0x00080000)
103 #define STAMP_MESH (0x00200000)
104 #define STAMP_AALINE (0x00800000)
105 #define STAMP_HS_EQUALS (0x80000000)
113 #define STAMP_PLANE_8X3 (0 << 5)
114 #define STAMP_PLANE_24 (1 << 5)
117 #define STAMP_WE_SIGN (0x04 << 8)
118 #define STAMP_WE_XYMASK (0x02 << 8)
119 #define STAMP_WE_CLIPRECT (0x01 << 8)
120 #define STAMP_WE_NONE (0x00 << 8)
123 #define STAMP_METHOD_CLEAR (0x60 << 12)
124 #define STAMP_METHOD_AND (0x14 << 12)
125 #define STAMP_METHOD_ANDREV (0x15 << 12)
126 #define STAMP_METHOD_COPY (0x20 << 12)
127 #define STAMP_METHOD_ANDINV (0x16 << 12)
128 #define STAMP_METHOD_NOOP (0x40 << 12)
129 #define STAMP_METHOD_XOR (0x11 << 12)
130 #define STAMP_METHOD_OR (0x0f << 12)
131 #define STAMP_METHOD_NOR (0x17 << 12)
132 #define STAMP_METHOD_EQUIV (0x10 << 12)
133 #define STAMP_METHOD_INV (0x4e << 12)
134 #define STAMP_METHOD_ORREV (0x0e << 12)
135 #define STAMP_METHOD_COPYINV (0x2d << 12)
136 #define STAMP_METHOD_ORINV (0x0d << 12)
137 #define STAMP_METHOD_NAND (0x0c << 12)
138 #define STAMP_METHOD_SET (0x6c << 12)
139 #define STAMP_METHOD_SUM (0x00 << 12)
140 #define STAMP_METHOD_DIFF (0x02 << 12)
141 #define STAMP_METHOD_REVDIFF (0x01 << 12)
144 #define STAMP_DB_NONE (0x00 << 28)
145 #define STAMP_DB_01 (0x01 << 28)
146 #define STAMP_DB_12 (0x02 << 28)
147 #define STAMP_DB_02 (0x04 << 28)
150 #define STAMP_UPDATE_ENABLE (1)
151 #define STAMP_SAVE_SIGN (1<<6)
152 #define STAMP_SAVE_ALPHA (1<<7)
153 #define STAMP_SUPERSAMPLE (1<<11)
154 #define STAMP_SPAN (1<<19)
155 #define STAMP_COPYSPAN_ALIGNED (1<<20)
156 #define STAMP_MINMAX (1<<21)
157 #define STAMP_MULT (1<<22)
158 #define STAMP_MULTACC (1<<23)
159 #define STAMP_HALF_BUFF (1<27)
160 #define STAMP_INITIALIZE (1<<31)
163 #define STAMP_WIDTH (pxi->pxi_stampw)
164 #define STAMP_HEIGHT (pxi->pxi_stamph)
167 #define XMASKADDR(__sx, __a) (((__a)-((__sx) % STAMP_WIDTH)) & 0xF)
168 #define YMASKADDR(__sy, __b) (((__b)-((__sy) % STAMP_HEIGHT)) & 0xF)
169 #define XYMASKADDR(_x,_y,_a,_b) (XMASKADDR(_x,_a) << 16 | YMASKADDR(_y,_b))
179 #define STAMP_BUSY (1)
180 #define STAMP_RETRIES (7000)
181 #define STAMP_DELAY (20)
184 #define __PXS(n) ((n) << 1)
192 #define PX_STIC_POLL_OFFSET __PXS(0x000000)
193 #define PX_STAMP_OFFSET __PXS(0x0c0000)
194 #define PX_STIC_OFFSET __PXS(0x180000)
195 #define PX_VDAC_OFFSET __PXS(0x200000)
196 #define PX_VDAC_RESET_OFFSET __PXS(0x300000)
197 #define PX_ROM_OFFSET __PXS(0x300000)
202 #define PXG_STIC_POLL_OFFSET __PXS(0x000000)
203 #define PXG_STAMP_OFFSET __PXS(0x0c0000)
204 #define PXG_STIC_OFFSET __PXS(0x180000)
205 #define PXG_SRAM_OFFSET __PXS(0x200000)
206 #define PXG_HOST_INTR_OFFSET __PXS(0x280000)
207 #define PXG_COPROC_INTR_OFFSET __PXS(0x2c0000)
208 #define PXG_VDAC_OFFSET __PXS(0x300000)
209 #define PXG_VDAC_RESET_OFFSET __PXS(0x340000)
210 #define PXG_ROM_OFFSET __PXS(0x380000)
211 #define PXG_N10_START_OFFSET __PXS(0x380000)
212 #define PXG_N10_RESET_OFFSET __PXS(0x3c0000)
223 volatile int32_t
hsync;
224 volatile int32_t __pad4;
226 volatile int32_t __pad5;
228 volatile int32_t __pad6;
229 volatile int32_t
vsync;
230 volatile int32_t __pad7;
232 volatile int32_t __pad8;
233 volatile int32_t
vtest;
234 volatile int32_t __pad9;
236 volatile int32_t __pad10;
237 volatile int32_t __pad11;
238 volatile int32_t __pad12;
240 volatile int32_t __pad13;
242 volatile int32_t __pad14;
244 volatile int32_t __pad15;
245 volatile int32_t __pad16;
246 volatile int32_t __pad17;
248 volatile int32_t __pad18;
249 volatile int32_t
modcl;
250 volatile int32_t __pad19;
275 #define STIC_CSR_TSTFNC 0x00000003
276 # define STIC_CSR_TSTFNC_NORMAL 0
277 # define STIC_CSR_TSTFNC_PARITY 1
278 # define STIC_CSR_TSTFNC_CNTPIX 2
279 # define STIC_CSR_TSTFNC_TSTDAC 3
280 #define STIC_CSR_CHECKPAR 0x00000004
281 #define STIC_CSR_STARTVT 0x00000010
282 #define STIC_CSR_START 0x00000020
283 #define STIC_CSR_RESET 0x00000040
284 #define STIC_CSR_STARTST 0x00000080
293 #define STIC_INT_E_EN 0x00000001
294 #define STIC_INT_E 0x00000002
295 #define STIC_INT_E_WE 0x00000004
297 #define STIC_INT_V_EN 0x00000100
298 #define STIC_INT_V 0x00000200
299 #define STIC_INT_V_WE 0x00000400
301 #define STIC_INT_P_EN 0x00010000
302 #define STIC_INT_P 0x00020000
303 #define STIC_INT_P_WE 0x00040000
305 #define STIC_INT_E_MASK (STIC_INT_E_EN | STIC_INT_E | STIC_INT_E_WE)
306 #define STIC_INT_V_MASK (STIC_INT_V_EN | STIC_INT_V | STIC_INT_V_WE)
307 #define STIC_INT_P_MASK (STIC_INT_P_EN | STIC_INT_P | STIC_INT_P_WE)
308 #define STIC_INT_MASK (STIC_INT_E_MASK | STIC_INT_P_MASK | STIC_INT_V_MASK)
310 #define STIC_INT_WE (STIC_INT_E_WE | STIC_INT_V_WE | STIC_INT_P_WE)
311 #define STIC_INT_CLR (STIC_INT_E_EN | STIC_INT_V_EN | STIC_INT_P_EN)
335 static __inline__ u_long px_sys2stic
__P((
void *));
336 static __inline__ u_long px_sys2dma
__P((
void *));
337 static __inline__
volatile int32_t *px_poll_addr
__P((caddr_t,
void *));
339 static __inline__ u_long
346 v = ((v & ~0x7fff) << 3) | (v & 0x7fff);
347 return (v & 0x1ffff800);
350 static __inline__ u_long
355 return px_sys2stic(
addr) >> 9;
362 static __inline__
volatile int32_t *
363 px_poll_addr(slotbase,
addr)
368 return (
volatile int32_t *)(slotbase + px_sys2dma(
addr));