1if ARCH_TEGRA
2
3config SPL_GPIO_SUPPORT
4	default y
5
6config SPL_LIBCOMMON_SUPPORT
7	default y
8
9config SPL_LIBGENERIC_SUPPORT
10	default y
11
12config SPL_SERIAL_SUPPORT
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 SUPPORT_SPL
76	select TEGRA_CLKRST
77	select TEGRA_COMMON
78	select TEGRA_GPIO
79	select TEGRA_GP_PADCTRL
80	select TEGRA_MC
81	select TEGRA_NO_BPMP
82	select TEGRA_PINCTRL
83	select TEGRA_PMC
84
85config TEGRA_ARMV8_COMMON
86	bool "Tegra 64-bit common options"
87	select ARM64
88	select INIT_SP_RELATIVE
89	select LINUX_KERNEL_IMAGE_HEADER
90	select POSITION_INDEPENDENT
91	select TEGRA_COMMON
92
93if TEGRA_ARMV8_COMMON
94config LNX_KRNL_IMG_TEXT_OFFSET_BASE
95	default 0x80000000
96endif
97
98choice
99	prompt "Tegra SoC select"
100	optional
101
102config TEGRA20
103	bool "Tegra20 family"
104	select ARM_ERRATA_716044
105	select ARM_ERRATA_742230
106	select ARM_ERRATA_751472
107	select TEGRA_ARMV7_COMMON
108
109config TEGRA30
110	bool "Tegra30 family"
111	select ARM_ERRATA_743622
112	select ARM_ERRATA_751472
113	select TEGRA_ARMV7_COMMON
114
115config TEGRA114
116	bool "Tegra114 family"
117	select TEGRA_ARMV7_COMMON
118
119config TEGRA124
120	bool "Tegra124 family"
121	select TEGRA_ARMV7_COMMON
122	imply REGMAP
123	imply SYSCON
124
125config TEGRA210
126	bool "Tegra210 family"
127	select TEGRA_ARMV8_COMMON
128	select TEGRA_CLKRST
129	select TEGRA_GPIO
130	select TEGRA_GP_PADCTRL
131	select TEGRA_MC
132	select TEGRA_NO_BPMP
133	select TEGRA_PINCTRL
134	select TEGRA_PMC
135	select TEGRA_PMC_SECURE
136
137config TEGRA186
138	bool "Tegra186 family"
139	select DM_MAILBOX
140	select TEGRA186_BPMP
141	select TEGRA186_CLOCK
142	select TEGRA186_GPIO
143	select TEGRA186_RESET
144	select TEGRA_ARMV8_COMMON
145	select TEGRA_HSP
146	select TEGRA_IVC
147
148endchoice
149
150config TEGRA_DISCONNECT_UDC_ON_BOOT
151	bool "Disconnect USB device mode controller on boot"
152	depends on CI_UDC
153	default y
154	help
155	  When loading U-Boot into RAM over USB protocols using tools such as
156	  tegrarcm or L4T's exec-uboot.sh/tegraflash.py, Tegra's USB device
157	  mode controller is initialized and enumerated by the host PC running
158	  the tool. Unfortunately, these tools do not shut down the USB
159	  controller before executing the downloaded code, and so the host PC
160	  does not "de-enumerate" the USB device. This option shuts down the
161	  USB controller when U-Boot boots to avoid leaving a stale USB device
162	  present.
163
164config SYS_MALLOC_F_LEN
165	default 0x1800
166
167source "arch/arm/mach-tegra/tegra20/Kconfig"
168source "arch/arm/mach-tegra/tegra30/Kconfig"
169source "arch/arm/mach-tegra/tegra114/Kconfig"
170source "arch/arm/mach-tegra/tegra124/Kconfig"
171source "arch/arm/mach-tegra/tegra210/Kconfig"
172source "arch/arm/mach-tegra/tegra186/Kconfig"
173
174config CMD_ENTERRCM
175	bool "Enable 'enterrcm' command"
176	default y
177	help
178	  Tegra's boot ROM supports a mode whereby code may be downloaded and
179	  flash-programmed over a USB connection. On dev boards, this is
180	  typically entered by holding down a "force recovery" button and
181	  resetting the CPU. However, not all boards have such a button (one
182	  example is the Compulab Trimslice), so a method to enter RCM from
183	  software is useful.
184
185	  Even on boards other than Trimslice, controlling this over a UART
186	  may be useful, e.g. to allow simple remote control without the need
187	  for mechanical button actuators, or hooking up relays/... to the
188	  button.
189
190endif
191