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