xref: /rk3399_ARM-atf/plat/renesas/common/include/platform_def.h (revision 011a4c2f049a422e91ac26d5c146f3a1c7d2d16d)
1*011a4c2fSBiju Das /*
2*011a4c2fSBiju Das  * Copyright (c) 2015-2020, Renesas Electronics Corporation. All rights reserved.
3*011a4c2fSBiju Das  *
4*011a4c2fSBiju Das  * SPDX-License-Identifier: BSD-3-Clause
5*011a4c2fSBiju Das  */
6*011a4c2fSBiju Das 
7*011a4c2fSBiju Das #ifndef PLATFORM_DEF_H
8*011a4c2fSBiju Das #define PLATFORM_DEF_H
9*011a4c2fSBiju Das 
10*011a4c2fSBiju Das #ifndef __ASSEMBLER__
11*011a4c2fSBiju Das #include <stdlib.h>
12*011a4c2fSBiju Das #endif
13*011a4c2fSBiju Das 
14*011a4c2fSBiju Das #include <arch.h>
15*011a4c2fSBiju Das 
16*011a4c2fSBiju Das #include "rcar_def.h"
17*011a4c2fSBiju Das 
18*011a4c2fSBiju Das /*******************************************************************************
19*011a4c2fSBiju Das  * Platform binary types for linking
20*011a4c2fSBiju Das  ******************************************************************************/
21*011a4c2fSBiju Das #define PLATFORM_LINKER_FORMAT          "elf64-littleaarch64"
22*011a4c2fSBiju Das #define PLATFORM_LINKER_ARCH            aarch64
23*011a4c2fSBiju Das 
24*011a4c2fSBiju Das /*******************************************************************************
25*011a4c2fSBiju Das  * Generic platform constants
26*011a4c2fSBiju Das  ******************************************************************************/
27*011a4c2fSBiju Das  #define FIRMWARE_WELCOME_STR	"Booting Rcar-gen3 Trusted Firmware\n"
28*011a4c2fSBiju Das 
29*011a4c2fSBiju Das /* Size of cacheable stacks */
30*011a4c2fSBiju Das #if IMAGE_BL1
31*011a4c2fSBiju Das #if TRUSTED_BOARD_BOOT
32*011a4c2fSBiju Das #define PLATFORM_STACK_SIZE	U(0x1000)
33*011a4c2fSBiju Das #else
34*011a4c2fSBiju Das #define PLATFORM_STACK_SIZE	U(0x440)
35*011a4c2fSBiju Das #endif
36*011a4c2fSBiju Das #elif IMAGE_BL2
37*011a4c2fSBiju Das #if TRUSTED_BOARD_BOOT
38*011a4c2fSBiju Das #define PLATFORM_STACK_SIZE	U(0x1000)
39*011a4c2fSBiju Das #else
40*011a4c2fSBiju Das #define PLATFORM_STACK_SIZE	U(0x400)
41*011a4c2fSBiju Das #endif
42*011a4c2fSBiju Das #elif IMAGE_BL31
43*011a4c2fSBiju Das #define PLATFORM_STACK_SIZE	U(0x400)
44*011a4c2fSBiju Das #elif IMAGE_BL32
45*011a4c2fSBiju Das #define PLATFORM_STACK_SIZE	U(0x440)
46*011a4c2fSBiju Das #endif
47*011a4c2fSBiju Das 
48*011a4c2fSBiju Das #define BL332_IMAGE_ID		(NS_BL2U_IMAGE_ID + 1)
49*011a4c2fSBiju Das #define BL333_IMAGE_ID		(NS_BL2U_IMAGE_ID + 2)
50*011a4c2fSBiju Das #define BL334_IMAGE_ID		(NS_BL2U_IMAGE_ID + 3)
51*011a4c2fSBiju Das #define BL335_IMAGE_ID		(NS_BL2U_IMAGE_ID + 4)
52*011a4c2fSBiju Das #define BL336_IMAGE_ID		(NS_BL2U_IMAGE_ID + 5)
53*011a4c2fSBiju Das #define BL337_IMAGE_ID		(NS_BL2U_IMAGE_ID + 6)
54*011a4c2fSBiju Das #define BL338_IMAGE_ID		(NS_BL2U_IMAGE_ID + 7)
55*011a4c2fSBiju Das 
56*011a4c2fSBiju Das #define BL332_KEY_CERT_ID	(NS_BL2U_IMAGE_ID + 8)
57*011a4c2fSBiju Das #define BL333_KEY_CERT_ID	(NS_BL2U_IMAGE_ID + 9)
58*011a4c2fSBiju Das #define BL334_KEY_CERT_ID	(NS_BL2U_IMAGE_ID + 10)
59*011a4c2fSBiju Das #define BL335_KEY_CERT_ID	(NS_BL2U_IMAGE_ID + 11)
60*011a4c2fSBiju Das #define BL336_KEY_CERT_ID	(NS_BL2U_IMAGE_ID + 12)
61*011a4c2fSBiju Das #define BL337_KEY_CERT_ID	(NS_BL2U_IMAGE_ID + 13)
62*011a4c2fSBiju Das #define BL338_KEY_CERT_ID	(NS_BL2U_IMAGE_ID + 14)
63*011a4c2fSBiju Das 
64*011a4c2fSBiju Das #define BL332_CERT_ID		(NS_BL2U_IMAGE_ID + 15)
65*011a4c2fSBiju Das #define BL333_CERT_ID		(NS_BL2U_IMAGE_ID + 16)
66*011a4c2fSBiju Das #define BL334_CERT_ID		(NS_BL2U_IMAGE_ID + 17)
67*011a4c2fSBiju Das #define BL335_CERT_ID		(NS_BL2U_IMAGE_ID + 18)
68*011a4c2fSBiju Das #define BL336_CERT_ID		(NS_BL2U_IMAGE_ID + 19)
69*011a4c2fSBiju Das #define BL337_CERT_ID		(NS_BL2U_IMAGE_ID + 20)
70*011a4c2fSBiju Das #define BL338_CERT_ID		(NS_BL2U_IMAGE_ID + 21)
71*011a4c2fSBiju Das 
72*011a4c2fSBiju Das /* io drivers id */
73*011a4c2fSBiju Das #define FLASH_DEV_ID		U(0)
74*011a4c2fSBiju Das #define EMMC_DEV_ID		U(1)
75*011a4c2fSBiju Das 
76*011a4c2fSBiju Das /*
77*011a4c2fSBiju Das  * R-Car H3 Cortex-A57
78*011a4c2fSBiju Das  * L1:I/48KB(16KBx3way) D/32KB(16KBx2way) L2:2MB(128KBx16way)
79*011a4c2fSBiju Das  *          Cortex-A53
80*011a4c2fSBiju Das  * L1:I/32KB(16KBx2way) D/32KB(8KBx4way) L2:512KB(32KBx16way)
81*011a4c2fSBiju Das  */
82*011a4c2fSBiju Das #define PLATFORM_CACHE_LINE_SIZE	64
83*011a4c2fSBiju Das #define PLATFORM_CLUSTER_COUNT		U(2)
84*011a4c2fSBiju Das #define PLATFORM_CLUSTER0_CORE_COUNT	U(4)
85*011a4c2fSBiju Das #define PLATFORM_CLUSTER1_CORE_COUNT	U(4)
86*011a4c2fSBiju Das #define PLATFORM_CORE_COUNT		(PLATFORM_CLUSTER1_CORE_COUNT + \
87*011a4c2fSBiju Das 					 PLATFORM_CLUSTER0_CORE_COUNT)
88*011a4c2fSBiju Das #define PLATFORM_MAX_CPUS_PER_CLUSTER	U(4)
89*011a4c2fSBiju Das 
90*011a4c2fSBiju Das #define PLAT_MAX_PWR_LVL		MPIDR_AFFLVL2
91*011a4c2fSBiju Das #define PLAT_NUM_PWR_DOMAINS		(PLATFORM_CORE_COUNT + \
92*011a4c2fSBiju Das 					 PLATFORM_CLUSTER_COUNT + 1)
93*011a4c2fSBiju Das 
94*011a4c2fSBiju Das #define PLAT_MAX_RET_STATE		U(1)
95*011a4c2fSBiju Das #define PLAT_MAX_OFF_STATE		U(2)
96*011a4c2fSBiju Das 
97*011a4c2fSBiju Das #define MAX_IO_DEVICES			U(3)
98*011a4c2fSBiju Das #define MAX_IO_HANDLES			U(4)
99*011a4c2fSBiju Das 
100*011a4c2fSBiju Das /*
101*011a4c2fSBiju Das  ******************************************************************************
102*011a4c2fSBiju Das  * BL2 specific defines.
103*011a4c2fSBiju Das  ******************************************************************************
104*011a4c2fSBiju Das  * Put BL2 just below BL3-1. BL2_BASE is calculated using the current BL2 debug
105*011a4c2fSBiju Das  * size plus a little space for growth.
106*011a4c2fSBiju Das  */
107*011a4c2fSBiju Das #define RCAR_SYSRAM_BASE		U(0xE6300000)
108*011a4c2fSBiju Das #if (RCAR_LSI == RCAR_E3) || (RCAR_LSI == RCAR_D3)
109*011a4c2fSBiju Das #define BL2_LIMIT			U(0xE6320000)
110*011a4c2fSBiju Das #else
111*011a4c2fSBiju Das #define BL2_LIMIT			U(0xE6360000)
112*011a4c2fSBiju Das #endif
113*011a4c2fSBiju Das 
114*011a4c2fSBiju Das #if (RCAR_LSI == RCAR_E3) || (RCAR_LSI == RCAR_D3)
115*011a4c2fSBiju Das #define BL2_BASE			U(0xE6304000)
116*011a4c2fSBiju Das #define BL2_IMAGE_LIMIT			U(0xE6318000)
117*011a4c2fSBiju Das #elif (RCAR_LSI == RCAR_V3M)
118*011a4c2fSBiju Das #define BL2_BASE			U(0xE6344000)
119*011a4c2fSBiju Das #define BL2_IMAGE_LIMIT			U(0xE636E800)
120*011a4c2fSBiju Das #else
121*011a4c2fSBiju Das #define BL2_BASE			U(0xE6304000)
122*011a4c2fSBiju Das #define BL2_IMAGE_LIMIT			U(0xE632E800)
123*011a4c2fSBiju Das #endif
124*011a4c2fSBiju Das #define RCAR_SYSRAM_SIZE		(BL2_BASE - RCAR_SYSRAM_BASE)
125*011a4c2fSBiju Das 
126*011a4c2fSBiju Das /*
127*011a4c2fSBiju Das  ******************************************************************************
128*011a4c2fSBiju Das  * BL31 specific defines.
129*011a4c2fSBiju Das  ******************************************************************************
130*011a4c2fSBiju Das  * Put BL3-1 at the top of the Trusted SRAM. BL31_BASE is calculated using the
131*011a4c2fSBiju Das  * current BL3-1 debug size plus a little space for growth.
132*011a4c2fSBiju Das  */
133*011a4c2fSBiju Das #define BL31_BASE		(RCAR_TRUSTED_SRAM_BASE)
134*011a4c2fSBiju Das #define BL31_LIMIT		(RCAR_TRUSTED_SRAM_BASE + \
135*011a4c2fSBiju Das 				 RCAR_TRUSTED_SRAM_SIZE)
136*011a4c2fSBiju Das #define RCAR_BL31_LOG_BASE	(0x44040000)
137*011a4c2fSBiju Das #define RCAR_BL31_SDRAM_BTM	(RCAR_BL31_LOG_BASE + 0x14000)
138*011a4c2fSBiju Das #define RCAR_BL31_LOG_SIZE	(RCAR_BL31_SDRAM_BTM - RCAR_BL31_LOG_BASE)
139*011a4c2fSBiju Das #define BL31_SRAM_BASE		(DEVICE_SRAM_BASE)
140*011a4c2fSBiju Das #define BL31_SRAM_LIMIT		(DEVICE_SRAM_BASE + DEVICE_SRAM_SIZE)
141*011a4c2fSBiju Das 
142*011a4c2fSBiju Das /*******************************************************************************
143*011a4c2fSBiju Das  * BL32 specific defines.
144*011a4c2fSBiju Das  ******************************************************************************/
145*011a4c2fSBiju Das #ifndef SPD_NONE
146*011a4c2fSBiju Das #define BL32_BASE		U(0x44100000)
147*011a4c2fSBiju Das #define BL32_LIMIT		(BL32_BASE + U(0x100000))
148*011a4c2fSBiju Das #endif
149*011a4c2fSBiju Das 
150*011a4c2fSBiju Das /*******************************************************************************
151*011a4c2fSBiju Das  * BL33
152*011a4c2fSBiju Das  ******************************************************************************/
153*011a4c2fSBiju Das #define BL33_BASE		DRAM1_NS_BASE
154*011a4c2fSBiju Das 
155*011a4c2fSBiju Das 
156*011a4c2fSBiju Das /*******************************************************************************
157*011a4c2fSBiju Das  * Platform specific page table and MMU setup constants
158*011a4c2fSBiju Das  ******************************************************************************/
159*011a4c2fSBiju Das #if IMAGE_BL1
160*011a4c2fSBiju Das #define MAX_XLAT_TABLES		U(2)
161*011a4c2fSBiju Das #elif IMAGE_BL2
162*011a4c2fSBiju Das #define MAX_XLAT_TABLES		U(5)
163*011a4c2fSBiju Das #elif IMAGE_BL31
164*011a4c2fSBiju Das #define MAX_XLAT_TABLES		U(4)
165*011a4c2fSBiju Das #elif IMAGE_BL32
166*011a4c2fSBiju Das #define MAX_XLAT_TABLES		U(3)
167*011a4c2fSBiju Das #endif
168*011a4c2fSBiju Das 
169*011a4c2fSBiju Das #if IMAGE_BL2
170*011a4c2fSBiju Das #define PLAT_PHY_ADDR_SPACE_SIZE	(ULL(1) << 40)
171*011a4c2fSBiju Das #define PLAT_VIRT_ADDR_SPACE_SIZE	(ULL(1) << 40)
172*011a4c2fSBiju Das #else
173*011a4c2fSBiju Das #define PLAT_PHY_ADDR_SPACE_SIZE	(ULL(1) << 32)
174*011a4c2fSBiju Das #define PLAT_VIRT_ADDR_SPACE_SIZE	(ULL(1) << 32)
175*011a4c2fSBiju Das #endif
176*011a4c2fSBiju Das 
177*011a4c2fSBiju Das #define MAX_MMAP_REGIONS	(RCAR_MMAP_ENTRIES + RCAR_BL_REGIONS)
178*011a4c2fSBiju Das 
179*011a4c2fSBiju Das /*******************************************************************************
180*011a4c2fSBiju Das  * Declarations and constants to access the mailboxes safely. Each mailbox is
181*011a4c2fSBiju Das  * aligned on the biggest cache line size in the platform. This is known only
182*011a4c2fSBiju Das  * to the platform as it might have a combination of integrated and external
183*011a4c2fSBiju Das  * caches. Such alignment ensures that two mailboxes do not sit on the same cache
184*011a4c2fSBiju Das  * line at any cache level. They could belong to different cpus/clusters &
185*011a4c2fSBiju Das  * get written while being protected by different locks causing corruption of
186*011a4c2fSBiju Das  * a valid mailbox address.
187*011a4c2fSBiju Das  ******************************************************************************/
188*011a4c2fSBiju Das #define CACHE_WRITEBACK_SHIFT   (6)
189*011a4c2fSBiju Das #define CACHE_WRITEBACK_GRANULE (1 << CACHE_WRITEBACK_SHIFT)
190*011a4c2fSBiju Das 
191*011a4c2fSBiju Das /*******************************************************************************
192*011a4c2fSBiju Das  * Size of the per-cpu data in bytes that should be reserved in the generic
193*011a4c2fSBiju Das  * per-cpu data structure for the RCAR port.
194*011a4c2fSBiju Das  ******************************************************************************/
195*011a4c2fSBiju Das #if !USE_COHERENT_MEM
196*011a4c2fSBiju Das #define PLAT_PCPU_DATA_SIZE	(2)
197*011a4c2fSBiju Das #endif
198*011a4c2fSBiju Das 
199*011a4c2fSBiju Das #endif /* PLATFORM_DEF_H */
200