1*91f16700Schasinglulu /* 2*91f16700Schasinglulu * Copyright (c) 2020-2023, Arm Limited. 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 <plat/arm/board/common/v2m_def.h> 11*91f16700Schasinglulu #include <plat/arm/common/arm_def.h> 12*91f16700Schasinglulu #include <plat/arm/css/common/css_def.h> 13*91f16700Schasinglulu 14*91f16700Schasinglulu /* UART related constants */ 15*91f16700Schasinglulu #define PLAT_ARM_BOOT_UART_BASE ULL(0x2A400000) 16*91f16700Schasinglulu #define PLAT_ARM_BOOT_UART_CLK_IN_HZ U(50000000) 17*91f16700Schasinglulu 18*91f16700Schasinglulu /* IOFPGA UART0 */ 19*91f16700Schasinglulu #define PLAT_ARM_RUN_UART_BASE ULL(0x1C090000) 20*91f16700Schasinglulu #define PLAT_ARM_RUN_UART_CLK_IN_HZ U(24000000) 21*91f16700Schasinglulu 22*91f16700Schasinglulu #define PLAT_ARM_CRASH_UART_BASE PLAT_ARM_RUN_UART_BASE 23*91f16700Schasinglulu #define PLAT_ARM_CRASH_UART_CLK_IN_HZ PLAT_ARM_RUN_UART_CLK_IN_HZ 24*91f16700Schasinglulu 25*91f16700Schasinglulu #define PLAT_ARM_DRAM2_BASE ULL(0x8080000000) 26*91f16700Schasinglulu #define PLAT_ARM_DRAM2_SIZE ULL(0xF80000000) 27*91f16700Schasinglulu 28*91f16700Schasinglulu #define MAX_IO_DEVICES U(3) 29*91f16700Schasinglulu #define MAX_IO_HANDLES U(4) 30*91f16700Schasinglulu 31*91f16700Schasinglulu #define PLAT_ARM_FLASH_IMAGE_BASE ULL(0x1A000000) 32*91f16700Schasinglulu #define PLAT_ARM_FLASH_IMAGE_MAX_SIZE ULL(0x01000000) 33*91f16700Schasinglulu 34*91f16700Schasinglulu #define PLAT_ARM_NVM_BASE ULL(0x1A000000) 35*91f16700Schasinglulu #define PLAT_ARM_NVM_SIZE ULL(0x01000000) 36*91f16700Schasinglulu 37*91f16700Schasinglulu #if defined NS_BL1U_BASE 38*91f16700Schasinglulu #undef NS_BL1U_BASE 39*91f16700Schasinglulu #define NS_BL1U_BASE (PLAT_ARM_NVM_BASE + UL(0x00800000)) 40*91f16700Schasinglulu #endif 41*91f16700Schasinglulu 42*91f16700Schasinglulu /* 43*91f16700Schasinglulu * There are no non-volatile counters in morello, these macros points 44*91f16700Schasinglulu * to unused addresses. 45*91f16700Schasinglulu */ 46*91f16700Schasinglulu #define SOC_TRUSTED_NVCTR_BASE ULL(0x7FE70000) 47*91f16700Schasinglulu #define TFW_NVCTR_BASE (SOC_TRUSTED_NVCTR_BASE + U(0x0000)) 48*91f16700Schasinglulu #define TFW_NVCTR_SIZE U(4) 49*91f16700Schasinglulu #define NTFW_CTR_BASE (SOC_TRUSTED_NVCTR_BASE + U(0x0004)) 50*91f16700Schasinglulu #define NTFW_CTR_SIZE U(4) 51*91f16700Schasinglulu 52*91f16700Schasinglulu /* 53*91f16700Schasinglulu * To access the complete DDR memory along with remote chip's DDR memory, 54*91f16700Schasinglulu * which is at 4 TB offset, physical and virtual address space limits are 55*91f16700Schasinglulu * extended to 43-bits. 56*91f16700Schasinglulu */ 57*91f16700Schasinglulu #define PLAT_PHY_ADDR_SPACE_SIZE (1ULL << 43) 58*91f16700Schasinglulu #define PLAT_VIRT_ADDR_SPACE_SIZE (1ULL << 43) 59*91f16700Schasinglulu 60*91f16700Schasinglulu #if CSS_USE_SCMI_SDS_DRIVER 61*91f16700Schasinglulu #define MORELLO_SCMI_PAYLOAD_BASE ULL(0x45400000) 62*91f16700Schasinglulu #else 63*91f16700Schasinglulu #define PLAT_CSS_SCP_COM_SHARED_MEM_BASE ULL(0x45400000) 64*91f16700Schasinglulu #endif 65*91f16700Schasinglulu 66*91f16700Schasinglulu #define PLAT_ARM_TRUSTED_SRAM_SIZE UL(0x00080000) 67*91f16700Schasinglulu 68*91f16700Schasinglulu /* 69*91f16700Schasinglulu * PLAT_ARM_MAX_BL1_RW_SIZE is calculated using the current BL1 RW debug size 70*91f16700Schasinglulu * plus a little space for growth. 71*91f16700Schasinglulu */ 72*91f16700Schasinglulu #define PLAT_ARM_MAX_BL1_RW_SIZE UL(0xC000) 73*91f16700Schasinglulu 74*91f16700Schasinglulu /* 75*91f16700Schasinglulu * PLAT_ARM_MAX_ROMLIB_RW_SIZE is define to use a full page 76*91f16700Schasinglulu */ 77*91f16700Schasinglulu 78*91f16700Schasinglulu #if USE_ROMLIB 79*91f16700Schasinglulu #define PLAT_ARM_MAX_ROMLIB_RW_SIZE UL(0x1000) 80*91f16700Schasinglulu #define PLAT_ARM_MAX_ROMLIB_RO_SIZE UL(0xE000) 81*91f16700Schasinglulu #else 82*91f16700Schasinglulu #define PLAT_ARM_MAX_ROMLIB_RW_SIZE U(0) 83*91f16700Schasinglulu #define PLAT_ARM_MAX_ROMLIB_RO_SIZE U(0) 84*91f16700Schasinglulu #endif 85*91f16700Schasinglulu 86*91f16700Schasinglulu /* 87*91f16700Schasinglulu * PLAT_ARM_MAX_BL2_SIZE is calculated using the current BL2 debug size plus a 88*91f16700Schasinglulu * little space for growth. 89*91f16700Schasinglulu */ 90*91f16700Schasinglulu #if TRUSTED_BOARD_BOOT 91*91f16700Schasinglulu # define PLAT_ARM_MAX_BL2_SIZE UL(0x1D000) 92*91f16700Schasinglulu #else 93*91f16700Schasinglulu # define PLAT_ARM_MAX_BL2_SIZE UL(0x14000) 94*91f16700Schasinglulu #endif 95*91f16700Schasinglulu 96*91f16700Schasinglulu #define PLAT_ARM_MAX_BL31_SIZE UL(0x3B000) 97*91f16700Schasinglulu 98*91f16700Schasinglulu /******************************************************************************* 99*91f16700Schasinglulu * MORELLO topology related constants 100*91f16700Schasinglulu ******************************************************************************/ 101*91f16700Schasinglulu #define MORELLO_MAX_CPUS_PER_CLUSTER U(2) 102*91f16700Schasinglulu #define PLAT_ARM_CLUSTER_COUNT U(2) 103*91f16700Schasinglulu #define PLAT_MORELLO_CHIP_COUNT U(1) 104*91f16700Schasinglulu #define MORELLO_MAX_CLUSTERS_PER_CHIP U(2) 105*91f16700Schasinglulu #define MORELLO_MAX_PE_PER_CPU U(1) 106*91f16700Schasinglulu 107*91f16700Schasinglulu #define PLATFORM_CORE_COUNT (PLAT_MORELLO_CHIP_COUNT * \ 108*91f16700Schasinglulu PLAT_ARM_CLUSTER_COUNT * \ 109*91f16700Schasinglulu MORELLO_MAX_CPUS_PER_CLUSTER * \ 110*91f16700Schasinglulu MORELLO_MAX_PE_PER_CPU) 111*91f16700Schasinglulu 112*91f16700Schasinglulu /* System power domain level */ 113*91f16700Schasinglulu #define CSS_SYSTEM_PWR_DMN_LVL ARM_PWR_LVL3 114*91f16700Schasinglulu 115*91f16700Schasinglulu /* 116*91f16700Schasinglulu * PLAT_ARM_MMAP_ENTRIES depends on the number of entries in the 117*91f16700Schasinglulu * plat_arm_mmap array defined for each BL stage. 118*91f16700Schasinglulu */ 119*91f16700Schasinglulu #if IMAGE_BL1 || IMAGE_BL31 120*91f16700Schasinglulu # define PLAT_ARM_MMAP_ENTRIES U(6) 121*91f16700Schasinglulu # define MAX_XLAT_TABLES U(7) 122*91f16700Schasinglulu #else 123*91f16700Schasinglulu # define PLAT_ARM_MMAP_ENTRIES U(5) 124*91f16700Schasinglulu # define MAX_XLAT_TABLES U(6) 125*91f16700Schasinglulu #endif 126*91f16700Schasinglulu 127*91f16700Schasinglulu /* 128*91f16700Schasinglulu * Size of cacheable stacks 129*91f16700Schasinglulu */ 130*91f16700Schasinglulu #if defined(IMAGE_BL1) 131*91f16700Schasinglulu # if TRUSTED_BOARD_BOOT 132*91f16700Schasinglulu # define PLATFORM_STACK_SIZE UL(0x1000) 133*91f16700Schasinglulu # else 134*91f16700Schasinglulu # define PLATFORM_STACK_SIZE UL(0x440) 135*91f16700Schasinglulu # endif 136*91f16700Schasinglulu #elif defined(IMAGE_BL2) 137*91f16700Schasinglulu # if TRUSTED_BOARD_BOOT 138*91f16700Schasinglulu # define PLATFORM_STACK_SIZE UL(0x1000) 139*91f16700Schasinglulu # else 140*91f16700Schasinglulu # define PLATFORM_STACK_SIZE UL(0x400) 141*91f16700Schasinglulu # endif 142*91f16700Schasinglulu #elif defined(IMAGE_BL2U) 143*91f16700Schasinglulu # define PLATFORM_STACK_SIZE UL(0x400) 144*91f16700Schasinglulu #elif defined(IMAGE_BL31) 145*91f16700Schasinglulu # if SPM_MM 146*91f16700Schasinglulu # define PLATFORM_STACK_SIZE UL(0x500) 147*91f16700Schasinglulu # else 148*91f16700Schasinglulu # define PLATFORM_STACK_SIZE UL(0x400) 149*91f16700Schasinglulu # endif 150*91f16700Schasinglulu #elif defined(IMAGE_BL32) 151*91f16700Schasinglulu # define PLATFORM_STACK_SIZE UL(0x440) 152*91f16700Schasinglulu #endif 153*91f16700Schasinglulu 154*91f16700Schasinglulu #define PLAT_ARM_NSTIMER_FRAME_ID U(0) 155*91f16700Schasinglulu 156*91f16700Schasinglulu #define PLAT_ARM_TRUSTED_ROM_BASE U(0x0) 157*91f16700Schasinglulu #define PLAT_ARM_TRUSTED_ROM_SIZE UL(0x00020000) /* 128KB */ 158*91f16700Schasinglulu 159*91f16700Schasinglulu #define PLAT_ARM_NSRAM_BASE ULL(0x06000000) 160*91f16700Schasinglulu #define PLAT_ARM_NSRAM_SIZE UL(0x00010000) /* 64KB */ 161*91f16700Schasinglulu 162*91f16700Schasinglulu #define PLAT_CSS_MHU_BASE UL(0x45000000) 163*91f16700Schasinglulu #define PLAT_MHUV2_BASE PLAT_CSS_MHU_BASE 164*91f16700Schasinglulu #define PLAT_MAX_PWR_LVL U(2) 165*91f16700Schasinglulu 166*91f16700Schasinglulu /* Interrupt handling constants */ 167*91f16700Schasinglulu #define MORELLO_IRQ_SEC_UART U(87) 168*91f16700Schasinglulu #define MORELLO_IRQ_DISPLAY_TCU_EVENT_Q U(107) 169*91f16700Schasinglulu #define MORELLO_IRQ_DISPLAY_TCU_CMD_SYNC U(111) 170*91f16700Schasinglulu #define MORELLO_IRQ_DISPLAY_TCU_GLOBAL U(113) 171*91f16700Schasinglulu #define MORELLO_IRQ_MMU_TCU1_EVENT_Q U(257) 172*91f16700Schasinglulu #define MORELLO_IRQ_MMU_TCU1_CMD_SYNC U(258) 173*91f16700Schasinglulu #define MORELLO_IRQ_MMU_TCU1_GLOBAL U(259) 174*91f16700Schasinglulu #define MORELLO_IRQ_MMU_TCU2_EVENT_Q U(264) 175*91f16700Schasinglulu #define MORELLO_IRQ_MMU_TCU2_CMD_SYNC U(265) 176*91f16700Schasinglulu #define MORELLO_IRQ_MMU_TCU2_GLOBAL U(266) 177*91f16700Schasinglulu #define MORELLO_IRQ_CLUSTER0_MHU U(349) 178*91f16700Schasinglulu #define MORELLO_IRQ_CLUSTER1_MHU U(351) 179*91f16700Schasinglulu #define MORELLO_IRQ_P0_REFCLK U(412) 180*91f16700Schasinglulu #define MORELLO_IRQ_P1_REFCLK U(413) 181*91f16700Schasinglulu 182*91f16700Schasinglulu #define PLAT_ARM_G1S_IRQ_PROPS(grp) \ 183*91f16700Schasinglulu ARM_G1S_IRQ_PROPS(grp), \ 184*91f16700Schasinglulu INTR_PROP_DESC(CSS_IRQ_MHU, \ 185*91f16700Schasinglulu GIC_HIGHEST_SEC_PRIORITY, grp, GIC_INTR_CFG_LEVEL), \ 186*91f16700Schasinglulu INTR_PROP_DESC(CSS_IRQ_TZ_WDOG, \ 187*91f16700Schasinglulu GIC_HIGHEST_SEC_PRIORITY, grp, GIC_INTR_CFG_LEVEL), \ 188*91f16700Schasinglulu INTR_PROP_DESC(CSS_IRQ_SEC_SYS_TIMER, \ 189*91f16700Schasinglulu GIC_HIGHEST_SEC_PRIORITY, grp, GIC_INTR_CFG_LEVEL), \ 190*91f16700Schasinglulu INTR_PROP_DESC(MORELLO_IRQ_SEC_UART, \ 191*91f16700Schasinglulu GIC_HIGHEST_SEC_PRIORITY, grp, GIC_INTR_CFG_LEVEL), \ 192*91f16700Schasinglulu INTR_PROP_DESC(MORELLO_IRQ_DISPLAY_TCU_EVENT_Q, \ 193*91f16700Schasinglulu GIC_HIGHEST_SEC_PRIORITY, grp, GIC_INTR_CFG_LEVEL), \ 194*91f16700Schasinglulu INTR_PROP_DESC(MORELLO_IRQ_DISPLAY_TCU_CMD_SYNC, \ 195*91f16700Schasinglulu GIC_HIGHEST_SEC_PRIORITY, grp, GIC_INTR_CFG_LEVEL), \ 196*91f16700Schasinglulu INTR_PROP_DESC(MORELLO_IRQ_DISPLAY_TCU_GLOBAL, \ 197*91f16700Schasinglulu GIC_HIGHEST_SEC_PRIORITY, grp, GIC_INTR_CFG_LEVEL), \ 198*91f16700Schasinglulu INTR_PROP_DESC(MORELLO_IRQ_MMU_TCU1_EVENT_Q, \ 199*91f16700Schasinglulu GIC_HIGHEST_SEC_PRIORITY, grp, GIC_INTR_CFG_LEVEL), \ 200*91f16700Schasinglulu INTR_PROP_DESC(MORELLO_IRQ_MMU_TCU1_CMD_SYNC, \ 201*91f16700Schasinglulu GIC_HIGHEST_SEC_PRIORITY, grp, GIC_INTR_CFG_LEVEL), \ 202*91f16700Schasinglulu INTR_PROP_DESC(MORELLO_IRQ_MMU_TCU1_GLOBAL, \ 203*91f16700Schasinglulu GIC_HIGHEST_SEC_PRIORITY, grp, GIC_INTR_CFG_LEVEL), \ 204*91f16700Schasinglulu INTR_PROP_DESC(MORELLO_IRQ_MMU_TCU2_EVENT_Q, \ 205*91f16700Schasinglulu GIC_HIGHEST_SEC_PRIORITY, grp, GIC_INTR_CFG_LEVEL), \ 206*91f16700Schasinglulu INTR_PROP_DESC(MORELLO_IRQ_MMU_TCU2_CMD_SYNC, \ 207*91f16700Schasinglulu GIC_HIGHEST_SEC_PRIORITY, grp, GIC_INTR_CFG_LEVEL), \ 208*91f16700Schasinglulu INTR_PROP_DESC(MORELLO_IRQ_MMU_TCU2_GLOBAL, \ 209*91f16700Schasinglulu GIC_HIGHEST_SEC_PRIORITY, grp, GIC_INTR_CFG_LEVEL), \ 210*91f16700Schasinglulu INTR_PROP_DESC(MORELLO_IRQ_CLUSTER0_MHU, \ 211*91f16700Schasinglulu GIC_HIGHEST_SEC_PRIORITY, grp, GIC_INTR_CFG_LEVEL), \ 212*91f16700Schasinglulu INTR_PROP_DESC(MORELLO_IRQ_CLUSTER1_MHU, \ 213*91f16700Schasinglulu GIC_HIGHEST_SEC_PRIORITY, grp, GIC_INTR_CFG_LEVEL), \ 214*91f16700Schasinglulu INTR_PROP_DESC(MORELLO_IRQ_P0_REFCLK, \ 215*91f16700Schasinglulu GIC_HIGHEST_SEC_PRIORITY, grp, GIC_INTR_CFG_LEVEL), \ 216*91f16700Schasinglulu INTR_PROP_DESC(MORELLO_IRQ_P1_REFCLK, \ 217*91f16700Schasinglulu GIC_HIGHEST_SEC_PRIORITY, grp, GIC_INTR_CFG_LEVEL) 218*91f16700Schasinglulu 219*91f16700Schasinglulu #define PLAT_ARM_G0_IRQ_PROPS(grp) ARM_G0_IRQ_PROPS(grp) 220*91f16700Schasinglulu 221*91f16700Schasinglulu #define MORELLO_DEVICE_BASE ULL(0x08000000) 222*91f16700Schasinglulu #define MORELLO_DEVICE_SIZE ULL(0x48000000) 223*91f16700Schasinglulu 224*91f16700Schasinglulu /*Secure Watchdog Constants */ 225*91f16700Schasinglulu #define SBSA_SECURE_WDOG_BASE UL(0x2A480000) 226*91f16700Schasinglulu #define SBSA_SECURE_WDOG_TIMEOUT UL(1000) 227*91f16700Schasinglulu 228*91f16700Schasinglulu #define MORELLO_MAP_DEVICE MAP_REGION_FLAT( \ 229*91f16700Schasinglulu MORELLO_DEVICE_BASE, \ 230*91f16700Schasinglulu MORELLO_DEVICE_SIZE, \ 231*91f16700Schasinglulu MT_DEVICE | MT_RW | MT_SECURE) 232*91f16700Schasinglulu 233*91f16700Schasinglulu #define ARM_MAP_DRAM1 MAP_REGION_FLAT( \ 234*91f16700Schasinglulu ARM_DRAM1_BASE, \ 235*91f16700Schasinglulu ARM_DRAM1_SIZE, \ 236*91f16700Schasinglulu MT_MEMORY | MT_RW | MT_NS) 237*91f16700Schasinglulu 238*91f16700Schasinglulu /* GIC related constants */ 239*91f16700Schasinglulu #define PLAT_ARM_GICD_BASE UL(0x30000000) 240*91f16700Schasinglulu #define PLAT_ARM_GICC_BASE UL(0x2C000000) 241*91f16700Schasinglulu #define PLAT_ARM_GICR_BASE UL(0x300C0000) 242*91f16700Schasinglulu 243*91f16700Schasinglulu /* Number of SCMI channels on the platform */ 244*91f16700Schasinglulu #define PLAT_ARM_SCMI_CHANNEL_COUNT U(1) 245*91f16700Schasinglulu 246*91f16700Schasinglulu /* Platform ID address */ 247*91f16700Schasinglulu #define SSC_VERSION (SSC_REG_BASE + SSC_VERSION_OFFSET) 248*91f16700Schasinglulu 249*91f16700Schasinglulu #endif /* PLATFORM_DEF_H */ 250