summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/powerpc/mpc55xxevb
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2012-11-26 17:02:44 +0100
committerSebastian Huber <sebastian.huber@embedded-brains.de>2012-12-03 13:17:13 +0100
commite1e248f6af9bbc891285a070f78d90a3369fc396 (patch)
tree1a0fb4897852fab8f12abdafd4013bfec865ac43 /c/src/lib/libbsp/powerpc/mpc55xxevb
parentbsp/mpc55xx: Use RTEMS_ARRAY_SIZE() (diff)
downloadrtems-e1e248f6af9bbc891285a070f78d90a3369fc396.tar.bz2
bsp/mpc55xx: Add optional EBI configuration
Diffstat (limited to 'c/src/lib/libbsp/powerpc/mpc55xxevb')
-rw-r--r--c/src/lib/libbsp/powerpc/mpc55xxevb/Makefile.am1
-rw-r--r--c/src/lib/libbsp/powerpc/mpc55xxevb/include/mpc55xx-config.h15
-rw-r--r--c/src/lib/libbsp/powerpc/mpc55xxevb/startup/start-config-ebi.c61
-rw-r--r--c/src/lib/libbsp/powerpc/mpc55xxevb/startup/start-early.c49
4 files changed, 90 insertions, 36 deletions
diff --git a/c/src/lib/libbsp/powerpc/mpc55xxevb/Makefile.am b/c/src/lib/libbsp/powerpc/mpc55xxevb/Makefile.am
index 1987e0c853..a03a99bcb6 100644
--- a/c/src/lib/libbsp/powerpc/mpc55xxevb/Makefile.am
+++ b/c/src/lib/libbsp/powerpc/mpc55xxevb/Makefile.am
@@ -78,6 +78,7 @@ libbsp_a_SOURCES += startup/reset.c
libbsp_a_SOURCES += startup/restart.c
libbsp_a_SOURCES += startup/idle-thread.c
libbsp_a_SOURCES += startup/start-config-clock.c
+libbsp_a_SOURCES += startup/start-config-ebi.c
libbsp_a_SOURCES += startup/start-config-ebi-cs.c
libbsp_a_SOURCES += startup/start-config-ebi-cs-cal.c
libbsp_a_SOURCES += startup/start-config-mmu.c
diff --git a/c/src/lib/libbsp/powerpc/mpc55xxevb/include/mpc55xx-config.h b/c/src/lib/libbsp/powerpc/mpc55xxevb/include/mpc55xx-config.h
index e95997aab7..9db918a118 100644
--- a/c/src/lib/libbsp/powerpc/mpc55xxevb/include/mpc55xx-config.h
+++ b/c/src/lib/libbsp/powerpc/mpc55xxevb/include/mpc55xx-config.h
@@ -93,8 +93,19 @@ extern BSP_START_DATA_SECTION const mpc55xx_clock_config
mpc55xx_start_config_clock [];
#ifdef MPC55XX_HAS_EBI
- extern BSP_START_DATA_SECTION const struct
- EBI_CS_tag mpc55xx_start_config_ebi_cs [];
+ typedef struct {
+ union EBI_MCR_tag ebi_mcr;
+ uint32_t siu_eccr_ebdf;
+ } mpc55xx_ebi_config;
+
+ extern BSP_START_DATA_SECTION const mpc55xx_ebi_config
+ mpc55xx_start_config_ebi [];
+
+ extern BSP_START_DATA_SECTION const size_t
+ mpc55xx_start_config_ebi_count [];
+
+ extern BSP_START_DATA_SECTION const struct EBI_CS_tag
+ mpc55xx_start_config_ebi_cs [];
extern BSP_START_DATA_SECTION const size_t
mpc55xx_start_config_ebi_cs_count [];
diff --git a/c/src/lib/libbsp/powerpc/mpc55xxevb/startup/start-config-ebi.c b/c/src/lib/libbsp/powerpc/mpc55xxevb/startup/start-config-ebi.c
new file mode 100644
index 0000000000..d2b218230b
--- /dev/null
+++ b/c/src/lib/libbsp/powerpc/mpc55xxevb/startup/start-config-ebi.c
@@ -0,0 +1,61 @@
+/**
+ * @file
+ *
+ * @ingroup mpc55xx
+ *
+ * @brief EBI configuration.
+ */
+
+/*
+ * Copyright (c) 2012 embedded brains GmbH. All rights reserved.
+ *
+ * embedded brains GmbH
+ * Obere Lagerstr. 30
+ * 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.com/license/LICENSE.
+ */
+
+#include <bsp/mpc55xx-config.h>
+
+#ifdef MPC55XX_HAS_EBI
+
+const mpc55xx_ebi_config mpc55xx_start_config_ebi [] = {
+ #if defined(MPC55XX_BOARD_GWLCFM)
+ {
+ .ebi_mcr = {
+ .B = {
+ .DBM = 1,
+ .AD_MUX = 1, /* use multiplexed bus */
+ .D16_31 = 1 /* use lower AD bus */
+ }
+ },
+ .siu_eccr_ebdf = 4 - 1 /* use CLK/4 as bus clock */
+ }
+ #elif (defined(MPC55XX_BOARD_MPC5674FEVB) \
+ || defined(MPC55XX_BOARD_MPC5674F_ECU508)) \
+ && defined(MPC55XX_NEEDS_LOW_LEVEL_INIT)
+ {
+ .ebi_mcr = {
+ .B = {
+ .ACGE = 0,
+ .MDIS = 0,
+ .D16_31 = 1,
+ .AD_MUX = 0,
+ .DBM = 0
+ }
+ },
+ .siu_eccr_ebdf = 2 - 1
+ }
+ #endif
+};
+
+const size_t mpc55xx_start_config_ebi_count [] = {
+ RTEMS_ARRAY_SIZE(mpc55xx_start_config_ebi)
+};
+
+#endif /* MPC55XX_HAS_EBI */
diff --git a/c/src/lib/libbsp/powerpc/mpc55xxevb/startup/start-early.c b/c/src/lib/libbsp/powerpc/mpc55xxevb/startup/start-early.c
index c1b4a80f26..e756e4c706 100644
--- a/c/src/lib/libbsp/powerpc/mpc55xxevb/startup/start-early.c
+++ b/c/src/lib/libbsp/powerpc/mpc55xxevb/startup/start-early.c
@@ -145,47 +145,28 @@ static BSP_START_TEXT_SECTION void mpc55xx_start_siu(void)
static BSP_START_TEXT_SECTION void mpc55xx_start_ebi_chip_select(void)
{
- #ifdef MPC55XX_NEEDS_LOW_LEVEL_INIT
- #ifdef MPC55XX_HAS_EBI
- size_t i = 0;
+ #ifdef MPC55XX_HAS_EBI
+ size_t i = 0;
- for (i = 0; i < mpc55xx_start_config_ebi_cs_count [0]; ++i) {
- EBI.CS [i] = mpc55xx_start_config_ebi_cs [i];
- }
+ for (i = 0; i < mpc55xx_start_config_ebi_cs_count [0]; ++i) {
+ EBI.CS [i] = mpc55xx_start_config_ebi_cs [i];
+ }
- for (i = 0; i < mpc55xx_start_config_ebi_cal_cs_count [0]; ++i) {
- EBI.CAL_CS [i] = mpc55xx_start_config_ebi_cal_cs [i];
- }
- #endif
+ for (i = 0; i < mpc55xx_start_config_ebi_cal_cs_count [0]; ++i) {
+ EBI.CAL_CS [i] = mpc55xx_start_config_ebi_cal_cs [i];
+ }
#endif
}
static BSP_START_TEXT_SECTION void mpc55xx_start_ebi(void)
{
- #ifdef MPC55XX_NEEDS_LOW_LEVEL_INIT
- #if defined(MPC55XX_BOARD_GWLCFM)
- /*
- * init EBI for Muxed AD bus
- */
- EBI.MCR.B.DBM = 1;
- EBI.MCR.B.AD_MUX = 1; /* use multiplexed bus */
- EBI.MCR.B.D16_31 = 1; /* use lower AD bus */
-
- SIU.ECCR.B.EBDF = 3; /* use CLK/4 as bus clock */
- #elif defined(MPC55XX_BOARD_MPC5674FEVB) \
- || defined(MPC55XX_BOARD_MPC5674F_ECU508)
- union EBI_MCR_tag mcr = {
- .B = {
- .ACGE = 0,
- .MDIS = 0,
- .D16_31 = 1,
- .AD_MUX = 0,
- .DBM = 0
- }
- };
-
- EBI.MCR.R = mcr.R;
- #endif
+ #ifdef MPC55XX_HAS_EBI
+ size_t i = 0;
+
+ for (i = 0; i < mpc55xx_start_config_ebi_count [0]; ++i) {
+ SIU.ECCR.B.EBDF = mpc55xx_start_config_ebi [i].siu_eccr_ebdf;
+ EBI.MCR.R = mpc55xx_start_config_ebi [i].ebi_mcr.R;
+ }
#endif
}