summaryrefslogtreecommitdiff
path: root/src/mainboard
diff options
context:
space:
mode:
Diffstat (limited to 'src/mainboard')
-rw-r--r--src/mainboard/google/storm/mainboard.c38
1 files changed, 36 insertions, 2 deletions
diff --git a/src/mainboard/google/storm/mainboard.c b/src/mainboard/google/storm/mainboard.c
index 0b0182fceb..1e622f4904 100644
--- a/src/mainboard/google/storm/mainboard.c
+++ b/src/mainboard/google/storm/mainboard.c
@@ -1,7 +1,7 @@
/*
* This file is part of the coreboot project.
*
- * Copyright 2013 Google Inc.
+ * Copyright 2014 Google Inc.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -17,11 +17,45 @@
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
-#include <device/device.h>
+#include <arch/cache.h>
#include <boot/coreboot_tables.h>
+#include <device/device.h>
+
+#define TO_MB(x) ((x)>>20)
+
+/* convenient shorthand (in MB) */
+#define DRAM_START TO_MB(CONFIG_SYS_SDRAM_BASE)
+#define DRAM_SIZE (CONFIG_DRAM_SIZE_MB)
+#define DRAM_END (DRAM_START + DRAM_SIZE)
+
+/* DMA memory for drivers */
+#define DMA_START TO_MB(CONFIG_DRAM_DMA_START)
+#define DMA_SIZE TO_MB(CONFIG_DRAM_DMA_SIZE)
+
+static void setup_mmu(void)
+{
+ dcache_mmu_disable();
+
+ /* Map Device memory. */
+ mmu_config_range(0, DRAM_START, DCACHE_OFF);
+ /* Disable Page 0 for trapping NULL pointer references. */
+ mmu_disable_range(0, 1);
+ /* Map DRAM memory */
+ mmu_config_range(DRAM_START, DRAM_SIZE, DCACHE_WRITEBACK);
+ /* Map DMA memory */
+ if (DMA_SIZE)
+ mmu_config_range(DMA_START, DMA_SIZE, DCACHE_OFF);
+
+ mmu_disable_range(DRAM_END, 4096 - DRAM_END);
+
+ mmu_init();
+
+ dcache_mmu_enable();
+}
static void mainboard_init(device_t dev)
{
+ setup_mmu();
}
static void mainboard_enable(device_t dev)