tegra_def.h 12 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
49
50
/*******************************************************************************
 * Counter-timer physical secure timer PPI
 ******************************************************************************/
#define TEGRA210_TIMER1_IRQ		32

51
52
53
/*******************************************************************************
 * iRAM memory constants
 ******************************************************************************/
54
#define TEGRA_IRAM_BASE			U(0x40000000)
55
#define TEGRA_IRAM_A_SIZE		U(0x10000) /* 64KB */
56
#define TEGRA_IRAM_SIZE			U(40000) /* 256KB */
57

58
59
60
/*******************************************************************************
 * GIC memory map
 ******************************************************************************/
61
62
#define TEGRA_GICD_BASE			U(0x50041000)
#define TEGRA_GICC_BASE			U(0x50042000)
63

64
65
66
67
68
/*******************************************************************************
 * Secure IRQ definitions
 ******************************************************************************/
#define TEGRA210_WDT_CPU_LEGACY_FIQ		U(28)

69
70
71
/*******************************************************************************
 * Tegra Memory Select Switch Controller constants
 ******************************************************************************/
72
73
74
75
76
77
78
79
#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))
80
81
82
83
84
85
#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)

86
87
88
89
90
91
92
93
94
95
96
97
98
99
/*******************************************************************************
 * 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

100
101
102
/*******************************************************************************
 * Tegra micro-seconds timer constants
 ******************************************************************************/
103
104
#define TEGRA_TMRUS_BASE		U(0x60005010)
#define TEGRA_TMRUS_SIZE		U(0x1000)
105
106
107
108

/*******************************************************************************
 * Tegra Clock and Reset Controller constants
 ******************************************************************************/
109
#define TEGRA_CAR_RESET_BASE		U(0x60006000)
110
111
112
113
114
115
116
#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)
117
#define TEGRA_GPU_RESET_REG_OFFSET	U(0x28C)
118
#define TEGRA_GPU_RESET_GPU_SET_OFFSET	U(0x290)
119
#define  GPU_RESET_BIT			(U(1) << 24)
120
#define  GPU_SET_BIT			(U(1) << 24)
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
147
148
149
150
151
#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)
152
153
154
#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)
155
156
157
158
#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)
159
160
#define TEGRA_RST_DEV_CLR_V		U(0x434)
#define TEGRA_CLK_ENB_V			U(0x440)
161
162
163
164

/*******************************************************************************
 * Tegra Flow Controller constants
 ******************************************************************************/
165
#define TEGRA_FLOWCTRL_BASE		U(0x60007000)
166

167
168
169
170
171
/*******************************************************************************
 * Tegra AHB arbitration controller
 ******************************************************************************/
#define TEGRA_AHB_ARB_BASE		0x6000C000UL

172
173
174
/*******************************************************************************
 * Tegra Secure Boot Controller constants
 ******************************************************************************/
175
#define TEGRA_SB_BASE			U(0x6000C200)
176
177
178
179

/*******************************************************************************
 * Tegra Exception Vectors constants
 ******************************************************************************/
180
#define TEGRA_EVP_BASE			U(0x6000F000)
181

182
183
184
/*******************************************************************************
 * Tegra Miscellaneous register constants
 ******************************************************************************/
185
186
#define TEGRA_MISC_BASE			U(0x70000000)
#define  HARDWARE_REVISION_OFFSET	U(0x804)
187
188
#define  APB_SLAVE_SECURITY_ENABLE	U(0xC00)
#define  PMC_SECURITY_EN_BIT		(U(1) << 13)
189
190
#define  PINMUX_AUX_DVFS_PWM		U(0x3184)
#define  PINMUX_PWM_TRISTATE		(U(1) << 4)
191

192
193
194
/*******************************************************************************
 * Tegra UART controller base addresses
 ******************************************************************************/
195
196
197
198
199
#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)
200

201
202
203
204
205
206
/*******************************************************************************
 * Tegra Fuse Controller related constants
 ******************************************************************************/
#define TEGRA_FUSE_BASE			0x7000F800UL
#define FUSE_BOOT_SECURITY_INFO		0x268UL
#define FUSE_ATOMIC_SAVE_CARVEOUT_EN	(0x1U << 7)
207
208
#define FUSE_JTAG_SECUREID_VALID	(0x104UL)
#define ECID_VALID			(0x1UL)
209
210


211
212
213
/*******************************************************************************
 * Tegra Power Mgmt Controller constants
 ******************************************************************************/
214
#define TEGRA_PMC_BASE			U(0x7000E400)
215
#define TEGRA_PMC_SIZE			U(0xC00) /* 3k */
216

217
218
219
220
221
222
223
224
225
/*******************************************************************************
 * 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

226
227
228
/*******************************************************************************
 * Tegra Memory Controller constants
 ******************************************************************************/
229
#define TEGRA_MC_BASE			U(0x70019000)
230

231
232
233
/* Memory Controller Interrupt Status */
#define MC_INTSTATUS			0x00U

234
/* TZDRAM carveout configuration registers */
235
236
237
#define MC_SECURITY_CFG0_0		U(0x70)
#define MC_SECURITY_CFG1_0		U(0x74)
#define MC_SECURITY_CFG3_0		U(0x9BC)
238
239

/* Video Memory carveout configuration registers */
240
241
242
#define MC_VIDEO_PROTECT_BASE_HI	U(0x978)
#define MC_VIDEO_PROTECT_BASE_LO	U(0x648)
#define MC_VIDEO_PROTECT_SIZE_MB	U(0x64c)
243

244
/* SMMU configuration registers*/
245
#define MC_SMMU_PPCS_ASID_0		0x270U
246
247
#define  PPCS_SMMU_ENABLE		(0x1U << 31)

248
249
250
251
252
253
254
255
256
257
258
/*******************************************************************************
 * 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)

259
260
261
262
263
264
265
266
267
/*******************************************************************************
 * 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)

268
269
270
/*******************************************************************************
 * Tegra TZRAM constants
 ******************************************************************************/
271
272
#define TEGRA_TZRAM_BASE		U(0x7C010000)
#define TEGRA_TZRAM_SIZE		U(0x10000)
273

274
275
276
277
278
279
/*******************************************************************************
 * Tegra TZRAM carveout constants
 ******************************************************************************/
#define TEGRA_TZRAM_CARVEOUT_BASE	U(0x7C04C000)
#define TEGRA_TZRAM_CARVEOUT_SIZE	U(0x4000)

280
281
282
283
284
285
/*******************************************************************************
 * Tegra DRAM memory base address
 ******************************************************************************/
#define TEGRA_DRAM_BASE			ULL(0x80000000)
#define TEGRA_DRAM_END			ULL(0x27FFFFFFF)

286
#endif /* TEGRA_DEF_H */