blob: 6c1d8b66d3795f3bf2cc154425431f15e7c80c8e [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>
Tejas Patel0a2f9ad2018-12-14 00:55:30 -080012#include "versal_def.h"
Siva Durga Prasad Paladugufe4af662018-09-25 18:44:58 +053013
14/*******************************************************************************
15 * Generic platform constants
16 ******************************************************************************/
17
18/* Size of cacheable stacks */
Venkatesh Yadav Abbarapua0657d92022-07-20 09:03:22 +053019#define PLATFORM_STACK_SIZE U(0x440)
Siva Durga Prasad Paladugufe4af662018-09-25 18:44:58 +053020
Deepika Bhavnanib16bada2019-12-13 10:53:56 -060021#define PLATFORM_CORE_COUNT U(2)
Abhyuday Godhasara589afa52021-08-11 06:15:13 -070022#define PLAT_MAX_PWR_LVL U(1)
23#define PLAT_MAX_RET_STATE U(1)
24#define PLAT_MAX_OFF_STATE U(2)
Siva Durga Prasad Paladugufe4af662018-09-25 18:44:58 +053025
26/*******************************************************************************
27 * BL31 specific defines.
28 ******************************************************************************/
29/*
30 * Put BL31 at the top of the Trusted SRAM (just below the shared memory, if
31 * present). BL31_BASE is calculated using the current BL31 debug size plus a
32 * little space for growth.
33 */
34#ifndef VERSAL_ATF_MEM_BASE
Abhyuday Godhasara589afa52021-08-11 06:15:13 -070035# define BL31_BASE U(0xfffe0000)
Ilias Apalodimascc3e7392023-05-23 14:46:48 +030036# define BL31_LIMIT U(0x100000000)
Siva Durga Prasad Paladugufe4af662018-09-25 18:44:58 +053037#else
38# define BL31_BASE (VERSAL_ATF_MEM_BASE)
Ilias Apalodimascc3e7392023-05-23 14:46:48 +030039# define BL31_LIMIT (VERSAL_ATF_MEM_BASE + VERSAL_ATF_MEM_SIZE)
Siva Durga Prasad Paladugufe4af662018-09-25 18:44:58 +053040# ifdef VERSAL_ATF_MEM_PROGBITS_SIZE
Ilias Apalodimascc3e7392023-05-23 14:46:48 +030041# define BL31_PROGBITS_LIMIT (VERSAL_ATF_MEM_BASE + VERSAL_ATF_MEM_PROGBITS_SIZE)
Siva Durga Prasad Paladugufe4af662018-09-25 18:44:58 +053042# endif
43#endif
44
45/*******************************************************************************
46 * BL32 specific defines.
47 ******************************************************************************/
48#ifndef VERSAL_BL32_MEM_BASE
Abhyuday Godhasara589afa52021-08-11 06:15:13 -070049# define BL32_BASE U(0x60000000)
Ilias Apalodimascc3e7392023-05-23 14:46:48 +030050# define BL32_LIMIT U(0x80000000)
Siva Durga Prasad Paladugufe4af662018-09-25 18:44:58 +053051#else
52# define BL32_BASE (VERSAL_BL32_MEM_BASE)
Ilias Apalodimascc3e7392023-05-23 14:46:48 +030053# define BL32_LIMIT (VERSAL_BL32_MEM_BASE + VERSAL_BL32_MEM_SIZE)
Siva Durga Prasad Paladugufe4af662018-09-25 18:44:58 +053054#endif
55
56/*******************************************************************************
57 * BL33 specific defines.
58 ******************************************************************************/
59#ifndef PRELOADED_BL33_BASE
Abhyuday Godhasara589afa52021-08-11 06:15:13 -070060# define PLAT_ARM_NS_IMAGE_BASE U(0x8000000)
Siva Durga Prasad Paladugufe4af662018-09-25 18:44:58 +053061#else
Venkatesh Yadav Abbarapu9156ffd2020-01-22 21:23:20 -070062# define PLAT_ARM_NS_IMAGE_BASE PRELOADED_BL33_BASE
Siva Durga Prasad Paladugufe4af662018-09-25 18:44:58 +053063#endif
64
65/*******************************************************************************
66 * TSP specific defines.
67 ******************************************************************************/
68#define TSP_SEC_MEM_BASE BL32_BASE
Ilias Apalodimascc3e7392023-05-23 14:46:48 +030069#define TSP_SEC_MEM_SIZE (BL32_LIMIT - BL32_BASE)
Siva Durga Prasad Paladugufe4af662018-09-25 18:44:58 +053070
71/* ID of the secure physical generic timer interrupt used by the TSP */
72#define TSP_IRQ_SEC_PHY_TIMER ARM_IRQ_SEC_PHY_TIMER
73
74/*******************************************************************************
75 * Platform specific page table and MMU setup constants
76 ******************************************************************************/
77#define PLAT_PHY_ADDR_SPACE_SIZE (1ull << 32)
78#define PLAT_VIRT_ADDR_SPACE_SIZE (1ull << 32)
Tejas Patel54d13192019-02-27 18:44:55 +053079#define MAX_MMAP_REGIONS 8
Siva Durga Prasad Paladugufe4af662018-09-25 18:44:58 +053080#define MAX_XLAT_TABLES 5
81
82#define CACHE_WRITEBACK_SHIFT 6
83#define CACHE_WRITEBACK_GRANULE (1 << CACHE_WRITEBACK_SHIFT)
84
Jay Buddhabhatti6a44ad02023-02-28 01:23:04 -080085#define PLAT_GICD_BASE_VALUE U(0xF9000000)
86#define PLAT_GICR_BASE_VALUE U(0xF9080000)
Siva Durga Prasad Paladugufe4af662018-09-25 18:44:58 +053087
88/*
89 * Define a list of Group 1 Secure and Group 0 interrupts as per GICv3
90 * terminology. On a GICv2 system or mode, the lists will be merged and treated
91 * as Group 0 interrupts.
92 */
93#define PLAT_VERSAL_G1S_IRQS VERSAL_IRQ_SEC_PHY_TIMER
94#define PLAT_VERSAL_G0_IRQS VERSAL_IRQ_SEC_PHY_TIMER
Abhyuday Godhasara589afa52021-08-11 06:15:13 -070095#define PLAT_VERSAL_IPI_IRQ U(62)
Siva Durga Prasad Paladugufe4af662018-09-25 18:44:58 +053096
97#define PLAT_VERSAL_G1S_IRQ_PROPS(grp) \
98 INTR_PROP_DESC(VERSAL_IRQ_SEC_PHY_TIMER, GIC_HIGHEST_SEC_PRIORITY, grp, \
99 GIC_INTR_CFG_LEVEL)
100
Shubhrajyoti Dattaabf61222021-03-17 23:01:17 +0530101#define PLAT_VERSAL_G0_IRQ_PROPS(grp) \
102 INTR_PROP_DESC(PLAT_VERSAL_IPI_IRQ, GIC_HIGHEST_SEC_PRIORITY, grp, \
103 GIC_INTR_CFG_EDGE), \
Siva Durga Prasad Paladugufe4af662018-09-25 18:44:58 +0530104
Jay Buddhabhattia63b3542023-02-28 02:22:02 -0800105#define IRQ_MAX 142U
106
Siva Durga Prasad Paladugufe4af662018-09-25 18:44:58 +0530107#endif /* PLATFORM_DEF_H */