summaryrefslogtreecommitdiff
path: root/plat/nvidia
diff options
context:
space:
mode:
authorVarun Wadekar <vwadekar@nvidia.com>2018-01-23 14:38:51 -0800
committerVarun Wadekar <vwadekar@nvidia.com>2019-01-31 08:47:41 -0800
commit26cf08494b3db526c4b887d27c797da49efb7505 (patch)
tree2ce81998a07337d3f2964fb13d64587c7d8cdf99 /plat/nvidia
parent51a5e593d654f46c7ab367eaa135923e25c0ad62 (diff)
Tegra: organize memory/mmio apertures to decrease memmap latency
This patch organizes the memory and mmio maps linearly, to make the mmap_add_region process faster. The microsecond timer has been moved to individual platforms instead of making it a common step, as it further speeds up the memory map creation process. Change-Id: I6fdaee392f7ac5d99daa182380ca9116a001f5d6 Signed-off-by: Varun Wadekar <vwadekar@nvidia.com>
Diffstat (limited to 'plat/nvidia')
-rw-r--r--plat/nvidia/tegra/common/tegra_bl31_setup.c34
-rw-r--r--plat/nvidia/tegra/soc/t186/plat_setup.c2
2 files changed, 16 insertions, 20 deletions
diff --git a/plat/nvidia/tegra/common/tegra_bl31_setup.c b/plat/nvidia/tegra/common/tegra_bl31_setup.c
index 908e4f2d..0d0bc740 100644
--- a/plat/nvidia/tegra/common/tegra_bl31_setup.c
+++ b/plat/nvidia/tegra/common/tegra_bl31_setup.c
@@ -404,6 +404,14 @@ void bl31_plat_arch_setup(void)
*/
boot_profiler_add_record("[TF] arch setup entry");
+ /* add MMIO space */
+ plat_mmio_map = plat_get_mmio_map();
+ if (plat_mmio_map != NULL) {
+ mmap_add(plat_mmio_map);
+ } else {
+ WARN("MMIO map not available\n");
+ }
+
/* add memory regions */
mmap_add_region(rw_start, rw_start,
rw_size,
@@ -415,14 +423,6 @@ void bl31_plat_arch_setup(void)
code_size,
MT_CODE | MT_SECURE);
- /* map TZDRAM used by BL31 as coherent memory */
- if (TEGRA_TZRAM_BASE == tegra_bl31_phys_base) {
- mmap_add_region(params_from_bl2->tzdram_base,
- params_from_bl2->tzdram_base,
- BL31_SIZE,
- MT_DEVICE | MT_RW | MT_SECURE);
- }
-
#if USE_COHERENT_MEM
coh_start = total_base + (BL_COHERENT_RAM_BASE - BL31_RO_BASE);
coh_size = BL_COHERENT_RAM_END - BL_COHERENT_RAM_BASE;
@@ -432,18 +432,12 @@ void bl31_plat_arch_setup(void)
(uint8_t)MT_DEVICE | (uint8_t)MT_RW | (uint8_t)MT_SECURE);
#endif
- /* map on-chip free running uS timer */
- mmap_add_region(page_align(TEGRA_TMRUS_BASE, 0),
- page_align(TEGRA_TMRUS_BASE, 0),
- TEGRA_TMRUS_SIZE,
- (uint8_t)MT_DEVICE | (uint8_t)MT_RO | (uint8_t)MT_SECURE);
-
- /* add MMIO space */
- plat_mmio_map = plat_get_mmio_map();
- if (plat_mmio_map != NULL) {
- mmap_add(plat_mmio_map);
- } else {
- WARN("MMIO map not available\n");
+ /* map TZDRAM used by BL31 as coherent memory */
+ if (TEGRA_TZRAM_BASE == tegra_bl31_phys_base) {
+ mmap_add_region(params_from_bl2->tzdram_base,
+ params_from_bl2->tzdram_base,
+ BL31_SIZE,
+ MT_DEVICE | MT_RW | MT_SECURE);
}
/* set up translation tables */
diff --git a/plat/nvidia/tegra/soc/t186/plat_setup.c b/plat/nvidia/tegra/soc/t186/plat_setup.c
index fd109e56..c56f71ce 100644
--- a/plat/nvidia/tegra/soc/t186/plat_setup.c
+++ b/plat/nvidia/tegra/soc/t186/plat_setup.c
@@ -91,6 +91,8 @@ static const mmap_region_t tegra_mmap[] = {
MT_DEVICE | MT_RW | MT_SECURE),
MAP_REGION_FLAT(TEGRA_PMC_BASE, 0x40000U, /* 256KB */
MT_DEVICE | MT_RW | MT_SECURE),
+ MAP_REGION_FLAT(TEGRA_TMRUS_BASE, 0x1000U, /* 4KB */
+ MT_DEVICE | MT_RO | MT_SECURE),
MAP_REGION_FLAT(TEGRA_SCRATCH_BASE, 0x10000U, /* 64KB */
MT_DEVICE | MT_RW | MT_SECURE),
MAP_REGION_FLAT(TEGRA_MMCRAB_BASE, 0x60000U, /* 384KB */