1*91f16700Schasinglulu /* 2*91f16700Schasinglulu * Copyright (c) 2014-2023, ARM Limited and Contributors. All rights reserved. 3*91f16700Schasinglulu * 4*91f16700Schasinglulu * SPDX-License-Identifier: BSD-3-Clause 5*91f16700Schasinglulu */ 6*91f16700Schasinglulu 7*91f16700Schasinglulu #ifndef PLATFORM_DEF_H 8*91f16700Schasinglulu #define PLATFORM_DEF_H 9*91f16700Schasinglulu 10*91f16700Schasinglulu #include <drivers/arm/tzc400.h> 11*91f16700Schasinglulu #if TRUSTED_BOARD_BOOT 12*91f16700Schasinglulu #include MBEDTLS_CONFIG_FILE 13*91f16700Schasinglulu #endif 14*91f16700Schasinglulu #include <plat/arm/board/common/board_css_def.h> 15*91f16700Schasinglulu #include <plat/arm/board/common/v2m_def.h> 16*91f16700Schasinglulu #include <plat/arm/common/arm_def.h> 17*91f16700Schasinglulu #include <plat/arm/css/common/css_def.h> 18*91f16700Schasinglulu #include <plat/arm/soc/common/soc_css_def.h> 19*91f16700Schasinglulu #include <plat/common/common_def.h> 20*91f16700Schasinglulu 21*91f16700Schasinglulu #include "../juno_def.h" 22*91f16700Schasinglulu #ifdef JUNO_ETHOSN_TZMP1 23*91f16700Schasinglulu #include "../juno_ethosn_tzmp1_def.h" 24*91f16700Schasinglulu #endif 25*91f16700Schasinglulu 26*91f16700Schasinglulu /* Required platform porting definitions */ 27*91f16700Schasinglulu /* Juno supports system power domain */ 28*91f16700Schasinglulu #define PLAT_MAX_PWR_LVL ARM_PWR_LVL2 29*91f16700Schasinglulu #define PLAT_NUM_PWR_DOMAINS (ARM_SYSTEM_COUNT + \ 30*91f16700Schasinglulu JUNO_CLUSTER_COUNT + \ 31*91f16700Schasinglulu PLATFORM_CORE_COUNT) 32*91f16700Schasinglulu #define PLATFORM_CORE_COUNT (JUNO_CLUSTER0_CORE_COUNT + \ 33*91f16700Schasinglulu JUNO_CLUSTER1_CORE_COUNT) 34*91f16700Schasinglulu 35*91f16700Schasinglulu /* 36*91f16700Schasinglulu * Other platform porting definitions are provided by included headers 37*91f16700Schasinglulu */ 38*91f16700Schasinglulu 39*91f16700Schasinglulu /* 40*91f16700Schasinglulu * Required ARM standard platform porting definitions 41*91f16700Schasinglulu */ 42*91f16700Schasinglulu #define PLAT_ARM_CLUSTER_COUNT JUNO_CLUSTER_COUNT 43*91f16700Schasinglulu 44*91f16700Schasinglulu #define PLAT_ARM_TRUSTED_SRAM_SIZE UL(0x00040000) /* 256 KB */ 45*91f16700Schasinglulu 46*91f16700Schasinglulu /* Use the bypass address */ 47*91f16700Schasinglulu #define PLAT_ARM_TRUSTED_ROM_BASE (V2M_FLASH0_BASE + \ 48*91f16700Schasinglulu BL1_ROM_BYPASS_OFFSET) 49*91f16700Schasinglulu 50*91f16700Schasinglulu #define NSRAM_BASE UL(0x2e000000) 51*91f16700Schasinglulu #define NSRAM_SIZE UL(0x00008000) /* 32KB */ 52*91f16700Schasinglulu 53*91f16700Schasinglulu #define PLAT_ARM_DRAM2_BASE ULL(0x880000000) 54*91f16700Schasinglulu #define PLAT_ARM_DRAM2_SIZE ULL(0x180000000) 55*91f16700Schasinglulu 56*91f16700Schasinglulu /* Range of kernel DTB load address */ 57*91f16700Schasinglulu #define JUNO_DTB_DRAM_MAP_START ULL(0x82000000) 58*91f16700Schasinglulu #define JUNO_DTB_DRAM_MAP_SIZE ULL(0x00008000) /* 32KB */ 59*91f16700Schasinglulu 60*91f16700Schasinglulu #define ARM_DTB_DRAM_NS MAP_REGION_FLAT( \ 61*91f16700Schasinglulu JUNO_DTB_DRAM_MAP_START, \ 62*91f16700Schasinglulu JUNO_DTB_DRAM_MAP_SIZE, \ 63*91f16700Schasinglulu MT_MEMORY | MT_RO | MT_NS) 64*91f16700Schasinglulu 65*91f16700Schasinglulu #ifdef JUNO_ETHOSN_TZMP1 66*91f16700Schasinglulu #define JUNO_ETHOSN_PROT_FW_RO MAP_REGION_FLAT( \ 67*91f16700Schasinglulu JUNO_ETHOSN_FW_TZC_PROT_DRAM2_BASE, \ 68*91f16700Schasinglulu JUNO_ETHOSN_FW_TZC_PROT_DRAM2_SIZE, \ 69*91f16700Schasinglulu MT_RO_DATA | MT_SECURE) 70*91f16700Schasinglulu 71*91f16700Schasinglulu #define JUNO_ETHOSN_PROT_FW_RW MAP_REGION_FLAT( \ 72*91f16700Schasinglulu JUNO_ETHOSN_FW_TZC_PROT_DRAM2_BASE, \ 73*91f16700Schasinglulu JUNO_ETHOSN_FW_TZC_PROT_DRAM2_SIZE, \ 74*91f16700Schasinglulu MT_MEMORY | MT_RW | MT_SECURE) 75*91f16700Schasinglulu #endif 76*91f16700Schasinglulu 77*91f16700Schasinglulu /* virtual address used by dynamic mem_protect for chunk_base */ 78*91f16700Schasinglulu #define PLAT_ARM_MEM_PROTEC_VA_FRAME UL(0xc0000000) 79*91f16700Schasinglulu 80*91f16700Schasinglulu /* 81*91f16700Schasinglulu * PLAT_ARM_MAX_ROMLIB_RW_SIZE is define to use a full page 82*91f16700Schasinglulu */ 83*91f16700Schasinglulu 84*91f16700Schasinglulu #if USE_ROMLIB 85*91f16700Schasinglulu #define PLAT_ARM_MAX_ROMLIB_RW_SIZE UL(0x1000) 86*91f16700Schasinglulu #define PLAT_ARM_MAX_ROMLIB_RO_SIZE UL(0xe000) 87*91f16700Schasinglulu #define JUNO_BL2_ROMLIB_OPTIMIZATION UL(0x8000) 88*91f16700Schasinglulu #else 89*91f16700Schasinglulu #define PLAT_ARM_MAX_ROMLIB_RW_SIZE UL(0) 90*91f16700Schasinglulu #define PLAT_ARM_MAX_ROMLIB_RO_SIZE UL(0) 91*91f16700Schasinglulu #define JUNO_BL2_ROMLIB_OPTIMIZATION UL(0) 92*91f16700Schasinglulu #endif 93*91f16700Schasinglulu 94*91f16700Schasinglulu /* 95*91f16700Schasinglulu * Actual ROM size on Juno is 64 KB, but TBB currently requires at least 80 KB 96*91f16700Schasinglulu * in debug mode. We can test TBB on Juno bypassing the ROM and using 128 KB of 97*91f16700Schasinglulu * flash 98*91f16700Schasinglulu */ 99*91f16700Schasinglulu 100*91f16700Schasinglulu #if TRUSTED_BOARD_BOOT 101*91f16700Schasinglulu #define PLAT_ARM_TRUSTED_ROM_SIZE UL(0x00020000) 102*91f16700Schasinglulu #else 103*91f16700Schasinglulu #define PLAT_ARM_TRUSTED_ROM_SIZE UL(0x00010000) 104*91f16700Schasinglulu #endif /* TRUSTED_BOARD_BOOT */ 105*91f16700Schasinglulu 106*91f16700Schasinglulu /* 107*91f16700Schasinglulu * PLAT_ARM_MMAP_ENTRIES depends on the number of entries in the 108*91f16700Schasinglulu * plat_arm_mmap array defined for each BL stage. 109*91f16700Schasinglulu */ 110*91f16700Schasinglulu #ifdef IMAGE_BL1 111*91f16700Schasinglulu # define PLAT_ARM_MMAP_ENTRIES 7 112*91f16700Schasinglulu # define MAX_XLAT_TABLES 4 113*91f16700Schasinglulu #endif 114*91f16700Schasinglulu 115*91f16700Schasinglulu #ifdef IMAGE_BL2 116*91f16700Schasinglulu #ifdef SPD_opteed 117*91f16700Schasinglulu # define PLAT_ARM_MMAP_ENTRIES 13 118*91f16700Schasinglulu # define MAX_XLAT_TABLES 5 119*91f16700Schasinglulu #else 120*91f16700Schasinglulu # define PLAT_ARM_MMAP_ENTRIES 11 121*91f16700Schasinglulu # define MAX_XLAT_TABLES 5 122*91f16700Schasinglulu #endif 123*91f16700Schasinglulu #endif 124*91f16700Schasinglulu 125*91f16700Schasinglulu #ifdef IMAGE_BL2U 126*91f16700Schasinglulu # define PLAT_ARM_MMAP_ENTRIES 5 127*91f16700Schasinglulu # define MAX_XLAT_TABLES 3 128*91f16700Schasinglulu #endif 129*91f16700Schasinglulu 130*91f16700Schasinglulu #ifdef IMAGE_BL31 131*91f16700Schasinglulu # define PLAT_ARM_MMAP_ENTRIES 8 132*91f16700Schasinglulu # define MAX_XLAT_TABLES 6 133*91f16700Schasinglulu #endif 134*91f16700Schasinglulu 135*91f16700Schasinglulu #ifdef IMAGE_BL32 136*91f16700Schasinglulu # define PLAT_ARM_MMAP_ENTRIES 6 137*91f16700Schasinglulu # define MAX_XLAT_TABLES 4 138*91f16700Schasinglulu #endif 139*91f16700Schasinglulu 140*91f16700Schasinglulu /* 141*91f16700Schasinglulu * PLAT_ARM_MAX_BL1_RW_SIZE is calculated using the current BL1 RW debug size 142*91f16700Schasinglulu * plus a little space for growth. 143*91f16700Schasinglulu */ 144*91f16700Schasinglulu #if TRUSTED_BOARD_BOOT 145*91f16700Schasinglulu # define PLAT_ARM_MAX_BL1_RW_SIZE UL(0xB000) 146*91f16700Schasinglulu #else 147*91f16700Schasinglulu # define PLAT_ARM_MAX_BL1_RW_SIZE UL(0x6000) 148*91f16700Schasinglulu #endif 149*91f16700Schasinglulu 150*91f16700Schasinglulu /* 151*91f16700Schasinglulu * PLAT_ARM_MAX_BL2_SIZE is calculated using the current BL2 debug size plus a 152*91f16700Schasinglulu * little space for growth. 153*91f16700Schasinglulu */ 154*91f16700Schasinglulu #if TRUSTED_BOARD_BOOT 155*91f16700Schasinglulu #if TF_MBEDTLS_KEY_ALG_ID == TF_MBEDTLS_RSA_AND_ECDSA 156*91f16700Schasinglulu # define PLAT_ARM_MAX_BL2_SIZE (UL(0x1F000) - JUNO_BL2_ROMLIB_OPTIMIZATION) 157*91f16700Schasinglulu #elif TF_MBEDTLS_KEY_ALG_ID == TF_MBEDTLS_ECDSA 158*91f16700Schasinglulu # define PLAT_ARM_MAX_BL2_SIZE (UL(0x1D000) - JUNO_BL2_ROMLIB_OPTIMIZATION) 159*91f16700Schasinglulu #else 160*91f16700Schasinglulu # define PLAT_ARM_MAX_BL2_SIZE (UL(0x1D000) - JUNO_BL2_ROMLIB_OPTIMIZATION) 161*91f16700Schasinglulu #endif 162*91f16700Schasinglulu #else 163*91f16700Schasinglulu # define PLAT_ARM_MAX_BL2_SIZE (UL(0x13000) - JUNO_BL2_ROMLIB_OPTIMIZATION) 164*91f16700Schasinglulu #endif 165*91f16700Schasinglulu 166*91f16700Schasinglulu /* 167*91f16700Schasinglulu * Since BL31 NOBITS overlays BL2 and BL1-RW, PLAT_ARM_MAX_BL31_SIZE is 168*91f16700Schasinglulu * calculated using the current BL31 PROGBITS debug size plus the sizes of 169*91f16700Schasinglulu * BL2 and BL1-RW. SCP_BL2 image is loaded into the space BL31 -> BL2_BASE. 170*91f16700Schasinglulu * Hence the BL31 PROGBITS size should be >= PLAT_CSS_MAX_SCP_BL2_SIZE. 171*91f16700Schasinglulu */ 172*91f16700Schasinglulu #define PLAT_ARM_MAX_BL31_SIZE UL(0x3D000) 173*91f16700Schasinglulu 174*91f16700Schasinglulu #if JUNO_AARCH32_EL3_RUNTIME 175*91f16700Schasinglulu /* 176*91f16700Schasinglulu * Since BL32 NOBITS overlays BL2 and BL1-RW, PLAT_ARM_MAX_BL32_SIZE is 177*91f16700Schasinglulu * calculated using the current BL32 PROGBITS debug size plus the sizes of 178*91f16700Schasinglulu * BL2 and BL1-RW. SCP_BL2 image is loaded into the space BL32 -> BL2_BASE. 179*91f16700Schasinglulu * Hence the BL32 PROGBITS size should be >= PLAT_CSS_MAX_SCP_BL2_SIZE. 180*91f16700Schasinglulu */ 181*91f16700Schasinglulu #define PLAT_ARM_MAX_BL32_SIZE UL(0x3D000) 182*91f16700Schasinglulu #endif 183*91f16700Schasinglulu 184*91f16700Schasinglulu /* 185*91f16700Schasinglulu * Size of cacheable stacks 186*91f16700Schasinglulu */ 187*91f16700Schasinglulu #if defined(IMAGE_BL1) 188*91f16700Schasinglulu # if TRUSTED_BOARD_BOOT 189*91f16700Schasinglulu # define PLATFORM_STACK_SIZE UL(0x1000) 190*91f16700Schasinglulu # else 191*91f16700Schasinglulu # define PLATFORM_STACK_SIZE UL(0x440) 192*91f16700Schasinglulu # endif 193*91f16700Schasinglulu #elif defined(IMAGE_BL2) 194*91f16700Schasinglulu # if TRUSTED_BOARD_BOOT 195*91f16700Schasinglulu # define PLATFORM_STACK_SIZE UL(0x1000) 196*91f16700Schasinglulu # else 197*91f16700Schasinglulu # define PLATFORM_STACK_SIZE UL(0x400) 198*91f16700Schasinglulu # endif 199*91f16700Schasinglulu #elif defined(IMAGE_BL2U) 200*91f16700Schasinglulu # define PLATFORM_STACK_SIZE UL(0x400) 201*91f16700Schasinglulu #elif defined(IMAGE_BL31) 202*91f16700Schasinglulu # if PLAT_XLAT_TABLES_DYNAMIC 203*91f16700Schasinglulu # define PLATFORM_STACK_SIZE UL(0x800) 204*91f16700Schasinglulu # else 205*91f16700Schasinglulu # define PLATFORM_STACK_SIZE UL(0x400) 206*91f16700Schasinglulu # endif 207*91f16700Schasinglulu #elif defined(IMAGE_BL32) 208*91f16700Schasinglulu # define PLATFORM_STACK_SIZE UL(0x440) 209*91f16700Schasinglulu #endif 210*91f16700Schasinglulu 211*91f16700Schasinglulu /* CCI related constants */ 212*91f16700Schasinglulu #define PLAT_ARM_CCI_BASE UL(0x2c090000) 213*91f16700Schasinglulu #define PLAT_ARM_CCI_CLUSTER0_SL_IFACE_IX 4 214*91f16700Schasinglulu #define PLAT_ARM_CCI_CLUSTER1_SL_IFACE_IX 3 215*91f16700Schasinglulu 216*91f16700Schasinglulu /* System timer related constants */ 217*91f16700Schasinglulu #define PLAT_ARM_NSTIMER_FRAME_ID U(1) 218*91f16700Schasinglulu 219*91f16700Schasinglulu /* TZC related constants */ 220*91f16700Schasinglulu #define PLAT_ARM_TZC_BASE UL(0x2a4a0000) 221*91f16700Schasinglulu #define PLAT_ARM_TZC_NS_DEV_ACCESS ( \ 222*91f16700Schasinglulu TZC_REGION_ACCESS_RDWR(TZC400_NSAID_CCI400) | \ 223*91f16700Schasinglulu TZC_REGION_ACCESS_RDWR(TZC400_NSAID_PCIE) | \ 224*91f16700Schasinglulu TZC_REGION_ACCESS_RDWR(TZC400_NSAID_HDLCD0) | \ 225*91f16700Schasinglulu TZC_REGION_ACCESS_RDWR(TZC400_NSAID_HDLCD1) | \ 226*91f16700Schasinglulu TZC_REGION_ACCESS_RDWR(TZC400_NSAID_USB) | \ 227*91f16700Schasinglulu TZC_REGION_ACCESS_RDWR(TZC400_NSAID_DMA330) | \ 228*91f16700Schasinglulu TZC_REGION_ACCESS_RDWR(TZC400_NSAID_THINLINKS) | \ 229*91f16700Schasinglulu TZC_REGION_ACCESS_RDWR(TZC400_NSAID_AP) | \ 230*91f16700Schasinglulu TZC_REGION_ACCESS_RDWR(TZC400_NSAID_GPU) | \ 231*91f16700Schasinglulu TZC_REGION_ACCESS_RDWR(TZC400_NSAID_CORESIGHT)) 232*91f16700Schasinglulu 233*91f16700Schasinglulu /* TZC related constants */ 234*91f16700Schasinglulu #define PLAT_ARM_TZC_FILTERS TZC_400_REGION_ATTR_FILTER_BIT_ALL 235*91f16700Schasinglulu 236*91f16700Schasinglulu /* 237*91f16700Schasinglulu * Required ARM CSS based platform porting definitions 238*91f16700Schasinglulu */ 239*91f16700Schasinglulu 240*91f16700Schasinglulu /* GIC related constants (no GICR in GIC-400) */ 241*91f16700Schasinglulu #define PLAT_ARM_GICD_BASE UL(0x2c010000) 242*91f16700Schasinglulu #define PLAT_ARM_GICC_BASE UL(0x2c02f000) 243*91f16700Schasinglulu #define PLAT_ARM_GICH_BASE UL(0x2c04f000) 244*91f16700Schasinglulu #define PLAT_ARM_GICV_BASE UL(0x2c06f000) 245*91f16700Schasinglulu 246*91f16700Schasinglulu /* MHU related constants */ 247*91f16700Schasinglulu #define PLAT_CSS_MHU_BASE UL(0x2b1f0000) 248*91f16700Schasinglulu 249*91f16700Schasinglulu /* 250*91f16700Schasinglulu * Base address of the first memory region used for communication between AP 251*91f16700Schasinglulu * and SCP. Used by the BOM and SCPI protocols. 252*91f16700Schasinglulu */ 253*91f16700Schasinglulu #if !CSS_USE_SCMI_SDS_DRIVER 254*91f16700Schasinglulu /* 255*91f16700Schasinglulu * Note that this is located at the same address as SCP_BOOT_CFG_ADDR, which 256*91f16700Schasinglulu * means the SCP/AP configuration data gets overwritten when the AP initiates 257*91f16700Schasinglulu * communication with the SCP. The configuration data is expected to be a 258*91f16700Schasinglulu * 32-bit word on all CSS platforms. On Juno, part of this configuration is 259*91f16700Schasinglulu * which CPU is the primary, according to the shift and mask definitions below. 260*91f16700Schasinglulu */ 261*91f16700Schasinglulu #define PLAT_CSS_SCP_COM_SHARED_MEM_BASE (ARM_TRUSTED_SRAM_BASE + UL(0x80)) 262*91f16700Schasinglulu #define PLAT_CSS_PRIMARY_CPU_SHIFT 8 263*91f16700Schasinglulu #define PLAT_CSS_PRIMARY_CPU_BIT_WIDTH 4 264*91f16700Schasinglulu #endif 265*91f16700Schasinglulu 266*91f16700Schasinglulu /* 267*91f16700Schasinglulu * SCP_BL2 uses up whatever remaining space is available as it is loaded before 268*91f16700Schasinglulu * anything else in this memory region and is handed over to the SCP before 269*91f16700Schasinglulu * BL31 is loaded over the top. 270*91f16700Schasinglulu */ 271*91f16700Schasinglulu #define PLAT_CSS_MAX_SCP_BL2_SIZE \ 272*91f16700Schasinglulu ((SCP_BL2_LIMIT - ARM_FW_CONFIG_LIMIT) & ~PAGE_SIZE_MASK) 273*91f16700Schasinglulu 274*91f16700Schasinglulu #define PLAT_CSS_MAX_SCP_BL2U_SIZE PLAT_CSS_MAX_SCP_BL2_SIZE 275*91f16700Schasinglulu 276*91f16700Schasinglulu #define PLAT_ARM_G1S_IRQ_PROPS(grp) \ 277*91f16700Schasinglulu CSS_G1S_IRQ_PROPS(grp), \ 278*91f16700Schasinglulu ARM_G1S_IRQ_PROPS(grp), \ 279*91f16700Schasinglulu INTR_PROP_DESC(JUNO_IRQ_DMA_SMMU, GIC_HIGHEST_SEC_PRIORITY, \ 280*91f16700Schasinglulu (grp), GIC_INTR_CFG_LEVEL), \ 281*91f16700Schasinglulu INTR_PROP_DESC(JUNO_IRQ_HDLCD0_SMMU, GIC_HIGHEST_SEC_PRIORITY, \ 282*91f16700Schasinglulu (grp), GIC_INTR_CFG_LEVEL), \ 283*91f16700Schasinglulu INTR_PROP_DESC(JUNO_IRQ_HDLCD1_SMMU, GIC_HIGHEST_SEC_PRIORITY, \ 284*91f16700Schasinglulu (grp), GIC_INTR_CFG_LEVEL), \ 285*91f16700Schasinglulu INTR_PROP_DESC(JUNO_IRQ_USB_SMMU, GIC_HIGHEST_SEC_PRIORITY, \ 286*91f16700Schasinglulu (grp), GIC_INTR_CFG_LEVEL), \ 287*91f16700Schasinglulu INTR_PROP_DESC(JUNO_IRQ_THIN_LINKS_SMMU, GIC_HIGHEST_SEC_PRIORITY, \ 288*91f16700Schasinglulu (grp), GIC_INTR_CFG_LEVEL), \ 289*91f16700Schasinglulu INTR_PROP_DESC(JUNO_IRQ_SEC_I2C, GIC_HIGHEST_SEC_PRIORITY, \ 290*91f16700Schasinglulu (grp), GIC_INTR_CFG_LEVEL), \ 291*91f16700Schasinglulu INTR_PROP_DESC(JUNO_IRQ_GPU_SMMU_1, GIC_HIGHEST_SEC_PRIORITY, \ 292*91f16700Schasinglulu (grp), GIC_INTR_CFG_LEVEL), \ 293*91f16700Schasinglulu INTR_PROP_DESC(JUNO_IRQ_ETR_SMMU, GIC_HIGHEST_SEC_PRIORITY, \ 294*91f16700Schasinglulu (grp), GIC_INTR_CFG_LEVEL) 295*91f16700Schasinglulu 296*91f16700Schasinglulu #define PLAT_ARM_G0_IRQ_PROPS(grp) ARM_G0_IRQ_PROPS(grp) 297*91f16700Schasinglulu 298*91f16700Schasinglulu /* 299*91f16700Schasinglulu * Required ARM CSS SoC based platform porting definitions 300*91f16700Schasinglulu */ 301*91f16700Schasinglulu 302*91f16700Schasinglulu /* CSS SoC NIC-400 Global Programmers View (GPV) */ 303*91f16700Schasinglulu #define PLAT_SOC_CSS_NIC400_BASE UL(0x2a000000) 304*91f16700Schasinglulu 305*91f16700Schasinglulu #define PLAT_ARM_PRIVATE_SDEI_EVENTS ARM_SDEI_PRIVATE_EVENTS 306*91f16700Schasinglulu #define PLAT_ARM_SHARED_SDEI_EVENTS ARM_SDEI_SHARED_EVENTS 307*91f16700Schasinglulu 308*91f16700Schasinglulu /* System power domain level */ 309*91f16700Schasinglulu #define CSS_SYSTEM_PWR_DMN_LVL ARM_PWR_LVL2 310*91f16700Schasinglulu 311*91f16700Schasinglulu /* 312*91f16700Schasinglulu * Physical and virtual address space limits for MMU in AARCH64 & AARCH32 modes 313*91f16700Schasinglulu */ 314*91f16700Schasinglulu #ifdef __aarch64__ 315*91f16700Schasinglulu #define PLAT_PHY_ADDR_SPACE_SIZE (1ULL << 36) 316*91f16700Schasinglulu #define PLAT_VIRT_ADDR_SPACE_SIZE (1ULL << 36) 317*91f16700Schasinglulu #else 318*91f16700Schasinglulu #define PLAT_PHY_ADDR_SPACE_SIZE (1ULL << 32) 319*91f16700Schasinglulu #define PLAT_VIRT_ADDR_SPACE_SIZE (1ULL << 32) 320*91f16700Schasinglulu #endif 321*91f16700Schasinglulu 322*91f16700Schasinglulu /* Number of SCMI channels on the platform */ 323*91f16700Schasinglulu #define PLAT_ARM_SCMI_CHANNEL_COUNT U(1) 324*91f16700Schasinglulu 325*91f16700Schasinglulu /* Protected NSAIDs and memory regions for the Arm(R) Ethos(TM)-N NPU driver */ 326*91f16700Schasinglulu #ifdef JUNO_ETHOSN_TZMP1 327*91f16700Schasinglulu #define ETHOSN_NPU_PROT_FW_NSAID JUNO_ETHOSN_TZC400_NSAID_FW_PROT 328*91f16700Schasinglulu #define ETHOSN_NPU_PROT_RW_DATA_NSAID JUNO_ETHOSN_TZC400_NSAID_DATA_RW_PROT 329*91f16700Schasinglulu #define ETHOSN_NPU_PROT_RO_DATA_NSAID JUNO_ETHOSN_TZC400_NSAID_DATA_RO_PROT 330*91f16700Schasinglulu 331*91f16700Schasinglulu #define ETHOSN_NPU_NS_RW_DATA_NSAID JUNO_ETHOSN_TZC400_NSAID_DATA_RW_NS 332*91f16700Schasinglulu #define ETHOSN_NPU_NS_RO_DATA_NSAID JUNO_ETHOSN_TZC400_NSAID_DATA_RO_NS 333*91f16700Schasinglulu 334*91f16700Schasinglulu #define ETHOSN_NPU_FW_IMAGE_BASE JUNO_ETHOSN_FW_TZC_PROT_DRAM2_BASE 335*91f16700Schasinglulu #define ETHOSN_NPU_FW_IMAGE_LIMIT \ 336*91f16700Schasinglulu (JUNO_ETHOSN_FW_TZC_PROT_DRAM2_BASE + JUNO_ETHOSN_FW_TZC_PROT_DRAM2_SIZE) 337*91f16700Schasinglulu #endif 338*91f16700Schasinglulu 339*91f16700Schasinglulu #endif /* PLATFORM_DEF_H */ 340