1*91f16700Schasinglulu /* 2*91f16700Schasinglulu * Copyright (c) 2020-2023, ARM Limited and Contributors. All rights reserved. 3*91f16700Schasinglulu * 4*91f16700Schasinglulu * SPDX-License-Identifier: BSD-3-Clause 5*91f16700Schasinglulu */ 6*91f16700Schasinglulu 7*91f16700Schasinglulu #ifndef PLATFORM_DEF_H 8*91f16700Schasinglulu #define PLATFORM_DEF_H 9*91f16700Schasinglulu 10*91f16700Schasinglulu #include <lib/utils_def.h> 11*91f16700Schasinglulu #include <sgi_sdei.h> 12*91f16700Schasinglulu #include <sgi_soc_platform_def_v2.h> 13*91f16700Schasinglulu 14*91f16700Schasinglulu #if (CSS_SGI_PLATFORM_VARIANT == 1) 15*91f16700Schasinglulu #define PLAT_ARM_CLUSTER_COUNT U(8) 16*91f16700Schasinglulu #elif (CSS_SGI_PLATFORM_VARIANT == 2) 17*91f16700Schasinglulu #define PLAT_ARM_CLUSTER_COUNT U(4) 18*91f16700Schasinglulu #else 19*91f16700Schasinglulu #define PLAT_ARM_CLUSTER_COUNT U(16) 20*91f16700Schasinglulu #endif 21*91f16700Schasinglulu 22*91f16700Schasinglulu #define CSS_SGI_MAX_CPUS_PER_CLUSTER U(1) 23*91f16700Schasinglulu #define CSS_SGI_MAX_PE_PER_CPU U(1) 24*91f16700Schasinglulu 25*91f16700Schasinglulu #define PLAT_CSS_MHU_BASE UL(0x2A920000) 26*91f16700Schasinglulu #define PLAT_MHUV2_BASE PLAT_CSS_MHU_BASE 27*91f16700Schasinglulu 28*91f16700Schasinglulu #define CSS_SYSTEM_PWR_DMN_LVL ARM_PWR_LVL2 29*91f16700Schasinglulu #define PLAT_MAX_PWR_LVL ARM_PWR_LVL1 30*91f16700Schasinglulu 31*91f16700Schasinglulu /* TZC Related Constants */ 32*91f16700Schasinglulu #define PLAT_ARM_TZC_BASE UL(0x10720000) 33*91f16700Schasinglulu #define PLAT_ARM_TZC_FILTERS TZC_400_REGION_ATTR_FILTER_BIT(0) 34*91f16700Schasinglulu 35*91f16700Schasinglulu #define TZC400_OFFSET UL(0x1000000) 36*91f16700Schasinglulu 37*91f16700Schasinglulu #if (CSS_SGI_PLATFORM_VARIANT == 1) 38*91f16700Schasinglulu #define TZC400_COUNT U(2) 39*91f16700Schasinglulu #elif (CSS_SGI_PLATFORM_VARIANT == 2) 40*91f16700Schasinglulu #define TZC400_COUNT U(4) 41*91f16700Schasinglulu #else 42*91f16700Schasinglulu #define TZC400_COUNT U(8) 43*91f16700Schasinglulu #endif 44*91f16700Schasinglulu 45*91f16700Schasinglulu #define TZC400_BASE(n) (PLAT_ARM_TZC_BASE + \ 46*91f16700Schasinglulu (n * TZC400_OFFSET)) 47*91f16700Schasinglulu 48*91f16700Schasinglulu #define TZC_NSAID_ALL_AP U(0) 49*91f16700Schasinglulu #define TZC_NSAID_PCI U(1) 50*91f16700Schasinglulu #define TZC_NSAID_HDLCD0 U(2) 51*91f16700Schasinglulu #define TZC_NSAID_DMA U(5) 52*91f16700Schasinglulu #define TZC_NSAID_DMA2 U(8) 53*91f16700Schasinglulu #define TZC_NSAID_CLCD U(7) 54*91f16700Schasinglulu #define TZC_NSAID_AP U(9) 55*91f16700Schasinglulu #define TZC_NSAID_VIRTIO U(15) 56*91f16700Schasinglulu 57*91f16700Schasinglulu #define PLAT_ARM_TZC_NS_DEV_ACCESS \ 58*91f16700Schasinglulu (TZC_REGION_ACCESS_RDWR(TZC_NSAID_ALL_AP)) | \ 59*91f16700Schasinglulu (TZC_REGION_ACCESS_RDWR(TZC_NSAID_HDLCD0)) | \ 60*91f16700Schasinglulu (TZC_REGION_ACCESS_RDWR(TZC_NSAID_PCI)) | \ 61*91f16700Schasinglulu (TZC_REGION_ACCESS_RDWR(TZC_NSAID_DMA)) | \ 62*91f16700Schasinglulu (TZC_REGION_ACCESS_RDWR(TZC_NSAID_DMA2)) | \ 63*91f16700Schasinglulu (TZC_REGION_ACCESS_RDWR(TZC_NSAID_AP)) | \ 64*91f16700Schasinglulu (TZC_REGION_ACCESS_RDWR(TZC_NSAID_CLCD)) | \ 65*91f16700Schasinglulu (TZC_REGION_ACCESS_RDWR(TZC_NSAID_VIRTIO)) 66*91f16700Schasinglulu 67*91f16700Schasinglulu /* 68*91f16700Schasinglulu * Physical and virtual address space limits for MMU in AARCH64 & AARCH32 modes 69*91f16700Schasinglulu */ 70*91f16700Schasinglulu #ifdef __aarch64__ 71*91f16700Schasinglulu #if (CSS_SGI_PLATFORM_VARIANT == 2) 72*91f16700Schasinglulu #define CSS_SGI_ADDR_BITS_PER_CHIP U(46) /* 64TB */ 73*91f16700Schasinglulu #else 74*91f16700Schasinglulu #define CSS_SGI_ADDR_BITS_PER_CHIP U(42) /* 4TB */ 75*91f16700Schasinglulu #endif 76*91f16700Schasinglulu 77*91f16700Schasinglulu #define PLAT_PHY_ADDR_SPACE_SIZE CSS_SGI_REMOTE_CHIP_MEM_OFFSET( \ 78*91f16700Schasinglulu CSS_SGI_CHIP_COUNT) 79*91f16700Schasinglulu #define PLAT_VIRT_ADDR_SPACE_SIZE CSS_SGI_REMOTE_CHIP_MEM_OFFSET( \ 80*91f16700Schasinglulu CSS_SGI_CHIP_COUNT) 81*91f16700Schasinglulu #else 82*91f16700Schasinglulu #define PLAT_PHY_ADDR_SPACE_SIZE (1ULL << 32) 83*91f16700Schasinglulu #define PLAT_VIRT_ADDR_SPACE_SIZE (1ULL << 32) 84*91f16700Schasinglulu #endif 85*91f16700Schasinglulu 86*91f16700Schasinglulu /* GIC related constants */ 87*91f16700Schasinglulu #define PLAT_ARM_GICD_BASE UL(0x30000000) 88*91f16700Schasinglulu #define PLAT_ARM_GICC_BASE UL(0x2C000000) 89*91f16700Schasinglulu 90*91f16700Schasinglulu /* Virtual address used by dynamic mem_protect for chunk_base */ 91*91f16700Schasinglulu #define PLAT_ARM_MEM_PROTEC_VA_FRAME UL(0xC0000000) 92*91f16700Schasinglulu 93*91f16700Schasinglulu #if (CSS_SGI_PLATFORM_VARIANT == 1) 94*91f16700Schasinglulu #define PLAT_ARM_GICR_BASE UL(0x30100000) 95*91f16700Schasinglulu #elif (CSS_SGI_PLATFORM_VARIANT == 3) 96*91f16700Schasinglulu #define PLAT_ARM_GICR_BASE UL(0x30300000) 97*91f16700Schasinglulu #else 98*91f16700Schasinglulu #define PLAT_ARM_GICR_BASE UL(0x301C0000) 99*91f16700Schasinglulu #endif 100*91f16700Schasinglulu 101*91f16700Schasinglulu /* Interrupt priority level for shutdown/reboot */ 102*91f16700Schasinglulu #define PLAT_REBOOT_PRI GIC_HIGHEST_SEC_PRIORITY 103*91f16700Schasinglulu #define PLAT_EHF_DESC EHF_PRI_DESC(PLAT_PRI_BITS, PLAT_REBOOT_PRI) 104*91f16700Schasinglulu 105*91f16700Schasinglulu /* 106*91f16700Schasinglulu * Number of Secure Partitions supported. 107*91f16700Schasinglulu * SPMC at EL3, uses this count to configure the maximum number of supported 108*91f16700Schasinglulu * secure partitions. 109*91f16700Schasinglulu */ 110*91f16700Schasinglulu #define SECURE_PARTITION_COUNT 1 111*91f16700Schasinglulu 112*91f16700Schasinglulu /* 113*91f16700Schasinglulu * Number of NWd Partitions supported. 114*91f16700Schasinglulu * SPMC at EL3, uses this count to configure the maximum number of supported 115*91f16700Schasinglulu * nwld partitions. 116*91f16700Schasinglulu */ 117*91f16700Schasinglulu #define NS_PARTITION_COUNT 1 118*91f16700Schasinglulu 119*91f16700Schasinglulu /* 120*91f16700Schasinglulu * Number of Logical Partitions supported. 121*91f16700Schasinglulu * SPMC at EL3, uses this count to configure the maximum number of supported 122*91f16700Schasinglulu * logical partitions. 123*91f16700Schasinglulu */ 124*91f16700Schasinglulu #define MAX_EL3_LP_DESCS_COUNT 1 125*91f16700Schasinglulu 126*91f16700Schasinglulu #endif /* PLATFORM_DEF_H */ 127