emipsreg.h revision 1.1 1 1.1 pooka /* $NetBSD: emipsreg.h,v 1.1 2011/01/26 01:18:51 pooka Exp $ */
2 1.1 pooka
3 1.1 pooka /*-
4 1.1 pooka * Copyright (c) 2010 The NetBSD Foundation, Inc.
5 1.1 pooka * All rights reserved.
6 1.1 pooka *
7 1.1 pooka * This code was written by Alessandro Forin and Neil Pittman
8 1.1 pooka * at Microsoft Research and contributed to The NetBSD Foundation
9 1.1 pooka * by Microsoft Corporation.
10 1.1 pooka *
11 1.1 pooka * Redistribution and use in source and binary forms, with or without
12 1.1 pooka * modification, are permitted provided that the following conditions
13 1.1 pooka * are met:
14 1.1 pooka * 1. Redistributions of source code must retain the above copyright
15 1.1 pooka * notice, this list of conditions and the following disclaimer.
16 1.1 pooka * 2. Redistributions in binary form must reproduce the above copyright
17 1.1 pooka * notice, this list of conditions and the following disclaimer in the
18 1.1 pooka * documentation and/or other materials provided with the distribution.
19 1.1 pooka *
20 1.1 pooka * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
21 1.1 pooka * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
22 1.1 pooka * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
23 1.1 pooka * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
24 1.1 pooka * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
25 1.1 pooka * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
26 1.1 pooka * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
27 1.1 pooka * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
28 1.1 pooka * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
29 1.1 pooka * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
30 1.1 pooka * POSSIBILITY OF SUCH DAMAGE.
31 1.1 pooka */
32 1.1 pooka
33 1.1 pooka /*
34 1.1 pooka * Reference:
35 1.1 pooka * TBD MSR techreport by Richard Pittman and Alessandro Forin
36 1.1 pooka *
37 1.1 pooka * Definitions for the Xilinx ML40x dev boards with MSR's eMIPS.
38 1.1 pooka */
39 1.1 pooka
40 1.1 pooka #ifndef _MIPS32_EMIPS_EMIPSREG_H_
41 1.1 pooka #define _MIPS32_EMIPS_EMIPSREG_H_ 1
42 1.1 pooka
43 1.1 pooka /*
44 1.1 pooka * Peripheral Mapping Table (PMT) definitions
45 1.1 pooka *
46 1.1 pooka * Each entry in this table holds the physical address of a section of peripherals
47 1.1 pooka * and the tag for the type of peripherals in that section.
48 1.1 pooka * Peripherals of the same type go into the same section, which is subdivided
49 1.1 pooka * as appropriate for that peripheral type.
50 1.1 pooka * Each section is at least 64KB wide, each subdivision is at least 4KB wide.
51 1.1 pooka *
52 1.1 pooka * NB: This table grows *down* from the top of the address space
53 1.1 pooka * The value 0xffffffff for an entry indicates the section is not populated.
54 1.1 pooka * The tag 0xffff is therefore invalid.
55 1.1 pooka * The end-of-table is indicated by the first invalid entry.
56 1.1 pooka *
57 1.1 pooka * Entries in the table are (preferably) in the processor's own byteorder.
58 1.1 pooka * The first entry is for the table itself and has a known tag.
59 1.1 pooka * From this software can verify the byteorder is correct.
60 1.1 pooka *
61 1.1 pooka * For each section we also define here its favorite placement in the address space.
62 1.1 pooka * Software should verify the table for the ultimate truth, peripherals might
63 1.1 pooka * or might not be present in the FPGA bitfile being used.
64 1.1 pooka *
65 1.1 pooka */
66 1.1 pooka #ifndef __ASSEMBLER__
67 1.1 pooka struct _Pmt {
68 1.1 pooka
69 1.1 pooka volatile uint16_t TopOfPhysicalAddress;
70 1.1 pooka volatile uint16_t Tag;
71 1.1 pooka };
72 1.1 pooka #define ThePmt (((struct _Pmt *)0)-1)
73 1.1 pooka
74 1.1 pooka #endif /* !__ASSEMBLER__ */
75 1.1 pooka
76 1.1 pooka /*
77 1.1 pooka * Peripheral tags
78 1.1 pooka */
79 1.1 pooka # define PMTTAG_END_OF_TABLE 0xffff /* required, last entry */
80 1.1 pooka # define PMTTAG_BRAM 0
81 1.1 pooka # define PMTTAG_PMT 1 /* required, first entry */
82 1.1 pooka # define PMTTAG_SRAM 2
83 1.1 pooka # define PMTTAG_DDRAM 3
84 1.1 pooka # define PMTTAG_FLASH 4
85 1.1 pooka # define PMTTAG_INTERRUPT_CONTROLLER 5
86 1.1 pooka # define PMTTAG_USART 6
87 1.1 pooka # define PMTTAG_TIMER 7
88 1.1 pooka # define PMTTAG_WATCHDOG 8
89 1.1 pooka # define PMTTAG_GPIO 9
90 1.1 pooka # define PMTTAG_SYSTEM_ACE 10
91 1.1 pooka # define PMTTAG_LCD 11
92 1.1 pooka # define PMTTAG_PS2 12
93 1.1 pooka # define PMTTAG_VGA 13
94 1.1 pooka # define PMTTAG_ETHERNET 14
95 1.1 pooka # define PMTTAG_AC97 15
96 1.1 pooka # define PMTTAG_POWER_MGR 16
97 1.1 pooka # define PMTTAG_EXTENSION_CONTROLLER 17
98 1.1 pooka # define PMTTAG_ICAP 18
99 1.1 pooka # define PMTTAG_LAST_TAG_DEFINED 18
100 1.1 pooka
101 1.1 pooka /*
102 1.1 pooka * Preferred addresses (nb: for the control registers of...)
103 1.1 pooka */
104 1.1 pooka # define BRAM_DEFAULT_ADDRESS (0xffff << 16)
105 1.1 pooka # define SRAM_0_DEFAULT_ADDRESS (0xfffd << 16)
106 1.1 pooka # define DDRAM_0_DEFAULT_ADDRESS (0xfffc << 16)
107 1.1 pooka # define FLASH_0_DEFAULT_ADDRESS (0xfffb << 16)
108 1.1 pooka # define INTERRUPT_CONTROLLER_DEFAULT_ADDRESS (0xfffa << 16)
109 1.1 pooka # define USART_DEFAULT_ADDRESS (0xfff9 << 16)
110 1.1 pooka # define TIMER_DEFAULT_ADDRESS (0xfff8 << 16)
111 1.1 pooka # define WATCHDOG_DEFAULT_ADDRESS (0xfff7 << 16)
112 1.1 pooka # define GPIO_DEFAULT_ADDRESS (0xfff6 << 16)
113 1.1 pooka # define IDE_DEFAULT_ADDRESS (0xfff5 << 16)
114 1.1 pooka # define LCD_DEFAULT_ADDRESS (0xfff4 << 16)
115 1.1 pooka # define PS2_DEFAULT_ADDRESS (0xfff3 << 16)
116 1.1 pooka # define VGA_DEFAULT_ADDRESS (0xfff2 << 16)
117 1.1 pooka # define ETHERNET_DEFAULT_ADDRESS (0xfff1 << 16)
118 1.1 pooka # define POWER_MGR_DEFAULT_ADDRESS (0xfff0 << 16)
119 1.1 pooka # define AC97_DEFAULT_ADDRESS (0xffef << 16)
120 1.1 pooka # define EXTENSION_CONTROLLER_DEFAULT_ADDRESS (0xffee << 16)
121 1.1 pooka # define ICAP_DEFAULT_ADDRESS (0xffed << 16)
122 1.1 pooka
123 1.1 pooka
124 1.1 pooka /*
125 1.1 pooka * SRAM controller
126 1.1 pooka */
127 1.1 pooka #ifndef __ASSEMBLER__
128 1.1 pooka struct _Sram {
129 1.1 pooka volatile uint32_t BaseAddressAndTag; /* rw */
130 1.1 pooka volatile uint32_t Control; /* rw */
131 1.1 pooka };
132 1.1 pooka #else
133 1.1 pooka # define SRAMBT 0
134 1.1 pooka # define SRAMST 4
135 1.1 pooka #endif /* !__ASSEMBLER__ */
136 1.1 pooka
137 1.1 pooka # define SRAMBT_TAG 0x0000ffff /* ro */
138 1.1 pooka # define SRAMBT_BASE 0xffff0000 /* rw */
139 1.1 pooka
140 1.1 pooka # define SRAMST_DELAY 0x0000000f /* rw */
141 1.1 pooka # define SRAMST_BURST_INTERLEAVED 0x00000010 /* ro */
142 1.1 pooka # define SRAMST_BURST_LINEAR 0x00000000 /* ro */
143 1.1 pooka # define SRAMST_BURST_ENABLE 0x00000020 /* rw */
144 1.1 pooka # define SRAMST_BURST_DISABLE 0x00000000 /* rw */
145 1.1 pooka # define SRAMST_CLOCK_MASK 0x00000040 /* rw */
146 1.1 pooka # define SRAMST_SLEEP 0x00000080 /* rw */
147 1.1 pooka # define SRAMST_PARITY 0x00000f00 /* rw */
148 1.1 pooka # define SRAMST_RESET 0x00001000 /* rw */
149 1.1 pooka # define SRAMST_BUS_8 0x00002000 /* rw */
150 1.1 pooka # define SRAMST_BUS_16 0x00004000 /* rw */
151 1.1 pooka # define SRAMST_BUS_32 0x00008000 /* rw */
152 1.1 pooka # define SRAMST_SIZE 0xffff0000 /* ro
153 1.1 pooka * in bytes, masked */
154 1.1 pooka
155 1.1 pooka /*
156 1.1 pooka * DDRAM controller
157 1.1 pooka */
158 1.1 pooka #ifndef __ASSEMBLER__
159 1.1 pooka struct _Ddram {
160 1.1 pooka volatile uint32_t BaseAddressAndTag; /* rw */
161 1.1 pooka volatile uint32_t Control; /* rw */
162 1.1 pooka volatile uint32_t PreCharge; /* wo */
163 1.1 pooka volatile uint32_t Refresh; /* wo */
164 1.1 pooka };
165 1.1 pooka #else
166 1.1 pooka # define DDRAMBT 0
167 1.1 pooka # define DDRAMST 4
168 1.1 pooka # define DDRAMPC 8
169 1.1 pooka # define DDRAMRF 12
170 1.1 pooka # define DDRAMCTRL_SIZE 16
171 1.1 pooka #endif /* !__ASSEMBLER__ */
172 1.1 pooka
173 1.1 pooka # define DDRAMBT_TAG 0x0000ffff /* ro */
174 1.1 pooka # define DDRAMBT_BASE 0xffff0000 /* rw */
175 1.1 pooka
176 1.1 pooka # define DDRAMST_RST 0x00000001 /* rw */
177 1.1 pooka # define DDRAMST_CLR 0x00000002 /* rw */
178 1.1 pooka # define DDRAMST_TSTEN 0x00000004 /* rw */
179 1.1 pooka # define DDRAMST_BUF 0x00000008 /* rw */
180 1.1 pooka # define DDRAMST_CALDNE 0x00000010 /* ro */
181 1.1 pooka # define DDRAMST_CALFAIL 0x00000020 /* ro */
182 1.1 pooka # define DDRAMST_SERR 0x00000040 /* ro */
183 1.1 pooka # define DDRAMST_DERR 0x00000080 /* ro */
184 1.1 pooka # define DDRAMST_BURST 0x00000f00 /* ro */
185 1.1 pooka # define DDRAMST_OVF 0x00001000 /* ro */
186 1.1 pooka # define DDRAMST_BUS8 0x00002000 /* ro */
187 1.1 pooka # define DDRAMST_BUS16 0x00004000 /* ro */
188 1.1 pooka # define DDRAMST_BUS32 0x00008000 /* ro */
189 1.1 pooka # define DDRAMST_SIZE 0xffff0000 /* ro */
190 1.1 pooka
191 1.1 pooka /*
192 1.1 pooka * FLASH controller
193 1.1 pooka */
194 1.1 pooka #ifndef __ASSEMBLER__
195 1.1 pooka struct _Flash {
196 1.1 pooka volatile uint32_t BaseAddressAndTag; /* rw */
197 1.1 pooka volatile uint32_t Control; /* rw */
198 1.1 pooka };
199 1.1 pooka #else
200 1.1 pooka # define FLASHBT 0
201 1.1 pooka # define FLASHST 4
202 1.1 pooka #endif /* !__ASSEMBLER__ */
203 1.1 pooka
204 1.1 pooka # define FLASHBT_TAG 0x0000ffff /* ro */
205 1.1 pooka # define FLASHBT_BASE 0xffff0000 /* rw */
206 1.1 pooka
207 1.1 pooka # define FLASHST_DELAY 0x0000000f /* rw */
208 1.1 pooka # define FLASHST_RESET_PIN 0x00000010 /* rw */
209 1.1 pooka # define FLASHST_RESET_CONTROLLER 0x00001000 /* rw */
210 1.1 pooka # define FLASHST_BUS_8 0x00002000 /* rw */
211 1.1 pooka # define FLASHST_BUS_16 0x00004000 /* rw */
212 1.1 pooka # define FLASHST_BUS_32 0x00008000 /* rw */
213 1.1 pooka # define FLASHST_SIZE 0xffff0000 /* ro
214 1.1 pooka * in bytes, masked */
215 1.1 pooka
216 1.1 pooka /*
217 1.1 pooka * ARM RPS Interrupt Controller (AIC)
218 1.1 pooka */
219 1.1 pooka #ifndef __ASSEMBLER__
220 1.1 pooka struct _Aic {
221 1.1 pooka volatile uint32_t Tag; /* ro */
222 1.1 pooka volatile uint32_t IrqStatus; /* rw */
223 1.1 pooka volatile uint32_t IrqRawStatus; /* ro */
224 1.1 pooka volatile uint32_t IrqEnable; /* rw */
225 1.1 pooka volatile uint32_t IrqEnableClear;
226 1.1 pooka volatile uint32_t IrqSoft;
227 1.1 pooka };
228 1.1 pooka #else
229 1.1 pooka # define AICT 0
230 1.1 pooka # define AICS 4
231 1.1 pooka # define AICRS 8
232 1.1 pooka # define AICEN 12
233 1.1 pooka # define AICEC 16
234 1.1 pooka #endif /* !__ASSEMBLER__ */
235 1.1 pooka
236 1.1 pooka # define AIC_TIMER 0
237 1.1 pooka # define AIC_SOFTWARE 1
238 1.1 pooka # define AIC_GPIO 2
239 1.1 pooka # define AIC_WATCHDOG 3
240 1.1 pooka # define AIC_SYSTEM_ACE 4
241 1.1 pooka # define AIC_ETHERNET 5
242 1.1 pooka # define AIC_PS2 6
243 1.1 pooka # define AIC_AC97 7
244 1.1 pooka # define AIC_USART 9
245 1.1 pooka # define AIC_EXTENSION_CONTROLLER 10
246 1.1 pooka # define AIC_ICAP 11
247 1.1 pooka # define AIC_SYSTEM_ACE2 12
248 1.1 pooka # define AIC_VGA 13
249 1.1 pooka # define AIC_EXTENSION_2 29
250 1.1 pooka # define AIC_EXTENSION_1 30
251 1.1 pooka # define AIC_EXTENSION_0 31
252 1.1 pooka
253 1.1 pooka # define AIC_TIMER_BIT (1 << AIC_TIMER)
254 1.1 pooka # define AIC_SOFTWARE_BIT (1 << AIC_SOFTWARE)
255 1.1 pooka # define AIC_GPIO_BIT (1 << AIC_GPIO)
256 1.1 pooka # define AIC_WATCHDOG_BIT (1 << AIC_WATCHDOG)
257 1.1 pooka # define AIC_SYSTEM_ACE_BIT (1 << AIC_SYSTEM_ACE)
258 1.1 pooka # define AIC_ETHERNET_BIT (1 << AIC_ETHERNET)
259 1.1 pooka # define AIC_PS2_BIT (1 << AIC_PS2)
260 1.1 pooka # define AIC_AC97_BIT (1 << AIC_AC97)
261 1.1 pooka # define AIC_USART_BIT (1 << AIC_USART)
262 1.1 pooka # define AIC_EXTENSION_CONTROLLER_BIT (1 << AIC_EXTENSION_CONTROLLER)
263 1.1 pooka # define AIC_ICAP_BIT (1 << AIC_ICAP)
264 1.1 pooka # define AIC_SYSTEM_ACE2_BIT (1 << AIC_SYSTEM_ACE2)
265 1.1 pooka # define AIC_VGA_BIT (1 << AIC_VGA)
266 1.1 pooka # define AIC_EXTENSION_2_BIT (1 << AIC_EXTENSION_2)
267 1.1 pooka # define AIC_EXTENSION_1_BIT (1 << AIC_EXTENSION_1)
268 1.1 pooka # define AIC_EXTENSION_0_BIT (1 << AIC_EXTENSION_0)
269 1.1 pooka
270 1.1 pooka /*
271 1.1 pooka * General Purpose I/O pads controller (GPIO)
272 1.1 pooka */
273 1.1 pooka #ifndef __ASSEMBLER__
274 1.1 pooka struct _Pio {
275 1.1 pooka volatile uint32_t Tag; /* ro value=9 NB: All other registers RESET to 0 */
276 1.1 pooka volatile uint32_t Enable; /* rw READ: 0 => high-z, 1 => In/Out based on DIRECTION
277 1.1 pooka * WRITE: 0 => no effect, 1 => pin is enabled for I/O */
278 1.1 pooka volatile uint32_t Disable; /* wo 0 => no effect, 1 => disabled, set in high-z */
279 1.1 pooka volatile uint32_t Direction; /* rw READ: 0 => input, 1 => output (if enabled)
280 1.1 pooka * WRITE: 0 => no-effect, 1 => output */
281 1.1 pooka volatile uint32_t OutDisable; /* wo 0 => no effect, 1 => set for input */
282 1.1 pooka
283 1.1 pooka volatile uint32_t PinData; /* rw READ: 0 => LOW, 1 => HIGH
284 1.1 pooka * WRITE: 0 => no effect, 1 => set pin HIGH */
285 1.1 pooka volatile uint32_t ClearData; /* wo 0 => no effect, 1 => set pin LOW */
286 1.1 pooka volatile uint32_t PinStatus; /* ro 0 => LOW, 1 => HIGH */
287 1.1 pooka
288 1.1 pooka volatile uint32_t IntrStatus; /* rw READ: 0 => none 1 => pending (regardless of INTRMASK)
289 1.1 pooka * WRITE: 0 => no-effect, 1 => clear if pending */
290 1.1 pooka volatile uint32_t IntrEnable; /* rw READ: 0 => none, 1 => enabled
291 1.1 pooka * WRITE: 0 => no-effect, 1 => enable */
292 1.1 pooka volatile uint32_t IntrDisable; /* wo 0 => no effect, 1 => disable */
293 1.1 pooka volatile uint32_t IntrTrigger; /* rw 0 => intr on level change, 1 => on transition */
294 1.1 pooka volatile uint32_t IntrNotLevel; /* rw 0 => HIGH, 1 => LOW -- Combinations:
295 1.1 pooka * Trig Lev InterruptOn..
296 1.1 pooka * 0 0 level high
297 1.1 pooka * 0 1 level low
298 1.1 pooka * 1 0 low to high transition
299 1.1 pooka * 1 1 high to low transition
300 1.1 pooka */
301 1.1 pooka volatile uint32_t reserved[3]; /* ro padding to 64 bytes total */
302 1.1 pooka };
303 1.1 pooka #else
304 1.1 pooka # define PIOT 0
305 1.1 pooka # define PIOEN 4
306 1.1 pooka # define PIOD 8
307 1.1 pooka # define PIODIR 12
308 1.1 pooka # define PIOOD 16
309 1.1 pooka # define PIOPD 20
310 1.1 pooka # define PIOCD 24
311 1.1 pooka # define PIOPS 28
312 1.1 pooka # define PIOIS 32
313 1.1 pooka # define PIOIE 36
314 1.1 pooka # define PIOID 40
315 1.1 pooka # define PIOIT 44
316 1.1 pooka # define PIOINL 48
317 1.1 pooka #endif /* !__ASSEMBLER__ */
318 1.1 pooka
319 1.1 pooka /* DIP switches on SW1 and their known uses */
320 1.1 pooka # define PIO_SW1_1 0
321 1.1 pooka # define PIO_SW1_1_BIT (1 << PIO_SW1_1)
322 1.1 pooka # define PIO_SW1_2 1
323 1.1 pooka # define PIO_SW1_2_BIT (1 << PIO_SW1_2)
324 1.1 pooka # define PIO_SW1_3 2
325 1.1 pooka # define PIO_SW1_3_BIT (1 << PIO_SW1_3)
326 1.1 pooka # define PIO_SW1_4 3
327 1.1 pooka # define PIO_SW1_4_BIT (1 << PIO_SW1_4)
328 1.1 pooka # define PIO_SW1_5 4
329 1.1 pooka # define PIO_SW1_5_BIT (1 << PIO_SW1_5)
330 1.1 pooka # define PIO_SW1_6 5
331 1.1 pooka # define PIO_SW1_6_BIT (1 << PIO_SW1_6)
332 1.1 pooka # define PIO_SW1_7 6
333 1.1 pooka # define PIO_SW1_7_BIT (1 << PIO_SW1_7)
334 1.1 pooka # define PIO_SW1_8 7
335 1.1 pooka # define PIO_SW1_8_BIT (1 << PIO_SW1_8)
336 1.1 pooka # define SW1_BOOT_FROM_FLASH PIO_SW1_1_BIT /* else USART */
337 1.1 pooka # define SW1_BOOT_FS_IN_FLASH PIO_SW1_2_BIT /* else serplexd via USART */
338 1.1 pooka # define SW1_BOOT_FROM_SRAM PIO_SW1_3_BIT /* else USART */
339 1.1 pooka /* LEDs */
340 1.1 pooka # define PIO_LED_NORTH 8
341 1.1 pooka # define PIO_LED_NORTH_BIT (1 << PIO_LED_NORTH)
342 1.1 pooka # define PIO_LED_EAST 9
343 1.1 pooka # define PIO_LED_EAST_BIT (1 << PIO_LED_EAST)
344 1.1 pooka # define PIO_LED_SOUTH 10
345 1.1 pooka # define PIO_LED_SOUTH_BIT (1 << PIO_LED_SOUTH)
346 1.1 pooka # define PIO_LED_WEST 11
347 1.1 pooka # define PIO_LED_WEST_BIT (1 << PIO_LED_WEST)
348 1.1 pooka # define PIO_LED_CENTER 12
349 1.1 pooka # define PIO_LED_CENTER_BIT (1 << PIO_LED_CENTER)
350 1.1 pooka # define PIO_LED_GP0 13
351 1.1 pooka # define PIO_LED_GP0_BIT (1 << PIO_LED_GP0)
352 1.1 pooka # define PIO_LED_GP1 14
353 1.1 pooka # define PIO_LED_GP1_BIT (1 << PIO_LED_GP1)
354 1.1 pooka # define PIO_LED_GP2 15
355 1.1 pooka # define PIO_LED_GP2_BIT (1 << PIO_LED_GP2)
356 1.1 pooka # define PIO_LED_GP3 16
357 1.1 pooka # define PIO_LED_GP3_BIT (1 << PIO_LED_GP3)
358 1.1 pooka # define PIO_LED_ERROR1 17
359 1.1 pooka # define PIO_LED_ERROR1_BIT (1 << PIO_LED_ERROR1)
360 1.1 pooka # define PIO_LED_ERROR2 18
361 1.1 pooka # define PIO_LED_ERROR2_BIT (1 << PIO_LED_ERROR2)
362 1.1 pooka /* Buttons */
363 1.1 pooka # define PIO_BUTTON_NORTH 19
364 1.1 pooka # define PIO_BUTTON_NORTH_BIT (1 << PIO_BUTTON_NORTH)
365 1.1 pooka # define PIO_BUTTON_EAST 20
366 1.1 pooka # define PIO_BUTTON_EAST_BIT (1 << PIO_BUTTON_EAST)
367 1.1 pooka # define PIO_BUTTON_SOUTH 21
368 1.1 pooka # define PIO_BUTTON_SOUTH_BIT (1 << PIO_BUTTON_SOUTH)
369 1.1 pooka # define PIO_BUTTON_WEST 22
370 1.1 pooka # define PIO_BUTTON_WEST_BIT (1 << PIO_BUTTON_WEST)
371 1.1 pooka # define PIO_BUTTON_CENTER 23
372 1.1 pooka # define PIO_BUTTON_CENTER_BIT (1 << PIO_BUTTON_CENTER)
373 1.1 pooka
374 1.1 pooka /*
375 1.1 pooka * Universal Synch/Asynch Receiver/Transmitter (USART)
376 1.1 pooka */
377 1.1 pooka #ifndef __ASSEMBLER__
378 1.1 pooka struct _Usart {
379 1.1 pooka volatile uint32_t Tag; /* ro */
380 1.1 pooka volatile uint32_t Control; /* rw */
381 1.1 pooka volatile uint32_t IntrEnable;
382 1.1 pooka volatile uint32_t IntrDisable;
383 1.1 pooka volatile uint32_t IntrMask;
384 1.1 pooka volatile uint32_t ChannelStatus; /* all these with.. */
385 1.1 pooka volatile uint32_t RxData;
386 1.1 pooka volatile uint32_t TxData;
387 1.1 pooka volatile uint32_t Baud;
388 1.1 pooka volatile uint32_t Timeout;
389 1.1 pooka volatile uint32_t reserved[6]; /* ro padding to 64 bytes total */
390 1.1 pooka };
391 1.1 pooka #else
392 1.1 pooka # define USARTT 0
393 1.1 pooka # define USARTC 4
394 1.1 pooka # define USARTIE 8
395 1.1 pooka # define USARTID 12
396 1.1 pooka # define USARTM 16
397 1.1 pooka # define USARTST 20
398 1.1 pooka # define USARTRX 24
399 1.1 pooka # define USARTTX 28
400 1.1 pooka # define USARTBD 32
401 1.1 pooka # define USARTTO 36
402 1.1 pooka #endif /* !__ASSEMBLER__ */
403 1.1 pooka
404 1.1 pooka # define USC_RESET 0x00000001
405 1.1 pooka # define USC_RSTRX 0x00000004
406 1.1 pooka # define USC_RSTTX 0x00000008
407 1.1 pooka # define USC_RXEN 0x00000010
408 1.1 pooka # define USC_RXDIS 0x00000020
409 1.1 pooka # define USC_TXEN 0x00000040
410 1.1 pooka # define USC_TXDIS 0x00000080
411 1.1 pooka # define USC_RSTSTA 0x00000100
412 1.1 pooka # define USC_STTBRK 0x00000200
413 1.1 pooka # define USC_STPBRK 0x00000400
414 1.1 pooka # define USC_STTO 0x00000800
415 1.1 pooka # define USC_CLK_SENDA 0x00010000
416 1.1 pooka # define USC_BPC_9 0x00020000
417 1.1 pooka # define USC_CLKO 0x00040000
418 1.1 pooka # define USC_EVEN 0x00000000
419 1.1 pooka # define USC_ODD 0x00080000
420 1.1 pooka # define USC_SPACE 0x00100000 /* forced 0 */
421 1.1 pooka # define USC_MARK 0x00180000 /* forced 1 */
422 1.1 pooka # define USC_NONE 0x00200000
423 1.1 pooka # define USC_MDROP 0x00300000
424 1.1 pooka # define USC_BPC_5 0x00000000
425 1.1 pooka # define USC_BPC_6 0x00400000
426 1.1 pooka # define USC_BPC_7 0x00800000
427 1.1 pooka # define USC_BPC_8 0x00c00000
428 1.1 pooka # define USC_CLKDIV 0x0f000000
429 1.1 pooka # define USC_CLKDIV_1 0x00000000
430 1.1 pooka # define USC_CLKDIV_2 0x01000000
431 1.1 pooka # define USC_CLKDIV_4 0x02000000
432 1.1 pooka # define USC_CLKDIV_8 0x03000000
433 1.1 pooka # define USC_CLKDIV_16 0x04000000
434 1.1 pooka # define USC_CLKDIV_32 0x05000000
435 1.1 pooka # define USC_CLKDIV_64 0x06000000
436 1.1 pooka # define USC_CLKDIV_128 0x07000000
437 1.1 pooka # define USC_CLKDIV_EXT 0x08000000
438 1.1 pooka # define USC_1STOP 0x00000000
439 1.1 pooka # define USC_1_5STOP 0x10000000
440 1.1 pooka # define USC_2STOP 0x20000000
441 1.1 pooka # define USC_ECHO 0x40000000 /* rx->tx, tx disabled */
442 1.1 pooka # define USC_LOOPBACK 0x80000000 /* tx->rx, rx/tx disabled */
443 1.1 pooka # define USC_ECHO2 0xc0000000 /* rx->tx, rx disabled */
444 1.1 pooka
445 1.1 pooka # define USI_RXRDY 0x00000001
446 1.1 pooka # define USI_TXRDY 0x00000002
447 1.1 pooka # define USI_RXBRK 0x00000004
448 1.1 pooka # define USI_ENDRX 0x00000008
449 1.1 pooka # define USI_ENDTX 0x00000010
450 1.1 pooka # define USI_OVRE 0x00000020
451 1.1 pooka # define USI_FRAME 0x00000040
452 1.1 pooka # define USI_PARE 0x00000080
453 1.1 pooka # define USI_TIMEOUT 0x00000100
454 1.1 pooka # define USI_TXEMPTY 0x00000200
455 1.1 pooka
456 1.1 pooka /*
457 1.1 pooka * Timer/Counter (TC)
458 1.1 pooka */
459 1.1 pooka #ifndef __ASSEMBLER__
460 1.1 pooka struct _Tc {
461 1.1 pooka volatile uint32_t Tag; /* ro */
462 1.1 pooka volatile uint32_t Control; /* rw */
463 1.1 pooka volatile uint64_t FreeRunning;
464 1.1 pooka volatile uint32_t DownCounterHigh; /* rw */
465 1.1 pooka volatile uint32_t DownCounter; /* rw */
466 1.1 pooka volatile uint32_t reserved[2]; /* ro padding to 32 bytes total */
467 1.1 pooka };
468 1.1 pooka #else
469 1.1 pooka # define TCT 0
470 1.1 pooka # define TCC 4
471 1.1 pooka # define TCFH 8
472 1.1 pooka # define TCFL 12
473 1.1 pooka # define TCCH 16
474 1.1 pooka # define TCCL 20
475 1.1 pooka #endif /* !__ASSEMBLER__ */
476 1.1 pooka
477 1.1 pooka # define TCCT_ENABLE 0x00000001
478 1.1 pooka # define TCCT_INT_ENABLE 0x00000002
479 1.1 pooka # define TCCT_CLKO 0x00000008
480 1.1 pooka # define TCCT_RESET 0x00000010
481 1.1 pooka # define TCCT_FINTEN 0x00000020
482 1.1 pooka # define TCCT_CLOCK 0x000000c0
483 1.1 pooka # define TCCT_INTERRUPT 0x00000100
484 1.1 pooka # define TCCT_FINT 0x00000200
485 1.1 pooka # define TCCT_OVERFLOW 0x00000400
486 1.1 pooka # define TCCT_OVERRUN 0x00000800
487 1.1 pooka
488 1.1 pooka /*
489 1.1 pooka * LCD controller
490 1.1 pooka */
491 1.1 pooka #ifndef __ASSEMBLER__
492 1.1 pooka struct _Lcd {
493 1.1 pooka volatile uint32_t TypeAndTag; /* ro */
494 1.1 pooka volatile uint32_t Control; /* rw */
495 1.1 pooka volatile uint32_t Data; /* wo */
496 1.1 pooka volatile uint32_t Refresh; /* wo */
497 1.1 pooka };
498 1.1 pooka #else
499 1.1 pooka # define LCDBT 0
500 1.1 pooka # define LCDST 4
501 1.1 pooka # define LCDPC 8
502 1.1 pooka # define LCDRF 12
503 1.1 pooka #endif /* !__ASSEMBLER__ */
504 1.1 pooka
505 1.1 pooka # define LCDBT_TAG 0x0000ffff /* ro */
506 1.1 pooka # define LCDBT_TYPE 0xffff0000 /* ro */
507 1.1 pooka
508 1.1 pooka # define LCDST_RST 0x00000001 /* rw */
509 1.1 pooka /* other bits are type-specific */
510 1.1 pooka
511 1.1 pooka /*
512 1.1 pooka * Watchdog Timer (WD)
513 1.1 pooka */
514 1.1 pooka #ifndef __ASSEMBLER__
515 1.1 pooka struct _Wd {
516 1.1 pooka volatile uint32_t Tag; /* ro */
517 1.1 pooka volatile uint32_t OvflMode;
518 1.1 pooka volatile uint32_t ClockMode;
519 1.1 pooka volatile uint32_t Control;
520 1.1 pooka volatile uint32_t Status;
521 1.1 pooka volatile uint32_t reserved[3]; /* ro padding to 32 bytes total */
522 1.1 pooka };
523 1.1 pooka #else
524 1.1 pooka # define WDT 0
525 1.1 pooka # define WDO 4
526 1.1 pooka # define WDM 8
527 1.1 pooka # define WDC 12
528 1.1 pooka # define WDS 16
529 1.1 pooka #endif /* !__ASSEMBLER__ */
530 1.1 pooka
531 1.1 pooka /*
532 1.1 pooka * Power Management Controller (PMC)
533 1.1 pooka */
534 1.1 pooka #ifndef __ASSEMBLER__
535 1.1 pooka struct _Pmc {
536 1.1 pooka volatile uint32_t Tag; /* ro */
537 1.1 pooka volatile uint32_t SystemPowerEnable; /* rw */
538 1.1 pooka volatile uint32_t SystemPowerDisable; /* wo */
539 1.1 pooka volatile uint32_t PeripheralPowerEnable; /* rw */
540 1.1 pooka volatile uint32_t PeripheralPowerDisable; /* wo */
541 1.1 pooka volatile uint32_t reserved[3]; /* ro padding to 32 bytes total */
542 1.1 pooka };
543 1.1 pooka #else
544 1.1 pooka # define PMCT 0
545 1.1 pooka # define PMCSE 4
546 1.1 pooka # define PMCSD 8
547 1.1 pooka # define PMCPE 12
548 1.1 pooka # define PMCPD 16
549 1.1 pooka #endif /* !__ASSEMBLER__ */
550 1.1 pooka
551 1.1 pooka # define PMCSC_CPU 0x00000001
552 1.1 pooka
553 1.1 pooka /* more as we get more.. */
554 1.1 pooka # define PMCPC_USART 0x00000001
555 1.1 pooka
556 1.1 pooka
557 1.1 pooka /*
558 1.1 pooka * System ACE Controller (SAC)
559 1.1 pooka */
560 1.1 pooka
561 1.1 pooka #ifndef __ASSEMBLER__
562 1.1 pooka struct _Sac {
563 1.1 pooka volatile uint32_t Tag; /*0x00000000 */
564 1.1 pooka volatile uint32_t Control; /*0x00000004 */
565 1.1 pooka volatile uint32_t reserved0[30];
566 1.1 pooka volatile uint32_t BUSMODEREG; /*0x00000080 */
567 1.1 pooka volatile uint32_t STATUS; /*0x00000084 */
568 1.1 pooka volatile uint32_t ERRORREG; /*0x00000088 */
569 1.1 pooka volatile uint32_t CFGLBAREG; /*0x0000008c */
570 1.1 pooka volatile uint32_t MPULBAREG; /*0x00000090 */
571 1.1 pooka volatile uint16_t VERSIONREG; /*0x00000094 */
572 1.1 pooka volatile uint16_t SECCNTCMDREG; /*0x00000096 */
573 1.1 pooka volatile uint32_t CONTROLREG; /*0x00000098 */
574 1.1 pooka volatile uint16_t reserved1[1];
575 1.1 pooka volatile uint16_t FATSTATREG; /*0x0000009e */
576 1.1 pooka volatile uint32_t reserved2[8];
577 1.1 pooka volatile uint32_t DATABUFREG[16]; /*0x000000c0 */
578 1.1 pooka };
579 1.1 pooka #endif /* !__ASSEMBLER__ */
580 1.1 pooka
581 1.1 pooka /* volatile uint32_t Tag; 0x00000000 */
582 1.1 pooka # define SAC_TAG 0x0000ffff
583 1.1 pooka
584 1.1 pooka /* volatile uint32_t Control; 0x00000004 */
585 1.1 pooka # define SAC_SIZE 0x0000ffff
586 1.1 pooka # define SAC_RST 0x00010000
587 1.1 pooka # define SAC_BUS8 0x00020000
588 1.1 pooka # define SAC_BUS16 0x00040000
589 1.1 pooka # define SAC_BUS32 0x00080000
590 1.1 pooka # define SAC_IRQ 0x00100000
591 1.1 pooka # define SAC_BRDY 0x00200000
592 1.1 pooka # define SAC_INTMASK 0x00c00000
593 1.1 pooka # define SAC_TDELAY 0x0f000000
594 1.1 pooka # define SAC_BUFW8 0x10000000
595 1.1 pooka # define SAC_BUFW16 0x20000000
596 1.1 pooka # define SAC_BUFW32 0x40000000
597 1.1 pooka # define SAC_DEBUG 0x80000000
598 1.1 pooka
599 1.1 pooka /* volatile uint32_t BUSMODEREG; 0x00000080 */
600 1.1 pooka # define SAC_MODE16 0x00000001
601 1.1 pooka
602 1.1 pooka /* volatile uint32_t STATUS; 0x00000084 */
603 1.1 pooka # define SAC_CFGLOCK 0x00000001
604 1.1 pooka # define SAC_MPULOCK 0x00000002
605 1.1 pooka # define SAC_CFGERROR 0x00000004
606 1.1 pooka # define SAC_CFCERROR 0x00000008
607 1.1 pooka # define SAC_CFDETECT 0x00000010
608 1.1 pooka # define SAC_DATABUFRDY 0x00000020
609 1.1 pooka # define SAC_DATABUFMODE 0x00000040
610 1.1 pooka # define SAC_CFGDONE 0x00000080
611 1.1 pooka # define SAC_RDYFORCFCMD 0x00000100
612 1.1 pooka # define SAC_CFGMODEPIN 0x00000200
613 1.1 pooka # define SAC_CFGADDRPINS 0x0000e000
614 1.1 pooka # define SAC_CFBSY 0x00020000
615 1.1 pooka # define SAC_CFRDY 0x00040000
616 1.1 pooka # define SAC_CFDWF 0x00080000
617 1.1 pooka # define SAC_CFDSC 0x00100000
618 1.1 pooka # define SAC_CFDRQ 0x00200000
619 1.1 pooka # define SAC_CFCORR 0x00400000
620 1.1 pooka # define SAC_CFERR 0x00800000
621 1.1 pooka
622 1.1 pooka /* volatile uint32_t ERRORREG; 0x00000088 */
623 1.1 pooka # define SAC_CARDRESETERR 0x00000001
624 1.1 pooka # define SAC_CARDRDYERR 0x00000002
625 1.1 pooka # define SAC_CARDREADERR 0x00000004
626 1.1 pooka # define SAC_CARDWRITEERR 0x00000008
627 1.1 pooka # define SAC_SECTORRDYERR 0x00000010
628 1.1 pooka # define SAC_CFGADDRERR 0x00000020
629 1.1 pooka # define SAC_CFGFAILED 0x00000040
630 1.1 pooka # define SAC_CFGREADERR 0x00000080
631 1.1 pooka # define SAC_CFGINSTRERR 0x00000100
632 1.1 pooka # define SAC_CFGINITERR 0x00000200
633 1.1 pooka # define SAC_CFBBK 0x00000800
634 1.1 pooka # define SAC_CFUNC 0x00001000
635 1.1 pooka # define SAC_CFIDNF 0x00002000
636 1.1 pooka # define SAC_CFABORT 0x00004000
637 1.1 pooka # define SAC_CFAMNF 0x00008000
638 1.1 pooka
639 1.1 pooka /* volatile uint16_t VERSIONREG; 0x00000094 */
640 1.1 pooka # define SAC_VERREV 0x000000ff
641 1.1 pooka # define SAC_VERMINOR 0x00000f00
642 1.1 pooka # define SAC_VERMAJOR 0x0000f000
643 1.1 pooka
644 1.1 pooka /* volatile uint16_t SECCNTCMDREG; 0x00000096 */
645 1.1 pooka # define SAC_SECCCNT 0x000000ff
646 1.1 pooka # define SAC_CMD 0x00000700
647 1.1 pooka # define SAC_CMD_RESETMEMCARD 0x00000100
648 1.1 pooka # define SAC_CMD_IDENTIFYMEMCARD 0x00000200
649 1.1 pooka # define SAC_CMD_READMEMCARDDATA 0x00000300
650 1.1 pooka # define SAC_CMD_WRITEMEMCARDDATA 0x00000400
651 1.1 pooka # define SAC_CMD_ABORT 0x00000600
652 1.1 pooka
653 1.1 pooka /* volatile uint32_t CONTROLREG; 0x00000098 */
654 1.1 pooka # define SAC_FORCELOCKREQ 0x00000001
655 1.1 pooka # define SAC_LOCKREQ 0x00000002
656 1.1 pooka # define SAC_FORCECFGADDR 0x00000004
657 1.1 pooka # define SAC_FORCECFGMODE 0x00000008
658 1.1 pooka # define SAC_CFGMODE 0x00000010
659 1.1 pooka # define SAC_CFGSTART 0x00000020
660 1.1 pooka # define SAC_CFGSEL 0x00000040
661 1.1 pooka # define SAC_CFGRESET 0x00000080
662 1.1 pooka # define SAC_DATABUFRDYIRQ 0x00000100
663 1.1 pooka # define SAC_ERRORIRQ 0x00000200
664 1.1 pooka # define SAC_CFGDONEIRQ 0x00000400
665 1.1 pooka # define SAC_RESETIRQ 0x00000800
666 1.1 pooka # define SAC_CFGPROG 0x00001000
667 1.1 pooka # define SAC_CFGADDRBIT 0x0000e000
668 1.1 pooka # define SAC_CFGADDR_0 0x00000000
669 1.1 pooka # define SAC_CFGADDR_1 0x00002000
670 1.1 pooka # define SAC_CFGADDR_2 0x00004000
671 1.1 pooka # define SAC_CFGADDR_3 0x00006000
672 1.1 pooka # define SAC_CFGADDR_4 0x00008000
673 1.1 pooka # define SAC_CFGADDR_5 0x0000a000
674 1.1 pooka # define SAC_CFGADDR_6 0x0000c000
675 1.1 pooka # define SAC_CFGADDR_7 0x0000e000
676 1.1 pooka # define SAC_CFGRSVD 0x00070000
677 1.1 pooka
678 1.1 pooka /* volatile uint16_t FATSTATREG; 0x0000009e */
679 1.1 pooka # define SAC_MBRVALID 0x00000001
680 1.1 pooka # define SAC_PBRVALID 0x00000002
681 1.1 pooka # define SAC_MBRFAT12 0x00000004
682 1.1 pooka # define SAC_PBRFAT12 0x00000008
683 1.1 pooka # define SAC_MBRFAT16 0x00000010
684 1.1 pooka # define SAC_PBRFAT16 0x00000020
685 1.1 pooka # define SAC_CALCFAT12 0x00000040
686 1.1 pooka # define SAC_CALCFAT16 0x00000080
687 1.1 pooka
688 1.1 pooka /*
689 1.1 pooka * Extension Controller (EC)
690 1.1 pooka */
691 1.1 pooka
692 1.1 pooka #define EC_MAX_BATS 5
693 1.1 pooka #ifndef __ASSEMBLER__
694 1.1 pooka struct _Ec {
695 1.1 pooka volatile uint32_t Tag; /*0x00000000 */
696 1.1 pooka volatile uint32_t Control; /*0x00000004 */
697 1.1 pooka volatile uint32_t SlotStatusAndTag; /*0x00000008 */
698 1.1 pooka volatile uint32_t BatOrSize[EC_MAX_BATS]; /*0x0000000c */
699 1.1 pooka };
700 1.1 pooka #endif /* !__ASSEMBLER__ */
701 1.1 pooka
702 1.1 pooka /* volatile uint32_t Tag; 0x00000000 */
703 1.1 pooka # define ECT_TAG 0x0000ffff
704 1.1 pooka
705 1.1 pooka /* volatile uint32_t Control; 0x00000004 */
706 1.1 pooka # define ECC_SIZE 0x0000ffff
707 1.1 pooka # define ECC_RST 0x00010000
708 1.1 pooka # define ECC_IRQ 0x00020000 /* write-one-to-clear */
709 1.1 pooka # define ECC_IRQ_ENABLE 0x00040000
710 1.1 pooka # define ECC_INT_LOAD 0x00100000
711 1.1 pooka # define ECC_INT_UNLOAD 0x00200000
712 1.1 pooka # define ECC_SLOTNO 0xff000000
713 1.1 pooka # define ECC_SLOTNO_SHIFT 24
714 1.1 pooka # define ECC_WANTS_INTERRUPT 0x00400000 /* extension needs interrupt */
715 1.1 pooka # define ECC_PRIVILEDGED 0x00800000 /* extension needs priv interface */
716 1.1 pooka
717 1.1 pooka /* volatile uint32_t SlotStatusAndTag; 0x00000008 */
718 1.1 pooka # define ECS_TAG 0x0000ffff /* of the selected slot */
719 1.1 pooka # define ECS_STATUS 0x00ff0000
720 1.1 pooka # define ECS_ABSENT 0x00000000 /* not loaded */
721 1.1 pooka # define ECS_CONFIG 0x00010000 /* needs configuration */
722 1.1 pooka # define ECS_RUN 0x00020000 /* running ok */
723 1.1 pooka # define ECS_PM0 0x00030000 /* power management state 0 */
724 1.1 pooka # define ECS_PM1 0x00040000 /* power management state 1 */
725 1.1 pooka # define ECS_PM2 0x00050000 /* power management state 2 */
726 1.1 pooka
727 1.1 pooka /* volatile uint32_t BatOrSize[5]; 0x0000000c */
728 1.1 pooka /* In the CONFIG state reads the size (flipped decode mask) for the corresponding bat */
729 1.1 pooka # define ECB_SIZE_NONE 0x00000000
730 1.1 pooka # define ECB_SIZE_4 0x00000003
731 1.1 pooka # define ECB_SIZE_8 0x00000007 /* and so on, 2^N */
732 1.1 pooka /* In non-CONFIG states reads the value of the corresponding Base Address Translation */
733 1.1 pooka /* In all states, writes back to the corresponding BAT */
734 1.1 pooka # define ECB_BAT_VALID 0x00000001
735 1.1 pooka # define ECB_BAT 0xfffffff8
736 1.1 pooka
737 1.1 pooka /*
738 1.1 pooka * Common interface for packet-based device interfaces (CPBDI)
739 1.1 pooka */
740 1.1 pooka
741 1.1 pooka #ifndef __ASSEMBLER__
742 1.1 pooka #define CPBDI_STRUCT_DECLARATION { \
743 1.1 pooka volatile uint32_t Tag; /* ro */ \
744 1.1 pooka volatile uint32_t Control; /* rw */ \
745 1.1 pooka /* FIFO interface. Write-> input FIFO; Read-> output FIFO */ \
746 1.1 pooka volatile uint32_t SizeAndFlags; \
747 1.1 pooka volatile uint32_t BufferAddressHi32; \
748 1.1 pooka volatile uint32_t BufferAddressLo32; /* write/read of this word acts */ \
749 1.1 pooka volatile uint32_t Pad[3]; /* round to 32bytes */ \
750 1.1 pooka }
751 1.1 pooka
752 1.1 pooka struct _Cpbdi CPBDI_STRUCT_DECLARATION;
753 1.1 pooka #else
754 1.1 pooka # define CPBDIT 0
755 1.1 pooka # define CPBDIC 4
756 1.1 pooka # define CPBDIS 8
757 1.1 pooka # define CPBDIH 12
758 1.1 pooka # define CPBDIL 16
759 1.1 pooka # define CPBDI_SIZE 32
760 1.1 pooka #endif /* !__ASSEMBLER__ */
761 1.1 pooka
762 1.1 pooka /* Common defines for Control register */
763 1.1 pooka # define CPBDI_RESET 0x00000001 /* autoclear */
764 1.1 pooka # define CPBDI_INTEN 0x00000002 /* interrupt enable */
765 1.1 pooka # define CPBDI_DONE 0x00000004 /* interrupt pending aka done */
766 1.1 pooka # define CPBDI_IF_FULL 0x00000010 /* input fifo full */
767 1.1 pooka # define CPBDI_OF_EMPTY 0x00000020 /* output fifo empty */
768 1.1 pooka # define CPBDI_URUN 0x00000040 /* recvr ran out of buffers */
769 1.1 pooka # define CPBDI_ERROR 0x80000000 /* unrecoverable error */
770 1.1 pooka
771 1.1 pooka /* Common defines for SizeAndFlags register */
772 1.1 pooka # define CPBDI_F_MASK 0xf0000000
773 1.1 pooka # define CPBDI_F_DONE 0x80000000
774 1.1 pooka # define CPBDI_F_XMIT 0x00000000
775 1.1 pooka # define CPBDI_F_RECV 0x10000000
776 1.1 pooka # define CPBDI_F_CMD 0x20000000
777 1.1 pooka
778 1.1 pooka /*
779 1.1 pooka * Ethernet interface (ENIC)
780 1.1 pooka */
781 1.1 pooka
782 1.1 pooka #ifndef __ASSEMBLER__
783 1.1 pooka struct _Enic CPBDI_STRUCT_DECLARATION;
784 1.1 pooka #else
785 1.1 pooka # define ENICT CPBDIT
786 1.1 pooka # define ENICC CPBDIC
787 1.1 pooka # define ENICS CPBDIS
788 1.1 pooka # define ENICH CPBDIH
789 1.1 pooka # define ENICL CPBDIL
790 1.1 pooka # define ENIC_SIZE CPBDI_SIZE
791 1.1 pooka #endif /* !__ASSEMBLER__ */
792 1.1 pooka
793 1.1 pooka # define EC_RESET CPBDI_RESET
794 1.1 pooka # define EC_INTEN CPBDI_INTEN
795 1.1 pooka # define EC_DONE CPBDI_DONE
796 1.1 pooka # define EC_RXDIS 0x00000008 /* recv disabled */
797 1.1 pooka # define EC_IF_FULL CPBDI_IF_FULL
798 1.1 pooka # define EC_OF_EMPTY CPBDI_OF_EMPTY
799 1.1 pooka # define EC_URUN CPBDI_URUN
800 1.1 pooka # define EC_ERROR CPBDI_ERROR
801 1.1 pooka # define EC_WMASK 0x0000000b /* user-writeable bits */
802 1.1 pooka
803 1.1 pooka # define ES_F_MASK CPBDI_F_MASK
804 1.1 pooka # define ES_F_DONE CPBDI_F_DONE
805 1.1 pooka # define ES_F_XMIT CPBDI_F_XMIT
806 1.1 pooka # define ES_F_RECV CPBDI_F_RECV
807 1.1 pooka # define ES_F_CMD CPBDI_F_CMD
808 1.1 pooka # define ES_S_MASK 0xFFFF
809 1.1 pooka
810 1.1 pooka /* Command codes in a command buffer (first byte)
811 1.1 pooka */
812 1.1 pooka #define ENIC_CMD_NOP 0x00
813 1.1 pooka #define ENIC_CMD_GET_INFO 0x01
814 1.1 pooka #ifndef __ASSEMBLER__
815 1.1 pooka typedef struct {
816 1.1 pooka uint8_t InputFifoSize;
817 1.1 pooka uint8_t OutputFifoSize;
818 1.1 pooka uint8_t CompletionFifoSize;
819 1.1 pooka uint8_t ErrorCount;
820 1.1 pooka uint16_t FramesDropped;
821 1.1 pooka uint16_t Reserved;
822 1.1 pooka } ENIC_INFO, *PENIC_INFO;
823 1.1 pooka #endif /* !__ASSEMBLER__ */
824 1.1 pooka
825 1.1 pooka #define ENIC_CMD_GET_ADDRESS 0x02
826 1.1 pooka #ifndef __ASSEMBLER__
827 1.1 pooka typedef struct {
828 1.1 pooka uint8_t Mac[6];
829 1.1 pooka } ENIC_MAC, *PENIC_MAC;
830 1.1 pooka #endif /* !__ASSEMBLER__ */
831 1.1 pooka
832 1.1 pooka /*
833 1.1 pooka * Internal Configuration Access Point (ICAP) interface
834 1.1 pooka */
835 1.1 pooka
836 1.1 pooka #ifndef __ASSEMBLER__
837 1.1 pooka struct _Icap CPBDI_STRUCT_DECLARATION;
838 1.1 pooka #else
839 1.1 pooka # define ICAPT CPBDIT
840 1.1 pooka # define ICAPC CPBDIC
841 1.1 pooka # define ICAPS CPBDIS
842 1.1 pooka # define ICAPH CPBDIH
843 1.1 pooka # define ICAPL CPBDIL
844 1.1 pooka # define ICAP_SIZE CPBDI_SIZE
845 1.1 pooka #endif /* !__ASSEMBLER__ */
846 1.1 pooka
847 1.1 pooka # define ICAPC_RESET CPBDI_RESET
848 1.1 pooka # define ICAPC_INTEN CPBDI_INTEN
849 1.1 pooka # define ICAPC_DONE CPBDI_DONE
850 1.1 pooka # define ICAPC_IF_FULL CPBDI_IF_FULL
851 1.1 pooka # define ICAPC_OF_EMPTY CPBDI_OF_EMPTY
852 1.1 pooka # define ICAPC_ERROR CPBDI_ERROR
853 1.1 pooka # define ICAPC_WMASK 0x00000007 /* user-writeable bits */
854 1.1 pooka
855 1.1 pooka # define ICAPS_F_MASK CPBDI_F_MASK
856 1.1 pooka # define ICAPS_F_DONE CPBDI_F_DONE
857 1.1 pooka # define ICAPS_F_XMIT CPBDI_F_XMIT
858 1.1 pooka # define ICAPS_F_RECV CPBDI_F_RECV
859 1.1 pooka # define ICAPS_F_CMD CPBDI_F_CMD /* TBD */
860 1.1 pooka # define ICAPS_S_MASK 0x0FFFFFFF
861 1.1 pooka
862 1.1 pooka /*
863 1.1 pooka * Extensible Video Graphic Array (EVGA) interface
864 1.1 pooka */
865 1.1 pooka
866 1.1 pooka #ifndef __ASSEMBLER__
867 1.1 pooka struct _Evga CPBDI_STRUCT_DECLARATION;
868 1.1 pooka #else
869 1.1 pooka # define EVGAT CPBDIT
870 1.1 pooka # define EVGAC CPBDIC
871 1.1 pooka # define EVGAS CPBDIS
872 1.1 pooka # define EVGAH CPBDIH
873 1.1 pooka # define EVGAL CPBDIL
874 1.1 pooka # define EVGA_SIZE CPBDI_SIZE
875 1.1 pooka #endif /* !__ASSEMBLER__ */
876 1.1 pooka
877 1.1 pooka # define EVGAC_RESET CPBDI_RESET
878 1.1 pooka # define EVGAC_INTEN CPBDI_INTEN
879 1.1 pooka # define EVGAC_DONE CPBDI_DONE
880 1.1 pooka # define EVGAC_IF_FULL CPBDI_IF_FULL
881 1.1 pooka # define EVGAC_OF_EMPTY CPBDI_OF_EMPTY
882 1.1 pooka # define EVGAC_ERROR CPBDI_ERROR
883 1.1 pooka # define EVGAC_WMASK 0x00000007 /* user-writeable bits */
884 1.1 pooka
885 1.1 pooka # define EVGAS_F_MASK CPBDI_F_MASK
886 1.1 pooka # define EVGAS_F_DONE CPBDI_F_DONE
887 1.1 pooka # define EVGAS_F_XMIT CPBDI_F_XMIT
888 1.1 pooka # define EVGAS_F_RECV CPBDI_F_RECV
889 1.1 pooka # define EVGAS_F_CMD CPBDI_F_CMD
890 1.1 pooka # define EVGAS_S_MASK 0x0FFFFFFF
891 1.1 pooka
892 1.1 pooka /* Command codes in a command buffer (first byte) */
893 1.1 pooka #define EVGA_CMD_NOP 0x00
894 1.1 pooka #define EVGA_CMD_IDENTIFY 0x01
895 1.1 pooka #ifndef __ASSEMBLER__
896 1.1 pooka typedef struct {
897 1.1 pooka uint8_t CommandEcho;
898 1.1 pooka uint8_t InterfaceVersion;
899 1.1 pooka uint16_t Size; /* of this structure, all bytes counted */
900 1.1 pooka uint16_t PciVendorId; /* See PCI catalog */
901 1.1 pooka uint16_t PciProductId; /* See PCI catalog */
902 1.1 pooka uint32_t StandardCaps; /* TBD */
903 1.1 pooka uint8_t InputFifoSize;
904 1.1 pooka uint8_t OutputFifoSize;
905 1.1 pooka uint8_t CompletionFifoSize;
906 1.1 pooka uint8_t ErrorCount;
907 1.1 pooka /* More as needed */
908 1.1 pooka } EVGA_IDENTIFY, *PEVGA_IDENTIFY;
909 1.1 pooka #endif /* !__ASSEMBLER__ */
910 1.1 pooka #define EVGA_IDENTIFY_BIG_ENDIAN 0x00
911 1.1 pooka #define EVGA_IDENTIFY_LITTLE_ENDIAN 0x80
912 1.1 pooka #define EVGA_IDENTIFY_VERSION_1 0x01
913 1.1 pooka
914 1.1 pooka
915 1.1 pooka #define EVGA_CMD_2D_SET_BASE 0x02
916 1.1 pooka #define EVGA_CMD_2D_GET_BASE 0x03
917 1.1 pooka #ifndef __ASSEMBLER__
918 1.1 pooka typedef struct {
919 1.1 pooka uint8_t CommandEcho;
920 1.1 pooka uint8_t Pad[3];
921 1.1 pooka uint32_t AddressLow32;
922 1.1 pooka uint32_t AddressHigh32;
923 1.1 pooka } EVGA_2D_BASE, *PEVGA_2D_BASE;
924 1.1 pooka
925 1.1 pooka #endif /* !__ASSEMBLER__ */
926 1.1 pooka
927 1.1 pooka
928 1.1 pooka
929 1.1 pooka #endif /* _MIPS32_EMIPS_EMIPSREG_H_ */
930