GUI: Fix Tomato RAF theme for all builds. Compilation typo.
[tomato.git] / release / src-rt-6.x.4708 / cfe / cfe / arch / mips / board / p5064 / include / v96xpbc.h
blob176a211e8c238f2df52162934f3fe8d24521584b
1 /*
2 * v96xpbc.h: i960 to PCI bridge controller
3 */
5 #ifdef __ASSEMBLER__
7 /* offsets from base register */
8 #ifdef __MIPSEL
9 #define V96XW(x) (x)
10 #define V96XH(x) (x)
11 #define V96XB(x) (x)
12 #else
13 #define V96XW(x) (x)
14 #define V96XH(x) ((x)^2)
15 #define V96XB(x) ((x)^3)
16 #endif
18 #else /* !__ASSEMBLER */
20 /* offsets from base pointer, this construct allows optimisation */
21 /* static char * const _v96xp = PA_TO_KVA1(V96XPBC_BASE); */
23 #ifdef __MIPSEL
24 #define V96XW(x) *(volatile unsigned long *)(_v96xp + (x))
25 #define V96XH(x) *(volatile unsigned short *)(_v96xp + (x))
26 #define V96XB(x) *(volatile unsigned char *)(_v96xp + (x))
27 #else
28 #define V96XW(x) *(volatile unsigned long *)(_v96xp + (x))
29 #define V96XH(x) *(volatile unsigned short *)(_v96xp + ((x)^2))
30 #define V96XB(x) *(volatile unsigned char *)(_v96xp + ((x)^3))
31 #endif
33 #endif /* __ASSEMBLER__ */
35 #define V96X_PCI_VENDOR V96XH(0x00)
36 #define V96X_PCI_DEVICE V96XH(0x02)
37 #define V96X_PCI_CMD V96XH(0x04)
38 #define V96X_PCI_STAT V96XH(0x06)
39 #define V96X_PCI_CC_REV V96XW(0x08)
40 #define V96X_PCI_I2O_BASE V96XW(0x10) /* B.2 only */
41 #define V96X_PCI_HDR_CFG V96XW(0x0c)
42 #define V96X_PCI_IO_BASE V96XW(0x10)
43 #define V96X_PCI_BASE0 V96XW(0x14)
44 #define V96X_PCI_BASE1 V96XW(0x18)
45 #define V96X_PCI_BPARAM V96XW(0x3c)
46 #define V96X_PCI_MAP0 V96XW(0x40)
47 #define V96X_PCI_MAP1 V96XW(0x44)
48 #define V96X_PCI_INT_STAT V96XW(0x48)
49 #define V96X_PCI_INT_CFG V96XW(0x4c)
50 #define V96X_LB_BASE0 V96XW(0x54)
51 #define V96X_LB_BASE1 V96XW(0x58)
52 #define V96X_LB_MAP0 V96XH(0x5e)
53 #define V96X_LB_MAP1 V96XH(0x62)
54 #define V96X_LB_BASE2 V96XH(0x64) /* B.2 only */
55 #define V96X_LB_MAP2 V96XH(0x66) /* B.2 only */
56 #define V96X_LB_SIZE V96XW(0x68) /* B.2 only */
57 #define V96X_LB_IO_BASE V96XW(0x6c)
58 #define V96X_FIFO_CFG V96XH(0x70)
59 #define V96X_FIFO_PRIORITY V96XH(0x72)
60 #define V96X_FIFO_STAT V96XH(0x74)
61 #define V96X_LB_ISTAT V96XB(0x76)
62 #define V96X_LB_IMASK V96XB(0x77)
63 #define V96X_SYSTEM V96XH(0x78)
64 #define V96X_LB_CFGL V96XB(0x7a)
65 #define V96X_LB_CFG V96XB(0x7b)
66 #define V96X_PCI_CFG V96XH(0x7c) /* B.2 only */
67 #define V96X_DMA_PCI_ADDR0 V96XW(0x80)
68 #define V96X_DMA_LOCAL_ADDR0 V96XW(0x84)
69 #define V96X_DMA_LENGTH0 V96XW(0x88)
70 #define V96X_DMA_CTLB_ADR0 V96XW(0x8c)
71 #define V96X_DMA_PCI_ADDR1 V96XW(0x90)
72 #define V96X_DMA_LOCAL_ADDR1 V96XW(0x94)
73 #define V96X_DMA_LENGTH1 V96XW(0x98)
74 #define V96X_DMA_CTLB_ADR1 V96XW(0x9c)
75 #define V96X_MAIL_DATA(n) V96XB(0xc0+(n))
76 #define V96X_LB_MAIL_IEWR V96XH(0xd0)
77 #define V96X_LB_MAIL_IERD V96XH(0xd2)
78 #define V96X_PCI_MAIL_IEWR V96XH(0xd4)
79 #define V96X_PCI_MAIL_IERD V96XH(0xd6)
80 #define V96X_MAIL_WR_STAT V96XH(0xd8)
81 #define V96X_MAIL_RD_STAT V96XH(0xdc)
83 #define V96X_PCI_CMD_FBB_EN 0x0200
84 #define V96X_PCI_CMD_SERR_EN 0x0100
85 #define V96X_PCI_CMD_PAR_EN 0x0040
86 #define V96X_PCI_CMD_MASTER_EN 0x0004
87 #define V96X_PCI_CMD_MEM_EN 0x0002
88 #define V96X_PCI_CMD_IO_EN 0x0001
90 #define V96X_PCI_STAT_PAR_ERR 0x8000
91 #define V96X_PCI_STAT_SYS_ERR 0x4000
92 #define V96X_PCI_STAT_M_ABORT 0x2000
93 #define V96X_PCI_STAT_T_ABORT 0x1000
94 #define V96X_PCI_STAT_DEVSEL 0x0600
95 #define V96X_PCI_STAT_PAR_REP 0x0100
96 #define V96X_PCI_STAT_FAST_BACK 0x0080
98 #define V96X_PCI_CC_REV_BASE_CLASS 0xff000000
99 #define V96X_PCI_CC_REV_SUB_CLASS 0x00ff0000
100 #define V96X_PCI_CC_REV_PROG_IF 0x0000ff00
101 #define V96X_PCI_CC_REV_UREV 0x000000f0
102 #define V96X_PCI_CC_REV_VREV 0x0000000f
104 #define V96X_VREV_A 0x0
105 #define V96X_VREV_B0 0x1
106 #define V96X_VREV_B1 0x2
107 #define V96X_VREV_B2 0x3
108 #define V96X_VREV_C0 0x4
110 #define V96X_PCI_HDR_CFG_LT 0x0000ff00
111 #define V96X_PCI_HDR_CFG_LT_SHIFT 8
112 #define V96X_PCI_HDR_CFG_CLS 0x000000ff
113 #define V96X_PCI_HDR_CFG_CLS_SHIFT 0
115 /* pci access to internal v96xpbc registers */
116 #define V96X_PCI_IO_BASE_ADR_BASE 0xfffffff0
117 #define V96X_PCI_IO_BASE_PREFETCH 0x00000008
118 #define V96X_PCI_IO_BASE_TYPE 0x00000006
119 #define V96X_PCI_IO_BASE_IO 0x00000001
120 #define V96X_PCI_IO_BASE_MEM 0x00000000
122 /* pci to local bus aperture 0 base address */
123 #define V96X_PCI_BASE0_ADR_BASE 0xfff00000
124 #define V96X_PCI_BASE0_ADR_BASEL 0x000fff00
126 /* pci to local bus aperture 1 base address */
127 #define V96X_PCI_BASE1_ADR_BASE 0xfff00000
128 #define V96X_PCI_BASE1_ADR_BASEL 0x000fc000
129 #define V96X_PCI_BASE1_ADR_DOS_MEM 0x00000700
131 #define V96X_PCI_BASEx_PREFETCH 0x00000008
132 #define V96X_PCI_BASEx_IO 0x00000001
133 #define V96X_PCI_BASEx_MEM 0x00000000
135 /* pci bus parameter register */
136 #define V96X_PCI_BPARAM_MAX_LAT 0xff000000
137 #define V96X_PCI_BPARAM_MIN_GNT 0x00ff0000
138 #define V96X_PCI_BPARAM_INT_PIN 0x00000700
139 #define V96X_PCI_BPARAM_INT_LINE 0x0000000f
141 /* pci bus to local bus address map 0 */
142 #define V96X_PCI_MAPx_MAP_ADR 0xfff00000
143 #define V96X_PCI_MAPx_RD_POST_INH 0x00008000
144 #define V96X_PCI_MAP0_ROM_SIZE 0x00000c00
145 #define V96X_PCI_MAPx_SWAP 0x00000300
146 #define V96X_PCI_MAPx_ADR_SIZE 0x000000f0
147 #define V96X_PCI_MAPx_REG_EN 0x00000002
148 #define V96X_PCI_MAPx_ENABLE 0x00000001
150 #define V96X_ADR_SIZE_1MB (0x0<<4)
151 #define V96X_ADR_SIZE_2MB (0x1<<4)
152 #define V96X_ADR_SIZE_4MB (0x2<<4)
153 #define V96X_ADR_SIZE_8MB (0x3<<4)
154 #define V96X_ADR_SIZE_16MB (0x4<<4)
155 #define V96X_ADR_SIZE_32MB (0x5<<4)
156 #define V96X_ADR_SIZE_64MB (0x6<<4)
157 #define V96X_ADR_SIZE_128MB (0x7<<4)
158 #define V96X_ADR_SIZE_256MB (0x8<<4)
159 #define V96X_ADR_SIZE_DOSMODE (0xc<<4)
161 #define V96X_SWAP_NONE (0x0<<8)
162 #define V96X_SWAP_16BIT (0x1<<8)
163 #define V96X_SWAP_8BIT (0x2<<8)
164 #define V96X_SWAP_AUTO (0x3<<8)
166 /* pci interrupt status register */
167 #define V96X_PCI_INT_STAT_MAILBOX 0x80000000
168 #define V96X_PCI_INT_STAT_LOCAL 0x40000000
169 #define V96X_PCI_INT_STAT_DMA1 0x02000000
170 #define V96X_PCI_INT_STAT_DMA0 0x01000000
171 #define V96X_PCI_INT_STAT_INTC_TO_D 0x00004000
172 #define V96X_PCI_INT_STAT_INTB_TO_D 0x00002000
173 #define V96X_PCI_INT_STAT_INTA_TO_D 0x00001000
174 #define V96X_PCI_INT_STAT_INTD_TO_C 0x00000800
175 #define V96X_PCI_INT_STAT_INTB_TO_C 0x00000200
176 #define V96X_PCI_INT_STAT_INTA_TO_C 0x00000100
177 #define V96X_PCI_INT_STAT_INTD_TO_B 0x00000080
178 #define V96X_PCI_INT_STAT_INTC_TO_B 0x00000040
179 #define V96X_PCI_INT_STAT_INTA_TO_B 0x00000010
180 #define V96X_PCI_INT_STAT_INTD_TO_A 0x00000008
181 #define V96X_PCI_INT_STAT_INTC_TO_A 0x00000004
182 #define V96X_PCI_INT_STAT_INTB_TO_A 0x00000002
184 /* pci interrupt config register */
185 #define V96X_PCI_INT_CFG_MAILBOX 0x80000000
186 #define V96X_PCI_INT_CFG_LOCAL 0x40000000
187 #define V96X_PCI_INT_CFG_DMA1 0x02000000
188 #define V96X_PCI_INT_CFG_DMA0 0x01000000
189 #define V96X_PCI_INT_CFG_MODE_D 0x00c00000
190 #define V96X_PCI_INT_CFG_MODE_D_SHIFT 22
191 #define V96X_PCI_INT_CFG_MODE_C 0x00300000
192 #define V96X_PCI_INT_CFG_MODE_C_SHIFT 20
193 #define V96X_PCI_INT_CFG_MODE_B 0x000c0000
194 #define V96X_PCI_INT_CFG_MODE_B_SHIFT 18
195 #define V96X_PCI_INT_CFG_MODE_A 0x00030000
196 #define V96X_PCI_INT_CFG_MODE_A_SHIFT 16
197 #define V96X_PCI_INT_CFG_MODE_LEVEL 0x0
198 #define V96X_PCI_INT_CFG_MODE_EDGE 0x1
199 #define V96X_PCI_INT_CFG_MODE_SWCLR 0x2
200 #define V96X_PCI_INT_CFG_MODE_HWCLR 0x3
201 #define V96X_PCI_INT_CFG_INTD_TO_LB 0x00008000
202 #define V96X_PCI_INT_CFG_INTC_TO_D 0x00004000
203 #define V96X_PCI_INT_CFG_INTB_TO_D 0x00002000
204 #define V96X_PCI_INT_CFG_INTA_TO_D 0x00001000
205 #define V96X_PCI_INT_CFG_INTD_TO_C 0x00000800
206 #define V96X_PCI_INT_CFG_INTC_TO_LB 0x00000400
207 #define V96X_PCI_INT_CFG_INTB_TO_C 0x00000200
208 #define V96X_PCI_INT_CFG_INTA_TO_C 0x00000100
209 #define V96X_PCI_INT_CFG_INTD_TO_B 0x00000080
210 #define V96X_PCI_INT_CFG_INTC_TO_B 0x00000040
211 #define V96X_PCI_INT_CFG_INTB_TO_LB 0x00000020
212 #define V96X_PCI_INT_CFG_INTA_TO_B 0x00000010
213 #define V96X_PCI_INT_CFG_INTD_TO_A 0x00000008
214 #define V96X_PCI_INT_CFG_INTC_TO_A 0x00000004
215 #define V96X_PCI_INT_CFG_INTB_TO_A 0x00000002
216 #define V96X_PCI_INT_CFG_INTA_TO_LB 0x00000001
218 /* local bus to pci bus aperture 0,1 */
219 #define V96X_LB_BASEx_ADR_BASE 0xfff00000
220 #define V96X_LB_BASEx_SWAP 0x00000300
221 #define V96X_LB_BASEx_ADR_SIZE 0x000000f0
222 #define V96X_LB_BASEx_PREFETCH 0x00000008
223 #define V96X_LB_BASEx_ENABLE 0x00000001
225 /* local bus to pci bus address map 0,1 */
226 #define V96X_LB_MAPx_MAP_ADR 0xfff0
227 #define V96X_LB_MAPx_TYPE 0x0007
228 #define V96X_LB_TYPE_IACK (0x0<<1)
229 #define V96X_LB_TYPE_IO (0x1<<1)
230 #define V96X_LB_TYPE_MEM (0x3<<1)
231 #define V96X_LB_TYPE_CONF (0x5<<1)
232 #define V96X_LB_MAPx_AD_LOW_EN 0x0001 /* C.0 only */
234 /* local bus interrupt control, status and masks */
235 #define V96X_LB_INTR_MAILBOX 0x80
236 #define V96X_LB_INTR_PCI_RD 0x40
237 #define V96X_LB_INTR_PCI_WR 0x20
238 #define V96X_LB_INTR_PCI_INT 0x10
239 #define V96X_LB_INTR_DMA1 0x02
240 #define V96X_LB_INTR_DMA0 0x01
242 /* local bus configuration */
243 #define V96X_LB_CFG_TO_MASK 0x60 /* Rev C.0 */
244 #define V96X_LB_CFG_TO_1024 0x60 /* Rev C.0 */
245 #define V96X_LB_CFG_TO_512 0x40 /* Rev C.0 */
246 #define V96X_LB_CFG_TO_256 0x20
247 #define V96X_LB_CFG_TO_64 0x00
248 #define V96X_LB_CFG_LB_INT 0x04
249 #define V96X_LB_CFG_ERR_EN 0x02
250 #define V96X_LB_CFG_RDY_EN 0x01
252 /* PCI bus configuration */
253 #define V96X_PCI_CFG_I2O_EN 0x8000
254 #define V96X_PCI_CFG_IO_REG_DIS 0x4000
255 #define V96X_PCI_CFG_IO_DIS 0x2000
256 #define V96X_PCI_CFG_EN3V 0x1000
257 #define V96X_PCI_CFG_AD_LOW 0x0300
258 #define V96X_PCI_CFG_AD_LOW_SHIFT 8
259 #define V96X_PCI_CFG_DMA_RTYPE 0x00e0
260 #define V96X_PCI_CFG_DMA_WTYPE 0x000e
262 /* fifo configuration register */
263 #define V96X_FIFO_CFG_PBRST_MAX 0xc000
264 #define V96X_FIFO_CFG_PBRST_MAX_SHIFT 14
265 #define V96X_FIFO_CFG_WR_LB 0x3000
266 #define V96X_FIFO_CFG_WR_LB_SHIFT 12
267 #define V96X_FIFO_CFG_RD_LB1 0x0c00
268 #define V96X_FIFO_CFG_RD_LB1_SHIFT 10
269 #define V96X_FIFO_CFG_RD_LB0 0x0300
270 #define V96X_FIFO_CFG_RD_LB0_SHIFT 8
271 #define V96X_FIFO_CFG_LBRST_MAX 0x00c0
272 #define V96X_FIFO_CFG_LBRST_MAX_SHIFT 6
273 #define V96X_FIFO_CFG_WR_PCI 0x0030
274 #define V96X_FIFO_CFG_WR_PCI_SHIFT 4
275 #define V96X_FIFO_CFG_RD_PCI1 0x000c
276 #define V96X_FIFO_CFG_RD_PCI1_SHIFT 2
277 #define V96X_FIFO_CFG_RD_PCI0 0x0003
278 #define V96X_FIFO_CFG_RD_PCI0_SHIFT 0
280 /* meaning of above bitfields */
282 /* max burst length */
283 #define V96X_FIFO_CFG_BRST_4 0x0
284 #define V96X_FIFO_CFG_BRST_8 0x1
285 #define V96X_FIFO_CFG_BRST_16 0x2
286 #define V96X_FIFO_CFG_BRST_256 0x3
288 /* when to start refilling read fifo */
289 #define V96X_FIFO_CFG_RD_NOTFULL 0x0
290 #define V96X_FIFO_CFG_RD_HALF 0x1
291 #define V96X_FIFO_CFG_RD_EMPTY 0x2
293 /* when to start emptying write fifo */
294 #define V96X_FIFO_CFG_WR_NOTEMPTY 0x0
295 #define V96X_FIFO_CFG_WR_3WORDS 0x2
296 #define V96X_FIFO_CFG_WR_ENDBRST 0x3
298 /* fifo priority control */
299 #define V96X_FIFO_PRIORITY_LOCAL_RD 0x1000
300 #define V96X_FIFO_PRIORITY_LOCAL_WR 0x0000
301 #define V96X_FIFO_PRIORITY_LB_RD1 0x0c00
302 #define V96X_FIFO_PRIORITY_LB_RD1_SHIFT 10
303 #define V96X_FIFO_PRIORITY_LB_RD0 0x0300
304 #define V96X_FIFO_PRIORITY_LB_RD0_SHIFT 8
305 #define V96X_FIFO_PRIORITY_PCI_RD 0x0010
306 #define V96X_FIFO_PRIORITY_PCI_WR 0x0000
307 #define V96X_FIFO_PRIORITY_PCI_RD1 0x000c
308 #define V96X_FIFO_PRIORITY_PCI_RD1_SHIFT 2
309 #define V96X_FIFO_PRIORITY_PCI_RD0 0x0003
310 #define V96X_FIFO_PRIORITY_PCI_RD0_SHIFT 0
312 /* meaning of above bitfields */
313 #define V96X_FIFO_PRI_NOFLUSH 0x0
314 #define V96X_FIFO_PRI_FLUSHBURST 0x1 /* Rev C.0 */
315 #define V96X_FIFO_PRI_FLUSHME 0x2
316 #define V96X_FIFO_PRI_FLUSHALL 0x3
318 /* fifo status */
319 #define V96X_FIFO_STAT_L2P_WR 0x3000
320 #define V96X_FIFO_STAT_L2P_RD1 0x0c00
321 #define V96X_FIFO_STAT_L2P_RD0 0x0300
322 #define V96X_FIFO_STAT_P2L_WR 0x0030
323 #define V96X_FIFO_STAT_P2L_RD1 0x000c
324 #define V96X_FIFO_STAT_P2L_RD0 0x0003
326 #define V96X_DMA_COUNT_CHAIN 0x80000000
327 #define V96X_DMA_COUNT_PRIORITY 0x20000000
328 #define V96X_DMA_COUNT_P2L 0x10000000
329 #define V96X_DMA_COUNT_SWAP 0x0c000000
330 #define V96X_DMA_COUNT_ABORT 0x02000000
331 #define V96X_DMA_COUNT_DMA_IPR 0x01000000
333 #define V96X_SYSTEM_RST_OUT 0x8000
334 #define V96X_SYSTEM_LOCK 0x4000
335 #define V96X_SYSTEM_SPROM_EN 0x2000
336 #define V96X_SYSTEM_SCL 0x1000
337 #define V96X_SYSTEM_SDA_OUT 0x0800
338 #define V96X_SYSTEM_SDA_IN 0x0400
339 #define V96X_SYSTEM_POE 0x0200
340 #define V96X_SYSTEM_LB_RD_PCI1 0x0040
341 #define V96X_SYSTEM_LB_RD_PCI0 0x0020
342 #define V96X_SYSTEM_LB_WR_PCI 0x0010
343 #define V96X_SYSTEM_PCI_RD_LB1 0x0004
344 #define V96X_SYSTEM_PCI_RD_LB0 0x0002
345 #define V96X_SYSTEM_PC_WR_LBI 0x0001