xref: /rk3399_ARM-atf/plat/xilinx/versal/include/versal_def.h (revision 5c06747a0a9a460b8a04fbf4c0f58827124ba893)
1ab36d097STejas Patel /*
2619bc13eSMichal Simek  * Copyright (c) 2018-2022, Arm Limited and Contributors. All rights reserved.
3e497421dSTanmay Shah  * Copyright (c) 2019-2022, Xilinx, Inc. All rights reserved.
409ac1ca2SMaheedhar Bollapalli  * Copyright (c) 2022-2024, Advanced Micro Devices, Inc. All rights reserved.
5ab36d097STejas Patel  *
6ab36d097STejas Patel  * SPDX-License-Identifier: BSD-3-Clause
7ab36d097STejas Patel  */
8ab36d097STejas Patel 
9ab36d097STejas Patel #ifndef VERSAL_DEF_H
10ab36d097STejas Patel #define VERSAL_DEF_H
11ab36d097STejas Patel 
1253adebadSManish V Badarkhe #include <plat/arm/common/smccc_def.h>
13ab36d097STejas Patel #include <plat/common/common_def.h>
14ab36d097STejas Patel 
15079c6e24SAkshay Belsare #define PLATFORM_MASK                  GENMASK(27U, 24U)
16079c6e24SAkshay Belsare #define PLATFORM_VERSION_MASK          GENMASK(31U, 28U)
17079c6e24SAkshay Belsare 
18e497421dSTanmay Shah /* number of interrupt handlers. increase as required */
19b802b278SMaheedhar Bollapalli #define MAX_INTR_EL3			2U
20ab36d097STejas Patel /* List all consoles */
216d413983SMichal Simek #define VERSAL_CONSOLE_ID_none		0
22ab36d097STejas Patel #define VERSAL_CONSOLE_ID_pl011	1
23ab36d097STejas Patel #define VERSAL_CONSOLE_ID_pl011_0	1
24ab36d097STejas Patel #define VERSAL_CONSOLE_ID_pl011_1	2
25ab36d097STejas Patel #define VERSAL_CONSOLE_ID_dcc		3
26d629db24SPrasad Kummari #define VERSAL_CONSOLE_ID_dtb		4
27ab36d097STejas Patel 
2804a48335SMichal Simek #define CONSOLE_IS(con)	(VERSAL_CONSOLE_ID_ ## con == VERSAL_CONSOLE)
29ab36d097STejas Patel 
30d533f58dSPrasad Kummari /* Runtime console */
31d533f58dSPrasad Kummari #define RT_CONSOLE_ID_pl011	1
32d533f58dSPrasad Kummari #define RT_CONSOLE_ID_pl011_0	1
33d533f58dSPrasad Kummari #define RT_CONSOLE_ID_pl011_1	2
34d533f58dSPrasad Kummari #define RT_CONSOLE_ID_dcc	3
35d533f58dSPrasad Kummari #define RT_CONSOLE_ID_dtb	4
36d533f58dSPrasad Kummari 
37d533f58dSPrasad Kummari #define RT_CONSOLE_IS(con)	(RT_CONSOLE_ID_ ## con == CONSOLE_RUNTIME)
38d533f58dSPrasad Kummari 
3909ac1ca2SMaheedhar Bollapalli /* List of platforms */
40*1cbf6c4aSSaivardhan Thatikonda #define VERSAL_SILICON             0U
41*1cbf6c4aSSaivardhan Thatikonda #define VERSAL_SPP                 1U
42*1cbf6c4aSSaivardhan Thatikonda #define VERSAL_EMU                 2U
43*1cbf6c4aSSaivardhan Thatikonda #define VERSAL_QEMU                3U
44*1cbf6c4aSSaivardhan Thatikonda #define VERSAL_COSIM               7U
45ab36d097STejas Patel 
46ab36d097STejas Patel /* Firmware Image Package */
47ab36d097STejas Patel #define VERSAL_PRIMARY_CPU	0
48ab36d097STejas Patel 
49ab36d097STejas Patel /*******************************************************************************
50ab36d097STejas Patel  * memory map related constants
51ab36d097STejas Patel  ******************************************************************************/
524b232404SMaheedhar Bollapalli #define DEVICE0_BASE		U(0xFF000000)
534b232404SMaheedhar Bollapalli #define DEVICE0_SIZE		U(0x00E00000)
544b232404SMaheedhar Bollapalli #define DEVICE1_BASE		U(0xF9000000)
554b232404SMaheedhar Bollapalli #define DEVICE1_SIZE		U(0x00800000)
56ab36d097STejas Patel 
57ab36d097STejas Patel /*******************************************************************************
58ab36d097STejas Patel  * IRQ constants
59ab36d097STejas Patel  ******************************************************************************/
60*1cbf6c4aSSaivardhan Thatikonda #define VERSAL_IRQ_SEC_PHY_TIMER		29U
617ff4d4fbSPrasad Kummari #define ARM_IRQ_SEC_PHY_TIMER	29
62ab36d097STejas Patel 
63ab36d097STejas Patel /*******************************************************************************
645a8ffeabSTejas Patel  * CCI-400 related constants
655a8ffeabSTejas Patel  ******************************************************************************/
668a131571SSaivardhan Thatikonda #define PLAT_ARM_CCI_BASE		UL(0xFD000000)
674b232404SMaheedhar Bollapalli #define PLAT_ARM_CCI_SIZE		U(0x00100000)
685a8ffeabSTejas Patel #define PLAT_ARM_CCI_CLUSTER0_SL_IFACE_IX	4
695a8ffeabSTejas Patel #define PLAT_ARM_CCI_CLUSTER1_SL_IFACE_IX	5
705a8ffeabSTejas Patel 
715a8ffeabSTejas Patel /*******************************************************************************
72ab36d097STejas Patel  * UART related constants
73ab36d097STejas Patel  ******************************************************************************/
744b232404SMaheedhar Bollapalli #define VERSAL_UART0_BASE		U(0xFF000000)
754b232404SMaheedhar Bollapalli #define VERSAL_UART1_BASE		U(0xFF010000)
76ab36d097STejas Patel 
77d629db24SPrasad Kummari #if CONSOLE_IS(pl011) || CONSOLE_IS(dtb)
7804a48335SMichal Simek # define UART_BASE	VERSAL_UART0_BASE
79d533f58dSPrasad Kummari # define UART_TYPE	CONSOLE_PL011
8004a48335SMichal Simek #elif CONSOLE_IS(pl011_1)
8104a48335SMichal Simek # define UART_BASE	VERSAL_UART1_BASE
82d533f58dSPrasad Kummari # define UART_TYPE	CONSOLE_PL011
83d533f58dSPrasad Kummari #elif CONSOLE_IS(dcc)
84d533f58dSPrasad Kummari # define UART_BASE	0x0
85d533f58dSPrasad Kummari # define UART_TYPE	CONSOLE_DCC
866d413983SMichal Simek #elif CONSOLE_IS(none)
876d413983SMichal Simek # define UART_TYPE	CONSOLE_NONE
88ab36d097STejas Patel #else
89ab36d097STejas Patel # error "invalid VERSAL_CONSOLE"
90ab36d097STejas Patel #endif
91ab36d097STejas Patel 
92d533f58dSPrasad Kummari /* Runtime console */
93d533f58dSPrasad Kummari #if defined(CONSOLE_RUNTIME)
94d533f58dSPrasad Kummari #if RT_CONSOLE_IS(pl011) || RT_CONSOLE_IS(dtb)
95d533f58dSPrasad Kummari # define RT_UART_BASE VERSAL_UART0_BASE
96d533f58dSPrasad Kummari # define RT_UART_TYPE	CONSOLE_PL011
97d533f58dSPrasad Kummari #elif RT_CONSOLE_IS(pl011_1)
98d533f58dSPrasad Kummari # define RT_UART_BASE VERSAL_UART1_BASE
99d533f58dSPrasad Kummari # define RT_UART_TYPE	CONSOLE_PL011
100d533f58dSPrasad Kummari #elif RT_CONSOLE_IS(dcc)
101d533f58dSPrasad Kummari # define RT_UART_BASE	0x0
102d533f58dSPrasad Kummari # define RT_UART_TYPE	CONSOLE_DCC
103d533f58dSPrasad Kummari #else
104d533f58dSPrasad Kummari # error "invalid CONSOLE_RUNTIME"
105d533f58dSPrasad Kummari #endif
106d533f58dSPrasad Kummari #endif
107d533f58dSPrasad Kummari 
108ab36d097STejas Patel /*******************************************************************************
109ab36d097STejas Patel  * Platform related constants
110ab36d097STejas Patel  ******************************************************************************/
11104a48335SMichal Simek #define UART_BAUDRATE  115200
112ab36d097STejas Patel 
113ab36d097STejas Patel /* Access control register defines */
114*1cbf6c4aSSaivardhan Thatikonda #define ACTLR_EL3_L2ACTLR_BIT	(1U << 6)
115*1cbf6c4aSSaivardhan Thatikonda #define ACTLR_EL3_CPUACTLR_BIT	(1U << 0)
116ab36d097STejas Patel 
117ab36d097STejas Patel /* For cpu reset APU space here too 0xFE5F1000 CRF_APB*/
1184b232404SMaheedhar Bollapalli #define CRF_BASE		U(0xFD1A0000)
1194b232404SMaheedhar Bollapalli #define CRF_SIZE		U(0x00600000)
120ab36d097STejas Patel 
121ab36d097STejas Patel /* CRF registers and bitfields */
122ab36d097STejas Patel #define CRF_RST_APU	(CRF_BASE + 0X00000300)
123ab36d097STejas Patel 
124*1cbf6c4aSSaivardhan Thatikonda #define CRF_RST_APU_ACPU_RESET		(1U << 0)
125*1cbf6c4aSSaivardhan Thatikonda #define CRF_RST_APU_ACPU_PWRON_RESET	(1U << 10)
126ab36d097STejas Patel 
127f000744eSPrasad Kummari /* IOU SCNTRS */
128f000744eSPrasad Kummari #define IOU_SCNTRS_BASE	U(0xFF140000)
129*1cbf6c4aSSaivardhan Thatikonda #define IOU_SCNTRS_BASE_FREQ_OFFSET	0x20U
130f000744eSPrasad Kummari 
131ab36d097STejas Patel /* APU registers and bitfields */
1325d1c211eSAbhyuday Godhasara #define FPD_APU_BASE		0xFD5C0000U
1335d1c211eSAbhyuday Godhasara #define FPD_APU_CONFIG_0	(FPD_APU_BASE + 0x20U)
1345d1c211eSAbhyuday Godhasara #define FPD_APU_RVBAR_L_0	(FPD_APU_BASE + 0x40U)
1355d1c211eSAbhyuday Godhasara #define FPD_APU_RVBAR_H_0	(FPD_APU_BASE + 0x44U)
1365d1c211eSAbhyuday Godhasara #define FPD_APU_PWRCTL		(FPD_APU_BASE + 0x90U)
137ab36d097STejas Patel 
1385d1c211eSAbhyuday Godhasara #define FPD_APU_CONFIG_0_VINITHI_SHIFT	8U
1395d1c211eSAbhyuday Godhasara #define APU_0_PWRCTL_CPUPWRDWNREQ_MASK	1U
1405d1c211eSAbhyuday Godhasara #define APU_1_PWRCTL_CPUPWRDWNREQ_MASK	2U
141ab36d097STejas Patel 
14231ce893eSVenkatesh Yadav Abbarapu /* PMC registers and bitfields */
1435d1c211eSAbhyuday Godhasara #define PMC_GLOBAL_BASE			0xF1110000U
1445d1c211eSAbhyuday Godhasara #define PMC_GLOBAL_GLOB_GEN_STORAGE4	(PMC_GLOBAL_BASE + 0x40U)
14531ce893eSVenkatesh Yadav Abbarapu 
146ab36d097STejas Patel #endif /* VERSAL_DEF_H */
147