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