123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- /*
- * Copyright (c) 2017-2020, ARM Limited and Contributors. All rights reserved.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- */
- #include <assert.h>
- #include <platform_def.h>
- #include <common/debug.h>
- #include <lib/xlat_tables/xlat_tables_v2.h>
- #include <plat/common/platform.h>
- #include "uniphier.h"
- struct uniphier_reg_region {
- uintptr_t base;
- size_t size;
- };
- static const struct uniphier_reg_region uniphier_reg_region[] = {
- [UNIPHIER_SOC_LD11] = {
- .base = 0x50000000UL,
- .size = 0x20000000UL,
- },
- [UNIPHIER_SOC_LD20] = {
- .base = 0x50000000UL,
- .size = 0x20000000UL,
- },
- [UNIPHIER_SOC_PXS3] = {
- .base = 0x50000000UL,
- .size = 0x20000000UL,
- },
- };
- void uniphier_mmap_setup(unsigned int soc)
- {
- VERBOSE("Trusted RAM seen by this BL image: %p - %p\n",
- (void *)BL_CODE_BASE, (void *)BL_END);
- mmap_add_region(BL_CODE_BASE, BL_CODE_BASE,
- round_up(BL_END, PAGE_SIZE) - BL_CODE_BASE,
- MT_MEMORY | MT_RW | MT_SECURE);
- /* remap the code section */
- VERBOSE("Code region: %p - %p\n",
- (void *)BL_CODE_BASE, (void *)BL_CODE_END);
- mmap_add_region(BL_CODE_BASE, BL_CODE_BASE,
- round_up(BL_CODE_END, PAGE_SIZE) - BL_CODE_BASE,
- MT_CODE | MT_SECURE);
- /* remap the coherent memory region */
- VERBOSE("Coherent region: %p - %p\n",
- (void *)BL_COHERENT_RAM_BASE, (void *)BL_COHERENT_RAM_END);
- mmap_add_region(BL_COHERENT_RAM_BASE, BL_COHERENT_RAM_BASE,
- BL_COHERENT_RAM_END - BL_COHERENT_RAM_BASE,
- MT_DEVICE | MT_RW | MT_SECURE);
- /* register region */
- assert(soc < ARRAY_SIZE(uniphier_reg_region));
- mmap_add_region(uniphier_reg_region[soc].base,
- uniphier_reg_region[soc].base,
- uniphier_reg_region[soc].size,
- MT_DEVICE | MT_RW | MT_SECURE);
- init_xlat_tables();
- enable_mmu(0);
- #if PLAT_RO_XLAT_TABLES
- {
- int ret;
- ret = xlat_make_tables_readonly();
- if (ret) {
- ERROR("Failed to make translation tables read-only.");
- plat_error_handler(ret);
- }
- }
- #endif
- }
|