1d8e919c7SMasahiro Yamada /* 2c64873abSMasahiro Yamada * Copyright (c) 2017-2020, ARM Limited and Contributors. All rights reserved. 3d8e919c7SMasahiro Yamada * 4d8e919c7SMasahiro Yamada * SPDX-License-Identifier: BSD-3-Clause 5d8e919c7SMasahiro Yamada */ 6d8e919c7SMasahiro Yamada 7eba319beSMasahiro Yamada #include <assert.h> 8eba319beSMasahiro Yamada 9d8e919c7SMasahiro Yamada #include <platform_def.h> 1009d40e0eSAntonio Nino Diaz 1109d40e0eSAntonio Nino Diaz #include <common/debug.h> 1209d40e0eSAntonio Nino Diaz #include <lib/xlat_tables/xlat_tables_v2.h> 13d8e919c7SMasahiro Yamada 14eba319beSMasahiro Yamada #include "uniphier.h" 15d8e919c7SMasahiro Yamada 16eba319beSMasahiro Yamada struct uniphier_reg_region { 17eba319beSMasahiro Yamada uintptr_t base; 18eba319beSMasahiro Yamada size_t size; 19eba319beSMasahiro Yamada }; 20eba319beSMasahiro Yamada 21eba319beSMasahiro Yamada static const struct uniphier_reg_region uniphier_reg_region[] = { 22eba319beSMasahiro Yamada [UNIPHIER_SOC_LD11] = { 23eba319beSMasahiro Yamada .base = 0x50000000UL, 24eba319beSMasahiro Yamada .size = 0x20000000UL, 25eba319beSMasahiro Yamada }, 26eba319beSMasahiro Yamada [UNIPHIER_SOC_LD20] = { 27eba319beSMasahiro Yamada .base = 0x50000000UL, 28eba319beSMasahiro Yamada .size = 0x20000000UL, 29eba319beSMasahiro Yamada }, 30eba319beSMasahiro Yamada [UNIPHIER_SOC_PXS3] = { 31eba319beSMasahiro Yamada .base = 0x50000000UL, 32eba319beSMasahiro Yamada .size = 0x20000000UL, 33eba319beSMasahiro Yamada }, 34eba319beSMasahiro Yamada }; 35eba319beSMasahiro Yamada 36eba319beSMasahiro Yamada void uniphier_mmap_setup(unsigned int soc) 37d8e919c7SMasahiro Yamada { 38d8e919c7SMasahiro Yamada VERBOSE("Trusted RAM seen by this BL image: %p - %p\n", 39c64873abSMasahiro Yamada (void *)BL_CODE_BASE, (void *)BL_END); 40c64873abSMasahiro Yamada mmap_add_region(BL_CODE_BASE, BL_CODE_BASE, 41c64873abSMasahiro Yamada round_up(BL_END, PAGE_SIZE) - BL_CODE_BASE, 42d8e919c7SMasahiro Yamada MT_MEMORY | MT_RW | MT_SECURE); 43d8e919c7SMasahiro Yamada 44d8e919c7SMasahiro Yamada /* remap the code section */ 45d8e919c7SMasahiro Yamada VERBOSE("Code region: %p - %p\n", 46d8e919c7SMasahiro Yamada (void *)BL_CODE_BASE, (void *)BL_CODE_END); 47d8e919c7SMasahiro Yamada mmap_add_region(BL_CODE_BASE, BL_CODE_BASE, 48d8e919c7SMasahiro Yamada round_up(BL_CODE_END, PAGE_SIZE) - BL_CODE_BASE, 49d8e919c7SMasahiro Yamada MT_CODE | MT_SECURE); 50d8e919c7SMasahiro Yamada 51d8e919c7SMasahiro Yamada /* remap the coherent memory region */ 52d8e919c7SMasahiro Yamada VERBOSE("Coherent region: %p - %p\n", 53d8e919c7SMasahiro Yamada (void *)BL_COHERENT_RAM_BASE, (void *)BL_COHERENT_RAM_END); 54d8e919c7SMasahiro Yamada mmap_add_region(BL_COHERENT_RAM_BASE, BL_COHERENT_RAM_BASE, 55d8e919c7SMasahiro Yamada BL_COHERENT_RAM_END - BL_COHERENT_RAM_BASE, 56d8e919c7SMasahiro Yamada MT_DEVICE | MT_RW | MT_SECURE); 57d8e919c7SMasahiro Yamada 58d8e919c7SMasahiro Yamada /* register region */ 59eba319beSMasahiro Yamada assert(soc < ARRAY_SIZE(uniphier_reg_region)); 60eba319beSMasahiro Yamada mmap_add_region(uniphier_reg_region[soc].base, 61eba319beSMasahiro Yamada uniphier_reg_region[soc].base, 62eba319beSMasahiro Yamada uniphier_reg_region[soc].size, 63d8e919c7SMasahiro Yamada MT_DEVICE | MT_RW | MT_SECURE); 64d8e919c7SMasahiro Yamada 65d8e919c7SMasahiro Yamada init_xlat_tables(); 66*2765ffdcSMasahiro Yamada 67*2765ffdcSMasahiro Yamada enable_mmu(0); 68d8e919c7SMasahiro Yamada } 69