summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libbsp/arm/lpc32xx/misc
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2010-09-28 14:38:26 +0000
committerSebastian Huber <sebastian.huber@embedded-brains.de>2010-09-28 14:38:26 +0000
commitf140fdc244e082f612eaae60a1feae542e0e19d3 (patch)
tree4654d0e5fabfdc2f9e9f5edab8c2607436b40be4 /c/src/lib/libbsp/arm/lpc32xx/misc
parent2010-09-28 Sebastian Huber <sebastian.huber@embedded-brains.de> (diff)
downloadrtems-f140fdc244e082f612eaae60a1feae542e0e19d3.tar.bz2
2010-09-28 Sebastian Huber <sebastian.huber@embedded-brains.de>
* misc/mmu.c: New file. * Makefile.am: Reflect change above. * configure.ac, include/bspopts.h.in, include/irq.h, include/lpc32xx.h, include/mmu.h, misc/emc.c, misc/restart.c, startup/bspstarthooks.c: Changes throughout.
Diffstat (limited to '')
-rw-r--r--c/src/lib/libbsp/arm/lpc32xx/misc/emc.c26
-rw-r--r--c/src/lib/libbsp/arm/lpc32xx/misc/mmu.c39
-rw-r--r--c/src/lib/libbsp/arm/lpc32xx/misc/restart.c6
3 files changed, 46 insertions, 25 deletions
diff --git a/c/src/lib/libbsp/arm/lpc32xx/misc/emc.c b/c/src/lib/libbsp/arm/lpc32xx/misc/emc.c
index 0a6d75c5bc..c03aed0052 100644
--- a/c/src/lib/libbsp/arm/lpc32xx/misc/emc.c
+++ b/c/src/lib/libbsp/arm/lpc32xx/misc/emc.c
@@ -26,22 +26,6 @@
static volatile lpc32xx_emc *const emc = &lpc32xx.emc;
-static void set_translation_table_entries(
- uint32_t begin,
- uint32_t size
-)
-{
- uint32_t end = begin + size;
- uint32_t *ttb = arm_cp15_get_translation_table_base();
- uint32_t i = ARM_MMU_SECT_GET_INDEX(begin);
- uint32_t iend = ARM_MMU_SECT_GET_INDEX(ARM_MMU_SECT_MVA_ALIGN_UP(end));
-
- while (i < iend) {
- ttb [i] = (i << ARM_MMU_SECT_BASE_SHIFT) | LPC32XX_MMU_READ_WRITE;
- ++i;
- }
-}
-
static void dynamic_init(const lpc32xx_emc_dynamic_config *cfg)
{
uint32_t chip_begin = LPC32XX_BASE_EMC_DYCS_0;
@@ -89,11 +73,15 @@ static void dynamic_init(const lpc32xx_emc_dynamic_config *cfg)
/* Set modes */
for (i = 0; i < EMC_DYN_CHIP_COUNT; ++i) {
if (cfg->chip [i].size != 0) {
- set_translation_table_entries(chip_begin, cfg->chip [i].size);
+ lpc32xx_set_translation_table_entries(
+ (void *) chip_begin,
+ (void *) (chip_begin + cfg->chip [i].size),
+ LPC32XX_MMU_READ_WRITE
+ );
emc->dynamiccontrol = dynamiccontrol | EMC_DYN_CTRL_I_MODE;
- *(volatile uint32_t *)(LPC32XX_BASE_EMC_DYCS_0 + cfg->chip [i].mode);
+ *(volatile uint32_t *)(chip_begin + cfg->chip [i].mode);
emc->dynamiccontrol = dynamiccontrol | EMC_DYN_CTRL_I_MODE;
- *(volatile uint32_t *)(LPC32XX_BASE_EMC_DYCS_0 + cfg->chip [i].extmode);
+ *(volatile uint32_t *)(chip_begin + cfg->chip [i].extmode);
}
chip_begin += 0x20000000;
}
diff --git a/c/src/lib/libbsp/arm/lpc32xx/misc/mmu.c b/c/src/lib/libbsp/arm/lpc32xx/misc/mmu.c
new file mode 100644
index 0000000000..9eeee9a11e
--- /dev/null
+++ b/c/src/lib/libbsp/arm/lpc32xx/misc/mmu.c
@@ -0,0 +1,39 @@
+/**
+ * @file
+ *
+ * @ingroup lpc32xx_mmu
+ *
+ * @brief MMU support implementation.
+ */
+
+/*
+ * Copyright (c) 2010 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/mmu.h>
+
+void lpc32xx_set_translation_table_entries(
+ void *begin,
+ void *end,
+ uint32_t section_flags
+)
+{
+ uint32_t *ttb = arm_cp15_get_translation_table_base();
+ uint32_t i = ARM_MMU_SECT_GET_INDEX(begin);
+ uint32_t iend = ARM_MMU_SECT_GET_INDEX(ARM_MMU_SECT_MVA_ALIGN_UP(end));
+
+ while (i < iend) {
+ ttb [i] = (i << ARM_MMU_SECT_BASE_SHIFT) | section_flags;
+ ++i;
+ }
+}
diff --git a/c/src/lib/libbsp/arm/lpc32xx/misc/restart.c b/c/src/lib/libbsp/arm/lpc32xx/misc/restart.c
index b286390237..0d658f712d 100644
--- a/c/src/lib/libbsp/arm/lpc32xx/misc/restart.c
+++ b/c/src/lib/libbsp/arm/lpc32xx/misc/restart.c
@@ -31,12 +31,6 @@ void lpc32xx_restart(void *addr)
rtems_interrupt_level level;
uint32_t ctrl = 0;
- /* FIXME: DMA shutdown */
-
- /* FIXME: USB shutdown */
-
- /* FIXME: Ethernet interface reset */
-
rtems_interrupt_disable(level);
arm_cp15_data_cache_test_and_clean();