1*f91c3cb1SSiva Durga Prasad Paladugu /* 2*f91c3cb1SSiva Durga Prasad Paladugu * Copyright (c) 2018, ARM Limited and Contributors. All rights reserved. 3*f91c3cb1SSiva Durga Prasad Paladugu * 4*f91c3cb1SSiva Durga Prasad Paladugu * SPDX-License-Identifier: BSD-3-Clause 5*f91c3cb1SSiva Durga Prasad Paladugu */ 6*f91c3cb1SSiva Durga Prasad Paladugu 7*f91c3cb1SSiva Durga Prasad Paladugu #ifndef PLATFORM_DEF_H 8*f91c3cb1SSiva Durga Prasad Paladugu #define PLATFORM_DEF_H 9*f91c3cb1SSiva Durga Prasad Paladugu 10*f91c3cb1SSiva Durga Prasad Paladugu #include <arch.h> 11*f91c3cb1SSiva Durga Prasad Paladugu #include "../versal_def.h" 12*f91c3cb1SSiva Durga Prasad Paladugu 13*f91c3cb1SSiva Durga Prasad Paladugu /******************************************************************************* 14*f91c3cb1SSiva Durga Prasad Paladugu * Generic platform constants 15*f91c3cb1SSiva Durga Prasad Paladugu ******************************************************************************/ 16*f91c3cb1SSiva Durga Prasad Paladugu 17*f91c3cb1SSiva Durga Prasad Paladugu /* Size of cacheable stacks */ 18*f91c3cb1SSiva Durga Prasad Paladugu #define PLATFORM_STACK_SIZE 0x440 19*f91c3cb1SSiva Durga Prasad Paladugu 20*f91c3cb1SSiva Durga Prasad Paladugu #define PLATFORM_CORE_COUNT 2 21*f91c3cb1SSiva Durga Prasad Paladugu #define PLAT_MAX_PWR_LVL 1 22*f91c3cb1SSiva Durga Prasad Paladugu #define PLAT_MAX_RET_STATE 1 23*f91c3cb1SSiva Durga Prasad Paladugu #define PLAT_MAX_OFF_STATE 2 24*f91c3cb1SSiva Durga Prasad Paladugu 25*f91c3cb1SSiva Durga Prasad Paladugu /******************************************************************************* 26*f91c3cb1SSiva Durga Prasad Paladugu * BL31 specific defines. 27*f91c3cb1SSiva Durga Prasad Paladugu ******************************************************************************/ 28*f91c3cb1SSiva Durga Prasad Paladugu /* 29*f91c3cb1SSiva Durga Prasad Paladugu * Put BL31 at the top of the Trusted SRAM (just below the shared memory, if 30*f91c3cb1SSiva Durga Prasad Paladugu * present). BL31_BASE is calculated using the current BL31 debug size plus a 31*f91c3cb1SSiva Durga Prasad Paladugu * little space for growth. 32*f91c3cb1SSiva Durga Prasad Paladugu */ 33*f91c3cb1SSiva Durga Prasad Paladugu #ifndef VERSAL_ATF_MEM_BASE 34*f91c3cb1SSiva Durga Prasad Paladugu # define BL31_BASE 0xfffea000 35*f91c3cb1SSiva Durga Prasad Paladugu # define BL31_LIMIT 0xffffffff 36*f91c3cb1SSiva Durga Prasad Paladugu #else 37*f91c3cb1SSiva Durga Prasad Paladugu # define BL31_BASE (VERSAL_ATF_MEM_BASE) 38*f91c3cb1SSiva Durga Prasad Paladugu # define BL31_LIMIT (VERSAL_ATF_MEM_BASE + VERSAL_ATF_MEM_SIZE - 1) 39*f91c3cb1SSiva Durga Prasad Paladugu # ifdef VERSAL_ATF_MEM_PROGBITS_SIZE 40*f91c3cb1SSiva Durga Prasad Paladugu # define BL31_PROGBITS_LIMIT (VERSAL_ATF_MEM_BASE + VERSAL_ATF_MEM_PROGBITS_SIZE - 1) 41*f91c3cb1SSiva Durga Prasad Paladugu # endif 42*f91c3cb1SSiva Durga Prasad Paladugu #endif 43*f91c3cb1SSiva Durga Prasad Paladugu 44*f91c3cb1SSiva Durga Prasad Paladugu /******************************************************************************* 45*f91c3cb1SSiva Durga Prasad Paladugu * BL32 specific defines. 46*f91c3cb1SSiva Durga Prasad Paladugu ******************************************************************************/ 47*f91c3cb1SSiva Durga Prasad Paladugu #ifndef VERSAL_BL32_MEM_BASE 48*f91c3cb1SSiva Durga Prasad Paladugu # define BL32_BASE 0x60000000 49*f91c3cb1SSiva Durga Prasad Paladugu # define BL32_LIMIT 0x7fffffff 50*f91c3cb1SSiva Durga Prasad Paladugu #else 51*f91c3cb1SSiva Durga Prasad Paladugu # define BL32_BASE (VERSAL_BL32_MEM_BASE) 52*f91c3cb1SSiva Durga Prasad Paladugu # define BL32_LIMIT (VERSAL_BL32_MEM_BASE + VERSAL_BL32_MEM_SIZE - 1) 53*f91c3cb1SSiva Durga Prasad Paladugu #endif 54*f91c3cb1SSiva Durga Prasad Paladugu 55*f91c3cb1SSiva Durga Prasad Paladugu /******************************************************************************* 56*f91c3cb1SSiva Durga Prasad Paladugu * BL33 specific defines. 57*f91c3cb1SSiva Durga Prasad Paladugu ******************************************************************************/ 58*f91c3cb1SSiva Durga Prasad Paladugu #ifndef PRELOADED_BL33_BASE 59*f91c3cb1SSiva Durga Prasad Paladugu # define PLAT_VERSAL_NS_IMAGE_OFFSET 0x8000000 60*f91c3cb1SSiva Durga Prasad Paladugu #else 61*f91c3cb1SSiva Durga Prasad Paladugu # define PLAT_VERSAL_NS_IMAGE_OFFSET PRELOADED_BL33_BASE 62*f91c3cb1SSiva Durga Prasad Paladugu #endif 63*f91c3cb1SSiva Durga Prasad Paladugu 64*f91c3cb1SSiva Durga Prasad Paladugu /******************************************************************************* 65*f91c3cb1SSiva Durga Prasad Paladugu * TSP specific defines. 66*f91c3cb1SSiva Durga Prasad Paladugu ******************************************************************************/ 67*f91c3cb1SSiva Durga Prasad Paladugu #define TSP_SEC_MEM_BASE BL32_BASE 68*f91c3cb1SSiva Durga Prasad Paladugu #define TSP_SEC_MEM_SIZE (BL32_LIMIT - BL32_BASE + 1) 69*f91c3cb1SSiva Durga Prasad Paladugu 70*f91c3cb1SSiva Durga Prasad Paladugu /* ID of the secure physical generic timer interrupt used by the TSP */ 71*f91c3cb1SSiva Durga Prasad Paladugu #define TSP_IRQ_SEC_PHY_TIMER ARM_IRQ_SEC_PHY_TIMER 72*f91c3cb1SSiva Durga Prasad Paladugu 73*f91c3cb1SSiva Durga Prasad Paladugu /******************************************************************************* 74*f91c3cb1SSiva Durga Prasad Paladugu * Platform specific page table and MMU setup constants 75*f91c3cb1SSiva Durga Prasad Paladugu ******************************************************************************/ 76*f91c3cb1SSiva Durga Prasad Paladugu #define PLAT_PHY_ADDR_SPACE_SIZE (1ull << 32) 77*f91c3cb1SSiva Durga Prasad Paladugu #define PLAT_VIRT_ADDR_SPACE_SIZE (1ull << 32) 78*f91c3cb1SSiva Durga Prasad Paladugu #define MAX_MMAP_REGIONS 7 79*f91c3cb1SSiva Durga Prasad Paladugu #define MAX_XLAT_TABLES 5 80*f91c3cb1SSiva Durga Prasad Paladugu 81*f91c3cb1SSiva Durga Prasad Paladugu #define CACHE_WRITEBACK_SHIFT 6 82*f91c3cb1SSiva Durga Prasad Paladugu #define CACHE_WRITEBACK_GRANULE (1 << CACHE_WRITEBACK_SHIFT) 83*f91c3cb1SSiva Durga Prasad Paladugu 84*f91c3cb1SSiva Durga Prasad Paladugu #define PLAT_VERSAL_GICD_BASE 0xF9000000 85*f91c3cb1SSiva Durga Prasad Paladugu #define PLAT_VERSAL_GICR_BASE 0xF9080000 86*f91c3cb1SSiva Durga Prasad Paladugu 87*f91c3cb1SSiva Durga Prasad Paladugu /* 88*f91c3cb1SSiva Durga Prasad Paladugu * Define a list of Group 1 Secure and Group 0 interrupts as per GICv3 89*f91c3cb1SSiva Durga Prasad Paladugu * terminology. On a GICv2 system or mode, the lists will be merged and treated 90*f91c3cb1SSiva Durga Prasad Paladugu * as Group 0 interrupts. 91*f91c3cb1SSiva Durga Prasad Paladugu */ 92*f91c3cb1SSiva Durga Prasad Paladugu #define PLAT_VERSAL_G1S_IRQS VERSAL_IRQ_SEC_PHY_TIMER 93*f91c3cb1SSiva Durga Prasad Paladugu #define PLAT_VERSAL_G0_IRQS VERSAL_IRQ_SEC_PHY_TIMER 94*f91c3cb1SSiva Durga Prasad Paladugu 95*f91c3cb1SSiva Durga Prasad Paladugu #define PLAT_VERSAL_G1S_IRQ_PROPS(grp) \ 96*f91c3cb1SSiva Durga Prasad Paladugu INTR_PROP_DESC(VERSAL_IRQ_SEC_PHY_TIMER, GIC_HIGHEST_SEC_PRIORITY, grp, \ 97*f91c3cb1SSiva Durga Prasad Paladugu GIC_INTR_CFG_LEVEL) 98*f91c3cb1SSiva Durga Prasad Paladugu 99*f91c3cb1SSiva Durga Prasad Paladugu #define PLAT_VERSAL_G0_IRQ_PROPS(grp) 100*f91c3cb1SSiva Durga Prasad Paladugu 101*f91c3cb1SSiva Durga Prasad Paladugu #endif /* PLATFORM_DEF_H */ 102