1c97857dbSAmit Nagal /* 2c97857dbSAmit Nagal * Copyright (c) 2018-2020, Arm Limited and Contributors. All rights reserved. 3c97857dbSAmit Nagal * Copyright (c) 2021-2022, Xilinx, Inc. All rights reserved. 466569a76SMaheedhar Bollapalli * Copyright (c) 2022-2025, Advanced Micro Devices, Inc. All rights reserved. 5c97857dbSAmit Nagal * 6c97857dbSAmit Nagal * SPDX-License-Identifier: BSD-3-Clause 7c97857dbSAmit Nagal */ 8c97857dbSAmit Nagal 9c97857dbSAmit Nagal #ifndef PLATFORM_DEF_H 10c97857dbSAmit Nagal #define PLATFORM_DEF_H 11c97857dbSAmit Nagal 12c97857dbSAmit Nagal #include <arch.h> 13c97857dbSAmit Nagal #include "def.h" 14*414cf08bSSenthil Nathan Thangaraj #include <plat_common.h> 15c97857dbSAmit Nagal 16c97857dbSAmit Nagal /******************************************************************************* 17c97857dbSAmit Nagal * Generic platform constants 18c97857dbSAmit Nagal ******************************************************************************/ 19c97857dbSAmit Nagal 20c97857dbSAmit Nagal /* Size of cacheable stacks */ 21c97857dbSAmit Nagal #define PLATFORM_STACK_SIZE U(0x440) 22c97857dbSAmit Nagal 23c97857dbSAmit Nagal #define PLATFORM_CLUSTER_COUNT U(4) 24c97857dbSAmit Nagal #define PLATFORM_CORE_COUNT_PER_CLUSTER U(2) /* 2 CPUs per cluster */ 25c97857dbSAmit Nagal 26c97857dbSAmit Nagal #define PLATFORM_CORE_COUNT (PLATFORM_CLUSTER_COUNT * PLATFORM_CORE_COUNT_PER_CLUSTER) 27c97857dbSAmit Nagal 28fb2fdcd9SMaheedhar Bollapalli #define E_INVALID_CORE_COUNT -1 29fb2fdcd9SMaheedhar Bollapalli #define E_INVALID_CLUSTER_COUNT -3 30fb2fdcd9SMaheedhar Bollapalli 31c97857dbSAmit Nagal #define PLAT_MAX_PWR_LVL U(2) 32c97857dbSAmit Nagal #define PLAT_MAX_RET_STATE U(1) 33c97857dbSAmit Nagal #define PLAT_MAX_OFF_STATE U(2) 34c97857dbSAmit Nagal 35c97857dbSAmit Nagal /******************************************************************************* 36c97857dbSAmit Nagal * BL31 specific defines. 37c97857dbSAmit Nagal ******************************************************************************/ 38c97857dbSAmit Nagal /* 39c97857dbSAmit Nagal * Put BL31 at the top of the Trusted SRAM (just below the shared memory, if 40c97857dbSAmit Nagal * present). BL31_BASE is calculated using the current BL31 debug size plus a 41c97857dbSAmit Nagal * little space for growth. 42c97857dbSAmit Nagal */ 43c97857dbSAmit Nagal #ifndef MEM_BASE 44c97857dbSAmit Nagal # define BL31_BASE U(0xBBF00000) 45c97857dbSAmit Nagal # define BL31_LIMIT U(0xBC000000) 46c97857dbSAmit Nagal #else 47c97857dbSAmit Nagal # define BL31_BASE U(MEM_BASE) 48c97857dbSAmit Nagal # define BL31_LIMIT U(MEM_BASE + MEM_SIZE) 49c97857dbSAmit Nagal # ifdef MEM_PROGBITS_SIZE 50c97857dbSAmit Nagal # define BL31_PROGBITS_LIMIT U(MEM_BASE + \ 51c97857dbSAmit Nagal MEM_PROGBITS_SIZE) 52c97857dbSAmit Nagal # endif 53c97857dbSAmit Nagal #endif 54c97857dbSAmit Nagal 55c97857dbSAmit Nagal /******************************************************************************* 56c97857dbSAmit Nagal * BL32 specific defines. 57c97857dbSAmit Nagal ******************************************************************************/ 58c97857dbSAmit Nagal #ifndef BL32_MEM_BASE 5966569a76SMaheedhar Bollapalli # define BL32_BASE U(0x01800000) 6066569a76SMaheedhar Bollapalli # define BL32_LIMIT U(0x09800000) 61c97857dbSAmit Nagal #else 62c97857dbSAmit Nagal # define BL32_BASE U(BL32_MEM_BASE) 63c97857dbSAmit Nagal # define BL32_LIMIT U(BL32_MEM_BASE + BL32_MEM_SIZE) 64c97857dbSAmit Nagal #endif 65c97857dbSAmit Nagal 66c97857dbSAmit Nagal /******************************************************************************* 67c97857dbSAmit Nagal * BL33 specific defines. 68c97857dbSAmit Nagal ******************************************************************************/ 69c97857dbSAmit Nagal #ifndef PRELOADED_BL33_BASE 7066569a76SMaheedhar Bollapalli # define PLAT_ARM_NS_IMAGE_BASE U(0x40000000) 71c97857dbSAmit Nagal #else 72c97857dbSAmit Nagal # define PLAT_ARM_NS_IMAGE_BASE U(PRELOADED_BL33_BASE) 73c97857dbSAmit Nagal #endif 74c97857dbSAmit Nagal 75c97857dbSAmit Nagal /******************************************************************************* 76c97857dbSAmit Nagal * TSP specific defines. 77c97857dbSAmit Nagal ******************************************************************************/ 78c97857dbSAmit Nagal #define TSP_SEC_MEM_BASE BL32_BASE 79c97857dbSAmit Nagal #define TSP_SEC_MEM_SIZE (BL32_LIMIT - BL32_BASE) 80c97857dbSAmit Nagal 81c97857dbSAmit Nagal /* ID of the secure physical generic timer interrupt used by the TSP */ 82c97857dbSAmit Nagal #define ARM_IRQ_SEC_PHY_TIMER U(29) 83c97857dbSAmit Nagal #define TSP_IRQ_SEC_PHY_TIMER ARM_IRQ_SEC_PHY_TIMER 84c97857dbSAmit Nagal 85c97857dbSAmit Nagal /******************************************************************************* 86c97857dbSAmit Nagal * Platform specific page table and MMU setup constants 87c97857dbSAmit Nagal ******************************************************************************/ 88c97857dbSAmit Nagal #define PLAT_DDR_LOWMEM_MAX U(0x80000000) 89c97857dbSAmit Nagal 90c97857dbSAmit Nagal #define PLAT_PHY_ADDR_SPACE_SIZE (1ULL << 32U) 91c97857dbSAmit Nagal #define PLAT_VIRT_ADDR_SPACE_SIZE (1ULL << 32U) 92c97857dbSAmit Nagal 93c97857dbSAmit Nagal #define XILINX_OF_BOARD_DTB_MAX_SIZE U(0x200000) 94c97857dbSAmit Nagal 95c97857dbSAmit Nagal #define PLAT_OCM_BASE U(0xBBF00000) 96c97857dbSAmit Nagal #define PLAT_OCM_LIMIT U(0xBC000000) 97c97857dbSAmit Nagal 987d09198fSAkshay Belsare #if TRANSFER_LIST 99c97857dbSAmit Nagal /* 100c97857dbSAmit Nagal * FIXME: This address should come from firmware before TF-A 101c97857dbSAmit Nagal * Having this to make sure the transfer list functionality works 102c97857dbSAmit Nagal */ 10366569a76SMaheedhar Bollapalli #define FW_HANDOFF_BASE U(0x1000000) 10466569a76SMaheedhar Bollapalli #define FW_HANDOFF_SIZE U(0x600000) 105c97857dbSAmit Nagal #endif 106c97857dbSAmit Nagal 107c97857dbSAmit Nagal #define IS_TFA_IN_OCM(x) ((x >= PLAT_OCM_BASE) && (x < PLAT_OCM_LIMIT)) 108c97857dbSAmit Nagal 109c97857dbSAmit Nagal #ifndef MAX_MMAP_REGIONS 110c97857dbSAmit Nagal #if (defined(XILINX_OF_BOARD_DTB_ADDR) && !IS_TFA_IN_OCM(BL31_BASE)) 111c97857dbSAmit Nagal #define MAX_MMAP_REGIONS 11 112c97857dbSAmit Nagal #else 113c97857dbSAmit Nagal #define MAX_MMAP_REGIONS 10 114c97857dbSAmit Nagal #endif 115c97857dbSAmit Nagal #endif 116c97857dbSAmit Nagal 117c97857dbSAmit Nagal #ifndef MAX_XLAT_TABLES 118c97857dbSAmit Nagal #define MAX_XLAT_TABLES U(12) 119c97857dbSAmit Nagal #endif 120c97857dbSAmit Nagal 121c97857dbSAmit Nagal #define CACHE_WRITEBACK_SHIFT U(6) 122c97857dbSAmit Nagal #define CACHE_WRITEBACK_GRANULE (1 << CACHE_WRITEBACK_SHIFT) 123c97857dbSAmit Nagal 124c97857dbSAmit Nagal #define PLAT_GICD_BASE_VALUE U(0xE2000000) 125c97857dbSAmit Nagal #define PLAT_GICR_BASE_VALUE U(0xE2060000) 126aec66c38SSenthil Nathan Thangaraj #define PLAT_ARM_GICR_BASE PLAT_GICR_BASE_VALUE 127aec66c38SSenthil Nathan Thangaraj #define PLAT_ARM_GICD_BASE PLAT_GICD_BASE_VALUE 128c97857dbSAmit Nagal 129c97857dbSAmit Nagal /* 130c97857dbSAmit Nagal * Define a list of Group 1 Secure and Group 0 interrupts as per GICv3 131c97857dbSAmit Nagal * terminology. On a GICv2 system or mode, the lists will be merged and treated 132c97857dbSAmit Nagal * as Group 0 interrupts. 133c97857dbSAmit Nagal */ 134c97857dbSAmit Nagal #define PLAT_IPI_IRQ 89 135c97857dbSAmit Nagal #define PLAT_VERSAL_IPI_IRQ PLAT_IPI_IRQ 136c97857dbSAmit Nagal 137c97857dbSAmit Nagal #define PLAT_G1S_IRQ_PROPS(grp) \ 138c97857dbSAmit Nagal INTR_PROP_DESC(IRQ_SEC_PHY_TIMER, GIC_HIGHEST_SEC_PRIORITY, grp, \ 139c97857dbSAmit Nagal GIC_INTR_CFG_LEVEL) 140c97857dbSAmit Nagal 141c97857dbSAmit Nagal #define PLAT_G0_IRQ_PROPS(grp) \ 142c97857dbSAmit Nagal INTR_PROP_DESC(PLAT_VERSAL_IPI_IRQ, GIC_HIGHEST_SEC_PRIORITY, grp, \ 143c97857dbSAmit Nagal GIC_INTR_CFG_EDGE), \ 144*414cf08bSSenthil Nathan Thangaraj INTR_PROP_DESC(CPU_PWR_DOWN_REQ_INTR, GIC_HIGHEST_SEC_PRIORITY, grp, \ 145*414cf08bSSenthil Nathan Thangaraj GIC_INTR_CFG_EDGE) 146c97857dbSAmit Nagal 147c97857dbSAmit Nagal #define IRQ_MAX 200U 148c97857dbSAmit Nagal 149c97857dbSAmit Nagal #endif /* PLATFORM_DEF_H */ 150