source: rtems/c/src/lib/libcpu/mips/mongoosev/include/mongoose-v.h @ 0c0181d

4.115
Last change on this file since 0c0181d was 0c0181d, checked in by Jennifer Averett <jennifer.averett@…>, on 04/04/12 at 13:39:46

PR 1993 - Convert MIPS to PIC IRQ model

  • Property mode set to 100644
File size: 10.9 KB
Line 
1/**
2 *  @file
3 * 
4 *  MIPS Mongoose-V specific information
5 */
6
7/*
8 *  COPYRIGHT (c) 1989-2012.
9 *  On-Line Applications Research Corporation (OAR).
10 *
11 *  The license and distribution terms for this file may be
12 *  found in the file LICENSE in this distribution or at
13 *  http://www.rtems.com/license/LICENSE.
14 *
15 *  $Id$
16 */
17
18#ifndef __MONGOOSEV_h
19#define __MONGOOSEV_h
20
21/*
22 *  Macros to assist in accessing memory mapped Mongoose registers
23 */
24
25
26#define MONGOOSEV_READ( _base ) \
27  ( *((volatile uint32_t*)(_base)) )
28
29#define MONGOOSEV_WRITE( _base, _value ) \
30  ( *((volatile uint32_t*)(_base)) = (_value) )
31
32#define MONGOOSEV_READ_REGISTER( _base, _register ) \
33  ( *((volatile uint32_t*)((_base) + (_register))) )
34
35#define MONGOOSEV_WRITE_REGISTER( _base, _register, _value ) \
36  ( *((volatile uint32_t*)((_base) + (_register))) = (_value) )
37
38
39
40
41
42/*
43 * Macros to read/write the Mongoose FPU control register.
44 */
45
46
47
48
49/*
50 *  BIU and DRAM Registers
51 */
52
53#define MONGOOSEV_BIU_CACHE_CONFIGURATION_REGISTER       0xFFFE0130
54#define MONGOOSEV_DRAM_CONFIGURATION_REGISTER            0xFFFE0120
55#define MONGOOSEV_REFRESH_TIMER_INITIAL_COUNTER_REGISTER 0xFFFE0010
56#define MONGOOSEV_WAIT_STATE_CONFIGURATION_REGISTER_BASE 0xFFFE0100
57
58/*
59 *  Peripheral Function Addresses
60 *
61 *  NOTE: Status and Interrupt Cause use the same bits
62 */
63
64#define MONGOOSEV_PERIPHERAL_COMMAND_REGISTER                   0xFFFE0180
65#define MONGOOSEV_PERIPHERAL_STATUS_REGISTER                    0xFFFE0184
66#define MONGOOSEV_PERIPHERAL_FUNCTION_INTERRUPT_CAUSE_REGISTER  0xFFFE0188
67#define MONGOOSEV_PERIPHERAL_FUNCTION_INTERRUPT_MASK_REGISTER   0xFFFE018C
68
69#define MONGOOSEV_WATCHDOG                      0xBE000000
70
71/* UART Bits in Peripheral Command Register Bits (TX/RX tied together here) */
72#define MONGOOSEV_UART_CMD_RESET_BOTH_PORTS     0x0001
73#define MONGOOSEV_UART_CMD_LOOPBACK_CTSN        0x0002
74#define MONGOOSEV_UART_CMD_LOOPBACK_RXTX        0x0004
75
76#define MONGOOSEV_UART_CMD_RX_ENABLE            0x001
77#define MONGOOSEV_UART_CMD_RX_DISABLE           0x000
78#define MONGOOSEV_UART_CMD_TX_ENABLE            0x002
79#define MONGOOSEV_UART_CMD_TX_DISABLE           0x000
80#define MONGOOSEV_UART_CMD_TX_READY             0x004
81#define MONGOOSEV_UART_CMD_PARITY_ENABLE        0x008
82#define MONGOOSEV_UART_CMD_PARITY_DISABLE       0x000
83#define MONGOOSEV_UART_CMD_PARITY_EVEN          0x010
84#define MONGOOSEV_UART_CMD_PARITY_ODD           0x000
85
86#define MONGOOSEV_UART0_CMD_SHIFT 5
87#define MONGOOSEV_UART1_CMD_SHIFT 11
88
89#define MONGOOSEV_UART_CMD_TX_ENABLE_0 \
90        (MONGOOSEV_UART_CMD_TX_ENABLE << MONGOOSEV_UART0_CMD_SHIFT)
91#define MONGOOSEV_UART_CMD_RX_ENABLE_0 \
92        (MONGOOSEV_UART_CMD_RX_ENABLE << MONGOOSEV_UART0_CMD_SHIFT)
93#define MONGOOSEV_UART_CMD_TX_READY_0 \
94        (MONGOOSEV_UART_CMD_TX_READY << MONGOOSEV_UART0_CMD_SHIFT)
95#define MONGOOSEV_UART_CMD_PARITY_ENABLE_0 \
96        (MONGOOSEV_UART_CMD_PARITY_ENABLE << MONGOOSEV_UART0_CMD_SHIFT)
97#define MONGOOSEV_UART_CMD_PARITY_DISABLE_0 \
98        (MONGOOSEV_UART_CMD_PARITY_DISABLE << MONGOOSEV_UART0_CMD_SHIFT)
99#define MONGOOSEV_UART_CMD_PARITY_EVEN_0 \
100        (MONGOOSEV_UART_CMD_PARITY_EVEN << MONGOOSEV_UART0_CMD_SHIFT)
101#define MONGOOSEV_UART_CMD_PARITY_ODD_0 \
102        (MONGOOSEV_UART_CMD_PARITY_ODD << MONGOOSEV_UART0_CMD_SHIFT)
103
104#define MONGOOSEV_UART_CMD_TX_ENABLE_1 \
105        (MONGOOSEV_UART_CMD_TX_ENABLE << MONGOOSEV_UART1_CMD_SHIFT)
106#define MONGOOSEV_UART_CMD_RX_ENABLE_1 \
107        (MONGOOSEV_UART_CMD_RX_ENABLE << MONGOOSEV_UART1_CMD_SHIFT)
108#define MONGOOSEV_UART_CMD_TX_READY_1 \
109        (MONGOOSEV_UART_CMD_TX_READY << MONGOOSEV_UART1_CMD_SHIFT)
110#define MONGOOSEV_UART_CMD_PARITY_ENABLE_1 \
111        (MONGOOSEV_UART_CMD_PARITY_ENABLE << MONGOOSEV_UART1_CMD_SHIFT)
112#define MONGOOSEV_UART_CMD_PARITY_DISABLE_1 \
113        (MONGOOSEV_UART_CMD_PARITY_DISABLE << MONGOOSEV_UART1_CMD_SHIFT)
114#define MONGOOSEV_UART_CMD_PARITY_EVEN_1 \
115        (MONGOOSEV_UART_CMD_PARITY_EVEN << MONGOOSEV_UART1_CMD_SHIFT)
116#define MONGOOSEV_UART_CMD_PARITY_ODD_1 \
117        (MONGOOSEV_UART_CMD_PARITY_ODD << MONGOOSEV_UART1_CMD_SHIFT)
118
119/* UART Bits in Peripheral Status and Interrupt Cause Register */
120#define MONGOOSEV_UART_RX_FRAME_ERROR              0x0001
121#define MONGOOSEV_UART_RX_OVERRUN_ERROR            0x0002
122#define MONGOOSEV_UART_TX_EMPTY                    0x0004
123#define MONGOOSEV_UART_TX_READY                    0x0008
124#define MONGOOSEV_UART_RX_READY                    0x0010
125
126#define MONGOOSEV_UART_ALL_RX_STATUS_BITS          0x0013
127#define MONGOOSEV_UART_ALL_STATUS_BITS             0x001F
128
129/*
130 *  The Peripheral Interrupt Status, Cause, and Mask registers have the
131 *  same bit assignments although some revisions of the document have
132 *  the Cause and Status registers incorrect.
133 */
134
135#define MONGOOSEV_UART0_IRQ_SHIFT 11
136#define MONGOOSEV_UART1_IRQ_SHIFT 17
137
138#define MONGOOSEV_UART_FRAME_ERROR_0 \
139        (MONGOOSEV_UART_FRAME_ERROR << MONGOOSEV_UART0_IRQ_SHIFT)
140#define MONGOOSEV_UART_RX_OVERRUN_ERROR_0 \
141        (MONGOOSEV_UART_RX_OVERRUN_ERROR << MONGOOSEV_UART0_IRQ_SHIFT)
142#define MONGOOSEV_UART_TX_EMPTY_0 \
143        (MONGOOSEV_UART_TX_EMPTY << MONGOOSEV_UART0_IRQ_SHIFT)
144#define MONGOOSEV_UART_TX_READY_0 \
145        (MONGOOSEV_UART_TX_READY << MONGOOSEV_UART0_IRQ_SHIFT)
146#define MONGOOSEV_UART_RX_READY_0 \
147        (MONGOOSEV_UART_RX_READY << MONGOOSEV_UART0_IRQ_SHIFT)
148
149#define MONGOOSEV_UART_FRAME_ERROR_1 \
150        (MONGOOSEV_UART_FRAME_ERROR << MONGOOSEV_UART1_IRQ_SHIFT)
151#define MONGOOSEV_UART_RX_OVERRUN_ERROR_1 \
152        (MONGOOSEV_UART_RX_OVERRUN_ERROR << MONGOOSEV_UART1_IRQ_SHIFT)
153#define MONGOOSEV_UART_TX_EMPTY_1 \
154        (MONGOOSEV_UART_TX_EMPTY << MONGOOSEV_UART1_IRQ_SHIFT)
155#define MONGOOSEV_UART_TX_READY_1 \
156        (MONGOOSEV_UART_TX_READY << MONGOOSEV_UART1_IRQ_SHIFT)
157#define MONGOOSEV_UART_RX_READY_1 \
158        (MONGOOSEV_UART_RX_READY << MONGOOSEV_UART1_IRQ_SHIFT)
159
160/*
161 *  Bits in the Peripheral Interrupt Mask Register
162 */
163
164/*
165** Interrupt Status/Cause/Mask register bits - from 31 to 0
166*/
167#define MONGOOSEV_EDAC_SERR_BIT          0x80000000
168#define MONGOOSEV_EDAC_MERR_BIT          0x40000000
169/* 29 - 24 reserved */
170#define MONGOOSEV_MAVN_WRITE_ACCESS      0x00800000
171#define MONGOOSEV_MAVN_READ_ACCESS       0x00400000
172#define MONGOOSEV_UART_1_RX_READY        0x00200000
173#define MONGOOSEV_UART_1_TX_READY        0x00100000
174#define MONGOOSEV_UART_1_TX_EMPTY        0x00080000
175#define MONGOOSEV_UART_1_RX_OVERRUN      0x00040000
176#define MONGOOSEV_UART_1_FRAME_ERROR     0x00020000
177#define MONGOOSEV_RESERVED_16            0x00010000
178#define MONGOOSEV_UART_0_RX_READY        0x00008000
179#define MONGOOSEV_UART_0_TX_READY        0x00004000
180#define MONGOOSEV_UART_0_TX_EMPTY        0x00002000
181#define MONGOOSEV_UART_0_RX_OVERRUN      0x00001000
182#define MONGOOSEV_UART_0_FRAME_ERROR     0x00000800
183#define MONGOOSEV_RESERVED_10            0x00000400
184#define MONGOOSEV_EXTERN_INT_9           0x00000200
185#define MONGOOSEV_EXTERN_INT_8           0x00000100
186#define MONGOOSEV_EXTERN_INT_7           0x00000080
187#define MONGOOSEV_EXTERN_INT_6           0x00000040
188#define MONGOOSEV_EXTERN_INT_5           0x00000020
189#define MONGOOSEV_EXTERN_INT_4           0x00000010
190#define MONGOOSEV_EXTERN_INT_3           0x00000008
191#define MONGOOSEV_EXTERN_INT_2           0x00000004
192#define MONGOOSEV_EXTERN_INT_1           0x00000002
193#define MONGOOSEV_EXTERN_INT_0           0x00000001
194
195
196/*
197** Peripheral Command bits (non-uart, those are defined above)
198*/
199#define MONGOOSEV_COMMAND_ENABLE_EDAC   MONGOOSEV_EDAC_SERR_BIT
200#define MONGOOSEV_COMMAND_OVERRIDE_EDAC MONGOOSEV_EDAC_MERR_BIT
201
202
203
204/*
205 *  EDAC Registers
206 */
207
208#define MONGOOSEV_EDAC_ERROR_ADDRESS_REGISTER       0xFFFE0190
209#define MONGOOSEV_EDAC_PARITY_TEST_MODE_REGISTER    0xFFFE0194
210
211/*
212 *  MAVN Registers
213 */
214
215#define MONGOOSEV_MAVN_TEST_REGISTER               0xFFFE01B4
216#define MONGOOSEV_MAVN_ACCESS_PRIVILEGE_REGISTER   0xFFFE01B8
217#define MONGOOSEV_MAVN_ACCESS_VIOLATION_REGISTER   0xFFFE01BC
218#define MONGOOSEV_MAVN_RANGE_0_REGISTER            0xFFFE01C0
219#define MONGOOSEV_MAVN_RANGE_1_REGISTER            0xFFFE01C4
220#define MONGOOSEV_MAVN_RANGE_2_REGISTER            0xFFFE01C8
221#define MONGOOSEV_MAVN_RANGE_3_REGISTER            0xFFFE01CC
222#define MONGOOSEV_MAVN_RANGE_4_REGISTER            0xFFFE01D0
223#define MONGOOSEV_MAVN_RANGE_5_REGISTER            0xFFFE01D4
224#define MONGOOSEV_MAVN_RANGE_6_REGISTER            0xFFFE01D8
225#define MONGOOSEV_MAVN_RANGE_7_REGISTER            0xFFFE01DC
226
227/*
228 *  Timer Base Addresses, Offsets, and Values
229 */
230
231#define MONGOOSEV_TIMER1_BASE    0xFFFE0000
232#define MONGOOSEV_TIMER2_BASE    0xFFFE0008
233
234#define MONGOOSEV_TIMER_INITIAL_COUNTER_REGISTER 0
235#define MONGOOSEV_TIMER_CONTROL_REGISTER         4
236
237/* Timer Control Register Constants */
238#define MONGOOSEV_TIMER_CONTROL_COUNTER_ENABLE    0x04
239#define MONGOOSEV_TIMER_CONTROL_INTERRUPT_ENABLE  0x02
240#define MONGOOSEV_TIMER_CONTROL_TIMEOUT           0x01
241
242/*
243 *  UART Base Addresses and Offsets
244 *
245 *  Many bits in the peripheral command register are UART related
246 *  and the bits are defined there.
247 */
248
249#define MONGOOSEV_UART0_BASE   0xFFFE01E8
250#define MONGOOSEV_UART1_BASE   0xFFFE01F4
251
252#define MONGOOSEV_RX_BUFFER    0
253#define MONGOOSEV_TX_BUFFER    4
254#define MONGOOSEV_BAUD_RATE    8
255
256
257/*
258 *  Status Register Bits
259 */
260
261#define SR_CUMASK       0xf0000000      /* coproc usable bits */
262#define SR_CU3          0x80000000      /* Coprocessor 3 usable */
263#define SR_CU2          0x40000000      /* Coprocessor 2 usable */
264#define SR_CU1          0x20000000      /* Coprocessor 1 usable */
265#define SR_CU0          0x10000000      /* Coprocessor 0 usable */
266#define SR_BEV          0x00400000      /* use boot exception vectors */
267#define SR_TS           0x00200000      /* TLB shutdown */
268#define SR_PE           0x00100000      /* cache parity error */
269#define SR_CM           0x00080000      /* cache miss */
270#define SR_PZ           0x00040000      /* cache parity zero */
271#define SR_SWC          0x00020000      /* swap cache */
272#define SR_ISC          0x00010000      /* Isolate data cache */
273#define SR_IMASK        0x0000ff00      /* Interrupt mask */
274#define SR_IMASK8       0x00000000      /* mask level 8 */
275#define SR_IMASK7       0x00008000      /* mask level 7 */
276#define SR_IMASK6       0x0000c000      /* mask level 6 */
277#define SR_IMASK5       0x0000e000      /* mask level 5 */
278#define SR_IMASK4       0x0000f000      /* mask level 4 */
279#define SR_IMASK3       0x0000f800      /* mask level 3 */
280#define SR_IMASK2       0x0000fc00      /* mask level 2 */
281#define SR_IMASK1       0x0000fe00      /* mask level 1 */
282#define SR_IMASK0       0x0000ff00      /* mask level 0 */
283
284#define SR_IBIT8        0x00008000      /* bit level 8 */
285#define SR_IBIT7        0x00004000      /* bit level 7 */
286#define SR_IBIT6        0x00002000      /* bit level 6 */
287#define SR_IBIT5        0x00001000      /* bit level 5 */
288#define SR_IBIT4        0x00000800      /* bit level 4 */
289#define SR_IBIT3        0x00000400      /* bit level 3 */
290#define SR_IBIT2        0x00000200      /* bit level 2 */
291#define SR_IBIT1        0x00000100      /* bit level 1 */
292
293#define SR_KUO          0x00000020      /* old kernel/user, 0 => k, 1 => u */
294#define SR_IEO          0x00000010      /* old interrupt enable, 1 => enable */
295#define SR_KUP          0x00000008      /* prev kernel/user, 0 => k, 1 => u */
296#define SR_IEP          0x00000004      /* prev interrupt enable, 1 => enable */
297#define SR_KUC          0x00000002      /* cur kernel/user, 0 => k, 1 => u */
298#define SR_IEC          0x00000001      /* cur interrupt enable, 1 => enable */
299#define SR_KUMSK        (SR_KUO|SR_IEO|SR_KUP|SR_IEP|SR_KUC|SR_IEC)
300
301#define SR_IMASKSHIFT   8
302
303
304
305#define MONGOOSEV_IC_SIZE       0x1000          /* instruction cache = 4Kbytes */
306#define MONGOOSEV_DC_SIZE       0x800           /* data cache 2Kbytes */
307
308#endif
Note: See TracBrowser for help on using the repository browser.