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