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.

config BR2_TARGET_UBOOT_FWPRINTENV
  bool "fw_printenv"
  help
    Determines whether u-boot should attempt ot build the fw_printenv/fw_setenv
    tools.  These are used to read/write from the u-boot env.

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
