config BR2_TARGET_AT91BOOTSTRAP3
	bool "AT91 Bootstrap 3+"
	depends on BR2_arm926t || BR2_cortex_a5 || BR2_cortex_a7
	help
	  AT91Bootstrap is a first level bootloader for the Atmel AT91
	  devices. It integrates algorithms for:
	  - Device initialization such as clock configuration, PIO
	    settings...
	  - Peripheral drivers such as PIO, PMC or SDRAMC...
	  - Physical media algorithm such as DataFlash, NandFlash, NOR
	    Flash...

	  https://www.at91.com/linux4sam/bin/view/Linux4SAM/AT91Bootstrap

if BR2_TARGET_AT91BOOTSTRAP3

choice

	prompt "AT91 Bootstrap 3+ version"

config BR2_TARGET_AT91BOOTSTRAP3_LATEST_VERSION
	bool "4.0.0"

config BR2_TARGET_AT91BOOTSTRAP3_LATEST_VERSION_3X
	bool "3.10.3"

config BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_GIT
	bool "Custom Git repository"
	help
	  This option allows Buildroot to get the AT91 Bootstrap 3
	  source code from a Git repository.

config BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_SVN
	bool "Custom SVN repository"
	help
	  This option allows Buildroot to get the AT91 Bootstrap 3
	  source code from a Subversion repository

config BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_TARBALL
	bool "Custom tarball"

endchoice

config BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_TARBALL_LOCATION
	string "URL of custom AT91Bootstrap tarball"
	depends on BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_TARBALL

if BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_GIT || BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_SVN

config BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_URL
	string "URL of custom repository"

config BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION
	string "Custom repository version"
	help
	  Revision to use in the typical format used by Git or SVN
	  E.G. a sha id, a tag, branch, ..

endif

config BR2_TARGET_AT91BOOTSTRAP3_VERSION
	string
	default "v4.0.0" if BR2_TARGET_AT91BOOTSTRAP3_LATEST_VERSION
	default "v3.10.3" if BR2_TARGET_AT91BOOTSTRAP3_LATEST_VERSION_3X
	default BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION \
		if BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_GIT || BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_SVN
	default "custom"	if BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_TARBALL

config BR2_TARGET_AT91BOOTSTRAP3_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 at91bootstrap3-<something>.patch.

	  Most users may leave this empty

#
# Configuration selection
#

choice
	prompt "AT91 Bootstrap 3 configuration"
	default BR2_TARGET_AT91BOOTSTRAP3_USE_DEFCONFIG

config BR2_TARGET_AT91BOOTSTRAP3_USE_DEFCONFIG
	bool "Using a defconfig"

config BR2_TARGET_AT91BOOTSTRAP3_USE_CUSTOM_CONFIG
	bool "Using a custom config file"

endchoice

config BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG
	string "Defconfig name"
	depends on BR2_TARGET_AT91BOOTSTRAP3_USE_DEFCONFIG
	help
	  Name of the at91bootstrap3 defconfig file to use, without the
	  trailing _defconfig.  The defconfig is located at
	  board/<processor>/<board>_defconfig in the at91bootstrap3
	  tree.

config BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_CONFIG_FILE
	string "Configuration file path"
	depends on BR2_TARGET_AT91BOOTSTRAP3_USE_CUSTOM_CONFIG
	help
	  Path to the at91bootstrap3 configuration file

config BR2_TARGET_AT91BOOTSTRAP3_NEEDS_PYTHON3
	bool "needs host-python3"
	help
	  Enable this option if the at91bootstrap build process needs
	  Python 3.x to be available on the host. This is needed in
	  some at91bootstrap configurations to use NAND/PMECC Python
	  scripts.

endif # BR2_TARGET_AT91BOOTSTRAP3
