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