if AM33XX

config AM33XX_CHILISOM
	bool
	select SUPPORT_SPL

choice
	prompt "AM33xx board select"

config TARGET_AM335X_EVM
	bool "Support am335x_evm"
	select BOARD_LATE_INIT
	select DM
	select DM_GPIO
	select DM_SERIAL
	select TI_I2C_BOARD_DETECT
	select SUPPORT_EXTENSION_SCAN
	imply CMD_DM
	imply SPL_DM
	imply SPL_DM_SEQ_ALIAS
	imply SPL_ENV_SUPPORT
	imply SPL_FS_EXT4
	imply SPL_FS_FAT
	imply SPL_GPIO
	imply SPL_I2C
	imply SPL_LIBCOMMON_SUPPORT
	imply SPL_LIBDISK_SUPPORT
	imply SPL_LIBGENERIC_SUPPORT
	imply SPL_MMC
	imply SPL_NAND_SUPPORT
	imply SPL_OF_LIBFDT
	imply SPL_POWER
	imply SPL_SEPARATE_BSS
	imply SPL_SERIAL
	imply SPL_SYS_MALLOC_SIMPLE
	imply SPL_WATCHDOG
	imply SPL_YMODEM_SUPPORT
	help
	  This option specifies support for the AM335x
	  GP and HS EVM development platforms. The AM335x
	  GP EVM is a standalone test, development, and
	  evaluation module system that enables developers
	  to write software and develop hardware around
	  an AM335x processor subsystem.

config TARGET_AM335X_BALTOS
	bool "Support am335x_baltos"
	select BOARD_LATE_INIT
	select DM
	select DM_GPIO
	select DM_SERIAL
	imply CMD_DM

config TARGET_AM335X_IGEP003X
	bool "Support am335x_igep003x"
	select BOARD_LATE_INIT
	select DM
	select DM_GPIO
	select DM_SERIAL
	imply CMD_DM

config TARGET_AM335X_SHC
	bool "Support am335x based shc board from bosch"
	select BOARD_LATE_INIT
	select DM
	select DM_GPIO
	select DM_SERIAL
	imply CMD_DM
	imply CMD_SPL

config TARGET_AM335X_GUARDIAN
	bool "Support am335x based guardian board from bosch"
	select BOARD_LATE_INIT
	select DM
	select DM_SERIAL
	select DM_GPIO
	select VIDEO
	select PANEL_HX8238D

config TARGET_AM335X_SL50
	bool "Support am335x_sl50"
	select BOARD_LATE_INIT
	select DM
	select DM_GPIO
	select DM_SERIAL
	imply CMD_DM

config TARGET_BRXRE1
	bool "Support BRXRE1"
	select BOARD_LATE_INIT

config TARGET_BRSMARC1
	bool "Support BRSMARC1"
	select BOARD_LATE_INIT

config TARGET_BRPPT1
	bool "Support BRPPT1"
	select BOARD_LATE_INIT

config TARGET_CHILIBOARD
	bool "Grinn chiliBoard"
	select AM33XX_CHILISOM
	select BOARD_LATE_INIT
	select DM
	select DM_SERIAL
	imply CMD_DM

config TARGET_DRACO
	bool "Support draco"
	select BOARD_LATE_INIT
	select DM
	select DM_GPIO
	select DM_SERIAL
	select FACTORYSET
	imply CMD_DM

config TARGET_ETAMIN
	bool "Support etamin"
	select BOARD_LATE_INIT
	select DM
	select DM_GPIO
	select DM_SERIAL
	select FACTORYSET
	imply CMD_DM

config TARGET_PCM051
	bool "Support pcm051"
	select DM
	select DM_GPIO
	select DM_SERIAL
	imply CMD_DM

config TARGET_PHYCORE_AM335X_R2
	bool "Support phyCORE AM335X R2"
	select DM
	select DM_GPIO
	select DM_SERIAL
	imply CMD_DM

config TARGET_PXM2
	bool "Support pxm2"
	select BOARD_LATE_INIT
	select DM
	select DM_GPIO
	select DM_SERIAL
	select FACTORYSET
	imply CMD_DM

config TARGET_RASTABAN
	bool "Support rastaban"
	select BOARD_LATE_INIT
	select DM
	select DM_GPIO
	select DM_SERIAL
	select FACTORYSET
	imply CMD_DM

config TARGET_RUT
	bool "Support rut"
	select BOARD_LATE_INIT
	select DM
	select DM_GPIO
	select DM_SERIAL
	select FACTORYSET
	imply CMD_DM

config TARGET_THUBAN
	bool "Support thuban"
	select BOARD_LATE_INIT
	select DM
	select DM_GPIO
	select DM_SERIAL
	select FACTORYSET
	imply CMD_DM

config TARGET_PDU001
	bool "Support PDU001"
	select DM
	select DM_SERIAL
	imply SPL_SEPARATE_BSS
	imply CMD_DM
	help
	  Support for PDU001 platform developed by EETS GmbH.
	  The PDU001 is a processor and display unit developed around
	  the Computing-Module m2 from bytes at work AG.

endchoice

config CLOCK_SYNTHESIZER
	bool "CDCE913 and CDCEL913 clock synthesizer support"
	help
	  The CDCE913 and CDCEL913 devices are modular PLL-based, low cost,
	  high performance , programmable clock synthesizers. They generate
	  up to 3 output clocks from a single input frequency. Each output can
	  be programmed for any clock-frequency.

config CLK_SYNTHESIZER_I2C_ADDR
	hex "Clock synthesizer i2c bus address"
	depends on CLOCK_SYNTHESIZER
	default 0x65

endif

if AM43XX

choice
	prompt "AM43xx board select"

config TARGET_AM43XX_EVM
	bool "Support am43xx_evm"
	select BOARD_LATE_INIT
	select TI_I2C_BOARD_DETECT
	imply DM_I2C
	imply DM_SPI
	imply DM_SPI_FLASH
	imply SPL_ENV_SUPPORT
	imply SPL_FS_EXT4
	imply SPL_FS_FAT
	imply SPL_GPIO
	imply SPL_I2C
	imply SPL_LIBCOMMON_SUPPORT
	imply SPL_LIBDISK_SUPPORT
	imply SPL_LIBGENERIC_SUPPORT
	imply SPL_MMC
	imply SPL_NAND_SUPPORT
	imply SPL_POWER
	imply SPL_SERIAL
	imply SPL_WATCHDOG
	imply SPL_YMODEM_SUPPORT
	help
	  This option specifies support for the AM43xx
	  GP and HS EVM development platforms.The AM437x
	  GP EVM is a standalone test, development, and
	  evaluation module system that enables developers
	  to write software and develop hardware around
	  an AM43xx processor subsystem.

config TARGET_CM_T43
	bool "Support cm_t43"

endchoice

config SPL_RTC_DDR_SUPPORT
	bool
	depends on SPL
	prompt "Enable RTC-DDR ONLY Support"
	help
	  If you want RTC-DDR ONLY Support, say Y. RTC Only with DDR in
	  self-refresh mode is a special power saving mode where in all
	  the other voltages are turned off apart from the RTC domain and DDR.
	  So only RTC is alive and ticking and one can program it to wake
	  up after a predetermined period. Once RTC alarm fires, the PMIC
	  powers up all the voltage domains. U-Boot takes a special path
	  as the DDR has contents is in self-refresh and restore path is
	  followed.

endif

if AM43XX || AM33XX
config PUB_ROM_DATA_SIZE
	hex "Size in bytes of the L3 SRAM reserved by ROM to store data"
	default 0x8400
	help
	  During the device boot, the public ROM uses the top of
	  the public L3 OCMC RAM to store r/w data like stack,
	  heap, globals etc. When the ROM is copying the boot
	  image from the boot media into memory, the image must
	  not spill over into this area. This value can be used
	  during compile time to determine the maximum size of a
	  boot image. Once the ROM transfers control to the boot
	  image, this area is no longer used, and can be reclaimed
	  for run time use by the boot image.
endif

config AM335X_USB0
	bool "Static mode configuration for USB0 in SPL"
	depends on AM33XX && SPL_MUSB_NEW && !SPL_OF_CONTROL

choice
	prompt "USB0 port configuration"
	depends on AM335X_USB0

config AM335X_USB0_HOST
	bool "Port is used in host mode"

config AM335X_USB0_PERIPHERAL
	bool "Port is used in peripheral mode"

endchoice

config AM335X_USB1
	bool "Static mode configuration for USB1 in SPL"
	depends on AM33XX && SPL_MUSB_NEW && !SPL_OF_CONTROL

choice
	prompt "USB1 port configuration"
	depends on AM335X_USB1

config AM335X_USB1_HOST
	bool "Port is used in host mode"

config AM335X_USB1_PERIPHERAL
	bool "Port is used in peripheral mode"

endchoice
