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