Merge https://gitlab.denx.de/u-boot/custodians/u-boot-spi into next
[platform/kernel/u-boot.git] / arch / arm / mach-tegra / Kconfig
1 if ARCH_TEGRA
2
3 config SPL_GPIO_SUPPORT
4         default y
5
6 config SPL_LIBCOMMON_SUPPORT
7         default y
8
9 config SPL_LIBGENERIC_SUPPORT
10         default y
11
12 config SPL_SERIAL_SUPPORT
13         default y
14
15 config TEGRA_CLKRST
16         bool
17
18 config TEGRA_GP_PADCTRL
19         bool
20
21 config 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
29 config TEGRA_MC
30         bool
31
32 config TEGRA_PINCTRL
33         bool
34
35 config TEGRA_PMC
36         bool
37
38 config TEGRA_PMC_SECURE
39         bool
40         depends on TEGRA_PMC
41
42 config TEGRA_COMMON
43         bool "Tegra common options"
44         select BINMAN
45         select BOARD_EARLY_INIT_F
46         select CLK
47         select DM
48         select DM_ETH
49         select DM_GPIO
50         select DM_I2C
51         select DM_KEYBOARD
52         select DM_MMC
53         select DM_PWM
54         select DM_RESET
55         select DM_SERIAL
56         select DM_SPI
57         select DM_SPI_FLASH
58         select MISC
59         select OF_CONTROL
60         select SPI
61         imply CMD_DM
62         imply CRC32_VERIFY
63
64 config TEGRA_NO_BPMP
65         bool "Tegra common options for SoCs without BPMP"
66         select TEGRA_CAR
67         select TEGRA_CAR_CLOCK
68         select TEGRA_CAR_RESET
69
70 config TEGRA_ARMV7_COMMON
71         bool "Tegra 32-bit common options"
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
85 config 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
93 if TEGRA_ARMV8_COMMON
94 config LNX_KRNL_IMG_TEXT_OFFSET_BASE
95         default 0x80000000
96 endif
97
98 choice
99         prompt "Tegra SoC select"
100         optional
101
102 config 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
109 config TEGRA30
110         bool "Tegra30 family"
111         select ARM_ERRATA_743622
112         select ARM_ERRATA_751472
113         select TEGRA_ARMV7_COMMON
114
115 config TEGRA114
116         bool "Tegra114 family"
117         select TEGRA_ARMV7_COMMON
118
119 config TEGRA124
120         bool "Tegra124 family"
121         select TEGRA_ARMV7_COMMON
122         imply REGMAP
123         imply SYSCON
124
125 config 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
137 config 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
148 endchoice
149
150 config 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
164 config SYS_MALLOC_F_LEN
165         default 0x1800
166
167 source "arch/arm/mach-tegra/tegra20/Kconfig"
168 source "arch/arm/mach-tegra/tegra30/Kconfig"
169 source "arch/arm/mach-tegra/tegra114/Kconfig"
170 source "arch/arm/mach-tegra/tegra124/Kconfig"
171 source "arch/arm/mach-tegra/tegra210/Kconfig"
172 source "arch/arm/mach-tegra/tegra186/Kconfig"
173
174 config 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
190 endif