xref: /rk3399_ARM-atf/plat/socionext/uniphier/uniphier_xlat_setup.c (revision 2765ffdc99af8b5fc171771b5f0e04e96a74a52f)
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