if ARCH_TEGRA

config SPL_GPIO
	default y

config SPL_LIBCOMMON_SUPPORT
	default y

config SPL_LIBGENERIC_SUPPORT
	default y

config SPL_SERIAL
	default y

config TEGRA_CLKRST
	bool

config TEGRA_CRYPTO
	bool "Tegra AES128 crypto module"
	select AES
	default n

config TEGRA_GP_PADCTRL
	bool

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_MC
	bool

config TEGRA_PINCTRL
	bool

config TEGRA_PMC
	bool

config TEGRA_PMC_SECURE
	bool
	depends on TEGRA_PMC

config TEGRA_COMMON
	bool "Tegra common options"
	select BOARD_EARLY_INIT_F
	select CLK
	select DM
	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 SPI
	imply CMD_DM
	imply CRC32_VERIFY

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 BINMAN
	select CPU_V7A
	select SPL
	select SPL_BOARD_INIT if SPL
	select SPL_SKIP_LOWLEVEL_INIT_ONLY if SPL
	select SUPPORT_SPL
	select TIMER
	select TEGRA_CLKRST
	select TEGRA_COMMON
	select TEGRA_GPIO
	select TEGRA_GP_PADCTRL
	select TEGRA_MC
	select TEGRA_NO_BPMP
	select TEGRA_PINCTRL
	select TEGRA_PMC
	select TEGRA_TIMER

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

if TEGRA_ARMV8_COMMON
config LNX_KRNL_IMG_TEXT_OFFSET_BASE
	default 0x80000000
endif

choice
	prompt "Tegra SoC select"
	optional

config TEGRA20
	bool "Tegra20 family"
	select ARM_ERRATA_716044
	select ARM_ERRATA_742230
	select ARM_ERRATA_751472
	select TEGRA_ARMV7_COMMON

config TEGRA30
	bool "Tegra30 family"
	select ARM_ERRATA_743622
	select ARM_ERRATA_751472
	select TEGRA_ARMV7_COMMON

config TEGRA114
	bool "Tegra114 family"
	select TEGRA_ARMV7_COMMON

config TEGRA124
	bool "Tegra124 family"
	select TEGRA_ARMV7_COMMON
	imply REGMAP
	imply SYSCON

config TEGRA210
	bool "Tegra210 family"
	select GICV2
	select TIMER
	select TEGRA_ARMV8_COMMON
	select TEGRA_CLKRST
	select TEGRA_GPIO
	select TEGRA_GP_PADCTRL
	select TEGRA_MC
	select TEGRA_NO_BPMP
	select TEGRA_PINCTRL
	select TEGRA_PMC
	select TEGRA_PMC_SECURE
	select TEGRA_TIMER

config TEGRA186
	bool "Tegra186 family"
	select DM_MAILBOX
	select GICV2
	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"
	depends on CI_UDC
	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 CI_UDC_HAS_HOSTPC
	def_bool y
	depends on CI_UDC && !TEGRA20

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"

config TEGRA_SPI
	def_bool y
	depends on TEGRA20_SFLASH || TEGRA20_SLINK || TEGRA114_SPI

choice
	prompt "UART to use for console"
	depends on TEGRA_PINCTRL
	default TEGRA_ENABLE_UARTA

config TEGRA_ENABLE_UARTA
	bool "Use UARTA"

config TEGRA_ENABLE_UARTB
	bool "Use UARTB"

config TEGRA_ENABLE_UARTC
	bool "Use UARTC"

config TEGRA_ENABLE_UARTD
	bool "Use UARTD"

endchoice

config TEGRA_GPU
	bool "Enable setting up the GPU"
	depends on TEGRA124 || TEGRA210

config CMD_ENTERRCM
	bool "Enable 'enterrcm' command"
	default y
	help
	  Tegra's boot ROM supports a mode whereby code may be downloaded and
	  flash-programmed over a USB connection. On dev boards, this is
	  typically entered by holding down a "force recovery" button and
	  resetting the CPU. However, not all boards have such a button (one
	  example is the Compulab Trimslice), so a method to enter RCM from
	  software is useful.

	  Even on boards other than Trimslice, controlling this over a UART
	  may be useful, e.g. to allow simple remote control without the need
	  for mechanical button actuators, or hooking up relays/... to the
	  button.

config CMD_EBTUPDATE
	bool "Enable 'ebtupdate' command"
	depends on TEGRA20 || TEGRA30
	select TEGRA_CRYPTO
	help
	  Updating u-boot from within u-boot in rather complex or even
	  impossible on production devices. To make it easier procedure of
	  re-cryption was created. If your device was re-crypted choose Y.

endif
