config BR2_TARGET_TI_K3_R5_LOADER
	bool "ti-k3-r5-loader"
	depends on BR2_aarch64
	select BR2_TARGET_TI_K3_BOOT_FIRMWARE # binman
	help
	  Separate U-Boot SPL build for R5 core on TI's K3 processors.
	  Usually used to build tiboot3.bin with k3-image-gen.

if BR2_TARGET_TI_K3_R5_LOADER

choice
	prompt "U-Boot Version"
	help
	  Select the specific U-Boot version you want to use to build
	  the initial SPL running on the R5 core. Note that for most
	  use cases you will want to use the exact same version/source
	  here as it is used to build the main U-Boot package.

config BR2_TARGET_TI_K3_R5_LOADER_LATEST_VERSION
	bool "2024.04"

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

config BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_TARBALL
	bool "Custom tarball"

config BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_GIT
	bool "Custom Git repository"

config BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_HG
	bool "Custom Mercurial repository"

config BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_SVN
	bool "Custom Subversion repository"

endchoice

config BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_VERSION_VALUE
	string "U-Boot version"
	depends on BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_VERSION

config BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_TARBALL_LOCATION
	string "URL of custom U-Boot tarball"
	depends on BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_TARBALL

if BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_GIT || BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_HG || BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_SVN

config BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_REPO_URL
	string "URL of custom repository"

config BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_REPO_VERSION
	string "Custom repository version"
	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_TI_K3_R5_LOADER_VERSION
	string
	default "2024.04"	if BR2_TARGET_TI_K3_R5_LOADER_LATEST_VERSION
	default BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_VERSION_VALUE \
		if BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_VERSION
	default "custom"	if BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_TARBALL
	default BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_REPO_VERSION \
		if BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_GIT || \
		   BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_HG  || \
		   BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_SVN
choice
	prompt "U-Boot Configuration"
	default BR2_TARGET_TI_K3_R5_LOADER_USE_DEFCONFIG

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

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

endchoice

config BR2_TARGET_TI_K3_R5_LOADER_BOARD_DEFCONFIG
	string "Board defconfig"
	depends on BR2_TARGET_TI_K3_R5_LOADER_USE_DEFCONFIG
	help
	  Name of the board for which TI K3 R5 Loader should be
	  built, without the _defconfig suffix.

config BR2_TARGET_TI_K3_R5_LOADER_CUSTOM_CONFIG_FILE
	string "Configuration file path"
	depends on BR2_TARGET_TI_K3_R5_LOADER_USE_CUSTOM_CONFIG
	help
	  Path to the TI K3 R5 Loader configuration file.

config BR2_TARGET_TI_K3_R5_LOADER_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/arm/dts/ before starting the
	  build.

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

config BR2_TARGET_TI_K3_R5_LOADER_TIBOOT3_BIN
	string "tiboot3.bin binary name"
	default "tiboot3.bin"
	help
	  Name of the TI K3 tiboot3.bin binary to use.

	  The tiboot3 binary name must match with the TI K3 SoC boot
	  ROM:

	  - General Purpose devices (gp)
	  - High Security - Field Securable devices (hs-fs)
	  - High Security - Security Enforcing devices (hs)

	  Or if the tiboot3 binary generated use a custom name.

	  If unsure, use the default tiboot3.bin (symlink) generated by
	  binman.

config BR2_TARGET_TI_K3_R5_LOADER_SYSFW_ITB
	string "sysfw.itb binary name"
	default "sysfw.itb"
	help
	  Name of the TI K3 sysfw.itb binary to use (if any required).

	  sysfw*.itb are only generated for Split binary based Boot
	  Flow (eg: am65, j721e). This option is not used on other
	  TI K3 devices.

	  The sysfw binary name must match with the TI K3 SoC boot
	  ROM:

	  - General Purpose devices (gp)
	  - High Security - Field Securable devices (hs-fs)
	  - High Security - Security Enforcing devices (hs)

	  Or if the sysfw binary generated use a custom name.

	  If unsure, use the default sysfw.itb (symlink) generated by
	  binman.

endif
