xref: /rk3399_ARM-atf/plat/brcm/board/stingray/include/platform_def.h (revision 926cd70a0cc3a0cbf209a87765a8dc0b869798e3)
1717448d6SSheetal Tigadoli /*
2717448d6SSheetal Tigadoli  * Copyright (c) 2015-2020, Broadcom
3717448d6SSheetal Tigadoli  *
4717448d6SSheetal Tigadoli  * SPDX-License-Identifier: BSD-3-Clause
5717448d6SSheetal Tigadoli  */
6717448d6SSheetal Tigadoli 
7717448d6SSheetal Tigadoli #ifndef PLATFORM_DEF_H
8717448d6SSheetal Tigadoli #define PLATFORM_DEF_H
9717448d6SSheetal Tigadoli 
10717448d6SSheetal Tigadoli #include <arch.h>
11717448d6SSheetal Tigadoli #include <common/tbbr/tbbr_img_def.h>
12717448d6SSheetal Tigadoli #include <plat/common/common_def.h>
13717448d6SSheetal Tigadoli 
14717448d6SSheetal Tigadoli #include <brcm_def.h>
15717448d6SSheetal Tigadoli #include "sr_def.h"
16*f29d1e0cSSheetal Tigadoli #include <cmn_plat_def.h>
17717448d6SSheetal Tigadoli 
18717448d6SSheetal Tigadoli /*
19717448d6SSheetal Tigadoli  * Most platform porting definitions provided by included headers
20717448d6SSheetal Tigadoli  */
21717448d6SSheetal Tigadoli #define PLAT_BRCM_SCP_TZC_DRAM1_SIZE	ULL(0x0)
22717448d6SSheetal Tigadoli 
23717448d6SSheetal Tigadoli /*
24717448d6SSheetal Tigadoli  * Required by standard platform porting definitions
25717448d6SSheetal Tigadoli  */
26717448d6SSheetal Tigadoli #define PLATFORM_CLUSTER0_CORE_COUNT	2
27717448d6SSheetal Tigadoli #define PLATFORM_CLUSTER1_CORE_COUNT	2
28717448d6SSheetal Tigadoli #define PLATFORM_CLUSTER2_CORE_COUNT	2
29717448d6SSheetal Tigadoli #define PLATFORM_CLUSTER3_CORE_COUNT	2
30717448d6SSheetal Tigadoli 
31717448d6SSheetal Tigadoli #define BRCM_SYSTEM_COUNT 1
329a40c0fbSSheetal Tigadoli #define BRCM_CLUSTER_COUNT 4
33717448d6SSheetal Tigadoli 
34717448d6SSheetal Tigadoli #define PLATFORM_CORE_COUNT	(PLATFORM_CLUSTER0_CORE_COUNT + \
35717448d6SSheetal Tigadoli 					PLATFORM_CLUSTER1_CORE_COUNT+ \
36717448d6SSheetal Tigadoli 					PLATFORM_CLUSTER2_CORE_COUNT+ \
379a40c0fbSSheetal Tigadoli 					PLATFORM_CLUSTER3_CORE_COUNT)
38717448d6SSheetal Tigadoli 
39717448d6SSheetal Tigadoli #define PLAT_NUM_PWR_DOMAINS	(BRCM_SYSTEM_COUNT + \
40717448d6SSheetal Tigadoli 				 BRCM_CLUSTER_COUNT + \
41717448d6SSheetal Tigadoli 				 PLATFORM_CORE_COUNT)
42717448d6SSheetal Tigadoli 
43717448d6SSheetal Tigadoli #define PLAT_MAX_PWR_LVL	MPIDR_AFFLVL2
44717448d6SSheetal Tigadoli 
45717448d6SSheetal Tigadoli /* TBD-STINGRAY */
46717448d6SSheetal Tigadoli #define CACHE_WRITEBACK_SHIFT       6
47717448d6SSheetal Tigadoli /*
48717448d6SSheetal Tigadoli  * Some data must be aligned on the biggest cache line size in the platform.
49717448d6SSheetal Tigadoli  * This is known only to the platform as it might have a combination of
50717448d6SSheetal Tigadoli  * integrated and external caches.
51717448d6SSheetal Tigadoli  */
52717448d6SSheetal Tigadoli #define CACHE_WRITEBACK_GRANULE         (1 << CACHE_WRITEBACK_SHIFT)
53717448d6SSheetal Tigadoli 
54717448d6SSheetal Tigadoli /* TBD-STINGRAY */
55717448d6SSheetal Tigadoli #define PLATFORM_MAX_AFFLVL             MPIDR_AFFLVL1
56717448d6SSheetal Tigadoli 
57717448d6SSheetal Tigadoli #define BL1_PLATFORM_STACK_SIZE 0x3300
58717448d6SSheetal Tigadoli #define BL2_PLATFORM_STACK_SIZE 0xc000
59717448d6SSheetal Tigadoli #define BL11_PLATFORM_STACK_SIZE 0x2b00
60717448d6SSheetal Tigadoli #define DEFAULT_PLATFORM_STACK_SIZE 0x400
61717448d6SSheetal Tigadoli #if IMAGE_BL1
62717448d6SSheetal Tigadoli # define PLATFORM_STACK_SIZE BL1_PLATFORM_STACK_SIZE
63717448d6SSheetal Tigadoli #else
64717448d6SSheetal Tigadoli #if IMAGE_BL2
65717448d6SSheetal Tigadoli #ifdef USE_BL1_RW
66717448d6SSheetal Tigadoli # define PLATFORM_STACK_SIZE BL2_PLATFORM_STACK_SIZE
67717448d6SSheetal Tigadoli #else
68717448d6SSheetal Tigadoli # define PLATFORM_STACK_SIZE BL1_PLATFORM_STACK_SIZE
69717448d6SSheetal Tigadoli #endif
70717448d6SSheetal Tigadoli #else
71717448d6SSheetal Tigadoli #if IMAGE_BL11
72717448d6SSheetal Tigadoli # define PLATFORM_STACK_SIZE BL11_PLATFORM_STACK_SIZE
73717448d6SSheetal Tigadoli #else
74717448d6SSheetal Tigadoli # define PLATFORM_STACK_SIZE DEFAULT_PLATFORM_STACK_SIZE
75717448d6SSheetal Tigadoli #endif
76717448d6SSheetal Tigadoli #endif
77717448d6SSheetal Tigadoli #endif
78717448d6SSheetal Tigadoli 
79717448d6SSheetal Tigadoli #define PLAT_BRCM_TRUSTED_SRAM_BASE	0x66D00000
80717448d6SSheetal Tigadoli #define PLAT_BRCM_TRUSTED_SRAM_SIZE	0x00040000
81717448d6SSheetal Tigadoli 
82717448d6SSheetal Tigadoli #ifdef RUN_BL1_FROM_QSPI /* BL1 XIP from QSPI */
83717448d6SSheetal Tigadoli # define PLAT_BRCM_TRUSTED_ROM_BASE	QSPI_BASE_ADDR
84717448d6SSheetal Tigadoli #elif RUN_BL1_FROM_NAND /* BL1 XIP from NAND */
85717448d6SSheetal Tigadoli # define PLAT_BRCM_TRUSTED_ROM_BASE	NAND_BASE_ADDR
86717448d6SSheetal Tigadoli #else /* BL1 executed in ROM */
87717448d6SSheetal Tigadoli # define PLAT_BRCM_TRUSTED_ROM_BASE	ROM_BASE_ADDR
88717448d6SSheetal Tigadoli #endif
89717448d6SSheetal Tigadoli #define PLAT_BRCM_TRUSTED_ROM_SIZE	0x00040000
90717448d6SSheetal Tigadoli 
91717448d6SSheetal Tigadoli /*******************************************************************************
92717448d6SSheetal Tigadoli  * BL1 specific defines.
93717448d6SSheetal Tigadoli  ******************************************************************************/
94717448d6SSheetal Tigadoli #define BL1_RO_BASE		        PLAT_BRCM_TRUSTED_ROM_BASE
95717448d6SSheetal Tigadoli #define BL1_RO_LIMIT			(PLAT_BRCM_TRUSTED_ROM_BASE \
96717448d6SSheetal Tigadoli 					+ PLAT_BRCM_TRUSTED_ROM_SIZE)
97717448d6SSheetal Tigadoli 
98717448d6SSheetal Tigadoli /*
99717448d6SSheetal Tigadoli  * Put BL1 RW at the beginning of the Trusted SRAM.
100717448d6SSheetal Tigadoli  */
101717448d6SSheetal Tigadoli #define BL1_RW_BASE			(BRCM_BL_RAM_BASE)
102717448d6SSheetal Tigadoli #define BL1_RW_LIMIT			(BL1_RW_BASE + 0x12000)
103717448d6SSheetal Tigadoli 
104717448d6SSheetal Tigadoli #define BL11_RW_BASE		BL1_RW_LIMIT
105717448d6SSheetal Tigadoli #define BL11_RW_LIMIT		(PLAT_BRCM_TRUSTED_SRAM_BASE + \
106717448d6SSheetal Tigadoli 				PLAT_BRCM_TRUSTED_SRAM_SIZE)
107717448d6SSheetal Tigadoli 
108717448d6SSheetal Tigadoli /*******************************************************************************
109717448d6SSheetal Tigadoli  * BL2 specific defines.
110717448d6SSheetal Tigadoli  ******************************************************************************/
111717448d6SSheetal Tigadoli #if RUN_BL2_FROM_QSPI /* BL2 XIP from QSPI */
112717448d6SSheetal Tigadoli #define BL2_BASE			QSPI_BASE_ADDR
113717448d6SSheetal Tigadoli #define BL2_LIMIT			(BL2_BASE + 0x40000)
114717448d6SSheetal Tigadoli #define BL2_RW_BASE		BL1_RW_LIMIT
115717448d6SSheetal Tigadoli #define BL2_RW_LIMIT		(PLAT_BRCM_TRUSTED_SRAM_BASE + \
116717448d6SSheetal Tigadoli 				PLAT_BRCM_TRUSTED_SRAM_SIZE)
117717448d6SSheetal Tigadoli #elif RUN_BL2_FROM_NAND /* BL2 XIP from NAND */
118717448d6SSheetal Tigadoli #define BL2_BASE			NAND_BASE_ADDR
119717448d6SSheetal Tigadoli #define BL2_LIMIT			(BL2_BASE + 0x40000)
120717448d6SSheetal Tigadoli #define BL2_RW_BASE		BL1_RW_LIMIT
121717448d6SSheetal Tigadoli #define BL2_RW_LIMIT		(PLAT_BRCM_TRUSTED_SRAM_BASE + \
122717448d6SSheetal Tigadoli 				PLAT_BRCM_TRUSTED_SRAM_SIZE)
123717448d6SSheetal Tigadoli #else
124717448d6SSheetal Tigadoli #define BL2_BASE			(BL1_RW_LIMIT + PAGE_SIZE)
125717448d6SSheetal Tigadoli #define BL2_LIMIT			(BRCM_BL_RAM_BASE + BRCM_BL_RAM_SIZE)
126717448d6SSheetal Tigadoli #endif
127717448d6SSheetal Tigadoli 
128717448d6SSheetal Tigadoli /*
129717448d6SSheetal Tigadoli  * BL1 persistent area in internal SRAM
130717448d6SSheetal Tigadoli  * This area will increase as more features gets into BL1
131717448d6SSheetal Tigadoli  */
132717448d6SSheetal Tigadoli #define BL1_PERSISTENT_DATA_SIZE 0x2000
133717448d6SSheetal Tigadoli 
134717448d6SSheetal Tigadoli /* To reduce BL2 runtime footprint, we can re-use some BL1_RW area */
135717448d6SSheetal Tigadoli #define BL1_RW_RECLAIM_BASE (PLAT_BRCM_TRUSTED_SRAM_BASE + \
136717448d6SSheetal Tigadoli 			     BL1_PERSISTENT_DATA_SIZE)
137717448d6SSheetal Tigadoli 
138717448d6SSheetal Tigadoli /*******************************************************************************
139717448d6SSheetal Tigadoli  * BL3-1 specific defines.
140717448d6SSheetal Tigadoli  ******************************************************************************/
141717448d6SSheetal Tigadoli /* Max Size of BL31 (in DRAM) */
142717448d6SSheetal Tigadoli #define PLAT_BRCM_MAX_BL31_SIZE		0x30000
143717448d6SSheetal Tigadoli 
144717448d6SSheetal Tigadoli #ifdef USE_DDR
145717448d6SSheetal Tigadoli #define BL31_BASE			BRCM_AP_TZC_DRAM1_BASE
146717448d6SSheetal Tigadoli 
147717448d6SSheetal Tigadoli #define BL31_LIMIT			(BRCM_AP_TZC_DRAM1_BASE + \
148717448d6SSheetal Tigadoli 					PLAT_BRCM_MAX_BL31_SIZE)
149717448d6SSheetal Tigadoli #else
150717448d6SSheetal Tigadoli /* Put BL3-1 at the end of external on-board SRAM connected as NOR flash */
151717448d6SSheetal Tigadoli #define BL31_BASE			(NOR_BASE_ADDR + NOR_SIZE - \
152717448d6SSheetal Tigadoli 					PLAT_BRCM_MAX_BL31_SIZE)
153717448d6SSheetal Tigadoli 
154717448d6SSheetal Tigadoli #define BL31_LIMIT			(NOR_BASE_ADDR + NOR_SIZE)
155717448d6SSheetal Tigadoli #endif
156717448d6SSheetal Tigadoli 
157717448d6SSheetal Tigadoli #define SECURE_DDR_END_ADDRESS		BL31_LIMIT
158717448d6SSheetal Tigadoli 
159717448d6SSheetal Tigadoli #ifdef NEED_SCP_BL2
160717448d6SSheetal Tigadoli #define SCP_BL2_BASE			BL31_BASE
161717448d6SSheetal Tigadoli #define PLAT_MAX_SCP_BL2_SIZE	0x9000
162717448d6SSheetal Tigadoli #define PLAT_SCP_COM_SHARED_MEM_BASE (CRMU_SHARED_SRAM_BASE)
163717448d6SSheetal Tigadoli /* dummy defined */
164717448d6SSheetal Tigadoli #define PLAT_BRCM_MHU_BASE		0x0
165717448d6SSheetal Tigadoli #endif
166717448d6SSheetal Tigadoli 
167717448d6SSheetal Tigadoli #define SECONDARY_CPU_SPIN_BASE_ADDR	BRCM_SHARED_RAM_BASE
168717448d6SSheetal Tigadoli 
169717448d6SSheetal Tigadoli /* Generic system timer counter frequency */
170717448d6SSheetal Tigadoli #ifndef SYSCNT_FREQ
171717448d6SSheetal Tigadoli #define SYSCNT_FREQ			(125 * 1000 * 1000)
172717448d6SSheetal Tigadoli #endif
173717448d6SSheetal Tigadoli 
174717448d6SSheetal Tigadoli /*
175717448d6SSheetal Tigadoli  * Enable the BL32 definitions, only when optee os is selected as secure
176717448d6SSheetal Tigadoli  * payload (BL32).
177717448d6SSheetal Tigadoli  */
178717448d6SSheetal Tigadoli #ifdef SPD_opteed
179717448d6SSheetal Tigadoli /*
180717448d6SSheetal Tigadoli  * Reserved Memory Map : SHMEM & TZDRAM.
181717448d6SSheetal Tigadoli  *
182717448d6SSheetal Tigadoli  * +--------+----------+ 0x8D000000
183717448d6SSheetal Tigadoli  * | SHMEM (NS)         | 16MB
184717448d6SSheetal Tigadoli  * +-------------------+ 0x8E000000
185717448d6SSheetal Tigadoli  * |        | TEE_RAM(S)| 4MB
186717448d6SSheetal Tigadoli  * + TZDRAM +----------+ 0x8E400000
187717448d6SSheetal Tigadoli  * |        | TA_RAM(S) | 12MB
188717448d6SSheetal Tigadoli  * +-------------------+ 0x8F000000
189717448d6SSheetal Tigadoli  * | BL31 Binary (S)    | 192KB
190717448d6SSheetal Tigadoli  * +-------------------+ 0x8F030000
191717448d6SSheetal Tigadoli  */
192717448d6SSheetal Tigadoli 
193717448d6SSheetal Tigadoli #define BL32_VA_SIZE		(4 * 1024 * 1024)
194717448d6SSheetal Tigadoli #define BL32_BASE		(0x8E000000)
195717448d6SSheetal Tigadoli #define BL32_LIMIT		(BL32_BASE + BL32_VA_SIZE)
196717448d6SSheetal Tigadoli #define TSP_SEC_MEM_BASE	BL32_BASE
197717448d6SSheetal Tigadoli #define TSP_SEC_MEM_SIZE	BL32_VA_SIZE
198717448d6SSheetal Tigadoli #endif
199717448d6SSheetal Tigadoli 
200717448d6SSheetal Tigadoli #ifdef SPD_opteed
201717448d6SSheetal Tigadoli 	#define SECURE_DDR_BASE_ADDRESS BL32_BASE
202717448d6SSheetal Tigadoli #else
203717448d6SSheetal Tigadoli 	#define SECURE_DDR_BASE_ADDRESS BL31_BASE
204717448d6SSheetal Tigadoli #endif
205717448d6SSheetal Tigadoli /*******************************************************************************
206717448d6SSheetal Tigadoli  * Platform specific page table and MMU setup constants
207717448d6SSheetal Tigadoli  ******************************************************************************/
208717448d6SSheetal Tigadoli 
209717448d6SSheetal Tigadoli #define MAX_XLAT_TABLES		7
210717448d6SSheetal Tigadoli 
211717448d6SSheetal Tigadoli #define PLAT_BRCM_MMAP_ENTRIES	10
212717448d6SSheetal Tigadoli 
213717448d6SSheetal Tigadoli #define MAX_MMAP_REGIONS		(PLAT_BRCM_MMAP_ENTRIES +	\
214717448d6SSheetal Tigadoli 					 BRCM_BL_REGIONS)
215717448d6SSheetal Tigadoli 
216717448d6SSheetal Tigadoli #ifdef USE_DDR
217717448d6SSheetal Tigadoli #ifdef BL33_OVERRIDE_LOAD_ADDR
218717448d6SSheetal Tigadoli #define PLAT_BRCM_NS_IMAGE_OFFSET	BL33_OVERRIDE_LOAD_ADDR
219717448d6SSheetal Tigadoli #else
220717448d6SSheetal Tigadoli /*
221717448d6SSheetal Tigadoli  * BL3-3 image starting offset.
222717448d6SSheetal Tigadoli  * Putting start of DRAM as of now.
223717448d6SSheetal Tigadoli  */
224717448d6SSheetal Tigadoli #define PLAT_BRCM_NS_IMAGE_OFFSET	0x80000000
225717448d6SSheetal Tigadoli #endif /* BL33_OVERRIDE_LOAD_ADDR */
226717448d6SSheetal Tigadoli #else
227717448d6SSheetal Tigadoli /*
228717448d6SSheetal Tigadoli  * BL3-3 image starting offset.
229717448d6SSheetal Tigadoli  * Putting start of external on-board SRAM as of now.
230717448d6SSheetal Tigadoli  */
231717448d6SSheetal Tigadoli #define PLAT_BRCM_NS_IMAGE_OFFSET	NOR_BASE_ADDR
232717448d6SSheetal Tigadoli #endif /* USE_DDR */
233717448d6SSheetal Tigadoli /******************************************************************************
234717448d6SSheetal Tigadoli  * Required platform porting definitions common to all BRCM platforms
235717448d6SSheetal Tigadoli  *****************************************************************************/
236717448d6SSheetal Tigadoli 
237717448d6SSheetal Tigadoli #define MAX_IO_DEVICES			5
238717448d6SSheetal Tigadoli #define MAX_IO_HANDLES			6
239717448d6SSheetal Tigadoli 
240717448d6SSheetal Tigadoli #define PRIMARY_CPU		0
241717448d6SSheetal Tigadoli 
242717448d6SSheetal Tigadoli /* GIC Parameter */
243717448d6SSheetal Tigadoli #define PLAT_BRCM_GICD_BASE	GIC500_BASE
244717448d6SSheetal Tigadoli #define PLAT_BRCM_GICR_BASE	(GIC500_BASE + 0x200000)
245717448d6SSheetal Tigadoli 
246717448d6SSheetal Tigadoli /* Define secure interrupt as per Group here */
247717448d6SSheetal Tigadoli #define PLAT_BRCM_G1S_IRQ_PROPS(grp) \
248717448d6SSheetal Tigadoli 	INTR_PROP_DESC(BRCM_IRQ_SEC_SGI_1, GIC_HIGHEST_SEC_PRIORITY, (grp), \
249717448d6SSheetal Tigadoli 			GIC_INTR_CFG_EDGE), \
250717448d6SSheetal Tigadoli 	INTR_PROP_DESC(BRCM_IRQ_SEC_SPI_0, GIC_HIGHEST_SEC_PRIORITY, (grp), \
251717448d6SSheetal Tigadoli 			GIC_INTR_CFG_EDGE)
252717448d6SSheetal Tigadoli 
253717448d6SSheetal Tigadoli #define PLAT_BRCM_G0_IRQ_PROPS(grp) \
254717448d6SSheetal Tigadoli 	INTR_PROP_DESC(BRCM_IRQ_SEC_SGI_0, PLAT_SDEI_NORMAL_PRI, (grp), \
255717448d6SSheetal Tigadoli 			GIC_INTR_CFG_EDGE), \
256717448d6SSheetal Tigadoli 
257717448d6SSheetal Tigadoli /*
258717448d6SSheetal Tigadoli  *CCN 502 related constants.
259717448d6SSheetal Tigadoli  */
260717448d6SSheetal Tigadoli #define PLAT_BRCM_CLUSTER_COUNT 4  /* Number of RN-F Masters */
261717448d6SSheetal Tigadoli #define PLAT_BRCM_CLUSTER_TO_CCN_ID_MAP	CLUSTER0_NODE_ID, CLUSTER1_NODE_ID, CLUSTER2_NODE_ID, CLUSTER3_NODE_ID
262717448d6SSheetal Tigadoli #define CCN_SIZE		0x1000000
263717448d6SSheetal Tigadoli #define CLUSTER0_NODE_ID	1
264717448d6SSheetal Tigadoli #define CLUSTER1_NODE_ID	7
265717448d6SSheetal Tigadoli #define CLUSTER2_NODE_ID	9
266717448d6SSheetal Tigadoli #define CLUSTER3_NODE_ID	15
267717448d6SSheetal Tigadoli 
268717448d6SSheetal Tigadoli #endif
269