blob: 442d187f0e13977a069de5097d0bc33050a74658 [file] [log] [blame]
Abdellatif El Khlifiad9b8e52021-04-21 17:20:43 +01001/*
Harsimran Singh Tungalb17aaed2023-10-20 11:20:48 +01002 * Copyright (c) 2021-2023, Arm Limited and Contributors. All rights reserved.
Abdellatif El Khlifiad9b8e52021-04-21 17:20:43 +01003 *
4 * SPDX-License-Identifier: BSD-3-Clause
5 */
6
7#ifndef PLATFORM_DEF_H
8#define PLATFORM_DEF_H
9
10#include <common/tbbr/tbbr_img_def.h>
11#include <lib/utils_def.h>
12#include <lib/xlat_tables/xlat_tables_defs.h>
13#include <plat/arm/board/common/v2m_def.h>
14#include <plat/arm/common/arm_spm_def.h>
15#include <plat/arm/common/smccc_def.h>
16#include <plat/common/common_def.h>
17#include <plat/arm/soc/common/soc_css_def.h>
18
David Vinczebfdb7262022-03-03 14:35:51 +010019#define ARM_ROTPK_HEADER_LEN 19
20#define ARM_ROTPK_HASH_LEN 32
Abdellatif El Khlifiad9b8e52021-04-21 17:20:43 +010021
22/* Special value used to verify platform parameters from BL2 to BL31 */
David Vinczebfdb7262022-03-03 14:35:51 +010023#define ARM_BL31_PLAT_PARAM_VAL ULL(0x0f1e2d3c4b5a6978)
Abdellatif El Khlifiad9b8e52021-04-21 17:20:43 +010024
25/* PL011 UART related constants */
26#ifdef V2M_IOFPGA_UART0_CLK_IN_HZ
27#undef V2M_IOFPGA_UART0_CLK_IN_HZ
28#endif
29
30#ifdef V2M_IOFPGA_UART1_CLK_IN_HZ
31#undef V2M_IOFPGA_UART1_CLK_IN_HZ
32#endif
33
David Vinczebfdb7262022-03-03 14:35:51 +010034#define V2M_IOFPGA_UART0_CLK_IN_HZ 50000000
35#define V2M_IOFPGA_UART1_CLK_IN_HZ 50000000
Abdellatif El Khlifiad9b8e52021-04-21 17:20:43 +010036
Vishnu Banavath2b651ea2022-01-19 18:43:12 +000037/* Core/Cluster/Thread counts for corstone1000 */
David Vinczebfdb7262022-03-03 14:35:51 +010038#define CORSTONE1000_CLUSTER_COUNT U(1)
39#define CORSTONE1000_MAX_CPUS_PER_CLUSTER U(4)
40#define CORSTONE1000_MAX_PE_PER_CPU U(1)
41#define CORSTONE1000_PRIMARY_CPU U(0)
Abdellatif El Khlifiad9b8e52021-04-21 17:20:43 +010042
David Vinczebfdb7262022-03-03 14:35:51 +010043#define PLAT_ARM_CLUSTER_COUNT CORSTONE1000_CLUSTER_COUNT
Abdellatif El Khlifiad9b8e52021-04-21 17:20:43 +010044
David Vinczebfdb7262022-03-03 14:35:51 +010045#define PLATFORM_CORE_COUNT (PLAT_ARM_CLUSTER_COUNT * \
46 CORSTONE1000_MAX_CPUS_PER_CLUSTER * \
47 CORSTONE1000_MAX_PE_PER_CPU)
Abdellatif El Khlifiad9b8e52021-04-21 17:20:43 +010048
49/* UART related constants */
David Vinczebfdb7262022-03-03 14:35:51 +010050#define PLAT_ARM_BOOT_UART_BASE 0x1a510000
51#define PLAT_ARM_BOOT_UART_CLK_IN_HZ V2M_IOFPGA_UART0_CLK_IN_HZ
52#define PLAT_ARM_RUN_UART_BASE 0x1a520000
53#define PLAT_ARM_RUN_UART_CLK_IN_HZ V2M_IOFPGA_UART1_CLK_IN_HZ
54#define ARM_CONSOLE_BAUDRATE 115200
55#define PLAT_ARM_CRASH_UART_BASE PLAT_ARM_RUN_UART_BASE
56#define PLAT_ARM_CRASH_UART_CLK_IN_HZ PLAT_ARM_RUN_UART_CLK_IN_HZ
Abdellatif El Khlifiad9b8e52021-04-21 17:20:43 +010057
58/* Memory related constants */
59
60/* SRAM (CVM) memory layout
61 *
62 * <ARM_TRUSTED_SRAM_BASE>
David Vinczebfdb7262022-03-03 14:35:51 +010063 * partition size: sizeof(meminfo_t) = 16 bytes
64 * content: memory info area used by the next BL
Abdellatif El Khlifiad9b8e52021-04-21 17:20:43 +010065 *
66 * <ARM_FW_CONFIG_BASE>
David Vinczebfdb7262022-03-03 14:35:51 +010067 * partition size: 4080 bytes
Abdellatif El Khlifiad9b8e52021-04-21 17:20:43 +010068 *
69 * <ARM_BL2_MEM_DESC_BASE>
David Vinczebfdb7262022-03-03 14:35:51 +010070 * partition size: 4 KB
71 * content: Area where BL2 copies the images descriptors
Abdellatif El Khlifiad9b8e52021-04-21 17:20:43 +010072 *
73 * <ARM_BL_RAM_BASE> = <BL32_BASE>
David Vinczebfdb7262022-03-03 14:35:51 +010074 * partition size: 688 KB
75 * content: BL32 (optee-os)
Abdellatif El Khlifiad9b8e52021-04-21 17:20:43 +010076 *
Vishnu Banavath2b651ea2022-01-19 18:43:12 +000077 * <CORSTONE1000_TOS_FW_CONFIG_BASE> = 0x20ae000
David Vinczebfdb7262022-03-03 14:35:51 +010078 * partition size: 8 KB
79 * content: BL32 config (TOS_FW_CONFIG)
Abdellatif El Khlifiad9b8e52021-04-21 17:20:43 +010080 *
81 * <BL31_BASE>
David Vinczebfdb7262022-03-03 14:35:51 +010082 * partition size: 140 KB
83 * content: BL31
Abdellatif El Khlifiad9b8e52021-04-21 17:20:43 +010084 *
85 * <BL2_SIGNATURE_BASE>
David Vinczebfdb7262022-03-03 14:35:51 +010086 * partition size: 4 KB
87 * content: MCUBOOT data needed to verify TF-A BL2
Abdellatif El Khlifiad9b8e52021-04-21 17:20:43 +010088 *
89 * <BL2_BASE>
David Vinczebfdb7262022-03-03 14:35:51 +010090 * partition size: 176 KB
91 * content: BL2
Abdellatif El Khlifiad9b8e52021-04-21 17:20:43 +010092 *
93 * <ARM_NS_SHARED_RAM_BASE> = <ARM_TRUSTED_SRAM_BASE> + 1 MB
David Vinczebfdb7262022-03-03 14:35:51 +010094 * partition size: 512 KB
95 * content: BL33 (u-boot)
Abdellatif El Khlifiad9b8e52021-04-21 17:20:43 +010096 */
97
98/* DDR memory */
David Vinczebfdb7262022-03-03 14:35:51 +010099#define ARM_DRAM1_BASE UL(0x80000000)
100#define ARM_DRAM1_SIZE (SZ_2G) /* 2GB*/
101#define ARM_DRAM1_END (ARM_DRAM1_BASE + ARM_DRAM1_SIZE - 1)
Abdellatif El Khlifiad9b8e52021-04-21 17:20:43 +0100102
Vishnu Banavath2b651ea2022-01-19 18:43:12 +0000103/* DRAM1 and DRAM2 are the same for corstone1000 */
David Vinczebfdb7262022-03-03 14:35:51 +0100104#define ARM_DRAM2_BASE ARM_DRAM1_BASE
105#define ARM_DRAM2_SIZE ARM_DRAM1_SIZE
106#define ARM_DRAM2_END ARM_DRAM1_END
Abdellatif El Khlifiad9b8e52021-04-21 17:20:43 +0100107
David Vinczebfdb7262022-03-03 14:35:51 +0100108#define ARM_NS_DRAM1_BASE ARM_DRAM1_BASE
109#define ARM_NS_DRAM1_SIZE ARM_DRAM1_SIZE
110#define ARM_NS_DRAM1_END (ARM_NS_DRAM1_BASE + ARM_NS_DRAM1_SIZE - 1)
Abdellatif El Khlifiad9b8e52021-04-21 17:20:43 +0100111
112/* The first 8 KB of Trusted SRAM are used as shared memory */
David Vinczebfdb7262022-03-03 14:35:51 +0100113#define ARM_TRUSTED_SRAM_BASE UL(0x02000000)
114#define ARM_SHARED_RAM_SIZE (SZ_8K) /* 8 KB */
115#define ARM_SHARED_RAM_BASE ARM_TRUSTED_SRAM_BASE
Abdellatif El Khlifiad9b8e52021-04-21 17:20:43 +0100116
117/* The remaining Trusted SRAM is used to load the BL images */
David Vinczebfdb7262022-03-03 14:35:51 +0100118#define TOTAL_SRAM_SIZE (SZ_4M) /* 4 MB */
Abdellatif El Khlifiad9b8e52021-04-21 17:20:43 +0100119
David Vinczebfdb7262022-03-03 14:35:51 +0100120/* Last 512KB of CVM is allocated for shared RAM as an example openAMP */
121#define ARM_NS_SHARED_RAM_SIZE (512 * SZ_1K)
Abdellatif El Khlifiad9b8e52021-04-21 17:20:43 +0100122
David Vinczebfdb7262022-03-03 14:35:51 +0100123#define PLAT_ARM_TRUSTED_SRAM_SIZE (TOTAL_SRAM_SIZE - \
124 ARM_NS_SHARED_RAM_SIZE - \
125 ARM_SHARED_RAM_SIZE)
Abdellatif El Khlifiad9b8e52021-04-21 17:20:43 +0100126
David Vinczebfdb7262022-03-03 14:35:51 +0100127#define PLAT_ARM_MAX_BL2_SIZE (180 * SZ_1K) /* 180 KB */
Abdellatif El Khlifiad9b8e52021-04-21 17:20:43 +0100128
David Vinczebfdb7262022-03-03 14:35:51 +0100129#define PLAT_ARM_MAX_BL31_SIZE (140 * SZ_1K) /* 140 KB */
Abdellatif El Khlifiad9b8e52021-04-21 17:20:43 +0100130
David Vinczebfdb7262022-03-03 14:35:51 +0100131#define ARM_BL_RAM_BASE (ARM_SHARED_RAM_BASE + ARM_SHARED_RAM_SIZE)
132#define ARM_BL_RAM_SIZE (PLAT_ARM_TRUSTED_SRAM_SIZE - \
133 ARM_SHARED_RAM_SIZE)
Abdellatif El Khlifiad9b8e52021-04-21 17:20:43 +0100134
David Vinczebfdb7262022-03-03 14:35:51 +0100135#define BL2_SIGNATURE_SIZE (SZ_4K) /* 4 KB */
Abdellatif El Khlifiad9b8e52021-04-21 17:20:43 +0100136
David Vinczebfdb7262022-03-03 14:35:51 +0100137#define BL2_SIGNATURE_BASE (BL2_LIMIT - PLAT_ARM_MAX_BL2_SIZE)
138#define BL2_BASE (BL2_LIMIT - \
139 PLAT_ARM_MAX_BL2_SIZE + \
140 BL2_SIGNATURE_SIZE)
141#define BL2_LIMIT (ARM_BL_RAM_BASE + ARM_BL_RAM_SIZE)
Abdellatif El Khlifiad9b8e52021-04-21 17:20:43 +0100142
David Vinczebfdb7262022-03-03 14:35:51 +0100143#define BL31_BASE (BL2_SIGNATURE_BASE - PLAT_ARM_MAX_BL31_SIZE)
144#define BL31_LIMIT BL2_SIGNATURE_BASE
Arpita S.K639f7b72021-10-13 14:49:26 +0530145
David Vinczebfdb7262022-03-03 14:35:51 +0100146#define CORSTONE1000_TOS_FW_CONFIG_BASE (BL31_BASE - \
147 CORSTONE1000_TOS_FW_CONFIG_SIZE)
148#define CORSTONE1000_TOS_FW_CONFIG_SIZE (SZ_8K) /* 8 KB */
149#define CORSTONE1000_TOS_FW_CONFIG_LIMIT BL31_BASE
Arpita S.K639f7b72021-10-13 14:49:26 +0530150
David Vinczebfdb7262022-03-03 14:35:51 +0100151#define BL32_BASE ARM_BL_RAM_BASE
152#define PLAT_ARM_MAX_BL32_SIZE (CORSTONE1000_TOS_FW_CONFIG_BASE - BL32_BASE)
Arpita S.K639f7b72021-10-13 14:49:26 +0530153
David Vinczebfdb7262022-03-03 14:35:51 +0100154#define BL32_LIMIT (BL32_BASE + PLAT_ARM_MAX_BL32_SIZE)
Abdellatif El Khlifiad9b8e52021-04-21 17:20:43 +0100155
156/* SPD_spmd settings */
157
David Vinczebfdb7262022-03-03 14:35:51 +0100158#define PLAT_ARM_SPMC_BASE BL32_BASE
159#define PLAT_ARM_SPMC_SIZE PLAT_ARM_MAX_BL32_SIZE
Abdellatif El Khlifiad9b8e52021-04-21 17:20:43 +0100160
161/* NS memory */
162
Arpita S.K639f7b72021-10-13 14:49:26 +0530163/* The last 512KB of the SRAM is allocated as shared memory */
David Vinczebfdb7262022-03-03 14:35:51 +0100164#define ARM_NS_SHARED_RAM_BASE (ARM_TRUSTED_SRAM_BASE + TOTAL_SRAM_SIZE - \
165 (PLAT_ARM_MAX_BL31_SIZE + \
166 PLAT_ARM_MAX_BL32_SIZE))
Arpita S.K639f7b72021-10-13 14:49:26 +0530167
David Vinczebfdb7262022-03-03 14:35:51 +0100168#define BL33_BASE ARM_DRAM1_BASE
169#define PLAT_ARM_MAX_BL33_SIZE (12 * SZ_1M) /* 12 MB*/
170#define BL33_LIMIT (ARM_DRAM1_BASE + PLAT_ARM_MAX_BL33_SIZE)
Abdellatif El Khlifiad9b8e52021-04-21 17:20:43 +0100171
172/* end of the definition of SRAM memory layout */
173
174/* NOR Flash */
175
David Vinczebfdb7262022-03-03 14:35:51 +0100176#define PLAT_ARM_NVM_BASE V2M_FLASH0_BASE
177#define PLAT_ARM_NVM_SIZE (SZ_32M) /* 32 MB */
Harsimran Singh Tungalb17aaed2023-10-20 11:20:48 +0100178#define PLAT_ARM_FIP_MAX_SIZE UL(0x1ff000) /* 1.996 MB */
179#define PLAT_ARM_FLASH_IMAGE_BASE UL(0x08000000)
David Vinczebfdb7262022-03-03 14:35:51 +0100180#define PLAT_ARM_FLASH_IMAGE_MAX_SIZE PLAT_ARM_FIP_MAX_SIZE
Harsimran Singh Tungalb17aaed2023-10-20 11:20:48 +0100181#define PLAT_ARM_FIP_OFFSET_IN_GPT (0x86000)
182
183/* FIP Information */
184#define FIP_SIGNATURE_AREA_SIZE (0x1000) /* 4 KB */
Abdellatif El Khlifiad9b8e52021-04-21 17:20:43 +0100185
186/*
187 * Some data must be aligned on the biggest cache line size in the platform.
188 * This is known only to the platform as it might have a combination of
189 * integrated and external caches.
190 */
David Vinczebfdb7262022-03-03 14:35:51 +0100191#define CACHE_WRITEBACK_GRANULE (U(1) << ARM_CACHE_WRITEBACK_SHIFT)
192#define ARM_CACHE_WRITEBACK_SHIFT 6
Abdellatif El Khlifiad9b8e52021-04-21 17:20:43 +0100193
194/*
195 * Define FW_CONFIG area base and limit. Leave enough space for BL2 meminfo.
196 * FW_CONFIG is intended to host the device tree. Currently, This area is not
Vishnu Banavath2b651ea2022-01-19 18:43:12 +0000197 * used because corstone1000 platform doesn't use a device tree at TF-A level.
Abdellatif El Khlifiad9b8e52021-04-21 17:20:43 +0100198 */
David Vinczebfdb7262022-03-03 14:35:51 +0100199#define ARM_FW_CONFIG_BASE (ARM_SHARED_RAM_BASE + sizeof(meminfo_t))
200#define ARM_FW_CONFIG_LIMIT (ARM_SHARED_RAM_BASE + \
201 (ARM_SHARED_RAM_SIZE >> 1))
Abdellatif El Khlifiad9b8e52021-04-21 17:20:43 +0100202
203/*
204 * Boot parameters passed from BL2 to BL31/BL32 are stored here
205 */
David Vinczebfdb7262022-03-03 14:35:51 +0100206#define ARM_BL2_MEM_DESC_BASE ARM_FW_CONFIG_LIMIT
207#define ARM_BL2_MEM_DESC_LIMIT ARM_BL_RAM_BASE
Abdellatif El Khlifiad9b8e52021-04-21 17:20:43 +0100208
209/*
210 * The max number of regions like RO(code), coherent and data required by
211 * different BL stages which need to be mapped in the MMU.
212 */
David Vinczebfdb7262022-03-03 14:35:51 +0100213#define ARM_BL_REGIONS 3
214#define PLAT_ARM_MMAP_ENTRIES 8
215#define MAX_XLAT_TABLES 5
216#define MAX_MMAP_REGIONS (PLAT_ARM_MMAP_ENTRIES + ARM_BL_REGIONS)
217#define MAX_IO_DEVICES 2
218#define MAX_IO_HANDLES 3
219#define MAX_IO_BLOCK_DEVICES 1
Abdellatif El Khlifiad9b8e52021-04-21 17:20:43 +0100220
221/* GIC related constants */
David Vinczebfdb7262022-03-03 14:35:51 +0100222#define PLAT_ARM_GICD_BASE 0x1C010000
223#define PLAT_ARM_GICC_BASE 0x1C02F000
Abdellatif El Khlifiad9b8e52021-04-21 17:20:43 +0100224
225/* MHUv2 Secure Channel receiver and sender */
David Vinczebfdb7262022-03-03 14:35:51 +0100226#define PLAT_SDK700_MHU0_SEND 0x1B800000
227#define PLAT_SDK700_MHU0_RECV 0x1B810000
Abdellatif El Khlifiad9b8e52021-04-21 17:20:43 +0100228
229/* Timer/watchdog related constants */
David Vinczebfdb7262022-03-03 14:35:51 +0100230#define ARM_SYS_CNTCTL_BASE UL(0x1a200000)
231#define ARM_SYS_CNTREAD_BASE UL(0x1a210000)
232#define ARM_SYS_TIMCTL_BASE UL(0x1a220000)
Abdellatif El Khlifiad9b8e52021-04-21 17:20:43 +0100233
David Vinczebfdb7262022-03-03 14:35:51 +0100234#define SECURE_WATCHDOG_ADDR_CTRL_REG 0x1A320000
235#define SECURE_WATCHDOG_ADDR_VAL_REG 0x1A320008
236#define SECURE_WATCHDOG_MASK_ENABLE 0x01
237#define SECURE_WATCHDOG_COUNTDOWN_VAL 0x1000
Emekcan Aras53e91a32021-11-17 18:45:32 +0000238
David Vinczebfdb7262022-03-03 14:35:51 +0100239#define SYS_COUNTER_FREQ_IN_TICKS UL(50000000) /* 50MHz */
Abdellatif El Khlifiad9b8e52021-04-21 17:20:43 +0100240
David Vinczebfdb7262022-03-03 14:35:51 +0100241#define CORSTONE1000_IRQ_TZ_WDOG 32
242#define CORSTONE1000_IRQ_SEC_SYS_TIMER 34
Abdellatif El Khlifiad9b8e52021-04-21 17:20:43 +0100243
David Vinczebfdb7262022-03-03 14:35:51 +0100244#define PLAT_MAX_PWR_LVL 2
Abdellatif El Khlifiad9b8e52021-04-21 17:20:43 +0100245/*
246 * Macros mapping the MPIDR Affinity levels to ARM Platform Power levels. The
247 * power levels have a 1:1 mapping with the MPIDR affinity levels.
248 */
David Vinczebfdb7262022-03-03 14:35:51 +0100249#define ARM_PWR_LVL0 MPIDR_AFFLVL0
250#define ARM_PWR_LVL1 MPIDR_AFFLVL1
251#define ARM_PWR_LVL2 MPIDR_AFFLVL2
Abdellatif El Khlifiad9b8e52021-04-21 17:20:43 +0100252
253/*
254 * Macros for local power states in ARM platforms encoded by State-ID field
255 * within the power-state parameter.
256 */
257/* Local power state for power domains in Run state. */
David Vinczebfdb7262022-03-03 14:35:51 +0100258#define ARM_LOCAL_STATE_RUN U(0)
Abdellatif El Khlifiad9b8e52021-04-21 17:20:43 +0100259/* Local power state for retention. Valid only for CPU power domains */
David Vinczebfdb7262022-03-03 14:35:51 +0100260#define ARM_LOCAL_STATE_RET U(1)
Abdellatif El Khlifiad9b8e52021-04-21 17:20:43 +0100261/* Local power state for OFF/power-down. Valid for CPU and cluster
262 * power domains
263 */
David Vinczebfdb7262022-03-03 14:35:51 +0100264#define ARM_LOCAL_STATE_OFF U(2)
Abdellatif El Khlifiad9b8e52021-04-21 17:20:43 +0100265
David Vinczebfdb7262022-03-03 14:35:51 +0100266#define PLAT_ARM_TRUSTED_MAILBOX_BASE ARM_TRUSTED_SRAM_BASE
267#define PLAT_ARM_NSTIMER_FRAME_ID U(1)
Abdellatif El Khlifiad9b8e52021-04-21 17:20:43 +0100268
David Vinczebfdb7262022-03-03 14:35:51 +0100269#define PLAT_ARM_NS_IMAGE_BASE (ARM_NS_SHARED_RAM_BASE)
Abdellatif El Khlifiad9b8e52021-04-21 17:20:43 +0100270
David Vinczebfdb7262022-03-03 14:35:51 +0100271#define PLAT_PHY_ADDR_SPACE_SIZE (1ULL << 32)
272#define PLAT_VIRT_ADDR_SPACE_SIZE (1ULL << 32)
Abdellatif El Khlifiad9b8e52021-04-21 17:20:43 +0100273
274/*
275 * This macro defines the deepest retention state possible. A higher state
276 * ID will represent an invalid or a power down state.
277 */
David Vinczebfdb7262022-03-03 14:35:51 +0100278#define PLAT_MAX_RET_STATE 1
Abdellatif El Khlifiad9b8e52021-04-21 17:20:43 +0100279
280/*
281 * This macro defines the deepest power down states possible. Any state ID
282 * higher than this is invalid.
283 */
David Vinczebfdb7262022-03-03 14:35:51 +0100284#define PLAT_MAX_OFF_STATE 2
Abdellatif El Khlifiad9b8e52021-04-21 17:20:43 +0100285
David Vinczebfdb7262022-03-03 14:35:51 +0100286#define PLATFORM_STACK_SIZE UL(0x440)
Abdellatif El Khlifiad9b8e52021-04-21 17:20:43 +0100287
David Vinczebfdb7262022-03-03 14:35:51 +0100288#define CORSTONE1000_EXTERNAL_FLASH MAP_REGION_FLAT( \
289 PLAT_ARM_NVM_BASE, \
290 PLAT_ARM_NVM_SIZE, \
291 MT_DEVICE | MT_RO | MT_SECURE)
Abdellatif El Khlifiad9b8e52021-04-21 17:20:43 +0100292
David Vinczebfdb7262022-03-03 14:35:51 +0100293#define ARM_MAP_SHARED_RAM MAP_REGION_FLAT( \
294 ARM_SHARED_RAM_BASE, \
295 ARM_SHARED_RAM_SIZE, \
296 MT_MEMORY | MT_RW | MT_SECURE)
Abdellatif El Khlifiad9b8e52021-04-21 17:20:43 +0100297
David Vinczebfdb7262022-03-03 14:35:51 +0100298#define ARM_MAP_NS_SHARED_RAM MAP_REGION_FLAT( \
299 ARM_NS_SHARED_RAM_BASE, \
300 ARM_NS_SHARED_RAM_SIZE, \
301 MT_MEMORY | MT_RW | MT_NS)
Abdellatif El Khlifiad9b8e52021-04-21 17:20:43 +0100302
David Vinczebfdb7262022-03-03 14:35:51 +0100303#define ARM_MAP_NS_DRAM1 MAP_REGION_FLAT( \
304 ARM_NS_DRAM1_BASE, \
305 ARM_NS_DRAM1_SIZE, \
306 MT_MEMORY | MT_RW | MT_NS)
Abdellatif El Khlifiad9b8e52021-04-21 17:20:43 +0100307
David Vinczebfdb7262022-03-03 14:35:51 +0100308#define ARM_MAP_BL_RO MAP_REGION_FLAT( \
309 BL_CODE_BASE, \
310 (BL_CODE_END - BL_CODE_BASE), \
311 MT_CODE | MT_SECURE), \
312 MAP_REGION_FLAT( \
313 BL_RO_DATA_BASE, \
314 (BL_RO_DATA_END - BL_RO_DATA_BASE), \
315 MT_RO_DATA | MT_SECURE)
Abdellatif El Khlifiad9b8e52021-04-21 17:20:43 +0100316#if USE_COHERENT_MEM
David Vinczebfdb7262022-03-03 14:35:51 +0100317#define ARM_MAP_BL_COHERENT_RAM MAP_REGION_FLAT( \
318 BL_COHERENT_RAM_BASE, \
319 (BL_COHERENT_RAM_END \
320 - BL_COHERENT_RAM_BASE), \
321 MT_DEVICE | MT_RW | MT_SECURE)
Abdellatif El Khlifiad9b8e52021-04-21 17:20:43 +0100322#endif
323
324/*
325 * Map the region for the optional device tree configuration with read and
326 * write permissions
327 */
David Vinczebfdb7262022-03-03 14:35:51 +0100328#define ARM_MAP_BL_CONFIG_REGION MAP_REGION_FLAT( \
329 ARM_FW_CONFIG_BASE, \
330 (ARM_FW_CONFIG_LIMIT \
331 - ARM_FW_CONFIG_BASE), \
332 MT_MEMORY | MT_RW | MT_SECURE)
Abdellatif El Khlifiad9b8e52021-04-21 17:20:43 +0100333
David Vinczebfdb7262022-03-03 14:35:51 +0100334#define CORSTONE1000_DEVICE_BASE (0x1A000000)
335#define CORSTONE1000_DEVICE_SIZE (0x26000000)
336#define CORSTONE1000_MAP_DEVICE MAP_REGION_FLAT( \
337 CORSTONE1000_DEVICE_BASE, \
338 CORSTONE1000_DEVICE_SIZE, \
339 MT_DEVICE | MT_RW | MT_SECURE)
Abdellatif El Khlifiad9b8e52021-04-21 17:20:43 +0100340
David Vinczebfdb7262022-03-03 14:35:51 +0100341#define ARM_IRQ_SEC_PHY_TIMER 29
Abdellatif El Khlifiad9b8e52021-04-21 17:20:43 +0100342
David Vinczebfdb7262022-03-03 14:35:51 +0100343#define ARM_IRQ_SEC_SGI_0 8
344#define ARM_IRQ_SEC_SGI_1 9
345#define ARM_IRQ_SEC_SGI_2 10
346#define ARM_IRQ_SEC_SGI_3 11
347#define ARM_IRQ_SEC_SGI_4 12
348#define ARM_IRQ_SEC_SGI_5 13
349#define ARM_IRQ_SEC_SGI_6 14
350#define ARM_IRQ_SEC_SGI_7 15
Abdellatif El Khlifiad9b8e52021-04-21 17:20:43 +0100351
352/*
353 * Define a list of Group 1 Secure and Group 0 interrupt properties as per GICv3
354 * terminology. On a GICv2 system or mode, the lists will be merged and treated
355 * as Group 0 interrupts.
356 */
357#define ARM_G1S_IRQ_PROPS(grp) \
358 INTR_PROP_DESC(ARM_IRQ_SEC_PHY_TIMER, GIC_HIGHEST_SEC_PRIORITY, \
359 (grp), GIC_INTR_CFG_LEVEL), \
360 INTR_PROP_DESC(ARM_IRQ_SEC_SGI_1, GIC_HIGHEST_SEC_PRIORITY, \
361 (grp), GIC_INTR_CFG_EDGE), \
362 INTR_PROP_DESC(ARM_IRQ_SEC_SGI_2, GIC_HIGHEST_SEC_PRIORITY, \
363 (grp), GIC_INTR_CFG_EDGE), \
364 INTR_PROP_DESC(ARM_IRQ_SEC_SGI_3, GIC_HIGHEST_SEC_PRIORITY, \
365 (grp), GIC_INTR_CFG_EDGE), \
366 INTR_PROP_DESC(ARM_IRQ_SEC_SGI_4, GIC_HIGHEST_SEC_PRIORITY, \
367 (grp), GIC_INTR_CFG_EDGE), \
368 INTR_PROP_DESC(ARM_IRQ_SEC_SGI_5, GIC_HIGHEST_SEC_PRIORITY, \
369 (grp), GIC_INTR_CFG_EDGE), \
370 INTR_PROP_DESC(ARM_IRQ_SEC_SGI_7, GIC_HIGHEST_SEC_PRIORITY, \
371 (grp), GIC_INTR_CFG_EDGE)
372
373#define ARM_G0_IRQ_PROPS(grp) \
374 INTR_PROP_DESC(ARM_IRQ_SEC_SGI_6, GIC_HIGHEST_SEC_PRIORITY, (grp), \
375 GIC_INTR_CFG_EDGE)
376
377/*
378 * Define a list of Group 1 Secure and Group 0 interrupts as per GICv3
379 * terminology. On a GICv2 system or mode, the lists will be merged and treated
380 * as Group 0 interrupts.
381 */
David Vinczebfdb7262022-03-03 14:35:51 +0100382#define PLAT_ARM_G1S_IRQ_PROPS(grp) \
383 ARM_G1S_IRQ_PROPS(grp), \
384 INTR_PROP_DESC(CORSTONE1000_IRQ_TZ_WDOG, \
385 GIC_HIGHEST_SEC_PRIORITY, \
386 (grp), GIC_INTR_CFG_LEVEL), \
387 INTR_PROP_DESC(CORSTONE1000_IRQ_SEC_SYS_TIMER, \
388 GIC_HIGHEST_SEC_PRIORITY, \
389 (grp), GIC_INTR_CFG_LEVEL)
Abdellatif El Khlifiad9b8e52021-04-21 17:20:43 +0100390
391#define PLAT_ARM_G0_IRQ_PROPS(grp) ARM_G0_IRQ_PROPS(grp)
392
393#endif /* PLATFORM_DEF_H */