bsp/mpc55xx: Add and use MPC55XX_CHIP_FAMILY

This commit is contained in:
Sebastian Huber
2012-10-01 15:02:57 +02:00
parent 29b1bbfdb6
commit 94102775e0
19 changed files with 44 additions and 40 deletions

View File

@@ -98,7 +98,7 @@ static void mpc55xx_clock_initialize(void)
regs->CADR.R = (uint32_t) interval - 1;
/* Set control register */
#if MPC55XX_CHIP_TYPE / 10 == 551
#if MPC55XX_CHIP_FAMILY == 551
ccr.B.MODE = MPC55XX_EMIOS_MODE_MCB_UP_INT_CLK;
#else
ccr.B.MODE = MPC55XX_EMIOS_MODE_MC_UP_INT_CLK;

View File

@@ -143,6 +143,10 @@ RTEMS_BSPOPTS_SET([MPC55XX_CHIP_TYPE],[*],[5554])
RTEMS_BSPOPTS_HELP([MPC55XX_CHIP_TYPE],
[specifies the chip type in use (e.g. 5554 for MPC5554)])
RTEMS_BSPOPTS_SET([MPC55XX_CHIP_FAMILY],[*],[(MPC55XX_CHIP_TYPE / 10)])
RTEMS_BSPOPTS_HELP([MPC55XX_CHIP_FAMILY],
[specifies the chip family in use (e.g. 555 for MPC5554)])
RTEMS_BSPOPTS_SET([MPC55XX_EARLY_STACK_SIZE],[*],[1024])
RTEMS_BSPOPTS_HELP([MPC55XX_EARLY_STACK_SIZE],
[size of the early initialization stack in bytes])

View File

@@ -23,7 +23,7 @@
#include <bsp/irq.h>
#include <bsp/mpc83xx_i2cdrv.h>
#if MPC55XX_CHIP_TYPE / 10 == 551
#if MPC55XX_CHIP_FAMILY == 551
static mpc83xx_i2c_desc_t mpc55xx_i2c_bus = {
.bus_desc = {
.ops = &mpc83xx_i2c_ops,

View File

@@ -1610,7 +1610,7 @@ static void smsc9218i_interrupt_init(
pcr.B.PA = 2;
pcr.B.OBE = 0;
pcr.B.IBE = 1;
#if MPC55XX_CHIP_TYPE / 10 != 551
#if MPC55XX_CHIP_FAMILY != 551
pcr.B.DSC = 0;
#endif
pcr.B.ODE = 0;
@@ -1623,7 +1623,7 @@ static void smsc9218i_interrupt_init(
/* DMA/Interrupt Request Select */
rtems_interrupt_disable(level);
dirsr.R = SIU.DIRSR.R;
#if MPC55XX_CHIP_TYPE / 10 != 551
#if MPC55XX_CHIP_FAMILY != 551
dirsr.B.DIRS0 = 0;
#endif
SIU.DIRSR.R = dirsr.R;
@@ -1698,7 +1698,7 @@ static void smsc9218i_reset_signal_init(void)
pcr.B.PA = 0;
pcr.B.OBE = 1;
pcr.B.IBE = 0;
#if MPC55XX_CHIP_TYPE / 10 != 551
#if MPC55XX_CHIP_FAMILY != 551
pcr.B.DSC = 0;
#endif
pcr.B.ODE = 0;

View File

@@ -145,7 +145,7 @@ void bsp_start(void)
void bsp_pretasking_hook(void)
{
#if MPC55XX_CHIP_TYPE / 10 == 564
#if MPC55XX_CHIP_FAMILY == 564
_Heap_Extend(
RTEMS_Malloc_Heap,
bsp_section_rwextra_end,

View File

@@ -29,7 +29,7 @@
void bsp_reset(void)
{
while (true) {
#if MPC55XX_CHIP_TYPE / 10 == 564
#if MPC55XX_CHIP_FAMILY == 564
/* TODO */
#else
SIU.SRCR.R = 1U << (31 - 0);

View File

@@ -96,7 +96,7 @@ get_data_cache_invalidation_status:
bne get_data_cache_invalidation_status
/* Save data cache settings */
#if MPC55XX_CHIP_TYPE / 10 != 567
#if MPC55XX_CHIP_FAMILY != 567
/* FIXME: CORG??? 0x00180011 */
LWI r6, 0x00100001
#else

View File

@@ -74,7 +74,7 @@ BSP_START_TEXT_SECTION void mpc55xx_start_clock(void)
fmpll->ESYNCR2.R;
fmpll_wait_for_lock();
#if MPC55XX_CHIP_TYPE / 10 == 551
#if MPC55XX_CHIP_FAMILY == 551
/* System clock supplied by PLL */
SIU.SYSCLK.B.SYSCLKSEL = 2;
#endif

View File

@@ -71,7 +71,7 @@ BSP_START_TEXT_SECTION const mpc55xx_clock_config
.LOLIRQ = 0,
.LOCIRQ = 0,
.ERATE = 0,
#if MPC55XX_CHIP_TYPE / 10 == 567
#if MPC55XX_CHIP_FAMILY == 567
.CLKCFG_DIS = 1,
#endif
.EDEPTH = 0,

View File

@@ -25,14 +25,14 @@
BSP_START_TEXT_SECTION const struct MMU_tag
mpc55xx_start_config_mmu_early [] = {
#if MPC55XX_CHIP_TYPE / 10 == 555
#if MPC55XX_CHIP_FAMILY == 555
/* Internal SRAM 96k */
MPC55XX_MMU_TAG_INITIALIZER(3, 0x40000000, MPC55XX_MMU_256K, 1, 1, 1, 0),
#elif MPC55XX_CHIP_TYPE / 10 == 556
#elif MPC55XX_CHIP_FAMILY == 556
/* Internal SRAM 128k */
MPC55XX_MMU_TAG_INITIALIZER(3, 0x40000000, MPC55XX_MMU_64K, 1, 1, 1, 0),
MPC55XX_MMU_TAG_INITIALIZER(5, 0x40010000, MPC55XX_MMU_64K, 0, 1, 1, 0),
#elif MPC55XX_CHIP_TYPE / 10 == 564
#elif MPC55XX_CHIP_FAMILY == 564
/* Internal flash 1M */
MPC55XX_MMU_TAG_INITIALIZER(0, 0x00000000, MPC55XX_MMU_1M, 1, 0, 1, 1),
/* IO */
@@ -41,7 +41,7 @@ BSP_START_TEXT_SECTION const struct MMU_tag
/* Internal SRAM 64k + 64k */
MPC55XX_MMU_TAG_INITIALIZER(3, 0x40000000, MPC55XX_MMU_64K, 1, 1, 1, 0),
MPC55XX_MMU_TAG_INITIALIZER(4, 0x50000000, MPC55XX_MMU_64K, 0, 1, 1, 0)
#elif MPC55XX_CHIP_TYPE / 10 == 567
#elif MPC55XX_CHIP_FAMILY == 567
/* Internal SRAM 256k */
MPC55XX_MMU_TAG_INITIALIZER(3, 0x40000000, MPC55XX_MMU_256K, 1, 1, 1, 0)
#endif

View File

@@ -147,7 +147,7 @@ BSP_START_TEXT_SECTION const struct MMU_tag
MPC55XX_MMU_TAG_INITIALIZER(17, 0x3ffc0000, MPC55XX_MMU_1K, 0, 1, 1, 1)
/* Peripheral Bridge A-Registers on MMU-table pos 4 */
/* Peripheral Bridge B-Registers on MMU-table pos 0 */
#elif MPC55XX_CHIP_TYPE / 10 == 564
#elif MPC55XX_CHIP_FAMILY == 564
/* Internal flash 1M */
MPC55XX_MMU_TAG_INITIALIZER(0, 0x00000000, MPC55XX_MMU_1M, 1, 0, 1, 0),
/* IO */

View File

@@ -38,7 +38,7 @@
* @warning Code will be copied and executed on the stack.
*/
GLOBAL_FUNCTION mpc55xx_start_flash
#if !defined(MPC55XX_NEEDS_LOW_LEVEL_INIT) || MPC55XX_CHIP_TYPE / 10 == 564
#if !defined(MPC55XX_NEEDS_LOW_LEVEL_INIT) || MPC55XX_CHIP_FAMILY == 564
blr
#else
.equ stack_size, 20

View File

@@ -24,11 +24,11 @@
#include <bsp/linker-symbols.h>
#include <libcpu/powerpc-utility.h>
#if MPC55XX_CHIP_TYPE / 10 != 551
#if MPC55XX_CHIP_FAMILY != 551
#define HAS_SPE
#endif
#if MPC55XX_CHIP_TYPE / 10 == 564
#if MPC55XX_CHIP_FAMILY == 564
#define INIT_REGISTERS_FOR_LSM
#endif

View File

@@ -28,11 +28,11 @@
#include <bsp/irq.h>
#if MPC55XX_CHIP_TYPE / 10 == 551
#if MPC55XX_CHIP_FAMILY == 551
#define EDMA_CHANNEL_COUNT 16U
#elif MPC55XX_CHIP_TYPE / 10 == 564
#elif MPC55XX_CHIP_FAMILY == 564
#define EDMA_CHANNEL_COUNT 16U
#elif MPC55XX_CHIP_TYPE / 10 == 567
#elif MPC55XX_CHIP_FAMILY == 567
#define EDMA_CHANNEL_COUNT 96U
#else
#define EDMA_CHANNEL_COUNT 64U

View File

@@ -168,7 +168,7 @@ extern "C" {
/** @} */
#if MPC55XX_CHIP_TYPE / 10 == 567
#if MPC55XX_CHIP_FAMILY == 567
#define MPC55XX_EMIOS_CHANNEL_NUMBER 32U
#else
#define MPC55XX_EMIOS_CHANNEL_NUMBER 24U

View File

@@ -46,7 +46,7 @@ extern "C" {
#define MPC55XX_IRQ_SOFTWARE_GET_REQUEST(i) (i)
#define MPC55XX_IRQ_SOFTWARE_NUMBER (MPC55XX_IRQ_SOFTWARE_MAX + 1U)
#if MPC55XX_CHIP_TYPE / 10 == 551
#if MPC55XX_CHIP_FAMILY == 551
#define MPC55XX_IRQ_MAX 293U
/* eDMA */
@@ -111,7 +111,7 @@ extern "C" {
/* FlexRay */
#define MPC55XX_IRQ_FLEXRAY_BASE(mod) \
((mod) == 0 ? 284U : MPC55XX_IRQ_INVALID)
#elif MPC55XX_CHIP_TYPE / 10 == 564
#elif MPC55XX_CHIP_FAMILY == 564
#define MPC55XX_IRQ_MAX 255U
/* eDMA */
@@ -211,11 +211,11 @@ extern "C" {
/* SWG */
#define MPC55XX_IRQ_SWG 255U
#else
#if MPC55XX_CHIP_TYPE / 10 == 555
#if MPC55XX_CHIP_FAMILY == 555
#define MPC55XX_IRQ_MAX 307U
#elif MPC55XX_CHIP_TYPE / 10 == 556
#elif MPC55XX_CHIP_FAMILY == 556
#define MPC55XX_IRQ_MAX 360U
#elif MPC55XX_CHIP_TYPE / 10 == 567
#elif MPC55XX_CHIP_FAMILY == 567
#define MPC55XX_IRQ_MAX 479U
#else
#error "unsupported chip type"
@@ -336,7 +336,7 @@ extern "C" {
#define MPC55XX_IRQ_ESCI(mod) (MPC55XX_IRQ_ESCI_BASE(mod) + 0U)
/* FlexCAN */
#if MPC55XX_CHIP_TYPE / 10 == 564
#if MPC55XX_CHIP_FAMILY == 564
#define MPC55XX_IRQ_CAN_ERR(mod) (MPC55XX_IRQ_CAN_BASE(mod) + 0U)
#define MPC55XX_IRQ_CAN_BOFF_TWRN_RWRN(mod) (MPC55XX_IRQ_CAN_BASE(mod) + 1U)
#define MPC55XX_IRQ_CAN_BUF_0_3(mod) (MPC55XX_IRQ_CAN_BASE(mod) + 3U)
@@ -375,7 +375,7 @@ extern "C" {
#define MPC55XX_IRQ_FLEXPWM_REF(mod) (MPC55XX_IRQ_FLEXPWM_BASE(mod) + 13U)
/* FlexRay */
#if MPC55XX_CHIP_TYPE / 10 == 564
#if MPC55XX_CHIP_FAMILY == 564
#define MPC55XX_IRQ_FLEXRAY_LRNEIF_DRNEIF(mod) (MPC55XX_IRQ_FLEXRAY_BASE(mod) + 0U)
#define MPC55XX_IRQ_FLEXRAY_LRCEIF_DRCEIF(mod) (MPC55XX_IRQ_FLEXRAY_BASE(mod) + 1U)
#define MPC55XX_IRQ_FLEXRAY_FAFAIF(mod) (MPC55XX_IRQ_FLEXRAY_BASE(mod) + 2U)

View File

@@ -25,7 +25,7 @@
#include <bspopts.h>
#if MPC55XX_CHIP_TYPE / 10 == 551
#if MPC55XX_CHIP_FAMILY == 551
#define FLASH_BIUCR 0xFFFF801C
#else
#define FLASH_BIUCR 0xC3F8801C

View File

@@ -67,7 +67,7 @@ extern "C" {
union EDMA_CR_tag {
uint32_t R;
struct {
#if MPC55XX_CHIP_TYPE / 10 == 567
#if MPC55XX_CHIP_FAMILY == 567
uint32_t:14;
uint32_t CX:1;
uint32_t ECX:1;
@@ -78,7 +78,7 @@ extern "C" {
uint32_t GRP2PRI:2;
uint32_t GRP1PRI:2;
uint32_t GRP0PRI:2;
#if MPC55XX_CHIP_TYPE / 10 == 567
#if MPC55XX_CHIP_FAMILY == 567
uint32_t EMLM:1;
uint32_t CLM:1;
uint32_t HALT:1;
@@ -97,7 +97,7 @@ extern "C" {
uint32_t R;
struct {
uint32_t VLD:1;
#if MPC55XX_CHIP_TYPE / 10 == 567
#if MPC55XX_CHIP_FAMILY == 567
uint32_t:14;
uint32_t ECX:1;
#else
@@ -485,7 +485,7 @@ extern "C" {
} B;
} ERL; /* DMA Error Low */
#if MPC55XX_CHIP_TYPE / 10 == 567
#if MPC55XX_CHIP_FAMILY == 567
union { /* hardware request status high */
uint32_t R;
struct {
@@ -571,7 +571,7 @@ extern "C" {
uint8_t R;
struct {
uint8_t ECP:1;
#if MPC55XX_CHIP_TYPE / 10 == 567
#if MPC55XX_CHIP_FAMILY == 567
uint8_t DPA:1;
#else
uint8_t:1;

View File

@@ -26,14 +26,14 @@
#include <bspopts.h>
#if MPC55XX_CHIP_TYPE / 10 == 551
#if MPC55XX_CHIP_FAMILY == 551
#include <mpc55xx/fsl-mpc551x.h>
#define MPC55XX_HAS_EBI
#define MPC55XX_HAS_ESCI
#define MPC55XX_HAS_EMIOS
#define MPC55XX_HAS_FMPLL_ENHANCED
#define MPC55XX_HAS_SIU
#elif MPC55XX_CHIP_TYPE / 10 == 555
#elif MPC55XX_CHIP_FAMILY == 555
#include <mpc55xx/fsl-mpc555x.h>
#define MPC55XX_HAS_EBI
#define MPC55XX_HAS_ESCI
@@ -41,7 +41,7 @@
#define MPC55XX_HAS_FMPLL
#define MPC55XX_HAS_UNIFIED_CACHE
#define MPC55XX_HAS_SIU
#elif MPC55XX_CHIP_TYPE / 10 == 556
#elif MPC55XX_CHIP_FAMILY == 556
#include <mpc55xx/fsl-mpc556x.h>
#define MPC55XX_HAS_EBI
#define MPC55XX_HAS_ESCI
@@ -49,7 +49,7 @@
#define MPC55XX_HAS_FMPLL
#define MPC55XX_HAS_UNIFIED_CACHE
#define MPC55XX_HAS_SIU
#elif MPC55XX_CHIP_TYPE / 10 == 564
#elif MPC55XX_CHIP_FAMILY == 564
#include <mpc55xx/fsl-mpc564xL.h>
#define MPC55XX_HAS_STM
#define MPC55XX_HAS_SWT
@@ -58,7 +58,7 @@
#define MPC55XX_HAS_LINFLEX
#define MPC55XX_HAS_SECOND_INTERNAL_RAM_AREA
#define MPC55XX_HAS_SIU_LITE
#elif MPC55XX_CHIP_TYPE / 10 == 567
#elif MPC55XX_CHIP_FAMILY == 567
#include <mpc55xx/fsl-mpc567x.h>
#define MPC55XX_HAS_EBI
#define MPC55XX_HAS_ESCI