xref: /arm-trusted-firmware/plat/arm/board/rdn2/include/platform_def.h (revision 91f16700b400a8c0651d24a598fc48ee2997a0d7)
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