if OMAP54XX

config DRA7XX
	bool
	help
	  DRA7xx is an OMAP based SOC with Dual Core A-15s.

choice
	prompt "OMAP5 board select"
	optional

config TARGET_CL_SOM_AM57X
	bool "CompuLab CL-SOM-AM57x"
	select DRA7XX

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 DRA7XX
	select TI_I2C_BOARD_DETECT
	select PHYS_64BIT
	imply SCSI
	imply DM_PMIC
	imply PMIC_LP87565
	imply DM_REGULATOR
	imply DM_REGULATOR_LP87565
	imply SPL_THERMAL
	imply DM_THERMAL
	imply TI_DRA7_THERMAL

config TARGET_AM57XX_EVM
	bool "AM57XX"
	select BOARD_LATE_INIT
	select DRA7XX
	select TI_I2C_BOARD_DETECT
	imply SCSI
	imply SPL_THERMAL
	imply DM_THERMAL
	imply TI_DRA7_THERMAL

endchoice

config SYS_SOC
	default "omap5"

config OMAP_PLATFORM_RESET_TIME_MAX_USEC
	int "Something"
	range 0  31219
	default 31219
	help
	  Most OMAPs' provide a way to specify the time for which the reset
	  should be held low while the voltages and Oscillator outputs
	  stabilize.
	  This time is mostly board and PMIC dependent. Hence the boards are
	  expected to specify a pre-computed time using the above option.
	  This value can be computed using a summation of the below 3
	  parameters
	  1: Time taken by the Osciallator to stop and restart
	  2: PMIC OTP time
	  3: Voltage ramp time, which can be derived using the PMIC slew rate
	     and value of voltage ramp needed.

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
