/* * Copyright (c) 2020, ARM Limited and Contributors. All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause */ #include #include #include #include #include #include #include #include /******************************************************************************* * Platform memory map regions ******************************************************************************/ #define MAP_NSDRAM0 MAP_REGION_FLAT(AML_NSDRAM0_BASE, \ AML_NSDRAM0_SIZE, \ MT_MEMORY | MT_RW | MT_NS) #define MAP_NS_SHARE_MEM MAP_REGION_FLAT(AML_NS_SHARE_MEM_BASE, \ AML_NS_SHARE_MEM_SIZE, \ MT_MEMORY | MT_RW | MT_NS) #define MAP_SEC_SHARE_MEM MAP_REGION_FLAT(AML_SEC_SHARE_MEM_BASE, \ AML_SEC_SHARE_MEM_SIZE, \ MT_MEMORY | MT_RW | MT_SECURE) #define MAP_SEC_DEVICE0 MAP_REGION_FLAT(AML_SEC_DEVICE0_BASE, \ AML_SEC_DEVICE0_SIZE, \ MT_DEVICE | MT_RW) #define MAP_GIC_DEVICE MAP_REGION_FLAT(AML_GIC_DEVICE_BASE, \ AML_GIC_DEVICE_SIZE, \ MT_DEVICE | MT_RW | MT_SECURE) #define MAP_SEC_DEVICE1 MAP_REGION_FLAT(AML_SEC_DEVICE1_BASE, \ AML_SEC_DEVICE1_SIZE, \ MT_DEVICE | MT_RW | MT_SECURE) #define MAP_SEC_DEVICE2 MAP_REGION_FLAT(AML_SEC_DEVICE2_BASE, \ AML_SEC_DEVICE2_SIZE, \ MT_DEVICE | MT_RW | MT_SECURE) #define MAP_TZRAM MAP_REGION_FLAT(AML_TZRAM_BASE, \ AML_TZRAM_SIZE, \ MT_DEVICE | MT_RW | MT_SECURE) static const mmap_region_t axg_mmap[] = { MAP_NSDRAM0, MAP_NS_SHARE_MEM, MAP_SEC_SHARE_MEM, MAP_SEC_DEVICE0, MAP_GIC_DEVICE, MAP_SEC_DEVICE1, MAP_SEC_DEVICE2, MAP_TZRAM, {0} }; /******************************************************************************* * Per-image regions ******************************************************************************/ #define MAP_BL31 MAP_REGION_FLAT(BL31_BASE, \ BL31_END - BL31_BASE, \ MT_MEMORY | MT_RW | MT_SECURE) #define MAP_BL_CODE MAP_REGION_FLAT(BL_CODE_BASE, \ BL_CODE_END - BL_CODE_BASE, \ MT_CODE | MT_SECURE) #define MAP_BL_RO_DATA MAP_REGION_FLAT(BL_RO_DATA_BASE, \ BL_RO_DATA_END - BL_RO_DATA_BASE, \ MT_RO_DATA | MT_SECURE) #define MAP_BL_COHERENT MAP_REGION_FLAT(BL_COHERENT_RAM_BASE, \ BL_COHERENT_RAM_END - BL_COHERENT_RAM_BASE, \ MT_DEVICE | MT_RW | MT_SECURE) /******************************************************************************* * Function that sets up the translation tables. ******************************************************************************/ void aml_setup_page_tables(void) { #if IMAGE_BL31 const mmap_region_t axg_bl_mmap[] = { MAP_BL31, MAP_BL_CODE, MAP_BL_RO_DATA, #if USE_COHERENT_MEM MAP_BL_COHERENT, #endif {0} }; #endif mmap_add(axg_bl_mmap); mmap_add(axg_mmap); init_xlat_tables(); } /******************************************************************************* * Function that returns the system counter frequency ******************************************************************************/ unsigned int plat_get_syscnt_freq2(void) { mmio_clrbits_32(AML_SYS_CPU_CFG7, PLAT_SYS_CPU_CFG7); mmio_clrbits_32(AML_AO_TIMESTAMP_CNTL, PLAT_AO_TIMESTAMP_CNTL); return AML_OSC24M_CLK_IN_HZ; }