1 |
27 |
unneback |
#ifndef MCF5272_SIM_H
|
2 |
|
|
#define MCF5272_SIM_H
|
3 |
|
|
//==========================================================================
|
4 |
|
|
//####ECOSGPLCOPYRIGHTBEGIN####
|
5 |
|
|
// -------------------------------------------
|
6 |
|
|
// This file is part of eCos, the Embedded Configurable Operating System.
|
7 |
|
|
// Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
|
8 |
|
|
//
|
9 |
|
|
// eCos is free software; you can redistribute it and/or modify it under
|
10 |
|
|
// the terms of the GNU General Public License as published by the Free
|
11 |
|
|
// Software Foundation; either version 2 or (at your option) any later version.
|
12 |
|
|
//
|
13 |
|
|
// eCos is distributed in the hope that it will be useful, but WITHOUT ANY
|
14 |
|
|
// WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
15 |
|
|
// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
16 |
|
|
// for more details.
|
17 |
|
|
//
|
18 |
|
|
// You should have received a copy of the GNU General Public License along
|
19 |
|
|
// with eCos; if not, write to the Free Software Foundation, Inc.,
|
20 |
|
|
// 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
|
21 |
|
|
//
|
22 |
|
|
// As a special exception, if other files instantiate templates or use macros
|
23 |
|
|
// or inline functions from this file, or you compile this file and link it
|
24 |
|
|
// with other works to produce a work based on this file, this file does not
|
25 |
|
|
// by itself cause the resulting work to be covered by the GNU General Public
|
26 |
|
|
// License. However the source code for this file must still be made available
|
27 |
|
|
// in accordance with section (3) of the GNU General Public License.
|
28 |
|
|
//
|
29 |
|
|
// This exception does not invalidate any other reasons why a work based on
|
30 |
|
|
// this file might be covered by the GNU General Public License.
|
31 |
|
|
//
|
32 |
|
|
// Alternative licenses for eCos may be arranged by contacting Red Hat, Inc.
|
33 |
|
|
// at http://sources.redhat.com/ecos/ecos-license/
|
34 |
|
|
// -------------------------------------------
|
35 |
|
|
//####ECOSGPLCOPYRIGHTEND####
|
36 |
|
|
//==========================================================================
|
37 |
|
|
|
38 |
|
|
/*
|
39 |
|
|
|
40 |
|
|
Defines for the mcf5272 System Integration Module (SIM)
|
41 |
|
|
|
42 |
|
|
*/
|
43 |
|
|
|
44 |
|
|
#include <pkgconf/hal.h>
|
45 |
|
|
#include <cyg/infra/cyg_type.h>
|
46 |
|
|
|
47 |
|
|
/* General configuration registers. */
|
48 |
|
|
typedef struct mcf5272_sim_cfg_t
|
49 |
|
|
{
|
50 |
|
|
|
51 |
|
|
u32_t mbar; /* Module base address register */
|
52 |
|
|
/* (MBAR), after initialization */
|
53 |
|
|
|
54 |
|
|
u16_t scr; /* System configuration register */
|
55 |
|
|
|
56 |
|
|
u16_t spr; /* System protection register */
|
57 |
|
|
|
58 |
|
|
u32_t pmr; /* Power management register */
|
59 |
|
|
|
60 |
|
|
u16_t res1;
|
61 |
|
|
|
62 |
|
|
u16_t alpr; /* Active low power register */
|
63 |
|
|
|
64 |
|
|
u32_t dir; /* Device identification register */
|
65 |
|
|
|
66 |
|
|
u32_t res2[3];
|
67 |
|
|
|
68 |
|
|
} __attribute__ ((aligned (4), packed)) mcf5272_sim_cfg_t;
|
69 |
|
|
|
70 |
|
|
/* Interrupt controller registers. */
|
71 |
|
|
typedef struct mcf5272_sim_int_t
|
72 |
|
|
{
|
73 |
|
|
|
74 |
|
|
u32_t icr[4]; /* Interrupt control register 1-4 */
|
75 |
|
|
|
76 |
|
|
u32_t isr; /* Interrupt source register */
|
77 |
|
|
|
78 |
|
|
u32_t pitr; /* Programmable interrupt */
|
79 |
|
|
/* transition register */
|
80 |
|
|
|
81 |
|
|
u32_t piwr; /* Programmable interrupt wakeup */
|
82 |
|
|
/* register */
|
83 |
|
|
|
84 |
|
|
u8_t res1[3];
|
85 |
|
|
|
86 |
|
|
u8_t ipvr; /* Programmable interrupt vector */
|
87 |
|
|
/* register */
|
88 |
|
|
|
89 |
|
|
} __attribute__ ((aligned (4), packed)) mcf5272_sim_int_t;
|
90 |
|
|
|
91 |
|
|
/* Chip Select Module */
|
92 |
|
|
typedef struct mcf5272_sim_cs_t
|
93 |
|
|
{
|
94 |
|
|
|
95 |
|
|
u32_t csbr; /* CS base register. */
|
96 |
|
|
|
97 |
|
|
u32_t csor; /* CS option register. */
|
98 |
|
|
|
99 |
|
|
} __attribute__ ((aligned (4), packed)) mcf5272_sim_cs_t;
|
100 |
|
|
|
101 |
|
|
/* General Purpose I/O Module */
|
102 |
|
|
typedef struct mcf5272_sim_gpio_t
|
103 |
|
|
{
|
104 |
|
|
|
105 |
|
|
/* Use the following labels to initialize the bits in the data */
|
106 |
|
|
/* direction registers. Setting the bit to zero indicates that this */
|
107 |
|
|
/* pin is an input, one indicates an input. */
|
108 |
|
|
|
109 |
|
|
#define MCF5272_GPIO_DDR_IN (0)
|
110 |
|
|
#define MCF5272_GPIO_DDR_OUT (1)
|
111 |
|
|
|
112 |
|
|
u32_t pacnt; /* Port A control register. */
|
113 |
|
|
|
114 |
|
|
u16_t paddr; /* Port A data direction */
|
115 |
|
|
/* register. */
|
116 |
|
|
|
117 |
|
|
u16_t padat; /* Port A data register. */
|
118 |
|
|
|
119 |
|
|
u32_t pbcnt; /* Port B control register. */
|
120 |
|
|
|
121 |
|
|
/* Set these bits in the port B control register to enable the */
|
122 |
|
|
/* Ethernet, UART0, and data transfer acknowledge pins. */
|
123 |
|
|
|
124 |
|
|
#define MCF5272_GPIO_PBCNT_ETH_EN (0x55550000)
|
125 |
|
|
#define MCF5272_GPIO_PBCNT_ETH_DE (0x00000000)
|
126 |
|
|
#define MCF5272_GPIO_PBCNT_ETH_MSK (0xFFFF0000)
|
127 |
|
|
|
128 |
|
|
#define MCF5272_GPIO_PBCNT_TA_EN (0x00000400)
|
129 |
|
|
#define MCF5272_GPIO_PBCNT_TA_DE (0x00000000)
|
130 |
|
|
#define MCF5272_GPIO_PBCNT_TA_MSK (0x00000C00)
|
131 |
|
|
|
132 |
|
|
#define MCF5272_GPIO_PBCNT_URT0_EN (0x00000155)
|
133 |
|
|
#define MCF5272_GPIO_PBCNT_URT0_DE (0x00000000)
|
134 |
|
|
#define MCF5272_GPIO_PBCNT_URT0_MSK (0x000003FF)
|
135 |
|
|
|
136 |
|
|
u16_t pbddr; /* Port B data direction */
|
137 |
|
|
/* register. */
|
138 |
|
|
|
139 |
|
|
u16_t pbdat; /* Port B data register. */
|
140 |
|
|
|
141 |
|
|
u32_t res1;
|
142 |
|
|
|
143 |
|
|
u16_t pcddr; /* Port C data direction */
|
144 |
|
|
/* register. */
|
145 |
|
|
|
146 |
|
|
u16_t pcdat; /* Port C data register. */
|
147 |
|
|
|
148 |
|
|
u32_t pdcnt; /* Port D control register. */
|
149 |
|
|
|
150 |
|
|
/* Set these bits in the port D control register to enable the UART1 */
|
151 |
|
|
/* and interrupt 4 pins. */
|
152 |
|
|
|
153 |
|
|
#define MCF5272_GPIO_PDCNT_INT4_EN (0x00000C00)
|
154 |
|
|
#define MCF5272_GPIO_PDCNT_INT4_DE (0x00000000)
|
155 |
|
|
#define MCF5272_GPIO_PDCNT_INT4_MSK (0x00000C00)
|
156 |
|
|
|
157 |
|
|
#define MCF5272_GPIO_PDCNT_URT1_EN (0x000002AA)
|
158 |
|
|
#define MCF5272_GPIO_PDCNT_URT1_DE (0x00000000)
|
159 |
|
|
#define MCF5272_GPIO_PDCNT_URT1_MSK (0x000003FF)
|
160 |
|
|
|
161 |
|
|
u16_t res2;
|
162 |
|
|
u16_t res3;
|
163 |
|
|
|
164 |
|
|
} __attribute__ ((aligned (4), packed)) mcf5272_sim_gpio_t;
|
165 |
|
|
|
166 |
|
|
/* UART Module */
|
167 |
|
|
typedef struct mcf5272_sim_uart_t
|
168 |
|
|
{
|
169 |
|
|
|
170 |
|
|
u8_t umr; /* UART mode register. */
|
171 |
|
|
u8_t res1[3];
|
172 |
|
|
|
173 |
|
|
#define MCF5272_UART_UMR_8BNP (0x13) /* Write this value to umr1 to */
|
174 |
|
|
/* program the device for 8 bits */
|
175 |
|
|
/* and no parity. */
|
176 |
|
|
|
177 |
|
|
#define MCF5272_UART_UMR_1S (0x07) /* Write this value to umr2 to */
|
178 |
|
|
/* program the device for 1 stop */
|
179 |
|
|
/* bit. */
|
180 |
|
|
|
181 |
|
|
u8_t usr_ucsr; /* UART status register (R) and */
|
182 |
|
|
u8_t res2[3]; /* UART clock-select register (W). */
|
183 |
|
|
|
184 |
|
|
#define MCF5272_UART_USR_RRDY (1<<0) /* Bit 0 of the device status */
|
185 |
|
|
/* register is set when the receive */
|
186 |
|
|
/* data register contains data. If */
|
187 |
|
|
/* the data is not removed from the */
|
188 |
|
|
/* holding register, additional */
|
189 |
|
|
/* data will be placed in the FIFO */
|
190 |
|
|
/* until the FIFO is overrun. */
|
191 |
|
|
|
192 |
|
|
#define MCF5272_UART_USR_FFUL (1<<1) /* Bit 1 of the device status */
|
193 |
|
|
/* register is set when the receive */
|
194 |
|
|
/* data FIFO is full. If a */
|
195 |
|
|
/* character is not removed before */
|
196 |
|
|
/* the next character is received, */
|
197 |
|
|
/* overrun will occur. */
|
198 |
|
|
|
199 |
|
|
#define MCF5272_UART_USR_TXRDY (1<<2) /* Bit 2 of the device status */
|
200 |
|
|
/* register is set when the */
|
201 |
|
|
/* transmit data holding register */
|
202 |
|
|
/* is empty. Note that this is */
|
203 |
|
|
/* different than the FIFO being */
|
204 |
|
|
/* empty as the FIFO may still */
|
205 |
|
|
/* contain characters even if the */
|
206 |
|
|
/* holding register is empty. */
|
207 |
|
|
|
208 |
|
|
#define MCF5272_UART_USR_TXEMP (1<<3) /* Bit 3 of the device status */
|
209 |
|
|
/* register is set when the */
|
210 |
|
|
/* transmit data FIFO is empty. */
|
211 |
|
|
|
212 |
|
|
#define MCF5272_UART_USR_OE (1<<4) /* Bit 4 of the device status */
|
213 |
|
|
/* register is set when an overrun */
|
214 |
|
|
/* error has occurred. */
|
215 |
|
|
|
216 |
|
|
#define MCF5272_UART_USR_PE (1<<5) /* Bit 5 of the device status */
|
217 |
|
|
/* register is set when a parity */
|
218 |
|
|
/* error has occurred. */
|
219 |
|
|
|
220 |
|
|
#define MCF5272_UART_USR_FE (1<<6) /* Bit 6 of the device status */
|
221 |
|
|
/* register is set when a framing */
|
222 |
|
|
/* error has occurred. */
|
223 |
|
|
|
224 |
|
|
#define MCF5272_UART_USR_RB (1<<7) /* Bit 7 of the device status */
|
225 |
|
|
/* register is set when a change in */
|
226 |
|
|
/* break status has occurred on the */
|
227 |
|
|
/* port. */
|
228 |
|
|
|
229 |
|
|
#define MCF5272_UART_UCSR_CLKIN (0xDD) /* Writing this value to the ucsr */
|
230 |
|
|
/* selects CLKIN/16 as the UART's */
|
231 |
|
|
/* clock source. */
|
232 |
|
|
|
233 |
|
|
u8_t ucr; /* UART command register (W). */
|
234 |
|
|
u8_t res3[3];
|
235 |
|
|
|
236 |
|
|
#define MCF5272_UART_UCR_RMR (0x01<<4) /* Write this value to ucr to */
|
237 |
|
|
/* reset the mode register to umr1. */
|
238 |
|
|
|
239 |
|
|
#define MCF5272_UART_UCR_RRX (0x02<<4) /* Write this value to ucr to */
|
240 |
|
|
/* reset the receiver. */
|
241 |
|
|
|
242 |
|
|
#define MCF5272_UART_UCR_RTX (0x03<<4) /* Write this value to ucr to */
|
243 |
|
|
/* reset the transmitter. */
|
244 |
|
|
|
245 |
|
|
#define MCF5272_UART_UCR_RES (0x04<<4) /* Write this value to ucr to */
|
246 |
|
|
/* reset the error status. */
|
247 |
|
|
|
248 |
|
|
#define MCF5272_UART_UCR_RBC (0x05<<4) /* Write this value to ucr to */
|
249 |
|
|
/* reset the break change */
|
250 |
|
|
/* interrupt. */
|
251 |
|
|
|
252 |
|
|
#define MCF5272_UART_UCR_TXEN (1<<2) /* Write this value to ucr to */
|
253 |
|
|
/* enable the transmitter. */
|
254 |
|
|
|
255 |
|
|
#define MCF5272_UART_UCR_TXDE (1<<3) /* Write this value to ucr to */
|
256 |
|
|
/* disable the transmitter. */
|
257 |
|
|
|
258 |
|
|
#define MCF5272_UART_UCR_RXEN (1<<0) /* Write this value to ucr to */
|
259 |
|
|
/* enable the receiver. */
|
260 |
|
|
|
261 |
|
|
#define MCF5272_UART_UCR_RXDE (1<<1) /* Write this value to ucr to */
|
262 |
|
|
/* disable the receiver. */
|
263 |
|
|
|
264 |
|
|
/* Write this value to the ucr to */
|
265 |
|
|
/* enablt the transmitter and */
|
266 |
|
|
/* receiver. */
|
267 |
|
|
|
268 |
|
|
#define MCF5272_UART_UCR_TXRXEN \
|
269 |
|
|
(MCF5272_UART_UCR_TXEN | \
|
270 |
|
|
MCF5272_UART_UCR_RXEN)
|
271 |
|
|
|
272 |
|
|
u8_t urb_utb; /* UART receiver buffers (R) and */
|
273 |
|
|
u8_t res4[3]; /* UART transmitter buffers (W). */
|
274 |
|
|
|
275 |
|
|
u8_t uipcr_uacr; /* UART input port change */
|
276 |
|
|
u8_t res5[3]; /* register (R) and UART auxiliary */
|
277 |
|
|
/* control register (W). */
|
278 |
|
|
|
279 |
|
|
u8_t uisr_uimr; /* UART interrupt status register */
|
280 |
|
|
u8_t res6[3]; /* (R) and UART interrupt mask */
|
281 |
|
|
/* register (W). */
|
282 |
|
|
|
283 |
|
|
u8_t udu; /* UART divider upper register */
|
284 |
|
|
u8_t res7[3]; /* (W). */
|
285 |
|
|
|
286 |
|
|
u8_t udl; /* UART divider lower register */
|
287 |
|
|
u8_t res8[3]; /* (W). */
|
288 |
|
|
|
289 |
|
|
u8_t uabu; /* UART autobaud register MSB */
|
290 |
|
|
u8_t res9[3]; /* (R). */
|
291 |
|
|
|
292 |
|
|
u8_t uabl; /* UART autobaud register LSB */
|
293 |
|
|
u8_t res10[3]; /* (R). */
|
294 |
|
|
|
295 |
|
|
u8_t utf; /* UART transmitter FIFO */
|
296 |
|
|
u8_t res11[3]; /* register. */
|
297 |
|
|
|
298 |
|
|
#define MCF5272_UART_UTF_TXB (0x1F) /* Transmitter buffer data level. */
|
299 |
|
|
/* Indicates the number of bytes */
|
300 |
|
|
/* (0-24) currently stored in the */
|
301 |
|
|
/* transmitter FIFO. */
|
302 |
|
|
|
303 |
|
|
u8_t urf; /* UART receiver FIFO register. */
|
304 |
|
|
u8_t res12[3];
|
305 |
|
|
|
306 |
|
|
u8_t ufpd; /* UART Fractional Precision */
|
307 |
|
|
u8_t res13[3]; /* Divider Control register. */
|
308 |
|
|
|
309 |
|
|
u8_t uip; /* UART input port register (CTS) */
|
310 |
|
|
u8_t res14[3]; /* (R). */
|
311 |
|
|
|
312 |
|
|
u8_t uop1; /* UART output port bit set */
|
313 |
|
|
u8_t res15[3]; /* command register (RTS) (W). */
|
314 |
|
|
|
315 |
|
|
u8_t uop0; /* UART output port bit reset */
|
316 |
|
|
u8_t res16[3]; /* command register (RTS) (W). */
|
317 |
|
|
|
318 |
|
|
} __attribute__ ((aligned (4), packed)) mcf5272_sim_uart_t;
|
319 |
|
|
|
320 |
|
|
/* Timer Module */
|
321 |
|
|
typedef struct mcf5272_sim_timer_t
|
322 |
|
|
{
|
323 |
|
|
|
324 |
|
|
u16_t tmr; /* Timer Mode Register */
|
325 |
|
|
u16_t res1;
|
326 |
|
|
|
327 |
|
|
#define MCF5272_TIMER_TMR_PS 0xFF00 /* Prescaler. Programmed to */
|
328 |
|
|
#define MCF5272_TIMER_TMR_PS_BIT 8 /* divide the clock input by values */
|
329 |
|
|
/* from 1 to 256. The value */
|
330 |
|
|
/* 0000_0000 divides the clock by */
|
331 |
|
|
/* 1; the value 1111_1111 divides */
|
332 |
|
|
/* the clock by 256. */
|
333 |
|
|
|
334 |
|
|
#define MCF5272_TIMER_TMR_CE 0x00C0 /* Capture edge and enable */
|
335 |
|
|
#define MCF5272_TIMER_TMR_CE_BIT 6 /* interrupt. 00 Disable capture */
|
336 |
|
|
/* and interrupt on capture event */
|
337 |
|
|
/* 01 Capture on rising edge only */
|
338 |
|
|
/* and generate interrupt on */
|
339 |
|
|
/* capture event 10 Capture on */
|
340 |
|
|
/* falling edge only and generate */
|
341 |
|
|
/* interrupt on capture event 11 */
|
342 |
|
|
/* Capture on any edge and generate */
|
343 |
|
|
/* interrupt on capture event. */
|
344 |
|
|
|
345 |
|
|
#define MCF5272_TIMER_TMR_OM 0x0020 /* Output mode (TMR0 and TMR1 */
|
346 |
|
|
#define MCF5272_TIMER_TMR_OM_BIT 5 /* only. Reserved in TMR2 and */
|
347 |
|
|
/* TMR3). 0 Active-low pulse for */
|
348 |
|
|
/* one system clock cycle (15 nS at */
|
349 |
|
|
/* 66 MHz). 1 Toggle output; TOUTn */
|
350 |
|
|
/* is high at reset but is */
|
351 |
|
|
/* unavailable externally until the */
|
352 |
|
|
/* appropriate port control */
|
353 |
|
|
/* register is configured for this */
|
354 |
|
|
/* function. */
|
355 |
|
|
|
356 |
|
|
#define MCF5272_TIMER_TMR_ORI 0x0010 /* Output reference interrupt */
|
357 |
|
|
#define MCF5272_TIMER_TMR_ORI_BIT 4 /* enable. 0 Disable interrupt for */
|
358 |
|
|
/* reference reached (does not */
|
359 |
|
|
/* affect interrupt on capture */
|
360 |
|
|
/* function). 1 Enable interrupt */
|
361 |
|
|
/* upon reaching the reference */
|
362 |
|
|
/* value. If ORI is 1 when the */
|
363 |
|
|
/* TER[REF] is set, an immediate */
|
364 |
|
|
/* interrupt occurs. */
|
365 |
|
|
|
366 |
|
|
#define MCF5272_TIMER_TMR_FRR 0x0008 /* Free run/restart. 0 Free run. */
|
367 |
|
|
#define MCF5272_TIMER_TMR_FRR_BIT 3 /* Timer count continues to */
|
368 |
|
|
/* increment after the reference */
|
369 |
|
|
/* value is reached. 1 Restart. */
|
370 |
|
|
/* Timer count is reset immediately */
|
371 |
|
|
/* after the reference value is */
|
372 |
|
|
/* reached. */
|
373 |
|
|
|
374 |
|
|
#define MCF5272_TIMER_TMR_CLK 0x0006 /* Input clock source for the */
|
375 |
|
|
#define MCF5272_TIMER_TMR_CLK_BIT 1 /* timer. 00 Stop count. 01 */
|
376 |
|
|
/* Master system clock. 10 Master */
|
377 |
|
|
/* system clock divided by 16. */
|
378 |
|
|
/* TIN0 and TIN1 are external to */
|
379 |
|
|
/* the MCF5272 and are not */
|
380 |
|
|
/* synchronized to the system */
|
381 |
|
|
/* clock, so successive timeout */
|
382 |
|
|
/* lengths may vary slightly. 11 */
|
383 |
|
|
/* Corresponding TIN pin, TIN0 or */
|
384 |
|
|
/* TIN1 (falling edge), unused in */
|
385 |
|
|
/* TMR2 and TMR3. The minimum high */
|
386 |
|
|
/* and low periods for TIN as the */
|
387 |
|
|
/* clock source is 1 system clock, */
|
388 |
|
|
/* which gives a maximum TIN */
|
389 |
|
|
/* frequency of clock/2. */
|
390 |
|
|
|
391 |
|
|
#define MCF5272_TIMER_TMR_RST 0x0001 /* Reset timer. 0 A transition */
|
392 |
|
|
#define MCF5272_TIMER_TMR_RST_BIT 0 /* from 1 to 0 resets the timer. */
|
393 |
|
|
/* Other register values can be */
|
394 |
|
|
/* written. The */
|
395 |
|
|
/* counter/timer/prescaler are not */
|
396 |
|
|
/* clocked unless the timer is */
|
397 |
|
|
/* enabled. 1 Enable timer. */
|
398 |
|
|
|
399 |
|
|
u16_t trr; /* Timer Reference Register */
|
400 |
|
|
u16_t res2;
|
401 |
|
|
|
402 |
|
|
u16_t tcap; /* Timer Capture Register */
|
403 |
|
|
u16_t res3;
|
404 |
|
|
|
405 |
|
|
u16_t tcn; /* Timer Counter */
|
406 |
|
|
u16_t res4;
|
407 |
|
|
|
408 |
|
|
u16_t ter; /* Timer Event Register */
|
409 |
|
|
u16_t res5;
|
410 |
|
|
|
411 |
|
|
#define MCF5272_TIMER_TER_REF (0x0002) /* Output reference event. If */
|
412 |
|
|
#define MCF5272_TIMER_TER_REF_BIT (1) /* the bit is 0, the counter has */
|
413 |
|
|
/* not reached the TRR value; */
|
414 |
|
|
/* otherwise, the counter has */
|
415 |
|
|
/* reached the TRR value. Writing */
|
416 |
|
|
/* a 1 clears this bit. */
|
417 |
|
|
|
418 |
|
|
#define MCF5272_TIMER_TER_CAP (0x0001) /* Captuer event. If this bit is */
|
419 |
|
|
#define MCF5272_TIMER_TER_CAP_BIT (0) /* 0, the counter value has not */
|
420 |
|
|
/* been latched into the TCR; */
|
421 |
|
|
/* otherwise, the counter value is */
|
422 |
|
|
/* latched into the TCR. Writing a */
|
423 |
|
|
/* 1 clears this bit. */
|
424 |
|
|
|
425 |
|
|
u32_t res6[3];
|
426 |
|
|
|
427 |
|
|
} __attribute__ ((aligned (4), packed)) mcf5272_sim_timer_t;
|
428 |
|
|
|
429 |
|
|
/* Watchdog timer */
|
430 |
|
|
typedef struct mcf5272_sim_wdtmr_t
|
431 |
|
|
{
|
432 |
|
|
|
433 |
|
|
u16_t wrrr; /* Watchdog reset reference */
|
434 |
|
|
u16_t res1; /* register. */
|
435 |
|
|
|
436 |
|
|
u16_t wirr; /* Watchdog interrupt reference */
|
437 |
|
|
u16_t res2; /* register. */
|
438 |
|
|
|
439 |
|
|
u16_t wcr; /* Watchdog counter register. */
|
440 |
|
|
u16_t res3;
|
441 |
|
|
|
442 |
|
|
u16_t wer; /* Watchdog event register. */
|
443 |
|
|
u16_t res4;
|
444 |
|
|
|
445 |
|
|
u32_t res5[28];
|
446 |
|
|
|
447 |
|
|
} __attribute__ ((aligned (4), packed)) mcf5272_sim_wdtmr_t;
|
448 |
|
|
|
449 |
|
|
/* Ethernet Module */
|
450 |
|
|
typedef struct mcf5272_sim_enet_t
|
451 |
|
|
{
|
452 |
|
|
|
453 |
|
|
u8_t res1[0x40];
|
454 |
|
|
|
455 |
|
|
u32_t ecr; /* Ethernet control register */
|
456 |
|
|
|
457 |
|
|
u32_t eir; /* Interrupt event register */
|
458 |
|
|
|
459 |
|
|
u32_t eimr; /* Interrupt mask register */
|
460 |
|
|
|
461 |
|
|
u32_t ivsr; /* Interrupt vector status */
|
462 |
|
|
/* register */
|
463 |
|
|
|
464 |
|
|
u32_t rdar; /* Receive descriptor active */
|
465 |
|
|
/* register */
|
466 |
|
|
|
467 |
|
|
u32_t tdar; /* Transmit descriptor active */
|
468 |
|
|
/* register */
|
469 |
|
|
|
470 |
|
|
u8_t res2[0x0880-0x0858];
|
471 |
|
|
|
472 |
|
|
u32_t mmfr; /* MII management frame register */
|
473 |
|
|
|
474 |
|
|
u32_t mscr; /* MII speed control register */
|
475 |
|
|
|
476 |
|
|
u8_t res3[0x08cc-0x0888];
|
477 |
|
|
|
478 |
|
|
u32_t frbr; /* FIFO receive bound register */
|
479 |
|
|
|
480 |
|
|
u32_t frsr; /* FIFO receive start register */
|
481 |
|
|
|
482 |
|
|
u8_t res4[0x08e4-0x08d4];
|
483 |
|
|
|
484 |
|
|
u32_t tfwr; /* Transmit FIFO watermark */
|
485 |
|
|
|
486 |
|
|
u8_t res5[0x08ec-0x08e8];
|
487 |
|
|
|
488 |
|
|
u32_t tfsr; /* Transmit FIFO start register */
|
489 |
|
|
|
490 |
|
|
u8_t res6[0x0944-0x08f0];
|
491 |
|
|
|
492 |
|
|
u32_t rcr; /* Receive control register */
|
493 |
|
|
|
494 |
|
|
u32_t mflr; /* Maximum frame length register */
|
495 |
|
|
|
496 |
|
|
u8_t res7[0x0984-0x094c];
|
497 |
|
|
|
498 |
|
|
u32_t tcr; /* Transmit control register */
|
499 |
|
|
|
500 |
|
|
u8_t res8[0x0c00-0x0988];
|
501 |
|
|
|
502 |
|
|
u32_t malr; /* Lower 32-bits of MAC address */
|
503 |
|
|
|
504 |
|
|
u32_t maur; /* Upper 16-bits of MAC address */
|
505 |
|
|
|
506 |
|
|
u32_t htur; /* Upper 32-bits of hash table */
|
507 |
|
|
|
508 |
|
|
u32_t htlr; /* Lower 32-bits of hash table */
|
509 |
|
|
|
510 |
|
|
u32_t erdsr; /* Pointer to receive descriptor */
|
511 |
|
|
/* ring */
|
512 |
|
|
|
513 |
|
|
u32_t etdsr; /* Pointer to transmit descriptor */
|
514 |
|
|
/* ring */
|
515 |
|
|
|
516 |
|
|
u32_t emrbr; /* Maximum receive buffer size */
|
517 |
|
|
|
518 |
|
|
u8_t res9[0x0c40-0x0c1c];
|
519 |
|
|
|
520 |
|
|
u8_t efifo[448]; /* FIFO RAM space */
|
521 |
|
|
|
522 |
|
|
u8_t res10[0x1000-0x0e00];
|
523 |
|
|
|
524 |
|
|
} __attribute__ ((aligned (4), packed)) mcf5272_sim_enet_t;
|
525 |
|
|
|
526 |
|
|
/* System Integration Module (SIM) This structure defines each */
|
527 |
|
|
/* register's offset from the current value of the mbar register. */
|
528 |
|
|
typedef struct mcf5272_sim_t
|
529 |
|
|
{
|
530 |
|
|
|
531 |
|
|
mcf5272_sim_cfg_t cfg; /* 0x0000: General configuration */
|
532 |
|
|
/* registers. */
|
533 |
|
|
|
534 |
|
|
mcf5272_sim_int_t intc; /* 0x0020: Interrupt controller */
|
535 |
|
|
/* registers. */
|
536 |
|
|
|
537 |
|
|
mcf5272_sim_cs_t cs[8]; /* 0x0040: Chip Select Module */
|
538 |
|
|
|
539 |
|
|
mcf5272_sim_gpio_t gpio; /* 0x0080: General purpose I/O */
|
540 |
|
|
/* control registers */
|
541 |
|
|
|
542 |
|
|
u32_t qspi[8]; /* 0x00a0: Queued serial */
|
543 |
|
|
/* peripheral interface module. */
|
544 |
|
|
|
545 |
|
|
u32_t pwm[8]; /* 0x00c0: Pulse Width Modulation */
|
546 |
|
|
/* (PWM) Module */
|
547 |
|
|
|
548 |
|
|
u32_t dmac[8]; /* 0x00e0: DMA Controller */
|
549 |
|
|
|
550 |
|
|
mcf5272_sim_uart_t uart[2]; /* 0x0100: UART Modules */
|
551 |
|
|
|
552 |
|
|
u32_t sdramc[32]; /* 0x0180: SDRAM Controller */
|
553 |
|
|
|
554 |
|
|
mcf5272_sim_timer_t timer[4]; /* 0x0200: Timer Module */
|
555 |
|
|
|
556 |
|
|
mcf5272_sim_wdtmr_t wdtimer; /* 0x0280: Watchdog Timer Module */
|
557 |
|
|
|
558 |
|
|
u32_t plic[320]; /* 0x0300: Physical Layer */
|
559 |
|
|
/* Interface Controller */
|
560 |
|
|
|
561 |
|
|
mcf5272_sim_enet_t enet; /* 0x0800: Ethernet Module */
|
562 |
|
|
|
563 |
|
|
u32_t usb[512]; /* 0x1000: Universal Serial Bus */
|
564 |
|
|
|
565 |
|
|
} __attribute__ ((aligned (4), packed)) mcf5272_sim_t;
|
566 |
|
|
|
567 |
|
|
#endif /* MCF5272_SIM_H */
|
568 |
|
|
|