xref: /rk3399_ARM-atf/plat/nxp/s32/s32g274ardb2/s32cc_bl_common.c (revision eb4d4185fa67edb6d137a5f7a0eb5e209b4e6299)
1*eb4d4185SGhennadi Procopciuc /*
2*eb4d4185SGhennadi Procopciuc  * Copyright 2024 NXP
3*eb4d4185SGhennadi Procopciuc  *
4*eb4d4185SGhennadi Procopciuc  * SPDX-License-Identifier: BSD-3-Clause
5*eb4d4185SGhennadi Procopciuc  */
6*eb4d4185SGhennadi Procopciuc #include <errno.h>
7*eb4d4185SGhennadi Procopciuc 
8*eb4d4185SGhennadi Procopciuc #include <common/bl_common.h>
9*eb4d4185SGhennadi Procopciuc #include <lib/xlat_tables/xlat_tables_v2.h>
10*eb4d4185SGhennadi Procopciuc 
11*eb4d4185SGhennadi Procopciuc #include <s32cc-bl-common.h>
12*eb4d4185SGhennadi Procopciuc 
13*eb4d4185SGhennadi Procopciuc int s32cc_bl_mmu_setup(void)
14*eb4d4185SGhennadi Procopciuc {
15*eb4d4185SGhennadi Procopciuc 	const unsigned long code_start = BL_CODE_BASE;
16*eb4d4185SGhennadi Procopciuc 	const unsigned long rw_start = BL_CODE_END;
17*eb4d4185SGhennadi Procopciuc 	unsigned long code_size;
18*eb4d4185SGhennadi Procopciuc 	unsigned long rw_size;
19*eb4d4185SGhennadi Procopciuc 
20*eb4d4185SGhennadi Procopciuc 	if (code_start > BL_CODE_END) {
21*eb4d4185SGhennadi Procopciuc 		return -EINVAL;
22*eb4d4185SGhennadi Procopciuc 	}
23*eb4d4185SGhennadi Procopciuc 
24*eb4d4185SGhennadi Procopciuc 	if (rw_start > BL_END) {
25*eb4d4185SGhennadi Procopciuc 		return -EINVAL;
26*eb4d4185SGhennadi Procopciuc 	}
27*eb4d4185SGhennadi Procopciuc 
28*eb4d4185SGhennadi Procopciuc 	code_size = BL_CODE_END - code_start;
29*eb4d4185SGhennadi Procopciuc 	rw_size = BL_END - rw_start;
30*eb4d4185SGhennadi Procopciuc 
31*eb4d4185SGhennadi Procopciuc 	mmap_add_region(code_start, code_start, code_size,
32*eb4d4185SGhennadi Procopciuc 			MT_RO | MT_MEMORY | MT_SECURE);
33*eb4d4185SGhennadi Procopciuc 	mmap_add_region(rw_start, rw_start, rw_size,
34*eb4d4185SGhennadi Procopciuc 			MT_RW | MT_MEMORY | MT_SECURE);
35*eb4d4185SGhennadi Procopciuc 
36*eb4d4185SGhennadi Procopciuc 	init_xlat_tables();
37*eb4d4185SGhennadi Procopciuc 	enable_mmu_el3(0);
38*eb4d4185SGhennadi Procopciuc 
39*eb4d4185SGhennadi Procopciuc 	return 0;
40*eb4d4185SGhennadi Procopciuc }
41