if AM33XX

config AM33XX_CHILISOM
	bool
	select SUPPORT_SPL

choice
	prompt "AM33xx board select"
	optional

config TARGET_AM335X_EVM
	bool "Support am335x_evm"
	select BOARD_LATE_INIT
	select DM
	select DM_SERIAL
	select DM_GPIO
	select TI_I2C_BOARD_DETECT
	imply SPL_ENV_SUPPORT
	imply SPL_EXT_SUPPORT
	imply SPL_FAT_SUPPORT
	imply SPL_GPIO_SUPPORT
	imply SPL_I2C_SUPPORT
	imply SPL_LIBCOMMON_SUPPORT
	imply SPL_LIBDISK_SUPPORT
	imply SPL_LIBGENERIC_SUPPORT
	imply SPL_MMC_SUPPORT
	imply SPL_NAND_SUPPORT
	imply SPL_POWER_SUPPORT
	imply SPL_SERIAL_SUPPORT
	imply SPL_WATCHDOG_SUPPORT
	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_SERIAL
	select DM_GPIO

config TARGET_AM335X_IGEP0033
	bool "Support am335x_igep0033"
	select DM
	select DM_SERIAL
	select DM_GPIO

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

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

config TARGET_BAV335X
	bool "Support bav335x"
	select BOARD_LATE_INIT
	select DM
	select DM_SERIAL
	help
	  The BAV335x OEM Network Processor integrates all the functions of an
	  embedded network computer in a small, easy to use SODIMM module which
	  incorporates the popular Texas Instruments Sitara 32bit ARM Coretex-A8
	  processor, with fast DDR3 512MB SDRAM, 4GB of embedded MMC and a Gigabit
	  ethernet with simple connection to external connectors.

	  For more information, visit: http://birdland.com/oem

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

config TARGET_CM_T335
	bool "Support cm_t335"
	select DM
	select DM_SERIAL
	select DM_GPIO

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

config TARGET_PENGWYN
	bool "Support pengwyn"
	select DM
	select DM_SERIAL
	select DM_GPIO

config TARGET_PEPPER
	bool "Support pepper"
	select DM
	select DM_SERIAL
	select DM_GPIO

endchoice

endif

if AM43XX

config TARGET_AM43XX_EVM
	bool "Support am43xx_evm"
	select BOARD_LATE_INIT
	select TI_I2C_BOARD_DETECT
	imply DM_ETH
	imply DM_I2C
	imply DM_SPI
	imply DM_SPI_FLASH
	imply SPI_FLASH_BAR
	imply SPL_ENV_SUPPORT
	imply SPL_EXT_SUPPORT
	imply SPL_FAT_SUPPORT
	imply SPL_GPIO_SUPPORT
	imply SPL_I2C_SUPPORT
	imply SPL_LIBCOMMON_SUPPORT
	imply SPL_LIBDISK_SUPPORT
	imply SPL_LIBGENERIC_SUPPORT
	imply SPL_MMC_SUPPORT
	imply SPL_NAND_SUPPORT
	imply SPL_POWER_SUPPORT
	imply SPL_SERIAL_SUPPORT
	imply SPL_WATCHDOG_SUPPORT
	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.
endif

if AM43XX || AM33XX
config ISW_ENTRY_ADDR
	hex "Address in memory or XIP flash of bootloader entry point"
	help
	  After any reset, the boot ROM on the AM43XX SOC
	  searches the boot media for a valid boot image.
	  For non-XIP devices, the ROM then copies the
	  image into internal memory.
	  For all boot modes, after the ROM processes the
	  boot image it eventually computes the entry
	  point address depending on the device type
	  (secure/non-secure), boot media (xip/non-xip) and
	  image headers.
	default 0x402F4000 if AM43XX
	default 0x402F0400 if AM33XX

config PUB_ROM_DATA_SIZE
	hex "Size in bytes of the L3 SRAM reserved by ROM to store data"
	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.
	default 0x8400
endif
