if OMAP54XX

config SPL_EXT_SUPPORT
	default y

config SPL_FAT_SUPPORT
	default y

config SPL_GPIO_SUPPORT
	default y

config SPL_I2C_SUPPORT
	default y

config SPL_LIBCOMMON_SUPPORT
	default y

config SPL_LIBDISK_SUPPORT
	default y

config SPL_LIBGENERIC_SUPPORT
	default y

config SPL_MMC_SUPPORT
	default y

config SPL_NAND_SUPPORT
	default y

config SPL_POWER_SUPPORT
	default y

config SPL_SERIAL_SUPPORT
	default y

config SPL_DISPLAY_PRINT
	default y

choice
	prompt "OMAP5 board select"
	optional

config TARGET_CL_SOM_AM57X
	bool "CompuLab CL-SOM-AM57x"

config TARGET_CM_T54
	bool "CompuLab CM-T54"

config TARGET_OMAP5_UEVM
	bool "TI OMAP5 uEVM board"

config TARGET_DRA7XX_EVM
	bool "TI DRA7XX"
	select BOARD_LATE_INIT
	select TI_I2C_BOARD_DETECT
	select PHYS_64BIT

config TARGET_AM57XX_EVM
	bool "AM57XX"
	select BOARD_LATE_INIT
	select TI_I2C_BOARD_DETECT

endchoice

config SYS_SOC
	default "omap5"

config TI_SECURE_EMIF_REGION_START
	hex "Reserved EMIF region start address"
	depends on TI_SECURE_DEVICE
	default 0x0
	help
	  Reserved EMIF region start address. Set to "0" to auto-select
	  to be at the end of the external memory region.

config TI_SECURE_EMIF_TOTAL_REGION_SIZE
	hex "Reserved EMIF region size"
	depends on TI_SECURE_DEVICE
	default 0x0
	help
	  Total reserved EMIF region size. Default is 0, which means no reserved EMIF
	  region on secure devices.

config TI_SECURE_EMIF_PROTECTED_REGION_SIZE
	hex "Size of protected region within reserved EMIF region"
	depends on TI_SECURE_DEVICE
	default 0x0
	help
	  This config option is used to specify the size of the portion of the total
	  reserved EMIF region set aside for secure OS needs that will  be protected
	  using hardware memory firewalls. This value must be smaller than the
	  TI_SECURE_EMIF_TOTAL_REGION_SIZE value.

if TARGET_DRA7XX_EVM || TARGET_AM57XX_EVM
menu "Voltage Domain OPP selections"

choice
	prompt "MPU Voltage Domain"
	default DRA7_MPU_OPP_NOM
        help
	  Select the Operating Performance Point(OPP) for the MPU voltage
	  domain on DRA7xx & AM57xx SoCs.

config DRA7_MPU_OPP_NOM
	bool "OPP NOM"
	help
	  This config option enables Normal OPP for MPU. This is the safest
	  option for booting.

endchoice

choice
	prompt "DSPEVE Voltage Domain"
        help
	  Select the Operating Performance Point(OPP) for the DSPEVE voltage
	  domain on DRA7xx & AM57xx SoCs.

config DRA7_DSPEVE_OPP_NOM
	bool "OPP NOM"
	help
	  This config option enables Normal OPP for DSPEVE. This is the safest
	  option for booting and choose this when unsure about other OPPs .

config DRA7_DSPEVE_OPP_OD
	bool "OPP OD"
	help
	  This config option enables Over drive OPP for DSPEVE.

config DRA7_DSPEVE_OPP_HIGH
	bool "OPP HIGH"
	help
	  This config option enables High OPP for DSPEVE.

endchoice

choice
	prompt "IVA Voltage Domain"
        help
	  Select the Operating Performance Point(OPP) for the IVA voltage
	  domain on DRA7xx & AM57xx SoCs.

config DRA7_IVA_OPP_NOM
	bool "OPP NOM"
	help
	  This config option enables Normal OPP for IVA. This is the safest
	  option for booting and choose this when unsure about other OPPs .

config DRA7_IVA_OPP_OD
	bool "OPP OD"
	help
	  This config option enables Over drive OPP for IVA.

config DRA7_IVA_OPP_HIGH
	bool "OPP HIGH"
	help
	  This config option enables High OPP for IVA.

endchoice

choice
	prompt "GPU Voltage Domain"
        help
	  Select the Operating Performance Point(OPP) for the GPU voltage
	  domain on DRA7xx & AM57xx SoCs.

config DRA7_GPU_OPP_NOM
	bool "OPP NOM"
	help
	  This config option enables Normal OPP for GPU. This is the safest
	  option for booting and choose this when unsure about other OPPs .

config DRA7_GPU_OPP_OD
	bool "OPP OD"
	help
	  This config option enables Over drive OPP for GPU.

config DRA7_GPU_OPP_HIGH
	bool "OPP HIGH"
	help
	  This config option enables High OPP for GPU.

endchoice

endmenu
endif

source "board/compulab/cl-som-am57x/Kconfig"
source "board/compulab/cm_t54/Kconfig"
source "board/ti/omap5_uevm/Kconfig"
source "board/ti/dra7xx/Kconfig"
source "board/ti/am57xx/Kconfig"

endif
