source: rtems/c/src/lib/libbsp/powerpc/gen5200/include/bsp.h @ 7da3405

4.104.114.84.95
Last change on this file since 7da3405 was 7da3405, checked in by Joel Sherrill <joel.sherrill@…>, on 06/20/07 at 21:42:00

2007-06-20 Joel Sherrill <joel.sherrill@…>

Add Embedded Planets EP5200 which is the same as the Freescale
5200Lite (a.k.a. IceCube?) evaluation board.

  • Makefile.am: Add linkcmds.ep5200. Add -DMPC5200_BAPI_LIBC_HEADERS to remove some warnings in bestcomm.
  • preinstall.am: Add linkcmds.ep5200.
  • clock/clock.c: Correct math for prescaler/counter when bus speed is high enough to require multiple passes of loop.
  • console/console.c: Use same math for initial baud rate as when it is changed via ioctl. When HAS_UBOOT is defined, initialize console to the same baud as it was with U-Boot.
  • include/bsp.h: Add EP5200 and console boot baud support.
  • include/mpc5200.h: Spacing.
  • startup/bspstart.c: If HAS_UBOOT and SHOW_MORE_INIT_SETTINGS are both defined, dump the U-Boot BD info structure.
  • vectors/vectors.S: ep5200 cannot use vectors segment. When loading it, U-Boot freezes. Besides, U-Boot can automatically start the BSP so we do not have to run from board reset.
  • startup/linkcmds.ep5200: New file.
  • Property mode set to 100644
File size: 6.6 KB
Line 
1/*===============================================================*\
2| Project: RTEMS generic MPC5200 BSP                              |
3+-----------------------------------------------------------------+
4| Partially based on the code references which are named below.   |
5| Adaptions, modifications, enhancements and any recent parts of  |
6| the code are:                                                   |
7|                    Copyright (c) 2005                           |
8|                    Embedded Brains GmbH                         |
9|                    Obere Lagerstr. 30                           |
10|                    D-82178 Puchheim                             |
11|                    Germany                                      |
12|                    rtems@embedded-brains.de                     |
13+-----------------------------------------------------------------+
14| The license and distribution terms for this file may be         |
15| found in the file LICENSE in this distribution or at            |
16|                                                                 |
17| http://www.rtems.com/license/LICENSE.                           |
18|                                                                 |
19+-----------------------------------------------------------------+
20| this file contains board specific definitions                   |
21\*===============================================================*/
22
23#ifndef __GEN5200_BSP_h
24#define __GEN5200_BSP_h
25
26/*
27 * distinguish board characteristics
28 */
29/*
30 * for PM520 mdule on a ZE30 carrier
31 */
32#if defined(PM520_ZE30)
33#define PM520
34#define GPIOPCR_INITMASK 0x337F3F77
35#define GPIOPCR_INITVAL  0x01552114
36/* we have PSC1/4/5/6 */
37/* #define GEN5200_UART_AVAIL_MASK 0x39 */
38#define GEN5200_UART_AVAIL_MASK 0x39
39#endif
40/*
41 * for PM520 mdule on a CR825 carrier
42 */
43#if defined(PM520_CR825)
44#define PM520
45#define GPIOPCR_INITMASK 0x330F0F77
46#define GPIOPCR_INITVAL  0x01050444
47/* we have PSC1/2/3*/
48#define GEN5200_UART_AVAIL_MASK 0x07
49#endif
50
51#if defined(BRS5L)
52/*
53 * IMD Custom Board BRS5L
54 */
55#define GPIOPCR_INITMASK 0xb30F0F77
56#define GPIOPCR_INITVAL  0x91050444
57/* we have PSC1/2/3 */
58#define GEN5200_UART_AVAIL_MASK 0x07
59/*
60 * address range definitions
61 */
62/* ROM definitions (2 MB) */
63#define ROM_START       0xFFE00000
64#define ROM_SIZE        0x00200000
65#define ROM_END         (ROM_START+ROM_SIZE-1)
66#define BOOT_START      ROM_START
67#define BOOT_END        ROM_END
68
69/* SDRAM definitions (256 MB) */
70#define RAM_START       0x00000000
71#define RAM_SIZE        0x10000000
72#define RAM_END         (RAM_START+RAM_SIZE-1)
73
74/* DPRAM definitions (64 KB) */
75#define DPRAM_START  0xFF000000
76#define DPRAM_END    0xFF0003FF
77
78/* internal memory map definitions (64 KB) */
79#define MBAR         0xF0000000
80
81/* we need the low level initialization in start.S*/
82#define NEED_LOW_LEVEL_INIT
83
84#define HAS_NVRAM_93CXX
85#elif defined (PM520)
86
87/*
88 * MicroSys PM520 internal memory map definitions
89 */
90#define MBAR         0xF0000000
91#define HAS_UBOOT
92
93#elif defined (ep5200)
94/*
95 *  Embedded Planet EP5200 -- should be the same as a Freescale 5200lite
96 *  which is also known as the Ice Cube.  In the RTEMS configuration,
97 *  we load U-Boot on it instead of the default dBug.
98 */
99
100#define HAS_UBOOT
101
102/* These are copied from PM520 but seem to work so OK */
103#define GPIOPCR_INITMASK 0x330F0F77
104#define GPIOPCR_INITVAL  0x01050444
105
106/* we only have PSC1 */
107#define GEN5200_UART_AVAIL_MASK 0x01
108
109#define MBAR         0xF0000000
110
111#else
112#error "board type not defined"
113#endif
114
115#ifndef ASM
116
117#ifdef __cplusplus
118extern "C" {
119#endif
120
121#include "bspopts.h"
122
123#include <rtems.h>
124#include <rtems/console.h>
125#include <rtems/clockdrv.h>
126#include <i2cdrv.h>
127#include <bsp/irq.h>
128#include <bsp/vectors.h>
129
130#if defined(HAS_UBOOT)
131/* This is the define U-Boot uses to configure which entries in the structure are valid */
132#define CONFIG_MPC5xxx
133#include <u-boot.h>
134
135extern bd_t *uboot_bdinfo_ptr;
136extern bd_t uboot_bdinfo_copy;
137#endif
138
139/*
140 * Network driver configuration
141 */
142struct rtems_bsdnet_ifconfig;
143extern int rtems_mpc5200_fec_driver_attach_detach (struct rtems_bsdnet_ifconfig *config, int attaching);
144#define RTEMS_BSP_NETWORK_DRIVER_NAME   "eth1"
145#define RTEMS_BSP_NETWORK_DRIVER_ATTACH rtems_mpc5200_fec_driver_attach_detach
146
147/* miscellaneous stuff assumed to exist */
148
149extern rtems_configuration_table BSP_Configuration;
150/*
151 * We need to decide how much memory will be non-cacheable. This
152 * will mainly be memory that will be used in DMA (network and serial
153 * buffers).
154 */
155/*
156#define NOCACHE_MEM_SIZE 512*1024
157*/
158
159/*
160 *  Stuff for Time Test 27
161 */
162#define MUST_WAIT_FOR_INTERRUPT 0
163
164/*
165 *  Device Driver Table Entries
166 */
167
168/*
169 * NOTE: Use the standard Console driver entry
170 */
171
172/*
173 * NOTE: Use the standard Clock driver entry
174 */
175
176#ifdef HAS_NVRAM_93CXX
177#define NVRAM_DRIVER_TABLE_ENTRY \
178  { nvram_driver_initialize, nvram_driver_open, nvram_driver_close, \
179    nvram_driver_read, nvram_driver_write, NULL }
180#endif
181
182#define RTC_DRIVER_TABLE_ENTRY \
183    { rtc_initialize, NULL, NULL, NULL, NULL, NULL }
184extern rtems_device_driver rtc_initialize(
185    rtems_device_major_number major,
186    rtems_device_minor_number minor,
187    void *arg
188);
189
190/*
191 * indicate, that BSP has IDE driver
192 */
193#define RTEMS_BSP_HAS_IDE_DRIVER
194
195/*
196 * How many libio files we want
197 */
198#define BSP_LIBIO_MAX_FDS       20
199
200/* functions */
201
202void bsp_cleanup(void);
203
204/* console modes (only termios) */
205#ifdef  PRINTK_MINOR
206#undef  PRINTK_MINOR
207#endif
208#define PRINTK_MINOR PSC1_MINOR
209
210#define SINGLE_CHAR_MODE
211#define UARTS_USE_TERMIOS_INT   1
212/* #define SHOW_MORE_INIT_SETTINGS 1 */
213
214/* ata modes */
215/* #undef ATA_USE_INT */
216#define ATA_USE_INT
217
218/* clock settings */
219#if defined(HAS_UBOOT)
220#define IPB_CLOCK (uboot_bdinfo_ptr->bi_ipbfreq)
221#define XLB_CLOCK (uboot_bdinfo_ptr->bi_busfreq)
222#define G2_CLOCK  (uboot_bdinfo_ptr->bi_intfreq)
223#else
224#define IPB_CLOCK 33000000   /* 33 MHz */
225#define XLB_CLOCK 66000000   /* 66 MHz */
226#define G2_CLOCK  231000000  /* 231 MHz */
227#endif
228
229#if defined(HAS_UBOOT)
230#define GEN5200_CONSOLE_BAUD (uboot_bdinfo_ptr->bi_baudrate)
231#else
232#define GEN5200_CONSOLE_BAUD 9600
233#endif
234
235/*
236 *  Convert decrement value to tenths of microsecnds (used by
237 *  shared timer driver).
238 *
239 *    + CPU has a XLB_CLOCK bus,
240 *    + There are 4 bus cycles per click
241 *    + We return value in 1/10 microsecond units.
242 *   Modified following equation to integer equation to remove
243 *   floating point math.
244 *   (int) ((float)(_value) / ((XLB_CLOCK/1000000 * 0.1) / 4.0))
245 */
246
247#define BSP_Convert_decrementer( _value ) \
248  (int) (((_value) * 4000) / (XLB_CLOCK/10000))
249
250/* slicetimer settings */
251#define USE_SLICETIMER_0     TRUE
252#define USE_SLICETIMER_1     FALSE
253
254#ifdef __cplusplus
255}
256#endif
257
258#endif /* ASM */
259
260#endif /* GEN5200 */
Note: See TracBrowser for help on using the repository browser.