xref: /rk3399_ARM-atf/plat/xilinx/versal/include/versal_def.h (revision be73459a945d8fa781fcc864943ccd0a8d92421c)
1ab36d097STejas Patel /*
2*be73459aSVenkatesh Yadav Abbarapu  * Copyright (c) 2018-2022, ARM Limited and Contributors. All rights reserved.
3ab36d097STejas Patel  *
4ab36d097STejas Patel  * SPDX-License-Identifier: BSD-3-Clause
5ab36d097STejas Patel  */
6ab36d097STejas Patel 
7ab36d097STejas Patel #ifndef VERSAL_DEF_H
8ab36d097STejas Patel #define VERSAL_DEF_H
9ab36d097STejas Patel 
1053adebadSManish V Badarkhe #include <plat/arm/common/smccc_def.h>
11ab36d097STejas Patel #include <plat/common/common_def.h>
12ab36d097STejas Patel 
13ab36d097STejas Patel /* List all consoles */
14ab36d097STejas Patel #define VERSAL_CONSOLE_ID_pl011	1
15ab36d097STejas Patel #define VERSAL_CONSOLE_ID_pl011_0	1
16ab36d097STejas Patel #define VERSAL_CONSOLE_ID_pl011_1	2
17ab36d097STejas Patel #define VERSAL_CONSOLE_ID_dcc		3
18ab36d097STejas Patel 
19ab36d097STejas Patel #define VERSAL_CONSOLE_IS(con)	(VERSAL_CONSOLE_ID_ ## con == VERSAL_CONSOLE)
20ab36d097STejas Patel 
21ab36d097STejas Patel /* List all supported platforms */
22ab36d097STejas Patel #define VERSAL_PLATFORM_ID_versal_virt	1
23*be73459aSVenkatesh Yadav Abbarapu #define VERSAL_PLATFORM_ID_spp_itr6	2
24*be73459aSVenkatesh Yadav Abbarapu #define VERSAL_PLATFORM_ID_emu_itr6	3
25d69bbd0eSSiva Durga Prasad Paladugu #define VERSAL_PLATFORM_ID_silicon	4
26ab36d097STejas Patel 
27ab36d097STejas Patel #define VERSAL_PLATFORM_IS(con)	(VERSAL_PLATFORM_ID_ ## con == VERSAL_PLATFORM)
28ab36d097STejas Patel 
29ab36d097STejas Patel /* Firmware Image Package */
30ab36d097STejas Patel #define VERSAL_PRIMARY_CPU	0
31ab36d097STejas Patel 
32ab36d097STejas Patel /*******************************************************************************
33ab36d097STejas Patel  * memory map related constants
34ab36d097STejas Patel  ******************************************************************************/
35ab36d097STejas Patel #define DEVICE0_BASE		0xFF000000
36ab36d097STejas Patel #define DEVICE0_SIZE		0x00E00000
37ab36d097STejas Patel #define DEVICE1_BASE		0xF9000000
38ab36d097STejas Patel #define DEVICE1_SIZE		0x00800000
39ab36d097STejas Patel 
40ab36d097STejas Patel /* CRL */
41ab36d097STejas Patel #define VERSAL_CRL				0xFF5E0000
42ab36d097STejas Patel #define VERSAL_CRL_TIMESTAMP_REF_CTRL		(VERSAL_CRL + 0x14C)
43ab36d097STejas Patel #define VERSAL_CRL_RST_TIMESTAMP_OFFSET	(VERSAL_CRL + 0x348)
44ab36d097STejas Patel 
45ab36d097STejas Patel #define VERSAL_CRL_APB_TIMESTAMP_REF_CTRL_CLKACT_BIT	(1 << 25)
46ab36d097STejas Patel 
47ab36d097STejas Patel /* IOU SCNTRS */
48ab36d097STejas Patel #define VERSAL_IOU_SCNTRS			 0xFF140000
49ab36d097STejas Patel #define VERSAL_IOU_SCNTRS_COUNTER_CONTROL_REG	(VERSAL_IOU_SCNTRS + 0x0)
50ab36d097STejas Patel #define VERSAL_IOU_SCNTRS_BASE_FREQ		(VERSAL_IOU_SCNTRS + 0x20)
51ab36d097STejas Patel 
52ab36d097STejas Patel #define VERSAL_IOU_SCNTRS_CONTROL_EN	1
53ab36d097STejas Patel 
54ab36d097STejas Patel /*******************************************************************************
55ab36d097STejas Patel  * IRQ constants
56ab36d097STejas Patel  ******************************************************************************/
57b2bb3efbSAbhyuday Godhasara #define VERSAL_IRQ_SEC_PHY_TIMER		U(29)
58ab36d097STejas Patel 
59ab36d097STejas Patel /*******************************************************************************
605a8ffeabSTejas Patel  * CCI-400 related constants
615a8ffeabSTejas Patel  ******************************************************************************/
625a8ffeabSTejas Patel #define PLAT_ARM_CCI_BASE		0xFD000000
635a8ffeabSTejas Patel #define PLAT_ARM_CCI_CLUSTER0_SL_IFACE_IX	4
645a8ffeabSTejas Patel #define PLAT_ARM_CCI_CLUSTER1_SL_IFACE_IX	5
655a8ffeabSTejas Patel 
665a8ffeabSTejas Patel /*******************************************************************************
67ab36d097STejas Patel  * UART related constants
68ab36d097STejas Patel  ******************************************************************************/
69ab36d097STejas Patel #define VERSAL_UART0_BASE		0xFF000000
70ab36d097STejas Patel #define VERSAL_UART1_BASE		0xFF010000
71ab36d097STejas Patel 
720b25f404SVenkatesh Yadav Abbarapu #if VERSAL_CONSOLE_IS(pl011) || VERSAL_CONSOLE_IS(dcc)
73ab36d097STejas Patel # define VERSAL_UART_BASE	VERSAL_UART0_BASE
74ab36d097STejas Patel #elif VERSAL_CONSOLE_IS(pl011_1)
75ab36d097STejas Patel # define VERSAL_UART_BASE	VERSAL_UART1_BASE
76ab36d097STejas Patel #else
77ab36d097STejas Patel # error "invalid VERSAL_CONSOLE"
78ab36d097STejas Patel #endif
79ab36d097STejas Patel 
80ab36d097STejas Patel #define PLAT_VERSAL_CRASH_UART_BASE		VERSAL_UART_BASE
81ab36d097STejas Patel #define PLAT_VERSAL_CRASH_UART_CLK_IN_HZ	VERSAL_UART_CLOCK
82ab36d097STejas Patel #define VERSAL_CONSOLE_BAUDRATE			VERSAL_UART_BAUDRATE
83ab36d097STejas Patel 
84ab36d097STejas Patel /*******************************************************************************
85ab36d097STejas Patel  * Platform related constants
86ab36d097STejas Patel  ******************************************************************************/
87ab36d097STejas Patel #if VERSAL_PLATFORM_IS(versal_virt)
88ab36d097STejas Patel # define PLATFORM_NAME		"Versal Virt"
89ab36d097STejas Patel # define VERSAL_UART_CLOCK	25000000
90ab36d097STejas Patel # define VERSAL_UART_BAUDRATE	115200
91c959c479SSiva Durga Prasad Paladugu # define VERSAL_CPU_CLOCK	2720000
92d69bbd0eSSiva Durga Prasad Paladugu #elif VERSAL_PLATFORM_IS(silicon)
93d69bbd0eSSiva Durga Prasad Paladugu # define PLATFORM_NAME		"Versal Silicon"
94d69bbd0eSSiva Durga Prasad Paladugu # define VERSAL_UART_CLOCK	100000000
95d69bbd0eSSiva Durga Prasad Paladugu # define VERSAL_UART_BAUDRATE	115200
96d69bbd0eSSiva Durga Prasad Paladugu # define VERSAL_CPU_CLOCK	100000000
97*be73459aSVenkatesh Yadav Abbarapu #elif VERSAL_PLATFORM_IS(spp_itr6)
98*be73459aSVenkatesh Yadav Abbarapu # define PLATFORM_NAME          "SPP ITR6"
99*be73459aSVenkatesh Yadav Abbarapu # define VERSAL_UART_CLOCK      25000000
100*be73459aSVenkatesh Yadav Abbarapu # define VERSAL_UART_BAUDRATE   115200
101*be73459aSVenkatesh Yadav Abbarapu # define VERSAL_CPU_CLOCK       2720000
102*be73459aSVenkatesh Yadav Abbarapu #elif VERSAL_PLATFORM_IS(emu_itr6)
103*be73459aSVenkatesh Yadav Abbarapu # define PLATFORM_NAME          "EMU ITR6"
104*be73459aSVenkatesh Yadav Abbarapu # define VERSAL_UART_CLOCK      212000
105*be73459aSVenkatesh Yadav Abbarapu # define VERSAL_UART_BAUDRATE   9600
106*be73459aSVenkatesh Yadav Abbarapu # define VERSAL_CPU_CLOCK       212000
107ab36d097STejas Patel #endif
108ab36d097STejas Patel 
109ab36d097STejas Patel /* Access control register defines */
110ab36d097STejas Patel #define ACTLR_EL3_L2ACTLR_BIT	(1 << 6)
111ab36d097STejas Patel #define ACTLR_EL3_CPUACTLR_BIT	(1 << 0)
112ab36d097STejas Patel 
113ab36d097STejas Patel /* For cpu reset APU space here too 0xFE5F1000 CRF_APB*/
114ab36d097STejas Patel #define CRF_BASE		0xFD1A0000
115ab36d097STejas Patel #define CRF_SIZE		0x00600000
116ab36d097STejas Patel 
117ab36d097STejas Patel /* CRF registers and bitfields */
118ab36d097STejas Patel #define CRF_RST_APU	(CRF_BASE + 0X00000300)
119ab36d097STejas Patel 
120ab36d097STejas Patel #define CRF_RST_APU_ACPU_RESET		(1 << 0)
121ab36d097STejas Patel #define CRF_RST_APU_ACPU_PWRON_RESET	(1 << 10)
122ab36d097STejas Patel 
1235a8ffeabSTejas Patel #define FPD_MAINCCI_BASE	0xFD000000
1245a8ffeabSTejas Patel #define FPD_MAINCCI_SIZE	0x00100000
1255a8ffeabSTejas Patel 
126ab36d097STejas Patel /* APU registers and bitfields */
1275d1c211eSAbhyuday Godhasara #define FPD_APU_BASE		0xFD5C0000U
1285d1c211eSAbhyuday Godhasara #define FPD_APU_CONFIG_0	(FPD_APU_BASE + 0x20U)
1295d1c211eSAbhyuday Godhasara #define FPD_APU_RVBAR_L_0	(FPD_APU_BASE + 0x40U)
1305d1c211eSAbhyuday Godhasara #define FPD_APU_RVBAR_H_0	(FPD_APU_BASE + 0x44U)
1315d1c211eSAbhyuday Godhasara #define FPD_APU_PWRCTL		(FPD_APU_BASE + 0x90U)
132ab36d097STejas Patel 
1335d1c211eSAbhyuday Godhasara #define FPD_APU_CONFIG_0_VINITHI_SHIFT	8U
1345d1c211eSAbhyuday Godhasara #define APU_0_PWRCTL_CPUPWRDWNREQ_MASK	1U
1355d1c211eSAbhyuday Godhasara #define APU_1_PWRCTL_CPUPWRDWNREQ_MASK	2U
136ab36d097STejas Patel 
13731ce893eSVenkatesh Yadav Abbarapu /* PMC registers and bitfields */
1385d1c211eSAbhyuday Godhasara #define PMC_GLOBAL_BASE			0xF1110000U
1395d1c211eSAbhyuday Godhasara #define PMC_GLOBAL_GLOB_GEN_STORAGE4	(PMC_GLOBAL_BASE + 0x40U)
14031ce893eSVenkatesh Yadav Abbarapu 
141c73a90e5STejas Patel /* IPI registers and bitfields */
1420623dceaSAbhyuday Godhasara #define IPI0_REG_BASE		U(0xFF330000)
143b2bb3efbSAbhyuday Godhasara #define IPI0_TRIG_BIT		(1U << 2U)
144b2bb3efbSAbhyuday Godhasara #define PMC_IPI_TRIG_BIT	(1U << 1U)
1450623dceaSAbhyuday Godhasara #define IPI1_REG_BASE		U(0xFF340000)
146b2bb3efbSAbhyuday Godhasara #define IPI1_TRIG_BIT		(1U << 3U)
1470623dceaSAbhyuday Godhasara #define IPI2_REG_BASE		U(0xFF350000)
148b2bb3efbSAbhyuday Godhasara #define IPI2_TRIG_BIT		(1U << 4U)
1490623dceaSAbhyuday Godhasara #define IPI3_REG_BASE		U(0xFF360000)
150b2bb3efbSAbhyuday Godhasara #define IPI3_TRIG_BIT		(1U << 5U)
1510623dceaSAbhyuday Godhasara #define IPI4_REG_BASE		U(0xFF370000)
152b2bb3efbSAbhyuday Godhasara #define IPI4_TRIG_BIT		(1U << 5U)
1530623dceaSAbhyuday Godhasara #define IPI5_REG_BASE		U(0xFF380000)
154b2bb3efbSAbhyuday Godhasara #define IPI5_TRIG_BIT		(1U << 6U)
155c73a90e5STejas Patel 
156ab36d097STejas Patel #endif /* VERSAL_DEF_H */
157