blob: 37df0d1aa89f29868e3ebc0b10471e45813a38da [file] [log] [blame]
Siva Durga Prasad Paladugufe4af662018-09-25 18:44:58 +05301/*
Michal Simek2a47faa2023-04-14 08:43:51 +02002 * Copyright (c) 2018-2022, Arm Limited and Contributors. All rights reserved.
Tanmay Shahfdae9e82022-08-26 15:06:00 -07003 * Copyright (c) 2019-2022, Xilinx, Inc. All rights reserved.
Maheedhar Bollapalliae8e0132024-07-24 09:54:15 +05304 * Copyright (c) 2022-2024, Advanced Micro Devices, Inc. All rights reserved.
Siva Durga Prasad Paladugufe4af662018-09-25 18:44:58 +05305 *
6 * SPDX-License-Identifier: BSD-3-Clause
7 */
8
9#ifndef VERSAL_DEF_H
10#define VERSAL_DEF_H
11
Manish V Badarkhe55861512020-03-27 13:25:51 +000012#include <plat/arm/common/smccc_def.h>
Antonio Nino Diaze0f90632018-12-14 00:18:21 +000013#include <plat/common/common_def.h>
Siva Durga Prasad Paladugufe4af662018-09-25 18:44:58 +053014
Akshay Belsare589ccce2023-05-08 19:00:53 +053015#define PLATFORM_MASK GENMASK(27U, 24U)
16#define PLATFORM_VERSION_MASK GENMASK(31U, 28U)
17
Tanmay Shahfdae9e82022-08-26 15:06:00 -070018/* number of interrupt handlers. increase as required */
19#define MAX_INTR_EL3 2
Siva Durga Prasad Paladugufe4af662018-09-25 18:44:58 +053020/* List all consoles */
21#define VERSAL_CONSOLE_ID_pl011 1
22#define VERSAL_CONSOLE_ID_pl011_0 1
23#define VERSAL_CONSOLE_ID_pl011_1 2
24#define VERSAL_CONSOLE_ID_dcc 3
25
Michal Simekc56e5482023-09-27 13:58:06 +020026#define CONSOLE_IS(con) (VERSAL_CONSOLE_ID_ ## con == VERSAL_CONSOLE)
Siva Durga Prasad Paladugufe4af662018-09-25 18:44:58 +053027
Prasad Kummarie0abe5f2024-03-19 22:37:12 +053028/* Runtime console */
29#define RT_CONSOLE_ID_pl011 1
30#define RT_CONSOLE_ID_pl011_0 1
31#define RT_CONSOLE_ID_pl011_1 2
32#define RT_CONSOLE_ID_dcc 3
33#define RT_CONSOLE_ID_dtb 4
34
35#define RT_CONSOLE_IS(con) (RT_CONSOLE_ID_ ## con == CONSOLE_RUNTIME)
36
Maheedhar Bollapalliae8e0132024-07-24 09:54:15 +053037/* List of platforms */
38#define VERSAL_SILICON U(0)
39#define VERSAL_SPP U(1)
40#define VERSAL_EMU U(2)
41#define VERSAL_QEMU U(3)
Akshay Belsarefc74bf12024-09-13 15:56:00 +053042#define VERSAL_COSIM U(7)
Siva Durga Prasad Paladugufe4af662018-09-25 18:44:58 +053043
44/* Firmware Image Package */
45#define VERSAL_PRIMARY_CPU 0
46
47/*******************************************************************************
48 * memory map related constants
49 ******************************************************************************/
50#define DEVICE0_BASE 0xFF000000
51#define DEVICE0_SIZE 0x00E00000
52#define DEVICE1_BASE 0xF9000000
53#define DEVICE1_SIZE 0x00800000
54
Siva Durga Prasad Paladugufe4af662018-09-25 18:44:58 +053055/*******************************************************************************
56 * IRQ constants
57 ******************************************************************************/
Abhyuday Godhasara096f5cc2021-08-13 06:45:32 -070058#define VERSAL_IRQ_SEC_PHY_TIMER U(29)
Prasad Kummari6dee9fb2023-10-31 15:20:00 +053059#define ARM_IRQ_SEC_PHY_TIMER 29
Siva Durga Prasad Paladugufe4af662018-09-25 18:44:58 +053060
61/*******************************************************************************
Tejas Patel54d13192019-02-27 18:44:55 +053062 * CCI-400 related constants
63 ******************************************************************************/
64#define PLAT_ARM_CCI_BASE 0xFD000000
Michal Simek467e16e2023-04-14 08:39:49 +020065#define PLAT_ARM_CCI_SIZE 0x00100000
Tejas Patel54d13192019-02-27 18:44:55 +053066#define PLAT_ARM_CCI_CLUSTER0_SL_IFACE_IX 4
67#define PLAT_ARM_CCI_CLUSTER1_SL_IFACE_IX 5
68
69/*******************************************************************************
Siva Durga Prasad Paladugufe4af662018-09-25 18:44:58 +053070 * UART related constants
71 ******************************************************************************/
72#define VERSAL_UART0_BASE 0xFF000000
73#define VERSAL_UART1_BASE 0xFF010000
74
Prasad Kummarie0abe5f2024-03-19 22:37:12 +053075#if CONSOLE_IS(pl011)
Michal Simekc56e5482023-09-27 13:58:06 +020076# define UART_BASE VERSAL_UART0_BASE
Prasad Kummarie0abe5f2024-03-19 22:37:12 +053077# define UART_TYPE CONSOLE_PL011
Michal Simekc56e5482023-09-27 13:58:06 +020078#elif CONSOLE_IS(pl011_1)
79# define UART_BASE VERSAL_UART1_BASE
Prasad Kummarie0abe5f2024-03-19 22:37:12 +053080# define UART_TYPE CONSOLE_PL011
81#elif CONSOLE_IS(dcc)
82# define UART_BASE 0x0
83# define UART_TYPE CONSOLE_DCC
Siva Durga Prasad Paladugufe4af662018-09-25 18:44:58 +053084#else
85# error "invalid VERSAL_CONSOLE"
86#endif
87
Prasad Kummarie0abe5f2024-03-19 22:37:12 +053088/* Runtime console */
89#if defined(CONSOLE_RUNTIME)
90#if RT_CONSOLE_IS(pl011) || RT_CONSOLE_IS(dtb)
91# define RT_UART_BASE VERSAL_UART0_BASE
92# define RT_UART_TYPE CONSOLE_PL011
93#elif RT_CONSOLE_IS(pl011_1)
94# define RT_UART_BASE VERSAL_UART1_BASE
95# define RT_UART_TYPE CONSOLE_PL011
96#elif RT_CONSOLE_IS(dcc)
97# define RT_UART_BASE 0x0
98# define RT_UART_TYPE CONSOLE_DCC
99#else
100# error "invalid CONSOLE_RUNTIME"
101#endif
102#endif
103
Siva Durga Prasad Paladugufe4af662018-09-25 18:44:58 +0530104/*******************************************************************************
105 * Platform related constants
106 ******************************************************************************/
Maheedhar Bollapalliae8e0132024-07-24 09:54:15 +0530107#define UART_BAUDRATE 115200
Siva Durga Prasad Paladugufe4af662018-09-25 18:44:58 +0530108
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
Prasad Kummari2038bd62023-12-14 10:52:24 +0530123/* IOU SCNTRS */
124#define IOU_SCNTRS_BASE U(0xFF140000)
125#define IOU_SCNTRS_BASE_FREQ_OFFSET U(0x20)
126
Siva Durga Prasad Paladugufe4af662018-09-25 18:44:58 +0530127/* APU registers and bitfields */
Abhyuday Godhasaraedc38ae2021-08-04 23:58:46 -0700128#define FPD_APU_BASE 0xFD5C0000U
129#define FPD_APU_CONFIG_0 (FPD_APU_BASE + 0x20U)
130#define FPD_APU_RVBAR_L_0 (FPD_APU_BASE + 0x40U)
131#define FPD_APU_RVBAR_H_0 (FPD_APU_BASE + 0x44U)
132#define FPD_APU_PWRCTL (FPD_APU_BASE + 0x90U)
Siva Durga Prasad Paladugufe4af662018-09-25 18:44:58 +0530133
Abhyuday Godhasaraedc38ae2021-08-04 23:58:46 -0700134#define FPD_APU_CONFIG_0_VINITHI_SHIFT 8U
135#define APU_0_PWRCTL_CPUPWRDWNREQ_MASK 1U
136#define APU_1_PWRCTL_CPUPWRDWNREQ_MASK 2U
Siva Durga Prasad Paladugufe4af662018-09-25 18:44:58 +0530137
Venkatesh Yadav Abbarapu9156ffd2020-01-22 21:23:20 -0700138/* PMC registers and bitfields */
Abhyuday Godhasaraedc38ae2021-08-04 23:58:46 -0700139#define PMC_GLOBAL_BASE 0xF1110000U
140#define PMC_GLOBAL_GLOB_GEN_STORAGE4 (PMC_GLOBAL_BASE + 0x40U)
Venkatesh Yadav Abbarapu9156ffd2020-01-22 21:23:20 -0700141
Siva Durga Prasad Paladugufe4af662018-09-25 18:44:58 +0530142#endif /* VERSAL_DEF_H */