diff --git a/src/mainboard/google/storm/mainboard.c b/src/mainboard/google/storm/mainboard.c index 89ed8dae45..1e622f4904 100644 --- a/src/mainboard/google/storm/mainboard.c +++ b/src/mainboard/google/storm/mainboard.c @@ -17,12 +17,45 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ +#include #include #include +#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) { - /* Not sure if this is needed at all */ + setup_mmu(); } static void mainboard_enable(device_t dev)