summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEric Benard <eric@eukrea.com>2009-10-22 16:46:15 +0200
committerSascha Hauer <s.hauer@pengutronix.de>2009-12-03 10:46:23 +0100
commit4b3e650d1090e304432ca221960952ad77ae072a (patch)
tree80eaeaffc9be47dc1694cb96e27cfc5a7e877992
parent2adeb59c22bf985b65361c48b36e81f70f0c0f36 (diff)
downloadbarebox-4b3e650d1090e304432ca221960952ad77ae072a.tar.gz
barebox-4b3e650d1090e304432ca221960952ad77ae072a.tar.xz
Eukrea CPUIMX27 : Add MMU support
Signed-off-by: Eric Benard <eric@eukrea.com> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
-rw-r--r--arch/arm/mach-imx/Kconfig1
-rw-r--r--board/eukrea_cpuimx27/eukrea_cpuimx27.c26
2 files changed, 27 insertions, 0 deletions
diff --git a/arch/arm/mach-imx/Kconfig b/arch/arm/mach-imx/Kconfig
index 2afd1669cc..8927bb4732 100644
--- a/arch/arm/mach-imx/Kconfig
+++ b/arch/arm/mach-imx/Kconfig
@@ -140,6 +140,7 @@ choice
config MACH_EUKREA_CPUIMX27
bool "EUKREA CPUIMX27"
select HAS_CFI
+ select HAVE_MMU
select MACH_HAS_LOWLEVEL_INIT
help
Say Y here if you are using Eukrea's CPUIMX27 equipped
diff --git a/board/eukrea_cpuimx27/eukrea_cpuimx27.c b/board/eukrea_cpuimx27/eukrea_cpuimx27.c
index 283c46a58e..b7e5b0e52c 100644
--- a/board/eukrea_cpuimx27/eukrea_cpuimx27.c
+++ b/board/eukrea_cpuimx27/eukrea_cpuimx27.c
@@ -41,6 +41,7 @@
#include <mach/imx-nand.h>
#include <mach/imx-pll.h>
#include <ns16550.h>
+#include <asm/mmu.h>
static struct device_d cfi_dev = {
.name = "cfi_flash",
@@ -138,6 +139,29 @@ static struct device_d quad_uart_serial_device = {
};
#endif
+#ifdef CONFIG_MMU
+static void eukrea_cpuimx27_mmu_init(void)
+{
+ mmu_init();
+
+ arm_create_section(0xa0000000, 0xa0000000, 128, PMD_SECT_DEF_CACHED);
+ arm_create_section(0xb0000000, 0xa0000000, 128, PMD_SECT_DEF_UNCACHED);
+
+ setup_dma_coherent(0x10000000);
+
+#if TEXT_BASE & (0x100000 - 1)
+#warning cannot create vector section. Adjust TEXT_BASE to a 1M boundary
+#else
+ arm_create_section(0x0, TEXT_BASE, 1, PMD_SECT_DEF_UNCACHED);
+#endif
+ mmu_enable();
+}
+#else
+static void eukrea_cpuimx27_mmu_init(void)
+{
+}
+#endif
+
static int eukrea_cpuimx27_devices_init(void)
{
char *envdev = "no";
@@ -170,6 +194,8 @@ static int eukrea_cpuimx27_devices_init(void)
#endif
};
+ eukrea_cpuimx27_mmu_init();
+
/* configure 16 bit nor flash on cs0 */
CS0U = 0x0000CC03;
CS0L = 0xa0330D01;