1*91f16700Schasinglulu /* 2*91f16700Schasinglulu * Copyright (c) 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_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_HDCP_RX MAP_REGION_FLAT(AML_HDCP_RX_BASE, \ 36*91f16700Schasinglulu AML_HDCP_RX_SIZE, \ 37*91f16700Schasinglulu MT_DEVICE | MT_RW | MT_SECURE) 38*91f16700Schasinglulu 39*91f16700Schasinglulu #define MAP_HDCP_TX MAP_REGION_FLAT(AML_HDCP_TX_BASE, \ 40*91f16700Schasinglulu AML_HDCP_TX_SIZE, \ 41*91f16700Schasinglulu MT_DEVICE | MT_RW | MT_SECURE) 42*91f16700Schasinglulu 43*91f16700Schasinglulu #define MAP_GIC_DEVICE MAP_REGION_FLAT(AML_GIC_DEVICE_BASE, \ 44*91f16700Schasinglulu AML_GIC_DEVICE_SIZE, \ 45*91f16700Schasinglulu MT_DEVICE | MT_RW | MT_SECURE) 46*91f16700Schasinglulu 47*91f16700Schasinglulu #define MAP_SEC_DEVICE1 MAP_REGION_FLAT(AML_SEC_DEVICE1_BASE, \ 48*91f16700Schasinglulu AML_SEC_DEVICE1_SIZE, \ 49*91f16700Schasinglulu MT_DEVICE | MT_RW | MT_SECURE) 50*91f16700Schasinglulu 51*91f16700Schasinglulu #define MAP_SEC_DEVICE2 MAP_REGION_FLAT(AML_SEC_DEVICE2_BASE, \ 52*91f16700Schasinglulu AML_SEC_DEVICE2_SIZE, \ 53*91f16700Schasinglulu MT_DEVICE | MT_RW | MT_SECURE) 54*91f16700Schasinglulu 55*91f16700Schasinglulu #define MAP_TZRAM MAP_REGION_FLAT(AML_TZRAM_BASE, \ 56*91f16700Schasinglulu AML_TZRAM_SIZE, \ 57*91f16700Schasinglulu MT_DEVICE | MT_RW | MT_SECURE) 58*91f16700Schasinglulu 59*91f16700Schasinglulu static const mmap_region_t g12a_mmap[] = { 60*91f16700Schasinglulu MAP_NSDRAM0, 61*91f16700Schasinglulu MAP_NS_SHARE_MEM, 62*91f16700Schasinglulu MAP_SEC_SHARE_MEM, 63*91f16700Schasinglulu MAP_SEC_DEVICE0, 64*91f16700Schasinglulu MAP_HDCP_RX, 65*91f16700Schasinglulu MAP_HDCP_TX, 66*91f16700Schasinglulu MAP_GIC_DEVICE, 67*91f16700Schasinglulu MAP_SEC_DEVICE1, 68*91f16700Schasinglulu MAP_SEC_DEVICE2, 69*91f16700Schasinglulu MAP_TZRAM, 70*91f16700Schasinglulu {0} 71*91f16700Schasinglulu }; 72*91f16700Schasinglulu 73*91f16700Schasinglulu /******************************************************************************* 74*91f16700Schasinglulu * Per-image regions 75*91f16700Schasinglulu ******************************************************************************/ 76*91f16700Schasinglulu #define MAP_BL31 MAP_REGION_FLAT(BL31_BASE, \ 77*91f16700Schasinglulu BL31_END - BL31_BASE, \ 78*91f16700Schasinglulu MT_MEMORY | MT_RW | MT_SECURE) 79*91f16700Schasinglulu 80*91f16700Schasinglulu #define MAP_BL_CODE MAP_REGION_FLAT(BL_CODE_BASE, \ 81*91f16700Schasinglulu BL_CODE_END - BL_CODE_BASE, \ 82*91f16700Schasinglulu MT_CODE | MT_SECURE) 83*91f16700Schasinglulu 84*91f16700Schasinglulu #define MAP_BL_RO_DATA MAP_REGION_FLAT(BL_RO_DATA_BASE, \ 85*91f16700Schasinglulu BL_RO_DATA_END - BL_RO_DATA_BASE, \ 86*91f16700Schasinglulu MT_RO_DATA | MT_SECURE) 87*91f16700Schasinglulu 88*91f16700Schasinglulu #define MAP_BL_COHERENT MAP_REGION_FLAT(BL_COHERENT_RAM_BASE, \ 89*91f16700Schasinglulu BL_COHERENT_RAM_END - BL_COHERENT_RAM_BASE, \ 90*91f16700Schasinglulu MT_DEVICE | MT_RW | MT_SECURE) 91*91f16700Schasinglulu 92*91f16700Schasinglulu /******************************************************************************* 93*91f16700Schasinglulu * Function that sets up the translation tables. 94*91f16700Schasinglulu ******************************************************************************/ 95*91f16700Schasinglulu void aml_setup_page_tables(void) 96*91f16700Schasinglulu { 97*91f16700Schasinglulu #if IMAGE_BL31 98*91f16700Schasinglulu const mmap_region_t g12a_bl_mmap[] = { 99*91f16700Schasinglulu MAP_BL31, 100*91f16700Schasinglulu MAP_BL_CODE, 101*91f16700Schasinglulu MAP_BL_RO_DATA, 102*91f16700Schasinglulu #if USE_COHERENT_MEM 103*91f16700Schasinglulu MAP_BL_COHERENT, 104*91f16700Schasinglulu #endif 105*91f16700Schasinglulu {0} 106*91f16700Schasinglulu }; 107*91f16700Schasinglulu #endif 108*91f16700Schasinglulu 109*91f16700Schasinglulu mmap_add(g12a_bl_mmap); 110*91f16700Schasinglulu 111*91f16700Schasinglulu mmap_add(g12a_mmap); 112*91f16700Schasinglulu 113*91f16700Schasinglulu init_xlat_tables(); 114*91f16700Schasinglulu } 115*91f16700Schasinglulu 116*91f16700Schasinglulu /******************************************************************************* 117*91f16700Schasinglulu * Function that returns the system counter frequency 118*91f16700Schasinglulu ******************************************************************************/ 119*91f16700Schasinglulu unsigned int plat_get_syscnt_freq2(void) 120*91f16700Schasinglulu { 121*91f16700Schasinglulu mmio_clrbits_32(AML_SYS_CPU_CFG7, ~0xFDFFFFFF); 122*91f16700Schasinglulu mmio_clrbits_32(AML_AO_TIMESTAMP_CNTL, ~0xFFFFFE00); 123*91f16700Schasinglulu 124*91f16700Schasinglulu return AML_OSC24M_CLK_IN_HZ; 125*91f16700Schasinglulu } 126