config BR2_TARGET_UBOOT
	bool "U-Boot"
	help
	  Build "Das U-Boot" Boot Monitor

if BR2_TARGET_UBOOT
config BR2_TARGET_UBOOT_BOARDNAME
	string "U-Boot board name"
	help
	  One of U-Boot supported boards to be built.
	  This will be suffixed with _config to meet U-Boot standard naming.

choice
	prompt "U-Boot Version"
	default BR2_TARGET_UBOOT_2011_12
	help
	  Select the specific U-Boot version you want to use

config BR2_TARGET_UBOOT_2011_12
	bool "2011.12"

config BR2_TARGET_UBOOT_2011_09
	bool "2011.09"

config BR2_TARGET_UBOOT_2011_06
	bool "2011.06"
	depends on BR2_DEPRECATED

config BR2_TARGET_UBOOT_2011_03
	bool "2011.03"
	depends on BR2_DEPRECATED

config BR2_TARGET_UBOOT_CUSTOM_TARBALL
	bool "Custom tarball"

config BR2_TARGET_UBOOT_CUSTOM_GIT
	bool "Custom Git repository"

endchoice

if BR2_TARGET_UBOOT_CUSTOM_TARBALL

config BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION
	string "URL of custom U-Boot tarball"

endif

config BR2_TARGET_UBOOT_VERSION
	string
	default "2011.12"	if BR2_TARGET_UBOOT_2011_12
	default "2011.09"	if BR2_TARGET_UBOOT_2011_09
	default "2011.06"	if BR2_TARGET_UBOOT_2011_06
	default "2011.03"	if BR2_TARGET_UBOOT_2011_03
	default "custom"	if BR2_TARGET_UBOOT_CUSTOM_TARBALL
	default $BR2_TARGET_UBOOT_CUSTOM_GIT_VERSION if BR2_TARGET_UBOOT_CUSTOM_GIT

config BR2_TARGET_UBOOT_CUSTOM_PATCH_DIR
	string "custom patch dir"
	help
	  If your board requires custom patches, add the path to the
	  directory containing the patches here. The patches must be
	  named uboot-<version>-<something>.patch.

	  Most users may leave this empty

if BR2_TARGET_UBOOT_CUSTOM_GIT

config BR2_TARGET_UBOOT_CUSTOM_GIT_REPO_URL
	string "URL of custom Git repository"

config BR2_TARGET_UBOOT_CUSTOM_GIT_VERSION
	string "Custom Git version"

endif

choice
	prompt "U-Boot binary format"

config BR2_TARGET_UBOOT_FORMAT_BIN
	bool "u-boot.bin"

config BR2_TARGET_UBOOT_FORMAT_NAND_BIN
	bool "u-boot-nand.bin"

config BR2_TARGET_UBOOT_FORMAT_SPI_BIN
	bool "u-boot-spi.bin"

config BR2_TARGET_UBOOT_FORMAT_KWB
	depends on BR2_arm
	bool "u-boot.kwb (Marvell)"

config BR2_TARGET_UBOOT_FORMAT_LDR
	depends on BR2_bfin
	bool "u-boot.ldr"

endchoice

menuconfig BR2_TARGET_UBOOT_NETWORK
	bool "Custom Network Settings"
	help
	  Custom network settings for U-boot

if BR2_TARGET_UBOOT_NETWORK

config BR2_TARGET_UBOOT_SERVERIP
	string "server ip"
	default "10.175.196.221"
	help
	  TFTP server ip address

config BR2_TARGET_UBOOT_IPADDR
	string "ip address"
	default "10.175.196.18"
	help
	  Target ip address

config BR2_TARGET_UBOOT_GATEWAY
	string "gateway ip"
	default "10.175.196.1"
	help
	  Gateway ip address

config BR2_TARGET_UBOOT_NETMASK
	string "netmask"
	default "255.255.255.0"
	help
	  Network Mask

config BR2_TARGET_UBOOT_ETHADDR
	string "ethernet address"
	default "04:25:fe:ed:00:18"
	help
	  Target MAC address for the ethernet interface.
	  This should be changed for production units

config BR2_TARGET_UBOOT_ETH1ADDR
	string "ethernet 2 address"
	help
	  Target MAC address for the second ethernet interface.

endif # BR2_TARGET_UBOOT_NETWORK

endif # BR2_TARGET_UBOOT
