blob: 3a1c127f1bb0721cb0a6f581d2cfeaf8d3b725fb [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 */
Michal Simekb954eb42024-09-10 15:55:04 +020021#define VERSAL_CONSOLE_ID_none 0
Siva Durga Prasad Paladugufe4af662018-09-25 18:44:58 +053022#define VERSAL_CONSOLE_ID_pl011 1
23#define VERSAL_CONSOLE_ID_pl011_0 1
24#define VERSAL_CONSOLE_ID_pl011_1 2
25#define VERSAL_CONSOLE_ID_dcc 3
Prasad Kummari3d18a932024-03-19 22:42:32 +053026#define VERSAL_CONSOLE_ID_dtb 4
Siva Durga Prasad Paladugufe4af662018-09-25 18:44:58 +053027
Michal Simekc56e5482023-09-27 13:58:06 +020028#define CONSOLE_IS(con) (VERSAL_CONSOLE_ID_ ## con == VERSAL_CONSOLE)
Siva Durga Prasad Paladugufe4af662018-09-25 18:44:58 +053029
Prasad Kummarie0abe5f2024-03-19 22:37:12 +053030/* Runtime console */
31#define RT_CONSOLE_ID_pl011 1
32#define RT_CONSOLE_ID_pl011_0 1
33#define RT_CONSOLE_ID_pl011_1 2
34#define RT_CONSOLE_ID_dcc 3
35#define RT_CONSOLE_ID_dtb 4
36
37#define RT_CONSOLE_IS(con) (RT_CONSOLE_ID_ ## con == CONSOLE_RUNTIME)
38
Maheedhar Bollapalliae8e0132024-07-24 09:54:15 +053039/* List of platforms */
40#define VERSAL_SILICON U(0)
41#define VERSAL_SPP U(1)
42#define VERSAL_EMU U(2)
43#define VERSAL_QEMU U(3)
Akshay Belsarefc74bf12024-09-13 15:56:00 +053044#define VERSAL_COSIM U(7)
Siva Durga Prasad Paladugufe4af662018-09-25 18:44:58 +053045
46/* Firmware Image Package */
47#define VERSAL_PRIMARY_CPU 0
48
49/*******************************************************************************
50 * memory map related constants
51 ******************************************************************************/
52#define DEVICE0_BASE 0xFF000000
53#define DEVICE0_SIZE 0x00E00000
54#define DEVICE1_BASE 0xF9000000
55#define DEVICE1_SIZE 0x00800000
56
Siva Durga Prasad Paladugufe4af662018-09-25 18:44:58 +053057/*******************************************************************************
58 * IRQ constants
59 ******************************************************************************/
Abhyuday Godhasara096f5cc2021-08-13 06:45:32 -070060#define VERSAL_IRQ_SEC_PHY_TIMER U(29)
Prasad Kummari6dee9fb2023-10-31 15:20:00 +053061#define ARM_IRQ_SEC_PHY_TIMER 29
Siva Durga Prasad Paladugufe4af662018-09-25 18:44:58 +053062
63/*******************************************************************************
Tejas Patel54d13192019-02-27 18:44:55 +053064 * CCI-400 related constants
65 ******************************************************************************/
66#define PLAT_ARM_CCI_BASE 0xFD000000
Michal Simek467e16e2023-04-14 08:39:49 +020067#define PLAT_ARM_CCI_SIZE 0x00100000
Tejas Patel54d13192019-02-27 18:44:55 +053068#define PLAT_ARM_CCI_CLUSTER0_SL_IFACE_IX 4
69#define PLAT_ARM_CCI_CLUSTER1_SL_IFACE_IX 5
70
71/*******************************************************************************
Siva Durga Prasad Paladugufe4af662018-09-25 18:44:58 +053072 * UART related constants
73 ******************************************************************************/
74#define VERSAL_UART0_BASE 0xFF000000
75#define VERSAL_UART1_BASE 0xFF010000
76
Prasad Kummari3d18a932024-03-19 22:42:32 +053077#if CONSOLE_IS(pl011) || CONSOLE_IS(dtb)
Michal Simekc56e5482023-09-27 13:58:06 +020078# define UART_BASE VERSAL_UART0_BASE
Prasad Kummarie0abe5f2024-03-19 22:37:12 +053079# define UART_TYPE CONSOLE_PL011
Michal Simekc56e5482023-09-27 13:58:06 +020080#elif CONSOLE_IS(pl011_1)
81# define UART_BASE VERSAL_UART1_BASE
Prasad Kummarie0abe5f2024-03-19 22:37:12 +053082# define UART_TYPE CONSOLE_PL011
83#elif CONSOLE_IS(dcc)
84# define UART_BASE 0x0
85# define UART_TYPE CONSOLE_DCC
Michal Simekb954eb42024-09-10 15:55:04 +020086#elif CONSOLE_IS(none)
87# define UART_TYPE CONSOLE_NONE
Siva Durga Prasad Paladugufe4af662018-09-25 18:44:58 +053088#else
89# error "invalid VERSAL_CONSOLE"
90#endif
91
Prasad Kummarie0abe5f2024-03-19 22:37:12 +053092/* Runtime console */
93#if defined(CONSOLE_RUNTIME)
94#if RT_CONSOLE_IS(pl011) || RT_CONSOLE_IS(dtb)
95# define RT_UART_BASE VERSAL_UART0_BASE
96# define RT_UART_TYPE CONSOLE_PL011
97#elif RT_CONSOLE_IS(pl011_1)
98# define RT_UART_BASE VERSAL_UART1_BASE
99# define RT_UART_TYPE CONSOLE_PL011
100#elif RT_CONSOLE_IS(dcc)
101# define RT_UART_BASE 0x0
102# define RT_UART_TYPE CONSOLE_DCC
103#else
104# error "invalid CONSOLE_RUNTIME"
105#endif
106#endif
107
Siva Durga Prasad Paladugufe4af662018-09-25 18:44:58 +0530108/*******************************************************************************
109 * Platform related constants
110 ******************************************************************************/
Maheedhar Bollapalliae8e0132024-07-24 09:54:15 +0530111#define UART_BAUDRATE 115200
Siva Durga Prasad Paladugufe4af662018-09-25 18:44:58 +0530112
113/* Access control register defines */
114#define ACTLR_EL3_L2ACTLR_BIT (1 << 6)
115#define ACTLR_EL3_CPUACTLR_BIT (1 << 0)
116
117/* For cpu reset APU space here too 0xFE5F1000 CRF_APB*/
118#define CRF_BASE 0xFD1A0000
119#define CRF_SIZE 0x00600000
120
121/* CRF registers and bitfields */
122#define CRF_RST_APU (CRF_BASE + 0X00000300)
123
124#define CRF_RST_APU_ACPU_RESET (1 << 0)
125#define CRF_RST_APU_ACPU_PWRON_RESET (1 << 10)
126
Prasad Kummari2038bd62023-12-14 10:52:24 +0530127/* IOU SCNTRS */
128#define IOU_SCNTRS_BASE U(0xFF140000)
129#define IOU_SCNTRS_BASE_FREQ_OFFSET U(0x20)
130
Siva Durga Prasad Paladugufe4af662018-09-25 18:44:58 +0530131/* APU registers and bitfields */
Abhyuday Godhasaraedc38ae2021-08-04 23:58:46 -0700132#define FPD_APU_BASE 0xFD5C0000U
133#define FPD_APU_CONFIG_0 (FPD_APU_BASE + 0x20U)
134#define FPD_APU_RVBAR_L_0 (FPD_APU_BASE + 0x40U)
135#define FPD_APU_RVBAR_H_0 (FPD_APU_BASE + 0x44U)
136#define FPD_APU_PWRCTL (FPD_APU_BASE + 0x90U)
Siva Durga Prasad Paladugufe4af662018-09-25 18:44:58 +0530137
Abhyuday Godhasaraedc38ae2021-08-04 23:58:46 -0700138#define FPD_APU_CONFIG_0_VINITHI_SHIFT 8U
139#define APU_0_PWRCTL_CPUPWRDWNREQ_MASK 1U
140#define APU_1_PWRCTL_CPUPWRDWNREQ_MASK 2U
Siva Durga Prasad Paladugufe4af662018-09-25 18:44:58 +0530141
Venkatesh Yadav Abbarapu9156ffd2020-01-22 21:23:20 -0700142/* PMC registers and bitfields */
Abhyuday Godhasaraedc38ae2021-08-04 23:58:46 -0700143#define PMC_GLOBAL_BASE 0xF1110000U
144#define PMC_GLOBAL_GLOB_GEN_STORAGE4 (PMC_GLOBAL_BASE + 0x40U)
Venkatesh Yadav Abbarapu9156ffd2020-01-22 21:23:20 -0700145
Siva Durga Prasad Paladugufe4af662018-09-25 18:44:58 +0530146#endif /* VERSAL_DEF_H */