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