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