a386bf790e
BRANCH=storm BUG=chrome-os-partner:24786 TEST=verified mmu.pagetable.list output for Storm: _______address___________|_physical________________|sec|_d_|_size____|_permissions____________________|_glb|_shr|_pageflags______________________| C:00000000--00000FFF| | | | | | | | | C:00001000--000FFFFF| A:00:00001000--000FFFFF| ns| 00| 00001000| P:readwrite U:readwrite notexec| yes| no | strongly ordered | C:00100000--29FFFFFF| A:00:00100000--29FFFFFF| ns| 00| 00100000| P:readwrite U:readwrite notexec| yes| no | strongly ordered | C:2A000000--2A05FFFF| A:00:2A000000--2A05FFFF| ns| 00| 00001000| P:readwrite U:readwrite exec | yes| no | write-back/no write alloc | C:2A060000--2A0FFFFF| A:00:2A060000--2A0FFFFF| ns| 00| 00001000| P:readwrite U:readwrite notexec| yes| no | strongly ordered | C:2A100000--3FFFFFFF| A:00:2A100000--3FFFFFFF| ns| 00| 00100000| P:readwrite U:readwrite notexec| yes| no | strongly ordered | C:40000000--59FFFFFF| A:00:40000000--59FFFFFF| ns| 00| 00100000| P:readwrite U:readwrite exec | yes| no | write-back/no write alloc | C:5A000000--5A1FFFFF| A:00:5A000000--5A1FFFFF| ns| 00| 00100000| P:readwrite U:readwrite notexec| yes| no | strongly ordered | C:5A200000--7FFFFFFF| A:00:5A200000--7FFFFFFF| ns| 00| 00100000| P:readwrite U:readwrite exec | yes| no | write-back/no write alloc | C:80000000--FFFFFFFF| | | | | | | | | Change-Id: I08a5094b2da9d67244c94984e2da14399e477b01 Signed-off-by: Patrick Georgi <pgeorgi@chromium.org> Original-Commit-Id: f137a589434b09055e6b9d32907e662e6c296502 Original-Change-Id: Ia2deab1cf8f08c4ba5a5b6dbe4c4ebf29c9df480 Original-Signed-off-by: Vikas Das <vdas@codeaurora.org> Original-Reviewed-on: https://chromium-review.googlesource.com/253801 Original-Tested-by: Deepa Dinamani <deepad@codeaurora.org> Original-Reviewed-by: Vadim Bendebury <vbendeb@chromium.org> Original-Reviewed-by: Julius Werner <jwerner@chromium.org> Original-Commit-Queue: Deepa Dinamani <deepad@codeaurora.org> Reviewed-on: http://review.coreboot.org/9920 Tested-by: build bot (Jenkins) Reviewed-by: Stefan Reinauer <stefan.reinauer@coreboot.org>
68 lines
2 KiB
C
68 lines
2 KiB
C
/* Copyright (c) 2015, The Linux Foundation. All rights reserved.
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License version 2 and
|
|
* only version 2 as published by the Free Software Foundation.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*/
|
|
|
|
#include <arch/cache.h>
|
|
#include <symbols.h>
|
|
#include "mmu.h"
|
|
|
|
/* convenient shorthand (in MB) */
|
|
#define RPM_START ((uintptr_t)_rpm / KiB)
|
|
#define RPM_END ((uintptr_t)_erpm / KiB)
|
|
#define RPM_SIZE (RPM_END - RPM_START)
|
|
#define SRAM_START ((uintptr_t)_sram / KiB)
|
|
#define SRAM_END ((uintptr_t)_esram / KiB)
|
|
#define DRAM_START ((uintptr_t)_dram / MiB)
|
|
#define DRAM_SIZE (CONFIG_DRAM_SIZE_MB)
|
|
#define DRAM_END (DRAM_START + DRAM_SIZE)
|
|
|
|
/* DMA memory for drivers */
|
|
#define DMA_START ((uintptr_t)_dma_coherent / MiB)
|
|
#define DMA_SIZE (_dma_coherent_size / MiB)
|
|
|
|
void setup_dram_mappings(enum dram_state dram)
|
|
{
|
|
if (dram == DRAM_INITIALIZED) {
|
|
mmu_config_range(DRAM_START, DRAM_SIZE, DCACHE_WRITEBACK);
|
|
/* Map DMA memory */
|
|
mmu_config_range(DMA_START, DMA_SIZE, DCACHE_OFF);
|
|
} else {
|
|
mmu_disable_range(DRAM_START, DRAM_SIZE);
|
|
/* Map DMA memory */
|
|
mmu_disable_range(DMA_START, DMA_SIZE);
|
|
}
|
|
}
|
|
|
|
void setup_mmu(enum dram_state dram)
|
|
{
|
|
dcache_mmu_disable();
|
|
|
|
/* start with mapping everything as strongly ordered. */
|
|
mmu_config_range(0, 4096, DCACHE_OFF);
|
|
|
|
/* Map Device memory. */
|
|
mmu_config_range_kb(RPM_START, RPM_SIZE, DCACHE_OFF);
|
|
|
|
mmu_config_range_kb(SRAM_START, SRAM_END - SRAM_START,
|
|
DCACHE_WRITEBACK);
|
|
|
|
/* Map DRAM memory */
|
|
setup_dram_mappings(dram);
|
|
|
|
mmu_disable_range(DRAM_END, 4096 - DRAM_END);
|
|
|
|
/* disable Page 0 for trapping NULL pointer references. */
|
|
mmu_disable_range_kb(0, 1);
|
|
|
|
mmu_init();
|
|
|
|
dcache_mmu_enable();
|
|
}
|