Merge tag 'efi-2020-07-rc6' of https://gitlab.denx.de/u-boot/custodians/u-boot-efi
[oweals/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         select VIDCONSOLE_AS_LCD if DM_VIDEO
62         imply CMD_DM
63         imply CRC32_VERIFY
64
65 config TEGRA_NO_BPMP
66         bool "Tegra common options for SoCs without BPMP"
67         select TEGRA_CAR
68         select TEGRA_CAR_CLOCK
69         select TEGRA_CAR_RESET
70
71 config TEGRA_ARMV7_COMMON
72         bool "Tegra 32-bit common options"
73         select CPU_V7A
74         select SPL
75         select SPL_BOARD_INIT 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
86 config 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
94 if TEGRA_ARMV8_COMMON
95 config LNX_KRNL_IMG_TEXT_OFFSET_BASE
96         default 0x80000000
97 endif
98
99 choice
100         prompt "Tegra SoC select"
101         optional
102
103 config 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
110 config TEGRA30
111         bool "Tegra30 family"
112         select ARM_ERRATA_743622
113         select ARM_ERRATA_751472
114         select TEGRA_ARMV7_COMMON
115
116 config TEGRA114
117         bool "Tegra114 family"
118         select TEGRA_ARMV7_COMMON
119
120 config TEGRA124
121         bool "Tegra124 family"
122         select TEGRA_ARMV7_COMMON
123         imply REGMAP
124         imply SYSCON
125
126 config TEGRA210
127         bool "Tegra210 family"
128         select TEGRA_ARMV8_COMMON
129         select TEGRA_CLKRST
130         select TEGRA_GPIO
131         select TEGRA_GP_PADCTRL
132         select TEGRA_MC
133         select TEGRA_NO_BPMP
134         select TEGRA_PINCTRL
135         select TEGRA_PMC
136         select TEGRA_PMC_SECURE
137
138 config TEGRA186
139         bool "Tegra186 family"
140         select DM_MAILBOX
141         select TEGRA186_BPMP
142         select TEGRA186_CLOCK
143         select TEGRA186_GPIO
144         select TEGRA186_RESET
145         select TEGRA_ARMV8_COMMON
146         select TEGRA_HSP
147         select TEGRA_IVC
148
149 endchoice
150
151 config TEGRA_DISCONNECT_UDC_ON_BOOT
152         bool "Disconnect USB device mode controller on boot"
153         depends on CI_UDC
154         default y
155         help
156           When loading U-Boot into RAM over USB protocols using tools such as
157           tegrarcm or L4T's exec-uboot.sh/tegraflash.py, Tegra's USB device
158           mode controller is initialized and enumerated by the host PC running
159           the tool. Unfortunately, these tools do not shut down the USB
160           controller before executing the downloaded code, and so the host PC
161           does not "de-enumerate" the USB device. This option shuts down the
162           USB controller when U-Boot boots to avoid leaving a stale USB device
163           present.
164
165 config SYS_MALLOC_F_LEN
166         default 0x1800
167
168 source "arch/arm/mach-tegra/tegra20/Kconfig"
169 source "arch/arm/mach-tegra/tegra30/Kconfig"
170 source "arch/arm/mach-tegra/tegra114/Kconfig"
171 source "arch/arm/mach-tegra/tegra124/Kconfig"
172 source "arch/arm/mach-tegra/tegra210/Kconfig"
173 source "arch/arm/mach-tegra/tegra186/Kconfig"
174
175 config CMD_ENTERRCM
176         bool "Enable 'enterrcm' command"
177         default y
178         help
179           Tegra's boot ROM supports a mode whereby code may be downloaded and
180           flash-programmed over a USB connection. On dev boards, this is
181           typically entered by holding down a "force recovery" button and
182           resetting the CPU. However, not all boards have such a button (one
183           example is the Compulab Trimslice), so a method to enter RCM from
184           software is useful.
185
186           Even on boards other than Trimslice, controlling this over a UART
187           may be useful, e.g. to allow simple remote control without the need
188           for mechanical button actuators, or hooking up relays/... to the
189           button.
190
191 endif