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 SPI 
 | 
    select OF_CONTROL 
 | 
    select VIDCONSOLE_AS_LCD if DM_VIDEO 
 | 
    select BOARD_EARLY_INIT_F 
 | 
    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 CPU_V7 
 | 
    select SPL 
 | 
    select SPL_BOARD_INIT if 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 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 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" 
 | 
  
 | 
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. 
 | 
  
 | 
endif 
 |