blob: 731742da89d6decacc3853b7d08ad4e2ddd6b399 [file] [log] [blame]
Siva Durga Prasad Paladugufe4af662018-09-25 18:44:58 +05301/*
Venkatesh Yadav Abbarapu9c3b77b2022-04-13 09:04:53 +05302 * Copyright (c) 2018-2022, ARM Limited and Contributors. All rights reserved.
Siva Durga Prasad Paladugufe4af662018-09-25 18:44:58 +05303 *
4 * SPDX-License-Identifier: BSD-3-Clause
5 */
6
7#ifndef VERSAL_DEF_H
8#define VERSAL_DEF_H
9
Manish V Badarkhe55861512020-03-27 13:25:51 +000010#include <plat/arm/common/smccc_def.h>
Antonio Nino Diaze0f90632018-12-14 00:18:21 +000011#include <plat/common/common_def.h>
Siva Durga Prasad Paladugufe4af662018-09-25 18:44:58 +053012
13/* List all consoles */
14#define VERSAL_CONSOLE_ID_pl011 1
15#define VERSAL_CONSOLE_ID_pl011_0 1
16#define VERSAL_CONSOLE_ID_pl011_1 2
17#define VERSAL_CONSOLE_ID_dcc 3
18
19#define VERSAL_CONSOLE_IS(con) (VERSAL_CONSOLE_ID_ ## con == VERSAL_CONSOLE)
20
21/* List all supported platforms */
22#define VERSAL_PLATFORM_ID_versal_virt 1
Venkatesh Yadav Abbarapu9c3b77b2022-04-13 09:04:53 +053023#define VERSAL_PLATFORM_ID_spp_itr6 2
24#define VERSAL_PLATFORM_ID_emu_itr6 3
Siva Durga Prasad Paladugu2f4cc712019-05-03 16:35:25 +053025#define VERSAL_PLATFORM_ID_silicon 4
Siva Durga Prasad Paladugufe4af662018-09-25 18:44:58 +053026
27#define VERSAL_PLATFORM_IS(con) (VERSAL_PLATFORM_ID_ ## con == VERSAL_PLATFORM)
28
29/* Firmware Image Package */
30#define VERSAL_PRIMARY_CPU 0
31
32/*******************************************************************************
33 * memory map related constants
34 ******************************************************************************/
35#define DEVICE0_BASE 0xFF000000
36#define DEVICE0_SIZE 0x00E00000
37#define DEVICE1_BASE 0xF9000000
38#define DEVICE1_SIZE 0x00800000
39
40/* CRL */
41#define VERSAL_CRL 0xFF5E0000
Siva Durga Prasad Paladugufe4af662018-09-25 18:44:58 +053042#define VERSAL_CRL_TIMESTAMP_REF_CTRL (VERSAL_CRL + 0x14C)
43#define VERSAL_CRL_RST_TIMESTAMP_OFFSET (VERSAL_CRL + 0x348)
44
45#define VERSAL_CRL_APB_TIMESTAMP_REF_CTRL_CLKACT_BIT (1 << 25)
Siva Durga Prasad Paladugufe4af662018-09-25 18:44:58 +053046
47/* IOU SCNTRS */
48#define VERSAL_IOU_SCNTRS 0xFF140000
49#define VERSAL_IOU_SCNTRS_COUNTER_CONTROL_REG (VERSAL_IOU_SCNTRS + 0x0)
50#define VERSAL_IOU_SCNTRS_BASE_FREQ (VERSAL_IOU_SCNTRS + 0x20)
51
52#define VERSAL_IOU_SCNTRS_CONTROL_EN 1
53
54/*******************************************************************************
55 * IRQ constants
56 ******************************************************************************/
Abhyuday Godhasara096f5cc2021-08-13 06:45:32 -070057#define VERSAL_IRQ_SEC_PHY_TIMER U(29)
Siva Durga Prasad Paladugufe4af662018-09-25 18:44:58 +053058
59/*******************************************************************************
Tejas Patel54d13192019-02-27 18:44:55 +053060 * CCI-400 related constants
61 ******************************************************************************/
62#define PLAT_ARM_CCI_BASE 0xFD000000
63#define PLAT_ARM_CCI_CLUSTER0_SL_IFACE_IX 4
64#define PLAT_ARM_CCI_CLUSTER1_SL_IFACE_IX 5
65
66/*******************************************************************************
Siva Durga Prasad Paladugufe4af662018-09-25 18:44:58 +053067 * UART related constants
68 ******************************************************************************/
69#define VERSAL_UART0_BASE 0xFF000000
70#define VERSAL_UART1_BASE 0xFF010000
71
Venkatesh Yadav Abbarapu17a12ce2020-11-27 08:42:14 -070072#if VERSAL_CONSOLE_IS(pl011) || VERSAL_CONSOLE_IS(dcc)
Siva Durga Prasad Paladugufe4af662018-09-25 18:44:58 +053073# define VERSAL_UART_BASE VERSAL_UART0_BASE
74#elif VERSAL_CONSOLE_IS(pl011_1)
75# define VERSAL_UART_BASE VERSAL_UART1_BASE
76#else
77# error "invalid VERSAL_CONSOLE"
78#endif
79
80#define PLAT_VERSAL_CRASH_UART_BASE VERSAL_UART_BASE
81#define PLAT_VERSAL_CRASH_UART_CLK_IN_HZ VERSAL_UART_CLOCK
82#define VERSAL_CONSOLE_BAUDRATE VERSAL_UART_BAUDRATE
83
84/*******************************************************************************
85 * Platform related constants
86 ******************************************************************************/
87#if VERSAL_PLATFORM_IS(versal_virt)
88# define PLATFORM_NAME "Versal Virt"
89# define VERSAL_UART_CLOCK 25000000
90# define VERSAL_UART_BAUDRATE 115200
Siva Durga Prasad Paladugu10161e52019-04-27 11:23:20 +053091# define VERSAL_CPU_CLOCK 2720000
Siva Durga Prasad Paladugu2f4cc712019-05-03 16:35:25 +053092#elif VERSAL_PLATFORM_IS(silicon)
93# define PLATFORM_NAME "Versal Silicon"
94# define VERSAL_UART_CLOCK 100000000
95# define VERSAL_UART_BAUDRATE 115200
96# define VERSAL_CPU_CLOCK 100000000
Venkatesh Yadav Abbarapu9c3b77b2022-04-13 09:04:53 +053097#elif VERSAL_PLATFORM_IS(spp_itr6)
98# define PLATFORM_NAME "SPP ITR6"
99# define VERSAL_UART_CLOCK 25000000
100# define VERSAL_UART_BAUDRATE 115200
101# define VERSAL_CPU_CLOCK 2720000
102#elif VERSAL_PLATFORM_IS(emu_itr6)
103# define PLATFORM_NAME "EMU ITR6"
104# define VERSAL_UART_CLOCK 212000
105# define VERSAL_UART_BAUDRATE 9600
106# define VERSAL_CPU_CLOCK 212000
Siva Durga Prasad Paladugufe4af662018-09-25 18:44:58 +0530107#endif
108
109/* Access control register defines */
110#define ACTLR_EL3_L2ACTLR_BIT (1 << 6)
111#define ACTLR_EL3_CPUACTLR_BIT (1 << 0)
112
113/* For cpu reset APU space here too 0xFE5F1000 CRF_APB*/
114#define CRF_BASE 0xFD1A0000
115#define CRF_SIZE 0x00600000
116
117/* CRF registers and bitfields */
118#define CRF_RST_APU (CRF_BASE + 0X00000300)
119
120#define CRF_RST_APU_ACPU_RESET (1 << 0)
121#define CRF_RST_APU_ACPU_PWRON_RESET (1 << 10)
122
Tejas Patel54d13192019-02-27 18:44:55 +0530123#define FPD_MAINCCI_BASE 0xFD000000
124#define FPD_MAINCCI_SIZE 0x00100000
125
Siva Durga Prasad Paladugufe4af662018-09-25 18:44:58 +0530126/* APU registers and bitfields */
Abhyuday Godhasaraedc38ae2021-08-04 23:58:46 -0700127#define FPD_APU_BASE 0xFD5C0000U
128#define FPD_APU_CONFIG_0 (FPD_APU_BASE + 0x20U)
129#define FPD_APU_RVBAR_L_0 (FPD_APU_BASE + 0x40U)
130#define FPD_APU_RVBAR_H_0 (FPD_APU_BASE + 0x44U)
131#define FPD_APU_PWRCTL (FPD_APU_BASE + 0x90U)
Siva Durga Prasad Paladugufe4af662018-09-25 18:44:58 +0530132
Abhyuday Godhasaraedc38ae2021-08-04 23:58:46 -0700133#define FPD_APU_CONFIG_0_VINITHI_SHIFT 8U
134#define APU_0_PWRCTL_CPUPWRDWNREQ_MASK 1U
135#define APU_1_PWRCTL_CPUPWRDWNREQ_MASK 2U
Siva Durga Prasad Paladugufe4af662018-09-25 18:44:58 +0530136
Venkatesh Yadav Abbarapu9156ffd2020-01-22 21:23:20 -0700137/* PMC registers and bitfields */
Abhyuday Godhasaraedc38ae2021-08-04 23:58:46 -0700138#define PMC_GLOBAL_BASE 0xF1110000U
139#define PMC_GLOBAL_GLOB_GEN_STORAGE4 (PMC_GLOBAL_BASE + 0x40U)
Venkatesh Yadav Abbarapu9156ffd2020-01-22 21:23:20 -0700140
Tejas Patel354fe572018-12-14 00:55:37 -0800141/* IPI registers and bitfields */
Abhyuday Godhasara589afa52021-08-11 06:15:13 -0700142#define IPI0_REG_BASE U(0xFF330000)
Abhyuday Godhasara096f5cc2021-08-13 06:45:32 -0700143#define IPI0_TRIG_BIT (1U << 2U)
144#define PMC_IPI_TRIG_BIT (1U << 1U)
Abhyuday Godhasara589afa52021-08-11 06:15:13 -0700145#define IPI1_REG_BASE U(0xFF340000)
Abhyuday Godhasara096f5cc2021-08-13 06:45:32 -0700146#define IPI1_TRIG_BIT (1U << 3U)
Abhyuday Godhasara589afa52021-08-11 06:15:13 -0700147#define IPI2_REG_BASE U(0xFF350000)
Abhyuday Godhasara096f5cc2021-08-13 06:45:32 -0700148#define IPI2_TRIG_BIT (1U << 4U)
Abhyuday Godhasara589afa52021-08-11 06:15:13 -0700149#define IPI3_REG_BASE U(0xFF360000)
Abhyuday Godhasara096f5cc2021-08-13 06:45:32 -0700150#define IPI3_TRIG_BIT (1U << 5U)
Abhyuday Godhasara589afa52021-08-11 06:15:13 -0700151#define IPI4_REG_BASE U(0xFF370000)
Abhyuday Godhasara096f5cc2021-08-13 06:45:32 -0700152#define IPI4_TRIG_BIT (1U << 5U)
Abhyuday Godhasara589afa52021-08-11 06:15:13 -0700153#define IPI5_REG_BASE U(0xFF380000)
Abhyuday Godhasara096f5cc2021-08-13 06:45:32 -0700154#define IPI5_TRIG_BIT (1U << 6U)
Tejas Patel354fe572018-12-14 00:55:37 -0800155
Siva Durga Prasad Paladugufe4af662018-09-25 18:44:58 +0530156#endif /* VERSAL_DEF_H */