16ec0c65bSUsama Arif /* 293c50ae6SJayanth Dodderi Chidanand * Copyright (c) 2020-2025, Arm Limited. All rights reserved. 36ec0c65bSUsama Arif * 46ec0c65bSUsama Arif * SPDX-License-Identifier: BSD-3-Clause 56ec0c65bSUsama Arif */ 66ec0c65bSUsama Arif 76ec0c65bSUsama Arif #ifndef PLATFORM_DEF_H 86ec0c65bSUsama Arif #define PLATFORM_DEF_H 96ec0c65bSUsama Arif 10e1b76cb0SJagdish Gediya #include <cortex_a520.h> 116ec0c65bSUsama Arif #include <lib/utils_def.h> 126ec0c65bSUsama Arif #include <lib/xlat_tables/xlat_tables_defs.h> 136ec0c65bSUsama Arif #include <plat/arm/board/common/board_css_def.h> 146ec0c65bSUsama Arif #include <plat/arm/board/common/v2m_def.h> 15d6b6a8b7SJackson Cooper-Driver 16d6b6a8b7SJackson Cooper-Driver /* 17d6b6a8b7SJackson Cooper-Driver * arm_def.h depends on the platform system counter macros, so must define the 18d6b6a8b7SJackson Cooper-Driver * platform macros before including arm_def.h. 19d6b6a8b7SJackson Cooper-Driver */ 20d6b6a8b7SJackson Cooper-Driver #if TARGET_PLATFORM == 4 21d6b6a8b7SJackson Cooper-Driver #ifdef ARM_SYS_CNTCTL_BASE 22d6b6a8b7SJackson Cooper-Driver #error "error: ARM_SYS_CNTCTL_BASE is defined prior to the PLAT_ARM_SYS_CNTCTL_BASE definition" 23d6b6a8b7SJackson Cooper-Driver #endif 24d6b6a8b7SJackson Cooper-Driver #define PLAT_ARM_SYS_CNTCTL_BASE UL(0x47000000) 25d6b6a8b7SJackson Cooper-Driver #define PLAT_ARM_SYS_CNTREAD_BASE UL(0x47010000) 26d6b6a8b7SJackson Cooper-Driver #endif 27d6b6a8b7SJackson Cooper-Driver 286ec0c65bSUsama Arif #include <plat/arm/common/arm_def.h> 29d6b6a8b7SJackson Cooper-Driver 306ec0c65bSUsama Arif #include <plat/arm/common/arm_spm_def.h> 316ec0c65bSUsama Arif #include <plat/arm/css/common/css_def.h> 326ec0c65bSUsama Arif #include <plat/arm/soc/common/soc_css_def.h> 336ec0c65bSUsama Arif #include <plat/common/common_def.h> 346ec0c65bSUsama Arif 356ec0c65bSUsama Arif #define PLAT_ARM_TRUSTED_SRAM_SIZE 0x00080000 /* 512 KB */ 366ec0c65bSUsama Arif 3793c50ae6SJayanth Dodderi Chidanand #if TRANSFER_LIST 3893c50ae6SJayanth Dodderi Chidanand /* 3993c50ae6SJayanth Dodderi Chidanand * Summation of data size of all Transfer Entries included in the Transfer list. 4093c50ae6SJayanth Dodderi Chidanand * Note: Update this field whenever new Transfer Entries are added in future. 4193c50ae6SJayanth Dodderi Chidanand */ 4293c50ae6SJayanth Dodderi Chidanand #define PLAT_ARM_FW_HANDOFF_SIZE U(0x9000) 4393c50ae6SJayanth Dodderi Chidanand #define PLAT_ARM_EL3_FW_HANDOFF_BASE ARM_BL_RAM_BASE 4493c50ae6SJayanth Dodderi Chidanand #define PLAT_ARM_EL3_FW_HANDOFF_LIMIT PLAT_ARM_EL3_FW_HANDOFF_BASE + PLAT_ARM_FW_HANDOFF_SIZE 4525a6bcd5SJayanth Dodderi Chidanand #define FW_NS_HANDOFF_BASE (PLAT_ARM_NS_IMAGE_BASE - PLAT_ARM_FW_HANDOFF_SIZE) 4693c50ae6SJayanth Dodderi Chidanand 4793c50ae6SJayanth Dodderi Chidanand /* Mappings for Secure and Non-secure Transfer_list */ 4893c50ae6SJayanth Dodderi Chidanand #define TC_MAP_EL3_FW_HANDOFF MAP_REGION_FLAT( \ 4993c50ae6SJayanth Dodderi Chidanand PLAT_ARM_EL3_FW_HANDOFF_BASE, \ 5093c50ae6SJayanth Dodderi Chidanand PLAT_ARM_FW_HANDOFF_SIZE, \ 5193c50ae6SJayanth Dodderi Chidanand MT_MEMORY | MT_RW | EL3_PAS) 5225a6bcd5SJayanth Dodderi Chidanand 5325a6bcd5SJayanth Dodderi Chidanand #define TC_MAP_FW_NS_HANDOFF MAP_REGION_FLAT( \ 5425a6bcd5SJayanth Dodderi Chidanand FW_NS_HANDOFF_BASE, \ 5525a6bcd5SJayanth Dodderi Chidanand PLAT_ARM_FW_HANDOFF_SIZE, \ 5625a6bcd5SJayanth Dodderi Chidanand MT_MEMORY | MT_RW | MT_NS) 5793c50ae6SJayanth Dodderi Chidanand #endif /* TRANSFER_LIST */ 5893c50ae6SJayanth Dodderi Chidanand 596ec0c65bSUsama Arif /* 606ec0c65bSUsama Arif * The top 16MB of ARM_DRAM1 is configured as secure access only using the TZC, 616ec0c65bSUsama Arif * its base is ARM_AP_TZC_DRAM1_BASE. 626ec0c65bSUsama Arif * 637e3f6a87SArunachalam Ganapathy * Reserve 96 MB below ARM_AP_TZC_DRAM1_BASE for: 646ec0c65bSUsama Arif * - BL32_BASE when SPD_spmd is enabled 657e3f6a87SArunachalam Ganapathy * - Region to load secure partitions 667e3f6a87SArunachalam Ganapathy * 677e3f6a87SArunachalam Ganapathy * 68d585aa16SBoyan Karatotev * 0x8000_0000 ------------------ TC_NS_DRAM1_BASE 69d585aa16SBoyan Karatotev * | DTB | 70d585aa16SBoyan Karatotev * | (32K) | 71d585aa16SBoyan Karatotev * 0x8000_8000 ------------------ 721f47a713STamas Ban * | NT_FW_CONFIG | 731f47a713STamas Ban * | (4KB) | 741f47a713STamas Ban * 0x8000_9000 ------------------ 75d585aa16SBoyan Karatotev * | ... | 766dacc272SBoyan Karatotev * 0xf8e0_0000 ------------------ TC_NS_OPTEE_BASE 776dacc272SBoyan Karatotev * | OP-TEE shmem | 786dacc272SBoyan Karatotev * | (2MB) | 797e3f6a87SArunachalam Ganapathy * 0xF900_0000 ------------------ TC_TZC_DRAM1_BASE 807e3f6a87SArunachalam Ganapathy * | | 817e3f6a87SArunachalam Ganapathy * | SPMC | 827e3f6a87SArunachalam Ganapathy * | SP | 837e3f6a87SArunachalam Ganapathy * | (96MB) | 847e3f6a87SArunachalam Ganapathy * 0xFF00_0000 ------------------ ARM_AP_TZC_DRAM1_BASE 857e3f6a87SArunachalam Ganapathy * | AP | 867e3f6a87SArunachalam Ganapathy * | EL3 Monitor | 877e3f6a87SArunachalam Ganapathy * | SCP | 887e3f6a87SArunachalam Ganapathy * | (16MB) | 897e3f6a87SArunachalam Ganapathy * 0xFFFF_FFFF ------------------ 907e3f6a87SArunachalam Ganapathy * 917e3f6a87SArunachalam Ganapathy * 926ec0c65bSUsama Arif */ 936ec0c65bSUsama Arif #define TC_TZC_DRAM1_BASE (ARM_AP_TZC_DRAM1_BASE - \ 946ec0c65bSUsama Arif TC_TZC_DRAM1_SIZE) 955ee4deb8SBoyan Karatotev #define TC_TZC_DRAM1_SIZE (96 * SZ_1M) /* 96 MB */ 966ec0c65bSUsama Arif #define TC_TZC_DRAM1_END (TC_TZC_DRAM1_BASE + \ 976ec0c65bSUsama Arif TC_TZC_DRAM1_SIZE - 1) 986ec0c65bSUsama Arif 996ec0c65bSUsama Arif #define TC_NS_DRAM1_BASE ARM_DRAM1_BASE 1006ec0c65bSUsama Arif #define TC_NS_DRAM1_SIZE (ARM_DRAM1_SIZE - \ 1016ec0c65bSUsama Arif ARM_TZC_DRAM1_SIZE - \ 1026ec0c65bSUsama Arif TC_TZC_DRAM1_SIZE) 1035ee4deb8SBoyan Karatotev #define TC_NS_DRAM1_END (TC_NS_DRAM1_BASE + TC_NS_DRAM1_SIZE - 1) 1045ee4deb8SBoyan Karatotev 1056dacc272SBoyan Karatotev #define TC_NS_OPTEE_SIZE (2 * SZ_1M) 1066dacc272SBoyan Karatotev #define TC_NS_OPTEE_BASE (TC_NS_DRAM1_BASE + TC_NS_DRAM1_SIZE - TC_NS_OPTEE_SIZE) 1076ec0c65bSUsama Arif 1086ec0c65bSUsama Arif /* 1096ec0c65bSUsama Arif * Mappings for TC DRAM1 (non-secure) and TC TZC DRAM1 (secure) 1106ec0c65bSUsama Arif */ 1116ec0c65bSUsama Arif #define TC_MAP_NS_DRAM1 MAP_REGION_FLAT( \ 1126ec0c65bSUsama Arif TC_NS_DRAM1_BASE, \ 1136ec0c65bSUsama Arif TC_NS_DRAM1_SIZE, \ 1146ec0c65bSUsama Arif MT_MEMORY | MT_RW | MT_NS) 1156ec0c65bSUsama Arif 1166ec0c65bSUsama Arif 1176ec0c65bSUsama Arif #define TC_MAP_TZC_DRAM1 MAP_REGION_FLAT( \ 1186ec0c65bSUsama Arif TC_TZC_DRAM1_BASE, \ 1196ec0c65bSUsama Arif TC_TZC_DRAM1_SIZE, \ 1206ec0c65bSUsama Arif MT_MEMORY | MT_RW | MT_SECURE) 12134a87d74SUsama Arif 122d585aa16SBoyan Karatotev #define PLAT_HW_CONFIG_DTB_BASE TC_NS_DRAM1_BASE 123df960bccSHarrison Mutai #define PLAT_ARM_HW_CONFIG_SIZE ULL(0x8000) 12434a87d74SUsama Arif 12534a87d74SUsama Arif #define PLAT_DTB_DRAM_NS MAP_REGION_FLAT( \ 12634a87d74SUsama Arif PLAT_HW_CONFIG_DTB_BASE, \ 127df960bccSHarrison Mutai PLAT_ARM_HW_CONFIG_SIZE, \ 12834a87d74SUsama Arif MT_MEMORY | MT_RO | MT_NS) 1296ec0c65bSUsama Arif /* 1306ec0c65bSUsama Arif * Max size of SPMC is 2MB for tc. With SPMD enabled this value corresponds to 1316ec0c65bSUsama Arif * max size of BL32 image. 1326ec0c65bSUsama Arif */ 1336ec0c65bSUsama Arif #if defined(SPD_spmd) 1347e3f6a87SArunachalam Ganapathy #define TC_EL2SPMC_LOAD_ADDR (TC_TZC_DRAM1_BASE + 0x04000000) 1357e3f6a87SArunachalam Ganapathy 1367e3f6a87SArunachalam Ganapathy #define PLAT_ARM_SPMC_BASE TC_EL2SPMC_LOAD_ADDR 1376ec0c65bSUsama Arif #define PLAT_ARM_SPMC_SIZE UL(0x200000) /* 2 MB */ 1386ec0c65bSUsama Arif #endif 1396ec0c65bSUsama Arif 1406ec0c65bSUsama Arif /* 1416ec0c65bSUsama Arif * PLAT_ARM_MMAP_ENTRIES depends on the number of entries in the 1426ec0c65bSUsama Arif * plat_arm_mmap array defined for each BL stage. 1436ec0c65bSUsama Arif */ 1446ec0c65bSUsama Arif #if defined(IMAGE_BL31) 1456ec0c65bSUsama Arif # if SPM_MM 1466ec0c65bSUsama Arif # define PLAT_ARM_MMAP_ENTRIES 9 1476ec0c65bSUsama Arif # define MAX_XLAT_TABLES 7 1486ec0c65bSUsama Arif # define PLAT_SP_IMAGE_MMAP_REGIONS 7 1496ec0c65bSUsama Arif # define PLAT_SP_IMAGE_MAX_XLAT_TABLES 10 1506ec0c65bSUsama Arif # else 1516ec0c65bSUsama Arif # define PLAT_ARM_MMAP_ENTRIES 8 1526ec0c65bSUsama Arif # define MAX_XLAT_TABLES 8 1536ec0c65bSUsama Arif # endif 1546ec0c65bSUsama Arif #elif defined(IMAGE_BL32) 1556ec0c65bSUsama Arif # define PLAT_ARM_MMAP_ENTRIES 8 1566ec0c65bSUsama Arif # define MAX_XLAT_TABLES 5 1576ec0c65bSUsama Arif #elif !USE_ROMLIB 1586ec0c65bSUsama Arif # define PLAT_ARM_MMAP_ENTRIES 11 1596ec0c65bSUsama Arif # define MAX_XLAT_TABLES 7 1606ec0c65bSUsama Arif #else 1616ec0c65bSUsama Arif # define PLAT_ARM_MMAP_ENTRIES 12 1626ec0c65bSUsama Arif # define MAX_XLAT_TABLES 6 1636ec0c65bSUsama Arif #endif 1646ec0c65bSUsama Arif 1656ec0c65bSUsama Arif /* 1666ec0c65bSUsama Arif * PLAT_ARM_MAX_BL1_RW_SIZE is calculated using the current BL1 RW debug size 1676ec0c65bSUsama Arif * plus a little space for growth. 1686ec0c65bSUsama Arif */ 16925dd2172SMate Toth-Pal #define PLAT_ARM_MAX_BL1_RW_SIZE 0x12000 1706ec0c65bSUsama Arif 1716ec0c65bSUsama Arif /* 1726ec0c65bSUsama Arif * PLAT_ARM_MAX_ROMLIB_RW_SIZE is define to use a full page 1736ec0c65bSUsama Arif */ 1746ec0c65bSUsama Arif 1756ec0c65bSUsama Arif #if USE_ROMLIB 1766ec0c65bSUsama Arif #define PLAT_ARM_MAX_ROMLIB_RW_SIZE 0x1000 1776ec0c65bSUsama Arif #define PLAT_ARM_MAX_ROMLIB_RO_SIZE 0xe000 1786ec0c65bSUsama Arif #else 1796ec0c65bSUsama Arif #define PLAT_ARM_MAX_ROMLIB_RW_SIZE 0 1806ec0c65bSUsama Arif #define PLAT_ARM_MAX_ROMLIB_RO_SIZE 0 1816ec0c65bSUsama Arif #endif 1826ec0c65bSUsama Arif 1836ec0c65bSUsama Arif /* 1846ec0c65bSUsama Arif * PLAT_ARM_MAX_BL2_SIZE is calculated using the current BL2 debug size plus a 185e6c13165SDavid Vincze * little space for growth. Current size is considering that TRUSTED_BOARD_BOOT 186e6c13165SDavid Vincze * and MEASURED_BOOT is enabled. 1876ec0c65bSUsama Arif */ 18819258a58SManish V Badarkhe # define PLAT_ARM_MAX_BL2_SIZE 0x29000 189e6c13165SDavid Vincze 1906ec0c65bSUsama Arif 1916ec0c65bSUsama Arif /* 1926ec0c65bSUsama Arif * Since BL31 NOBITS overlays BL2 and BL1-RW, PLAT_ARM_MAX_BL31_SIZE is 1936ec0c65bSUsama Arif * calculated using the current BL31 PROGBITS debug size plus the sizes of 194e6c13165SDavid Vincze * BL2 and BL1-RW. Current size is considering that TRUSTED_BOARD_BOOT and 195e6c13165SDavid Vincze * MEASURED_BOOT is enabled. 1966ec0c65bSUsama Arif */ 19725dd2172SMate Toth-Pal #define PLAT_ARM_MAX_BL31_SIZE 0x60000 1986ec0c65bSUsama Arif 1996ec0c65bSUsama Arif /* 2006ec0c65bSUsama Arif * Size of cacheable stacks 2016ec0c65bSUsama Arif */ 2026ec0c65bSUsama Arif #if defined(IMAGE_BL1) 2036ec0c65bSUsama Arif # define PLATFORM_STACK_SIZE 0x1000 2046ec0c65bSUsama Arif #elif defined(IMAGE_BL2) 2056ec0c65bSUsama Arif # define PLATFORM_STACK_SIZE 0x1000 2066ec0c65bSUsama Arif #elif defined(IMAGE_BL2U) 2076ec0c65bSUsama Arif # define PLATFORM_STACK_SIZE 0x400 2086ec0c65bSUsama Arif #elif defined(IMAGE_BL31) 2096ec0c65bSUsama Arif # if SPM_MM 2106ec0c65bSUsama Arif # define PLATFORM_STACK_SIZE 0x500 2116ec0c65bSUsama Arif # else 21241d8c6a0STamas Ban # define PLATFORM_STACK_SIZE 0xb00 2136ec0c65bSUsama Arif # endif 2146ec0c65bSUsama Arif #elif defined(IMAGE_BL32) 2156ec0c65bSUsama Arif # define PLATFORM_STACK_SIZE 0x440 2166ec0c65bSUsama Arif #endif 2176ec0c65bSUsama Arif 218445130b1SDavid Vincze /* 219445130b1SDavid Vincze * In the current implementation the RoT Service request that requires the 2207f8589cdSTamas Ban * biggest message buffer is the RSE_DELEGATED_ATTEST_GET_PLATFORM_TOKEN. The 221445130b1SDavid Vincze * maximum required buffer size is calculated based on the platform-specific 222445130b1SDavid Vincze * needs of this request. 223445130b1SDavid Vincze */ 2247f8589cdSTamas Ban #define PLAT_RSE_COMMS_PAYLOAD_MAX_SIZE 0x500 2256ec0c65bSUsama Arif 2266ec0c65bSUsama Arif #define TC_DEVICE_BASE 0x21000000 2276ec0c65bSUsama Arif #define TC_DEVICE_SIZE 0x5f000000 2286ec0c65bSUsama Arif 2291b8ed099SBoyan Karatotev #if defined(TARGET_FLAVOUR_FPGA) 2301b8ed099SBoyan Karatotev #undef V2M_FLASH0_BASE 2311b8ed099SBoyan Karatotev #undef V2M_FLASH0_SIZE 232969b7591SVishnu Satheesh #if TC_FPGA_FIP_IMG_IN_RAM 233969b7591SVishnu Satheesh /* 234969b7591SVishnu Satheesh * Note that this is just used for the FIP, which is not required 235969b7591SVishnu Satheesh * anymore once Linux has commenced booting. So we are safe allowing 236969b7591SVishnu Satheesh * Linux to also make use of this memory and it doesn't need to be 237969b7591SVishnu Satheesh * carved out of the devicetree. 238969b7591SVishnu Satheesh * 239969b7591SVishnu Satheesh * This only needs to match the RAM load address that we give the FIP 240969b7591SVishnu Satheesh * on either the FPGA or FVP command line so there is no need to link 241969b7591SVishnu Satheesh * it to say halfway through the RAM or anything like that. 242969b7591SVishnu Satheesh */ 243969b7591SVishnu Satheesh #define V2M_FLASH0_BASE UL(0xB0000000) 244969b7591SVishnu Satheesh #else 2451b8ed099SBoyan Karatotev #define V2M_FLASH0_BASE UL(0x0C000000) 246969b7591SVishnu Satheesh #endif 2471b8ed099SBoyan Karatotev #define V2M_FLASH0_SIZE UL(0x02000000) 2481b8ed099SBoyan Karatotev #endif 2491b8ed099SBoyan Karatotev 2506ec0c65bSUsama Arif // TC_MAP_DEVICE covers different peripherals 2516ec0c65bSUsama Arif // available to the platform 2526ec0c65bSUsama Arif #define TC_MAP_DEVICE MAP_REGION_FLAT( \ 2536ec0c65bSUsama Arif TC_DEVICE_BASE, \ 2546ec0c65bSUsama Arif TC_DEVICE_SIZE, \ 2556ec0c65bSUsama Arif MT_DEVICE | MT_RW | MT_SECURE) 2566ec0c65bSUsama Arif 2576ec0c65bSUsama Arif 2586ec0c65bSUsama Arif #define TC_FLASH0_RO MAP_REGION_FLAT(V2M_FLASH0_BASE,\ 2596ec0c65bSUsama Arif V2M_FLASH0_SIZE, \ 2606ec0c65bSUsama Arif MT_DEVICE | MT_RO | MT_SECURE) 261034cc808Ssandeep chiluvuru #define PLAT_ARM_NSTIMER_FRAME_ID U(1) 2626ec0c65bSUsama Arif 2638597a8cbSOlivier Deprez #define PLAT_ARM_TRUSTED_ROM_BASE 0x0 2648597a8cbSOlivier Deprez 2658597a8cbSOlivier Deprez /* PLAT_ARM_TRUSTED_ROM_SIZE 512KB minus ROM base. */ 2668597a8cbSOlivier Deprez #define PLAT_ARM_TRUSTED_ROM_SIZE (0x00080000 - PLAT_ARM_TRUSTED_ROM_BASE) 2676ec0c65bSUsama Arif 2686ec0c65bSUsama Arif #define PLAT_ARM_NSRAM_BASE 0x06000000 2691b8ed099SBoyan Karatotev #if TARGET_FLAVOUR_FVP 2706ec0c65bSUsama Arif #define PLAT_ARM_NSRAM_SIZE 0x00080000 /* 512KB */ 2711b8ed099SBoyan Karatotev #else /* TARGET_FLAVOUR_FPGA */ 2721b8ed099SBoyan Karatotev #define PLAT_ARM_NSRAM_SIZE 0x00008000 /* 64KB */ 2731b8ed099SBoyan Karatotev #endif /* TARGET_FLAVOUR_FPGA */ 2746ec0c65bSUsama Arif 275bea55e3cSJagdish Gediya #if TC_FPGA_FS_IMG_IN_RAM 276932e64a1SVishnu Satheesh /* 10GB reserved for system+userdata+vendor images */ 277932e64a1SVishnu Satheesh #define SYSTEM_IMAGE_SIZE 0xC0000000 /* 3GB */ 278932e64a1SVishnu Satheesh #define USERDATA_IMAGE_SIZE 0x140000000 /* 5GB */ 279932e64a1SVishnu Satheesh #define VENDOR_IMAGE_SIZE 0x20000000 /* 512MB */ 280932e64a1SVishnu Satheesh #define RESERVE_IMAGE_SIZE 0x60000000 /* 1.5GB */ 281932e64a1SVishnu Satheesh #define ANDROID_FS_SIZE (SYSTEM_IMAGE_SIZE + \ 282932e64a1SVishnu Satheesh USERDATA_IMAGE_SIZE + \ 283932e64a1SVishnu Satheesh VENDOR_IMAGE_SIZE + RESERVE_IMAGE_SIZE) 284932e64a1SVishnu Satheesh 285932e64a1SVishnu Satheesh #define PLAT_ARM_DRAM2_BASE ULL(0x880000000) + ANDROID_FS_SIZE 286932e64a1SVishnu Satheesh #define PLAT_ARM_DRAM2_SIZE ULL(0x380000000) - ANDROID_FS_SIZE 287932e64a1SVishnu Satheesh #else 28862320dc4SBoyan Karatotev #define PLAT_ARM_DRAM2_BASE ULL(0x880000000) 289bea55e3cSJagdish Gediya #define PLAT_ARM_DRAM2_SIZE ULL(0x180000000) 290bea55e3cSJagdish Gediya #endif /* TC_FPGA_FS_IMG_IN_RAM */ 291932e64a1SVishnu Satheesh 29276b4a6bbSUsama Arif #define PLAT_ARM_DRAM2_END (PLAT_ARM_DRAM2_BASE + PLAT_ARM_DRAM2_SIZE - 1ULL) 2936ec0c65bSUsama Arif 2945ee4deb8SBoyan Karatotev #define TC_NS_MTE_SIZE (256 * SZ_1M) 2955ee4deb8SBoyan Karatotev /* the SCP puts the carveout at the end of DRAM2 */ 2965ee4deb8SBoyan Karatotev #define TC_NS_DRAM2_SIZE (PLAT_ARM_DRAM2_SIZE - TC_NS_MTE_SIZE) 2975ee4deb8SBoyan Karatotev 29828b2d86cSMadhukar Pappireddy #define PLAT_ARM_G1S_IRQ_PROPS(grp) CSS_G1S_INT_PROPS(grp) 29928b2d86cSMadhukar Pappireddy #define PLAT_ARM_G0_IRQ_PROPS(grp) ARM_G0_IRQ_PROPS(grp), \ 30028b2d86cSMadhukar Pappireddy INTR_PROP_DESC(SBSA_SECURE_WDOG_INTID, \ 30128b2d86cSMadhukar Pappireddy GIC_HIGHEST_SEC_PRIORITY, grp, \ 30228b2d86cSMadhukar Pappireddy GIC_INTR_CFG_LEVEL) 3036ec0c65bSUsama Arif 304*22e97b78SYeoreum Yun #define PLAT_ARM_SP_IMAGE_STACK_BASE (PLAT_SPM_BUF_BASE + \ 305*22e97b78SYeoreum Yun PLAT_SPM_BUF_SIZE) 3066ec0c65bSUsama Arif 3070686a01bSArunachalam Ganapathy #define PLAT_ARM_SP_MAX_SIZE U(0x2000000) 3080686a01bSArunachalam Ganapathy 3096ec0c65bSUsama Arif /******************************************************************************* 3106ec0c65bSUsama Arif * Memprotect definitions 3116ec0c65bSUsama Arif ******************************************************************************/ 3126ec0c65bSUsama Arif /* PSCI memory protect definitions: 3136ec0c65bSUsama Arif * This variable is stored in a non-secure flash because some ARM reference 3146ec0c65bSUsama Arif * platforms do not have secure NVRAM. Real systems that provided MEM_PROTECT 3156ec0c65bSUsama Arif * support must use a secure NVRAM to store the PSCI MEM_PROTECT definitions. 3166ec0c65bSUsama Arif */ 3176ec0c65bSUsama Arif #define PLAT_ARM_MEM_PROT_ADDR (V2M_FLASH0_BASE + \ 3186ec0c65bSUsama Arif V2M_FLASH0_SIZE - V2M_FLASH_BLOCK_SIZE) 3196ec0c65bSUsama Arif 3206ec0c65bSUsama Arif /* Secure Watchdog Constants */ 32128b2d86cSMadhukar Pappireddy #define SBSA_SECURE_WDOG_CONTROL_BASE UL(0x2A480000) 32228b2d86cSMadhukar Pappireddy #define SBSA_SECURE_WDOG_REFRESH_BASE UL(0x2A490000) 3236ec0c65bSUsama Arif #define SBSA_SECURE_WDOG_TIMEOUT UL(100) 32428b2d86cSMadhukar Pappireddy #define SBSA_SECURE_WDOG_INTID 86 3256ec0c65bSUsama Arif 3266ec0c65bSUsama Arif #define PLAT_ARM_SCMI_CHANNEL_COUNT 1 3276ec0c65bSUsama Arif 3286f503e0eSTamas Ban /* Index of SDS region used in the communication with SCP */ 3296f503e0eSTamas Ban #define SDS_SCP_AP_REGION_ID U(0) 3307f8589cdSTamas Ban /* Index of SDS region used in the communication with RSE */ 3317f8589cdSTamas Ban #define SDS_RSE_AP_REGION_ID U(1) 3326f503e0eSTamas Ban /* 3337f8589cdSTamas Ban * Memory region for RSE's shared data storage (SDS) 3346f503e0eSTamas Ban * It is placed right after the SCMI payload area. 3356f503e0eSTamas Ban */ 3367f8589cdSTamas Ban #define PLAT_ARM_RSE_AP_SDS_MEM_BASE (CSS_SCMI_PAYLOAD_BASE + \ 3376f503e0eSTamas Ban CSS_SCMI_PAYLOAD_SIZE_MAX) 3386f503e0eSTamas Ban 3396ec0c65bSUsama Arif #define PLAT_ARM_CLUSTER_COUNT U(1) 3406ec0c65bSUsama Arif #define PLAT_MAX_CPUS_PER_CLUSTER U(8) 3416ec0c65bSUsama Arif #define PLAT_MAX_PE_PER_CPU U(1) 3426ec0c65bSUsama Arif 343a02bb36cSBoyan Karatotev #define PLATFORM_CORE_COUNT (PLAT_MAX_CPUS_PER_CLUSTER * PLAT_ARM_CLUSTER_COUNT) 344a02bb36cSBoyan Karatotev 3456299c3a0SDavid Vincze /* Message Handling Unit (MHU) base addresses */ 34662320dc4SBoyan Karatotev #define PLAT_CSS_MHU_BASE UL(0x46000000) 3476ec0c65bSUsama Arif #define PLAT_MHUV2_BASE PLAT_CSS_MHU_BASE 3486ec0c65bSUsama Arif 3495ab7a2f2SJackson Cooper-Driver /* AP<->RSS MHUs */ 350f036ddafSManish V Badarkhe #if TARGET_PLATFORM == 3 3515ab7a2f2SJackson Cooper-Driver #define PLAT_RSE_AP_SND_MHU_BASE UL(0x49000000) 3525ab7a2f2SJackson Cooper-Driver #define PLAT_RSE_AP_RCV_MHU_BASE UL(0x49100000) 35336ffe3e1SLeo Yan #elif TARGET_PLATFORM == 4 35436ffe3e1SLeo Yan #define PLAT_RSE_AP_SND_MHU_BASE UL(0x49000000) 35536ffe3e1SLeo Yan #define PLAT_RSE_AP_RCV_MHU_BASE UL(0x49010000) 3565ab7a2f2SJackson Cooper-Driver #endif 3576299c3a0SDavid Vincze 3586ec0c65bSUsama Arif #define CSS_SYSTEM_PWR_DMN_LVL ARM_PWR_LVL2 3596ec0c65bSUsama Arif #define PLAT_MAX_PWR_LVL ARM_PWR_LVL1 3606ec0c65bSUsama Arif 3616ec0c65bSUsama Arif /* 3626ec0c65bSUsama Arif * Physical and virtual address space limits for MMU in AARCH64 3636ec0c65bSUsama Arif */ 3646ec0c65bSUsama Arif #define PLAT_PHY_ADDR_SPACE_SIZE (1ULL << 36) 3656ec0c65bSUsama Arif #define PLAT_VIRT_ADDR_SPACE_SIZE (1ULL << 36) 3666ec0c65bSUsama Arif 3676ec0c65bSUsama Arif /* GIC related constants */ 3686ec0c65bSUsama Arif #define PLAT_ARM_GICD_BASE UL(0x30000000) 3696ec0c65bSUsama Arif #define PLAT_ARM_GICC_BASE UL(0x2C000000) 3706ec0c65bSUsama Arif #define PLAT_ARM_GICR_BASE UL(0x30080000) 3716ec0c65bSUsama Arif 3726ec0c65bSUsama Arif /* 3736ec0c65bSUsama Arif * PLAT_CSS_MAX_SCP_BL2_SIZE is calculated using the current 3746ec0c65bSUsama Arif * SCP_BL2 size plus a little space for growth. 3756ec0c65bSUsama Arif */ 3763755e82cSTintu Thomas #define PLAT_CSS_MAX_SCP_BL2_SIZE 0x30000 3776ec0c65bSUsama Arif 3786ec0c65bSUsama Arif /* 3796ec0c65bSUsama Arif * PLAT_CSS_MAX_SCP_BL2U_SIZE is calculated using the current 3806ec0c65bSUsama Arif * SCP_BL2U size plus a little space for growth. 3816ec0c65bSUsama Arif */ 3823755e82cSTintu Thomas #define PLAT_CSS_MAX_SCP_BL2U_SIZE 0x30000 3836ec0c65bSUsama Arif 3846ec0c65bSUsama Arif /* virtual address used by dynamic mem_protect for chunk_base */ 3856ec0c65bSUsama Arif #define PLAT_ARM_MEM_PROTEC_VA_FRAME UL(0xc0000000) 3866ec0c65bSUsama Arif 387d07b8aacSTintu Thomas #if ARM_GPT_SUPPORT 388d07b8aacSTintu Thomas /* 389d07b8aacSTintu Thomas * This overrides the default PLAT_ARM_FIP_OFFSET_IN_GPT in board_css_def.h. 390d07b8aacSTintu Thomas * Offset of the FIP in the GPT image. BL1 component uses this option 391d07b8aacSTintu Thomas * as it does not load the partition table to get the FIP base 392d07b8aacSTintu Thomas * address. At sector 48 for TC to align with ATU page size boundaries (8KiB) 393d07b8aacSTintu Thomas * (i.e. after reserved sectors 0-47). 394d07b8aacSTintu Thomas * Offset = 48 * 512 = 0x6000 395d07b8aacSTintu Thomas */ 396d07b8aacSTintu Thomas #undef PLAT_ARM_FIP_OFFSET_IN_GPT 397d07b8aacSTintu Thomas #define PLAT_ARM_FIP_OFFSET_IN_GPT 0x6000 398d07b8aacSTintu Thomas #endif /* ARM_GPT_SUPPORT */ 399d07b8aacSTintu Thomas 40077241043Sannsai01 /* UART related constants */ 40177241043Sannsai01 4021b8ed099SBoyan Karatotev #define TC_UART0 0x2a400000 4031b8ed099SBoyan Karatotev #define TC_UART1 0x2a410000 4041b8ed099SBoyan Karatotev 4051b8ed099SBoyan Karatotev /* 4061b8ed099SBoyan Karatotev * TODO: if any more undefs are needed, it's better to consider dropping the 4071b8ed099SBoyan Karatotev * board_css_def.h include above 4081b8ed099SBoyan Karatotev */ 40977241043Sannsai01 #undef PLAT_ARM_BOOT_UART_BASE 41077241043Sannsai01 #undef PLAT_ARM_RUN_UART_BASE 41177241043Sannsai01 41277241043Sannsai01 #undef PLAT_ARM_CRASH_UART_BASE 4131b8ed099SBoyan Karatotev #undef PLAT_ARM_BOOT_UART_CLK_IN_HZ 4141b8ed099SBoyan Karatotev #undef PLAT_ARM_RUN_UART_CLK_IN_HZ 4151b8ed099SBoyan Karatotev 41654289385SJagdish Gediya #undef ARM_CONSOLE_BAUDRATE 41754289385SJagdish Gediya #define ARM_CONSOLE_BAUDRATE 38400 41854289385SJagdish Gediya 419f036ddafSManish V Badarkhe #if TARGET_PLATFORM == 3 4201b8ed099SBoyan Karatotev #define TC_UARTCLK 3750000 42184ca47a8SJagdish Gediya #elif TARGET_PLATFORM == 4 42284ca47a8SJagdish Gediya #define TC_UARTCLK 4000000 423f036ddafSManish V Badarkhe #endif /* TARGET_PLATFORM == 3 */ 42484ca47a8SJagdish Gediya 42525264e29SJagdish Gediya 42625264e29SJagdish Gediya #if TARGET_FLAVOUR_FVP 42725264e29SJagdish Gediya #define PLAT_ARM_BOOT_UART_BASE TC_UART1 42825264e29SJagdish Gediya #else /* TARGET_FLAVOUR_FPGA */ 42925264e29SJagdish Gediya #define PLAT_ARM_BOOT_UART_BASE TC_UART0 4301b8ed099SBoyan Karatotev #endif /* TARGET_FLAVOUR_FPGA */ 4311b8ed099SBoyan Karatotev 4321b8ed099SBoyan Karatotev #define PLAT_ARM_RUN_UART_BASE TC_UART0 43377241043Sannsai01 #define PLAT_ARM_CRASH_UART_BASE PLAT_ARM_RUN_UART_BASE 43477241043Sannsai01 4351b8ed099SBoyan Karatotev #define PLAT_ARM_BOOT_UART_CLK_IN_HZ TC_UARTCLK 4361b8ed099SBoyan Karatotev #define PLAT_ARM_RUN_UART_CLK_IN_HZ TC_UARTCLK 4371b8ed099SBoyan Karatotev 438adc91a34SJagdish Gediya #define NCI_BASE_ADDR UL(0x4F000000) 4398f61c204SJagdish Gediya #if (TARGET_PLATFORM == 3) && defined(TARGET_FLAVOUR_FPGA) 440adc91a34SJagdish Gediya #define MCN_ADDRESS_SPACE_SIZE 0x00120000 441adc91a34SJagdish Gediya #else 442adc91a34SJagdish Gediya #define MCN_ADDRESS_SPACE_SIZE 0x00130000 4438f61c204SJagdish Gediya #endif /* (TARGET_PLATFORM == 3) && defined(TARGET_FLAVOUR_FPGA) */ 4448f61c204SJagdish Gediya #if TARGET_PLATFORM == 3 445adc91a34SJagdish Gediya #define MCN_OFFSET_IN_NCI 0x00C90000 4468f61c204SJagdish Gediya #else /* TARGET_PLATFORM == 4 */ 4478f61c204SJagdish Gediya #ifdef TARGET_FLAVOUR_FPGA 4488f61c204SJagdish Gediya #define MCN_OFFSET_IN_NCI 0x00420000 4498f61c204SJagdish Gediya #else 4508f61c204SJagdish Gediya #define MCN_OFFSET_IN_NCI 0x00D80000 4518f61c204SJagdish Gediya #endif /* TARGET_FLAVOUR_FPGA */ 4528f61c204SJagdish Gediya #endif /* TARGET_PLATFORM == 3 */ 4538f61c204SJagdish Gediya #define MCN_BASE_ADDR(n) (NCI_BASE_ADDR + MCN_OFFSET_IN_NCI + \ 4548f61c204SJagdish Gediya ((n) * MCN_ADDRESS_SPACE_SIZE)) 4551401a42cSJagdish Gediya #define MCN_PMU_OFFSET 0x000C4000 456adc91a34SJagdish Gediya #define MCN_MICROARCH_OFFSET 0x000E4000 4578f61c204SJagdish Gediya #define MCN_MICROARCH_BASE_ADDR(n) (MCN_BASE_ADDR(n) + \ 4588f61c204SJagdish Gediya MCN_MICROARCH_OFFSET) 459adc91a34SJagdish Gediya #define MCN_SCR_OFFSET 0x4 460adc91a34SJagdish Gediya #define MCN_SCR_PMU_BIT 10 4618f61c204SJagdish Gediya #if TARGET_PLATFORM == 3 462adc91a34SJagdish Gediya #define MCN_INSTANCES 4 4638f61c204SJagdish Gediya #else /* TARGET_PLATFORM == 4 */ 4648f61c204SJagdish Gediya #define MCN_INSTANCES 8 4658f61c204SJagdish Gediya #endif /* TARGET_PLATFORM == 3 */ 4668f61c204SJagdish Gediya #define MCN_PMU_ADDR(n) (MCN_BASE_ADDR(n) + \ 4671401a42cSJagdish Gediya MCN_PMU_OFFSET) 468bb04d023SJagdish Gediya #define MCN_MPAM_NS_OFFSET 0x000D0000 4698f61c204SJagdish Gediya #define MCN_MPAM_NS_BASE_ADDR(n) (MCN_BASE_ADDR(n) + MCN_MPAM_NS_OFFSET) 470bb04d023SJagdish Gediya #define MCN_MPAM_S_OFFSET 0x000D4000 4718f61c204SJagdish Gediya #define MCN_MPAM_S_BASE_ADDR(n) (MCN_BASE_ADDR(n) + MCN_MPAM_S_OFFSET) 472bb04d023SJagdish Gediya #define MPAM_SLCCFG_CTL_OFFSET 0x00003018 473bb04d023SJagdish Gediya #define SLC_RDALLOCMODE_SHIFT 8 474bb04d023SJagdish Gediya #define SLC_RDALLOCMODE_MASK (3 << SLC_RDALLOCMODE_SHIFT) 475bb04d023SJagdish Gediya #define SLC_WRALLOCMODE_SHIFT 12 476bb04d023SJagdish Gediya #define SLC_WRALLOCMODE_MASK (3 << SLC_WRALLOCMODE_SHIFT) 477bb04d023SJagdish Gediya 478bb04d023SJagdish Gediya #define SLC_DONT_ALLOC 0 479bb04d023SJagdish Gediya #define SLC_ALWAYS_ALLOC 1 480bb04d023SJagdish Gediya #define SLC_ALLOC_BUS_SIGNAL_ATTR 2 481e1b76cb0SJagdish Gediya 482e1b76cb0SJagdish Gediya #define MCN_CONFIG_OFFSET 0x204 4838f61c204SJagdish Gediya #define MCN_CONFIG_ADDR(n) (MCN_BASE_ADDR(n) + MCN_CONFIG_OFFSET) 484e1b76cb0SJagdish Gediya #define MCN_CONFIG_SLC_PRESENT_BIT 3 485e1b76cb0SJagdish Gediya 486e1b76cb0SJagdish Gediya /* 487e1b76cb0SJagdish Gediya * TC3 CPUs have the same definitions for: 488e1b76cb0SJagdish Gediya * CORTEX_{A520|A725|X925}_CPUECTLR_EL1 489e1b76cb0SJagdish Gediya * CORTEX_{A520|A725|X925}_CPUECTLR_EL1_EXTLLC_BIT 490e1b76cb0SJagdish Gediya * Define the common macros for easier using. 491e1b76cb0SJagdish Gediya */ 492e1b76cb0SJagdish Gediya #define CPUECTLR_EL1 CORTEX_A520_CPUECTLR_EL1 493e1b76cb0SJagdish Gediya #define CPUECTLR_EL1_EXTLLC_BIT CORTEX_A520_CPUECTLR_EL1_EXTLLC_BIT 494adc91a34SJagdish Gediya 495de8b9cedSJagdish Gediya #define CPUACTLR_CLUSTERPMUEN (ULL(1) << 12) 496de8b9cedSJagdish Gediya 4976ec0c65bSUsama Arif #endif /* PLATFORM_DEF_H */ 498