if OMAP34XX

# We only enable the clocks for the GPIO banks that a given board requies.
config OMAP3_GPIO_2
	bool
	default y if CMD_GPIO

config OMAP3_GPIO_3
	bool
	default y if CMD_GPIO

config OMAP3_GPIO_4
	bool
	default y if CMD_GPIO

config OMAP3_GPIO_5
	bool
	default y if CMD_GPIO

config OMAP3_GPIO_6
	bool
	default y if CMD_GPIO

choice
	prompt "OMAP3 board select"
	optional

config TARGET_AM3517_EVM
	bool "AM3517 EVM"
	select DM
	select DM_GPIO
	select DM_I2C
	select DM_MMC
	select DM_SERIAL
	imply CMD_DM

config TARGET_OMAP3_BEAGLE
	bool "TI OMAP3 BeagleBoard"
	select DM
	select DM_GPIO
	select DM_SERIAL
	select OMAP3_GPIO_5
	select OMAP3_GPIO_6
	imply CMD_DM

config TARGET_CM_T35
	bool "CompuLab CM-T3530 and CM-T3730 boards"
	select OMAP3_GPIO_2
	select OMAP3_GPIO_5
	select OMAP3_GPIO_6 if LED_STATUS

config TARGET_DEVKIT8000
	bool "TimLL OMAP3 Devkit8000"
	select DM
	select DM_GPIO
	select DM_SERIAL
	imply CMD_DM

config TARGET_OMAP3_EVM
	bool "TI OMAP3 EVM"
	select DM
	select DM_GPIO
	select DM_SERIAL
	select OMAP3_GPIO_2
	select OMAP3_GPIO_3
	select OMAP3_GPIO_5
	select OMAP3_GPIO_6
	imply CMD_DM

config TARGET_OMAP3_IGEP00X0
	bool "IGEP"
	select DM
	select DM_GPIO
	select DM_SERIAL
	select OMAP3_GPIO_3
	select OMAP3_GPIO_5
	select OMAP3_GPIO_6
	imply CMD_DM

config TARGET_OMAP3_OVERO
	bool "OMAP35xx Gumstix Overo"
	select DM
	select DM_GPIO
	select DM_SERIAL
	select OMAP3_GPIO_2
	select OMAP3_GPIO_3
	select OMAP3_GPIO_4
	select OMAP3_GPIO_5
	select OMAP3_GPIO_6
	imply CMD_DM

config TARGET_OMAP3_PANDORA
	bool "OMAP3 Pandora"
	select OMAP3_GPIO_4
	select OMAP3_GPIO_6

config TARGET_OMAP3_LOGIC
	bool "OMAP3 Logic"
	select BOARD_LATE_INIT
	select DM
	select DM_GPIO
	select DM_SERIAL
	select OMAP3_GPIO_3
	select OMAP3_GPIO_4
	select OMAP3_GPIO_6
	imply CMD_DM

config TARGET_NOKIA_RX51
	bool "Nokia RX51"
	select POSITION_INDEPENDENT
	select SKIP_LOWLEVEL_INIT
	select SUPPORT_PASSING_ATAGS
	select CMDLINE_TAG
	select INITRD_TAG
	select REVISION_TAG

config TARGET_TAO3530
	bool "TAO3530"
	select OMAP3_GPIO_2
	select OMAP3_GPIO_3
	select OMAP3_GPIO_4
	select OMAP3_GPIO_5
	select OMAP3_GPIO_6

config TARGET_SNIPER
	bool "LG Optimus Black"
	select DM
	select DM_GPIO
	select DM_SERIAL
	select OMAP3_GPIO_2
	select OMAP3_GPIO_3
	select OMAP3_GPIO_4
	select OMAP3_GPIO_5
	select OMAP3_GPIO_6
	imply CMD_DM

endchoice

choice
	prompt "Memory Controller"
	default SDRC

config SDRC
	bool "SDRC controller"
	help
	  The default memory controller on most OMAP3 boards is SDRC.

config EMIF4
	bool "EMIF4 controller"
	help
	  Enable this on boards like AM3517 which use EMIF4 controller
endchoice

config SPL_OMAP3_ID_NAND
	bool "Support OMAP3-specific ID and MFR function"
	help
	  Support for an OMAP3-specific set of functions to return the
	  ID and MFR of the first attached NAND chip, if present.

config SYS_SOC
	default "omap3"

source "board/logicpd/am3517evm/Kconfig"
source "board/ti/beagle/Kconfig"
source "board/timll/devkit8000/Kconfig"
source "board/ti/omap3evm/Kconfig"
source "board/isee/igep00x0/Kconfig"
source "board/logicpd/omap3som/Kconfig"
source "board/nokia/rx51/Kconfig"
source "board/lg/sniper/Kconfig"

endif
