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

if BR2_TARGET_UBOOT
choice
	prompt "Build system"
	default BR2_TARGET_UBOOT_BUILD_SYSTEM_LEGACY

config BR2_TARGET_UBOOT_BUILD_SYSTEM_LEGACY
	bool "Legacy"
	help
	  Select this option if you use an old U-Boot (older than 2015.04),
	  so that we use the old build system.

config BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG
	bool "Kconfig"
	help
	  Select this option if you use a recent U-Boot version (2015.04 or
	  newer), so that we use the Kconfig build system.

endchoice

if BR2_TARGET_UBOOT_BUILD_SYSTEM_LEGACY
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.
	  See boards.cfg in U-Boot source code for the list of available
	  configurations.
endif

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

config BR2_TARGET_UBOOT_LATEST_VERSION
	bool "2017.09"

config BR2_TARGET_UBOOT_CUSTOM_VERSION
	bool "Custom version"
	help
	  This option allows to use a specific official versions

config BR2_TARGET_UBOOT_CUSTOM_TARBALL
	bool "Custom tarball"

config BR2_TARGET_UBOOT_CUSTOM_GIT
	bool "Custom Git repository"

config BR2_TARGET_UBOOT_CUSTOM_HG
	bool "Custom Mercurial repository"

config BR2_TARGET_UBOOT_CUSTOM_SVN
	bool "Custom Subversion repository"

endchoice

config BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE
	string "U-Boot version"
	depends on BR2_TARGET_UBOOT_CUSTOM_VERSION

config BR2_TARGET_UBOOT_CUSTOM_TARBALL_LOCATION
	string "URL of custom U-Boot tarball"
	depends on BR2_TARGET_UBOOT_CUSTOM_TARBALL

if BR2_TARGET_UBOOT_CUSTOM_GIT || BR2_TARGET_UBOOT_CUSTOM_HG || BR2_TARGET_UBOOT_CUSTOM_SVN

config BR2_TARGET_UBOOT_CUSTOM_REPO_URL
	string "URL of custom repository"
	default BR2_TARGET_UBOOT_CUSTOM_GIT_REPO_URL \
		if BR2_TARGET_UBOOT_CUSTOM_GIT_REPO_URL != ""  # legacy

config BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION
	string "Custom repository version"
	default BR2_TARGET_UBOOT_CUSTOM_GIT_VERSION \
		if BR2_TARGET_UBOOT_CUSTOM_GIT_VERSION != ""  # legacy
	help
	  Revision to use in the typical format used by Git/Mercurial/Subversion
	  E.G. a sha id, a tag, branch, ..

endif

config BR2_TARGET_UBOOT_VERSION
	string
	default "2017.09"	if BR2_TARGET_UBOOT_LATEST_VERSION
	default BR2_TARGET_UBOOT_CUSTOM_VERSION_VALUE \
		if BR2_TARGET_UBOOT_CUSTOM_VERSION
	default "custom"	if BR2_TARGET_UBOOT_CUSTOM_TARBALL
	default BR2_TARGET_UBOOT_CUSTOM_REPO_VERSION \
		if BR2_TARGET_UBOOT_CUSTOM_GIT || BR2_TARGET_UBOOT_CUSTOM_HG || BR2_TARGET_UBOOT_CUSTOM_SVN

config BR2_TARGET_UBOOT_PATCH
	string "Custom U-Boot patches"
	default BR2_TARGET_UBOOT_CUSTOM_PATCH_DIR if BR2_TARGET_UBOOT_CUSTOM_PATCH_DIR != ""  # legacy
	help
	  A space-separated list of patches to apply to U-Boot.
	  Each patch can be described as an URL, a local file path,
	  or a directory. In the case of a directory, all files
	  matching *.patch in the directory will be applied.

	  Most users may leave this empty

if BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG
choice
	prompt "U-Boot configuration"
	default BR2_TARGET_UBOOT_USE_DEFCONFIG

config BR2_TARGET_UBOOT_USE_DEFCONFIG
	bool "Using an in-tree board defconfig file"

config BR2_TARGET_UBOOT_USE_CUSTOM_CONFIG
	bool "Using a custom board (def)config file"

endchoice

config BR2_TARGET_UBOOT_BOARD_DEFCONFIG
	string "Board defconfig"
	depends on BR2_TARGET_UBOOT_USE_DEFCONFIG
	help
	  Name of the board for which U-Boot should be built, without
	  the _defconfig suffix.

config BR2_TARGET_UBOOT_CUSTOM_CONFIG_FILE
	string "Configuration file path"
	depends on BR2_TARGET_UBOOT_USE_CUSTOM_CONFIG
	help
	  Path to the U-Boot configuration file.

config BR2_TARGET_UBOOT_CONFIG_FRAGMENT_FILES
	string "Additional configuration fragment files"
	help
	  A space-separated list of configuration fragment files,
	  that will be merged to the main U-Boot configuration file.
endif

config BR2_TARGET_UBOOT_NEEDS_DTC
	bool "U-Boot needs dtc"
	select BR2_PACKAGE_HOST_DTC
	help
	  Select this option if your U-Boot board configuration
	  requires the Device Tree compiler to be available.

config BR2_TARGET_UBOOT_NEEDS_PYLIBFDT
	bool "U-Boot needs pylibfdt"
	help
	  Select this option if your U-Boot board configuration
	  requires the Python libfdt library to be available.

config BR2_TARGET_UBOOT_NEEDS_OPENSSL
	bool "U-Boot needs OpenSSL"
	help
	  Select this option if your U-Boot board configuration
	  requires OpenSSL to be available on the host. This is
	  typically the case when the board configuration has
	  CONFIG_FIT_SIGNATURE enabled.

menu "U-Boot binary format"

config BR2_TARGET_UBOOT_FORMAT_AIS
	bool "u-boot.ais"
	help
	  AIS (Application Image Script) is a format defined by TI.
	  It is required to load code/data on OMAP-L1 processors.
	  u-boot.ais contains U-Boot with the SPL support.

config BR2_TARGET_UBOOT_FORMAT_BIN
	bool "u-boot.bin"
	default y

config BR2_TARGET_UBOOT_FORMAT_DTB_BIN
	bool "u-boot-dtb.bin"

config BR2_TARGET_UBOOT_FORMAT_DTB_IMG
	bool "u-boot-dtb.img"

config BR2_TARGET_UBOOT_FORMAT_IMG
	bool "u-boot.img"

config BR2_TARGET_UBOOT_FORMAT_IMX
	bool "u-boot.imx"

config BR2_TARGET_UBOOT_FORMAT_NAND_BIN
	bool "u-boot-nand.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"

config BR2_TARGET_UBOOT_FORMAT_ELF
	bool "u-boot.elf"

config BR2_TARGET_UBOOT_FORMAT_SB
	depends on BR2_arm
	bool "u-boot.sb (Freescale i.MX28)"

config BR2_TARGET_UBOOT_FORMAT_SD
	depends on BR2_arm
	bool "u-boot.sd (Freescale i.MX28)"
	help
	  This is Freescale i.MX28 SB format, with a header for booting
	  from an SD card.

	  U-boot includes an mxsboot tool to generate this format,
	  starting from 2011.12.

	  See doc/README.mxs (or doc/README.mx28_common before 2013.07)

config BR2_TARGET_UBOOT_FORMAT_NAND
	depends on BR2_arm
	bool "u-boot.nand (Freescale i.MX28)"
	help
	  This is Freescale i.MX28 BootStream format (.sb), with a header
	  for booting from a NAND flash.

	  U-boot includes an mxsboot tool to generate this format,
	  starting from 2011.12.

	  There are two possibilities when preparing an image writable to
	  NAND flash:
	  1) The NAND was not written at all yet or the BCB (Boot Control
	  Blocks) is broken. In this case, the NAND image 'u-boot.nand'
	  needs to written.
	  2) The NAND flash was already written with a good BCB. This
	  applies after 'u-boot.nand' was correctly written. There is no
	  need to write the BCB again. In this case, the bootloader can be
	  upgraded by writing 'u-boot.sb'.

	  To satisfy both cases, the 'u-boot.nand' image obtained from
	  mxsboot as well as the U-Boot make target 'u-boot.sb' are copied
	  to the binaries directory.

	  See doc/README.mxs (or doc/README.mx28_common before 2013.07)

if BR2_TARGET_UBOOT_FORMAT_NAND

config BR2_TARGET_UBOOT_FORMAT_NAND_PAGE_SIZE
	int "NAND page size"
	default 2048
	help
	  The NAND page size of the targets NAND flash in bytes as a
	  decimal integer value.

	  The value provided here is passed to the -w option of mxsboot.

config BR2_TARGET_UBOOT_FORMAT_NAND_OOB_SIZE
	int "NAND OOB size"
	default 64
	help
	  The NAND OOB size of the targets NAND flash in bytes as a
	  decimal integer value.

	  The value provided here is passed to the -o option of mxsboot.

config BR2_TARGET_UBOOT_FORMAT_NAND_ERASE_SIZE
	int "NAND erase size"
	default 131072
	help
	  The NAND eraseblock size of the targets NAND flash in bytes as
	  a decimal integer value.

	  The value provided here is passed to the -e option of mxsboot.

endif

config BR2_TARGET_UBOOT_FORMAT_CUSTOM
	bool "Custom (specify below)"
	help
	  On some platforms, the standard U-Boot binary is not called
	  u-boot.bin, but u-boot<something>.bin. If this is your case,
	  you should select this option and specify the correct name(s)
	  in BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME.

config BR2_TARGET_UBOOT_FORMAT_CUSTOM_NAME
	string "U-Boot binary format: custom names"
	depends on BR2_TARGET_UBOOT_FORMAT_CUSTOM
	help
	  In case the U-Boot binary for the target platform is not among
	  the default names, one or more custom names can be listed here.
	  Use space to separate multiple names.
	  Example:
	  u-boot_magic.bin

endmenu

config BR2_TARGET_UBOOT_OMAP_IFT
	depends on BR2_TARGET_UBOOT_FORMAT_BIN
	depends on BR2_arm || BR2_armeb
	select BR2_PACKAGE_HOST_OMAP_U_BOOT_UTILS
	bool "produce a .ift signed image (OMAP)"
	help
	  Use gpsign to produce an image of u-boot.bin signed with
	  a Configuration Header for booting on OMAP processors.
	  This allows U-Boot to boot without the need for an
	  intermediate bootloader (e.g. x-loader) if it is written
	  on the first sector of the boot medium.
	  This only works for some media, such as NAND. Check your
	  chip documentation for details. You might also want to
	  read the documentation of gpsign, the tool that generates
	  the .ift image, at:
	  https://github.com/nmenon/omap-u-boot-utils/blob/master/README

if BR2_TARGET_UBOOT_OMAP_IFT

config BR2_TARGET_UBOOT_OMAP_IFT_CONFIG
	string "gpsign Configuration Header config file"
	help
	  The Configuration Header (CH) config file defines the
	  desired content of the CH for the signed image.
	  It usually contains external RAM settings and
	  possibly other external devices initialization.
	  The omap-u-boot-utils software contains example
	  configuration files for some boards:
	  https://github.com/nmenon/omap-u-boot-utils/tree/master/configs

endif

config BR2_TARGET_UBOOT_SPL
	bool "Install U-Boot SPL binary image"
	depends on !BR2_TARGET_XLOADER
	help
	  Install the U-Boot SPL binary image to the images
	  directory.
	  SPL is a first stage bootloader loaded into internal
	  memory in charge of enabling and configuring the
	  external memory (DDR), and load the u-boot program
	  into DDR.

config BR2_TARGET_UBOOT_SPL_NAME
	string "U-Boot SPL binary image name"
	default "spl/u-boot-spl.bin"
	depends on BR2_TARGET_UBOOT_SPL
	help
	  A space-separated list of SPL binaries, generated during
	  u-boot build. For most platform it is spl/u-boot-spl.bin but
	  not always. It is MLO on OMAP and SPL on i.MX6 for example.

config BR2_TARGET_UBOOT_ZYNQ_IMAGE
	bool "Generate image for Xilinx Zynq"
	depends on BR2_arm
	depends on BR2_TARGET_UBOOT_SPL
	depends on BR2_TARGET_UBOOT_FORMAT_DTB_IMG
	help
	  Generate the BOOT.BIN file from U-Boot's SPL. The image
	  boots the Xilinx Zynq chip without any FPGA bitstream.
	  A bitstream can be loaded by the U-Boot. The SPL searchs
	  for u-boot-dtb.img file so this U-Boot format is required
	  to be set.

config BR2_TARGET_UBOOT_ALTERA_SOCFPGA_IMAGE_CRC
	bool "CRC image for Altera SoC FPGA (mkpimage)"
	depends on BR2_arm
	depends on BR2_TARGET_UBOOT_SPL || BR2_TARGET_UBOOT_FORMAT_DTB_BIN
	help
	  Pass the U-Boot image through the mkpimage tool to enable
	  booting on the Altera SoC FPGA based platforms.

	  On some platforms, it's the SPL that needs to be passed
	  through mkpimage. On some other platforms there is no SPL
	  because the internal SRAM is big enough to store the full
	  U-Boot. In this case, it's directly the full U-Boot image
	  that is passed through mkpimage.

	  If BR2_TARGET_UBOOT_SPL is enabled then
	  BR2_TARGET_UBOOT_SPL_NAME is converted by mkpimage using
	  header version 0.

	  Otherwise the full u-boot-dtb.bin is converted using
	  mkpimage header version 1.

	  In either case the resulting file will be given a .crc
	  extension.

menuconfig BR2_TARGET_UBOOT_ENVIMAGE
	bool "Environment image"
	help
	  Generate a valid binary environment image from a text file
	  describing the key=value pairs of the environment.

	  The environment image will be called uboot-env.bin.

if BR2_TARGET_UBOOT_ENVIMAGE

config BR2_TARGET_UBOOT_ENVIMAGE_SOURCE
	string "Source files for environment"
	help
	  Text files describing the environment. Files should have
	  lines of the form var=value, one per line. Blank lines and
	  lines starting with a # are ignored.

	  Multiple source files are concatenated in the order listed.

config BR2_TARGET_UBOOT_ENVIMAGE_SIZE
	string "Size of environment"
	help
	  Size of envronment, can be prefixed with 0x for hexadecimal
	  values.

config BR2_TARGET_UBOOT_ENVIMAGE_REDUNDANT
	bool "Environment has two copies"
	help
	  Some platforms define in their U-Boot configuration that the
	  U-Boot environment should be duplicated in two locations (for
	  extra safety). Check your U-Boot configuration for the
	  CONFIG_ENV_ADDR_REDUND and CONFIG_ENV_SIZE_REDUND settings to
	  see if this is the case for your platform.

	  If it is the case, then you should enable this option to
	  ensure that the U-Boot environment image generated by
	  Buildroot is compatible with the "redundant environment"
	  mechanism of U-Boot.

endif # BR2_TARGET_UBOOT_ENVIMAGE

config BR2_TARGET_UBOOT_BOOT_SCRIPT
	bool "Generate a U-Boot boot script"
	help
	  Generate a U-Boot boot script, given a file listing U-Boot
	  commands to be executed at boot time. The generated boot
	  script will be called 'boot.scr'.

if BR2_TARGET_UBOOT_BOOT_SCRIPT

config BR2_TARGET_UBOOT_BOOT_SCRIPT_SOURCE
	string "U-Boot boot script source"
	help
	  Source file to generate the U-Boot boot script.

endif

if BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG

config BR2_TARGET_UBOOT_CUSTOM_DTS_PATH
	string "Device Tree Source file paths"
	help
	  Space-separated list of paths to device tree source files
	  that will be copied to arch/ARCH/dts/ before starting the
	  build.

	  To use this device tree source file, the U-Boot configuration
	  file must refer to it.

endif

endif # BR2_TARGET_UBOOT