xref: /rk3399_ARM-atf/plat/arm/board/juno/include/platform_def.h (revision b37872f52ab5420059d8c8172131bb12cc578059)
185135283SDan Handley /*
2dd566a9eSJayanth Dodderi Chidanand  * Copyright (c) 2014-2025, Arm Limited and Contributors. All rights reserved.
385135283SDan Handley  *
482cb2c1aSdp-arm  * SPDX-License-Identifier: BSD-3-Clause
585135283SDan Handley  */
685135283SDan Handley 
7f21c6321SAntonio Nino Diaz #ifndef PLATFORM_DEF_H
8f21c6321SAntonio Nino Diaz #define PLATFORM_DEF_H
985135283SDan Handley 
1009d40e0eSAntonio Nino Diaz #include <drivers/arm/tzc400.h>
1109d40e0eSAntonio Nino Diaz #if TRUSTED_BOARD_BOOT
12def5571dSManish V Badarkhe #include MBEDTLS_CONFIG_FILE
1309d40e0eSAntonio Nino Diaz #endif
14bd9344f6SAntonio Nino Diaz #include <plat/arm/board/common/board_css_def.h>
15bd9344f6SAntonio Nino Diaz #include <plat/arm/board/common/v2m_def.h>
16bd9344f6SAntonio Nino Diaz #include <plat/arm/common/arm_def.h>
17e9a457f4SYeoreum Yun #include <plat/arm/common/arm_spm_def.h>
18bd9344f6SAntonio Nino Diaz #include <plat/arm/css/common/css_def.h>
19bd9344f6SAntonio Nino Diaz #include <plat/arm/soc/common/soc_css_def.h>
2009d40e0eSAntonio Nino Diaz #include <plat/common/common_def.h>
2109d40e0eSAntonio Nino Diaz 
2285135283SDan Handley #include "../juno_def.h"
2370a296eeSRajasekaran Kalidoss #ifdef JUNO_ETHOSN_TZMP1
2470a296eeSRajasekaran Kalidoss #include "../juno_ethosn_tzmp1_def.h"
2570a296eeSRajasekaran Kalidoss #endif
2685135283SDan Handley 
270108047aSSoby Mathew /* Required platform porting definitions */
285f3a6030SSoby Mathew /* Juno supports system power domain */
295f3a6030SSoby Mathew #define PLAT_MAX_PWR_LVL		ARM_PWR_LVL2
305f3a6030SSoby Mathew #define PLAT_NUM_PWR_DOMAINS		(ARM_SYSTEM_COUNT + \
310108047aSSoby Mathew 					JUNO_CLUSTER_COUNT + \
325f3a6030SSoby Mathew 					PLATFORM_CORE_COUNT)
330108047aSSoby Mathew #define PLATFORM_CORE_COUNT		(JUNO_CLUSTER0_CORE_COUNT + \
340108047aSSoby Mathew 					JUNO_CLUSTER1_CORE_COUNT)
350108047aSSoby Mathew 
3685135283SDan Handley /*
375f3a6030SSoby Mathew  * Other platform porting definitions are provided by included headers
3885135283SDan Handley  */
3985135283SDan Handley 
40fad88444SYeoreum Yun #if SPMC_AT_EL3
41fad88444SYeoreum Yun /* Define memory configuration for device tree files. */
42fad88444SYeoreum Yun #define PLAT_ARM_HW_CONFIG_SIZE			SZ_2K
43fad88444SYeoreum Yun 
44fad88444SYeoreum Yun /* Define maximum size of sp manifest file. */
45fad88444SYeoreum Yun #define PLAT_ARM_SPMC_SP_MANIFEST_SIZE		SZ_2K
46fad88444SYeoreum Yun #else
47df960bccSHarrison Mutai /* Define memory configuration for device tree files. */
48df960bccSHarrison Mutai #define PLAT_ARM_HW_CONFIG_SIZE			U(0x8000)
49df960bccSHarrison Mutai 
50fad88444SYeoreum Yun /* Define maximum size of sp manifest file. */
51fad88444SYeoreum Yun #define PLAT_ARM_SPMC_SP_MANIFEST_SIZE		U(0x0)
52fad88444SYeoreum Yun #endif
53fad88444SYeoreum Yun 
5485135283SDan Handley /*
5585135283SDan Handley  * Required ARM standard platform porting definitions
5685135283SDan Handley  */
570108047aSSoby Mathew #define PLAT_ARM_CLUSTER_COUNT		JUNO_CLUSTER_COUNT
5885135283SDan Handley 
59f21c6321SAntonio Nino Diaz #define PLAT_ARM_TRUSTED_SRAM_SIZE	UL(0x00040000)	/* 256 KB */
600f58d4f2SAntonio Nino Diaz 
6185135283SDan Handley /* Use the bypass address */
62afa5cfeaSSathees Balya #define PLAT_ARM_TRUSTED_ROM_BASE	(V2M_FLASH0_BASE + \
63afa5cfeaSSathees Balya 					BL1_ROM_BYPASS_OFFSET)
6485135283SDan Handley 
65f21c6321SAntonio Nino Diaz #define NSRAM_BASE			UL(0x2e000000)
66f21c6321SAntonio Nino Diaz #define NSRAM_SIZE			UL(0x00008000)	/* 32KB */
67d7ecac73SChris Kay 
6886f297a3SSuyash Pathak #define PLAT_ARM_DRAM2_BASE		ULL(0x880000000)
6986f297a3SSuyash Pathak #define PLAT_ARM_DRAM2_SIZE		ULL(0x180000000)
7086f297a3SSuyash Pathak 
71707f0710SZelalem Aweke /* Range of kernel DTB load address */
72707f0710SZelalem Aweke #define JUNO_DTB_DRAM_MAP_START		ULL(0x82000000)
73707f0710SZelalem Aweke #define JUNO_DTB_DRAM_MAP_SIZE		ULL(0x00008000) /* 32KB */
745d5fb10fSMikael Olsson 
755d5fb10fSMikael Olsson #define ARM_DTB_DRAM_NS			MAP_REGION_FLAT(		\
76707f0710SZelalem Aweke 					JUNO_DTB_DRAM_MAP_START,	\
77707f0710SZelalem Aweke 					JUNO_DTB_DRAM_MAP_SIZE,		\
785d5fb10fSMikael Olsson 					MT_MEMORY | MT_RO | MT_NS)
795d5fb10fSMikael Olsson 
8033bcaed1SRob Hughes #ifdef JUNO_ETHOSN_TZMP1
81313b776fSMikael Olsson #define JUNO_ETHOSN_PROT_FW_RO MAP_REGION_FLAT(     \
82313b776fSMikael Olsson 		JUNO_ETHOSN_FW_TZC_PROT_DRAM2_BASE, \
83313b776fSMikael Olsson 		JUNO_ETHOSN_FW_TZC_PROT_DRAM2_SIZE, \
84313b776fSMikael Olsson 		MT_RO_DATA | MT_SECURE)
85313b776fSMikael Olsson 
8633bcaed1SRob Hughes #define JUNO_ETHOSN_PROT_FW_RW MAP_REGION_FLAT(     \
8733bcaed1SRob Hughes 		JUNO_ETHOSN_FW_TZC_PROT_DRAM2_BASE, \
8833bcaed1SRob Hughes 		JUNO_ETHOSN_FW_TZC_PROT_DRAM2_SIZE, \
8933bcaed1SRob Hughes 		MT_MEMORY | MT_RW | MT_SECURE)
9033bcaed1SRob Hughes #endif
9133bcaed1SRob Hughes 
92638b034cSRoberto Vargas /* virtual address used by dynamic mem_protect for chunk_base */
9389509904SSathees Balya #define PLAT_ARM_MEM_PROTEC_VA_FRAME	UL(0xc0000000)
94638b034cSRoberto Vargas 
9585135283SDan Handley /*
96afa5cfeaSSathees Balya  * PLAT_ARM_MAX_ROMLIB_RW_SIZE is define to use a full page
97afa5cfeaSSathees Balya  */
98afa5cfeaSSathees Balya 
99afa5cfeaSSathees Balya #if USE_ROMLIB
100afa5cfeaSSathees Balya #define PLAT_ARM_MAX_ROMLIB_RW_SIZE	UL(0x1000)
101afa5cfeaSSathees Balya #define PLAT_ARM_MAX_ROMLIB_RO_SIZE	UL(0xe000)
102e7b39089SLouis Mayencourt #define JUNO_BL2_ROMLIB_OPTIMIZATION UL(0x8000)
103afa5cfeaSSathees Balya #else
104afa5cfeaSSathees Balya #define PLAT_ARM_MAX_ROMLIB_RW_SIZE	UL(0)
105afa5cfeaSSathees Balya #define PLAT_ARM_MAX_ROMLIB_RO_SIZE	UL(0)
106e7b39089SLouis Mayencourt #define JUNO_BL2_ROMLIB_OPTIMIZATION UL(0)
107afa5cfeaSSathees Balya #endif
108afa5cfeaSSathees Balya 
109afa5cfeaSSathees Balya /*
11085135283SDan Handley  * Actual ROM size on Juno is 64 KB, but TBB currently requires at least 80 KB
11185135283SDan Handley  * in debug mode. We can test TBB on Juno bypassing the ROM and using 128 KB of
11285135283SDan Handley  * flash
11385135283SDan Handley  */
1141eb735d7SRoberto Vargas 
11585135283SDan Handley #if TRUSTED_BOARD_BOOT
116f21c6321SAntonio Nino Diaz #define PLAT_ARM_TRUSTED_ROM_SIZE	UL(0x00020000)
11785135283SDan Handley #else
118f21c6321SAntonio Nino Diaz #define PLAT_ARM_TRUSTED_ROM_SIZE	UL(0x00010000)
11985135283SDan Handley #endif /* TRUSTED_BOARD_BOOT */
12085135283SDan Handley 
121c64a0448SVikram Kanigiri /*
122c64a0448SVikram Kanigiri  * PLAT_ARM_MMAP_ENTRIES depends on the number of entries in the
123c64a0448SVikram Kanigiri  * plat_arm_mmap array defined for each BL stage.
124c64a0448SVikram Kanigiri  */
1253d8256b2SMasahiro Yamada #ifdef IMAGE_BL1
126c64a0448SVikram Kanigiri # define PLAT_ARM_MMAP_ENTRIES		7
127c64a0448SVikram Kanigiri # define MAX_XLAT_TABLES		4
128c64a0448SVikram Kanigiri #endif
129c64a0448SVikram Kanigiri 
1303d8256b2SMasahiro Yamada #ifdef IMAGE_BL2
13154661cd2SSummer Qin #ifdef SPD_opteed
13233bcaed1SRob Hughes # define PLAT_ARM_MMAP_ENTRIES		13
133f145403cSRoberto Vargas # define MAX_XLAT_TABLES		5
13454661cd2SSummer Qin #else
13533bcaed1SRob Hughes # define PLAT_ARM_MMAP_ENTRIES		11
13633bcaed1SRob Hughes # define MAX_XLAT_TABLES		5
137c64a0448SVikram Kanigiri #endif
13854661cd2SSummer Qin #endif
139c64a0448SVikram Kanigiri 
1403d8256b2SMasahiro Yamada #ifdef IMAGE_BL2U
141d323af9eSDaniel Boulby # define PLAT_ARM_MMAP_ENTRIES		5
142c64a0448SVikram Kanigiri # define MAX_XLAT_TABLES		3
143c64a0448SVikram Kanigiri #endif
144c64a0448SVikram Kanigiri 
1453d8256b2SMasahiro Yamada #ifdef IMAGE_BL31
146e9a457f4SYeoreum Yun # if SPMC_AT_EL3
1471c199c54SYeoreum Yun #   define PLAT_ARM_MMAP_ENTRIES		11
148*c76e8284SYeoreum Yun #   define MAX_XLAT_TABLES		10
149e9a457f4SYeoreum Yun #   define PLAT_SP_IMAGE_MMAP_REGIONS 30
150*c76e8284SYeoreum Yun #   define PLAT_SP_IMAGE_MAX_XLAT_TABLES 12
151e9a457f4SYeoreum Yun # else
152313b776fSMikael Olsson #   define PLAT_ARM_MMAP_ENTRIES		8
153313b776fSMikael Olsson #   define MAX_XLAT_TABLES		6
154c64a0448SVikram Kanigiri # endif
155e9a457f4SYeoreum Yun #endif
156c64a0448SVikram Kanigiri 
1573d8256b2SMasahiro Yamada #ifdef IMAGE_BL32
158638b034cSRoberto Vargas # define PLAT_ARM_MMAP_ENTRIES		6
1596f249345SYatharth Kochar # define MAX_XLAT_TABLES		4
160c64a0448SVikram Kanigiri #endif
161c64a0448SVikram Kanigiri 
162e9a457f4SYeoreum Yun #if SPMC_AT_EL3
163e9a457f4SYeoreum Yun /*
164e9a457f4SYeoreum Yun  * Number of Secure Partitions supported.
165e9a457f4SYeoreum Yun  * SPMC at EL3, uses this count to configure the maximum number of supported
166e9a457f4SYeoreum Yun  * secure partitions.
167e9a457f4SYeoreum Yun  */
168e9a457f4SYeoreum Yun #define SECURE_PARTITION_COUNT		1
169e9a457f4SYeoreum Yun 
170e9a457f4SYeoreum Yun /*
171e9a457f4SYeoreum Yun  * Number of Normal World Partitions supported.
172e9a457f4SYeoreum Yun  * SPMC at EL3, uses this count to configure the maximum number of supported
173e9a457f4SYeoreum Yun  * NWd partitions.
174e9a457f4SYeoreum Yun  */
175e9a457f4SYeoreum Yun #define NS_PARTITION_COUNT		1
176e9a457f4SYeoreum Yun 
177e9a457f4SYeoreum Yun /*
178e9a457f4SYeoreum Yun  * Number of Logical Partitions supported.
179e9a457f4SYeoreum Yun  * SPMC at EL3, uses this count to configure the maximum number of supported
180e9a457f4SYeoreum Yun  * logical partitions.
181e9a457f4SYeoreum Yun  */
182e9a457f4SYeoreum Yun #define MAX_EL3_LP_DESCS_COUNT		1
183e9a457f4SYeoreum Yun 
184e9a457f4SYeoreum Yun #endif /* SPMC_AT_EL3 */
185e9a457f4SYeoreum Yun 
186fad88444SYeoreum Yun #if TRANSFER_LIST
187fad88444SYeoreum Yun #define PLAT_ARM_FW_HANDOFF_SIZE	SZ_8K
188fad88444SYeoreum Yun 
189eee89638SYeoreum Yun #define FW_NS_HANDOFF_BASE		(PLAT_ARM_NS_IMAGE_BASE - PLAT_ARM_FW_HANDOFF_SIZE)
190fad88444SYeoreum Yun #define PLAT_ARM_EL3_FW_HANDOFF_BASE	ARM_BL_RAM_BASE
191fad88444SYeoreum Yun #define PLAT_ARM_EL3_FW_HANDOFF_LIMIT	PLAT_ARM_EL3_FW_HANDOFF_BASE + PLAT_ARM_FW_HANDOFF_SIZE
192fad88444SYeoreum Yun 
193fad88444SYeoreum Yun #define JUNO_MAP_FW_NS_HANDOFF			\
194fad88444SYeoreum Yun 	MAP_REGION_FLAT(FW_NS_HANDOFF_BASE,			\
195fad88444SYeoreum Yun 			PLAT_ARM_FW_HANDOFF_SIZE,			\
196fad88444SYeoreum Yun 			MT_MEMORY | MT_RW | MT_NS)
197fad88444SYeoreum Yun 
198fad88444SYeoreum Yun #define JUNO_MAP_EL3_FW_HANDOFF			\
199fad88444SYeoreum Yun 	MAP_REGION_FLAT(PLAT_ARM_EL3_FW_HANDOFF_BASE,			\
200fad88444SYeoreum Yun 			PLAT_ARM_FW_HANDOFF_SIZE,			\
201fad88444SYeoreum Yun 			MT_MEMORY | MT_RW | EL3_PAS)
202fad88444SYeoreum Yun #else
203fad88444SYeoreum Yun #define PLAT_ARM_FW_HANDOFF_SIZE	U(0)
204fad88444SYeoreum Yun #endif
205fad88444SYeoreum Yun 
2060289970dSAntonio Nino Diaz /*
2070289970dSAntonio Nino Diaz  * PLAT_ARM_MAX_BL1_RW_SIZE is calculated using the current BL1 RW debug size
2080289970dSAntonio Nino Diaz  * plus a little space for growth.
2090289970dSAntonio Nino Diaz  */
2101c199c54SYeoreum Yun #if TRUSTED_BOARD_BOOT || MEASURED_BOOT
211f21c6321SAntonio Nino Diaz # define PLAT_ARM_MAX_BL1_RW_SIZE	UL(0xB000)
2120289970dSAntonio Nino Diaz #else
213f21c6321SAntonio Nino Diaz # define PLAT_ARM_MAX_BL1_RW_SIZE	UL(0x6000)
2140289970dSAntonio Nino Diaz #endif
2150289970dSAntonio Nino Diaz 
2160289970dSAntonio Nino Diaz /*
2170289970dSAntonio Nino Diaz  * PLAT_ARM_MAX_BL2_SIZE is calculated using the current BL2 debug size plus a
2180289970dSAntonio Nino Diaz  * little space for growth.
2190289970dSAntonio Nino Diaz  */
2200289970dSAntonio Nino Diaz #if TRUSTED_BOARD_BOOT
2219b1eae96SQixiang Xu #if TF_MBEDTLS_KEY_ALG_ID == TF_MBEDTLS_RSA_AND_ECDSA
222dd566a9eSJayanth Dodderi Chidanand # define PLAT_ARM_MAX_BL2_SIZE	(UL(0x20000) - JUNO_BL2_ROMLIB_OPTIMIZATION)
22383a2376eSAmit Daniel Kachhap #elif TF_MBEDTLS_KEY_ALG_ID == TF_MBEDTLS_ECDSA
224e7b39089SLouis Mayencourt # define PLAT_ARM_MAX_BL2_SIZE	(UL(0x1D000) - JUNO_BL2_ROMLIB_OPTIMIZATION)
2259b1eae96SQixiang Xu #else
226e7b39089SLouis Mayencourt # define PLAT_ARM_MAX_BL2_SIZE	(UL(0x1D000) - JUNO_BL2_ROMLIB_OPTIMIZATION)
2279b1eae96SQixiang Xu #endif
2280289970dSAntonio Nino Diaz #else
229ce4ca1a8SManish V Badarkhe # define PLAT_ARM_MAX_BL2_SIZE	(UL(0x13000) - JUNO_BL2_ROMLIB_OPTIMIZATION)
2300289970dSAntonio Nino Diaz #endif
2310289970dSAntonio Nino Diaz 
2320289970dSAntonio Nino Diaz /*
233c099cd39SSoby Mathew  * Since BL31 NOBITS overlays BL2 and BL1-RW, PLAT_ARM_MAX_BL31_SIZE is
234c099cd39SSoby Mathew  * calculated using the current BL31 PROGBITS debug size plus the sizes of
235c099cd39SSoby Mathew  * BL2 and BL1-RW.  SCP_BL2 image is loaded into the space BL31 -> BL2_BASE.
236c099cd39SSoby Mathew  * Hence the BL31 PROGBITS size should be >= PLAT_CSS_MAX_SCP_BL2_SIZE.
2370289970dSAntonio Nino Diaz  */
238fad88444SYeoreum Yun #if TRANSFER_LIST
239fad88444SYeoreum Yun #define PLAT_ARM_MAX_BL31_SIZE		(ARM_BL_RAM_SIZE - PLAT_ARM_FW_HANDOFF_SIZE)
240fad88444SYeoreum Yun #else
241ce4ca1a8SManish V Badarkhe #define PLAT_ARM_MAX_BL31_SIZE		UL(0x3D000)
242fad88444SYeoreum Yun #endif
2430289970dSAntonio Nino Diaz 
2445744e874SSoby Mathew #if JUNO_AARCH32_EL3_RUNTIME
2455744e874SSoby Mathew /*
246c099cd39SSoby Mathew  * Since BL32 NOBITS overlays BL2 and BL1-RW, PLAT_ARM_MAX_BL32_SIZE is
247c099cd39SSoby Mathew  * calculated using the current BL32 PROGBITS debug size plus the sizes of
248c099cd39SSoby Mathew  * BL2 and BL1-RW.  SCP_BL2 image is loaded into the space BL32 -> BL2_BASE.
249c099cd39SSoby Mathew  * Hence the BL32 PROGBITS size should be >= PLAT_CSS_MAX_SCP_BL2_SIZE.
2505744e874SSoby Mathew  */
251ce4ca1a8SManish V Badarkhe #define PLAT_ARM_MAX_BL32_SIZE		UL(0x3D000)
2525744e874SSoby Mathew #endif
2535744e874SSoby Mathew 
254bea363adSSoby Mathew /*
2550f58d4f2SAntonio Nino Diaz  * Size of cacheable stacks
2560f58d4f2SAntonio Nino Diaz  */
2570f58d4f2SAntonio Nino Diaz #if defined(IMAGE_BL1)
2580f58d4f2SAntonio Nino Diaz # if TRUSTED_BOARD_BOOT
259f21c6321SAntonio Nino Diaz #  define PLATFORM_STACK_SIZE		UL(0x1000)
2600f58d4f2SAntonio Nino Diaz # else
261f21c6321SAntonio Nino Diaz #  define PLATFORM_STACK_SIZE		UL(0x440)
2620f58d4f2SAntonio Nino Diaz # endif
2630f58d4f2SAntonio Nino Diaz #elif defined(IMAGE_BL2)
2640f58d4f2SAntonio Nino Diaz # if TRUSTED_BOARD_BOOT
265f21c6321SAntonio Nino Diaz #  define PLATFORM_STACK_SIZE		UL(0x1000)
2660f58d4f2SAntonio Nino Diaz # else
267f21c6321SAntonio Nino Diaz #  define PLATFORM_STACK_SIZE		UL(0x400)
2680f58d4f2SAntonio Nino Diaz # endif
2690f58d4f2SAntonio Nino Diaz #elif defined(IMAGE_BL2U)
270f21c6321SAntonio Nino Diaz # define PLATFORM_STACK_SIZE		UL(0x400)
2710f58d4f2SAntonio Nino Diaz #elif defined(IMAGE_BL31)
2720f58d4f2SAntonio Nino Diaz # if PLAT_XLAT_TABLES_DYNAMIC
273f21c6321SAntonio Nino Diaz #  define PLATFORM_STACK_SIZE		UL(0x800)
2740f58d4f2SAntonio Nino Diaz # else
275f21c6321SAntonio Nino Diaz #  define PLATFORM_STACK_SIZE		UL(0x400)
2760f58d4f2SAntonio Nino Diaz # endif
2770f58d4f2SAntonio Nino Diaz #elif defined(IMAGE_BL32)
278f21c6321SAntonio Nino Diaz # define PLATFORM_STACK_SIZE		UL(0x440)
2790f58d4f2SAntonio Nino Diaz #endif
2800f58d4f2SAntonio Nino Diaz 
281b53b69caSYeoreum Yun #define PLAT_ARM_SP_IMAGE_STACK_BASE	(PLAT_SPM_BUF_BASE + \
282b53b69caSYeoreum Yun 					 PLAT_SPM_BUF_SIZE)
283e9a457f4SYeoreum Yun 
28485135283SDan Handley /* CCI related constants */
285f21c6321SAntonio Nino Diaz #define PLAT_ARM_CCI_BASE		UL(0x2c090000)
28685135283SDan Handley #define PLAT_ARM_CCI_CLUSTER0_SL_IFACE_IX	4
28785135283SDan Handley #define PLAT_ARM_CCI_CLUSTER1_SL_IFACE_IX	3
28885135283SDan Handley 
289ecf70f7bSVikram Kanigiri /* System timer related constants */
290583e0791SAntonio Nino Diaz #define PLAT_ARM_NSTIMER_FRAME_ID		U(1)
291ecf70f7bSVikram Kanigiri 
29285135283SDan Handley /* TZC related constants */
293f21c6321SAntonio Nino Diaz #define PLAT_ARM_TZC_BASE		UL(0x2a4a0000)
29485135283SDan Handley #define PLAT_ARM_TZC_NS_DEV_ACCESS	(				\
29585135283SDan Handley 		TZC_REGION_ACCESS_RDWR(TZC400_NSAID_CCI400)	|	\
29685135283SDan Handley 		TZC_REGION_ACCESS_RDWR(TZC400_NSAID_PCIE)	|	\
29785135283SDan Handley 		TZC_REGION_ACCESS_RDWR(TZC400_NSAID_HDLCD0)	|	\
29885135283SDan Handley 		TZC_REGION_ACCESS_RDWR(TZC400_NSAID_HDLCD1)	|	\
29985135283SDan Handley 		TZC_REGION_ACCESS_RDWR(TZC400_NSAID_USB)	|	\
30085135283SDan Handley 		TZC_REGION_ACCESS_RDWR(TZC400_NSAID_DMA330)	|	\
30185135283SDan Handley 		TZC_REGION_ACCESS_RDWR(TZC400_NSAID_THINLINKS)	|	\
30285135283SDan Handley 		TZC_REGION_ACCESS_RDWR(TZC400_NSAID_AP)		|	\
30385135283SDan Handley 		TZC_REGION_ACCESS_RDWR(TZC400_NSAID_GPU)	|	\
30485135283SDan Handley 		TZC_REGION_ACCESS_RDWR(TZC400_NSAID_CORESIGHT))
30585135283SDan Handley 
30696318f82SSuyash Pathak /* TZC related constants */
30796318f82SSuyash Pathak #define PLAT_ARM_TZC_FILTERS		TZC_400_REGION_ATTR_FILTER_BIT_ALL
30896318f82SSuyash Pathak 
30985135283SDan Handley /*
31085135283SDan Handley  * Required ARM CSS based platform porting definitions
31185135283SDan Handley  */
31285135283SDan Handley 
31385135283SDan Handley /* GIC related constants (no GICR in GIC-400) */
314f21c6321SAntonio Nino Diaz #define PLAT_ARM_GICD_BASE		UL(0x2c010000)
315f21c6321SAntonio Nino Diaz #define PLAT_ARM_GICC_BASE		UL(0x2c02f000)
316f21c6321SAntonio Nino Diaz #define PLAT_ARM_GICH_BASE		UL(0x2c04f000)
317f21c6321SAntonio Nino Diaz #define PLAT_ARM_GICV_BASE		UL(0x2c06f000)
31885135283SDan Handley 
319ecf70f7bSVikram Kanigiri /* MHU related constants */
320f21c6321SAntonio Nino Diaz #define PLAT_CSS_MHU_BASE		UL(0x2b1f0000)
321ecf70f7bSVikram Kanigiri 
322fdcd5413STamas Ban #if CSS_USE_SCMI_SDS_DRIVER
323fdcd5413STamas Ban /* Index of SDS region used in the communication between AP and SCP */
324fdcd5413STamas Ban #define SDS_SCP_AP_REGION_ID			U(0)
325fdcd5413STamas Ban #else
32627573c59SAchin Gupta /*
3278e083ecdSVikram Kanigiri  * Base address of the first memory region used for communication between AP
3288e083ecdSVikram Kanigiri  * and SCP. Used by the BOM and SCPI protocols.
329fdcd5413STamas Ban  *
3308e083ecdSVikram Kanigiri  * Note that this is located at the same address as SCP_BOOT_CFG_ADDR, which
3318e083ecdSVikram Kanigiri  * means the SCP/AP configuration data gets overwritten when the AP initiates
3328e083ecdSVikram Kanigiri  * communication with the SCP. The configuration data is expected to be a
3338e083ecdSVikram Kanigiri  * 32-bit word on all CSS platforms. On Juno, part of this configuration is
3348e083ecdSVikram Kanigiri  * which CPU is the primary, according to the shift and mask definitions below.
3358e083ecdSVikram Kanigiri  */
336f21c6321SAntonio Nino Diaz #define PLAT_CSS_SCP_COM_SHARED_MEM_BASE	(ARM_TRUSTED_SRAM_BASE + UL(0x80))
3378e083ecdSVikram Kanigiri #define PLAT_CSS_PRIMARY_CPU_SHIFT		8
3388e083ecdSVikram Kanigiri #define PLAT_CSS_PRIMARY_CPU_BIT_WIDTH		4
339fdcd5413STamas Ban #endif /* CSS_USE_SCMI_SDS_DRIVER */
3408e083ecdSVikram Kanigiri 
3418e083ecdSVikram Kanigiri /*
342ddc93cbaSChris Kay  * SCP_BL2 uses up whatever remaining space is available as it is loaded before
343ddc93cbaSChris Kay  * anything else in this memory region and is handed over to the SCP before
344ddc93cbaSChris Kay  * BL31 is loaded over the top.
345a8aa7fecSYatharth Kochar  */
346fad88444SYeoreum Yun #if TRANSFER_LIST
347fad88444SYeoreum Yun #define ARM_FW_CONFIG_LIMIT		((ARM_BL_RAM_BASE + PAGE_SIZE) \
348fad88444SYeoreum Yun 					+ (PAGE_SIZE / 2U))
349fad88444SYeoreum Yun #endif
350fad88444SYeoreum Yun 
351868a7d1eSChris Kay #define PLAT_CSS_MAX_SCP_BL2_SIZE \
35204e06973SManish V Badarkhe 	((SCP_BL2_LIMIT - ARM_FW_CONFIG_LIMIT) & ~PAGE_SIZE_MASK)
353868a7d1eSChris Kay 
354ddc93cbaSChris Kay #define PLAT_CSS_MAX_SCP_BL2U_SIZE	PLAT_CSS_MAX_SCP_BL2_SIZE
35553d703a5SYatharth Kochar 
356b2c363b1SJeenu Viswambharan #define PLAT_ARM_G1S_IRQ_PROPS(grp) \
357b2c363b1SJeenu Viswambharan 	CSS_G1S_IRQ_PROPS(grp), \
358b2c363b1SJeenu Viswambharan 	ARM_G1S_IRQ_PROPS(grp), \
359b2c363b1SJeenu Viswambharan 	INTR_PROP_DESC(JUNO_IRQ_DMA_SMMU, GIC_HIGHEST_SEC_PRIORITY, \
36089509904SSathees Balya 		(grp), GIC_INTR_CFG_LEVEL), \
361b2c363b1SJeenu Viswambharan 	INTR_PROP_DESC(JUNO_IRQ_HDLCD0_SMMU, GIC_HIGHEST_SEC_PRIORITY, \
36289509904SSathees Balya 		(grp), GIC_INTR_CFG_LEVEL), \
363b2c363b1SJeenu Viswambharan 	INTR_PROP_DESC(JUNO_IRQ_HDLCD1_SMMU, GIC_HIGHEST_SEC_PRIORITY, \
36489509904SSathees Balya 		(grp), GIC_INTR_CFG_LEVEL), \
365b2c363b1SJeenu Viswambharan 	INTR_PROP_DESC(JUNO_IRQ_USB_SMMU, GIC_HIGHEST_SEC_PRIORITY, \
36689509904SSathees Balya 		(grp), GIC_INTR_CFG_LEVEL), \
367b2c363b1SJeenu Viswambharan 	INTR_PROP_DESC(JUNO_IRQ_THIN_LINKS_SMMU, GIC_HIGHEST_SEC_PRIORITY, \
36889509904SSathees Balya 		(grp), GIC_INTR_CFG_LEVEL), \
369b2c363b1SJeenu Viswambharan 	INTR_PROP_DESC(JUNO_IRQ_SEC_I2C, GIC_HIGHEST_SEC_PRIORITY, \
37089509904SSathees Balya 		(grp), GIC_INTR_CFG_LEVEL), \
371b2c363b1SJeenu Viswambharan 	INTR_PROP_DESC(JUNO_IRQ_GPU_SMMU_1, GIC_HIGHEST_SEC_PRIORITY, \
37289509904SSathees Balya 		(grp), GIC_INTR_CFG_LEVEL), \
373b2c363b1SJeenu Viswambharan 	INTR_PROP_DESC(JUNO_IRQ_ETR_SMMU, GIC_HIGHEST_SEC_PRIORITY, \
37489509904SSathees Balya 		(grp), GIC_INTR_CFG_LEVEL)
37585135283SDan Handley 
376b2c363b1SJeenu Viswambharan #define PLAT_ARM_G0_IRQ_PROPS(grp)	ARM_G0_IRQ_PROPS(grp)
37727573c59SAchin Gupta 
37885135283SDan Handley /*
37985135283SDan Handley  * Required ARM CSS SoC based platform porting definitions
38085135283SDan Handley  */
38185135283SDan Handley 
38285135283SDan Handley /* CSS SoC NIC-400 Global Programmers View (GPV) */
383f21c6321SAntonio Nino Diaz #define PLAT_SOC_CSS_NIC400_BASE	UL(0x2a000000)
38485135283SDan Handley 
3857bdf0c1fSJeenu Viswambharan #define PLAT_ARM_PRIVATE_SDEI_EVENTS	ARM_SDEI_PRIVATE_EVENTS
3867bdf0c1fSJeenu Viswambharan #define PLAT_ARM_SHARED_SDEI_EVENTS	ARM_SDEI_SHARED_EVENTS
3877bdf0c1fSJeenu Viswambharan 
388eff2f444SChandni Cherukuri /* System power domain level */
389eff2f444SChandni Cherukuri #define CSS_SYSTEM_PWR_DMN_LVL		ARM_PWR_LVL2
390eff2f444SChandni Cherukuri 
391de8bc83eSManoj Kumar /*
392de8bc83eSManoj Kumar  * Physical and virtual address space limits for MMU in AARCH64 & AARCH32 modes
393de8bc83eSManoj Kumar  */
394402b3cf8SJulius Werner #ifdef __aarch64__
395de8bc83eSManoj Kumar #define PLAT_PHY_ADDR_SPACE_SIZE	(1ULL << 36)
396de8bc83eSManoj Kumar #define PLAT_VIRT_ADDR_SPACE_SIZE	(1ULL << 36)
397de8bc83eSManoj Kumar #else
398de8bc83eSManoj Kumar #define PLAT_PHY_ADDR_SPACE_SIZE	(1ULL << 32)
399de8bc83eSManoj Kumar #define PLAT_VIRT_ADDR_SPACE_SIZE	(1ULL << 32)
400de8bc83eSManoj Kumar #endif
401de8bc83eSManoj Kumar 
402fad88444SYeoreum Yun #if defined(IMAGE_BL1) && TRANSFER_LIST
403fad88444SYeoreum Yun #define PLAT_ARM_EVENT_LOG_MAX_SIZE		UL(0x200)
404fad88444SYeoreum Yun #else
405fad88444SYeoreum Yun #define PLAT_ARM_EVENT_LOG_MAX_SIZE		UL(0x400)
406fad88444SYeoreum Yun #endif
407fad88444SYeoreum Yun 
40831e703f9SAditya Angadi /* Number of SCMI channels on the platform */
40931e703f9SAditya Angadi #define PLAT_ARM_SCMI_CHANNEL_COUNT	U(1)
41031e703f9SAditya Angadi 
41133bcaed1SRob Hughes /* Protected NSAIDs and memory regions for the Arm(R) Ethos(TM)-N NPU driver */
41270a296eeSRajasekaran Kalidoss #ifdef JUNO_ETHOSN_TZMP1
413352366edSRajasekaran Kalidoss #define ETHOSN_NPU_PROT_FW_NSAID		JUNO_ETHOSN_TZC400_NSAID_FW_PROT
414352366edSRajasekaran Kalidoss #define ETHOSN_NPU_PROT_RW_DATA_NSAID		JUNO_ETHOSN_TZC400_NSAID_DATA_RW_PROT
415352366edSRajasekaran Kalidoss #define ETHOSN_NPU_PROT_RO_DATA_NSAID		JUNO_ETHOSN_TZC400_NSAID_DATA_RO_PROT
416986c4e99SMikael Olsson 
417352366edSRajasekaran Kalidoss #define ETHOSN_NPU_NS_RW_DATA_NSAID		JUNO_ETHOSN_TZC400_NSAID_DATA_RW_NS
418352366edSRajasekaran Kalidoss #define ETHOSN_NPU_NS_RO_DATA_NSAID		JUNO_ETHOSN_TZC400_NSAID_DATA_RO_NS
419986c4e99SMikael Olsson 
420352366edSRajasekaran Kalidoss #define ETHOSN_NPU_FW_IMAGE_BASE		JUNO_ETHOSN_FW_TZC_PROT_DRAM2_BASE
421352366edSRajasekaran Kalidoss #define ETHOSN_NPU_FW_IMAGE_LIMIT \
42233bcaed1SRob Hughes 	(JUNO_ETHOSN_FW_TZC_PROT_DRAM2_BASE + JUNO_ETHOSN_FW_TZC_PROT_DRAM2_SIZE)
42370a296eeSRajasekaran Kalidoss #endif
42470a296eeSRajasekaran Kalidoss 
425f21c6321SAntonio Nino Diaz #endif /* PLATFORM_DEF_H */
426