Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/sys/arm64/nvidia/tegra210/tegra210_car.h
48262 views
1
/*-
2
* SPDX-License-Identifier: BSD-2-Clause
3
*
4
* Copyright 2020 Michal Meloun <[email protected]>
5
*
6
* Redistribution and use in source and binary forms, with or without
7
* modification, are permitted provided that the following conditions
8
* are met:
9
* 1. Redistributions of source code must retain the above copyright
10
* notice, this list of conditions and the following disclaimer.
11
* 2. Redistributions in binary form must reproduce the above copyright
12
* notice, this list of conditions and the following disclaimer in the
13
* documentation and/or other materials provided with the distribution.
14
*
15
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
16
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
19
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
20
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
21
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
22
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
23
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
24
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
25
* SUCH DAMAGE.
26
*/
27
28
#ifndef _TEGRA210_CAR_
29
#define _TEGRA210_CAR_
30
31
#include "clkdev_if.h"
32
33
#define RD4(sc, reg, val) CLKDEV_READ_4((sc)->clkdev, reg, val)
34
#define WR4(sc, reg, val) CLKDEV_WRITE_4((sc)->clkdev, reg, val)
35
#define MD4(sc, reg, mask, set) CLKDEV_MODIFY_4((sc)->clkdev, reg, mask, set)
36
#define DEVICE_LOCK(sc) CLKDEV_DEVICE_LOCK((sc)->clkdev)
37
#define DEVICE_UNLOCK(sc) CLKDEV_DEVICE_UNLOCK((sc)->clkdev)
38
39
#define RST_SOURCE 0x000
40
#define RST_DEVICES_L 0x004
41
#define RST_DEVICES_H 0x008
42
#define RST_DEVICES_U 0x00C
43
#define CLK_OUT_ENB_L 0x010
44
#define CLK_OUT_ENB_H 0x014
45
#define CLK_OUT_ENB_U 0x018
46
#define SUPER_CCLK_DIVIDER 0x024
47
#define SCLK_BURST_POLICY 0x028
48
#define SUPER_SCLK_DIVIDER 0x02c
49
#define CLK_SYSTEM_RATE 0x030
50
#define CLK_MASK_ARM 0x044
51
#define MISC_CLK_ENB 0x048
52
53
#define OSC_CTRL 0x050
54
#define OSC_CTRL_OSC_FREQ_GET(x) (((x) >> 28) & 0x0F)
55
#define OSC_CTRL_PLL_REF_DIV_GET(x) (((x) >> 26) & 0x03)
56
57
#define OSC_FREQ_DET_STATUS 0x05c
58
#define PLLE_SS_CNTL 0x068
59
#define PLLE_SS_CNTL_INTEGOFFSET(x) (((x) & 0x03) << 30)
60
#define PLLE_SS_CNTL_SSCINCINTRV(x) (((x) & 0x3f) << 24)
61
#define PLLE_SS_CNTL_SSCINC(x) (((x) & 0xff) << 16)
62
#define PLLE_SS_CNTL_SSCINVERT (1 << 15)
63
#define PLLE_SS_CNTL_SSCCENTER (1 << 14)
64
#define PLLE_SS_CNTL_SSCPDMBYP (1 << 13)
65
#define PLLE_SS_CNTL_SSCBYP (1 << 12)
66
#define PLLE_SS_CNTL_INTERP_RESET (1 << 11)
67
#define PLLE_SS_CNTL_BYPASS_SS (1 << 10)
68
#define PLLE_SS_CNTL_SSCMAX(x) (((x) & 0x1ff) << 0)
69
70
#define PLLE_SS_CNTL_SSCINCINTRV_MASK (0x3f << 24)
71
#define PLLE_SS_CNTL_SSCINCINTRV_VAL (0x20 << 24)
72
#define PLLE_SS_CNTL_SSCINC_MASK (0xff << 16)
73
#define PLLE_SS_CNTL_SSCINC_VAL (0x1 << 16)
74
#define PLLE_SS_CNTL_SSCMAX_MASK 0x1ff
75
#define PLLE_SS_CNTL_SSCMAX_VAL 0x25
76
#define PLLE_SS_CNTL_DISABLE (PLLE_SS_CNTL_BYPASS_SS | \
77
PLLE_SS_CNTL_INTERP_RESET | \
78
PLLE_SS_CNTL_SSCBYP)
79
#define PLLE_SS_CNTL_COEFFICIENTS_MASK (PLLE_SS_CNTL_SSCMAX_MASK | \
80
PLLE_SS_CNTL_SSCINC_MASK | \
81
PLLE_SS_CNTL_SSCINCINTRV_MASK)
82
#define PLLE_SS_CNTL_COEFFICIENTS_VAL (PLLE_SS_CNTL_SSCMAX_VAL | \
83
PLLE_SS_CNTL_SSCINC_VAL | \
84
PLLE_SS_CNTL_SSCINCINTRV_VAL)
85
86
#define PLLE_MISC1 0x06C
87
#define PLLC_BASE 0x080
88
#define PLLC_OUT 0x084
89
#define PLLC_MISC_0 0x088
90
#define PLLC_MISC_1 0x08c
91
#define PLLM_BASE 0x090
92
#define PLLM_MISC1 0x099
93
#define PLLM_MISC2 0x09c
94
#define PLLP_BASE 0x0a0
95
#define PLLP_OUTA 0x0a4
96
#define PLLP_OUTB 0x0a8
97
#define PLLP_MISC 0x0ac
98
#define PLLA_BASE 0x0b0
99
#define PLLA_OUT 0x0b4
100
#define PLLA_MISC1 0x0b8
101
#define PLLA_MISC 0x0bc
102
#define PLLU_BASE 0x0c0
103
#define PLLU_OUTA 0x0c4
104
#define PLLU_MISC1 0x0c8
105
#define PLLU_MISC 0x0cc
106
#define PLLD_BASE 0x0d0
107
#define PLLD_MISC1 0x0d8
108
#define PLLD_MISC 0x0dc
109
#define PLLX_BASE 0x0e0
110
#define PLLX_MISC 0x0e4
111
#define PLLX_MISC_LOCK_ENABLE (1 << 18)
112
113
#define PLLE_BASE 0x0e8
114
#define PLLE_BASE_ENABLE (1U << 31)
115
#define PLLE_BASE_LOCK_OVERRIDE (1 << 30)
116
117
#define PLLE_MISC 0x0ec
118
#define PLLE_MISC_SETUP_BASE(x) (((x) & 0xFFFF) << 16)
119
#define PLLE_MISC_CLKENABLE (1 << 15)
120
#define PLLE_MISC_IDDQ_SWCTL (1 << 14)
121
#define PLLE_MISC_IDDQ_OVERRIDE_VALUE (1 << 13)
122
#define PLLE_MISC_IDDQ_FREQLOCK (1 << 12)
123
#define PLLE_MISC_LOCK (1 << 11)
124
#define PLLE_MISC_REF_DIS (1 << 10)
125
#define PLLE_MISC_LOCK_ENABLE (1 << 9)
126
#define PLLE_MISC_PTS (1 << 8)
127
#define PLLE_MISC_KCP(x) (((x) & 0x03) << 6)
128
#define PLLE_MISC_VREG_BG_CTRL(x) (((x) & 0x03) << 4)
129
#define PLLE_MISC_VREG_CTRL(x) (((x) & 0x03) << 2)
130
#define PLLE_MISC_KVCO (1 << 0)
131
132
#define PLLE_MISC_VREG_BG_CTRL_SHIFT 4
133
#define PLLE_MISC_VREG_BG_CTRL_MASK (3 << PLLE_MISC_VREG_BG_CTRL_SHIFT)
134
#define PLLE_MISC_VREG_CTRL_SHIFT 2
135
#define PLLE_MISC_VREG_CTRL_MASK (2 << PLLE_MISC_VREG_CTRL_SHIFT)
136
#define PLLE_MISC_SETUP_BASE_SHIFT 16
137
#define PLLE_MISC_SETUP_BASE_MASK (0xffff << PLLE_MISC_SETUP_BASE_SHIFT)
138
139
#define PLLE_SS_CNTL1 0x0f0
140
#define PLLE_SS_CNTL2 0x0f4
141
#define LVL2_CLK_GATE_OVRA 0x0f8
142
#define LVL2_CLK_GATE_OVRB 0x0fc
143
#define LVL2_CLK_GATE_OVRC 0x3a0 /* Misordered in TRM */
144
#define LVL2_CLK_GATE_OVRD 0x3a4
145
#define LVL2_CLK_GATE_OVRE 0x554
146
147
#define CLK_SOURCE_I2S2 0x100
148
#define CLK_SOURCE_I2S3 0x104
149
#define CLK_SOURCE_SPDIF_OUT 0x108
150
#define CLK_SOURCE_SPDIF_IN 0x10c
151
#define CLK_SOURCE_PWM 0x110
152
#define CLK_SOURCE_SPI2 0x118
153
#define CLK_SOURCE_SPI3 0x11c
154
#define CLK_SOURCE_I2C1 0x124
155
#define CLK_SOURCE_I2C5 0x128
156
#define CLK_SOURCE_SPI1 0x134
157
#define CLK_SOURCE_DISP1 0x138
158
#define CLK_SOURCE_DISP2 0x13c
159
#define CLK_SOURCE_ISP 0x144
160
#define CLK_SOURCE_VI 0x148
161
#define CLK_SOURCE_SDMMC1 0x150
162
#define CLK_SOURCE_SDMMC2 0x154
163
#define CLK_SOURCE_SDMMC4 0x164
164
#define CLK_SOURCE_UARTA 0x178
165
#define CLK_SOURCE_UARTB 0x17c
166
#define CLK_SOURCE_HOST1X 0x180
167
#define CLK_SOURCE_I2C2 0x198
168
#define CLK_SOURCE_EMC 0x19c
169
#define CLK_SOURCE_UARTC 0x1a0
170
#define CLK_SOURCE_VI_SENSOR 0x1a8
171
#define CLK_SOURCE_SPI4 0x1b4
172
#define CLK_SOURCE_I2C3 0x1b8
173
#define CLK_SOURCE_SDMMC3 0x1bc
174
#define CLK_SOURCE_UARTD 0x1c0
175
#define CLK_SOURCE_OWR 0x1cc
176
#define CLK_SOURCE_CSITE 0x1d4
177
#define CLK_SOURCE_I2S1 0x1d8
178
#define CLK_SOURCE_DTV 0x1dc
179
#define CLK_SOURCE_TSEC 0x1f4
180
#define CLK_SOURCE_SPARE2 0x1f8
181
182
#define CLK_OUT_ENB_X 0x280
183
#define CLK_ENB_X_SET 0x284
184
#define CLK_ENB_X_CLR 0x288
185
#define RST_DEVICES_X 0x28C
186
#define RST_DEV_X_SET 0x290
187
#define RST_DEV_X_CLR 0x294
188
#define CLK_OUT_ENB_Y 0x298
189
#define CLK_ENB_Y_SET 0x29c
190
#define CLK_ENB_Y_CLR 0x2a0
191
#define RST_DEVICES_Y 0x2a4
192
#define RST_DEV_Y_SET 0x2a8
193
#define RST_DEV_Y_CLR 0x2ac
194
#define DFLL_BASE 0x2f4
195
#define DFLL_BASE_DVFS_DFLL_RESET (1 << 0)
196
197
#define RST_DEV_L_SET 0x300
198
#define RST_DEV_L_CLR 0x304
199
#define RST_DEV_H_SET 0x308
200
#define RST_DEV_H_CLR 0x30c
201
#define RST_DEV_U_SET 0x310
202
#define RST_DEV_U_CLR 0x314
203
#define CLK_ENB_L_SET 0x320
204
#define CLK_ENB_L_CLR 0x324
205
#define CLK_ENB_H_SET 0x328
206
#define CLK_ENB_H_CLR 0x32c
207
#define CLK_ENB_U_SET 0x330
208
#define CLK_ENB_U_CLR 0x334
209
#define CCPLEX_PG_SM_OVRD 0x33c
210
#define CPU_CMPLX_SET 0x340
211
#define RST_DEVICES_V 0x358
212
#define RST_DEVICES_W 0x35c
213
#define CLK_OUT_ENB_V 0x360
214
#define CLK_OUT_ENB_W 0x364
215
#define CCLKG_BURST_POLICY 0x368
216
#define SUPER_CCLKG_DIVIDER 0x36C
217
#define CCLKLP_BURST_POLICY 0x370
218
#define SUPER_CCLKLP_DIVIDER 0x374
219
#define CLK_CPUG_CMPLX 0x378
220
#define CPU_SOFTRST_CTRL 0x380
221
#define CPU_SOFTRST_CTRL1 0x384
222
#define CPU_SOFTRST_CTRL2 0x388
223
#define CLK_SOURCE_MSELECT 0x3b4
224
#define CLK_SOURCE_TSENSOR 0x3b8
225
#define CLK_SOURCE_I2S4 0x3bc
226
#define CLK_SOURCE_I2S5 0x3c0
227
#define CLK_SOURCE_I2C4 0x3c4
228
#define CLK_SOURCE_AHUB 0x3d0
229
#define CLK_SOURCE_HDA2CODEC_2X 0x3e4
230
#define CLK_SOURCE_ACTMON 0x3e8
231
#define CLK_SOURCE_EXTPERIPH1 0x3ec
232
#define CLK_SOURCE_EXTPERIPH2 0x3f0
233
#define CLK_SOURCE_EXTPERIPH3 0x3f4
234
#define CLK_SOURCE_I2C_SLOW 0x3fc
235
236
#define CLK_SOURCE_SYS 0x400
237
#define CLK_SOURCE_ISPB 0x404
238
#define CLK_SOURCE_SOR1 0x410
239
#define CLK_SOURCE_SOR0 0x414
240
#define CLK_SOURCE_SATA_OOB 0x420
241
#define CLK_SOURCE_SATA 0x424
242
#define CLK_SOURCE_HDA 0x428
243
#define RST_DEV_V_SET 0x430
244
#define RST_DEV_V_CLR 0x434
245
#define RST_DEV_W_SET 0x438
246
#define RST_DEV_W_CLR 0x43c
247
#define CLK_ENB_V_SET 0x440
248
#define CLK_ENB_V_CLR 0x444
249
#define CLK_ENB_W_SET 0x448
250
#define CLK_ENB_W_CLR 0x44c
251
#define RST_CPUG_CMPLX_SET 0x450
252
#define RST_CPUG_CMPLX_CLR 0x454
253
#define CLK_CPUG_CMPLX_SET 0x460
254
#define CLK_CPUG_CMPLX_CLR 0x464
255
#define CPU_CMPLX_STATUS 0x470
256
#define INTSTATUS 0x478
257
#define INTMASK 0x47c
258
#define UTMIP_PLL_CFG0 0x480
259
260
#define UTMIP_PLL_CFG1 0x484
261
#define UTMIP_PLL_CFG1_FORCE_PLLU_POWERUP (1 << 17)
262
#define UTMIP_PLL_CFG1_FORCE_PLLU_POWERDOWN (1 << 16)
263
#define UTMIP_PLL_CFG1_FORCE_PLL_ENABLE_POWERUP (1 << 15)
264
#define UTMIP_PLL_CFG1_FORCE_PLL_ENABLE_POWERDOWN (1 << 14)
265
#define UTMIP_PLL_CFG1_FORCE_PLL_ACTIVE_POWERDOWN (1 << 12)
266
#define UTMIP_PLL_CFG1_ENABLE_DLY_COUNT(x) (((x) & 0x1f) << 6)
267
#define UTMIP_PLL_CFG1_XTAL_FREQ_COUNT(x) (((x) & 0xfff) << 0)
268
269
#define UTMIP_PLL_CFG2 0x488
270
#define UTMIP_PLL_CFG2_PHY_XTAL_CLOCKEN (1 << 30)
271
#define UTMIP_PLL_CFG2_FORCE_PD_SAMP_D_POWERUP (1 << 25)
272
#define UTMIP_PLL_CFG2_FORCE_PD_SAMP_D_POWERDOWN (1 << 24)
273
#define UTMIP_PLL_CFG2_ACTIVE_DLY_COUNT(x) (((x) & 0x3f) << 18)
274
#define UTMIP_PLL_CFG2_STABLE_COUNT(x) (((x) & 0xffff) << 6)
275
#define UTMIP_PLL_CFG2_FORCE_PD_SAMP_C_POWERUP (1 << 5)
276
#define UTMIP_PLL_CFG2_FORCE_PD_SAMP_C_POWERDOWN (1 << 4)
277
#define UTMIP_PLL_CFG2_FORCE_PD_SAMP_B_POWERUP (1 << 3)
278
#define UTMIP_PLL_CFG2_FORCE_PD_SAMP_B_POWERDOWN (1 << 2)
279
#define UTMIP_PLL_CFG2_FORCE_PD_SAMP_A_POWERUP (1 << 1)
280
#define UTMIP_PLL_CFG2_FORCE_PD_SAMP_A_POWERDOWN (1 << 0)
281
282
#define PLLE_AUX 0x48c
283
#define PLLE_AUX_SS_SEQ_INCLUDE (1U << 31)
284
#define PLLE_AUX_REF_SEL_PLLREFE (1 << 28)
285
#define PLLE_AUX_SEQ_STATE_GET(x) (((x) >> 26) & 0x03)
286
#define PLLE_AUX_SEQ_STATE_OFF 0
287
#define PLLE_AUX_SEQ_STATE_ON 1
288
#define PLLE_AUX_SEQ_STATE_BUSY 2
289
#define PLLE_AUX_SEQ_START_STATE (1 << 25)
290
#define PLLE_AUX_SEQ_ENABLE (1 << 24)
291
#define PLLE_AUX_SS_DLY(x) (((x) & 0xFF) << 16)
292
#define PLLE_AUX_SS_LOCK_DLY(x) (((x) & 0xFF) << 8)
293
#define PLLE_AUX_SS_TEST_FAST_PT (1 << 7)
294
#define PLLE_AUX_SS_SWCTL (1 << 6)
295
#define PLLE_AUX_CONFIG_SWCTL (1 << 6)
296
#define PLLE_AUX_ENABLE_SWCTL (1 << 4)
297
#define PLLE_AUX_USE_LOCKDET (1 << 3)
298
#define PLLE_AUX_REF_SRC (1 << 2)
299
#define PLLE_AUX_PLLP_CML1_OEN (1 << 1)
300
#define PLLE_AUX_PLLP_CML0_OEN (1 << 0)
301
302
#define SATA_PLL_CFG0 0x490
303
#define SATA_PLL_CFG0_SEQ_START_STATE (1 << 25)
304
#define SATA_PLL_CFG0_SEQ_ENABLE (1 << 24)
305
#define SATA_PLL_CFG0_PADPLL_SLEEP_IDDQ (1 << 13)
306
#define SATA_PLL_CFG0_SEQ_PADPLL_PD_INPUT_VALUE (1 << 7)
307
#define SATA_PLL_CFG0_SEQ_LANE_PD_INPUT_VALUE (1 << 6)
308
#define SATA_PLL_CFG0_SEQ_RESET_INPUT_VALUE (1 << 5)
309
#define SATA_PLL_CFG0_SEQ_IN_SWCTL (1 << 4)
310
#define SATA_PLL_CFG0_PADPLL_USE_LOCKDET (1 << 2)
311
#define SATA_PLL_CFG0_PADPLL_RESET_OVERRIDE_VALUE (1 << 1)
312
#define SATA_PLL_CFG0_PADPLL_RESET_SWCTL (1 << 0)
313
314
#define SATA_PLL_CFG1 0x494
315
#define PCIE_PLL_CFG 0x498
316
#define PCIE_PLL_CFG_SEQ_START_STATE (1 << 25)
317
#define PCIE_PLL_CFG_SEQ_ENABLE (1 << 24)
318
319
#define PROG_AUDIO_DLY_CLK 0x49c
320
#define AUDIO_SYNC_CLK_I2S1 0x4a0
321
#define AUDIO_SYNC_CLK_I2S2 0x4a4
322
#define AUDIO_SYNC_CLK_I2S3 0x4a8
323
#define AUDIO_SYNC_CLK_I2S4 0x4ac
324
#define AUDIO_SYNC_CLK_I2S5 0x4b0
325
#define AUDIO_SYNC_CLK_SPDIF 0x4b4
326
#define PLLD2_BASE 0x4b8
327
#define PLLD2_MISC 0x4bc
328
#define UTMIP_PLL_CFG3 0x4c0
329
#define PLLREFE_BASE 0x4c4
330
#define PLLREFE_MISC 0x4c8
331
#define PLLREFE_OUT 0x4cc
332
#define CPU_FINETRIM_BYP 0x4d0
333
#define CPU_FINETRIM_SELECT 0x4d4
334
#define CPU_FINETRIM_DR 0x4d8
335
#define CPU_FINETRIM_DF 0x4dc
336
#define CPU_FINETRIM_F 0x4e0
337
#define CPU_FINETRIM_R 0x4e4
338
#define PLLC2_BASE 0x4e8
339
#define PLLC2_MISC_0 0x4ec
340
#define PLLC2_MISC_1 0x4f0
341
#define PLLC2_MISC_2 0x4f4
342
#define PLLC2_MISC_3 0x4f8
343
#define PLLC3_BASE 0x4fc
344
345
#define PLLC3_MISC_0 0x500
346
#define PLLC3_MISC_1 0x504
347
#define PLLC3_MISC_2 0x508
348
#define PLLC3_MISC_3 0x50c
349
#define PLLX_MISC_2 0x514
350
#define PLLX_MISC_2 0x514
351
#define PLLX_MISC_2_DYNRAMP_STEPB(x) (((x) & 0xFF) << 24)
352
#define PLLX_MISC_2_DYNRAMP_STEPA(x) (((x) & 0xFF) << 16)
353
#define PLLX_MISC_2_NDIV_NEW(x) (((x) & 0xFF) << 8)
354
#define PLLX_MISC_2_EN_FSTLCK (1 << 5)
355
#define PLLX_MISC_2_LOCK_OVERRIDE (1 << 4)
356
#define PLLX_MISC_2_PLL_FREQLOCK (1 << 3)
357
#define PLLX_MISC_2_DYNRAMP_DONE (1 << 2)
358
#define PLLX_MISC_2_EN_DYNRAMP (1 << 0)
359
360
#define PLLX_MISC_3 0x518
361
362
#define XUSBIO_PLL_CFG0 0x51c
363
#define XUSBIO_PLL_CFG0_SEQ_START_STATE (1 << 25)
364
#define XUSBIO_PLL_CFG0_SEQ_ENABLE (1 << 24)
365
#define XUSBIO_PLL_CFG0_PADPLL_SLEEP_IDDQ (1 << 13)
366
#define XUSBIO_PLL_CFG0_PADPLL_USE_LOCKDET (1 << 6)
367
#define XUSBIO_PLL_CFG0_CLK_ENABLE_SWCTL (1 << 2)
368
#define XUSBIO_PLL_CFG0_PADPLL_RESET_SWCTL (1 << 0)
369
370
#define XUSBIO_PLL_CFG1 0x520
371
#define PLLE_AUX1 0x524
372
#define PLLP_RESHIFT 0x528
373
#define UTMIPLL_HW_PWRDN_CFG0 0x52c
374
#define UTMIPLL_HW_PWRDN_CFG0_UTMIPLL_LOCK (1U << 31)
375
#define UTMIPLL_HW_PWRDN_CFG0_SEQ_START_STATE (1 << 25)
376
#define UTMIPLL_HW_PWRDN_CFG0_SEQ_ENABLE (1 << 24)
377
#define UTMIPLL_HW_PWRDN_CFG0_IDDQ_PD_INCLUDE (1 << 7)
378
#define UTMIPLL_HW_PWRDN_CFG0_USE_LOCKDET (1 << 6)
379
#define UTMIPLL_HW_PWRDN_CFG0_SEQ_RESET_INPUT_VALUE (1 << 5)
380
#define UTMIPLL_HW_PWRDN_CFG0_SEQ_IN_SWCTL (1 << 4)
381
#define UTMIPLL_HW_PWRDN_CFG0_CLK_ENABLE_SWCTL (1 << 2)
382
#define UTMIPLL_HW_PWRDN_CFG0_IDDQ_OVERRIDE (1 << 1)
383
#define UTMIPLL_HW_PWRDN_CFG0_IDDQ_SWCTL (1 << 0)
384
385
#define PLLU_HW_PWRDN_CFG0 0x530
386
#define PLLU_HW_PWRDN_CFG0_IDDQ_PD_INCLUDE (1 << 28)
387
#define PLLU_HW_PWRDN_CFG0_SEQ_ENABLE (1 << 24)
388
#define PLLU_HW_PWRDN_CFG0_USE_SWITCH_DETECT (1 << 7)
389
#define PLLU_HW_PWRDN_CFG0_USE_LOCKDET (1 << 6)
390
#define PLLU_HW_PWRDN_CFG0_CLK_ENABLE_SWCTL (1 << 2)
391
#define PLLU_HW_PWRDN_CFG0_CLK_SWITCH_SWCTL (1 << 0)
392
393
#define XUSB_PLL_CFG0 0x534
394
#define XUSB_PLL_CFG0_UTMIPLL_LOCK_DLY 0x3ff
395
#define XUSB_PLL_CFG0_PLLU_LOCK_DLY_MASK (0x3ff << 14)
396
397
#define CLK_CPU_MISC 0x53c
398
#define CLK_CPUG_MISC 0x540
399
#define PLLX_HW_CTRL_CFG 0x548
400
#define PLLX_SW_RAMP_CFG 0x54c
401
#define PLLX_HW_CTRL_STATUS 0x550
402
#define SPARE_REG0 0x55c
403
#define SPARE_REG0_MDIV_GET(x) (((x) >> 2) & 0x03)
404
405
#define AUDIO_SYNC_CLK_DMIC1 0x560
406
#define AUDIO_SYNC_CLK_DMIC2 0x564
407
#define PLLD2_SS_CFG 0x570
408
#define PLLD2_SS_CTRL1 0x574
409
#define PLLD2_SS_CTRL2 0x578
410
#define PLLDP_BASE 0x590
411
#define PLLDP_MISC 0x594
412
#define PLLDP_SS_CFG 0x594
413
#define PLLDP_SS_CTRL1 0x598
414
#define PLLDP_SS_CTRL2 0x5a0
415
#define PLLC4_BASE 0x5a4
416
#define PLLC4_MISC 0x5a8
417
#define SPARE0 0x5c4
418
#define SPARE1 0x5c8
419
#define GPU_ISOB_CTRL 0x5cc
420
#define PLLC_MISC_2 0x5d0
421
#define PLLC_MISC_3 0x5d4
422
#define PLLA_MISC2 0x5d8
423
#define PLLC4_OUT 0x5e4
424
#define PLLMB_BASE 0x5e8
425
#define PLLMB_MISC1 0x5ec
426
#define PLLX_MISC_4 0x5f0
427
#define PLLX_MISC_5 0x5f4
428
429
#define CLK_SOURCE_XUSB_CORE_HOST 0x600
430
#define CLK_SOURCE_XUSB_FALCON 0x604
431
#define CLK_SOURCE_XUSB_FS 0x608
432
#define CLK_SOURCE_XUSB_CORE_DEV 0x60c
433
#define CLK_SOURCE_XUSB_SS 0x610
434
#define CLK_SOURCE_CILAB 0x614
435
#define CLK_SOURCE_CILCD 0x618
436
#define CLK_SOURCE_CILEF 0x61c
437
#define CLK_SOURCE_DSIA_LP 0x620
438
#define CLK_SOURCE_DSIB_LP 0x624
439
#define CLK_SOURCE_ENTROPY 0x628
440
#define CLK_SOURCE_DVFS_REF 0x62c
441
#define CLK_SOURCE_DVFS_SOC 0x630
442
#define CLK_SOURCE_EMC_LATENCY 0x640
443
#define CLK_SOURCE_SOC_THERM 0x644
444
#define CLK_SOURCE_DMIC1 0x64c
445
#define CLK_SOURCE_DMIC2 0x650
446
#define CLK_SOURCE_VI_SENSOR2 0x658
447
#define CLK_SOURCE_I2C6 0x65c
448
#define CLK_SOURCE_MIPIBIF 0x660
449
#define CLK_SOURCE_EMC_DLL 0x664
450
#define CLK_SOURCE_UART_FST_MIPI_CAL 0x66c
451
#define CLK_SOURCE_VIC 0x678
452
#define PLLP_OUTC 0x67c
453
#define PLLP_MISC1 0x680
454
#define EMC_DIV_CLK_SHAPER_CTRL 0x68c
455
#define EMC_PLLC_SHAPER_CTRL 0x690
456
#define CLK_SOURCE_SDMMC_LEGACY_TM 0x694
457
#define CLK_SOURCE_NVDEC 0x698
458
#define CLK_SOURCE_NVJPG 0x69c
459
#define CLK_SOURCE_NVENC 0x6a0
460
#define PLLA1_BASE 0x6a4
461
#define PLLA1_MISC_0 0x6a8
462
#define PLLA1_MISC_1 0x6ac
463
#define PLLA1_MISC_2 0x6b0
464
#define PLLA1_MISC_3 0x6b4
465
#define AUDIO_SYNC_CLK_DMIC3 0x6b8
466
#define CLK_SOURCE_DMIC3 0x6bc
467
#define CLK_SOURCE_APE 0x6c0
468
#define CLK_SOURCE_QSPI 0x6c4
469
#define CLK_SOURCE_VI_I2C 0x6c8
470
#define CLK_SOURCE_USB2_HSIC_TRK 0x6cc
471
#define CLK_SOURCE_PEX_SATA_USB_RX_BYP 0x6d0
472
#define CLK_SOURCE_MAUD 0x6d4
473
#define CLK_SOURCE_TSECB 0x6d8
474
#define CLK_CPUG_MISC1 0x6d8
475
#define ACLK_BURST_POLICY 0x6e0
476
#define SUPER_ACLK_DIVIDER 0x6e4
477
#define NVENC_SUPER_CLK_DIVIDER 0x6e8
478
#define VI_SUPER_CLK_DIVIDER 0x6ec
479
#define VIC_SUPER_CLK_DIVIDER 0x6f0
480
#define NVDEC_SUPER_CLK_DIVIDER 0x6f4
481
#define ISP_SUPER_CLK_DIVIDER 0x6f8
482
#define ISPB_SUPER_CLK_DIVIDER 0x6fc
483
484
#define NVJPG_SUPER_CLK_DIVIDER 0x700
485
#define SE_SUPER_CLK_DIVIDER 0x704
486
#define TSEC_SUPER_CLK_DIVIDER 0x708
487
#define TSECB_SUPER_CLK_DIVIDER 0x70c
488
#define CLK_SOURCE_UARTAPE 0x710
489
#define CLK_CPUG_MISC2 0x714
490
#define CLK_SOURCE_DBGAPB 0x718
491
#define CLK_CCPLEX_CC4_RET_CLK_ENB 0x71c
492
#define ACTMON_CPU_CLK 0x720
493
#define CLK_SOURCE_EMC_SAFE 0x724
494
#define SDMMC2_PLLC4_OUT0_SHAPER_CTRL 0x728
495
#define SDMMC2_PLLC4_OUT1_SHAPER_CTRL 0x72c
496
#define SDMMC2_PLLC4_OUT2_SHAPER_CTRL 0x730
497
#define SDMMC2_DIV_CLK_SHAPER_CTRL 0x734
498
#define SDMMC4_PLLC4_OUT0_SHAPER_CTRL 0x738
499
#define SDMMC4_PLLC4_OUT1_SHAPER_CTRL 0x73c
500
#define SDMMC4_PLLC4_OUT2_SHAPER_CTRL 0x740
501
#define SDMMC4_DIV_CLK_SHAPER_CTRL 0x744
502
503
struct tegra210_car_softc {
504
device_t dev;
505
struct resource * mem_res;
506
struct mtx mtx;
507
struct clkdom *clkdom;
508
int type;
509
};
510
511
struct tegra210_init_item {
512
char *name;
513
char *parent;
514
uint64_t frequency;
515
int enable;
516
};
517
518
void tegra210_init_plls(struct tegra210_car_softc *sc);
519
520
void tegra210_periph_clock(struct tegra210_car_softc *sc);
521
void tegra210_super_mux_clock(struct tegra210_car_softc *sc);
522
523
int tegra210_hwreset_by_idx(struct tegra210_car_softc *sc, intptr_t idx,
524
bool reset);
525
526
#endif /*_TEGRA210_CAR_*/
527