tegra_def.h 11.7 KB
Newer Older
1
/*
2
 * Copyright (c) 2015-2018, ARM Limited and Contributors. All rights reserved.
3
 * Copyright (c) 2020, NVIDIA Corporation. All rights reserved.
4
 *
dp-arm's avatar
dp-arm committed
5
 * SPDX-License-Identifier: BSD-3-Clause
6
7
 */

8
9
#ifndef TEGRA_DEF_H
#define TEGRA_DEF_H
10

11
#include <lib/utils_def.h>
12

13
14
15
/*******************************************************************************
 * Power down state IDs
 ******************************************************************************/
16
17
18
#define PSTATE_ID_CORE_POWERDN		U(7)
#define PSTATE_ID_CLUSTER_IDLE		U(16)
#define PSTATE_ID_SOC_POWERDN		U(27)
19
20
21
22
23
24
25

/*******************************************************************************
 * This value is used by the PSCI implementation during the `SYSTEM_SUSPEND`
 * call as the `state-id` field in the 'power state' parameter.
 ******************************************************************************/
#define PLAT_SYS_SUSPEND_STATE_ID	PSTATE_ID_SOC_POWERDN

26
27
28
29
30
31
/*******************************************************************************
 * Platform power states (used by PSCI framework)
 *
 * - PLAT_MAX_RET_STATE should be less than lowest PSTATE_ID
 * - PLAT_MAX_OFF_STATE should be greater than the highest PSTATE_ID
 ******************************************************************************/
32
33
#define PLAT_MAX_RET_STATE		U(1)
#define PLAT_MAX_OFF_STATE		(PSTATE_ID_SOC_POWERDN + U(1))
34

35
36
37
38
39
40
/*******************************************************************************
 * Chip specific page table and MMU setup constants
 ******************************************************************************/
#define PLAT_PHY_ADDR_SPACE_SIZE	(ULL(1) << 35)
#define PLAT_VIRT_ADDR_SPACE_SIZE	(ULL(1) << 35)

41
42
43
44
45
/*******************************************************************************
 * SC7 entry firmware's header size
 ******************************************************************************/
#define SC7ENTRY_FW_HEADER_SIZE_BYTES	U(0x400)

46
47
48
/*******************************************************************************
 * iRAM memory constants
 ******************************************************************************/
49
#define TEGRA_IRAM_BASE			U(0x40000000)
50
#define TEGRA_IRAM_A_SIZE		U(0x10000) /* 64KB */
51
#define TEGRA_IRAM_SIZE			U(40000) /* 256KB */
52

53
54
55
/*******************************************************************************
 * GIC memory map
 ******************************************************************************/
56
57
#define TEGRA_GICD_BASE			U(0x50041000)
#define TEGRA_GICC_BASE			U(0x50042000)
58

59
60
61
62
63
/*******************************************************************************
 * Secure IRQ definitions
 ******************************************************************************/
#define TEGRA210_WDT_CPU_LEGACY_FIQ		U(28)

64
65
66
/*******************************************************************************
 * Tegra Memory Select Switch Controller constants
 ******************************************************************************/
67
68
69
70
71
72
73
74
#define TEGRA_MSELECT_BASE		U(0x50060000)

#define MSELECT_CONFIG			U(0x0)
#define ENABLE_WRAP_INCR_MASTER2_BIT	(U(1) << U(29))
#define ENABLE_WRAP_INCR_MASTER1_BIT	(U(1) << U(28))
#define ENABLE_WRAP_INCR_MASTER0_BIT	(U(1) << U(27))
#define UNSUPPORTED_TX_ERR_MASTER2_BIT	(U(1) << U(25))
#define UNSUPPORTED_TX_ERR_MASTER1_BIT	(U(1) << U(24))
75
76
77
78
79
80
#define ENABLE_UNSUP_TX_ERRORS		(UNSUPPORTED_TX_ERR_MASTER2_BIT | \
					 UNSUPPORTED_TX_ERR_MASTER1_BIT)
#define ENABLE_WRAP_TO_INCR_BURSTS	(ENABLE_WRAP_INCR_MASTER2_BIT | \
					 ENABLE_WRAP_INCR_MASTER1_BIT | \
					 ENABLE_WRAP_INCR_MASTER0_BIT)

81
82
83
84
85
86
87
88
89
90
91
92
93
94
/*******************************************************************************
 * Tegra Resource Semaphore constants
 ******************************************************************************/
#define TEGRA_RES_SEMA_BASE		0x60001000UL
#define  STA_OFFSET			0UL
#define  SET_OFFSET			4UL
#define  CLR_OFFSET			8UL

/*******************************************************************************
 * Tegra Primary Interrupt Controller constants
 ******************************************************************************/
#define TEGRA_PRI_ICTLR_BASE		0x60004000UL
#define  CPU_IEP_FIR_SET		0x18UL

95
96
97
/*******************************************************************************
 * Tegra micro-seconds timer constants
 ******************************************************************************/
98
99
#define TEGRA_TMRUS_BASE		U(0x60005010)
#define TEGRA_TMRUS_SIZE		U(0x1000)
100
101
102
103

/*******************************************************************************
 * Tegra Clock and Reset Controller constants
 ******************************************************************************/
104
#define TEGRA_CAR_RESET_BASE		U(0x60006000)
105
106
107
108
109
110
111
#define TEGRA_BOND_OUT_H		U(0x74)
#define  APB_DMA_LOCK_BIT		(U(1) << 2)
#define  AHB_DMA_LOCK_BIT		(U(1) << 1)
#define TEGRA_BOND_OUT_U		U(0x78)
#define  IRAM_D_LOCK_BIT		(U(1) << 23)
#define  IRAM_C_LOCK_BIT		(U(1) << 22)
#define  IRAM_B_LOCK_BIT		(U(1) << 21)
112
#define TEGRA_GPU_RESET_REG_OFFSET	U(0x28C)
113
#define TEGRA_GPU_RESET_GPU_SET_OFFSET	U(0x290)
114
#define  GPU_RESET_BIT			(U(1) << 24)
115
#define  GPU_SET_BIT			(U(1) << 24)
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
#define TEGRA_RST_DEV_SET_Y		U(0x2a8)
#define  NVENC_RESET_BIT		(U(1) << 27)
#define  TSECB_RESET_BIT		(U(1) << 14)
#define  APE_RESET_BIT			(U(1) << 6)
#define  NVJPG_RESET_BIT		(U(1) << 3)
#define  NVDEC_RESET_BIT		(U(1) << 2)
#define TEGRA_RST_DEV_SET_L		U(0x300)
#define  HOST1X_RESET_BIT		(U(1) << 28)
#define  ISP_RESET_BIT			(U(1) << 23)
#define  USBD_RESET_BIT			(U(1) << 22)
#define  VI_RESET_BIT			(U(1) << 20)
#define  SDMMC4_RESET_BIT		(U(1) << 15)
#define  SDMMC1_RESET_BIT		(U(1) << 14)
#define  SDMMC2_RESET_BIT		(U(1) << 9)
#define TEGRA_RST_DEV_SET_H		U(0x308)
#define  USB2_RESET_BIT			(U(1) << 26)
#define  APBDMA_RESET_BIT		(U(1) << 2)
#define  AHBDMA_RESET_BIT		(U(1) << 1)
#define TEGRA_RST_DEV_SET_U		U(0x310)
#define  XUSB_DEV_RESET_BIT		(U(1) << 31)
#define  XUSB_HOST_RESET_BIT		(U(1) << 25)
#define  TSEC_RESET_BIT			(U(1) << 19)
#define  PCIE_RESET_BIT			(U(1) << 6)
#define  SDMMC3_RESET_BIT		(U(1) << 5)
#define TEGRA_RST_DEVICES_V		U(0x358)
#define TEGRA_RST_DEVICES_W		U(0x35C)
#define  ENTROPY_CLK_ENB_BIT		(U(1) << 21)
#define TEGRA_CLK_OUT_ENB_V		U(0x360)
#define  SE_CLK_ENB_BIT			(U(1) << 31)
#define TEGRA_CLK_OUT_ENB_W		U(0x364)
#define  ENTROPY_RESET_BIT 		(U(1) << 21)
147
148
149
#define TEGRA_CLK_RST_CTL_CLK_SRC_SE	U(0x42C)
#define  SE_CLK_SRC_MASK		(U(7) << 29)
#define  SE_CLK_SRC_CLK_M		(U(6) << 29)
150
151
152
153
#define TEGRA_RST_DEV_SET_V		U(0x430)
#define  SE_RESET_BIT			(U(1) << 31)
#define  HDA_RESET_BIT			(U(1) << 29)
#define  SATA_RESET_BIT			(U(1) << 28)
154
155
#define TEGRA_RST_DEV_CLR_V		U(0x434)
#define TEGRA_CLK_ENB_V			U(0x440)
156
157
158
159

/*******************************************************************************
 * Tegra Flow Controller constants
 ******************************************************************************/
160
#define TEGRA_FLOWCTRL_BASE		U(0x60007000)
161

162
163
164
165
166
/*******************************************************************************
 * Tegra AHB arbitration controller
 ******************************************************************************/
#define TEGRA_AHB_ARB_BASE		0x6000C000UL

167
168
169
/*******************************************************************************
 * Tegra Secure Boot Controller constants
 ******************************************************************************/
170
#define TEGRA_SB_BASE			U(0x6000C200)
171
172
173
174

/*******************************************************************************
 * Tegra Exception Vectors constants
 ******************************************************************************/
175
#define TEGRA_EVP_BASE			U(0x6000F000)
176

177
178
179
/*******************************************************************************
 * Tegra Miscellaneous register constants
 ******************************************************************************/
180
181
#define TEGRA_MISC_BASE			U(0x70000000)
#define  HARDWARE_REVISION_OFFSET	U(0x804)
182
183
#define  APB_SLAVE_SECURITY_ENABLE	U(0xC00)
#define  PMC_SECURITY_EN_BIT		(U(1) << 13)
184
185
#define  PINMUX_AUX_DVFS_PWM		U(0x3184)
#define  PINMUX_PWM_TRISTATE		(U(1) << 4)
186

187
188
189
/*******************************************************************************
 * Tegra UART controller base addresses
 ******************************************************************************/
190
191
192
193
194
#define TEGRA_UARTA_BASE		U(0x70006000)
#define TEGRA_UARTB_BASE		U(0x70006040)
#define TEGRA_UARTC_BASE		U(0x70006200)
#define TEGRA_UARTD_BASE		U(0x70006300)
#define TEGRA_UARTE_BASE		U(0x70006400)
195

196
197
198
199
200
201
/*******************************************************************************
 * Tegra Fuse Controller related constants
 ******************************************************************************/
#define TEGRA_FUSE_BASE			0x7000F800UL
#define FUSE_BOOT_SECURITY_INFO		0x268UL
#define FUSE_ATOMIC_SAVE_CARVEOUT_EN	(0x1U << 7)
202
203
#define FUSE_JTAG_SECUREID_VALID	(0x104UL)
#define ECID_VALID			(0x1UL)
204
205


206
207
208
/*******************************************************************************
 * Tegra Power Mgmt Controller constants
 ******************************************************************************/
209
#define TEGRA_PMC_BASE			U(0x7000E400)
210
#define TEGRA_PMC_SIZE			U(0xC00) /* 3k */
211

212
213
214
215
216
217
218
219
220
/*******************************************************************************
 * Tegra Atomics constants
 ******************************************************************************/
#define TEGRA_ATOMICS_BASE		0x70016000UL
#define  TRIGGER0_REG_OFFSET		0UL
#define  TRIGGER_WIDTH_SHIFT		4UL
#define  TRIGGER_ID_SHIFT		16UL
#define  RESULT0_REG_OFFSET		0xC00UL

221
222
223
/*******************************************************************************
 * Tegra Memory Controller constants
 ******************************************************************************/
224
#define TEGRA_MC_BASE			U(0x70019000)
225

226
227
228
/* Memory Controller Interrupt Status */
#define MC_INTSTATUS			0x00U

229
/* TZDRAM carveout configuration registers */
230
231
232
#define MC_SECURITY_CFG0_0		U(0x70)
#define MC_SECURITY_CFG1_0		U(0x74)
#define MC_SECURITY_CFG3_0		U(0x9BC)
233
234

/* Video Memory carveout configuration registers */
235
236
237
#define MC_VIDEO_PROTECT_BASE_HI	U(0x978)
#define MC_VIDEO_PROTECT_BASE_LO	U(0x648)
#define MC_VIDEO_PROTECT_SIZE_MB	U(0x64c)
238

239
/* SMMU configuration registers*/
240
#define MC_SMMU_PPCS_ASID_0		0x270U
241
242
#define  PPCS_SMMU_ENABLE		(0x1U << 31)

243
244
245
246
247
248
249
250
251
252
253
/*******************************************************************************
 * Tegra CLDVFS constants
 ******************************************************************************/
#define TEGRA_CL_DVFS_BASE		U(0x70110000)
#define DVFS_DFLL_CTRL			U(0x00)
#define  ENABLE_OPEN_LOOP		U(1)
#define  ENABLE_CLOSED_LOOP		U(2)
#define DVFS_DFLL_OUTPUT_CFG		U(0x20)
#define  DFLL_OUTPUT_CFG_I2C_EN_BIT	(U(1) << 30)
#define  DFLL_OUTPUT_CFG_CLK_EN_BIT	(U(1) << 6)

254
255
256
257
258
259
260
261
262
/*******************************************************************************
 * Tegra SE constants
 ******************************************************************************/
#define TEGRA_SE1_BASE			U(0x70012000)
#define TEGRA_SE2_BASE			U(0x70412000)
#define TEGRA_PKA1_BASE			U(0x70420000)
#define TEGRA_SE2_RANGE_SIZE		U(0x2000)
#define SE_TZRAM_SECURITY		U(0x4)

263
264
265
/*******************************************************************************
 * Tegra TZRAM constants
 ******************************************************************************/
266
267
#define TEGRA_TZRAM_BASE		U(0x7C010000)
#define TEGRA_TZRAM_SIZE		U(0x10000)
268

269
270
271
272
273
274
/*******************************************************************************
 * Tegra TZRAM carveout constants
 ******************************************************************************/
#define TEGRA_TZRAM_CARVEOUT_BASE	U(0x7C04C000)
#define TEGRA_TZRAM_CARVEOUT_SIZE	U(0x4000)

275
276
277
278
279
280
/*******************************************************************************
 * Tegra DRAM memory base address
 ******************************************************************************/
#define TEGRA_DRAM_BASE			ULL(0x80000000)
#define TEGRA_DRAM_END			ULL(0x27FFFFFFF)

281
#endif /* TEGRA_DEF_H */