1*91f16700Schasinglulu /* 2*91f16700Schasinglulu * Copyright (c) 2018-2019, 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_NSDRAM1 MAP_REGION_FLAT(AML_NSDRAM1_BASE, \ 24*91f16700Schasinglulu AML_NSDRAM1_SIZE, \ 25*91f16700Schasinglulu MT_MEMORY | MT_RW | MT_NS) 26*91f16700Schasinglulu 27*91f16700Schasinglulu #define MAP_SEC_DEVICE0 MAP_REGION_FLAT(AML_SEC_DEVICE0_BASE, \ 28*91f16700Schasinglulu AML_SEC_DEVICE0_SIZE, \ 29*91f16700Schasinglulu MT_DEVICE | MT_RW | MT_SECURE) 30*91f16700Schasinglulu 31*91f16700Schasinglulu #define MAP_SEC_DEVICE1 MAP_REGION_FLAT(AML_SEC_DEVICE1_BASE, \ 32*91f16700Schasinglulu AML_SEC_DEVICE1_SIZE, \ 33*91f16700Schasinglulu MT_DEVICE | MT_RW | MT_SECURE) 34*91f16700Schasinglulu 35*91f16700Schasinglulu #define MAP_TZRAM MAP_REGION_FLAT(AML_TZRAM_BASE, \ 36*91f16700Schasinglulu AML_TZRAM_SIZE, \ 37*91f16700Schasinglulu MT_DEVICE | MT_RW | MT_SECURE) 38*91f16700Schasinglulu 39*91f16700Schasinglulu #define MAP_SEC_DEVICE2 MAP_REGION_FLAT(AML_SEC_DEVICE2_BASE, \ 40*91f16700Schasinglulu AML_SEC_DEVICE2_SIZE, \ 41*91f16700Schasinglulu MT_DEVICE | MT_RW | MT_SECURE) 42*91f16700Schasinglulu 43*91f16700Schasinglulu #define MAP_SEC_DEVICE3 MAP_REGION_FLAT(AML_SEC_DEVICE3_BASE, \ 44*91f16700Schasinglulu AML_SEC_DEVICE3_SIZE, \ 45*91f16700Schasinglulu MT_DEVICE | MT_RW | MT_SECURE) 46*91f16700Schasinglulu 47*91f16700Schasinglulu static const mmap_region_t gxl_mmap[] = { 48*91f16700Schasinglulu MAP_NSDRAM0, 49*91f16700Schasinglulu MAP_NSDRAM1, 50*91f16700Schasinglulu MAP_SEC_DEVICE0, 51*91f16700Schasinglulu MAP_SEC_DEVICE1, 52*91f16700Schasinglulu MAP_TZRAM, 53*91f16700Schasinglulu MAP_SEC_DEVICE2, 54*91f16700Schasinglulu MAP_SEC_DEVICE3, 55*91f16700Schasinglulu {0} 56*91f16700Schasinglulu }; 57*91f16700Schasinglulu 58*91f16700Schasinglulu /******************************************************************************* 59*91f16700Schasinglulu * Per-image regions 60*91f16700Schasinglulu ******************************************************************************/ 61*91f16700Schasinglulu #define MAP_BL31 MAP_REGION_FLAT(BL31_BASE, \ 62*91f16700Schasinglulu BL31_END - BL31_BASE, \ 63*91f16700Schasinglulu MT_MEMORY | MT_RW | MT_SECURE) 64*91f16700Schasinglulu 65*91f16700Schasinglulu #define MAP_BL_CODE MAP_REGION_FLAT(BL_CODE_BASE, \ 66*91f16700Schasinglulu BL_CODE_END - BL_CODE_BASE, \ 67*91f16700Schasinglulu MT_CODE | MT_SECURE) 68*91f16700Schasinglulu 69*91f16700Schasinglulu #define MAP_BL_RO_DATA MAP_REGION_FLAT(BL_RO_DATA_BASE, \ 70*91f16700Schasinglulu BL_RO_DATA_END - BL_RO_DATA_BASE, \ 71*91f16700Schasinglulu MT_RO_DATA | MT_SECURE) 72*91f16700Schasinglulu 73*91f16700Schasinglulu #define MAP_BL_COHERENT MAP_REGION_FLAT(BL_COHERENT_RAM_BASE, \ 74*91f16700Schasinglulu BL_COHERENT_RAM_END - BL_COHERENT_RAM_BASE, \ 75*91f16700Schasinglulu MT_DEVICE | MT_RW | MT_SECURE) 76*91f16700Schasinglulu 77*91f16700Schasinglulu /******************************************************************************* 78*91f16700Schasinglulu * Function that sets up the translation tables. 79*91f16700Schasinglulu ******************************************************************************/ 80*91f16700Schasinglulu void aml_setup_page_tables(void) 81*91f16700Schasinglulu { 82*91f16700Schasinglulu #if IMAGE_BL31 83*91f16700Schasinglulu const mmap_region_t gxl_bl_mmap[] = { 84*91f16700Schasinglulu MAP_BL31, 85*91f16700Schasinglulu MAP_BL_CODE, 86*91f16700Schasinglulu MAP_BL_RO_DATA, 87*91f16700Schasinglulu #if USE_COHERENT_MEM 88*91f16700Schasinglulu MAP_BL_COHERENT, 89*91f16700Schasinglulu #endif 90*91f16700Schasinglulu {0} 91*91f16700Schasinglulu }; 92*91f16700Schasinglulu #endif 93*91f16700Schasinglulu 94*91f16700Schasinglulu mmap_add(gxl_bl_mmap); 95*91f16700Schasinglulu 96*91f16700Schasinglulu mmap_add(gxl_mmap); 97*91f16700Schasinglulu 98*91f16700Schasinglulu init_xlat_tables(); 99*91f16700Schasinglulu } 100*91f16700Schasinglulu 101*91f16700Schasinglulu /******************************************************************************* 102*91f16700Schasinglulu * Function that returns the system counter frequency 103*91f16700Schasinglulu ******************************************************************************/ 104*91f16700Schasinglulu unsigned int plat_get_syscnt_freq2(void) 105*91f16700Schasinglulu { 106*91f16700Schasinglulu uint32_t val; 107*91f16700Schasinglulu 108*91f16700Schasinglulu val = mmio_read_32(AML_SYS_CPU_CFG7); 109*91f16700Schasinglulu val &= 0xFDFFFFFF; 110*91f16700Schasinglulu mmio_write_32(AML_SYS_CPU_CFG7, val); 111*91f16700Schasinglulu 112*91f16700Schasinglulu val = mmio_read_32(AML_AO_TIMESTAMP_CNTL); 113*91f16700Schasinglulu val &= 0xFFFFFE00; 114*91f16700Schasinglulu mmio_write_32(AML_AO_TIMESTAMP_CNTL, val); 115*91f16700Schasinglulu 116*91f16700Schasinglulu return AML_OSC24M_CLK_IN_HZ; 117*91f16700Schasinglulu } 118