xref: /rk3399_ARM-atf/plat/renesas/rcar_gen5/include/rcar_def.h (revision f180a3b7e0a65450ba1c8900079e42babfe0e787)
1*f180a3b7SHieu Nguyen /*
2*f180a3b7SHieu Nguyen  * Copyright (c) 2025, Renesas Electronics Corporation. All rights reserved.
3*f180a3b7SHieu Nguyen  *
4*f180a3b7SHieu Nguyen  * SPDX-License-Identifier: BSD-3-Clause
5*f180a3b7SHieu Nguyen  */
6*f180a3b7SHieu Nguyen 
7*f180a3b7SHieu Nguyen #ifndef RCAR_DEF_H
8*f180a3b7SHieu Nguyen #define RCAR_DEF_H
9*f180a3b7SHieu Nguyen 
10*f180a3b7SHieu Nguyen #include <common/tbbr/tbbr_img_def.h>
11*f180a3b7SHieu Nguyen #include <lib/utils_def.h>
12*f180a3b7SHieu Nguyen 
13*f180a3b7SHieu Nguyen #define RCAR_DOMAIN			UL(0x0)
14*f180a3b7SHieu Nguyen 
15*f180a3b7SHieu Nguyen #define RCAR_TRUSTED_SRAM_BASE		UL(0x8C200000) /* DRAM */
16*f180a3b7SHieu Nguyen #define RCAR_TRUSTED_SRAM_SIZE		UL(0x00040000) /* 256kB */
17*f180a3b7SHieu Nguyen #define RCAR_SHARED_MEM_BASE		(RCAR_TRUSTED_SRAM_BASE + \
18*f180a3b7SHieu Nguyen 					RCAR_TRUSTED_SRAM_SIZE)
19*f180a3b7SHieu Nguyen #define RCAR_SHARED_MEM_SIZE		UL(0x00002000) /* 8kB */
20*f180a3b7SHieu Nguyen #define	RCAR_BL31_CRASH_BASE		(RCAR_SHARED_MEM_BASE + RCAR_SHARED_MEM_SIZE)
21*f180a3b7SHieu Nguyen #define RCAR_BL31_CRASH_SIZE		UL(0x00001000)
22*f180a3b7SHieu Nguyen #define DEVICE_RCAR_BASE1		UL(0x10000000)
23*f180a3b7SHieu Nguyen #define DEVICE_RCAR_SIZE1		UL(0x30000000)
24*f180a3b7SHieu Nguyen #define DEVICE_RCAR_BASE2		UL(0xC0000000)
25*f180a3b7SHieu Nguyen #define DEVICE_RCAR_SIZE2		UL(0x00C00000)
26*f180a3b7SHieu Nguyen #define DEVICE_SRAM_BASE		UL(0xE9042000)
27*f180a3b7SHieu Nguyen #define DEVICE_SRAM_SIZE		UL(0x00002000)
28*f180a3b7SHieu Nguyen #define DEVICE_SRAM_DATA_BASE		(DEVICE_SRAM_BASE + DEVICE_SRAM_SIZE)
29*f180a3b7SHieu Nguyen #define DEVICE_SRAM_DATA_SIZE		UL(0x00000100)
30*f180a3b7SHieu Nguyen #define DEVICE_SRAM_STACK_BASE		(DEVICE_SRAM_DATA_BASE + DEVICE_SRAM_DATA_SIZE)
31*f180a3b7SHieu Nguyen #define DEVICE_SRAM_STACK_SIZE		(UL(0x00001000) - DEVICE_SRAM_DATA_SIZE)
32*f180a3b7SHieu Nguyen #define DEVICE_RCAR_BASE3		UL(0xE5000000)
33*f180a3b7SHieu Nguyen #define DEVICE_RCAR_SIZE3		UL(0x1B000000)
34*f180a3b7SHieu Nguyen /* Entrypoint mailboxes */
35*f180a3b7SHieu Nguyen #define MBOX_BASE			RCAR_SHARED_MEM_BASE
36*f180a3b7SHieu Nguyen #define MBOX_SIZE			UL(0x800) /* 2kB: 32 cores */
37*f180a3b7SHieu Nguyen /* Base address where parameters to BL31 are stored */
38*f180a3b7SHieu Nguyen #define PARAMS_BASE			(RCAR_TRUSTED_SRAM_BASE - UL(0x100000))
39*f180a3b7SHieu Nguyen #define PARAMS_SIZE			UL(0x8000) /* 32kB */
40*f180a3b7SHieu Nguyen #define BOOT_KIND_BASE			(PARAMS_BASE + UL(0x1700))
41*f180a3b7SHieu Nguyen 
42*f180a3b7SHieu Nguyen /*
43*f180a3b7SHieu Nguyen  * The number of regions like RO(code), coherent and data required by
44*f180a3b7SHieu Nguyen  * different BL stages which need to be mapped in the MMU
45*f180a3b7SHieu Nguyen  */
46*f180a3b7SHieu Nguyen #define RCAR_BL_REGIONS			2
47*f180a3b7SHieu Nguyen /*
48*f180a3b7SHieu Nguyen  * The RCAR_MAX_MMAP_REGIONS depends on the number of entries in rcar_mmap[]
49*f180a3b7SHieu Nguyen  * defined for each BL stage in platform_common.c.
50*f180a3b7SHieu Nguyen  */
51*f180a3b7SHieu Nguyen #define RCAR_MMAP_ENTRIES		10
52*f180a3b7SHieu Nguyen /* BL31 */
53*f180a3b7SHieu Nguyen #define RCAR_CRASH_STACK		RCAR_BL31_CRASH_BASE
54*f180a3b7SHieu Nguyen 
55*f180a3b7SHieu Nguyen /* CCI related constants */
56*f180a3b7SHieu Nguyen #define CCI500_BASE			UL(0xF1200000)
57*f180a3b7SHieu Nguyen #define CCI500_CLUSTER0_SL_IFACE_IX	0
58*f180a3b7SHieu Nguyen #define CCI500_CLUSTER1_SL_IFACE_IX	1
59*f180a3b7SHieu Nguyen #define CCI500_CLUSTER2_SL_IFACE_IX	2
60*f180a3b7SHieu Nguyen #define CCI500_CLUSTER3_SL_IFACE_IX	3
61*f180a3b7SHieu Nguyen #define RCAR_CCI_BASE			CCI500_BASE
62*f180a3b7SHieu Nguyen /* GIC */
63*f180a3b7SHieu Nguyen #define PLAT_ARM_GICD_BASE		UL(0x39000000) /* GICD base address for View 1 */
64*f180a3b7SHieu Nguyen #define PLAT_ARM_GICR_BASE		UL(0x38080000)
65*f180a3b7SHieu Nguyen /* CPU Fault Handling Interrupt(FHI) PPI interrupt ID */
66*f180a3b7SHieu Nguyen #define PLAT_CORE_FAULT_IRQ		17
67*f180a3b7SHieu Nguyen /* Priority levels for ARM platforms */
68*f180a3b7SHieu Nguyen #if ENABLE_FEAT_RAS && FFH_SUPPORT
69*f180a3b7SHieu Nguyen #define PLAT_RAS_PRI			0x10
70*f180a3b7SHieu Nguyen #endif
71*f180a3b7SHieu Nguyen 
72*f180a3b7SHieu Nguyen #define ARM_IRQ_SEC_PHY_TIMER		29U
73*f180a3b7SHieu Nguyen #define ARM_IRQ_SEC_SGI_0		8U
74*f180a3b7SHieu Nguyen #define ARM_IRQ_SEC_SGI_1		9U
75*f180a3b7SHieu Nguyen #define ARM_IRQ_SEC_SGI_2		10U
76*f180a3b7SHieu Nguyen #define ARM_IRQ_SEC_SGI_3		11U
77*f180a3b7SHieu Nguyen #define ARM_IRQ_SEC_SGI_4		12U
78*f180a3b7SHieu Nguyen #define ARM_IRQ_SEC_SGI_5		13U
79*f180a3b7SHieu Nguyen #define ARM_IRQ_SEC_SGI_6		14U
80*f180a3b7SHieu Nguyen #define ARM_IRQ_SEC_SGI_7		15U
81*f180a3b7SHieu Nguyen 
82*f180a3b7SHieu Nguyen /* Timer control */
83*f180a3b7SHieu Nguyen #define RCAR_CNTC_BASE			UL(0x1C000000)
84*f180a3b7SHieu Nguyen #define RCAR_CNTC_EXTAL			1066666667U
85*f180a3b7SHieu Nguyen 
86*f180a3b7SHieu Nguyen /* Conversion value from seconds to micro seconds */
87*f180a3b7SHieu Nguyen #define RCAR_CONV_MICROSEC		UL(1000000)
88*f180a3b7SHieu Nguyen 
89*f180a3b7SHieu Nguyen /* Workaround to ensure only RSIPM IPL output log firstly */
90*f180a3b7SHieu Nguyen #define BOOT_BASE_ADDRESS		U(0x1003FC00)
91*f180a3b7SHieu Nguyen #define BOOT_READY_CR52_FLAG		U(0x01234200)
92*f180a3b7SHieu Nguyen #define BOOT_BL31_REG			(BOOT_BASE_ADDRESS + U(0x200))
93*f180a3b7SHieu Nguyen 
94*f180a3b7SHieu Nguyen /* Memory mapped Generic timer interfaces */
95*f180a3b7SHieu Nguyen #define ARM_SYS_CNTCTL_BASE		RCAR_CNTC_BASE
96*f180a3b7SHieu Nguyen 
97*f180a3b7SHieu Nguyen /* MPIDR_EL1 */
98*f180a3b7SHieu Nguyen #define	RCAR_MPIDR_AFFMASK		U(0x00FFFF00)
99*f180a3b7SHieu Nguyen 
100*f180a3b7SHieu Nguyen /* CPUPWRCTLR */
101*f180a3b7SHieu Nguyen #define CPUPWRCTLR_PWDN			U(0x00000001)
102*f180a3b7SHieu Nguyen 
103*f180a3b7SHieu Nguyen /* For SCMI message */
104*f180a3b7SHieu Nguyen #define RCAR_SCMI_CHANNEL_MMU_BASE	UL(0xC1060000) /* align 4kB */
105*f180a3b7SHieu Nguyen #define RCAR_SCMI_CHANNEL_SIZE		UL(0x00001000) /* align 4kB (SCP FW defines 0x100) */
106*f180a3b7SHieu Nguyen #define RCAR_SCMI_CHANNEL_BASE		UL(0xC1060E00) /* for A2P PSCI Command (SCP FW defines) */
107*f180a3b7SHieu Nguyen 
108*f180a3b7SHieu Nguyen #define MFIS_SCP_COMMON_BASE            UL(0x189E1000)
109*f180a3b7SHieu Nguyen #define MFIS_MFISWACNTR_SCP             (MFIS_SCP_COMMON_BASE + UL(0x00000904))
110*f180a3b7SHieu Nguyen #define MFISWACNTR_SCP_CODEVALUE_SET    UL(0xACC00000)
111*f180a3b7SHieu Nguyen #define MFISWACNTR_SCP_REGISTERADDRESS_MASK	UL(0x000FFFFF)
112*f180a3b7SHieu Nguyen /* MFIS CPU communication control register AP System core[k] to SCP Core(k=0-31) MFISASEICR[k=0] */
113*f180a3b7SHieu Nguyen #define RCAR_SCMI_MFIS_ADDR		UL(0x18840004)
114*f180a3b7SHieu Nguyen #define RCAR_SCMI_MFIS_MOD_MASK		U(0x00000001)
115*f180a3b7SHieu Nguyen #define RCAR_SCMI_MFIS_PRV_MASK		(~RCAR_SCMI_MFIS_MOD_MASK)
116*f180a3b7SHieu Nguyen 
117*f180a3b7SHieu Nguyen #endif /* RCAR_DEF_H */
118