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 TEGRA_DEF_H 9*91f16700Schasinglulu #define TEGRA_DEF_H 10*91f16700Schasinglulu 11*91f16700Schasinglulu #include <lib/utils_def.h> 12*91f16700Schasinglulu 13*91f16700Schasinglulu /******************************************************************************* 14*91f16700Schasinglulu * Platform BL31 specific defines. 15*91f16700Schasinglulu ******************************************************************************/ 16*91f16700Schasinglulu #define BL31_SIZE U(0x40000) 17*91f16700Schasinglulu 18*91f16700Schasinglulu /******************************************************************************* 19*91f16700Schasinglulu * Power down state IDs 20*91f16700Schasinglulu ******************************************************************************/ 21*91f16700Schasinglulu #define PSTATE_ID_CORE_POWERDN U(7) 22*91f16700Schasinglulu #define PSTATE_ID_CLUSTER_IDLE U(16) 23*91f16700Schasinglulu #define PSTATE_ID_SOC_POWERDN U(27) 24*91f16700Schasinglulu 25*91f16700Schasinglulu /******************************************************************************* 26*91f16700Schasinglulu * This value is used by the PSCI implementation during the `SYSTEM_SUSPEND` 27*91f16700Schasinglulu * call as the `state-id` field in the 'power state' parameter. 28*91f16700Schasinglulu ******************************************************************************/ 29*91f16700Schasinglulu #define PLAT_SYS_SUSPEND_STATE_ID PSTATE_ID_SOC_POWERDN 30*91f16700Schasinglulu 31*91f16700Schasinglulu /******************************************************************************* 32*91f16700Schasinglulu * Platform power states (used by PSCI framework) 33*91f16700Schasinglulu * 34*91f16700Schasinglulu * - PLAT_MAX_RET_STATE should be less than lowest PSTATE_ID 35*91f16700Schasinglulu * - PLAT_MAX_OFF_STATE should be greater than the highest PSTATE_ID 36*91f16700Schasinglulu ******************************************************************************/ 37*91f16700Schasinglulu #define PLAT_MAX_RET_STATE U(1) 38*91f16700Schasinglulu #define PLAT_MAX_OFF_STATE (PSTATE_ID_SOC_POWERDN + U(1)) 39*91f16700Schasinglulu 40*91f16700Schasinglulu /******************************************************************************* 41*91f16700Schasinglulu * Chip specific page table and MMU setup constants 42*91f16700Schasinglulu ******************************************************************************/ 43*91f16700Schasinglulu #define PLAT_PHY_ADDR_SPACE_SIZE (ULL(1) << 35) 44*91f16700Schasinglulu #define PLAT_VIRT_ADDR_SPACE_SIZE (ULL(1) << 35) 45*91f16700Schasinglulu 46*91f16700Schasinglulu /******************************************************************************* 47*91f16700Schasinglulu * SC7 entry firmware's header size 48*91f16700Schasinglulu ******************************************************************************/ 49*91f16700Schasinglulu #define SC7ENTRY_FW_HEADER_SIZE_BYTES U(0x400) 50*91f16700Schasinglulu 51*91f16700Schasinglulu /******************************************************************************* 52*91f16700Schasinglulu * Counter-timer physical secure timer PPI 53*91f16700Schasinglulu ******************************************************************************/ 54*91f16700Schasinglulu #define TEGRA210_TIMER1_IRQ 32 55*91f16700Schasinglulu 56*91f16700Schasinglulu /******************************************************************************* 57*91f16700Schasinglulu * iRAM memory constants 58*91f16700Schasinglulu ******************************************************************************/ 59*91f16700Schasinglulu #define TEGRA_IRAM_BASE U(0x40000000) 60*91f16700Schasinglulu #define TEGRA_IRAM_A_SIZE U(0x10000) /* 64KB */ 61*91f16700Schasinglulu #define TEGRA_IRAM_SIZE U(40000) /* 256KB */ 62*91f16700Schasinglulu 63*91f16700Schasinglulu /******************************************************************************* 64*91f16700Schasinglulu * GIC memory map 65*91f16700Schasinglulu ******************************************************************************/ 66*91f16700Schasinglulu #define TEGRA_GICD_BASE U(0x50041000) 67*91f16700Schasinglulu #define TEGRA_GICC_BASE U(0x50042000) 68*91f16700Schasinglulu 69*91f16700Schasinglulu /******************************************************************************* 70*91f16700Schasinglulu * Secure IRQ definitions 71*91f16700Schasinglulu ******************************************************************************/ 72*91f16700Schasinglulu #define TEGRA210_WDT_CPU_LEGACY_FIQ U(28) 73*91f16700Schasinglulu 74*91f16700Schasinglulu /******************************************************************************* 75*91f16700Schasinglulu * Tegra Memory Select Switch Controller constants 76*91f16700Schasinglulu ******************************************************************************/ 77*91f16700Schasinglulu #define TEGRA_MSELECT_BASE U(0x50060000) 78*91f16700Schasinglulu 79*91f16700Schasinglulu #define MSELECT_CONFIG U(0x0) 80*91f16700Schasinglulu #define ENABLE_WRAP_INCR_MASTER2_BIT (U(1) << U(29)) 81*91f16700Schasinglulu #define ENABLE_WRAP_INCR_MASTER1_BIT (U(1) << U(28)) 82*91f16700Schasinglulu #define ENABLE_WRAP_INCR_MASTER0_BIT (U(1) << U(27)) 83*91f16700Schasinglulu #define UNSUPPORTED_TX_ERR_MASTER2_BIT (U(1) << U(25)) 84*91f16700Schasinglulu #define UNSUPPORTED_TX_ERR_MASTER1_BIT (U(1) << U(24)) 85*91f16700Schasinglulu #define ENABLE_UNSUP_TX_ERRORS (UNSUPPORTED_TX_ERR_MASTER2_BIT | \ 86*91f16700Schasinglulu UNSUPPORTED_TX_ERR_MASTER1_BIT) 87*91f16700Schasinglulu #define ENABLE_WRAP_TO_INCR_BURSTS (ENABLE_WRAP_INCR_MASTER2_BIT | \ 88*91f16700Schasinglulu ENABLE_WRAP_INCR_MASTER1_BIT | \ 89*91f16700Schasinglulu ENABLE_WRAP_INCR_MASTER0_BIT) 90*91f16700Schasinglulu 91*91f16700Schasinglulu /******************************************************************************* 92*91f16700Schasinglulu * Tegra Resource Semaphore constants 93*91f16700Schasinglulu ******************************************************************************/ 94*91f16700Schasinglulu #define TEGRA_RES_SEMA_BASE 0x60001000UL 95*91f16700Schasinglulu #define STA_OFFSET 0UL 96*91f16700Schasinglulu #define SET_OFFSET 4UL 97*91f16700Schasinglulu #define CLR_OFFSET 8UL 98*91f16700Schasinglulu 99*91f16700Schasinglulu /******************************************************************************* 100*91f16700Schasinglulu * Tegra Primary Interrupt Controller constants 101*91f16700Schasinglulu ******************************************************************************/ 102*91f16700Schasinglulu #define TEGRA_PRI_ICTLR_BASE 0x60004000UL 103*91f16700Schasinglulu #define CPU_IEP_FIR_SET 0x18UL 104*91f16700Schasinglulu 105*91f16700Schasinglulu /******************************************************************************* 106*91f16700Schasinglulu * Tegra micro-seconds timer constants 107*91f16700Schasinglulu ******************************************************************************/ 108*91f16700Schasinglulu #define TEGRA_TMRUS_BASE U(0x60005010) 109*91f16700Schasinglulu #define TEGRA_TMRUS_SIZE U(0x1000) 110*91f16700Schasinglulu 111*91f16700Schasinglulu /******************************************************************************* 112*91f16700Schasinglulu * Tegra Clock and Reset Controller constants 113*91f16700Schasinglulu ******************************************************************************/ 114*91f16700Schasinglulu #define TEGRA_CAR_RESET_BASE U(0x60006000) 115*91f16700Schasinglulu #define TEGRA_BOND_OUT_H U(0x74) 116*91f16700Schasinglulu #define APB_DMA_LOCK_BIT (U(1) << 2) 117*91f16700Schasinglulu #define AHB_DMA_LOCK_BIT (U(1) << 1) 118*91f16700Schasinglulu #define TEGRA_BOND_OUT_U U(0x78) 119*91f16700Schasinglulu #define IRAM_D_LOCK_BIT (U(1) << 23) 120*91f16700Schasinglulu #define IRAM_C_LOCK_BIT (U(1) << 22) 121*91f16700Schasinglulu #define IRAM_B_LOCK_BIT (U(1) << 21) 122*91f16700Schasinglulu #define TEGRA_GPU_RESET_REG_OFFSET U(0x28C) 123*91f16700Schasinglulu #define TEGRA_GPU_RESET_GPU_SET_OFFSET U(0x290) 124*91f16700Schasinglulu #define GPU_RESET_BIT (U(1) << 24) 125*91f16700Schasinglulu #define GPU_SET_BIT (U(1) << 24) 126*91f16700Schasinglulu #define TEGRA_RST_DEV_SET_Y U(0x2a8) 127*91f16700Schasinglulu #define NVENC_RESET_BIT (U(1) << 27) 128*91f16700Schasinglulu #define TSECB_RESET_BIT (U(1) << 14) 129*91f16700Schasinglulu #define APE_RESET_BIT (U(1) << 6) 130*91f16700Schasinglulu #define NVJPG_RESET_BIT (U(1) << 3) 131*91f16700Schasinglulu #define NVDEC_RESET_BIT (U(1) << 2) 132*91f16700Schasinglulu #define TEGRA_RST_DEV_SET_L U(0x300) 133*91f16700Schasinglulu #define HOST1X_RESET_BIT (U(1) << 28) 134*91f16700Schasinglulu #define ISP_RESET_BIT (U(1) << 23) 135*91f16700Schasinglulu #define USBD_RESET_BIT (U(1) << 22) 136*91f16700Schasinglulu #define VI_RESET_BIT (U(1) << 20) 137*91f16700Schasinglulu #define SDMMC4_RESET_BIT (U(1) << 15) 138*91f16700Schasinglulu #define SDMMC1_RESET_BIT (U(1) << 14) 139*91f16700Schasinglulu #define SDMMC2_RESET_BIT (U(1) << 9) 140*91f16700Schasinglulu #define TEGRA_RST_DEV_SET_H U(0x308) 141*91f16700Schasinglulu #define USB2_RESET_BIT (U(1) << 26) 142*91f16700Schasinglulu #define APBDMA_RESET_BIT (U(1) << 2) 143*91f16700Schasinglulu #define AHBDMA_RESET_BIT (U(1) << 1) 144*91f16700Schasinglulu #define TEGRA_RST_DEV_SET_U U(0x310) 145*91f16700Schasinglulu #define XUSB_DEV_RESET_BIT (U(1) << 31) 146*91f16700Schasinglulu #define XUSB_HOST_RESET_BIT (U(1) << 25) 147*91f16700Schasinglulu #define TSEC_RESET_BIT (U(1) << 19) 148*91f16700Schasinglulu #define PCIE_RESET_BIT (U(1) << 6) 149*91f16700Schasinglulu #define SDMMC3_RESET_BIT (U(1) << 5) 150*91f16700Schasinglulu #define TEGRA_RST_DEVICES_V U(0x358) 151*91f16700Schasinglulu #define TEGRA_RST_DEVICES_W U(0x35C) 152*91f16700Schasinglulu #define ENTROPY_CLK_ENB_BIT (U(1) << 21) 153*91f16700Schasinglulu #define TEGRA_CLK_OUT_ENB_V U(0x360) 154*91f16700Schasinglulu #define SE_CLK_ENB_BIT (U(1) << 31) 155*91f16700Schasinglulu #define TEGRA_CLK_OUT_ENB_W U(0x364) 156*91f16700Schasinglulu #define ENTROPY_RESET_BIT (U(1) << 21) 157*91f16700Schasinglulu #define TEGRA_CLK_RST_CTL_CLK_SRC_SE U(0x42C) 158*91f16700Schasinglulu #define SE_CLK_SRC_MASK (U(7) << 29) 159*91f16700Schasinglulu #define SE_CLK_SRC_CLK_M (U(6) << 29) 160*91f16700Schasinglulu #define TEGRA_RST_DEV_SET_V U(0x430) 161*91f16700Schasinglulu #define SE_RESET_BIT (U(1) << 31) 162*91f16700Schasinglulu #define HDA_RESET_BIT (U(1) << 29) 163*91f16700Schasinglulu #define SATA_RESET_BIT (U(1) << 28) 164*91f16700Schasinglulu #define TEGRA_RST_DEV_CLR_V U(0x434) 165*91f16700Schasinglulu #define TEGRA_CLK_ENB_V U(0x440) 166*91f16700Schasinglulu 167*91f16700Schasinglulu /******************************************************************************* 168*91f16700Schasinglulu * Tegra Flow Controller constants 169*91f16700Schasinglulu ******************************************************************************/ 170*91f16700Schasinglulu #define TEGRA_FLOWCTRL_BASE U(0x60007000) 171*91f16700Schasinglulu 172*91f16700Schasinglulu /******************************************************************************* 173*91f16700Schasinglulu * Tegra AHB arbitration controller 174*91f16700Schasinglulu ******************************************************************************/ 175*91f16700Schasinglulu #define TEGRA_AHB_ARB_BASE 0x6000C000UL 176*91f16700Schasinglulu 177*91f16700Schasinglulu /******************************************************************************* 178*91f16700Schasinglulu * Tegra Secure Boot Controller constants 179*91f16700Schasinglulu ******************************************************************************/ 180*91f16700Schasinglulu #define TEGRA_SB_BASE U(0x6000C200) 181*91f16700Schasinglulu 182*91f16700Schasinglulu /******************************************************************************* 183*91f16700Schasinglulu * Tegra Exception Vectors constants 184*91f16700Schasinglulu ******************************************************************************/ 185*91f16700Schasinglulu #define TEGRA_EVP_BASE U(0x6000F000) 186*91f16700Schasinglulu 187*91f16700Schasinglulu /******************************************************************************* 188*91f16700Schasinglulu * Tegra Miscellaneous register constants 189*91f16700Schasinglulu ******************************************************************************/ 190*91f16700Schasinglulu #define TEGRA_MISC_BASE U(0x70000000) 191*91f16700Schasinglulu #define HARDWARE_REVISION_OFFSET U(0x804) 192*91f16700Schasinglulu #define APB_SLAVE_SECURITY_ENABLE U(0xC00) 193*91f16700Schasinglulu #define PMC_SECURITY_EN_BIT (U(1) << 13) 194*91f16700Schasinglulu #define PINMUX_AUX_DVFS_PWM U(0x3184) 195*91f16700Schasinglulu #define PINMUX_PWM_TRISTATE (U(1) << 4) 196*91f16700Schasinglulu 197*91f16700Schasinglulu /******************************************************************************* 198*91f16700Schasinglulu * Tegra UART controller base addresses 199*91f16700Schasinglulu ******************************************************************************/ 200*91f16700Schasinglulu #define TEGRA_UARTA_BASE U(0x70006000) 201*91f16700Schasinglulu #define TEGRA_UARTB_BASE U(0x70006040) 202*91f16700Schasinglulu #define TEGRA_UARTC_BASE U(0x70006200) 203*91f16700Schasinglulu #define TEGRA_UARTD_BASE U(0x70006300) 204*91f16700Schasinglulu #define TEGRA_UARTE_BASE U(0x70006400) 205*91f16700Schasinglulu 206*91f16700Schasinglulu /******************************************************************************* 207*91f16700Schasinglulu * Tegra Fuse Controller related constants 208*91f16700Schasinglulu ******************************************************************************/ 209*91f16700Schasinglulu #define TEGRA_FUSE_BASE 0x7000F800UL 210*91f16700Schasinglulu #define FUSE_BOOT_SECURITY_INFO 0x268UL 211*91f16700Schasinglulu #define FUSE_ATOMIC_SAVE_CARVEOUT_EN (0x1U << 7) 212*91f16700Schasinglulu #define FUSE_JTAG_SECUREID_VALID (0x104UL) 213*91f16700Schasinglulu #define ECID_VALID (0x1UL) 214*91f16700Schasinglulu 215*91f16700Schasinglulu 216*91f16700Schasinglulu /******************************************************************************* 217*91f16700Schasinglulu * Tegra Power Mgmt Controller constants 218*91f16700Schasinglulu ******************************************************************************/ 219*91f16700Schasinglulu #define TEGRA_PMC_BASE U(0x7000E400) 220*91f16700Schasinglulu #define TEGRA_PMC_SIZE U(0xC00) /* 3k */ 221*91f16700Schasinglulu 222*91f16700Schasinglulu /******************************************************************************* 223*91f16700Schasinglulu * Tegra Atomics constants 224*91f16700Schasinglulu ******************************************************************************/ 225*91f16700Schasinglulu #define TEGRA_ATOMICS_BASE 0x70016000UL 226*91f16700Schasinglulu #define TRIGGER0_REG_OFFSET 0UL 227*91f16700Schasinglulu #define TRIGGER_WIDTH_SHIFT 4UL 228*91f16700Schasinglulu #define TRIGGER_ID_SHIFT 16UL 229*91f16700Schasinglulu #define RESULT0_REG_OFFSET 0xC00UL 230*91f16700Schasinglulu 231*91f16700Schasinglulu /******************************************************************************* 232*91f16700Schasinglulu * Tegra Memory Controller constants 233*91f16700Schasinglulu ******************************************************************************/ 234*91f16700Schasinglulu #define TEGRA_MC_BASE U(0x70019000) 235*91f16700Schasinglulu 236*91f16700Schasinglulu /* Memory Controller Interrupt Status */ 237*91f16700Schasinglulu #define MC_INTSTATUS 0x00U 238*91f16700Schasinglulu 239*91f16700Schasinglulu /* TZDRAM carveout configuration registers */ 240*91f16700Schasinglulu #define MC_SECURITY_CFG0_0 U(0x70) 241*91f16700Schasinglulu #define MC_SECURITY_CFG1_0 U(0x74) 242*91f16700Schasinglulu #define MC_SECURITY_CFG3_0 U(0x9BC) 243*91f16700Schasinglulu 244*91f16700Schasinglulu /* Video Memory carveout configuration registers */ 245*91f16700Schasinglulu #define MC_VIDEO_PROTECT_BASE_HI U(0x978) 246*91f16700Schasinglulu #define MC_VIDEO_PROTECT_BASE_LO U(0x648) 247*91f16700Schasinglulu #define MC_VIDEO_PROTECT_SIZE_MB U(0x64c) 248*91f16700Schasinglulu #define MC_VIDEO_PROTECT_REG_CTRL U(0x650) 249*91f16700Schasinglulu #define MC_VIDEO_PROTECT_WRITE_ACCESS_ENABLED U(3) 250*91f16700Schasinglulu 251*91f16700Schasinglulu /* SMMU configuration registers*/ 252*91f16700Schasinglulu #define MC_SMMU_PPCS_ASID_0 0x270U 253*91f16700Schasinglulu #define PPCS_SMMU_ENABLE (0x1U << 31) 254*91f16700Schasinglulu 255*91f16700Schasinglulu /******************************************************************************* 256*91f16700Schasinglulu * Tegra CLDVFS constants 257*91f16700Schasinglulu ******************************************************************************/ 258*91f16700Schasinglulu #define TEGRA_CL_DVFS_BASE U(0x70110000) 259*91f16700Schasinglulu #define DVFS_DFLL_CTRL U(0x00) 260*91f16700Schasinglulu #define ENABLE_OPEN_LOOP U(1) 261*91f16700Schasinglulu #define ENABLE_CLOSED_LOOP U(2) 262*91f16700Schasinglulu #define DVFS_DFLL_OUTPUT_CFG U(0x20) 263*91f16700Schasinglulu #define DFLL_OUTPUT_CFG_I2C_EN_BIT (U(1) << 30) 264*91f16700Schasinglulu #define DFLL_OUTPUT_CFG_CLK_EN_BIT (U(1) << 6) 265*91f16700Schasinglulu 266*91f16700Schasinglulu /******************************************************************************* 267*91f16700Schasinglulu * Tegra SE constants 268*91f16700Schasinglulu ******************************************************************************/ 269*91f16700Schasinglulu #define TEGRA_SE1_BASE U(0x70012000) 270*91f16700Schasinglulu #define TEGRA_SE2_BASE U(0x70412000) 271*91f16700Schasinglulu #define TEGRA_PKA1_BASE U(0x70420000) 272*91f16700Schasinglulu #define TEGRA_SE2_RANGE_SIZE U(0x2000) 273*91f16700Schasinglulu #define SE_TZRAM_SECURITY U(0x4) 274*91f16700Schasinglulu 275*91f16700Schasinglulu /******************************************************************************* 276*91f16700Schasinglulu * Tegra TZRAM constants 277*91f16700Schasinglulu ******************************************************************************/ 278*91f16700Schasinglulu #define TEGRA_TZRAM_BASE U(0x7C010000) 279*91f16700Schasinglulu #define TEGRA_TZRAM_SIZE U(0x10000) 280*91f16700Schasinglulu 281*91f16700Schasinglulu /******************************************************************************* 282*91f16700Schasinglulu * Tegra TZRAM carveout constants 283*91f16700Schasinglulu ******************************************************************************/ 284*91f16700Schasinglulu #define TEGRA_TZRAM_CARVEOUT_BASE U(0x7C04C000) 285*91f16700Schasinglulu #define TEGRA_TZRAM_CARVEOUT_SIZE U(0x4000) 286*91f16700Schasinglulu 287*91f16700Schasinglulu /******************************************************************************* 288*91f16700Schasinglulu * Tegra DRAM memory base address 289*91f16700Schasinglulu ******************************************************************************/ 290*91f16700Schasinglulu #define TEGRA_DRAM_BASE ULL(0x80000000) 291*91f16700Schasinglulu #define TEGRA_DRAM_END ULL(0x27FFFFFFF) 292*91f16700Schasinglulu 293*91f16700Schasinglulu #endif /* TEGRA_DEF_H */ 294