blob: 3892c66cadca18356b1d3bf2e9c3ead6b65031cc [file] [log] [blame]
Aditya Angadid61740b2020-11-19 18:05:33 +05301/*
Rohit Mathewa0dd3072024-02-03 17:22:54 +00002 * Copyright (c) 2020-2024, Arm Limited and Contributors. All rights reserved.
Aditya Angadid61740b2020-11-19 18:05:33 +05303 *
4 * SPDX-License-Identifier: BSD-3-Clause
5 */
6
7#ifndef PLATFORM_DEF_H
8#define PLATFORM_DEF_H
9
10#include <lib/utils_def.h>
Rohit Mathewa0dd3072024-02-03 17:22:54 +000011#include <nrd_sdei.h>
12#include <nrd_soc_platform_def_v2.h>
Aditya Angadid61740b2020-11-19 18:05:33 +053013
Rohit Mathew644d9e22024-02-03 19:06:16 +000014#if (NRD_PLATFORM_VARIANT == 1)
Aditya Angadif894b9a2021-03-20 12:15:04 +053015#define PLAT_ARM_CLUSTER_COUNT U(8)
Rohit Mathew644d9e22024-02-03 19:06:16 +000016#elif (NRD_PLATFORM_VARIANT == 2)
Aditya Angadiccae8a12021-08-09 09:38:58 +053017#define PLAT_ARM_CLUSTER_COUNT U(4)
Aditya Angadif894b9a2021-03-20 12:15:04 +053018#else
Aditya Angadid61740b2020-11-19 18:05:33 +053019#define PLAT_ARM_CLUSTER_COUNT U(16)
Aditya Angadif894b9a2021-03-20 12:15:04 +053020#endif
21
Aditya Angadid61740b2020-11-19 18:05:33 +053022#define CSS_SGI_MAX_CPUS_PER_CLUSTER U(1)
23#define CSS_SGI_MAX_PE_PER_CPU U(1)
24
25#define PLAT_CSS_MHU_BASE UL(0x2A920000)
26#define PLAT_MHUV2_BASE PLAT_CSS_MHU_BASE
27
28#define CSS_SYSTEM_PWR_DMN_LVL ARM_PWR_LVL2
29#define PLAT_MAX_PWR_LVL ARM_PWR_LVL1
30
31/* TZC Related Constants */
Vijayenthiran Subramaniam478ccb32021-02-04 18:15:40 +053032#define PLAT_ARM_TZC_BASE UL(0x10720000)
Aditya Angadid61740b2020-11-19 18:05:33 +053033#define PLAT_ARM_TZC_FILTERS TZC_400_REGION_ATTR_FILTER_BIT(0)
34
35#define TZC400_OFFSET UL(0x1000000)
Aditya Angadif894b9a2021-03-20 12:15:04 +053036
Rohit Mathew644d9e22024-02-03 19:06:16 +000037#if (NRD_PLATFORM_VARIANT == 1)
Aditya Angadif894b9a2021-03-20 12:15:04 +053038#define TZC400_COUNT U(2)
Rohit Mathew644d9e22024-02-03 19:06:16 +000039#elif (NRD_PLATFORM_VARIANT == 2)
Aditya Angadiccae8a12021-08-09 09:38:58 +053040#define TZC400_COUNT U(4)
Aditya Angadif894b9a2021-03-20 12:15:04 +053041#else
Aditya Angadid61740b2020-11-19 18:05:33 +053042#define TZC400_COUNT U(8)
Aditya Angadif894b9a2021-03-20 12:15:04 +053043#endif
Aditya Angadid61740b2020-11-19 18:05:33 +053044
45#define TZC400_BASE(n) (PLAT_ARM_TZC_BASE + \
46 (n * TZC400_OFFSET))
47
48#define TZC_NSAID_ALL_AP U(0)
49#define TZC_NSAID_PCI U(1)
50#define TZC_NSAID_HDLCD0 U(2)
Vijayenthiran Subramaniam673e0592021-07-06 14:52:04 +053051#define TZC_NSAID_DMA U(5)
52#define TZC_NSAID_DMA2 U(8)
Aditya Angadid61740b2020-11-19 18:05:33 +053053#define TZC_NSAID_CLCD U(7)
54#define TZC_NSAID_AP U(9)
55#define TZC_NSAID_VIRTIO U(15)
56
57#define PLAT_ARM_TZC_NS_DEV_ACCESS \
58 (TZC_REGION_ACCESS_RDWR(TZC_NSAID_ALL_AP)) | \
59 (TZC_REGION_ACCESS_RDWR(TZC_NSAID_HDLCD0)) | \
60 (TZC_REGION_ACCESS_RDWR(TZC_NSAID_PCI)) | \
Vijayenthiran Subramaniam673e0592021-07-06 14:52:04 +053061 (TZC_REGION_ACCESS_RDWR(TZC_NSAID_DMA)) | \
62 (TZC_REGION_ACCESS_RDWR(TZC_NSAID_DMA2)) | \
Aditya Angadid61740b2020-11-19 18:05:33 +053063 (TZC_REGION_ACCESS_RDWR(TZC_NSAID_AP)) | \
64 (TZC_REGION_ACCESS_RDWR(TZC_NSAID_CLCD)) | \
65 (TZC_REGION_ACCESS_RDWR(TZC_NSAID_VIRTIO))
66
67/*
68 * Physical and virtual address space limits for MMU in AARCH64 & AARCH32 modes
69 */
70#ifdef __aarch64__
Rohit Mathew644d9e22024-02-03 19:06:16 +000071#if (NRD_PLATFORM_VARIANT == 2)
Vijayenthiran Subramaniam00cd0802022-01-25 20:37:20 +053072#define CSS_SGI_ADDR_BITS_PER_CHIP U(46) /* 64TB */
73#else
74#define CSS_SGI_ADDR_BITS_PER_CHIP U(42) /* 4TB */
75#endif
76
Aditya Angadiccae8a12021-08-09 09:38:58 +053077#define PLAT_PHY_ADDR_SPACE_SIZE CSS_SGI_REMOTE_CHIP_MEM_OFFSET( \
Rohit Mathew644d9e22024-02-03 19:06:16 +000078 NRD_CHIP_COUNT)
Aditya Angadiccae8a12021-08-09 09:38:58 +053079#define PLAT_VIRT_ADDR_SPACE_SIZE CSS_SGI_REMOTE_CHIP_MEM_OFFSET( \
Rohit Mathew644d9e22024-02-03 19:06:16 +000080 NRD_CHIP_COUNT)
Aditya Angadiccae8a12021-08-09 09:38:58 +053081#else
Aditya Angadid61740b2020-11-19 18:05:33 +053082#define PLAT_PHY_ADDR_SPACE_SIZE (1ULL << 32)
83#define PLAT_VIRT_ADDR_SPACE_SIZE (1ULL << 32)
84#endif
85
86/* GIC related constants */
87#define PLAT_ARM_GICD_BASE UL(0x30000000)
88#define PLAT_ARM_GICC_BASE UL(0x2C000000)
Aditya Angadif894b9a2021-03-20 12:15:04 +053089
Aditya Angadiccae8a12021-08-09 09:38:58 +053090/* Virtual address used by dynamic mem_protect for chunk_base */
91#define PLAT_ARM_MEM_PROTEC_VA_FRAME UL(0xC0000000)
92
Rohit Mathew644d9e22024-02-03 19:06:16 +000093#if (NRD_PLATFORM_VARIANT == 1)
Aditya Angadif894b9a2021-03-20 12:15:04 +053094#define PLAT_ARM_GICR_BASE UL(0x30100000)
Rohit Mathew644d9e22024-02-03 19:06:16 +000095#elif (NRD_PLATFORM_VARIANT == 3)
Tony K Nadackala81a3d92021-11-24 16:09:26 +000096#define PLAT_ARM_GICR_BASE UL(0x30300000)
Aditya Angadif894b9a2021-03-20 12:15:04 +053097#else
Vijayenthiran Subramaniam777a9ff2020-12-15 20:07:43 +053098#define PLAT_ARM_GICR_BASE UL(0x301C0000)
Aditya Angadif894b9a2021-03-20 12:15:04 +053099#endif
Aditya Angadid61740b2020-11-19 18:05:33 +0530100
Pranav Madhu078dc522022-07-27 14:01:24 +0530101/* Interrupt priority level for shutdown/reboot */
102#define PLAT_REBOOT_PRI GIC_HIGHEST_SEC_PRIORITY
103#define PLAT_EHF_DESC EHF_PRI_DESC(PLAT_PRI_BITS, PLAT_REBOOT_PRI)
104
Nishant Sharma9a8eee12023-10-04 07:27:15 +0100105/*
106 * Number of Secure Partitions supported.
107 * SPMC at EL3, uses this count to configure the maximum number of supported
108 * secure partitions.
109 */
110#define SECURE_PARTITION_COUNT 1
111
112/*
113 * Number of NWd Partitions supported.
114 * SPMC at EL3, uses this count to configure the maximum number of supported
115 * nwld partitions.
116 */
117#define NS_PARTITION_COUNT 1
118
119/*
120 * Number of Logical Partitions supported.
121 * SPMC at EL3, uses this count to configure the maximum number of supported
122 * logical partitions.
123 */
124#define MAX_EL3_LP_DESCS_COUNT 1
125
Aditya Angadid61740b2020-11-19 18:05:33 +0530126#endif /* PLATFORM_DEF_H */