blob: 57e50ad2bb5139924a7f2cdfa7c319f28a777d32 (
plain) (
tree)
|
|
/**
* @file
*
* @ingroup RTEMSBSPsPowerPCGen5200
*
* @brief Global BSP definitions.
*/
/*===============================================================*\
| Project: RTEMS generic MPC5200 BSP |
+-----------------------------------------------------------------+
| Partially based on the code references which are named below. |
| Adaptions, modifications, enhancements and any recent parts of |
| the code are: |
| Copyright (c) 2005 |
| Embedded Brains GmbH |
| Obere Lagerstr. 30 |
| D-82178 Puchheim |
| Germany |
| rtems@embedded-brains.de |
+-----------------------------------------------------------------+
| The license and distribution terms for this file may be |
| found in the file LICENSE in this distribution or at |
| |
| http://www.rtems.org/license/LICENSE. |
| |
+-----------------------------------------------------------------+
| this file contains board specific definitions |
\*===============================================================*/
#ifndef LIBBSP_POWERPC_GEN5200_BSP_H
#define LIBBSP_POWERPC_GEN5200_BSP_H
/**
* @defgroup RTEMSBSPsPowerPCGen5200 NXP MPC5200
*
* @ingroup RTEMSBSPsPowerPC
*
* @brief NXP MPC5200 Board Support Package.
*
* @{
*/
#include <bspopts.h>
#include <libcpu/powerpc-utility.h>
/*
* Some symbols defined in the linker command file.
*/
LINKER_SYMBOL(bsp_ram_start);
LINKER_SYMBOL(bsp_ram_end);
LINKER_SYMBOL(bsp_ram_size);
LINKER_SYMBOL(bsp_rom_start);
LINKER_SYMBOL(bsp_rom_end);
LINKER_SYMBOL(bsp_rom_size);
LINKER_SYMBOL(bsp_dpram_start);
LINKER_SYMBOL(bsp_dpram_end);
LINKER_SYMBOL(bsp_dpram_size);
LINKER_SYMBOL(bsp_section_text_start);
LINKER_SYMBOL(bsp_section_text_end);
LINKER_SYMBOL(bsp_section_text_size);
LINKER_SYMBOL(bsp_section_data_start);
LINKER_SYMBOL(bsp_section_data_end);
LINKER_SYMBOL(bsp_section_data_size);
LINKER_SYMBOL(bsp_section_bss_start);
LINKER_SYMBOL(bsp_section_bss_end);
LINKER_SYMBOL(bsp_section_bss_size);
LINKER_SYMBOL(bsp_work_area_start);
LINKER_SYMBOL(MBAR);
/* Provide legacy defines */
#ifdef MPC5200_BOARD_PM520_ZE30
#define PM520_ZE30
#endif
#ifdef MPC5200_BOARD_PM520_CR825
#define PM520_CR825
#endif
#ifdef MPC5200_BOARD_ICECUBE
#define icecube
#endif
#ifdef MPC5200_BOARD_BRS5L
#define BRS5L
#endif
/*
* distinguish board characteristics
*/
/*
* for PM520 mdule on a ZE30 carrier
*/
#if defined(MPC5200_BOARD_PM520_ZE30)
#define PM520
#endif
/*
* for PM520 mdule on a CR825 carrier
*/
#if defined(MPC5200_BOARD_PM520_CR825)
#define PM520
#endif
#if !defined(HAS_UBOOT)
/* we need the low level initialization in start.S*/
#define NEED_LOW_LEVEL_INIT
#endif
#if defined(MPC5200_BOARD_BRS5L)
/*
* IMD Custom Board BRS5L
*/
#define HAS_NVRAM_93CXX
#elif defined(MPC5200_BOARD_BRS6L)
#define MPC5200_BRS6L_FPGA_BEGIN 0x800000
#define MPC5200_BRS6L_FPGA_SIZE (64 * 1024)
#define MPC5200_BRS6L_FPGA_END \
(MPC5200_BRS6L_FPGA_BEGIN + MPC5200_BRS6L_FPGA_SIZE)
#define MPC5200_BRS6L_MRAM_BEGIN 0xff000000
#define MPC5200_BRS6L_MRAM_SIZE (4 * 1024 * 1024)
#define MPC5200_BRS6L_MRAM_END \
(MPC5200_BRS6L_MRAM_BEGIN + MPC5200_BRS6L_MRAM_SIZE)
#elif defined (PM520)
/* Nothing special */
#elif defined (MPC5200_BOARD_ICECUBE)
/*
* Codename: IceCube
* Compatible Boards:
* Freescape MPC5200LITE
* Embedded Planet EP5200
*/
#elif defined (MPC5200_BOARD_DP2)
/* Nothing special */
#else
#error "board type not defined"
#endif
#ifndef ASM
#include <rtems.h>
#include <bsp/i2cdrv.h>
#include <bsp/irq.h>
#include <bsp/vectors.h>
#include <bsp/u-boot.h>
#include <bsp/default-initial-extension.h>
#ifdef __cplusplus
extern "C" {
#endif
/*
* Network driver configuration
*/
struct rtems_bsdnet_ifconfig;
extern int rtems_mpc5200_fec_driver_attach_detach (struct rtems_bsdnet_ifconfig *config, int attaching);
#define RTEMS_BSP_NETWORK_DRIVER_NAME "eth1"
#define RTEMS_BSP_NETWORK_DRIVER_ATTACH rtems_mpc5200_fec_driver_attach_detach
/* miscellaneous stuff assumed to exist */
/*
* We need to decide how much memory will be non-cacheable. This
* will mainly be memory that will be used in DMA (network and serial
* buffers).
*/
/*
#define NOCACHE_MEM_SIZE 512*1024
*/
/*
* Device Driver Table Entries
*/
#ifdef HAS_NVRAM_93CXX
#define NVRAM_DRIVER_TABLE_ENTRY \
{ nvram_driver_initialize, nvram_driver_open, nvram_driver_close, \
nvram_driver_read, nvram_driver_write, NULL }
#endif
/*
* indicate, that BSP has IDE driver
*/
#define RTEMS_BSP_HAS_IDE_DRIVER
/* functions */
/* #define SHOW_MORE_INIT_SETTINGS 1 */
/* ata modes */
/* #undef ATA_USE_INT */
#define ATA_USE_INT
/* clock settings */
#if defined(HAS_UBOOT)
#define IPB_CLOCK (bsp_uboot_board_info.bi_ipbfreq)
#define XLB_CLOCK (bsp_uboot_board_info.bi_busfreq)
#define G2_CLOCK (bsp_uboot_board_info.bi_intfreq)
#elif defined(MPC5200_BOARD_BRS5L) || defined(MPC5200_BOARD_BRS6L)
#define IPB_CLOCK 66000000 /* 66 MHz */
#define XLB_CLOCK 132000000 /* 132 MHz */
#define G2_CLOCK 396000000 /* 396 MHz */
#else
#define IPB_CLOCK 33000000 /* 33 MHz */
#define XLB_CLOCK 66000000 /* 66 MHz */
#define G2_CLOCK 231000000 /* 231 MHz */
#endif
#if defined(HAS_UBOOT)
#define GEN5200_CONSOLE_BAUD (bsp_uboot_board_info.bi_baudrate)
#else
#define GEN5200_CONSOLE_BAUD 115200
#endif
/*
* Convert decrement value to tenths of microsecnds (used by
* shared timer driver).
*
* + CPU has a XLB_CLOCK bus,
* + There are 4 bus cycles per click
* + We return value in 1/10 microsecond units.
* Modified following equation to integer equation to remove
* floating point math.
* (int) ((float)(_value) / ((XLB_CLOCK/1000000 * 0.1) / 4.0))
*/
#define BSP_Convert_decrementer( _value ) \
(int) (((_value) * 4000) / (XLB_CLOCK/10000))
/* slicetimer settings */
#define USE_SLICETIMER_0 TRUE
#define USE_SLICETIMER_1 FALSE
void *bsp_idle_thread( uintptr_t ignored );
#define BSP_IDLE_TASK_BODY bsp_idle_thread
/* BSP specific IRQ Benchmarking support */
void BSP_IRQ_Benchmarking_Reset(void);
void BSP_IRQ_Benchmarking_Report(void);
#if defined(HAS_UBOOT)
/* Routine to obtain U-Boot environment variables */
const char *bsp_uboot_getenv(
const char *name
);
#endif
void cpu_init(void);
int mpc5200_eth_mii_read(
int phyAddr,
void *arg,
unsigned regAddr,
uint32_t *retVal
);
#ifdef __cplusplus
}
#endif
#endif /* ASM */
/** @} */
#endif /* GEN5200 */
|