xref: /rk3399_ARM-atf/include/plat/marvell/armada/a8k/common/marvell_def.h (revision edd8188d32eb989c069da185f47425ac739bfdfd)
1a2847172SGrzegorz Jaszczyk /*
2a2847172SGrzegorz Jaszczyk  * Copyright (C) 2018 Marvell International Ltd.
3a2847172SGrzegorz Jaszczyk  *
4a2847172SGrzegorz Jaszczyk  * SPDX-License-Identifier:     BSD-3-Clause
5a2847172SGrzegorz Jaszczyk  * https://spdx.org/licenses
6a2847172SGrzegorz Jaszczyk  */
7a2847172SGrzegorz Jaszczyk 
8a2847172SGrzegorz Jaszczyk #ifndef MARVELL_DEF_H
9a2847172SGrzegorz Jaszczyk #define MARVELL_DEF_H
10a2847172SGrzegorz Jaszczyk 
11a2847172SGrzegorz Jaszczyk #include <platform_def.h>
12a2847172SGrzegorz Jaszczyk 
13a2847172SGrzegorz Jaszczyk #include <arch.h>
14a2847172SGrzegorz Jaszczyk #include <common/tbbr/tbbr_img_def.h>
15a2847172SGrzegorz Jaszczyk #include <lib/xlat_tables/xlat_tables_v2.h>
16a2847172SGrzegorz Jaszczyk #include <plat/common/common_def.h>
17a2847172SGrzegorz Jaszczyk 
18a2847172SGrzegorz Jaszczyk /******************************************************************************
19a2847172SGrzegorz Jaszczyk  * Definitions common to all MARVELL standard platforms
20a2847172SGrzegorz Jaszczyk  *****************************************************************************/
21a2847172SGrzegorz Jaszczyk 
22a2847172SGrzegorz Jaszczyk /* Special value used to verify platform parameters from BL2 to BL31 */
23a2847172SGrzegorz Jaszczyk #define MARVELL_BL31_PLAT_PARAM_VAL		0x0f1e2d3c4b5a6978ULL
24a2847172SGrzegorz Jaszczyk 
25a2847172SGrzegorz Jaszczyk 
26a2847172SGrzegorz Jaszczyk #define MARVELL_CACHE_WRITEBACK_SHIFT	6
27a2847172SGrzegorz Jaszczyk 
28a2847172SGrzegorz Jaszczyk /*
29a2847172SGrzegorz Jaszczyk  * Macros mapping the MPIDR Affinity levels to MARVELL Platform Power levels.
30a2847172SGrzegorz Jaszczyk  * The power levels have a 1:1 mapping with the MPIDR affinity levels.
31a2847172SGrzegorz Jaszczyk  */
32a2847172SGrzegorz Jaszczyk #define MARVELL_PWR_LVL0		MPIDR_AFFLVL0
33a2847172SGrzegorz Jaszczyk #define MARVELL_PWR_LVL1		MPIDR_AFFLVL1
34a2847172SGrzegorz Jaszczyk #define MARVELL_PWR_LVL2		MPIDR_AFFLVL2
35a2847172SGrzegorz Jaszczyk 
36a2847172SGrzegorz Jaszczyk /*
37a2847172SGrzegorz Jaszczyk  *  Macros for local power states in Marvell platforms encoded by
38a2847172SGrzegorz Jaszczyk  *  State-ID field within the power-state parameter.
39a2847172SGrzegorz Jaszczyk  */
40a2847172SGrzegorz Jaszczyk /* Local power state for power domains in Run state. */
41a2847172SGrzegorz Jaszczyk #define MARVELL_LOCAL_STATE_RUN	0
42a2847172SGrzegorz Jaszczyk /* Local power state for retention. Valid only for CPU power domains */
43a2847172SGrzegorz Jaszczyk #define MARVELL_LOCAL_STATE_RET	1
44a2847172SGrzegorz Jaszczyk /*
45a2847172SGrzegorz Jaszczyk  * Local power state for OFF/power-down. Valid for CPU
46a2847172SGrzegorz Jaszczyk  * and cluster power domains
47a2847172SGrzegorz Jaszczyk  */
48a2847172SGrzegorz Jaszczyk #define MARVELL_LOCAL_STATE_OFF	2
49a2847172SGrzegorz Jaszczyk 
5063a0b127SKonstantin Porotchkin /* This leaves a gap between end of DRAM and start of ROM block */
5163a0b127SKonstantin Porotchkin #define MARVELL_TRUSTED_DRAM_SIZE	0x80000	/* 512 KB */
5263a0b127SKonstantin Porotchkin 
53a2847172SGrzegorz Jaszczyk /* The first 4KB of Trusted SRAM are used as shared memory */
5463a0b127SKonstantin Porotchkin #define MARVELL_SHARED_RAM_BASE		PLAT_MARVELL_ATF_BASE
55a2847172SGrzegorz Jaszczyk #define MARVELL_SHARED_RAM_SIZE		0x00001000	/* 4 KB */
56a2847172SGrzegorz Jaszczyk 
57a2847172SGrzegorz Jaszczyk /* The remaining Trusted SRAM is used to load the BL images */
58a2847172SGrzegorz Jaszczyk #define MARVELL_BL_RAM_BASE		(MARVELL_SHARED_RAM_BASE +	\
59a2847172SGrzegorz Jaszczyk 					 MARVELL_SHARED_RAM_SIZE)
6063a0b127SKonstantin Porotchkin #define MARVELL_BL_RAM_SIZE		(MARVELL_TRUSTED_DRAM_SIZE - \
61a2847172SGrzegorz Jaszczyk 					 MARVELL_SHARED_RAM_SIZE)
62a2847172SGrzegorz Jaszczyk /* Non-shared DRAM */
63a2847172SGrzegorz Jaszczyk #define MARVELL_DRAM_BASE		ULL(0x0)
64a2847172SGrzegorz Jaszczyk #define MARVELL_DRAM_SIZE		ULL(0x80000000)
65a2847172SGrzegorz Jaszczyk #define MARVELL_DRAM_END		(MARVELL_DRAM_BASE + \
66a2847172SGrzegorz Jaszczyk 					 MARVELL_DRAM_SIZE - 1)
67a2847172SGrzegorz Jaszczyk 
68a2847172SGrzegorz Jaszczyk #define MARVELL_IRQ_PIC0		28
69a2847172SGrzegorz Jaszczyk #define MARVELL_IRQ_SEC_PHY_TIMER	29
70a2847172SGrzegorz Jaszczyk 
71a2847172SGrzegorz Jaszczyk #define MARVELL_IRQ_SEC_SGI_0		8
72a2847172SGrzegorz Jaszczyk #define MARVELL_IRQ_SEC_SGI_1		9
73a2847172SGrzegorz Jaszczyk #define MARVELL_IRQ_SEC_SGI_2		10
74a2847172SGrzegorz Jaszczyk #define MARVELL_IRQ_SEC_SGI_3		11
75a2847172SGrzegorz Jaszczyk #define MARVELL_IRQ_SEC_SGI_4		12
76a2847172SGrzegorz Jaszczyk #define MARVELL_IRQ_SEC_SGI_5		13
77a2847172SGrzegorz Jaszczyk #define MARVELL_IRQ_SEC_SGI_6		14
78a2847172SGrzegorz Jaszczyk #define MARVELL_IRQ_SEC_SGI_7		15
79a2847172SGrzegorz Jaszczyk 
80*47d1773fSKonstantin Porotchkin #ifdef SPD_opteed
81*47d1773fSKonstantin Porotchkin /*
82*47d1773fSKonstantin Porotchkin  * BL2 needs to map 4MB at the end of TZC_DRAM1 in order to
83*47d1773fSKonstantin Porotchkin  * load/authenticate the trusted os extra image. The first 512KB of
84*47d1773fSKonstantin Porotchkin  * TZC_DRAM1 are reserved for trusted os (OPTEE). The extra image loading
85*47d1773fSKonstantin Porotchkin  * for OPTEE is paged image which only include the paging part using
86*47d1773fSKonstantin Porotchkin  * virtual memory but without "init" data. OPTEE will copy the "init" data
87*47d1773fSKonstantin Porotchkin  * (from pager image) to the first 512KB of TZC_DRAM, and then copy the
88*47d1773fSKonstantin Porotchkin  * extra image behind the "init" data.
8963a0b127SKonstantin Porotchkin  */
90*47d1773fSKonstantin Porotchkin #define MARVELL_OPTEE_PAGEABLE_LOAD_BASE	\
91*47d1773fSKonstantin Porotchkin 					(PLAT_MARVELL_TRUSTED_RAM_BASE + \
92*47d1773fSKonstantin Porotchkin 					 PLAT_MARVELL_TRUSTED_RAM_SIZE - \
93*47d1773fSKonstantin Porotchkin 					 MARVELL_OPTEE_PAGEABLE_LOAD_SIZE)
94*47d1773fSKonstantin Porotchkin #define MARVELL_OPTEE_PAGEABLE_LOAD_SIZE	0x400000
95*47d1773fSKonstantin Porotchkin #define MARVELL_OPTEE_PAGEABLE_LOAD_MEM		\
96*47d1773fSKonstantin Porotchkin 					MAP_REGION_FLAT(		  \
97*47d1773fSKonstantin Porotchkin 					MARVELL_OPTEE_PAGEABLE_LOAD_BASE, \
98*47d1773fSKonstantin Porotchkin 					MARVELL_OPTEE_PAGEABLE_LOAD_SIZE, \
9963a0b127SKonstantin Porotchkin 					MT_MEMORY | MT_RW | MT_SECURE)
100*47d1773fSKonstantin Porotchkin 
101*47d1773fSKonstantin Porotchkin /*
102*47d1773fSKonstantin Porotchkin  * Map the memory for the OP-TEE core (also known as OP-TEE pager when paging
103*47d1773fSKonstantin Porotchkin  * support is enabled).
104*47d1773fSKonstantin Porotchkin  */
105*47d1773fSKonstantin Porotchkin #define MARVELL_MAP_OPTEE_CORE_MEM	MAP_REGION_FLAT(		\
106*47d1773fSKonstantin Porotchkin 						BL32_BASE,		\
107*47d1773fSKonstantin Porotchkin 						BL32_LIMIT - BL32_BASE,	\
108*47d1773fSKonstantin Porotchkin 						MT_MEMORY | MT_RW | MT_SECURE)
109*47d1773fSKonstantin Porotchkin #endif /* SPD_opteed */
110*47d1773fSKonstantin Porotchkin 
11163a0b127SKonstantin Porotchkin #define MARVELL_MAP_SECURE_RAM		MAP_REGION_FLAT(		 \
112a2847172SGrzegorz Jaszczyk 						MARVELL_SHARED_RAM_BASE, \
113a2847172SGrzegorz Jaszczyk 						MARVELL_SHARED_RAM_SIZE, \
114a2847172SGrzegorz Jaszczyk 						MT_MEMORY | MT_RW | MT_SECURE)
115*47d1773fSKonstantin Porotchkin 
116a2847172SGrzegorz Jaszczyk #define MARVELL_MAP_DRAM		MAP_REGION_FLAT(		\
117a2847172SGrzegorz Jaszczyk 						MARVELL_DRAM_BASE,	\
118a2847172SGrzegorz Jaszczyk 						MARVELL_DRAM_SIZE,	\
119a2847172SGrzegorz Jaszczyk 						MT_MEMORY | MT_RW | MT_NS)
120a2847172SGrzegorz Jaszczyk 
121a2847172SGrzegorz Jaszczyk /*
122a2847172SGrzegorz Jaszczyk  * The number of regions like RO(code), coherent and data required by
123a2847172SGrzegorz Jaszczyk  * different BL stages which need to be mapped in the MMU.
124a2847172SGrzegorz Jaszczyk  */
125a2847172SGrzegorz Jaszczyk #if USE_COHERENT_MEM
126a2847172SGrzegorz Jaszczyk #define MARVELL_BL_REGIONS		3
127a2847172SGrzegorz Jaszczyk #else
128a2847172SGrzegorz Jaszczyk #define MARVELL_BL_REGIONS		2
129a2847172SGrzegorz Jaszczyk #endif
130a2847172SGrzegorz Jaszczyk 
131a2847172SGrzegorz Jaszczyk #define MAX_MMAP_REGIONS		(PLAT_MARVELL_MMAP_ENTRIES +	\
132a2847172SGrzegorz Jaszczyk 					 MARVELL_BL_REGIONS)
133a2847172SGrzegorz Jaszczyk 
134a2847172SGrzegorz Jaszczyk #define MARVELL_CONSOLE_BAUDRATE	115200
135a2847172SGrzegorz Jaszczyk 
136a2847172SGrzegorz Jaszczyk /******************************************************************************
137a2847172SGrzegorz Jaszczyk  * Required platform porting definitions common to all MARVELL std. platforms
138a2847172SGrzegorz Jaszczyk  *****************************************************************************/
139a2847172SGrzegorz Jaszczyk 
140a2847172SGrzegorz Jaszczyk #define PLAT_PHY_ADDR_SPACE_SIZE	(1ULL << 32)
141a2847172SGrzegorz Jaszczyk #define PLAT_VIRT_ADDR_SPACE_SIZE	(1ULL << 32)
142a2847172SGrzegorz Jaszczyk 
143a2847172SGrzegorz Jaszczyk /*
144a2847172SGrzegorz Jaszczyk  * This macro defines the deepest retention state possible. A higher state
145a2847172SGrzegorz Jaszczyk  * id will represent an invalid or a power down state.
146a2847172SGrzegorz Jaszczyk  */
147a2847172SGrzegorz Jaszczyk #define PLAT_MAX_RET_STATE		MARVELL_LOCAL_STATE_RET
148a2847172SGrzegorz Jaszczyk 
149a2847172SGrzegorz Jaszczyk /*
150a2847172SGrzegorz Jaszczyk  * This macro defines the deepest power down states possible. Any state ID
151a2847172SGrzegorz Jaszczyk  * higher than this is invalid.
152a2847172SGrzegorz Jaszczyk  */
153a2847172SGrzegorz Jaszczyk #define PLAT_MAX_OFF_STATE		MARVELL_LOCAL_STATE_OFF
154a2847172SGrzegorz Jaszczyk 
155a2847172SGrzegorz Jaszczyk 
156a2847172SGrzegorz Jaszczyk #define PLATFORM_CORE_COUNT		PLAT_MARVELL_CORE_COUNT
157a2847172SGrzegorz Jaszczyk #define PLAT_NUM_PWR_DOMAINS		(PLAT_MARVELL_CLUSTER_COUNT +	\
158a2847172SGrzegorz Jaszczyk 					 PLATFORM_CORE_COUNT)
159a2847172SGrzegorz Jaszczyk 
160a2847172SGrzegorz Jaszczyk /*
161a2847172SGrzegorz Jaszczyk  * Some data must be aligned on the biggest cache line size in the platform.
162a2847172SGrzegorz Jaszczyk  * This is known only to the platform as it might have a combination of
163a2847172SGrzegorz Jaszczyk  * integrated and external caches.
164a2847172SGrzegorz Jaszczyk  */
165a2847172SGrzegorz Jaszczyk #define CACHE_WRITEBACK_GRANULE		(1 << MARVELL_CACHE_WRITEBACK_SHIFT)
166a2847172SGrzegorz Jaszczyk 
167a2847172SGrzegorz Jaszczyk 
168a2847172SGrzegorz Jaszczyk /*******************************************************************************
169a2847172SGrzegorz Jaszczyk  * BL1 specific defines.
170a2847172SGrzegorz Jaszczyk  * BL1 RW data is relocated from ROM to RAM at runtime so we need 2 sets of
171a2847172SGrzegorz Jaszczyk  * addresses.
172a2847172SGrzegorz Jaszczyk  ******************************************************************************/
173a2847172SGrzegorz Jaszczyk #define BL1_RO_BASE			PLAT_MARVELL_TRUSTED_ROM_BASE
174a2847172SGrzegorz Jaszczyk #define BL1_RO_LIMIT			(PLAT_MARVELL_TRUSTED_ROM_BASE	\
175a2847172SGrzegorz Jaszczyk 					 + PLAT_MARVELL_TRUSTED_ROM_SIZE)
176a2847172SGrzegorz Jaszczyk /*
177a2847172SGrzegorz Jaszczyk  * Put BL1 RW at the top of the Trusted SRAM.
178a2847172SGrzegorz Jaszczyk  */
179a2847172SGrzegorz Jaszczyk #define BL1_RW_BASE		(MARVELL_BL_RAM_BASE +		\
180a2847172SGrzegorz Jaszczyk 					MARVELL_BL_RAM_SIZE -	\
181a2847172SGrzegorz Jaszczyk 					PLAT_MARVELL_MAX_BL1_RW_SIZE)
182a2847172SGrzegorz Jaszczyk #define BL1_RW_LIMIT		(MARVELL_BL_RAM_BASE + MARVELL_BL_RAM_SIZE)
183a2847172SGrzegorz Jaszczyk 
184a2847172SGrzegorz Jaszczyk /*******************************************************************************
185a2847172SGrzegorz Jaszczyk  * BLE specific defines.
186a2847172SGrzegorz Jaszczyk  ******************************************************************************/
187a2847172SGrzegorz Jaszczyk #define BLE_BASE			PLAT_MARVELL_SRAM_BASE
188a2847172SGrzegorz Jaszczyk #define BLE_LIMIT			PLAT_MARVELL_SRAM_END
189a2847172SGrzegorz Jaszczyk 
190a2847172SGrzegorz Jaszczyk /*******************************************************************************
191a2847172SGrzegorz Jaszczyk  * BL2 specific defines.
192a2847172SGrzegorz Jaszczyk  ******************************************************************************/
193a2847172SGrzegorz Jaszczyk /*
194a2847172SGrzegorz Jaszczyk  * Put BL2 just below BL31.
195a2847172SGrzegorz Jaszczyk  */
196a2847172SGrzegorz Jaszczyk #define BL2_BASE			(BL31_BASE - PLAT_MARVELL_MAX_BL2_SIZE)
197a2847172SGrzegorz Jaszczyk #define BL2_LIMIT			BL31_BASE
198a2847172SGrzegorz Jaszczyk 
199a2847172SGrzegorz Jaszczyk /*******************************************************************************
200a2847172SGrzegorz Jaszczyk  * BL31 specific defines.
201a2847172SGrzegorz Jaszczyk  ******************************************************************************/
202a2847172SGrzegorz Jaszczyk /*
203a2847172SGrzegorz Jaszczyk  * Put BL31 at the top of the Trusted SRAM.
204a2847172SGrzegorz Jaszczyk  */
205a2847172SGrzegorz Jaszczyk #define BL31_BASE			(MARVELL_BL_RAM_BASE +		\
206a2847172SGrzegorz Jaszczyk 						MARVELL_BL_RAM_SIZE -	\
207a2847172SGrzegorz Jaszczyk 						PLAT_MARVEL_MAX_BL31_SIZE)
208a2847172SGrzegorz Jaszczyk #define BL31_PROGBITS_LIMIT		BL1_RW_BASE
209a2847172SGrzegorz Jaszczyk #define BL31_LIMIT			(MARVELL_BL_RAM_BASE +	\
210a2847172SGrzegorz Jaszczyk 					 MARVELL_BL_RAM_SIZE)
211a2847172SGrzegorz Jaszczyk 
212cdfbbfefSKonstantin Porotchkin /*******************************************************************************
213cdfbbfefSKonstantin Porotchkin  * BL32 specific defines.
214cdfbbfefSKonstantin Porotchkin  ******************************************************************************/
21563a0b127SKonstantin Porotchkin #define BL32_BASE		PLAT_MARVELL_TRUSTED_RAM_BASE
21663a0b127SKonstantin Porotchkin #define BL32_LIMIT		(BL32_BASE + PLAT_MARVELL_TRUSTED_RAM_SIZE)
217cdfbbfefSKonstantin Porotchkin 
218cdfbbfefSKonstantin Porotchkin #ifdef SPD_none
219cdfbbfefSKonstantin Porotchkin #undef BL32_BASE
220cdfbbfefSKonstantin Porotchkin #endif /* SPD_none */
221a2847172SGrzegorz Jaszczyk 
222a2847172SGrzegorz Jaszczyk #endif /* MARVELL_DEF_H */
223