xref: /rk3399_ARM-atf/plat/xilinx/versal/include/versal_def.h (revision 5a8ffeabf97eb7fb1e1276cb967584af0ff7adbb)
1ab36d097STejas Patel /*
2ab36d097STejas Patel  * Copyright (c) 2018-2019, 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 
10ab36d097STejas Patel #include <plat/common/common_def.h>
11ab36d097STejas Patel 
12ab36d097STejas Patel /* List all consoles */
13ab36d097STejas Patel #define VERSAL_CONSOLE_ID_pl011	1
14ab36d097STejas Patel #define VERSAL_CONSOLE_ID_pl011_0	1
15ab36d097STejas Patel #define VERSAL_CONSOLE_ID_pl011_1	2
16ab36d097STejas Patel #define VERSAL_CONSOLE_ID_dcc		3
17ab36d097STejas Patel 
18ab36d097STejas Patel #define VERSAL_CONSOLE_IS(con)	(VERSAL_CONSOLE_ID_ ## con == VERSAL_CONSOLE)
19ab36d097STejas Patel 
20ab36d097STejas Patel /* List all supported platforms */
21ab36d097STejas Patel #define VERSAL_PLATFORM_ID_versal_virt	1
22ab36d097STejas Patel 
23ab36d097STejas Patel #define VERSAL_PLATFORM_IS(con)	(VERSAL_PLATFORM_ID_ ## con == VERSAL_PLATFORM)
24ab36d097STejas Patel 
25ab36d097STejas Patel /* Firmware Image Package */
26ab36d097STejas Patel #define VERSAL_PRIMARY_CPU	0
27ab36d097STejas Patel 
28ab36d097STejas Patel /*******************************************************************************
29ab36d097STejas Patel  * memory map related constants
30ab36d097STejas Patel  ******************************************************************************/
31ab36d097STejas Patel #define DEVICE0_BASE		0xFF000000
32ab36d097STejas Patel #define DEVICE0_SIZE		0x00E00000
33ab36d097STejas Patel #define DEVICE1_BASE		0xF9000000
34ab36d097STejas Patel #define DEVICE1_SIZE		0x00800000
35ab36d097STejas Patel 
36ab36d097STejas Patel /* CRL */
37ab36d097STejas Patel #define VERSAL_CRL				0xFF5E0000
38ab36d097STejas Patel #define VERSAL_CRL_IOU_SWITCH_CTRL		(VERSAL_CRL + 0x114)
39ab36d097STejas Patel #define VERSAL_CRL_TIMESTAMP_REF_CTRL		(VERSAL_CRL + 0x14C)
40ab36d097STejas Patel #define VERSAL_CRL_RST_TIMESTAMP_OFFSET	(VERSAL_CRL + 0x348)
41ab36d097STejas Patel 
42ab36d097STejas Patel #define VERSAL_CRL_APB_TIMESTAMP_REF_CTRL_CLKACT_BIT	(1 << 25)
43ab36d097STejas Patel #define VERSAL_IOU_SWITCH_CTRL_CLKACT_BIT		(1 << 25)
44ab36d097STejas Patel #define VERSAL_IOU_SWITCH_CTRL_DIVISOR0_SHIFT		8
45ab36d097STejas Patel 
46ab36d097STejas Patel /* IOU SCNTRS */
47ab36d097STejas Patel #define VERSAL_IOU_SCNTRS			 0xFF140000
48ab36d097STejas Patel #define VERSAL_IOU_SCNTRS_COUNTER_CONTROL_REG	(VERSAL_IOU_SCNTRS + 0x0)
49ab36d097STejas Patel #define VERSAL_IOU_SCNTRS_BASE_FREQ		(VERSAL_IOU_SCNTRS + 0x20)
50ab36d097STejas Patel 
51ab36d097STejas Patel #define VERSAL_IOU_SCNTRS_CONTROL_EN	1
52ab36d097STejas Patel 
53ab36d097STejas Patel /*******************************************************************************
54ab36d097STejas Patel  * IRQ constants
55ab36d097STejas Patel  ******************************************************************************/
56ab36d097STejas Patel #define VERSAL_IRQ_SEC_PHY_TIMER		29
57ab36d097STejas Patel 
58ab36d097STejas Patel /*******************************************************************************
59*5a8ffeabSTejas Patel  * CCI-400 related constants
60*5a8ffeabSTejas Patel  ******************************************************************************/
61*5a8ffeabSTejas Patel #define PLAT_ARM_CCI_BASE		0xFD000000
62*5a8ffeabSTejas Patel #define PLAT_ARM_CCI_CLUSTER0_SL_IFACE_IX	4
63*5a8ffeabSTejas Patel #define PLAT_ARM_CCI_CLUSTER1_SL_IFACE_IX	5
64*5a8ffeabSTejas Patel 
65*5a8ffeabSTejas Patel /*******************************************************************************
66ab36d097STejas Patel  * UART related constants
67ab36d097STejas Patel  ******************************************************************************/
68ab36d097STejas Patel #define VERSAL_UART0_BASE		0xFF000000
69ab36d097STejas Patel #define VERSAL_UART1_BASE		0xFF010000
70ab36d097STejas Patel 
71ab36d097STejas Patel #if VERSAL_CONSOLE_IS(pl011)
72ab36d097STejas Patel # define VERSAL_UART_BASE	VERSAL_UART0_BASE
73ab36d097STejas Patel #elif VERSAL_CONSOLE_IS(pl011_1)
74ab36d097STejas Patel # define VERSAL_UART_BASE	VERSAL_UART1_BASE
75ab36d097STejas Patel #else
76ab36d097STejas Patel # error "invalid VERSAL_CONSOLE"
77ab36d097STejas Patel #endif
78ab36d097STejas Patel 
79ab36d097STejas Patel #define PLAT_VERSAL_CRASH_UART_BASE		VERSAL_UART_BASE
80ab36d097STejas Patel #define PLAT_VERSAL_CRASH_UART_CLK_IN_HZ	VERSAL_UART_CLOCK
81ab36d097STejas Patel #define VERSAL_CONSOLE_BAUDRATE			VERSAL_UART_BAUDRATE
82ab36d097STejas Patel 
83ab36d097STejas Patel /*******************************************************************************
84ab36d097STejas Patel  * Platform related constants
85ab36d097STejas Patel  ******************************************************************************/
86ab36d097STejas Patel #if VERSAL_PLATFORM_IS(versal_virt)
87ab36d097STejas Patel # define PLATFORM_NAME		"Versal Virt"
88ab36d097STejas Patel # define VERSAL_UART_CLOCK	25000000
89ab36d097STejas Patel # define VERSAL_UART_BAUDRATE	115200
90ab36d097STejas Patel # define VERSAL_CPU_CLOCK	62500000
91ab36d097STejas Patel #endif
92ab36d097STejas Patel 
93ab36d097STejas Patel /* Access control register defines */
94ab36d097STejas Patel #define ACTLR_EL3_L2ACTLR_BIT	(1 << 6)
95ab36d097STejas Patel #define ACTLR_EL3_CPUACTLR_BIT	(1 << 0)
96ab36d097STejas Patel 
97ab36d097STejas Patel /* For cpu reset APU space here too 0xFE5F1000 CRF_APB*/
98ab36d097STejas Patel #define CRF_BASE		0xFD1A0000
99ab36d097STejas Patel #define CRF_SIZE		0x00600000
100ab36d097STejas Patel 
101ab36d097STejas Patel /* CRF registers and bitfields */
102ab36d097STejas Patel #define CRF_RST_APU	(CRF_BASE + 0X00000300)
103ab36d097STejas Patel 
104ab36d097STejas Patel #define CRF_RST_APU_ACPU_RESET		(1 << 0)
105ab36d097STejas Patel #define CRF_RST_APU_ACPU_PWRON_RESET	(1 << 10)
106ab36d097STejas Patel 
107*5a8ffeabSTejas Patel #define FPD_MAINCCI_BASE	0xFD000000
108*5a8ffeabSTejas Patel #define FPD_MAINCCI_SIZE	0x00100000
109*5a8ffeabSTejas Patel 
110ab36d097STejas Patel /* APU registers and bitfields */
111ab36d097STejas Patel #define FPD_APU_BASE		0xFD5C0000
112ab36d097STejas Patel #define FPD_APU_CONFIG_0	(FPD_APU_BASE + 0x20)
113ab36d097STejas Patel #define FPD_APU_RVBAR_L_0	(FPD_APU_BASE + 0x40)
114ab36d097STejas Patel #define FPD_APU_RVBAR_H_0	(FPD_APU_BASE + 0x44)
115ab36d097STejas Patel #define FPD_APU_PWRCTL		(FPD_APU_BASE + 0x90)
116ab36d097STejas Patel 
117ab36d097STejas Patel #define FPD_APU_CONFIG_0_VINITHI_SHIFT	8
118fbb32695STejas Patel #define APU_0_PWRCTL_CPUPWRDWNREQ_MASK	1
119fbb32695STejas Patel #define APU_1_PWRCTL_CPUPWRDWNREQ_MASK	2
120ab36d097STejas Patel 
121c73a90e5STejas Patel /* IPI registers and bitfields */
122c73a90e5STejas Patel #define IPI0_REG_BASE		0xFF330000
123c73a90e5STejas Patel #define IPI0_TRIG_BIT		(1 << 2)
124c73a90e5STejas Patel #define PMC_IPI_TRIG_BIT	(1 << 1)
125c73a90e5STejas Patel #define IPI1_REG_BASE		0xFF340000
126c73a90e5STejas Patel #define IPI1_TRIG_BIT		(1 << 3)
127c73a90e5STejas Patel #define IPI2_REG_BASE		0xFF350000
128c73a90e5STejas Patel #define IPI2_TRIG_BIT		(1 << 4)
129c73a90e5STejas Patel #define IPI3_REG_BASE		0xFF360000
130c73a90e5STejas Patel #define IPI3_TRIG_BIT		(1 << 5)
131c73a90e5STejas Patel #define IPI4_REG_BASE		0xFF370000
132c73a90e5STejas Patel #define IPI4_TRIG_BIT		(1 << 5)
133c73a90e5STejas Patel #define IPI5_REG_BASE		0xFF380000
134c73a90e5STejas Patel #define IPI5_TRIG_BIT		(1 << 6)
135c73a90e5STejas Patel 
136ab36d097STejas Patel #endif /* VERSAL_DEF_H */
137