1if ARCH_TEGRA
2
3config SPL_GPIO
4	default y
5
6config SPL_LIBCOMMON_SUPPORT
7	default y
8
9config SPL_LIBGENERIC_SUPPORT
10	default y
11
12config SPL_SERIAL
13	default y
14
15config TEGRA_CLKRST
16	bool
17
18config TEGRA_GP_PADCTRL
19	bool
20
21config TEGRA_IVC
22	bool "Tegra IVC protocol"
23	help
24	  IVC (Inter-VM Communication) protocol is a Tegra-specific IPC
25	  (Inter Processor Communication) framework. Within the context of
26	  U-Boot, it is typically used for communication between the main CPU
27	  and various auxiliary processors.
28
29config TEGRA_MC
30	bool
31
32config TEGRA_PINCTRL
33	bool
34
35config TEGRA_PMC
36	bool
37
38config TEGRA_PMC_SECURE
39	bool
40	depends on TEGRA_PMC
41
42config TEGRA_COMMON
43	bool "Tegra common options"
44	select BOARD_EARLY_INIT_F
45	select CLK
46	select DM
47	select DM_ETH
48	select DM_GPIO
49	select DM_I2C
50	select DM_KEYBOARD
51	select DM_MMC
52	select DM_PWM
53	select DM_RESET
54	select DM_SERIAL
55	select DM_SPI
56	select DM_SPI_FLASH
57	select MISC
58	select OF_CONTROL
59	select SPI
60	imply CMD_DM
61	imply CRC32_VERIFY
62
63config TEGRA_NO_BPMP
64	bool "Tegra common options for SoCs without BPMP"
65	select TEGRA_CAR
66	select TEGRA_CAR_CLOCK
67	select TEGRA_CAR_RESET
68
69config TEGRA_ARMV7_COMMON
70	bool "Tegra 32-bit common options"
71	select BINMAN
72	select CPU_V7A
73	select SPL
74	select SPL_BOARD_INIT if SPL
75	select SPL_SKIP_LOWLEVEL_INIT_ONLY if SPL
76	select SUPPORT_SPL
77	select TEGRA_CLKRST
78	select TEGRA_COMMON
79	select TEGRA_GPIO
80	select TEGRA_GP_PADCTRL
81	select TEGRA_MC
82	select TEGRA_NO_BPMP
83	select TEGRA_PINCTRL
84	select TEGRA_PMC
85
86config TEGRA_ARMV8_COMMON
87	bool "Tegra 64-bit common options"
88	select ARM64
89	select INIT_SP_RELATIVE
90	select LINUX_KERNEL_IMAGE_HEADER
91	select POSITION_INDEPENDENT
92	select TEGRA_COMMON
93
94if TEGRA_ARMV8_COMMON
95config LNX_KRNL_IMG_TEXT_OFFSET_BASE
96	default 0x80000000
97endif
98
99choice
100	prompt "Tegra SoC select"
101	optional
102
103config TEGRA20
104	bool "Tegra20 family"
105	select ARM_ERRATA_716044
106	select ARM_ERRATA_742230
107	select ARM_ERRATA_751472
108	select TEGRA_ARMV7_COMMON
109
110config TEGRA30
111	bool "Tegra30 family"
112	select ARM_ERRATA_743622
113	select ARM_ERRATA_751472
114	select TEGRA_ARMV7_COMMON
115
116config TEGRA114
117	bool "Tegra114 family"
118	select TEGRA_ARMV7_COMMON
119
120config TEGRA124
121	bool "Tegra124 family"
122	select TEGRA_ARMV7_COMMON
123	imply REGMAP
124	imply SYSCON
125
126config TEGRA210
127	bool "Tegra210 family"
128	select GICV2
129	select TEGRA_ARMV8_COMMON
130	select TEGRA_CLKRST
131	select TEGRA_GPIO
132	select TEGRA_GP_PADCTRL
133	select TEGRA_MC
134	select TEGRA_NO_BPMP
135	select TEGRA_PINCTRL
136	select TEGRA_PMC
137	select TEGRA_PMC_SECURE
138
139config TEGRA186
140	bool "Tegra186 family"
141	select DM_MAILBOX
142	select GICV2
143	select TEGRA186_BPMP
144	select TEGRA186_CLOCK
145	select TEGRA186_GPIO
146	select TEGRA186_RESET
147	select TEGRA_ARMV8_COMMON
148	select TEGRA_HSP
149	select TEGRA_IVC
150
151endchoice
152
153config TEGRA_DISCONNECT_UDC_ON_BOOT
154	bool "Disconnect USB device mode controller on boot"
155	depends on CI_UDC
156	default y
157	help
158	  When loading U-Boot into RAM over USB protocols using tools such as
159	  tegrarcm or L4T's exec-uboot.sh/tegraflash.py, Tegra's USB device
160	  mode controller is initialized and enumerated by the host PC running
161	  the tool. Unfortunately, these tools do not shut down the USB
162	  controller before executing the downloaded code, and so the host PC
163	  does not "de-enumerate" the USB device. This option shuts down the
164	  USB controller when U-Boot boots to avoid leaving a stale USB device
165	  present.
166
167config SYS_MALLOC_F_LEN
168	default 0x1800
169
170source "arch/arm/mach-tegra/tegra20/Kconfig"
171source "arch/arm/mach-tegra/tegra30/Kconfig"
172source "arch/arm/mach-tegra/tegra114/Kconfig"
173source "arch/arm/mach-tegra/tegra124/Kconfig"
174source "arch/arm/mach-tegra/tegra210/Kconfig"
175source "arch/arm/mach-tegra/tegra186/Kconfig"
176
177config CMD_ENTERRCM
178	bool "Enable 'enterrcm' command"
179	default y
180	help
181	  Tegra's boot ROM supports a mode whereby code may be downloaded and
182	  flash-programmed over a USB connection. On dev boards, this is
183	  typically entered by holding down a "force recovery" button and
184	  resetting the CPU. However, not all boards have such a button (one
185	  example is the Compulab Trimslice), so a method to enter RCM from
186	  software is useful.
187
188	  Even on boards other than Trimslice, controlling this over a UART
189	  may be useful, e.g. to allow simple remote control without the need
190	  for mechanical button actuators, or hooking up relays/... to the
191	  button.
192
193endif
194