blob: 8cf8de0d43e1c633518baa6c92f6a0296fe6583c [file] [log] [blame]
Siva Durga Prasad Paladugufe4af662018-09-25 18:44:58 +05301/*
Michal Simek2a47faa2023-04-14 08:43:51 +02002 * Copyright (c) 2018-2021, Arm Limited and Contributors. All rights reserved.
Jay Buddhabhatti6a44ad02023-02-28 01:23:04 -08003 * Copyright (c) 2022-2023, Advanced Micro Devices, Inc. All rights reserved.
Siva Durga Prasad Paladugufe4af662018-09-25 18:44:58 +05304 *
5 * SPDX-License-Identifier: BSD-3-Clause
6 */
7
8#ifndef PLATFORM_DEF_H
9#define PLATFORM_DEF_H
10
11#include <arch.h>
Jay Buddhabhatti1dfe4972023-04-25 04:34:51 -070012#include <plat_common.h>
Tejas Patel0a2f9ad2018-12-14 00:55:30 -080013#include "versal_def.h"
Siva Durga Prasad Paladugufe4af662018-09-25 18:44:58 +053014
15/*******************************************************************************
16 * Generic platform constants
17 ******************************************************************************/
18
19/* Size of cacheable stacks */
Venkatesh Yadav Abbarapua0657d92022-07-20 09:03:22 +053020#define PLATFORM_STACK_SIZE U(0x440)
Siva Durga Prasad Paladugufe4af662018-09-25 18:44:58 +053021
Deepika Bhavnanib16bada2019-12-13 10:53:56 -060022#define PLATFORM_CORE_COUNT U(2)
Abhyuday Godhasara589afa52021-08-11 06:15:13 -070023#define PLAT_MAX_PWR_LVL U(1)
24#define PLAT_MAX_RET_STATE U(1)
25#define PLAT_MAX_OFF_STATE U(2)
Siva Durga Prasad Paladugufe4af662018-09-25 18:44:58 +053026
27/*******************************************************************************
28 * BL31 specific defines.
29 ******************************************************************************/
30/*
31 * Put BL31 at the top of the Trusted SRAM (just below the shared memory, if
32 * present). BL31_BASE is calculated using the current BL31 debug size plus a
33 * little space for growth.
34 */
35#ifndef VERSAL_ATF_MEM_BASE
Abhyuday Godhasara589afa52021-08-11 06:15:13 -070036# define BL31_BASE U(0xfffe0000)
Ilias Apalodimascc3e7392023-05-23 14:46:48 +030037# define BL31_LIMIT U(0x100000000)
Siva Durga Prasad Paladugufe4af662018-09-25 18:44:58 +053038#else
Prasad Kummariedfc0c22023-10-30 14:12:14 +053039# define BL31_BASE U(VERSAL_ATF_MEM_BASE)
40# define BL31_LIMIT U(VERSAL_ATF_MEM_BASE + VERSAL_ATF_MEM_SIZE)
Siva Durga Prasad Paladugufe4af662018-09-25 18:44:58 +053041# ifdef VERSAL_ATF_MEM_PROGBITS_SIZE
Prasad Kummariedfc0c22023-10-30 14:12:14 +053042# define BL31_PROGBITS_LIMIT U(VERSAL_ATF_MEM_BASE + VERSAL_ATF_MEM_PROGBITS_SIZE)
Siva Durga Prasad Paladugufe4af662018-09-25 18:44:58 +053043# endif
44#endif
45
46/*******************************************************************************
47 * BL32 specific defines.
48 ******************************************************************************/
49#ifndef VERSAL_BL32_MEM_BASE
Abhyuday Godhasara589afa52021-08-11 06:15:13 -070050# define BL32_BASE U(0x60000000)
Ilias Apalodimascc3e7392023-05-23 14:46:48 +030051# define BL32_LIMIT U(0x80000000)
Siva Durga Prasad Paladugufe4af662018-09-25 18:44:58 +053052#else
Prasad Kummariedfc0c22023-10-30 14:12:14 +053053# define BL32_BASE U(VERSAL_BL32_MEM_BASE)
54# define BL32_LIMIT U(VERSAL_BL32_MEM_BASE + VERSAL_BL32_MEM_SIZE)
Siva Durga Prasad Paladugufe4af662018-09-25 18:44:58 +053055#endif
56
57/*******************************************************************************
58 * BL33 specific defines.
59 ******************************************************************************/
60#ifndef PRELOADED_BL33_BASE
Abhyuday Godhasara589afa52021-08-11 06:15:13 -070061# define PLAT_ARM_NS_IMAGE_BASE U(0x8000000)
Siva Durga Prasad Paladugufe4af662018-09-25 18:44:58 +053062#else
Prasad Kummariedfc0c22023-10-30 14:12:14 +053063# define PLAT_ARM_NS_IMAGE_BASE U(PRELOADED_BL33_BASE)
Siva Durga Prasad Paladugufe4af662018-09-25 18:44:58 +053064#endif
65
66/*******************************************************************************
67 * TSP specific defines.
68 ******************************************************************************/
69#define TSP_SEC_MEM_BASE BL32_BASE
Ilias Apalodimascc3e7392023-05-23 14:46:48 +030070#define TSP_SEC_MEM_SIZE (BL32_LIMIT - BL32_BASE)
Siva Durga Prasad Paladugufe4af662018-09-25 18:44:58 +053071
72/* ID of the secure physical generic timer interrupt used by the TSP */
73#define TSP_IRQ_SEC_PHY_TIMER ARM_IRQ_SEC_PHY_TIMER
74
75/*******************************************************************************
76 * Platform specific page table and MMU setup constants
77 ******************************************************************************/
Akshay Belsare609186a2024-01-10 16:53:34 +053078
79#if (BL31_BASE >= (1ULL << 32U))
80/* Address range in High DDR and HBM memory range */
81#define PLAT_ADDR_SPACE_SHIFT U(42)
82#else
83/* Address range in OCM and Low DDR memory range */
84#define PLAT_ADDR_SPACE_SHIFT U(32)
85#endif
86
87#define PLAT_PHY_ADDR_SPACE_SIZE (1ull << PLAT_ADDR_SPACE_SHIFT)
88#define PLAT_VIRT_ADDR_SPACE_SIZE (1ull << PLAT_ADDR_SPACE_SHIFT)
Amit Nagal3a7d3042023-07-10 10:32:15 +053089
90#define XILINX_OF_BOARD_DTB_MAX_SIZE U(0x200000)
91
Amit Nagal64e41ba2023-08-29 02:44:58 -120092#define PLAT_OCM_BASE U(0xFFFE0000)
Amit Nagal3a7d3042023-07-10 10:32:15 +053093#define PLAT_OCM_LIMIT U(0xFFFFFFFF)
94
95#define IS_TFA_IN_OCM(x) ((x >= PLAT_OCM_BASE) && (x < PLAT_OCM_LIMIT))
96
97#ifndef MAX_MMAP_REGIONS
98#if (defined(XILINX_OF_BOARD_DTB_ADDR) && !IS_TFA_IN_OCM(BL31_BASE))
99#define MAX_MMAP_REGIONS 9
100#else
Tejas Patel54d13192019-02-27 18:44:55 +0530101#define MAX_MMAP_REGIONS 8
Amit Nagal3a7d3042023-07-10 10:32:15 +0530102#endif
103#endif
104
105#ifndef MAX_XLAT_TABLES
106#if !IS_TFA_IN_OCM(BL31_BASE)
107#define MAX_XLAT_TABLES 9
108#else
109#define MAX_XLAT_TABLES 5
110#endif
111#endif
Siva Durga Prasad Paladugufe4af662018-09-25 18:44:58 +0530112
113#define CACHE_WRITEBACK_SHIFT 6
114#define CACHE_WRITEBACK_GRANULE (1 << CACHE_WRITEBACK_SHIFT)
115
Jay Buddhabhatti6da87942023-10-05 05:21:50 -0700116#define PLAT_ARM_GICD_BASE U(0xF9000000)
117#define PLAT_ARM_GICR_BASE U(0xF9080000)
Siva Durga Prasad Paladugufe4af662018-09-25 18:44:58 +0530118
119/*
120 * Define a list of Group 1 Secure and Group 0 interrupts as per GICv3
121 * terminology. On a GICv2 system or mode, the lists will be merged and treated
122 * as Group 0 interrupts.
123 */
124#define PLAT_VERSAL_G1S_IRQS VERSAL_IRQ_SEC_PHY_TIMER
125#define PLAT_VERSAL_G0_IRQS VERSAL_IRQ_SEC_PHY_TIMER
Abhyuday Godhasara589afa52021-08-11 06:15:13 -0700126#define PLAT_VERSAL_IPI_IRQ U(62)
Siva Durga Prasad Paladugufe4af662018-09-25 18:44:58 +0530127
128#define PLAT_VERSAL_G1S_IRQ_PROPS(grp) \
129 INTR_PROP_DESC(VERSAL_IRQ_SEC_PHY_TIMER, GIC_HIGHEST_SEC_PRIORITY, grp, \
130 GIC_INTR_CFG_LEVEL)
131
Shubhrajyoti Dattaabf61222021-03-17 23:01:17 +0530132#define PLAT_VERSAL_G0_IRQ_PROPS(grp) \
133 INTR_PROP_DESC(PLAT_VERSAL_IPI_IRQ, GIC_HIGHEST_SEC_PRIORITY, grp, \
134 GIC_INTR_CFG_EDGE), \
Jay Buddhabhatti1dfe4972023-04-25 04:34:51 -0700135 INTR_PROP_DESC(CPU_PWR_DOWN_REQ_INTR, GIC_HIGHEST_SEC_PRIORITY, grp, \
136 GIC_INTR_CFG_EDGE)
Siva Durga Prasad Paladugufe4af662018-09-25 18:44:58 +0530137
Jay Buddhabhattia63b3542023-02-28 02:22:02 -0800138#define IRQ_MAX 142U
139
Siva Durga Prasad Paladugufe4af662018-09-25 18:44:58 +0530140#endif /* PLATFORM_DEF_H */