xref: /rk3399_ARM-atf/plat/renesas/rcar_gen4/include/rcar_def.h (revision b8ad1a16d501c7a32e72d674a70b76320dbf9a1e)
1*b45b5bacSMarek Vasut /*
2*b45b5bacSMarek Vasut  * Copyright (c) 2015-2025, Renesas Electronics Corporation. All rights reserved.
3*b45b5bacSMarek Vasut  *
4*b45b5bacSMarek Vasut  * SPDX-License-Identifier: BSD-3-Clause
5*b45b5bacSMarek Vasut  */
6*b45b5bacSMarek Vasut 
7*b45b5bacSMarek Vasut #ifndef RCAR_DEF_H
8*b45b5bacSMarek Vasut #define RCAR_DEF_H
9*b45b5bacSMarek Vasut 
10*b45b5bacSMarek Vasut #include <common/tbbr/tbbr_img_def.h>
11*b45b5bacSMarek Vasut #include <lib/utils_def.h>
12*b45b5bacSMarek Vasut 
13*b45b5bacSMarek Vasut #define RCAR_DOMAIN			UL(0x0)
14*b45b5bacSMarek Vasut 
15*b45b5bacSMarek Vasut #define RCAR_TRUSTED_SRAM_BASE		UL(0x46400000)
16*b45b5bacSMarek Vasut #define RCAR_TRUSTED_SRAM_SIZE		UL(0x00022000)
17*b45b5bacSMarek Vasut #define RCAR_SHARED_MEM_BASE		(RCAR_TRUSTED_SRAM_BASE + \
18*b45b5bacSMarek Vasut 					RCAR_TRUSTED_SRAM_SIZE)
19*b45b5bacSMarek Vasut #define RCAR_SHARED_MEM_SIZE		UL(0x00001000)
20*b45b5bacSMarek Vasut #define	RCAR_BL31_CRASH_BASE		(RCAR_TRUSTED_SRAM_BASE + UL(0x3F000))
21*b45b5bacSMarek Vasut #define RCAR_BL31_CRASH_SIZE		UL(0x00001000)
22*b45b5bacSMarek Vasut #define DEVICE_RCAR_BASE		UL(0xE6000000)
23*b45b5bacSMarek Vasut #define DEVICE_RCAR_SIZE		UL(0x00300000)
24*b45b5bacSMarek Vasut #define DEVICE_SRAM_BASE		UL(0xE6342000)
25*b45b5bacSMarek Vasut #define DEVICE_SRAM_SIZE		UL(0x00002000)
26*b45b5bacSMarek Vasut #define DEVICE_SRAM_DATA_BASE		(DEVICE_SRAM_BASE + DEVICE_SRAM_SIZE)
27*b45b5bacSMarek Vasut #define DEVICE_SRAM_DATA_SIZE		UL(0x00000100)
28*b45b5bacSMarek Vasut #define DEVICE_SRAM_STACK_BASE		(DEVICE_SRAM_DATA_BASE + DEVICE_SRAM_DATA_SIZE)
29*b45b5bacSMarek Vasut #define DEVICE_SRAM_STACK_SIZE		(UL(0x00001000) - DEVICE_SRAM_DATA_SIZE)
30*b45b5bacSMarek Vasut #define DEVICE_RCAR_BASE2		UL(0xE6370000)
31*b45b5bacSMarek Vasut #define DEVICE_RCAR_SIZE2		UL(0x19C90000)
32*b45b5bacSMarek Vasut /* Entrypoint mailboxes */
33*b45b5bacSMarek Vasut #define MBOX_BASE			RCAR_SHARED_MEM_BASE
34*b45b5bacSMarek Vasut #define MBOX_SIZE			UL(0x200)
35*b45b5bacSMarek Vasut /* Base address where parameters to BL31 are stored */
36*b45b5bacSMarek Vasut #define PARAMS_BASE			(MBOX_BASE + MBOX_SIZE)
37*b45b5bacSMarek Vasut #define BOOT_KIND_BASE			(RCAR_SHARED_MEM_BASE + \
38*b45b5bacSMarek Vasut 					RCAR_SHARED_MEM_SIZE - UL(0x100))
39*b45b5bacSMarek Vasut /*
40*b45b5bacSMarek Vasut  * The number of regions like RO(code), coherent and data required by
41*b45b5bacSMarek Vasut  * different BL stages which need to be mapped in the MMU
42*b45b5bacSMarek Vasut  */
43*b45b5bacSMarek Vasut #define RCAR_BL_REGIONS			2
44*b45b5bacSMarek Vasut /*
45*b45b5bacSMarek Vasut  * The RCAR_MAX_MMAP_REGIONS depends on the number of entries in rcar_mmap[]
46*b45b5bacSMarek Vasut  * defined for each BL stage in platform_common.c.
47*b45b5bacSMarek Vasut  */
48*b45b5bacSMarek Vasut #define RCAR_MMAP_ENTRIES		8
49*b45b5bacSMarek Vasut /* BL31 */
50*b45b5bacSMarek Vasut #define RCAR_CRASH_STACK		RCAR_BL31_CRASH_BASE
51*b45b5bacSMarek Vasut 
52*b45b5bacSMarek Vasut /* CCI related constants */
53*b45b5bacSMarek Vasut #define CCI500_BASE			UL(0xF1200000)
54*b45b5bacSMarek Vasut #define CCI500_CLUSTER0_SL_IFACE_IX	0
55*b45b5bacSMarek Vasut #define CCI500_CLUSTER1_SL_IFACE_IX	1
56*b45b5bacSMarek Vasut #define CCI500_CLUSTER2_SL_IFACE_IX	2
57*b45b5bacSMarek Vasut #define CCI500_CLUSTER3_SL_IFACE_IX	3
58*b45b5bacSMarek Vasut #define RCAR_CCI_BASE			CCI500_BASE
59*b45b5bacSMarek Vasut 
60*b45b5bacSMarek Vasut /* APSREG boot configuration */
61*b45b5bacSMarek Vasut #define APSREG_BASE			UL(0xE6280000)
62*b45b5bacSMarek Vasut #define APSREG_CCI500_AUX		(APSREG_BASE + UL(0x9010))
63*b45b5bacSMarek Vasut #define APSREG_P_CCI500_AUX		(APSREG_BASE + UL(0x29010))
64*b45b5bacSMarek Vasut 
65*b45b5bacSMarek Vasut #define APSREG_AP_CLUSTER_AUX0_INIT	0x00000003U
66*b45b5bacSMarek Vasut #define APSREG_CCI500_AUX_INIT		0x00000001U
67*b45b5bacSMarek Vasut #define APSREG_P_CCI500_AUX_INIT	0x00000002U
68*b45b5bacSMarek Vasut 
69*b45b5bacSMarek Vasut /* GIC */
70*b45b5bacSMarek Vasut #define PLAT_ARM_GICD_BASE		UL(0xF1000000)
71*b45b5bacSMarek Vasut #define PLAT_ARM_GICR_BASE		UL(0xF1060000)
72*b45b5bacSMarek Vasut #define ARM_IRQ_SEC_PHY_TIMER		29U
73*b45b5bacSMarek Vasut #define ARM_IRQ_SEC_SGI_0		8U
74*b45b5bacSMarek Vasut #define ARM_IRQ_SEC_SGI_1		9U
75*b45b5bacSMarek Vasut #define ARM_IRQ_SEC_SGI_2		10U
76*b45b5bacSMarek Vasut #define ARM_IRQ_SEC_SGI_3		11U
77*b45b5bacSMarek Vasut #define ARM_IRQ_SEC_SGI_4		12U
78*b45b5bacSMarek Vasut #define ARM_IRQ_SEC_SGI_5		13U
79*b45b5bacSMarek Vasut #define ARM_IRQ_SEC_SGI_6		14U
80*b45b5bacSMarek Vasut #define ARM_IRQ_SEC_SGI_7		15U
81*b45b5bacSMarek Vasut 
82*b45b5bacSMarek Vasut /* Timer control */
83*b45b5bacSMarek Vasut #define RCAR_CNTC_BASE			UL(0xE6080000)
84*b45b5bacSMarek Vasut #if (RCAR_LSI == RCAR_S4)
85*b45b5bacSMarek Vasut #define RCAR_CNTC_EXTAL			16666666U
86*b45b5bacSMarek Vasut #elif (RCAR_LSI == RCAR_V4H)
87*b45b5bacSMarek Vasut #define RCAR_CNTC_EXTAL			16666600U
88*b45b5bacSMarek Vasut #elif (RCAR_LSI == RCAR_V4M)
89*b45b5bacSMarek Vasut #define RCAR_CNTC_EXTAL			16666600U
90*b45b5bacSMarek Vasut #endif
91*b45b5bacSMarek Vasut /* Conversion value from seconds to micro seconds */
92*b45b5bacSMarek Vasut #define RCAR_CONV_MICROSEC		1000000UL
93*b45b5bacSMarek Vasut 
94*b45b5bacSMarek Vasut /* APMU */
95*b45b5bacSMarek Vasut #define RCAR_APMU_BASE			(UL(0xE6170000) + (RCAR_DOMAIN * UL(0x1000)))
96*b45b5bacSMarek Vasut #define RCAR_APMU_PWRCTRLCL_PCHPDNEN	BIT(17)
97*b45b5bacSMarek Vasut 
98*b45b5bacSMarek Vasut #define RCAR_APMU_PWRCTRLC_WUP_REQ	BIT(0)
99*b45b5bacSMarek Vasut #define RCAR_APMU_PWRCTRLC_IWUP_EN	BIT(4)
100*b45b5bacSMarek Vasut #define RCAR_APMU_PWRCTRLC_PCHPDNEN	BIT(17)
101*b45b5bacSMarek Vasut 
102*b45b5bacSMarek Vasut #define RCAR_APMU_SAFECTRLC_DBGGEN	BIT(13)
103*b45b5bacSMarek Vasut 
104*b45b5bacSMarek Vasut #define RCAR_APMU_FSMSTSRC_STATE_OFF	0x00000000U
105*b45b5bacSMarek Vasut 
106*b45b5bacSMarek Vasut #define RCAR_APMU_RVBARPLC_MASK		0xFFFFFFFCU
107*b45b5bacSMarek Vasut #define RCAR_APMU_RVBARPL_VLD		0x00000001U
108*b45b5bacSMarek Vasut 
109*b45b5bacSMarek Vasut /* Soft Power On Reset Control Register 0 */
110*b45b5bacSMarek Vasut #define RCAR_SRESCR			(UL(0xE6160018) + (RCAR_DOMAIN * UL(0x4000)))
111*b45b5bacSMarek Vasut 
112*b45b5bacSMarek Vasut /* Product register */
113*b45b5bacSMarek Vasut #define RCAR_PRR			UL(0xFFF00044)
114*b45b5bacSMarek Vasut #define RCAR_CPU_HAVE_CAXX		0x00000000U
115*b45b5bacSMarek Vasut #define PRR_CAXX_XX_EN_CLUSTER_MASK	0x00000004U
116*b45b5bacSMarek Vasut 
117*b45b5bacSMarek Vasut /* Memory mapped Generic timer interfaces */
118*b45b5bacSMarek Vasut #define ARM_SYS_CNTCTL_BASE		RCAR_CNTC_BASE
119*b45b5bacSMarek Vasut 
120*b45b5bacSMarek Vasut /* MPIDR_EL1 */
121*b45b5bacSMarek Vasut #define	RCAR_MPIDR_AFFMASK		0x00FFFF00U
122*b45b5bacSMarek Vasut 
123*b45b5bacSMarek Vasut /* CPUPWRCTLR */
124*b45b5bacSMarek Vasut #define CPUPWRCTLR_PWDN			0x00000001U
125*b45b5bacSMarek Vasut 
126*b45b5bacSMarek Vasut /* For DDR self refresh */
127*b45b5bacSMarek Vasut #define DBSC4_REG_BASE				UL(0xE6790000)
128*b45b5bacSMarek Vasut #define DBSC4_REG_DBSYSCNT0			(DBSC4_REG_BASE + UL(0x0100))
129*b45b5bacSMarek Vasut #define DBSC4_REG_DBACEN			(DBSC4_REG_BASE + UL(0x0200))
130*b45b5bacSMarek Vasut #define DBSC4_REG_DBRFEN			(DBSC4_REG_BASE + UL(0x0204))
131*b45b5bacSMarek Vasut #define DBSC4_REG_DBCMD				(DBSC4_REG_BASE + UL(0x0208))
132*b45b5bacSMarek Vasut #define DBSC4_REG_DBWAIT			(DBSC4_REG_BASE + UL(0x0210))
133*b45b5bacSMarek Vasut #define DBSC4_REG_DBCALCNF			(DBSC4_REG_BASE + UL(0x0424))
134*b45b5bacSMarek Vasut #define DBSC4_REG_DBDFIPMSTRCNF			(DBSC4_REG_BASE + UL(0x0520))
135*b45b5bacSMarek Vasut #define DBSC4_REG_DBCAM0CTRL0			(DBSC4_REG_BASE + UL(0x0940))
136*b45b5bacSMarek Vasut #define DBSC4_REG_DBCAM0STAT0			(DBSC4_REG_BASE + UL(0x0980))
137*b45b5bacSMarek Vasut 
138*b45b5bacSMarek Vasut #define DBSC4_SET_DBSYSCNT0_WRITE_ENABLE	0x00001234U
139*b45b5bacSMarek Vasut #define DBSC4_SET_DBSYSCNT0_WRITE_DISABLE	0x00000000U
140*b45b5bacSMarek Vasut #define DBSC4_SET_DBCMD_OPC_PRE			0x04000000U
141*b45b5bacSMarek Vasut #define DBSC4_SET_DBCMD_OPC_SR			0x0A000000U
142*b45b5bacSMarek Vasut #define DBSC4_SET_DBCMD_OPC_MRW			0x0E000000U
143*b45b5bacSMarek Vasut #define DBSC4_SET_DBCMD_OPC_PD			0x08000000U
144*b45b5bacSMarek Vasut #define DBSC4_SET_DBCMD_CH_ALL			0x00800000U
145*b45b5bacSMarek Vasut #define DBSC4_SET_DBCMD_RANK_ALL		0x00040000U
146*b45b5bacSMarek Vasut #define DBSC4_SET_DBCMD_ARG_ALL			0x00000010U
147*b45b5bacSMarek Vasut #define DBSC4_SET_DBCMD_ARG_ENTER		0x00000000U
148*b45b5bacSMarek Vasut #define DBSC4_SET_DBCMD_ARG_MRW_ODTC		0x00000B00U
149*b45b5bacSMarek Vasut #define DBSC4_BIT_DBDFIPMSTRCNF_PMSTREN		0x00000001U
150*b45b5bacSMarek Vasut #define DBSC4_BIT_DBCAM0STAT0			0x00000001U
151*b45b5bacSMarek Vasut #define RCAR_WAIT_DBCS4_FLUSH			50UL
152*b45b5bacSMarek Vasut 
153*b45b5bacSMarek Vasut #endif /* RCAR_DEF_H */
154