1717448d6SSheetal Tigadoli /* 2717448d6SSheetal Tigadoli * Copyright (c) 2015-2020, Broadcom 3717448d6SSheetal Tigadoli * 4717448d6SSheetal Tigadoli * SPDX-License-Identifier: BSD-3-Clause 5717448d6SSheetal Tigadoli */ 6717448d6SSheetal Tigadoli 7717448d6SSheetal Tigadoli #ifndef PLATFORM_DEF_H 8717448d6SSheetal Tigadoli #define PLATFORM_DEF_H 9717448d6SSheetal Tigadoli 10717448d6SSheetal Tigadoli #include <arch.h> 11717448d6SSheetal Tigadoli #include <common/tbbr/tbbr_img_def.h> 12717448d6SSheetal Tigadoli #include <plat/common/common_def.h> 13717448d6SSheetal Tigadoli 14717448d6SSheetal Tigadoli #include <brcm_def.h> 15717448d6SSheetal Tigadoli #include "sr_def.h" 16*f29d1e0cSSheetal Tigadoli #include <cmn_plat_def.h> 17717448d6SSheetal Tigadoli 18717448d6SSheetal Tigadoli /* 19717448d6SSheetal Tigadoli * Most platform porting definitions provided by included headers 20717448d6SSheetal Tigadoli */ 21717448d6SSheetal Tigadoli #define PLAT_BRCM_SCP_TZC_DRAM1_SIZE ULL(0x0) 22717448d6SSheetal Tigadoli 23717448d6SSheetal Tigadoli /* 24717448d6SSheetal Tigadoli * Required by standard platform porting definitions 25717448d6SSheetal Tigadoli */ 26717448d6SSheetal Tigadoli #define PLATFORM_CLUSTER0_CORE_COUNT 2 27717448d6SSheetal Tigadoli #define PLATFORM_CLUSTER1_CORE_COUNT 2 28717448d6SSheetal Tigadoli #define PLATFORM_CLUSTER2_CORE_COUNT 2 29717448d6SSheetal Tigadoli #define PLATFORM_CLUSTER3_CORE_COUNT 2 30717448d6SSheetal Tigadoli 31717448d6SSheetal Tigadoli #define BRCM_SYSTEM_COUNT 1 329a40c0fbSSheetal Tigadoli #define BRCM_CLUSTER_COUNT 4 33717448d6SSheetal Tigadoli 34717448d6SSheetal Tigadoli #define PLATFORM_CORE_COUNT (PLATFORM_CLUSTER0_CORE_COUNT + \ 35717448d6SSheetal Tigadoli PLATFORM_CLUSTER1_CORE_COUNT+ \ 36717448d6SSheetal Tigadoli PLATFORM_CLUSTER2_CORE_COUNT+ \ 379a40c0fbSSheetal Tigadoli PLATFORM_CLUSTER3_CORE_COUNT) 38717448d6SSheetal Tigadoli 39717448d6SSheetal Tigadoli #define PLAT_NUM_PWR_DOMAINS (BRCM_SYSTEM_COUNT + \ 40717448d6SSheetal Tigadoli BRCM_CLUSTER_COUNT + \ 41717448d6SSheetal Tigadoli PLATFORM_CORE_COUNT) 42717448d6SSheetal Tigadoli 43717448d6SSheetal Tigadoli #define PLAT_MAX_PWR_LVL MPIDR_AFFLVL2 44717448d6SSheetal Tigadoli 45717448d6SSheetal Tigadoli /* TBD-STINGRAY */ 46717448d6SSheetal Tigadoli #define CACHE_WRITEBACK_SHIFT 6 47717448d6SSheetal Tigadoli /* 48717448d6SSheetal Tigadoli * Some data must be aligned on the biggest cache line size in the platform. 49717448d6SSheetal Tigadoli * This is known only to the platform as it might have a combination of 50717448d6SSheetal Tigadoli * integrated and external caches. 51717448d6SSheetal Tigadoli */ 52717448d6SSheetal Tigadoli #define CACHE_WRITEBACK_GRANULE (1 << CACHE_WRITEBACK_SHIFT) 53717448d6SSheetal Tigadoli 54717448d6SSheetal Tigadoli /* TBD-STINGRAY */ 55717448d6SSheetal Tigadoli #define PLATFORM_MAX_AFFLVL MPIDR_AFFLVL1 56717448d6SSheetal Tigadoli 57717448d6SSheetal Tigadoli #define BL1_PLATFORM_STACK_SIZE 0x3300 58717448d6SSheetal Tigadoli #define BL2_PLATFORM_STACK_SIZE 0xc000 59717448d6SSheetal Tigadoli #define BL11_PLATFORM_STACK_SIZE 0x2b00 60717448d6SSheetal Tigadoli #define DEFAULT_PLATFORM_STACK_SIZE 0x400 61717448d6SSheetal Tigadoli #if IMAGE_BL1 62717448d6SSheetal Tigadoli # define PLATFORM_STACK_SIZE BL1_PLATFORM_STACK_SIZE 63717448d6SSheetal Tigadoli #else 64717448d6SSheetal Tigadoli #if IMAGE_BL2 65717448d6SSheetal Tigadoli #ifdef USE_BL1_RW 66717448d6SSheetal Tigadoli # define PLATFORM_STACK_SIZE BL2_PLATFORM_STACK_SIZE 67717448d6SSheetal Tigadoli #else 68717448d6SSheetal Tigadoli # define PLATFORM_STACK_SIZE BL1_PLATFORM_STACK_SIZE 69717448d6SSheetal Tigadoli #endif 70717448d6SSheetal Tigadoli #else 71717448d6SSheetal Tigadoli #if IMAGE_BL11 72717448d6SSheetal Tigadoli # define PLATFORM_STACK_SIZE BL11_PLATFORM_STACK_SIZE 73717448d6SSheetal Tigadoli #else 74717448d6SSheetal Tigadoli # define PLATFORM_STACK_SIZE DEFAULT_PLATFORM_STACK_SIZE 75717448d6SSheetal Tigadoli #endif 76717448d6SSheetal Tigadoli #endif 77717448d6SSheetal Tigadoli #endif 78717448d6SSheetal Tigadoli 79717448d6SSheetal Tigadoli #define PLAT_BRCM_TRUSTED_SRAM_BASE 0x66D00000 80717448d6SSheetal Tigadoli #define PLAT_BRCM_TRUSTED_SRAM_SIZE 0x00040000 81717448d6SSheetal Tigadoli 82717448d6SSheetal Tigadoli #ifdef RUN_BL1_FROM_QSPI /* BL1 XIP from QSPI */ 83717448d6SSheetal Tigadoli # define PLAT_BRCM_TRUSTED_ROM_BASE QSPI_BASE_ADDR 84717448d6SSheetal Tigadoli #elif RUN_BL1_FROM_NAND /* BL1 XIP from NAND */ 85717448d6SSheetal Tigadoli # define PLAT_BRCM_TRUSTED_ROM_BASE NAND_BASE_ADDR 86717448d6SSheetal Tigadoli #else /* BL1 executed in ROM */ 87717448d6SSheetal Tigadoli # define PLAT_BRCM_TRUSTED_ROM_BASE ROM_BASE_ADDR 88717448d6SSheetal Tigadoli #endif 89717448d6SSheetal Tigadoli #define PLAT_BRCM_TRUSTED_ROM_SIZE 0x00040000 90717448d6SSheetal Tigadoli 91717448d6SSheetal Tigadoli /******************************************************************************* 92717448d6SSheetal Tigadoli * BL1 specific defines. 93717448d6SSheetal Tigadoli ******************************************************************************/ 94717448d6SSheetal Tigadoli #define BL1_RO_BASE PLAT_BRCM_TRUSTED_ROM_BASE 95717448d6SSheetal Tigadoli #define BL1_RO_LIMIT (PLAT_BRCM_TRUSTED_ROM_BASE \ 96717448d6SSheetal Tigadoli + PLAT_BRCM_TRUSTED_ROM_SIZE) 97717448d6SSheetal Tigadoli 98717448d6SSheetal Tigadoli /* 99717448d6SSheetal Tigadoli * Put BL1 RW at the beginning of the Trusted SRAM. 100717448d6SSheetal Tigadoli */ 101717448d6SSheetal Tigadoli #define BL1_RW_BASE (BRCM_BL_RAM_BASE) 102717448d6SSheetal Tigadoli #define BL1_RW_LIMIT (BL1_RW_BASE + 0x12000) 103717448d6SSheetal Tigadoli 104717448d6SSheetal Tigadoli #define BL11_RW_BASE BL1_RW_LIMIT 105717448d6SSheetal Tigadoli #define BL11_RW_LIMIT (PLAT_BRCM_TRUSTED_SRAM_BASE + \ 106717448d6SSheetal Tigadoli PLAT_BRCM_TRUSTED_SRAM_SIZE) 107717448d6SSheetal Tigadoli 108717448d6SSheetal Tigadoli /******************************************************************************* 109717448d6SSheetal Tigadoli * BL2 specific defines. 110717448d6SSheetal Tigadoli ******************************************************************************/ 111717448d6SSheetal Tigadoli #if RUN_BL2_FROM_QSPI /* BL2 XIP from QSPI */ 112717448d6SSheetal Tigadoli #define BL2_BASE QSPI_BASE_ADDR 113717448d6SSheetal Tigadoli #define BL2_LIMIT (BL2_BASE + 0x40000) 114717448d6SSheetal Tigadoli #define BL2_RW_BASE BL1_RW_LIMIT 115717448d6SSheetal Tigadoli #define BL2_RW_LIMIT (PLAT_BRCM_TRUSTED_SRAM_BASE + \ 116717448d6SSheetal Tigadoli PLAT_BRCM_TRUSTED_SRAM_SIZE) 117717448d6SSheetal Tigadoli #elif RUN_BL2_FROM_NAND /* BL2 XIP from NAND */ 118717448d6SSheetal Tigadoli #define BL2_BASE NAND_BASE_ADDR 119717448d6SSheetal Tigadoli #define BL2_LIMIT (BL2_BASE + 0x40000) 120717448d6SSheetal Tigadoli #define BL2_RW_BASE BL1_RW_LIMIT 121717448d6SSheetal Tigadoli #define BL2_RW_LIMIT (PLAT_BRCM_TRUSTED_SRAM_BASE + \ 122717448d6SSheetal Tigadoli PLAT_BRCM_TRUSTED_SRAM_SIZE) 123717448d6SSheetal Tigadoli #else 124717448d6SSheetal Tigadoli #define BL2_BASE (BL1_RW_LIMIT + PAGE_SIZE) 125717448d6SSheetal Tigadoli #define BL2_LIMIT (BRCM_BL_RAM_BASE + BRCM_BL_RAM_SIZE) 126717448d6SSheetal Tigadoli #endif 127717448d6SSheetal Tigadoli 128717448d6SSheetal Tigadoli /* 129717448d6SSheetal Tigadoli * BL1 persistent area in internal SRAM 130717448d6SSheetal Tigadoli * This area will increase as more features gets into BL1 131717448d6SSheetal Tigadoli */ 132717448d6SSheetal Tigadoli #define BL1_PERSISTENT_DATA_SIZE 0x2000 133717448d6SSheetal Tigadoli 134717448d6SSheetal Tigadoli /* To reduce BL2 runtime footprint, we can re-use some BL1_RW area */ 135717448d6SSheetal Tigadoli #define BL1_RW_RECLAIM_BASE (PLAT_BRCM_TRUSTED_SRAM_BASE + \ 136717448d6SSheetal Tigadoli BL1_PERSISTENT_DATA_SIZE) 137717448d6SSheetal Tigadoli 138717448d6SSheetal Tigadoli /******************************************************************************* 139717448d6SSheetal Tigadoli * BL3-1 specific defines. 140717448d6SSheetal Tigadoli ******************************************************************************/ 141717448d6SSheetal Tigadoli /* Max Size of BL31 (in DRAM) */ 142717448d6SSheetal Tigadoli #define PLAT_BRCM_MAX_BL31_SIZE 0x30000 143717448d6SSheetal Tigadoli 144717448d6SSheetal Tigadoli #ifdef USE_DDR 145717448d6SSheetal Tigadoli #define BL31_BASE BRCM_AP_TZC_DRAM1_BASE 146717448d6SSheetal Tigadoli 147717448d6SSheetal Tigadoli #define BL31_LIMIT (BRCM_AP_TZC_DRAM1_BASE + \ 148717448d6SSheetal Tigadoli PLAT_BRCM_MAX_BL31_SIZE) 149717448d6SSheetal Tigadoli #else 150717448d6SSheetal Tigadoli /* Put BL3-1 at the end of external on-board SRAM connected as NOR flash */ 151717448d6SSheetal Tigadoli #define BL31_BASE (NOR_BASE_ADDR + NOR_SIZE - \ 152717448d6SSheetal Tigadoli PLAT_BRCM_MAX_BL31_SIZE) 153717448d6SSheetal Tigadoli 154717448d6SSheetal Tigadoli #define BL31_LIMIT (NOR_BASE_ADDR + NOR_SIZE) 155717448d6SSheetal Tigadoli #endif 156717448d6SSheetal Tigadoli 157717448d6SSheetal Tigadoli #define SECURE_DDR_END_ADDRESS BL31_LIMIT 158717448d6SSheetal Tigadoli 159717448d6SSheetal Tigadoli #ifdef NEED_SCP_BL2 160717448d6SSheetal Tigadoli #define SCP_BL2_BASE BL31_BASE 161717448d6SSheetal Tigadoli #define PLAT_MAX_SCP_BL2_SIZE 0x9000 162717448d6SSheetal Tigadoli #define PLAT_SCP_COM_SHARED_MEM_BASE (CRMU_SHARED_SRAM_BASE) 163717448d6SSheetal Tigadoli /* dummy defined */ 164717448d6SSheetal Tigadoli #define PLAT_BRCM_MHU_BASE 0x0 165717448d6SSheetal Tigadoli #endif 166717448d6SSheetal Tigadoli 167717448d6SSheetal Tigadoli #define SECONDARY_CPU_SPIN_BASE_ADDR BRCM_SHARED_RAM_BASE 168717448d6SSheetal Tigadoli 169717448d6SSheetal Tigadoli /* Generic system timer counter frequency */ 170717448d6SSheetal Tigadoli #ifndef SYSCNT_FREQ 171717448d6SSheetal Tigadoli #define SYSCNT_FREQ (125 * 1000 * 1000) 172717448d6SSheetal Tigadoli #endif 173717448d6SSheetal Tigadoli 174717448d6SSheetal Tigadoli /* 175717448d6SSheetal Tigadoli * Enable the BL32 definitions, only when optee os is selected as secure 176717448d6SSheetal Tigadoli * payload (BL32). 177717448d6SSheetal Tigadoli */ 178717448d6SSheetal Tigadoli #ifdef SPD_opteed 179717448d6SSheetal Tigadoli /* 180717448d6SSheetal Tigadoli * Reserved Memory Map : SHMEM & TZDRAM. 181717448d6SSheetal Tigadoli * 182717448d6SSheetal Tigadoli * +--------+----------+ 0x8D000000 183717448d6SSheetal Tigadoli * | SHMEM (NS) | 16MB 184717448d6SSheetal Tigadoli * +-------------------+ 0x8E000000 185717448d6SSheetal Tigadoli * | | TEE_RAM(S)| 4MB 186717448d6SSheetal Tigadoli * + TZDRAM +----------+ 0x8E400000 187717448d6SSheetal Tigadoli * | | TA_RAM(S) | 12MB 188717448d6SSheetal Tigadoli * +-------------------+ 0x8F000000 189717448d6SSheetal Tigadoli * | BL31 Binary (S) | 192KB 190717448d6SSheetal Tigadoli * +-------------------+ 0x8F030000 191717448d6SSheetal Tigadoli */ 192717448d6SSheetal Tigadoli 193717448d6SSheetal Tigadoli #define BL32_VA_SIZE (4 * 1024 * 1024) 194717448d6SSheetal Tigadoli #define BL32_BASE (0x8E000000) 195717448d6SSheetal Tigadoli #define BL32_LIMIT (BL32_BASE + BL32_VA_SIZE) 196717448d6SSheetal Tigadoli #define TSP_SEC_MEM_BASE BL32_BASE 197717448d6SSheetal Tigadoli #define TSP_SEC_MEM_SIZE BL32_VA_SIZE 198717448d6SSheetal Tigadoli #endif 199717448d6SSheetal Tigadoli 200717448d6SSheetal Tigadoli #ifdef SPD_opteed 201717448d6SSheetal Tigadoli #define SECURE_DDR_BASE_ADDRESS BL32_BASE 202717448d6SSheetal Tigadoli #else 203717448d6SSheetal Tigadoli #define SECURE_DDR_BASE_ADDRESS BL31_BASE 204717448d6SSheetal Tigadoli #endif 205717448d6SSheetal Tigadoli /******************************************************************************* 206717448d6SSheetal Tigadoli * Platform specific page table and MMU setup constants 207717448d6SSheetal Tigadoli ******************************************************************************/ 208717448d6SSheetal Tigadoli 209717448d6SSheetal Tigadoli #define MAX_XLAT_TABLES 7 210717448d6SSheetal Tigadoli 211717448d6SSheetal Tigadoli #define PLAT_BRCM_MMAP_ENTRIES 10 212717448d6SSheetal Tigadoli 213717448d6SSheetal Tigadoli #define MAX_MMAP_REGIONS (PLAT_BRCM_MMAP_ENTRIES + \ 214717448d6SSheetal Tigadoli BRCM_BL_REGIONS) 215717448d6SSheetal Tigadoli 216717448d6SSheetal Tigadoli #ifdef USE_DDR 217717448d6SSheetal Tigadoli #ifdef BL33_OVERRIDE_LOAD_ADDR 218717448d6SSheetal Tigadoli #define PLAT_BRCM_NS_IMAGE_OFFSET BL33_OVERRIDE_LOAD_ADDR 219717448d6SSheetal Tigadoli #else 220717448d6SSheetal Tigadoli /* 221717448d6SSheetal Tigadoli * BL3-3 image starting offset. 222717448d6SSheetal Tigadoli * Putting start of DRAM as of now. 223717448d6SSheetal Tigadoli */ 224717448d6SSheetal Tigadoli #define PLAT_BRCM_NS_IMAGE_OFFSET 0x80000000 225717448d6SSheetal Tigadoli #endif /* BL33_OVERRIDE_LOAD_ADDR */ 226717448d6SSheetal Tigadoli #else 227717448d6SSheetal Tigadoli /* 228717448d6SSheetal Tigadoli * BL3-3 image starting offset. 229717448d6SSheetal Tigadoli * Putting start of external on-board SRAM as of now. 230717448d6SSheetal Tigadoli */ 231717448d6SSheetal Tigadoli #define PLAT_BRCM_NS_IMAGE_OFFSET NOR_BASE_ADDR 232717448d6SSheetal Tigadoli #endif /* USE_DDR */ 233717448d6SSheetal Tigadoli /****************************************************************************** 234717448d6SSheetal Tigadoli * Required platform porting definitions common to all BRCM platforms 235717448d6SSheetal Tigadoli *****************************************************************************/ 236717448d6SSheetal Tigadoli 237717448d6SSheetal Tigadoli #define MAX_IO_DEVICES 5 238717448d6SSheetal Tigadoli #define MAX_IO_HANDLES 6 239717448d6SSheetal Tigadoli 240717448d6SSheetal Tigadoli #define PRIMARY_CPU 0 241717448d6SSheetal Tigadoli 242717448d6SSheetal Tigadoli /* GIC Parameter */ 243717448d6SSheetal Tigadoli #define PLAT_BRCM_GICD_BASE GIC500_BASE 244717448d6SSheetal Tigadoli #define PLAT_BRCM_GICR_BASE (GIC500_BASE + 0x200000) 245717448d6SSheetal Tigadoli 246717448d6SSheetal Tigadoli /* Define secure interrupt as per Group here */ 247717448d6SSheetal Tigadoli #define PLAT_BRCM_G1S_IRQ_PROPS(grp) \ 248717448d6SSheetal Tigadoli INTR_PROP_DESC(BRCM_IRQ_SEC_SGI_1, GIC_HIGHEST_SEC_PRIORITY, (grp), \ 249717448d6SSheetal Tigadoli GIC_INTR_CFG_EDGE), \ 250717448d6SSheetal Tigadoli INTR_PROP_DESC(BRCM_IRQ_SEC_SPI_0, GIC_HIGHEST_SEC_PRIORITY, (grp), \ 251717448d6SSheetal Tigadoli GIC_INTR_CFG_EDGE) 252717448d6SSheetal Tigadoli 253717448d6SSheetal Tigadoli #define PLAT_BRCM_G0_IRQ_PROPS(grp) \ 254717448d6SSheetal Tigadoli INTR_PROP_DESC(BRCM_IRQ_SEC_SGI_0, PLAT_SDEI_NORMAL_PRI, (grp), \ 255717448d6SSheetal Tigadoli GIC_INTR_CFG_EDGE), \ 256717448d6SSheetal Tigadoli 257717448d6SSheetal Tigadoli /* 258717448d6SSheetal Tigadoli *CCN 502 related constants. 259717448d6SSheetal Tigadoli */ 260717448d6SSheetal Tigadoli #define PLAT_BRCM_CLUSTER_COUNT 4 /* Number of RN-F Masters */ 261717448d6SSheetal Tigadoli #define PLAT_BRCM_CLUSTER_TO_CCN_ID_MAP CLUSTER0_NODE_ID, CLUSTER1_NODE_ID, CLUSTER2_NODE_ID, CLUSTER3_NODE_ID 262717448d6SSheetal Tigadoli #define CCN_SIZE 0x1000000 263717448d6SSheetal Tigadoli #define CLUSTER0_NODE_ID 1 264717448d6SSheetal Tigadoli #define CLUSTER1_NODE_ID 7 265717448d6SSheetal Tigadoli #define CLUSTER2_NODE_ID 9 266717448d6SSheetal Tigadoli #define CLUSTER3_NODE_ID 15 267717448d6SSheetal Tigadoli 268717448d6SSheetal Tigadoli #endif 269