blob: 3a1c127f1bb0721cb0a6f581d2cfeaf8d3b725fb [file] [log] [blame]
Siva Durga Prasad Paladuguf91c3cb2018-09-25 18:44:58 +05301/*
Michal Simek619bc132023-04-14 08:43:51 +02002 * Copyright (c) 2018-2022, Arm Limited and Contributors. All rights reserved.
Tanmay Shahe4974212022-08-26 15:06:00 -07003 * Copyright (c) 2019-2022, Xilinx, Inc. All rights reserved.
Maheedhar Bollapalli09ac1ca2024-07-24 09:54:15 +05304 * Copyright (c) 2022-2024, Advanced Micro Devices, Inc. All rights reserved.
Siva Durga Prasad Paladuguf91c3cb2018-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 Badarkhe53adeba2020-03-27 13:25:51 +000012#include <plat/arm/common/smccc_def.h>
Antonio Nino Diaz09d40e02018-12-14 00:18:21 +000013#include <plat/common/common_def.h>
Siva Durga Prasad Paladuguf91c3cb2018-09-25 18:44:58 +053014
Akshay Belsare079c6e22023-05-08 19:00:53 +053015#define PLATFORM_MASK GENMASK(27U, 24U)
16#define PLATFORM_VERSION_MASK GENMASK(31U, 28U)
17
Tanmay Shahe4974212022-08-26 15:06:00 -070018/* number of interrupt handlers. increase as required */
19#define MAX_INTR_EL3 2
Siva Durga Prasad Paladuguf91c3cb2018-09-25 18:44:58 +053020/* List all consoles */
Michal Simek6d413982024-09-10 15:55:04 +020021#define VERSAL_CONSOLE_ID_none 0
Siva Durga Prasad Paladuguf91c3cb2018-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 Kummarid629db22024-03-19 22:42:32 +053026#define VERSAL_CONSOLE_ID_dtb 4
Siva Durga Prasad Paladuguf91c3cb2018-09-25 18:44:58 +053027
Michal Simek04a48332023-09-27 13:58:06 +020028#define CONSOLE_IS(con) (VERSAL_CONSOLE_ID_ ## con == VERSAL_CONSOLE)
Siva Durga Prasad Paladuguf91c3cb2018-09-25 18:44:58 +053029
Prasad Kummarid533f582024-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 Bollapalli09ac1ca2024-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 Belsaredb827f92024-09-13 15:56:00 +053044#define VERSAL_COSIM U(7)
Siva Durga Prasad Paladuguf91c3cb2018-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 Paladuguf91c3cb2018-09-25 18:44:58 +053057/*******************************************************************************
58 * IRQ constants
59 ******************************************************************************/
Abhyuday Godhasarab2bb3ef2021-08-13 06:45:32 -070060#define VERSAL_IRQ_SEC_PHY_TIMER U(29)
Prasad Kummari7ff4d4f2023-10-31 15:20:00 +053061#define ARM_IRQ_SEC_PHY_TIMER 29
Siva Durga Prasad Paladuguf91c3cb2018-09-25 18:44:58 +053062
63/*******************************************************************************
Tejas Patel5a8ffea2019-02-27 18:44:55 +053064 * CCI-400 related constants
65 ******************************************************************************/
66#define PLAT_ARM_CCI_BASE 0xFD000000
Michal Simek245d30e2023-04-14 08:39:49 +020067#define PLAT_ARM_CCI_SIZE 0x00100000
Tejas Patel5a8ffea2019-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 Paladuguf91c3cb2018-09-25 18:44:58 +053072 * UART related constants
73 ******************************************************************************/
74#define VERSAL_UART0_BASE 0xFF000000
75#define VERSAL_UART1_BASE 0xFF010000
76
Prasad Kummarid629db22024-03-19 22:42:32 +053077#if CONSOLE_IS(pl011) || CONSOLE_IS(dtb)
Michal Simek04a48332023-09-27 13:58:06 +020078# define UART_BASE VERSAL_UART0_BASE
Prasad Kummarid533f582024-03-19 22:37:12 +053079# define UART_TYPE CONSOLE_PL011
Michal Simek04a48332023-09-27 13:58:06 +020080#elif CONSOLE_IS(pl011_1)
81# define UART_BASE VERSAL_UART1_BASE
Prasad Kummarid533f582024-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 Simek6d413982024-09-10 15:55:04 +020086#elif CONSOLE_IS(none)
87# define UART_TYPE CONSOLE_NONE
Siva Durga Prasad Paladuguf91c3cb2018-09-25 18:44:58 +053088#else
89# error "invalid VERSAL_CONSOLE"
90#endif
91
Prasad Kummarid533f582024-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 Paladuguf91c3cb2018-09-25 18:44:58 +0530108/*******************************************************************************
109 * Platform related constants
110 ******************************************************************************/
Maheedhar Bollapalli09ac1ca2024-07-24 09:54:15 +0530111#define UART_BAUDRATE 115200
Siva Durga Prasad Paladuguf91c3cb2018-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 Kummarif0007442023-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 Paladuguf91c3cb2018-09-25 18:44:58 +0530131/* APU registers and bitfields */
Abhyuday Godhasara5d1c2112021-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 Paladuguf91c3cb2018-09-25 18:44:58 +0530137
Abhyuday Godhasara5d1c2112021-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 Paladuguf91c3cb2018-09-25 18:44:58 +0530141
Venkatesh Yadav Abbarapu31ce8932020-01-22 21:23:20 -0700142/* PMC registers and bitfields */
Abhyuday Godhasara5d1c2112021-08-04 23:58:46 -0700143#define PMC_GLOBAL_BASE 0xF1110000U
144#define PMC_GLOBAL_GLOB_GEN_STORAGE4 (PMC_GLOBAL_BASE + 0x40U)
Venkatesh Yadav Abbarapu31ce8932020-01-22 21:23:20 -0700145
Siva Durga Prasad Paladuguf91c3cb2018-09-25 18:44:58 +0530146#endif /* VERSAL_DEF_H */