xref: /rk3399_ARM-atf/plat/arm/board/a5ds/include/platform_def.h (revision 145572914b7a665ca54afe9c8d00196d2e0a39ed)
100c7d5acSUsama Arif /*
2*df960bccSHarrison Mutai  * Copyright (c) 2019-2024, Arm Limited. All rights reserved.
300c7d5acSUsama Arif  *
400c7d5acSUsama Arif  * SPDX-License-Identifier: BSD-3-Clause
500c7d5acSUsama Arif  */
600c7d5acSUsama Arif 
700c7d5acSUsama Arif #ifndef PLATFORM_DEF_H
800c7d5acSUsama Arif #define PLATFORM_DEF_H
900c7d5acSUsama Arif 
1000c7d5acSUsama Arif #include <common/tbbr/tbbr_img_def.h>
1100c7d5acSUsama Arif #include <lib/utils_def.h>
1200c7d5acSUsama Arif #include <lib/xlat_tables/xlat_tables_defs.h>
1300c7d5acSUsama Arif #include <plat/arm/board/common/v2m_def.h>
1453adebadSManish V Badarkhe #include <plat/arm/common/smccc_def.h>
1500c7d5acSUsama Arif #include <plat/common/common_def.h>
1600c7d5acSUsama Arif 
1700c7d5acSUsama Arif /* Memory location options for TSP */
1800c7d5acSUsama Arif #define ARM_DRAM_ID			2
1900c7d5acSUsama Arif 
2000c7d5acSUsama Arif #define ARM_DRAM1_BASE			UL(0x80000000)
2100c7d5acSUsama Arif #define ARM_DRAM1_SIZE			UL(0x80000000)
2200c7d5acSUsama Arif #define ARM_DRAM1_END			(ARM_DRAM1_BASE +		\
2300c7d5acSUsama Arif 					 ARM_DRAM1_SIZE - 1)
2400c7d5acSUsama Arif 
2500c7d5acSUsama Arif #define SRAM_BASE	0x2000000
2600c7d5acSUsama Arif #define SRAM_SIZE	0x200000
2700c7d5acSUsama Arif 
2800c7d5acSUsama Arif /* The first 4KB of NS DRAM1 are used as shared memory */
2900c7d5acSUsama Arif #define A5DS_SHARED_RAM_BASE		SRAM_BASE
3000c7d5acSUsama Arif #define A5DS_SHARED_RAM_SIZE		UL(0x00001000)	/* 4 KB */
3100c7d5acSUsama Arif 
3200c7d5acSUsama Arif /* The next 252 kB of NS DRAM is used to load the BL images */
3300c7d5acSUsama Arif #define ARM_BL_RAM_BASE	(A5DS_SHARED_RAM_BASE +	\
3400c7d5acSUsama Arif 					 A5DS_SHARED_RAM_SIZE)
3500c7d5acSUsama Arif #define ARM_BL_RAM_SIZE	(PLAT_ARM_BL_PLUS_SHARED_RAM_SIZE -	\
3600c7d5acSUsama Arif 					 A5DS_SHARED_RAM_SIZE)
3700c7d5acSUsama Arif 
3800c7d5acSUsama Arif #define PERIPHBASE 0x1a000000
3900c7d5acSUsama Arif #define PERIPH_SIZE  0x00240000
4000c7d5acSUsama Arif #define A5_PERIPHERALS_BASE 0x1c000000
4100c7d5acSUsama Arif #define A5_PERIPHERALS_SIZE  0x10000
4200c7d5acSUsama Arif 
43786890caSAvinash Mehta #define ARM_CACHE_WRITEBACK_SHIFT	5
4400c7d5acSUsama Arif 
4500c7d5acSUsama Arif #define ARM_IRQ_SEC_PHY_TIMER		29
4600c7d5acSUsama Arif 
4700c7d5acSUsama Arif #define ARM_IRQ_SEC_SGI_0		8
4800c7d5acSUsama Arif #define ARM_IRQ_SEC_SGI_1		9
4900c7d5acSUsama Arif #define ARM_IRQ_SEC_SGI_2		10
5000c7d5acSUsama Arif #define ARM_IRQ_SEC_SGI_3		11
5100c7d5acSUsama Arif #define ARM_IRQ_SEC_SGI_4		12
5200c7d5acSUsama Arif #define ARM_IRQ_SEC_SGI_5		13
5300c7d5acSUsama Arif #define ARM_IRQ_SEC_SGI_6		14
5400c7d5acSUsama Arif #define ARM_IRQ_SEC_SGI_7		15
5500c7d5acSUsama Arif 
5600c7d5acSUsama Arif /*
5700c7d5acSUsama Arif  * Define a list of Group 1 Secure and Group 0 interrupt properties as per GICv3
5800c7d5acSUsama Arif  * terminology. On a GICv2 system or mode, the lists will be merged and treated
5900c7d5acSUsama Arif  * as Group 0 interrupts.
6000c7d5acSUsama Arif  */
6100c7d5acSUsama Arif #define ARM_G1S_IRQ_PROPS(grp) \
6200c7d5acSUsama Arif 	INTR_PROP_DESC(ARM_IRQ_SEC_PHY_TIMER, GIC_HIGHEST_SEC_PRIORITY, (grp), \
6300c7d5acSUsama Arif 			GIC_INTR_CFG_LEVEL), \
6400c7d5acSUsama Arif 	INTR_PROP_DESC(ARM_IRQ_SEC_SGI_1, GIC_HIGHEST_SEC_PRIORITY, (grp), \
6500c7d5acSUsama Arif 			GIC_INTR_CFG_EDGE), \
6600c7d5acSUsama Arif 	INTR_PROP_DESC(ARM_IRQ_SEC_SGI_2, GIC_HIGHEST_SEC_PRIORITY, (grp), \
6700c7d5acSUsama Arif 			GIC_INTR_CFG_EDGE), \
6800c7d5acSUsama Arif 	INTR_PROP_DESC(ARM_IRQ_SEC_SGI_3, GIC_HIGHEST_SEC_PRIORITY, (grp), \
6900c7d5acSUsama Arif 			GIC_INTR_CFG_EDGE), \
7000c7d5acSUsama Arif 	INTR_PROP_DESC(ARM_IRQ_SEC_SGI_4, GIC_HIGHEST_SEC_PRIORITY, (grp), \
7100c7d5acSUsama Arif 			GIC_INTR_CFG_EDGE), \
7200c7d5acSUsama Arif 	INTR_PROP_DESC(ARM_IRQ_SEC_SGI_5, GIC_HIGHEST_SEC_PRIORITY, (grp), \
7300c7d5acSUsama Arif 			GIC_INTR_CFG_EDGE), \
7400c7d5acSUsama Arif 	INTR_PROP_DESC(ARM_IRQ_SEC_SGI_7, GIC_HIGHEST_SEC_PRIORITY, (grp), \
7500c7d5acSUsama Arif 			GIC_INTR_CFG_EDGE)
7600c7d5acSUsama Arif 
7700c7d5acSUsama Arif #define ARM_G0_IRQ_PROPS(grp) \
7800c7d5acSUsama Arif 	INTR_PROP_DESC(ARM_IRQ_SEC_SGI_6, GIC_HIGHEST_SEC_PRIORITY, (grp), \
7900c7d5acSUsama Arif 			GIC_INTR_CFG_EDGE)
8000c7d5acSUsama Arif 
8100c7d5acSUsama Arif #define A5DS_IRQ_TZ_WDOG			56
8200c7d5acSUsama Arif #define A5DS_IRQ_SEC_SYS_TIMER		57
8300c7d5acSUsama Arif 
8400c7d5acSUsama Arif /* Default cluster count for A5DS */
855b33ad17SDeepika Bhavnani #define A5DS_CLUSTER_COUNT	U(1)
8600c7d5acSUsama Arif 
8700c7d5acSUsama Arif /* Default number of CPUs per cluster on A5DS */
885b33ad17SDeepika Bhavnani #define A5DS_MAX_CPUS_PER_CLUSTER	U(4)
8900c7d5acSUsama Arif 
9000c7d5acSUsama Arif /* Default number of threads per CPU on A5DS */
915b33ad17SDeepika Bhavnani #define A5DS_MAX_PE_PER_CPU	U(1)
9200c7d5acSUsama Arif 
935b33ad17SDeepika Bhavnani #define A5DS_CORE_COUNT		U(4)
9400c7d5acSUsama Arif 
9500c7d5acSUsama Arif #define A5DS_PRIMARY_CPU	0x0
9600c7d5acSUsama Arif 
97e343bf13SAvinash Mehta #define BOOT_BASE			ARM_DRAM1_BASE
98e343bf13SAvinash Mehta #define BOOT_SIZE			UL(0x2800000)
9900c7d5acSUsama Arif 
100e343bf13SAvinash Mehta #define ARM_NS_DRAM1_BASE		(ARM_DRAM1_BASE + BOOT_SIZE)
101e343bf13SAvinash Mehta /*
102e343bf13SAvinash Mehta  * The last 2MB is meant to be NOLOAD and will not be zero
103e343bf13SAvinash Mehta  * initialized.
104e343bf13SAvinash Mehta  */
105e343bf13SAvinash Mehta #define ARM_NS_DRAM1_SIZE		(ARM_DRAM1_SIZE -		\
106e343bf13SAvinash Mehta 					 BOOT_SIZE -			\
107e343bf13SAvinash Mehta 					 0x00200000)
108e343bf13SAvinash Mehta 
109e343bf13SAvinash Mehta #define MAP_BOOT_RW          		MAP_REGION_FLAT(		\
110e343bf13SAvinash Mehta 						BOOT_BASE,		\
111e343bf13SAvinash Mehta 						BOOT_SIZE,    		\
11200c7d5acSUsama Arif 						MT_DEVICE | MT_RW | MT_SECURE)
11300c7d5acSUsama Arif 
11400c7d5acSUsama Arif #define ARM_MAP_SHARED_RAM		MAP_REGION_FLAT(		\
11500c7d5acSUsama Arif 						A5DS_SHARED_RAM_BASE,	\
11600c7d5acSUsama Arif 						A5DS_SHARED_RAM_SIZE,	\
11700c7d5acSUsama Arif 						MT_MEMORY | MT_RW | MT_SECURE)
11800c7d5acSUsama Arif 
11900c7d5acSUsama Arif #define ARM_MAP_NS_DRAM1		MAP_REGION_FLAT(		\
12000c7d5acSUsama Arif 						ARM_NS_DRAM1_BASE,	\
12100c7d5acSUsama Arif 						ARM_NS_DRAM1_SIZE,	\
12200c7d5acSUsama Arif 						MT_MEMORY | MT_RW | MT_NS)
12300c7d5acSUsama Arif 
12400c7d5acSUsama Arif #define ARM_MAP_SRAM			MAP_REGION_FLAT(		\
12500c7d5acSUsama Arif 						SRAM_BASE,		\
12600c7d5acSUsama Arif 						SRAM_SIZE,		\
12700c7d5acSUsama Arif 						MT_MEMORY | MT_RW | MT_NS)
12800c7d5acSUsama Arif 
12900c7d5acSUsama Arif /*
13000c7d5acSUsama Arif  * Mapping for the BL1 RW region. This mapping is needed by BL2 in order to
13100c7d5acSUsama Arif  * share the Mbed TLS heap. Since the heap is allocated inside BL1, it resides
13200c7d5acSUsama Arif  * in the BL1 RW region. Hence, BL2 needs access to the BL1 RW region in order
13300c7d5acSUsama Arif  * to be able to access the heap.
13400c7d5acSUsama Arif  */
13500c7d5acSUsama Arif 
13600c7d5acSUsama Arif #define ARM_MAP_BL_RO	MAP_REGION_FLAT(\
13700c7d5acSUsama Arif 						BL_CODE_BASE,\
13800c7d5acSUsama Arif 						BL_CODE_END - BL_CODE_BASE,\
13900c7d5acSUsama Arif 						MT_CODE | MT_SECURE),\
14000c7d5acSUsama Arif 					MAP_REGION_FLAT(\
14100c7d5acSUsama Arif 						BL_RO_DATA_BASE,\
14200c7d5acSUsama Arif 						BL_RO_DATA_END\
14300c7d5acSUsama Arif 						- BL_RO_DATA_BASE,	\
14400c7d5acSUsama Arif 						MT_RO_DATA | MT_SECURE)
14500c7d5acSUsama Arif 
14600c7d5acSUsama Arif #if USE_COHERENT_MEM
14700c7d5acSUsama Arif #define ARM_MAP_BL_COHERENT_RAM		MAP_REGION_FLAT(\
14800c7d5acSUsama Arif 						BL_COHERENT_RAM_BASE,\
14900c7d5acSUsama Arif 						BL_COHERENT_RAM_END	\
15000c7d5acSUsama Arif 						- BL_COHERENT_RAM_BASE, \
15100c7d5acSUsama Arif 						MT_DEVICE | MT_RW | MT_SECURE)
15200c7d5acSUsama Arif #endif
15300c7d5acSUsama Arif 
15400c7d5acSUsama Arif /*
155a07c101aSManish V Badarkhe  * Map the region for device tree configuration with read and write permissions
156a07c101aSManish V Badarkhe  */
157a07c101aSManish V Badarkhe #define ARM_MAP_BL_CONFIG_REGION	MAP_REGION_FLAT(ARM_BL_RAM_BASE,	\
158a07c101aSManish V Badarkhe 						(ARM_FW_CONFIGS_LIMIT		\
159a07c101aSManish V Badarkhe 							- ARM_BL_RAM_BASE),	\
160a07c101aSManish V Badarkhe 						MT_MEMORY | MT_RW | MT_SECURE)
161a07c101aSManish V Badarkhe 
162a07c101aSManish V Badarkhe /*
16300c7d5acSUsama Arif  * The max number of regions like RO(code), coherent and data required by
16400c7d5acSUsama Arif  * different BL stages which need to be mapped in the MMU.
16500c7d5acSUsama Arif  */
166a07c101aSManish V Badarkhe #define ARM_BL_REGIONS			6
16700c7d5acSUsama Arif 
16800c7d5acSUsama Arif #define MAX_MMAP_REGIONS		(PLAT_ARM_MMAP_ENTRIES +	\
16900c7d5acSUsama Arif 					 ARM_BL_REGIONS)
17000c7d5acSUsama Arif 
17100c7d5acSUsama Arif /* Memory mapped Generic timer interfaces  */
172786890caSAvinash Mehta #define A5DS_TIMER_BASE_FREQUENCY		UL(7500000)
17300c7d5acSUsama Arif 
17400c7d5acSUsama Arif #define ARM_CONSOLE_BAUDRATE		115200
17500c7d5acSUsama Arif 
17600c7d5acSUsama Arif #define PLAT_PHY_ADDR_SPACE_SIZE			(1ULL << 32)
17700c7d5acSUsama Arif #define PLAT_VIRT_ADDR_SPACE_SIZE			(1ULL << 32)
17800c7d5acSUsama Arif 
17900c7d5acSUsama Arif /*
18000c7d5acSUsama Arif  * This macro defines the deepest retention state possible. A higher state
18100c7d5acSUsama Arif  * id will represent an invalid or a power down state.
18200c7d5acSUsama Arif  */
18300c7d5acSUsama Arif #define PLAT_MAX_RET_STATE		1
18400c7d5acSUsama Arif 
18500c7d5acSUsama Arif /*
18600c7d5acSUsama Arif  * This macro defines the deepest power down states possible. Any state ID
18700c7d5acSUsama Arif  * higher than this is invalid.
18800c7d5acSUsama Arif  */
18900c7d5acSUsama Arif #define PLAT_MAX_OFF_STATE		2
19000c7d5acSUsama Arif 
19100c7d5acSUsama Arif /*
19200c7d5acSUsama Arif  * Some data must be aligned on the biggest cache line size in the platform.
19300c7d5acSUsama Arif  * This is known only to the platform as it might have a combination of
19400c7d5acSUsama Arif  * integrated and external caches.
19500c7d5acSUsama Arif  */
19600c7d5acSUsama Arif #define CACHE_WRITEBACK_GRANULE		(U(1) << ARM_CACHE_WRITEBACK_SHIFT)
19700c7d5acSUsama Arif 
19800c7d5acSUsama Arif /*
19904e06973SManish V Badarkhe  * To enable FW_CONFIG to be loaded by BL1, define the corresponding base
20000c7d5acSUsama Arif  * and limit. Leave enough space of BL2 meminfo.
20100c7d5acSUsama Arif  */
20204e06973SManish V Badarkhe #define ARM_FW_CONFIG_BASE		(ARM_BL_RAM_BASE + sizeof(meminfo_t))
20304e06973SManish V Badarkhe #define ARM_FW_CONFIG_LIMIT		(ARM_BL_RAM_BASE + PAGE_SIZE)
20400c7d5acSUsama Arif 
205a07c101aSManish V Badarkhe /*
206a07c101aSManish V Badarkhe  * Define limit of firmware configuration memory:
207a07c101aSManish V Badarkhe  * ARM_FW_CONFIG + ARM_BL2_MEM_DESC memory
208a07c101aSManish V Badarkhe  */
209a07c101aSManish V Badarkhe #define ARM_FW_CONFIGS_LIMIT		(ARM_BL_RAM_BASE + (PAGE_SIZE * 2))
210a07c101aSManish V Badarkhe 
211*df960bccSHarrison Mutai /* Define memory configuration for device tree files. */
212*df960bccSHarrison Mutai #define PLAT_ARM_HW_CONFIG_SIZE			U(0x01000000)
213*df960bccSHarrison Mutai 
21400c7d5acSUsama Arif /*******************************************************************************
21500c7d5acSUsama Arif  * BL1 specific defines.
21600c7d5acSUsama Arif  * BL1 RW data is relocated from ROM to RAM at runtime so we need 2 sets of
21700c7d5acSUsama Arif  * addresses.
21800c7d5acSUsama Arif  ******************************************************************************/
21900c7d5acSUsama Arif #define BL1_RO_BASE			0x00000000
22000c7d5acSUsama Arif #define BL1_RO_LIMIT			PLAT_ARM_TRUSTED_ROM_SIZE
22100c7d5acSUsama Arif /*
22200c7d5acSUsama Arif  * Put BL1 RW at the top of the memory allocated for BL images in NS DRAM.
22300c7d5acSUsama Arif  */
22400c7d5acSUsama Arif #define BL1_RW_BASE	(ARM_BL_RAM_BASE + \
22500c7d5acSUsama Arif 						ARM_BL_RAM_SIZE - \
22600c7d5acSUsama Arif 						(PLAT_ARM_MAX_BL1_RW_SIZE))
22700c7d5acSUsama Arif #define BL1_RW_LIMIT (ARM_BL_RAM_BASE + \
22800c7d5acSUsama Arif 					    (ARM_BL_RAM_SIZE))
22900c7d5acSUsama Arif /*******************************************************************************
23000c7d5acSUsama Arif  * BL2 specific defines.
23100c7d5acSUsama Arif  ******************************************************************************/
23200c7d5acSUsama Arif 
23300c7d5acSUsama Arif /*
23400c7d5acSUsama Arif  * Put BL2 just below BL1.
23500c7d5acSUsama Arif  */
23600c7d5acSUsama Arif #define BL2_BASE			(BL1_RW_BASE - A5DS_MAX_BL2_SIZE)
23700c7d5acSUsama Arif #define BL2_LIMIT			BL1_RW_BASE
23800c7d5acSUsama Arif 
23900c7d5acSUsama Arif /* Put BL32 below BL2 in NS DRAM.*/
24004e06973SManish V Badarkhe #define ARM_BL2_MEM_DESC_BASE		ARM_FW_CONFIG_LIMIT
241a07c101aSManish V Badarkhe #define ARM_BL2_MEM_DESC_LIMIT		(ARM_BL2_MEM_DESC_BASE \
242a07c101aSManish V Badarkhe 					+ (PAGE_SIZE / 2U))
24300c7d5acSUsama Arif 
24400c7d5acSUsama Arif #define BL32_BASE			((ARM_BL_RAM_BASE + ARM_BL_RAM_SIZE)\
24500c7d5acSUsama Arif 						- PLAT_ARM_MAX_BL32_SIZE)
24600c7d5acSUsama Arif #define BL32_PROGBITS_LIMIT		BL2_BASE
24700c7d5acSUsama Arif #define BL32_LIMIT			(ARM_BL_RAM_BASE + ARM_BL_RAM_SIZE)
24800c7d5acSUsama Arif 
24900c7d5acSUsama Arif /* Required platform porting definitions */
250ec885bacSUsama Arif #define PLATFORM_CORE_COUNT	A5DS_CORE_COUNT
25100c7d5acSUsama Arif #define PLAT_NUM_PWR_DOMAINS	(A5DS_CLUSTER_COUNT + \
2525b33ad17SDeepika Bhavnani 				PLATFORM_CORE_COUNT) + U(1)
25300c7d5acSUsama Arif 
25400c7d5acSUsama Arif #define PLAT_MAX_PWR_LVL	2
25500c7d5acSUsama Arif 
25600c7d5acSUsama Arif /*
25700c7d5acSUsama Arif  * Other platform porting definitions are provided by included headers
25800c7d5acSUsama Arif  */
25900c7d5acSUsama Arif 
26000c7d5acSUsama Arif /*
26100c7d5acSUsama Arif  * Required ARM standard platform porting definitions
26200c7d5acSUsama Arif  */
26300c7d5acSUsama Arif 
26400c7d5acSUsama Arif #define PLAT_ARM_BL_PLUS_SHARED_RAM_SIZE	0x00040000	/* 256 KB */
26500c7d5acSUsama Arif 
26600c7d5acSUsama Arif #define PLAT_ARM_TRUSTED_ROM_BASE	0x00000000
26700c7d5acSUsama Arif #define PLAT_ARM_TRUSTED_ROM_SIZE	0x10000	/* 64KB */
26800c7d5acSUsama Arif 
26900c7d5acSUsama Arif #define PLAT_ARM_DRAM2_SIZE		ULL(0x80000000)
27000c7d5acSUsama Arif 
27100c7d5acSUsama Arif /*
27200c7d5acSUsama Arif  * Load address of BL33 for this platform port
27300c7d5acSUsama Arif  */
27400c7d5acSUsama Arif #define PLAT_ARM_NS_IMAGE_BASE	(ARM_DRAM1_BASE + U(0x8000000))
27500c7d5acSUsama Arif 
27600c7d5acSUsama Arif /*
27700c7d5acSUsama Arif  * PLAT_ARM_MMAP_ENTRIES depends on the number of entries in the
27800c7d5acSUsama Arif  * plat_arm_mmap array defined for each BL stage.
27900c7d5acSUsama Arif  */
28000c7d5acSUsama Arif #if defined(IMAGE_BL32)
28100c7d5acSUsama Arif # define PLAT_ARM_MMAP_ENTRIES		8
28200c7d5acSUsama Arif # define MAX_XLAT_TABLES		6
28300c7d5acSUsama Arif #else
28400c7d5acSUsama Arif # define PLAT_ARM_MMAP_ENTRIES		12
28500c7d5acSUsama Arif # define MAX_XLAT_TABLES		6
28600c7d5acSUsama Arif #endif
28700c7d5acSUsama Arif 
28800c7d5acSUsama Arif /*
28900c7d5acSUsama Arif  * PLAT_ARM_MAX_BL1_RW_SIZE is calculated using the current BL1 RW debug size
29000c7d5acSUsama Arif  * plus a little space for growth.
29100c7d5acSUsama Arif  */
29200c7d5acSUsama Arif #define PLAT_ARM_MAX_BL1_RW_SIZE	0xB000
29300c7d5acSUsama Arif 
29400c7d5acSUsama Arif /*
29500c7d5acSUsama Arif  * A5DS_MAX_BL2_SIZE is calculated using the current BL2 debug size plus a
29600c7d5acSUsama Arif  * little space for growth.
29700c7d5acSUsama Arif  */
29800c7d5acSUsama Arif #define A5DS_MAX_BL2_SIZE		0x11000
29900c7d5acSUsama Arif 
30000c7d5acSUsama Arif /*
30100c7d5acSUsama Arif  * Since BL32 NOBITS overlays BL2 and BL1-RW, PLAT_ARM_MAX_BL32_SIZE is
30200c7d5acSUsama Arif  * calculated using the current SP_MIN PROGBITS debug size plus the sizes of
30300c7d5acSUsama Arif  * BL2 and BL1-RW
30400c7d5acSUsama Arif  */
30500c7d5acSUsama Arif #define PLAT_ARM_MAX_BL32_SIZE		0x3B000
30600c7d5acSUsama Arif /*
30700c7d5acSUsama Arif  * Size of cacheable stacks
30800c7d5acSUsama Arif  */
30900c7d5acSUsama Arif #if defined(IMAGE_BL1)
31000c7d5acSUsama Arif #  define PLATFORM_STACK_SIZE 0x440
31100c7d5acSUsama Arif #elif defined(IMAGE_BL2)
31200c7d5acSUsama Arif #  define PLATFORM_STACK_SIZE 0x400
31300c7d5acSUsama Arif #elif defined(IMAGE_BL32)
31400c7d5acSUsama Arif # define PLATFORM_STACK_SIZE 0x440
31500c7d5acSUsama Arif #endif
31600c7d5acSUsama Arif 
31700c7d5acSUsama Arif #define MAX_IO_DEVICES			3
31800c7d5acSUsama Arif #define MAX_IO_HANDLES			4
31900c7d5acSUsama Arif 
32000c7d5acSUsama Arif /* Reserve the last block of flash for PSCI MEM PROTECT flag */
32149e9ac28SManish V Badarkhe #define PLAT_ARM_FLASH_IMAGE_BASE	BOOT_BASE
32249e9ac28SManish V Badarkhe #define PLAT_ARM_FLASH_IMAGE_MAX_SIZE	(BOOT_SIZE - V2M_FLASH_BLOCK_SIZE)
32300c7d5acSUsama Arif 
324e343bf13SAvinash Mehta #define PLAT_ARM_NVM_BASE		BOOT_BASE
325e343bf13SAvinash Mehta #define PLAT_ARM_NVM_SIZE		(BOOT_SIZE - V2M_FLASH_BLOCK_SIZE)
32600c7d5acSUsama Arif 
32700c7d5acSUsama Arif /*
32800c7d5acSUsama Arif  * PL011 related constants
32900c7d5acSUsama Arif  */
33000c7d5acSUsama Arif #define PLAT_ARM_BOOT_UART_BASE		0x1A200000
331786890caSAvinash Mehta #define PLAT_ARM_BOOT_UART_CLK_IN_HZ	UL(7500000)
33200c7d5acSUsama Arif 
33300c7d5acSUsama Arif #define PLAT_ARM_RUN_UART_BASE		0x1A210000
334786890caSAvinash Mehta #define PLAT_ARM_RUN_UART_CLK_IN_HZ	UL(7500000)
33500c7d5acSUsama Arif 
33600c7d5acSUsama Arif #define PLAT_ARM_CRASH_UART_BASE	PLAT_ARM_RUN_UART_BASE
33700c7d5acSUsama Arif #define PLAT_ARM_CRASH_UART_CLK_IN_HZ	PLAT_ARM_RUN_UART_CLK_IN_HZ
33800c7d5acSUsama Arif 
339786890caSAvinash Mehta #define A5DS_TIMER_BASE_FREQUENCY	UL(7500000)
34000c7d5acSUsama Arif 
34100c7d5acSUsama Arif /* System timer related constants */
34200c7d5acSUsama Arif #define PLAT_ARM_NSTIMER_FRAME_ID		1
34300c7d5acSUsama Arif 
34400c7d5acSUsama Arif /* Mailbox base address */
34500c7d5acSUsama Arif #define A5DS_TRUSTED_MAILBOX_BASE	A5DS_SHARED_RAM_BASE
346e231f3a5SUsama Arif #define A5DS_TRUSTED_MAILBOX_SIZE	(8 + A5DS_HOLD_SIZE)
347e231f3a5SUsama Arif #define A5DS_HOLD_BASE		(A5DS_TRUSTED_MAILBOX_BASE + 8)
348e231f3a5SUsama Arif #define A5DS_HOLD_SIZE		(PLATFORM_CORE_COUNT * \
349e231f3a5SUsama Arif 					 A5DS_HOLD_ENTRY_SIZE)
350e231f3a5SUsama Arif #define A5DS_HOLD_ENTRY_SHIFT	3
351e231f3a5SUsama Arif #define A5DS_HOLD_ENTRY_SIZE	(1 << A5DS_HOLD_ENTRY_SHIFT)
352e231f3a5SUsama Arif #define A5DS_HOLD_STATE_WAIT	0
353e231f3a5SUsama Arif #define A5DS_HOLD_STATE_GO	1
35400c7d5acSUsama Arif 
355c20c0525SVishnu Banavath /* Snoop Control Unit base address */
356c20c0525SVishnu Banavath #define A5DS_SCU_BASE			0x1C000000
357c20c0525SVishnu Banavath 
35800c7d5acSUsama Arif /*
35900c7d5acSUsama Arif  * GIC related constants to cater for GICv2
36000c7d5acSUsama Arif  */
36100c7d5acSUsama Arif #define PLAT_ARM_GICD_BASE		0x1C001000
36200c7d5acSUsama Arif #define PLAT_ARM_GICC_BASE		0x1C000100
36300c7d5acSUsama Arif 
36400c7d5acSUsama Arif /*
36500c7d5acSUsama Arif  * Define a list of Group 1 Secure and Group 0 interrupts as per GICv3
36600c7d5acSUsama Arif  * terminology. On a GICv2 system or mode, the lists will be merged and treated
36700c7d5acSUsama Arif  * as Group 0 interrupts.
36800c7d5acSUsama Arif  */
36900c7d5acSUsama Arif #define PLAT_ARM_G1S_IRQ_PROPS(grp) \
37000c7d5acSUsama Arif 	ARM_G1S_IRQ_PROPS(grp), \
37100c7d5acSUsama Arif 	INTR_PROP_DESC(A5DS_IRQ_TZ_WDOG, GIC_HIGHEST_SEC_PRIORITY, (grp), \
37200c7d5acSUsama Arif 			GIC_INTR_CFG_LEVEL), \
37300c7d5acSUsama Arif 	INTR_PROP_DESC(A5DS_IRQ_SEC_SYS_TIMER,\
37400c7d5acSUsama Arif 		 GIC_HIGHEST_SEC_PRIORITY, (grp), \
37500c7d5acSUsama Arif 			GIC_INTR_CFG_LEVEL)
37600c7d5acSUsama Arif 
37700c7d5acSUsama Arif #define PLAT_ARM_G0_IRQ_PROPS(grp)	ARM_G0_IRQ_PROPS(grp)
37800c7d5acSUsama Arif 
37900c7d5acSUsama Arif #endif /* PLATFORM_DEF_H */
380