1*91f16700Schasinglulu /* 2*91f16700Schasinglulu * Copyright (c) 2020, ARM Limited and Contributors. All rights reserved. 3*91f16700Schasinglulu * 4*91f16700Schasinglulu * SPDX-License-Identifier: BSD-3-Clause 5*91f16700Schasinglulu */ 6*91f16700Schasinglulu 7*91f16700Schasinglulu #include <assert.h> 8*91f16700Schasinglulu #include <bl31/interrupt_mgmt.h> 9*91f16700Schasinglulu #include <common/bl_common.h> 10*91f16700Schasinglulu #include <common/ep_info.h> 11*91f16700Schasinglulu #include <lib/mmio.h> 12*91f16700Schasinglulu #include <lib/xlat_tables/xlat_tables_v2.h> 13*91f16700Schasinglulu #include <platform_def.h> 14*91f16700Schasinglulu #include <stdint.h> 15*91f16700Schasinglulu 16*91f16700Schasinglulu /******************************************************************************* 17*91f16700Schasinglulu * Platform memory map regions 18*91f16700Schasinglulu ******************************************************************************/ 19*91f16700Schasinglulu #define MAP_NSDRAM0 MAP_REGION_FLAT(AML_NSDRAM0_BASE, \ 20*91f16700Schasinglulu AML_NSDRAM0_SIZE, \ 21*91f16700Schasinglulu MT_MEMORY | MT_RW | MT_NS) 22*91f16700Schasinglulu 23*91f16700Schasinglulu #define MAP_NS_SHARE_MEM MAP_REGION_FLAT(AML_NS_SHARE_MEM_BASE, \ 24*91f16700Schasinglulu AML_NS_SHARE_MEM_SIZE, \ 25*91f16700Schasinglulu MT_MEMORY | MT_RW | MT_NS) 26*91f16700Schasinglulu 27*91f16700Schasinglulu #define MAP_SEC_SHARE_MEM MAP_REGION_FLAT(AML_SEC_SHARE_MEM_BASE, \ 28*91f16700Schasinglulu AML_SEC_SHARE_MEM_SIZE, \ 29*91f16700Schasinglulu MT_MEMORY | MT_RW | MT_SECURE) 30*91f16700Schasinglulu 31*91f16700Schasinglulu #define MAP_SEC_DEVICE0 MAP_REGION_FLAT(AML_SEC_DEVICE0_BASE, \ 32*91f16700Schasinglulu AML_SEC_DEVICE0_SIZE, \ 33*91f16700Schasinglulu MT_DEVICE | MT_RW) 34*91f16700Schasinglulu 35*91f16700Schasinglulu #define MAP_GIC_DEVICE MAP_REGION_FLAT(AML_GIC_DEVICE_BASE, \ 36*91f16700Schasinglulu AML_GIC_DEVICE_SIZE, \ 37*91f16700Schasinglulu MT_DEVICE | MT_RW | MT_SECURE) 38*91f16700Schasinglulu 39*91f16700Schasinglulu #define MAP_SEC_DEVICE1 MAP_REGION_FLAT(AML_SEC_DEVICE1_BASE, \ 40*91f16700Schasinglulu AML_SEC_DEVICE1_SIZE, \ 41*91f16700Schasinglulu MT_DEVICE | MT_RW | MT_SECURE) 42*91f16700Schasinglulu 43*91f16700Schasinglulu #define MAP_SEC_DEVICE2 MAP_REGION_FLAT(AML_SEC_DEVICE2_BASE, \ 44*91f16700Schasinglulu AML_SEC_DEVICE2_SIZE, \ 45*91f16700Schasinglulu MT_DEVICE | MT_RW | MT_SECURE) 46*91f16700Schasinglulu 47*91f16700Schasinglulu #define MAP_TZRAM MAP_REGION_FLAT(AML_TZRAM_BASE, \ 48*91f16700Schasinglulu AML_TZRAM_SIZE, \ 49*91f16700Schasinglulu MT_DEVICE | MT_RW | MT_SECURE) 50*91f16700Schasinglulu 51*91f16700Schasinglulu static const mmap_region_t axg_mmap[] = { 52*91f16700Schasinglulu MAP_NSDRAM0, 53*91f16700Schasinglulu MAP_NS_SHARE_MEM, 54*91f16700Schasinglulu MAP_SEC_SHARE_MEM, 55*91f16700Schasinglulu MAP_SEC_DEVICE0, 56*91f16700Schasinglulu MAP_GIC_DEVICE, 57*91f16700Schasinglulu MAP_SEC_DEVICE1, 58*91f16700Schasinglulu MAP_SEC_DEVICE2, 59*91f16700Schasinglulu MAP_TZRAM, 60*91f16700Schasinglulu {0} 61*91f16700Schasinglulu }; 62*91f16700Schasinglulu 63*91f16700Schasinglulu /******************************************************************************* 64*91f16700Schasinglulu * Per-image regions 65*91f16700Schasinglulu ******************************************************************************/ 66*91f16700Schasinglulu #define MAP_BL31 MAP_REGION_FLAT(BL31_BASE, \ 67*91f16700Schasinglulu BL31_END - BL31_BASE, \ 68*91f16700Schasinglulu MT_MEMORY | MT_RW | MT_SECURE) 69*91f16700Schasinglulu 70*91f16700Schasinglulu #define MAP_BL_CODE MAP_REGION_FLAT(BL_CODE_BASE, \ 71*91f16700Schasinglulu BL_CODE_END - BL_CODE_BASE, \ 72*91f16700Schasinglulu MT_CODE | MT_SECURE) 73*91f16700Schasinglulu 74*91f16700Schasinglulu #define MAP_BL_RO_DATA MAP_REGION_FLAT(BL_RO_DATA_BASE, \ 75*91f16700Schasinglulu BL_RO_DATA_END - BL_RO_DATA_BASE, \ 76*91f16700Schasinglulu MT_RO_DATA | MT_SECURE) 77*91f16700Schasinglulu 78*91f16700Schasinglulu #define MAP_BL_COHERENT MAP_REGION_FLAT(BL_COHERENT_RAM_BASE, \ 79*91f16700Schasinglulu BL_COHERENT_RAM_END - BL_COHERENT_RAM_BASE, \ 80*91f16700Schasinglulu MT_DEVICE | MT_RW | MT_SECURE) 81*91f16700Schasinglulu 82*91f16700Schasinglulu /******************************************************************************* 83*91f16700Schasinglulu * Function that sets up the translation tables. 84*91f16700Schasinglulu ******************************************************************************/ 85*91f16700Schasinglulu void aml_setup_page_tables(void) 86*91f16700Schasinglulu { 87*91f16700Schasinglulu #if IMAGE_BL31 88*91f16700Schasinglulu const mmap_region_t axg_bl_mmap[] = { 89*91f16700Schasinglulu MAP_BL31, 90*91f16700Schasinglulu MAP_BL_CODE, 91*91f16700Schasinglulu MAP_BL_RO_DATA, 92*91f16700Schasinglulu #if USE_COHERENT_MEM 93*91f16700Schasinglulu MAP_BL_COHERENT, 94*91f16700Schasinglulu #endif 95*91f16700Schasinglulu {0} 96*91f16700Schasinglulu }; 97*91f16700Schasinglulu #endif 98*91f16700Schasinglulu 99*91f16700Schasinglulu mmap_add(axg_bl_mmap); 100*91f16700Schasinglulu 101*91f16700Schasinglulu mmap_add(axg_mmap); 102*91f16700Schasinglulu 103*91f16700Schasinglulu init_xlat_tables(); 104*91f16700Schasinglulu } 105*91f16700Schasinglulu 106*91f16700Schasinglulu /******************************************************************************* 107*91f16700Schasinglulu * Function that returns the system counter frequency 108*91f16700Schasinglulu ******************************************************************************/ 109*91f16700Schasinglulu unsigned int plat_get_syscnt_freq2(void) 110*91f16700Schasinglulu { 111*91f16700Schasinglulu mmio_clrbits_32(AML_SYS_CPU_CFG7, PLAT_SYS_CPU_CFG7); 112*91f16700Schasinglulu mmio_clrbits_32(AML_AO_TIMESTAMP_CNTL, PLAT_AO_TIMESTAMP_CNTL); 113*91f16700Schasinglulu 114*91f16700Schasinglulu return AML_OSC24M_CLK_IN_HZ; 115*91f16700Schasinglulu } 116