blob: 5b0cd92d9e67ef6e86254a1ffe836a7335441bcb (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
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
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
|
if ARCH_TEGRA
config SPL_GPIO
default y
config SPL_LIBCOMMON_SUPPORT
default y
config SPL_LIBGENERIC_SUPPORT
default y
config SPL_SERIAL
default y
config TEGRA_CLKRST
bool
config TEGRA_CRYPTO
bool "Tegra AES128 crypto module"
select AES
default n
config TEGRA_GP_PADCTRL
bool
config TEGRA_IVC
bool "Tegra IVC protocol"
help
IVC (Inter-VM Communication) protocol is a Tegra-specific IPC
(Inter Processor Communication) framework. Within the context of
U-Boot, it is typically used for communication between the main CPU
and various auxiliary processors.
config TEGRA_MC
bool
config TEGRA_PINCTRL
bool
config TEGRA_PMC
bool
config TEGRA_PMC_SECURE
bool
depends on TEGRA_PMC
config TEGRA_COMMON
bool "Tegra common options"
select BOARD_EARLY_INIT_F
select CLK
select DM
select DM_GPIO
select DM_I2C
select DM_KEYBOARD
select DM_MMC
select DM_PWM
select DM_RESET
select DM_SERIAL
select DM_SPI
select DM_SPI_FLASH
select MISC
select OF_CONTROL
select SPI
imply CMD_DM
imply CRC32_VERIFY
config TEGRA_NO_BPMP
bool "Tegra common options for SoCs without BPMP"
select TEGRA_CAR
select TEGRA_CAR_CLOCK
select TEGRA_CAR_RESET
config TEGRA_ARMV7_COMMON
bool "Tegra 32-bit common options"
select BINMAN
select CPU_V7A
select SPL
select SPL_BOARD_INIT if SPL
select SPL_SKIP_LOWLEVEL_INIT_ONLY if SPL
select SUPPORT_SPL
select TIMER
select TEGRA_CLKRST
select TEGRA_COMMON
select TEGRA_GPIO
select TEGRA_GP_PADCTRL
select TEGRA_MC
select TEGRA_NO_BPMP
select TEGRA_PINCTRL
select TEGRA_PMC
select TEGRA_TIMER
config TEGRA_ARMV8_COMMON
bool "Tegra 64-bit common options"
select ARM64
select INIT_SP_RELATIVE
select LINUX_KERNEL_IMAGE_HEADER
select POSITION_INDEPENDENT
select TEGRA_COMMON
if TEGRA_ARMV8_COMMON
config LNX_KRNL_IMG_TEXT_OFFSET_BASE
default 0x80000000
endif
choice
prompt "Tegra SoC select"
optional
config TEGRA20
bool "Tegra20 family"
select ARM_ERRATA_716044
select ARM_ERRATA_742230
select ARM_ERRATA_751472
select TEGRA_ARMV7_COMMON
config TEGRA30
bool "Tegra30 family"
select ARM_ERRATA_743622
select ARM_ERRATA_751472
select TEGRA_ARMV7_COMMON
config TEGRA114
bool "Tegra114 family"
select TEGRA_ARMV7_COMMON
config TEGRA124
bool "Tegra124 family"
select TEGRA_ARMV7_COMMON
imply REGMAP
imply SYSCON
config TEGRA210
bool "Tegra210 family"
select GICV2
select TIMER
select TEGRA_ARMV8_COMMON
select TEGRA_CLKRST
select TEGRA_GPIO
select TEGRA_GP_PADCTRL
select TEGRA_MC
select TEGRA_NO_BPMP
select TEGRA_PINCTRL
select TEGRA_PMC
select TEGRA_PMC_SECURE
select TEGRA_TIMER
config TEGRA186
bool "Tegra186 family"
select DM_MAILBOX
select GICV2
select TEGRA186_BPMP
select TEGRA186_CLOCK
select TEGRA186_GPIO
select TEGRA186_RESET
select TEGRA_ARMV8_COMMON
select TEGRA_HSP
select TEGRA_IVC
endchoice
config TEGRA_DISCONNECT_UDC_ON_BOOT
bool "Disconnect USB device mode controller on boot"
depends on CI_UDC
default y
help
When loading U-Boot into RAM over USB protocols using tools such as
tegrarcm or L4T's exec-uboot.sh/tegraflash.py, Tegra's USB device
mode controller is initialized and enumerated by the host PC running
the tool. Unfortunately, these tools do not shut down the USB
controller before executing the downloaded code, and so the host PC
does not "de-enumerate" the USB device. This option shuts down the
USB controller when U-Boot boots to avoid leaving a stale USB device
present.
config CI_UDC_HAS_HOSTPC
def_bool y
depends on CI_UDC && !TEGRA20
config SYS_MALLOC_F_LEN
default 0x1800
source "arch/arm/mach-tegra/tegra20/Kconfig"
source "arch/arm/mach-tegra/tegra30/Kconfig"
source "arch/arm/mach-tegra/tegra114/Kconfig"
source "arch/arm/mach-tegra/tegra124/Kconfig"
source "arch/arm/mach-tegra/tegra210/Kconfig"
source "arch/arm/mach-tegra/tegra186/Kconfig"
config TEGRA_SPI
def_bool y
depends on TEGRA20_SFLASH || TEGRA20_SLINK || TEGRA114_SPI
choice
prompt "UART to use for console"
depends on TEGRA_PINCTRL
default TEGRA_ENABLE_UARTA
config TEGRA_ENABLE_UARTA
bool "Use UARTA"
config TEGRA_ENABLE_UARTB
bool "Use UARTB"
config TEGRA_ENABLE_UARTC
bool "Use UARTC"
config TEGRA_ENABLE_UARTD
bool "Use UARTD"
endchoice
config TEGRA_GPU
bool "Enable setting up the GPU"
depends on TEGRA124 || TEGRA210
config CMD_ENTERRCM
bool "Enable 'enterrcm' command"
default y
help
Tegra's boot ROM supports a mode whereby code may be downloaded and
flash-programmed over a USB connection. On dev boards, this is
typically entered by holding down a "force recovery" button and
resetting the CPU. However, not all boards have such a button (one
example is the Compulab Trimslice), so a method to enter RCM from
software is useful.
Even on boards other than Trimslice, controlling this over a UART
may be useful, e.g. to allow simple remote control without the need
for mechanical button actuators, or hooking up relays/... to the
button.
endif
|