if TEGRA

config SPL_GPIO_SUPPORT
	default y

config SPL_LIBCOMMON_SUPPORT
	default y

config SPL_LIBGENERIC_SUPPORT
	default y

config SPL_SERIAL_SUPPORT
	default y

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_COMMON
	bool "Tegra common options"
	select CLK
	select DM
	select DM_ETH
	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 VIDCONSOLE_AS_LCD if DM_VIDEO

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 CPU_V7
	select SPL
	select SUPPORT_SPL
	select TEGRA_COMMON
	select TEGRA_GPIO
	select TEGRA_NO_BPMP

config TEGRA_ARMV8_COMMON
	bool "Tegra 64-bit common options"
	select ARM64
	select TEGRA_COMMON

choice
	prompt "Tegra SoC select"
	optional

config TEGRA20
	bool "Tegra20 family"
	select TEGRA_ARMV7_COMMON

config TEGRA30
	bool "Tegra30 family"
	select TEGRA_ARMV7_COMMON

config TEGRA114
	bool "Tegra114 family"
	select TEGRA_ARMV7_COMMON

config TEGRA124
	bool "Tegra124 family"
	select TEGRA_ARMV7_COMMON

config TEGRA210
	bool "Tegra210 family"
	select TEGRA_GPIO
	select TEGRA_ARMV8_COMMON
	select TEGRA_NO_BPMP

config TEGRA186
	bool "Tegra186 family"
	select DM_MAILBOX
	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"
	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 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"

endif
