xref: /arm-trusted-firmware/plat/nvidia/tegra/include/platform_def.h (revision 91f16700b400a8c0651d24a598fc48ee2997a0d7)
1*91f16700Schasinglulu /*
2*91f16700Schasinglulu  * Copyright (c) 2015-2018, ARM Limited and Contributors. All rights reserved.
3*91f16700Schasinglulu  * Copyright (c) 2020, NVIDIA Corporation. All rights reserved.
4*91f16700Schasinglulu  *
5*91f16700Schasinglulu  * SPDX-License-Identifier: BSD-3-Clause
6*91f16700Schasinglulu  */
7*91f16700Schasinglulu 
8*91f16700Schasinglulu #ifndef PLATFORM_DEF_H
9*91f16700Schasinglulu #define PLATFORM_DEF_H
10*91f16700Schasinglulu 
11*91f16700Schasinglulu #include <arch.h>
12*91f16700Schasinglulu #include <lib/utils_def.h>
13*91f16700Schasinglulu 
14*91f16700Schasinglulu #include <tegra_def.h>
15*91f16700Schasinglulu 
16*91f16700Schasinglulu /*******************************************************************************
17*91f16700Schasinglulu  * Check and error if SEPARATE_CODE_AND_RODATA is not set to 1
18*91f16700Schasinglulu  ******************************************************************************/
19*91f16700Schasinglulu #if !SEPARATE_CODE_AND_RODATA
20*91f16700Schasinglulu #error "SEPARATE_CODE_AND_RODATA should be set to 1"
21*91f16700Schasinglulu #endif
22*91f16700Schasinglulu 
23*91f16700Schasinglulu /*
24*91f16700Schasinglulu  * Platform binary types for linking
25*91f16700Schasinglulu  */
26*91f16700Schasinglulu #define PLATFORM_LINKER_FORMAT		"elf64-littleaarch64"
27*91f16700Schasinglulu #define PLATFORM_LINKER_ARCH		aarch64
28*91f16700Schasinglulu 
29*91f16700Schasinglulu /*
30*91f16700Schasinglulu  * Platform binary types for linking
31*91f16700Schasinglulu  */
32*91f16700Schasinglulu #define PLATFORM_LINKER_FORMAT		"elf64-littleaarch64"
33*91f16700Schasinglulu #define PLATFORM_LINKER_ARCH		aarch64
34*91f16700Schasinglulu 
35*91f16700Schasinglulu /*******************************************************************************
36*91f16700Schasinglulu  * Generic platform constants
37*91f16700Schasinglulu  ******************************************************************************/
38*91f16700Schasinglulu 
39*91f16700Schasinglulu /* Size of cacheable stacks */
40*91f16700Schasinglulu #ifdef IMAGE_BL31
41*91f16700Schasinglulu #define PLATFORM_STACK_SIZE 		U(0x400)
42*91f16700Schasinglulu #endif
43*91f16700Schasinglulu 
44*91f16700Schasinglulu #define PLAT_MAX_PWR_LVL		MPIDR_AFFLVL2
45*91f16700Schasinglulu #define PLATFORM_CORE_COUNT		(PLATFORM_CLUSTER_COUNT * \
46*91f16700Schasinglulu 					 PLATFORM_MAX_CPUS_PER_CLUSTER)
47*91f16700Schasinglulu #define PLAT_NUM_PWR_DOMAINS		(PLATFORM_CORE_COUNT + \
48*91f16700Schasinglulu 					 PLATFORM_CLUSTER_COUNT + U(1))
49*91f16700Schasinglulu 
50*91f16700Schasinglulu /*******************************************************************************
51*91f16700Schasinglulu  * Platform console related constants
52*91f16700Schasinglulu  ******************************************************************************/
53*91f16700Schasinglulu #define TEGRA_CONSOLE_BAUDRATE		U(115200)
54*91f16700Schasinglulu #define TEGRA_BOOT_UART_CLK_13_MHZ	U(13000000)
55*91f16700Schasinglulu #define TEGRA_BOOT_UART_CLK_408_MHZ	U(408000000)
56*91f16700Schasinglulu 
57*91f16700Schasinglulu /*******************************************************************************
58*91f16700Schasinglulu  * Platform memory map related constants
59*91f16700Schasinglulu  ******************************************************************************/
60*91f16700Schasinglulu /* Size of trusted dram */
61*91f16700Schasinglulu #define TZDRAM_SIZE			U(0x00400000)
62*91f16700Schasinglulu #define TZDRAM_END			(TZDRAM_BASE + TZDRAM_SIZE)
63*91f16700Schasinglulu 
64*91f16700Schasinglulu /*******************************************************************************
65*91f16700Schasinglulu  * BL31 specific defines.
66*91f16700Schasinglulu  ******************************************************************************/
67*91f16700Schasinglulu #define BL31_BASE			TZDRAM_BASE
68*91f16700Schasinglulu #define BL31_LIMIT			(TZDRAM_BASE + BL31_SIZE - 1)
69*91f16700Schasinglulu #define BL32_BASE			(TZDRAM_BASE + BL31_SIZE)
70*91f16700Schasinglulu #define BL32_LIMIT			TZDRAM_END
71*91f16700Schasinglulu 
72*91f16700Schasinglulu /*******************************************************************************
73*91f16700Schasinglulu  * Some data must be aligned on the biggest cache line size in the platform.
74*91f16700Schasinglulu  * This is known only to the platform as it might have a combination of
75*91f16700Schasinglulu  * integrated and external caches.
76*91f16700Schasinglulu  ******************************************************************************/
77*91f16700Schasinglulu #define CACHE_WRITEBACK_SHIFT		6
78*91f16700Schasinglulu #define CACHE_WRITEBACK_GRANULE		(0x40) /* (U(1) << CACHE_WRITEBACK_SHIFT) */
79*91f16700Schasinglulu 
80*91f16700Schasinglulu /*******************************************************************************
81*91f16700Schasinglulu  * Dummy macros to compile io_storage support
82*91f16700Schasinglulu  ******************************************************************************/
83*91f16700Schasinglulu #define MAX_IO_DEVICES			U(0)
84*91f16700Schasinglulu #define MAX_IO_HANDLES			U(0)
85*91f16700Schasinglulu 
86*91f16700Schasinglulu /*******************************************************************************
87*91f16700Schasinglulu  * Platforms macros to support SDEI
88*91f16700Schasinglulu  ******************************************************************************/
89*91f16700Schasinglulu #define TEGRA_SDEI_SGI_PRIVATE		U(8)
90*91f16700Schasinglulu 
91*91f16700Schasinglulu /*******************************************************************************
92*91f16700Schasinglulu  * Platform macros to support exception handling framework
93*91f16700Schasinglulu  ******************************************************************************/
94*91f16700Schasinglulu #define PLAT_PRI_BITS			U(3)
95*91f16700Schasinglulu #define PLAT_RAS_PRI			U(0x10)
96*91f16700Schasinglulu #define PLAT_SDEI_CRITICAL_PRI		U(0x20)
97*91f16700Schasinglulu #define PLAT_SDEI_NORMAL_PRI		U(0x30)
98*91f16700Schasinglulu #define PLAT_TEGRA_WDT_PRIO		U(0x40)
99*91f16700Schasinglulu 
100*91f16700Schasinglulu #define PLAT_EHF_DESC			EHF_PRI_DESC(PLAT_PRI_BITS,\
101*91f16700Schasinglulu 						     PLAT_TEGRA_WDT_PRIO)
102*91f16700Schasinglulu 
103*91f16700Schasinglulu /*******************************************************************************
104*91f16700Schasinglulu  * SDEI events
105*91f16700Schasinglulu  ******************************************************************************/
106*91f16700Schasinglulu /* SDEI dynamic private event numbers */
107*91f16700Schasinglulu #define TEGRA_SDEI_DP_EVENT_0		U(100)
108*91f16700Schasinglulu #define TEGRA_SDEI_DP_EVENT_1		U(101)
109*91f16700Schasinglulu #define TEGRA_SDEI_DP_EVENT_2		U(102)
110*91f16700Schasinglulu 
111*91f16700Schasinglulu /* SDEI dynamic shared event numbers */
112*91f16700Schasinglulu #define TEGRA_SDEI_DS_EVENT_0		U(200)
113*91f16700Schasinglulu #define TEGRA_SDEI_DS_EVENT_1		U(201)
114*91f16700Schasinglulu #define TEGRA_SDEI_DS_EVENT_2		U(202)
115*91f16700Schasinglulu 
116*91f16700Schasinglulu /* SDEI explicit events */
117*91f16700Schasinglulu #define TEGRA_SDEI_EP_EVENT_0		U(300)
118*91f16700Schasinglulu #define TEGRA_SDEI_EP_EVENT_1		U(301)
119*91f16700Schasinglulu #define TEGRA_SDEI_EP_EVENT_2		U(302)
120*91f16700Schasinglulu #define TEGRA_SDEI_EP_EVENT_3		U(303)
121*91f16700Schasinglulu #define TEGRA_SDEI_EP_EVENT_4		U(304)
122*91f16700Schasinglulu #define TEGRA_SDEI_EP_EVENT_5		U(305)
123*91f16700Schasinglulu #define TEGRA_SDEI_EP_EVENT_6		U(306)
124*91f16700Schasinglulu #define TEGRA_SDEI_EP_EVENT_7		U(307)
125*91f16700Schasinglulu #define TEGRA_SDEI_EP_EVENT_8		U(308)
126*91f16700Schasinglulu #define TEGRA_SDEI_EP_EVENT_9		U(309)
127*91f16700Schasinglulu #define TEGRA_SDEI_EP_EVENT_10		U(310)
128*91f16700Schasinglulu #define TEGRA_SDEI_EP_EVENT_11		U(311)
129*91f16700Schasinglulu 
130*91f16700Schasinglulu #endif /* PLATFORM_DEF_H */
131