185135283SDan Handley /* 2dd566a9eSJayanth Dodderi Chidanand * Copyright (c) 2014-2025, Arm Limited and Contributors. All rights reserved. 385135283SDan Handley * 482cb2c1aSdp-arm * SPDX-License-Identifier: BSD-3-Clause 585135283SDan Handley */ 685135283SDan Handley 7f21c6321SAntonio Nino Diaz #ifndef PLATFORM_DEF_H 8f21c6321SAntonio Nino Diaz #define PLATFORM_DEF_H 985135283SDan Handley 1009d40e0eSAntonio Nino Diaz #include <drivers/arm/tzc400.h> 1109d40e0eSAntonio Nino Diaz #if TRUSTED_BOARD_BOOT 12def5571dSManish V Badarkhe #include MBEDTLS_CONFIG_FILE 1309d40e0eSAntonio Nino Diaz #endif 14bd9344f6SAntonio Nino Diaz #include <plat/arm/board/common/board_css_def.h> 15bd9344f6SAntonio Nino Diaz #include <plat/arm/board/common/v2m_def.h> 16bd9344f6SAntonio Nino Diaz #include <plat/arm/common/arm_def.h> 17e9a457f4SYeoreum Yun #include <plat/arm/common/arm_spm_def.h> 18bd9344f6SAntonio Nino Diaz #include <plat/arm/css/common/css_def.h> 19bd9344f6SAntonio Nino Diaz #include <plat/arm/soc/common/soc_css_def.h> 2009d40e0eSAntonio Nino Diaz #include <plat/common/common_def.h> 2109d40e0eSAntonio Nino Diaz 2285135283SDan Handley #include "../juno_def.h" 2370a296eeSRajasekaran Kalidoss #ifdef JUNO_ETHOSN_TZMP1 2470a296eeSRajasekaran Kalidoss #include "../juno_ethosn_tzmp1_def.h" 2570a296eeSRajasekaran Kalidoss #endif 2685135283SDan Handley 270108047aSSoby Mathew /* Required platform porting definitions */ 285f3a6030SSoby Mathew /* Juno supports system power domain */ 295f3a6030SSoby Mathew #define PLAT_MAX_PWR_LVL ARM_PWR_LVL2 305f3a6030SSoby Mathew #define PLAT_NUM_PWR_DOMAINS (ARM_SYSTEM_COUNT + \ 310108047aSSoby Mathew JUNO_CLUSTER_COUNT + \ 325f3a6030SSoby Mathew PLATFORM_CORE_COUNT) 330108047aSSoby Mathew #define PLATFORM_CORE_COUNT (JUNO_CLUSTER0_CORE_COUNT + \ 340108047aSSoby Mathew JUNO_CLUSTER1_CORE_COUNT) 350108047aSSoby Mathew 3685135283SDan Handley /* 375f3a6030SSoby Mathew * Other platform porting definitions are provided by included headers 3885135283SDan Handley */ 3985135283SDan Handley 40fad88444SYeoreum Yun #if SPMC_AT_EL3 41fad88444SYeoreum Yun /* Define memory configuration for device tree files. */ 42fad88444SYeoreum Yun #define PLAT_ARM_HW_CONFIG_SIZE SZ_2K 43fad88444SYeoreum Yun 44fad88444SYeoreum Yun /* Define maximum size of sp manifest file. */ 45fad88444SYeoreum Yun #define PLAT_ARM_SPMC_SP_MANIFEST_SIZE SZ_2K 46fad88444SYeoreum Yun #else 47df960bccSHarrison Mutai /* Define memory configuration for device tree files. */ 48df960bccSHarrison Mutai #define PLAT_ARM_HW_CONFIG_SIZE U(0x8000) 49df960bccSHarrison Mutai 50fad88444SYeoreum Yun /* Define maximum size of sp manifest file. */ 51fad88444SYeoreum Yun #define PLAT_ARM_SPMC_SP_MANIFEST_SIZE U(0x0) 52fad88444SYeoreum Yun #endif 53fad88444SYeoreum Yun 5485135283SDan Handley /* 5585135283SDan Handley * Required ARM standard platform porting definitions 5685135283SDan Handley */ 570108047aSSoby Mathew #define PLAT_ARM_CLUSTER_COUNT JUNO_CLUSTER_COUNT 5885135283SDan Handley 59f21c6321SAntonio Nino Diaz #define PLAT_ARM_TRUSTED_SRAM_SIZE UL(0x00040000) /* 256 KB */ 600f58d4f2SAntonio Nino Diaz 6185135283SDan Handley /* Use the bypass address */ 62afa5cfeaSSathees Balya #define PLAT_ARM_TRUSTED_ROM_BASE (V2M_FLASH0_BASE + \ 63afa5cfeaSSathees Balya BL1_ROM_BYPASS_OFFSET) 6485135283SDan Handley 65f21c6321SAntonio Nino Diaz #define NSRAM_BASE UL(0x2e000000) 66f21c6321SAntonio Nino Diaz #define NSRAM_SIZE UL(0x00008000) /* 32KB */ 67d7ecac73SChris Kay 6886f297a3SSuyash Pathak #define PLAT_ARM_DRAM2_BASE ULL(0x880000000) 6986f297a3SSuyash Pathak #define PLAT_ARM_DRAM2_SIZE ULL(0x180000000) 7086f297a3SSuyash Pathak 71707f0710SZelalem Aweke /* Range of kernel DTB load address */ 72707f0710SZelalem Aweke #define JUNO_DTB_DRAM_MAP_START ULL(0x82000000) 73707f0710SZelalem Aweke #define JUNO_DTB_DRAM_MAP_SIZE ULL(0x00008000) /* 32KB */ 745d5fb10fSMikael Olsson 755d5fb10fSMikael Olsson #define ARM_DTB_DRAM_NS MAP_REGION_FLAT( \ 76707f0710SZelalem Aweke JUNO_DTB_DRAM_MAP_START, \ 77707f0710SZelalem Aweke JUNO_DTB_DRAM_MAP_SIZE, \ 785d5fb10fSMikael Olsson MT_MEMORY | MT_RO | MT_NS) 795d5fb10fSMikael Olsson 8033bcaed1SRob Hughes #ifdef JUNO_ETHOSN_TZMP1 81313b776fSMikael Olsson #define JUNO_ETHOSN_PROT_FW_RO MAP_REGION_FLAT( \ 82313b776fSMikael Olsson JUNO_ETHOSN_FW_TZC_PROT_DRAM2_BASE, \ 83313b776fSMikael Olsson JUNO_ETHOSN_FW_TZC_PROT_DRAM2_SIZE, \ 84313b776fSMikael Olsson MT_RO_DATA | MT_SECURE) 85313b776fSMikael Olsson 8633bcaed1SRob Hughes #define JUNO_ETHOSN_PROT_FW_RW MAP_REGION_FLAT( \ 8733bcaed1SRob Hughes JUNO_ETHOSN_FW_TZC_PROT_DRAM2_BASE, \ 8833bcaed1SRob Hughes JUNO_ETHOSN_FW_TZC_PROT_DRAM2_SIZE, \ 8933bcaed1SRob Hughes MT_MEMORY | MT_RW | MT_SECURE) 9033bcaed1SRob Hughes #endif 9133bcaed1SRob Hughes 92638b034cSRoberto Vargas /* virtual address used by dynamic mem_protect for chunk_base */ 9389509904SSathees Balya #define PLAT_ARM_MEM_PROTEC_VA_FRAME UL(0xc0000000) 94638b034cSRoberto Vargas 9585135283SDan Handley /* 96afa5cfeaSSathees Balya * PLAT_ARM_MAX_ROMLIB_RW_SIZE is define to use a full page 97afa5cfeaSSathees Balya */ 98afa5cfeaSSathees Balya 99afa5cfeaSSathees Balya #if USE_ROMLIB 100afa5cfeaSSathees Balya #define PLAT_ARM_MAX_ROMLIB_RW_SIZE UL(0x1000) 101afa5cfeaSSathees Balya #define PLAT_ARM_MAX_ROMLIB_RO_SIZE UL(0xe000) 102e7b39089SLouis Mayencourt #define JUNO_BL2_ROMLIB_OPTIMIZATION UL(0x8000) 103afa5cfeaSSathees Balya #else 104afa5cfeaSSathees Balya #define PLAT_ARM_MAX_ROMLIB_RW_SIZE UL(0) 105afa5cfeaSSathees Balya #define PLAT_ARM_MAX_ROMLIB_RO_SIZE UL(0) 106e7b39089SLouis Mayencourt #define JUNO_BL2_ROMLIB_OPTIMIZATION UL(0) 107afa5cfeaSSathees Balya #endif 108afa5cfeaSSathees Balya 109afa5cfeaSSathees Balya /* 11085135283SDan Handley * Actual ROM size on Juno is 64 KB, but TBB currently requires at least 80 KB 11185135283SDan Handley * in debug mode. We can test TBB on Juno bypassing the ROM and using 128 KB of 11285135283SDan Handley * flash 11385135283SDan Handley */ 1141eb735d7SRoberto Vargas 11585135283SDan Handley #if TRUSTED_BOARD_BOOT 116f21c6321SAntonio Nino Diaz #define PLAT_ARM_TRUSTED_ROM_SIZE UL(0x00020000) 11785135283SDan Handley #else 118f21c6321SAntonio Nino Diaz #define PLAT_ARM_TRUSTED_ROM_SIZE UL(0x00010000) 11985135283SDan Handley #endif /* TRUSTED_BOARD_BOOT */ 12085135283SDan Handley 121c64a0448SVikram Kanigiri /* 122c64a0448SVikram Kanigiri * PLAT_ARM_MMAP_ENTRIES depends on the number of entries in the 123c64a0448SVikram Kanigiri * plat_arm_mmap array defined for each BL stage. 124c64a0448SVikram Kanigiri */ 1253d8256b2SMasahiro Yamada #ifdef IMAGE_BL1 126c64a0448SVikram Kanigiri # define PLAT_ARM_MMAP_ENTRIES 7 127c64a0448SVikram Kanigiri # define MAX_XLAT_TABLES 4 128c64a0448SVikram Kanigiri #endif 129c64a0448SVikram Kanigiri 1303d8256b2SMasahiro Yamada #ifdef IMAGE_BL2 13154661cd2SSummer Qin #ifdef SPD_opteed 13233bcaed1SRob Hughes # define PLAT_ARM_MMAP_ENTRIES 13 133f145403cSRoberto Vargas # define MAX_XLAT_TABLES 5 13454661cd2SSummer Qin #else 13533bcaed1SRob Hughes # define PLAT_ARM_MMAP_ENTRIES 11 13633bcaed1SRob Hughes # define MAX_XLAT_TABLES 5 137c64a0448SVikram Kanigiri #endif 13854661cd2SSummer Qin #endif 139c64a0448SVikram Kanigiri 1403d8256b2SMasahiro Yamada #ifdef IMAGE_BL2U 141d323af9eSDaniel Boulby # define PLAT_ARM_MMAP_ENTRIES 5 142c64a0448SVikram Kanigiri # define MAX_XLAT_TABLES 3 143c64a0448SVikram Kanigiri #endif 144c64a0448SVikram Kanigiri 1453d8256b2SMasahiro Yamada #ifdef IMAGE_BL31 146e9a457f4SYeoreum Yun # if SPMC_AT_EL3 1471c199c54SYeoreum Yun # define PLAT_ARM_MMAP_ENTRIES 11 148*c76e8284SYeoreum Yun # define MAX_XLAT_TABLES 10 149e9a457f4SYeoreum Yun # define PLAT_SP_IMAGE_MMAP_REGIONS 30 150*c76e8284SYeoreum Yun # define PLAT_SP_IMAGE_MAX_XLAT_TABLES 12 151e9a457f4SYeoreum Yun # else 152313b776fSMikael Olsson # define PLAT_ARM_MMAP_ENTRIES 8 153313b776fSMikael Olsson # define MAX_XLAT_TABLES 6 154c64a0448SVikram Kanigiri # endif 155e9a457f4SYeoreum Yun #endif 156c64a0448SVikram Kanigiri 1573d8256b2SMasahiro Yamada #ifdef IMAGE_BL32 158638b034cSRoberto Vargas # define PLAT_ARM_MMAP_ENTRIES 6 1596f249345SYatharth Kochar # define MAX_XLAT_TABLES 4 160c64a0448SVikram Kanigiri #endif 161c64a0448SVikram Kanigiri 162e9a457f4SYeoreum Yun #if SPMC_AT_EL3 163e9a457f4SYeoreum Yun /* 164e9a457f4SYeoreum Yun * Number of Secure Partitions supported. 165e9a457f4SYeoreum Yun * SPMC at EL3, uses this count to configure the maximum number of supported 166e9a457f4SYeoreum Yun * secure partitions. 167e9a457f4SYeoreum Yun */ 168e9a457f4SYeoreum Yun #define SECURE_PARTITION_COUNT 1 169e9a457f4SYeoreum Yun 170e9a457f4SYeoreum Yun /* 171e9a457f4SYeoreum Yun * Number of Normal World Partitions supported. 172e9a457f4SYeoreum Yun * SPMC at EL3, uses this count to configure the maximum number of supported 173e9a457f4SYeoreum Yun * NWd partitions. 174e9a457f4SYeoreum Yun */ 175e9a457f4SYeoreum Yun #define NS_PARTITION_COUNT 1 176e9a457f4SYeoreum Yun 177e9a457f4SYeoreum Yun /* 178e9a457f4SYeoreum Yun * Number of Logical Partitions supported. 179e9a457f4SYeoreum Yun * SPMC at EL3, uses this count to configure the maximum number of supported 180e9a457f4SYeoreum Yun * logical partitions. 181e9a457f4SYeoreum Yun */ 182e9a457f4SYeoreum Yun #define MAX_EL3_LP_DESCS_COUNT 1 183e9a457f4SYeoreum Yun 184e9a457f4SYeoreum Yun #endif /* SPMC_AT_EL3 */ 185e9a457f4SYeoreum Yun 186fad88444SYeoreum Yun #if TRANSFER_LIST 187fad88444SYeoreum Yun #define PLAT_ARM_FW_HANDOFF_SIZE SZ_8K 188fad88444SYeoreum Yun 189eee89638SYeoreum Yun #define FW_NS_HANDOFF_BASE (PLAT_ARM_NS_IMAGE_BASE - PLAT_ARM_FW_HANDOFF_SIZE) 190fad88444SYeoreum Yun #define PLAT_ARM_EL3_FW_HANDOFF_BASE ARM_BL_RAM_BASE 191fad88444SYeoreum Yun #define PLAT_ARM_EL3_FW_HANDOFF_LIMIT PLAT_ARM_EL3_FW_HANDOFF_BASE + PLAT_ARM_FW_HANDOFF_SIZE 192fad88444SYeoreum Yun 193fad88444SYeoreum Yun #define JUNO_MAP_FW_NS_HANDOFF \ 194fad88444SYeoreum Yun MAP_REGION_FLAT(FW_NS_HANDOFF_BASE, \ 195fad88444SYeoreum Yun PLAT_ARM_FW_HANDOFF_SIZE, \ 196fad88444SYeoreum Yun MT_MEMORY | MT_RW | MT_NS) 197fad88444SYeoreum Yun 198fad88444SYeoreum Yun #define JUNO_MAP_EL3_FW_HANDOFF \ 199fad88444SYeoreum Yun MAP_REGION_FLAT(PLAT_ARM_EL3_FW_HANDOFF_BASE, \ 200fad88444SYeoreum Yun PLAT_ARM_FW_HANDOFF_SIZE, \ 201fad88444SYeoreum Yun MT_MEMORY | MT_RW | EL3_PAS) 202fad88444SYeoreum Yun #else 203fad88444SYeoreum Yun #define PLAT_ARM_FW_HANDOFF_SIZE U(0) 204fad88444SYeoreum Yun #endif 205fad88444SYeoreum Yun 2060289970dSAntonio Nino Diaz /* 2070289970dSAntonio Nino Diaz * PLAT_ARM_MAX_BL1_RW_SIZE is calculated using the current BL1 RW debug size 2080289970dSAntonio Nino Diaz * plus a little space for growth. 2090289970dSAntonio Nino Diaz */ 2101c199c54SYeoreum Yun #if TRUSTED_BOARD_BOOT || MEASURED_BOOT 211f21c6321SAntonio Nino Diaz # define PLAT_ARM_MAX_BL1_RW_SIZE UL(0xB000) 2120289970dSAntonio Nino Diaz #else 213f21c6321SAntonio Nino Diaz # define PLAT_ARM_MAX_BL1_RW_SIZE UL(0x6000) 2140289970dSAntonio Nino Diaz #endif 2150289970dSAntonio Nino Diaz 2160289970dSAntonio Nino Diaz /* 2170289970dSAntonio Nino Diaz * PLAT_ARM_MAX_BL2_SIZE is calculated using the current BL2 debug size plus a 2180289970dSAntonio Nino Diaz * little space for growth. 2190289970dSAntonio Nino Diaz */ 2200289970dSAntonio Nino Diaz #if TRUSTED_BOARD_BOOT 2219b1eae96SQixiang Xu #if TF_MBEDTLS_KEY_ALG_ID == TF_MBEDTLS_RSA_AND_ECDSA 222dd566a9eSJayanth Dodderi Chidanand # define PLAT_ARM_MAX_BL2_SIZE (UL(0x20000) - JUNO_BL2_ROMLIB_OPTIMIZATION) 22383a2376eSAmit Daniel Kachhap #elif TF_MBEDTLS_KEY_ALG_ID == TF_MBEDTLS_ECDSA 224e7b39089SLouis Mayencourt # define PLAT_ARM_MAX_BL2_SIZE (UL(0x1D000) - JUNO_BL2_ROMLIB_OPTIMIZATION) 2259b1eae96SQixiang Xu #else 226e7b39089SLouis Mayencourt # define PLAT_ARM_MAX_BL2_SIZE (UL(0x1D000) - JUNO_BL2_ROMLIB_OPTIMIZATION) 2279b1eae96SQixiang Xu #endif 2280289970dSAntonio Nino Diaz #else 229ce4ca1a8SManish V Badarkhe # define PLAT_ARM_MAX_BL2_SIZE (UL(0x13000) - JUNO_BL2_ROMLIB_OPTIMIZATION) 2300289970dSAntonio Nino Diaz #endif 2310289970dSAntonio Nino Diaz 2320289970dSAntonio Nino Diaz /* 233c099cd39SSoby Mathew * Since BL31 NOBITS overlays BL2 and BL1-RW, PLAT_ARM_MAX_BL31_SIZE is 234c099cd39SSoby Mathew * calculated using the current BL31 PROGBITS debug size plus the sizes of 235c099cd39SSoby Mathew * BL2 and BL1-RW. SCP_BL2 image is loaded into the space BL31 -> BL2_BASE. 236c099cd39SSoby Mathew * Hence the BL31 PROGBITS size should be >= PLAT_CSS_MAX_SCP_BL2_SIZE. 2370289970dSAntonio Nino Diaz */ 238fad88444SYeoreum Yun #if TRANSFER_LIST 239fad88444SYeoreum Yun #define PLAT_ARM_MAX_BL31_SIZE (ARM_BL_RAM_SIZE - PLAT_ARM_FW_HANDOFF_SIZE) 240fad88444SYeoreum Yun #else 241ce4ca1a8SManish V Badarkhe #define PLAT_ARM_MAX_BL31_SIZE UL(0x3D000) 242fad88444SYeoreum Yun #endif 2430289970dSAntonio Nino Diaz 2445744e874SSoby Mathew #if JUNO_AARCH32_EL3_RUNTIME 2455744e874SSoby Mathew /* 246c099cd39SSoby Mathew * Since BL32 NOBITS overlays BL2 and BL1-RW, PLAT_ARM_MAX_BL32_SIZE is 247c099cd39SSoby Mathew * calculated using the current BL32 PROGBITS debug size plus the sizes of 248c099cd39SSoby Mathew * BL2 and BL1-RW. SCP_BL2 image is loaded into the space BL32 -> BL2_BASE. 249c099cd39SSoby Mathew * Hence the BL32 PROGBITS size should be >= PLAT_CSS_MAX_SCP_BL2_SIZE. 2505744e874SSoby Mathew */ 251ce4ca1a8SManish V Badarkhe #define PLAT_ARM_MAX_BL32_SIZE UL(0x3D000) 2525744e874SSoby Mathew #endif 2535744e874SSoby Mathew 254bea363adSSoby Mathew /* 2550f58d4f2SAntonio Nino Diaz * Size of cacheable stacks 2560f58d4f2SAntonio Nino Diaz */ 2570f58d4f2SAntonio Nino Diaz #if defined(IMAGE_BL1) 2580f58d4f2SAntonio Nino Diaz # if TRUSTED_BOARD_BOOT 259f21c6321SAntonio Nino Diaz # define PLATFORM_STACK_SIZE UL(0x1000) 2600f58d4f2SAntonio Nino Diaz # else 261f21c6321SAntonio Nino Diaz # define PLATFORM_STACK_SIZE UL(0x440) 2620f58d4f2SAntonio Nino Diaz # endif 2630f58d4f2SAntonio Nino Diaz #elif defined(IMAGE_BL2) 2640f58d4f2SAntonio Nino Diaz # if TRUSTED_BOARD_BOOT 265f21c6321SAntonio Nino Diaz # define PLATFORM_STACK_SIZE UL(0x1000) 2660f58d4f2SAntonio Nino Diaz # else 267f21c6321SAntonio Nino Diaz # define PLATFORM_STACK_SIZE UL(0x400) 2680f58d4f2SAntonio Nino Diaz # endif 2690f58d4f2SAntonio Nino Diaz #elif defined(IMAGE_BL2U) 270f21c6321SAntonio Nino Diaz # define PLATFORM_STACK_SIZE UL(0x400) 2710f58d4f2SAntonio Nino Diaz #elif defined(IMAGE_BL31) 2720f58d4f2SAntonio Nino Diaz # if PLAT_XLAT_TABLES_DYNAMIC 273f21c6321SAntonio Nino Diaz # define PLATFORM_STACK_SIZE UL(0x800) 2740f58d4f2SAntonio Nino Diaz # else 275f21c6321SAntonio Nino Diaz # define PLATFORM_STACK_SIZE UL(0x400) 2760f58d4f2SAntonio Nino Diaz # endif 2770f58d4f2SAntonio Nino Diaz #elif defined(IMAGE_BL32) 278f21c6321SAntonio Nino Diaz # define PLATFORM_STACK_SIZE UL(0x440) 2790f58d4f2SAntonio Nino Diaz #endif 2800f58d4f2SAntonio Nino Diaz 281b53b69caSYeoreum Yun #define PLAT_ARM_SP_IMAGE_STACK_BASE (PLAT_SPM_BUF_BASE + \ 282b53b69caSYeoreum Yun PLAT_SPM_BUF_SIZE) 283e9a457f4SYeoreum Yun 28485135283SDan Handley /* CCI related constants */ 285f21c6321SAntonio Nino Diaz #define PLAT_ARM_CCI_BASE UL(0x2c090000) 28685135283SDan Handley #define PLAT_ARM_CCI_CLUSTER0_SL_IFACE_IX 4 28785135283SDan Handley #define PLAT_ARM_CCI_CLUSTER1_SL_IFACE_IX 3 28885135283SDan Handley 289ecf70f7bSVikram Kanigiri /* System timer related constants */ 290583e0791SAntonio Nino Diaz #define PLAT_ARM_NSTIMER_FRAME_ID U(1) 291ecf70f7bSVikram Kanigiri 29285135283SDan Handley /* TZC related constants */ 293f21c6321SAntonio Nino Diaz #define PLAT_ARM_TZC_BASE UL(0x2a4a0000) 29485135283SDan Handley #define PLAT_ARM_TZC_NS_DEV_ACCESS ( \ 29585135283SDan Handley TZC_REGION_ACCESS_RDWR(TZC400_NSAID_CCI400) | \ 29685135283SDan Handley TZC_REGION_ACCESS_RDWR(TZC400_NSAID_PCIE) | \ 29785135283SDan Handley TZC_REGION_ACCESS_RDWR(TZC400_NSAID_HDLCD0) | \ 29885135283SDan Handley TZC_REGION_ACCESS_RDWR(TZC400_NSAID_HDLCD1) | \ 29985135283SDan Handley TZC_REGION_ACCESS_RDWR(TZC400_NSAID_USB) | \ 30085135283SDan Handley TZC_REGION_ACCESS_RDWR(TZC400_NSAID_DMA330) | \ 30185135283SDan Handley TZC_REGION_ACCESS_RDWR(TZC400_NSAID_THINLINKS) | \ 30285135283SDan Handley TZC_REGION_ACCESS_RDWR(TZC400_NSAID_AP) | \ 30385135283SDan Handley TZC_REGION_ACCESS_RDWR(TZC400_NSAID_GPU) | \ 30485135283SDan Handley TZC_REGION_ACCESS_RDWR(TZC400_NSAID_CORESIGHT)) 30585135283SDan Handley 30696318f82SSuyash Pathak /* TZC related constants */ 30796318f82SSuyash Pathak #define PLAT_ARM_TZC_FILTERS TZC_400_REGION_ATTR_FILTER_BIT_ALL 30896318f82SSuyash Pathak 30985135283SDan Handley /* 31085135283SDan Handley * Required ARM CSS based platform porting definitions 31185135283SDan Handley */ 31285135283SDan Handley 31385135283SDan Handley /* GIC related constants (no GICR in GIC-400) */ 314f21c6321SAntonio Nino Diaz #define PLAT_ARM_GICD_BASE UL(0x2c010000) 315f21c6321SAntonio Nino Diaz #define PLAT_ARM_GICC_BASE UL(0x2c02f000) 316f21c6321SAntonio Nino Diaz #define PLAT_ARM_GICH_BASE UL(0x2c04f000) 317f21c6321SAntonio Nino Diaz #define PLAT_ARM_GICV_BASE UL(0x2c06f000) 31885135283SDan Handley 319ecf70f7bSVikram Kanigiri /* MHU related constants */ 320f21c6321SAntonio Nino Diaz #define PLAT_CSS_MHU_BASE UL(0x2b1f0000) 321ecf70f7bSVikram Kanigiri 322fdcd5413STamas Ban #if CSS_USE_SCMI_SDS_DRIVER 323fdcd5413STamas Ban /* Index of SDS region used in the communication between AP and SCP */ 324fdcd5413STamas Ban #define SDS_SCP_AP_REGION_ID U(0) 325fdcd5413STamas Ban #else 32627573c59SAchin Gupta /* 3278e083ecdSVikram Kanigiri * Base address of the first memory region used for communication between AP 3288e083ecdSVikram Kanigiri * and SCP. Used by the BOM and SCPI protocols. 329fdcd5413STamas Ban * 3308e083ecdSVikram Kanigiri * Note that this is located at the same address as SCP_BOOT_CFG_ADDR, which 3318e083ecdSVikram Kanigiri * means the SCP/AP configuration data gets overwritten when the AP initiates 3328e083ecdSVikram Kanigiri * communication with the SCP. The configuration data is expected to be a 3338e083ecdSVikram Kanigiri * 32-bit word on all CSS platforms. On Juno, part of this configuration is 3348e083ecdSVikram Kanigiri * which CPU is the primary, according to the shift and mask definitions below. 3358e083ecdSVikram Kanigiri */ 336f21c6321SAntonio Nino Diaz #define PLAT_CSS_SCP_COM_SHARED_MEM_BASE (ARM_TRUSTED_SRAM_BASE + UL(0x80)) 3378e083ecdSVikram Kanigiri #define PLAT_CSS_PRIMARY_CPU_SHIFT 8 3388e083ecdSVikram Kanigiri #define PLAT_CSS_PRIMARY_CPU_BIT_WIDTH 4 339fdcd5413STamas Ban #endif /* CSS_USE_SCMI_SDS_DRIVER */ 3408e083ecdSVikram Kanigiri 3418e083ecdSVikram Kanigiri /* 342ddc93cbaSChris Kay * SCP_BL2 uses up whatever remaining space is available as it is loaded before 343ddc93cbaSChris Kay * anything else in this memory region and is handed over to the SCP before 344ddc93cbaSChris Kay * BL31 is loaded over the top. 345a8aa7fecSYatharth Kochar */ 346fad88444SYeoreum Yun #if TRANSFER_LIST 347fad88444SYeoreum Yun #define ARM_FW_CONFIG_LIMIT ((ARM_BL_RAM_BASE + PAGE_SIZE) \ 348fad88444SYeoreum Yun + (PAGE_SIZE / 2U)) 349fad88444SYeoreum Yun #endif 350fad88444SYeoreum Yun 351868a7d1eSChris Kay #define PLAT_CSS_MAX_SCP_BL2_SIZE \ 35204e06973SManish V Badarkhe ((SCP_BL2_LIMIT - ARM_FW_CONFIG_LIMIT) & ~PAGE_SIZE_MASK) 353868a7d1eSChris Kay 354ddc93cbaSChris Kay #define PLAT_CSS_MAX_SCP_BL2U_SIZE PLAT_CSS_MAX_SCP_BL2_SIZE 35553d703a5SYatharth Kochar 356b2c363b1SJeenu Viswambharan #define PLAT_ARM_G1S_IRQ_PROPS(grp) \ 357b2c363b1SJeenu Viswambharan CSS_G1S_IRQ_PROPS(grp), \ 358b2c363b1SJeenu Viswambharan ARM_G1S_IRQ_PROPS(grp), \ 359b2c363b1SJeenu Viswambharan INTR_PROP_DESC(JUNO_IRQ_DMA_SMMU, GIC_HIGHEST_SEC_PRIORITY, \ 36089509904SSathees Balya (grp), GIC_INTR_CFG_LEVEL), \ 361b2c363b1SJeenu Viswambharan INTR_PROP_DESC(JUNO_IRQ_HDLCD0_SMMU, GIC_HIGHEST_SEC_PRIORITY, \ 36289509904SSathees Balya (grp), GIC_INTR_CFG_LEVEL), \ 363b2c363b1SJeenu Viswambharan INTR_PROP_DESC(JUNO_IRQ_HDLCD1_SMMU, GIC_HIGHEST_SEC_PRIORITY, \ 36489509904SSathees Balya (grp), GIC_INTR_CFG_LEVEL), \ 365b2c363b1SJeenu Viswambharan INTR_PROP_DESC(JUNO_IRQ_USB_SMMU, GIC_HIGHEST_SEC_PRIORITY, \ 36689509904SSathees Balya (grp), GIC_INTR_CFG_LEVEL), \ 367b2c363b1SJeenu Viswambharan INTR_PROP_DESC(JUNO_IRQ_THIN_LINKS_SMMU, GIC_HIGHEST_SEC_PRIORITY, \ 36889509904SSathees Balya (grp), GIC_INTR_CFG_LEVEL), \ 369b2c363b1SJeenu Viswambharan INTR_PROP_DESC(JUNO_IRQ_SEC_I2C, GIC_HIGHEST_SEC_PRIORITY, \ 37089509904SSathees Balya (grp), GIC_INTR_CFG_LEVEL), \ 371b2c363b1SJeenu Viswambharan INTR_PROP_DESC(JUNO_IRQ_GPU_SMMU_1, GIC_HIGHEST_SEC_PRIORITY, \ 37289509904SSathees Balya (grp), GIC_INTR_CFG_LEVEL), \ 373b2c363b1SJeenu Viswambharan INTR_PROP_DESC(JUNO_IRQ_ETR_SMMU, GIC_HIGHEST_SEC_PRIORITY, \ 37489509904SSathees Balya (grp), GIC_INTR_CFG_LEVEL) 37585135283SDan Handley 376b2c363b1SJeenu Viswambharan #define PLAT_ARM_G0_IRQ_PROPS(grp) ARM_G0_IRQ_PROPS(grp) 37727573c59SAchin Gupta 37885135283SDan Handley /* 37985135283SDan Handley * Required ARM CSS SoC based platform porting definitions 38085135283SDan Handley */ 38185135283SDan Handley 38285135283SDan Handley /* CSS SoC NIC-400 Global Programmers View (GPV) */ 383f21c6321SAntonio Nino Diaz #define PLAT_SOC_CSS_NIC400_BASE UL(0x2a000000) 38485135283SDan Handley 3857bdf0c1fSJeenu Viswambharan #define PLAT_ARM_PRIVATE_SDEI_EVENTS ARM_SDEI_PRIVATE_EVENTS 3867bdf0c1fSJeenu Viswambharan #define PLAT_ARM_SHARED_SDEI_EVENTS ARM_SDEI_SHARED_EVENTS 3877bdf0c1fSJeenu Viswambharan 388eff2f444SChandni Cherukuri /* System power domain level */ 389eff2f444SChandni Cherukuri #define CSS_SYSTEM_PWR_DMN_LVL ARM_PWR_LVL2 390eff2f444SChandni Cherukuri 391de8bc83eSManoj Kumar /* 392de8bc83eSManoj Kumar * Physical and virtual address space limits for MMU in AARCH64 & AARCH32 modes 393de8bc83eSManoj Kumar */ 394402b3cf8SJulius Werner #ifdef __aarch64__ 395de8bc83eSManoj Kumar #define PLAT_PHY_ADDR_SPACE_SIZE (1ULL << 36) 396de8bc83eSManoj Kumar #define PLAT_VIRT_ADDR_SPACE_SIZE (1ULL << 36) 397de8bc83eSManoj Kumar #else 398de8bc83eSManoj Kumar #define PLAT_PHY_ADDR_SPACE_SIZE (1ULL << 32) 399de8bc83eSManoj Kumar #define PLAT_VIRT_ADDR_SPACE_SIZE (1ULL << 32) 400de8bc83eSManoj Kumar #endif 401de8bc83eSManoj Kumar 402fad88444SYeoreum Yun #if defined(IMAGE_BL1) && TRANSFER_LIST 403fad88444SYeoreum Yun #define PLAT_ARM_EVENT_LOG_MAX_SIZE UL(0x200) 404fad88444SYeoreum Yun #else 405fad88444SYeoreum Yun #define PLAT_ARM_EVENT_LOG_MAX_SIZE UL(0x400) 406fad88444SYeoreum Yun #endif 407fad88444SYeoreum Yun 40831e703f9SAditya Angadi /* Number of SCMI channels on the platform */ 40931e703f9SAditya Angadi #define PLAT_ARM_SCMI_CHANNEL_COUNT U(1) 41031e703f9SAditya Angadi 41133bcaed1SRob Hughes /* Protected NSAIDs and memory regions for the Arm(R) Ethos(TM)-N NPU driver */ 41270a296eeSRajasekaran Kalidoss #ifdef JUNO_ETHOSN_TZMP1 413352366edSRajasekaran Kalidoss #define ETHOSN_NPU_PROT_FW_NSAID JUNO_ETHOSN_TZC400_NSAID_FW_PROT 414352366edSRajasekaran Kalidoss #define ETHOSN_NPU_PROT_RW_DATA_NSAID JUNO_ETHOSN_TZC400_NSAID_DATA_RW_PROT 415352366edSRajasekaran Kalidoss #define ETHOSN_NPU_PROT_RO_DATA_NSAID JUNO_ETHOSN_TZC400_NSAID_DATA_RO_PROT 416986c4e99SMikael Olsson 417352366edSRajasekaran Kalidoss #define ETHOSN_NPU_NS_RW_DATA_NSAID JUNO_ETHOSN_TZC400_NSAID_DATA_RW_NS 418352366edSRajasekaran Kalidoss #define ETHOSN_NPU_NS_RO_DATA_NSAID JUNO_ETHOSN_TZC400_NSAID_DATA_RO_NS 419986c4e99SMikael Olsson 420352366edSRajasekaran Kalidoss #define ETHOSN_NPU_FW_IMAGE_BASE JUNO_ETHOSN_FW_TZC_PROT_DRAM2_BASE 421352366edSRajasekaran Kalidoss #define ETHOSN_NPU_FW_IMAGE_LIMIT \ 42233bcaed1SRob Hughes (JUNO_ETHOSN_FW_TZC_PROT_DRAM2_BASE + JUNO_ETHOSN_FW_TZC_PROT_DRAM2_SIZE) 42370a296eeSRajasekaran Kalidoss #endif 42470a296eeSRajasekaran Kalidoss 425f21c6321SAntonio Nino Diaz #endif /* PLATFORM_DEF_H */ 426