if ARCH_TEGRA

comment "NVIDIA Tegra options"

choice
	prompt "Select Tegra processor family for target system"

config ARCH_TEGRA_2x_SOC
	bool "Tegra 2 family"
	select CPU_V7
	select ARM_GIC
	select ARCH_REQUIRE_GPIOLIB
	select USB_ARCH_HAS_EHCI if USB_SUPPORT
	select USB_ULPI if USB_SUPPORT
	select USB_ULPI_VIEWPORT if USB_SUPPORT
	help
	  Support for NVIDIA Tegra AP20 and T20 processors, based on the
	  ARM CortexA9MP CPU and the ARM PL310 L2 cache controller

endchoice

config TEGRA_PCI
	bool "PCI Express support"
	depends on ARCH_TEGRA_2x_SOC
	select PCI

comment "Tegra board type"

config MACH_HARMONY
       bool "Harmony board"
       depends on ARCH_TEGRA_2x_SOC
       select MACH_HAS_SND_SOC_TEGRA_WM8903 if SND_SOC
       help
         Support for nVidia Harmony development platform

config MACH_KAEN
       bool "Kaen board"
       depends on ARCH_TEGRA_2x_SOC
       select MACH_SEABOARD
       select MACH_HAS_SND_SOC_TEGRA_WM8903 if SND_SOC
       help
         Support for the Kaen version of Seaboard

config MACH_PAZ00
       bool "Paz00 board"
       depends on ARCH_TEGRA_2x_SOC
       help
         Support for the Toshiba AC100/Dynabook AZ netbook

config MACH_SEABOARD
       bool "Seaboard board"
       depends on ARCH_TEGRA_2x_SOC
       select MACH_HAS_SND_SOC_TEGRA_WM8903 if SND_SOC
       help
         Support for nVidia Seaboard development platform. It will
	 also be included for some of the derivative boards that
	 have large similarities with the seaboard design.

config MACH_TEGRA_DT
	bool "Generic Tegra board (FDT support)"
	select USE_OF
	help
	  Support for generic nVidia Tegra boards using Flattened Device Tree

config MACH_TRIMSLICE
       bool "TrimSlice board"
       depends on ARCH_TEGRA_2x_SOC
       select TEGRA_PCI
       help
         Support for CompuLab TrimSlice platform

config MACH_WARIO
       bool "Wario board"
       depends on ARCH_TEGRA_2x_SOC
       select MACH_SEABOARD
       help
         Support for the Wario version of Seaboard

config MACH_VENTANA
       bool "Ventana board"
       depends on ARCH_TEGRA_2x_SOC
       select MACH_TEGRA_DT
       help
         Support for the nVidia Ventana development platform

choice
        prompt "Low-level debug console UART"
        default TEGRA_DEBUG_UART_NONE

config TEGRA_DEBUG_UART_NONE
        bool "None"

config TEGRA_DEBUG_UARTA
        bool "UART-A"

config TEGRA_DEBUG_UARTB
        bool "UART-B"

config TEGRA_DEBUG_UARTC
        bool "UART-C"

config TEGRA_DEBUG_UARTD
        bool "UART-D"

config TEGRA_DEBUG_UARTE
        bool "UART-E"

endchoice

config TEGRA_SYSTEM_DMA
	bool "Enable system DMA driver for NVIDIA Tegra SoCs"
	default y
	help
	  Adds system DMA functionality for NVIDIA Tegra SoCs, used by
	  several Tegra device drivers

config TEGRA_EMC_SCALING_ENABLE
	bool "Enable scaling the memory frequency"

endif
