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

	  https://docs.u-boot.org/en/latest/

if BR2_TARGET_UBOOT
choice
	prompt "Build system"
	default BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG if BR2_TARGET_UBOOT_LATEST_VERSION
	default BR2_TARGET_UBOOT_BUILD_SYSTEM_LEGACY

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.

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.

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 "2026.01"

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"

config BR2_TARGET_UBOOT_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_UBOOT_VERSION
	string
	default "2026.01"	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_LICENSE_FILES
	string "U-boot license files" if BR2_TARGET_UBOOT_CUSTOM_GIT || BR2_TARGET_UBOOT_CUSTOM_HG || \
		BR2_TARGET_UBOOT_CUSTOM_SVN || BR2_TARGET_UBOOT_CUSTOM_TARBALL
	default "Licenses/gpl-2.0.txt"
	help
	  A space-separated list of license files related to U-Boot
	  package.

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

# Hidden boolean that allows to select BR2_TARGET_UBOOT_NEEDS_XXD when
# needed.
config BR2_TARGET_UBOOT_DEFAULT_ENV_FILE_ENABLED
	bool
	default y if BR2_TARGET_UBOOT_DEFAULT_ENV_FILE != ""
	select BR2_TARGET_UBOOT_NEEDS_XXD

config BR2_TARGET_UBOOT_DEFAULT_ENV_FILE
	string "Text file with default environment"
	depends on BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG
	help
	  Text file containing the variables to be used as the default
	  environment in U-Boot.

	  If empty, let U-Boot generate the default environment from the
	  source code and other U-Boot configuration values, which is
	  the default behaviour.

	  If set to the path to a file, instructs U-Boot to define the
	  entire U-Boot default environment from the provided file,
	  disabling all the default behaviour.

	  From the U-Boot documentation:

	    The format is the same as accepted by the mkenvimage tool,
	    with lines containing key=value pairs. Blank lines and
	    lines beginning with '#' are ignored.

	  Based on the USE_DEFAULT_ENV_FILE and DEFAULT_ENV_FILE U-Boot
	  configuration variables.

	  For more info see:
	  https://docs.u-boot.org/en/latest/usage/environment.html#external-environment-file

	  Requires U-Boot >= v2018.05.

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_PYTHON3
	bool "U-Boot needs host python 3.x"
	help
	  Select this option if U-Boot needs a host Python 3.x
	  interpreter. This is the case for some U-Boot
	  configurations, after U-Boot 2020.01.

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

config BR2_TARGET_UBOOT_NEEDS_PYELFTOOLS
	bool "U-Boot needs pyelftools"
	select BR2_TARGET_UBOOT_NEEDS_PYTHON3
	help
	  Select this option if your U-Boot board configuration
	  requires the Python pyelftools library to be available.
	  This is used by some rockchip SOCs for elf parsing.
	  For example: rk3399 soc boards.

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.

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

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

config BR2_TARGET_UBOOT_NEEDS_UTIL_LINUX
	bool "U-Boot needs util-linux"
	help
	  Select this option if your U-Boot board configuration
	  requires util-linux (-luuid) to be available on the host.
	  This is typically the case when the board configuration
	  has CONFIG_TOOLS_MKEFICAPSULE enabled.

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

config BR2_TARGET_UBOOT_NEEDS_ATF_BL31
	bool "U-Boot needs ATF BL31"
	depends on BR2_TARGET_ARM_TRUSTED_FIRMWARE
	depends on !BR2_TARGET_ARM_TRUSTED_FIRMWARE_UBOOT_AS_BL33
	select BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL31
	help
	  Some specific platforms (such as Allwinner A64/H5)
	  encapsulate the BL31 part of ATF inside U-Boot. This option
	  makes sure ATF gets built prior to U-Boot, and that the BL31
	  variable pointing to ATF's BL31 binary, is passed during the
	  Buildroot build.

choice
	prompt "U-Boot ATF BL31 format"
	default BR2_TARGET_UBOOT_NEEDS_ATF_BL31_BIN
	depends on BR2_TARGET_UBOOT_NEEDS_ATF_BL31

config BR2_TARGET_UBOOT_NEEDS_ATF_BL31_BIN
	bool "bl31.bin"

config BR2_TARGET_UBOOT_NEEDS_ATF_BL31_ELF
	bool "bl31.elf"

endchoice

config BR2_TARGET_UBOOT_NEEDS_OPTEE_TEE
	bool "U-Boot needs OPTEE TEE"
	depends on BR2_TARGET_OPTEE_OS_CORE
	help
	  Some platforms (such as Rockchip) encapsulate the TEE inside
	  U-Boot. This option makes sure optee-os gets built prior to
	  U-Boot, and that the TEE variable pointing to OPTEE's
	  core file, is passed during the Buildroot build.

choice
	prompt "U-Boot OPTEE TEE format"
	default BR2_TARGET_UBOOT_NEEDS_OPTEE_TEE_ELF
	depends on BR2_TARGET_UBOOT_NEEDS_OPTEE_TEE
	help
	  Select the TEE format.
	  You may select the TEE in ELF format only for OP-TEE
	  versions before 3.8.0.
	  Since this version, the TEE in binary format must be used as
	  it contains important meta-data.

	  https://optee.readthedocs.io/en/4.9.0/architecture/porting_guidelines.html#binaries

config BR2_TARGET_UBOOT_NEEDS_OPTEE_TEE_ELF
	bool "tee.elf"
	help
	  The main OP-TEE ELF file. All other OP-TEE binaries are
	  created with this as input.

	  ELF format may be used only for OP-TEE versions before
	  3.8.0.

config BR2_TARGET_UBOOT_NEEDS_OPTEE_TEE_BIN
	bool "tee.bin"
	help
	  The original OP-TEE binary with a header (v1) and combined
	  init, paged, and unpaged parts.

	  Binary format must be used for OP-TEE versions since 3.8.0.

endchoice

config BR2_TARGET_UBOOT_NEEDS_OPENSBI
	bool "U-Boot needs OpenSBI"
	depends on BR2_TARGET_OPENSBI
	help
	  Some RISC-V platforms (such as SiFive HiFive Unleashed)
	  encapsulate the OpenSBI firmware image inside U-Boot.
	  This option makes sure OpenSBI gets built prior to U-Boot,
	  and that the OpenSBI variable pointing to OpenSBI binary,
	  is passed during the Buildroot build.

config BR2_TARGET_UBOOT_NEEDS_IMX_FIRMWARE
	bool "U-Boot needs firmware-imx"
	depends on BR2_PACKAGE_FIRMWARE_IMX
	depends on BR2_PACKAGE_FIRMWARE_IMX_NEEDS_DDR_FW || \
		BR2_PACKAGE_FIRMWARE_IMX_NEEDS_DDR_FW_IMX9 || \
		BR2_PACKAGE_FIRMWARE_IMX_NEEDS_HDMI_FW
	help
	  Some i.MX8 platforms (such as i.MX8 M, i.MX 8M Mini, i.MX 8M
	  Nano) encapsulate NXP specific firmware (DDR, HDMI) inside
	  U-Boot.
	  This option makes sure that the i.MX firmwares are copied into
	  the U-Boot source directory.

config BR2_TARGET_UBOOT_NEEDS_ROCKCHIP_RKBIN
	bool "U-Boot needs rockchip-rkbin"
	depends on BR2_PACKAGE_ROCKCHIP_RKBIN
	help
	  For some Rockchip SoCs U-Boot needs binary blobs from
	  Rockchip.
	  This option makes sure that the needed binary blobs are copied
	  into the U-Boot source directory.

config BR2_TARGET_UBOOT_USE_BINMAN
	bool "U-Boot use binman"
	select BR2_TARGET_UBOOT_NEEDS_PYTHON3
	select BR2_TARGET_UBOOT_NEEDS_PYELFTOOLS
	select BR2_TARGET_UBOOT_NEEDS_PYLIBFDT
	help
	  Use binman tool for generation and signing of boot images.

	  https://docs.u-boot.org/en/v2026.01/develop/package/binman.html

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
	bool "u-boot.dtb"

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

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

config BR2_TARGET_UBOOT_FORMAT_ELF
	bool "u-boot"
	help
	  Install the u-boot image, which is directly the ELF binary
	  for the main U-Boot, potentially with debugging symbols.

config BR2_TARGET_UBOOT_FORMAT_REMAKE_ELF
	bool "u-boot.elf"
	help
	  Install the u-boot.elf image, which is produced when
	  CONFIG_REMAKE_ELF=y. It is an ELF image (u-boot.elf)
	  produced from the raw U-Boot binary (u-boot.bin), which may
	  already have been statically relocated and may already have
	  a device-tree appended to it.

config BR2_TARGET_UBOOT_FORMAT_IMG
	bool "u-boot.img"

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

config BR2_TARGET_UBOOT_FORMAT_IMX
	bool "u-boot.imx"

config BR2_TARGET_UBOOT_FORMAT_DTB_IMX
	bool "u-boot-dtb.imx"

config BR2_TARGET_UBOOT_FORMAT_ITB
	bool "u-boot.itb"

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

config BR2_TARGET_UBOOT_FORMAT_NAND
	bool "u-boot.nand (Freescale i.MX28)"
	depends on BR2_arm
	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_SB
	bool "u-boot.sb (Freescale i.MX28)"
	depends on BR2_arm

config BR2_TARGET_UBOOT_FORMAT_SD
	bool "u-boot.sd (Freescale i.MX28)"
	depends on BR2_arm
	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_QSPI_BIN
	bool "qspi.bin"
	depends on BR2_TARGET_UBOOT_ZYNQMP
	help
	  When booting from qspi flash, u-boot can generate a single
	  file for flashing by combining the spl/boot.bin and
	  u-boot.itb files into a unified binary.

config BR2_TARGET_UBOOT_FORMAT_ADSP_LDR
	bool "u-boot.ldr"
	depends on BR2_arm || BR2_aarch64
	help
	  Boot stream format for Analog Devices, Inc. ADSP-SCxxx
	  processors including 32-bit SC589, SC592, and SC594, as
	  well as 64-bit SC596 and SC598

config BR2_TARGET_UBOOT_FORMAT_STM32
	bool "u-boot.stm32"
	depends on BR2_arm

if BR2_TARGET_UBOOT_FORMAT_STM32
config BR2_TARGET_UBOOT_BUILD_FORMAT_STM32_LEGACY
	bool "Legacy build (u-boot.stm32 target)"
	help
	  Select this option if you use U-Boot with version older than
	  2022.01), so that we use the old build target. Otherwise,
	  binman application is called to create the stm32 binary
	  format.
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
	bool "produce a .ift signed image (OMAP)"
	depends on BR2_TARGET_UBOOT_FORMAT_BIN
	depends on BR2_arm || BR2_armeb
	select BR2_PACKAGE_HOST_OMAP_U_BOOT_UTILS
	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"
	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/TPL binary image name(s)"
	default "spl/u-boot-spl.bin"
	depends on BR2_TARGET_UBOOT_SPL
	help
	  A space-separated list of SPL/TPL binaries, generated during
	  u-boot build. For most platform SPL name is spl/u-boot-spl.bin
	  and TPL name is tpl/u-boot-tpl.bin but not always. SPL name is
	  MLO on OMAP and SPL on i.MX6 for example.

config BR2_TARGET_UBOOT_INITIAL_ENV
	bool "Install u-boot-initial-env"
	help
	  Install the U-Boot u-boot-initial-env on the target.

	  This file is typically required by libubootenv.

config BR2_TARGET_UBOOT_ZYNQMP
	bool "Boot on the Xilinx ZynqMP SoCs"
	depends on BR2_TARGET_XILINX_FIRMWARE_ARCH_SUPPORTS
	depends on BR2_cortex_a53
	help
	  Enable options specific to the Xilinx ZynqMP family of SoCs.

if BR2_TARGET_UBOOT_ZYNQMP

choice
	prompt "PMUFW origin"
	default BR2_TARGET_UBOOT_ZYNQMP_PMUFW_CUSTOM
	depends on BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG
	help
	  Choose between the following options:
	  1) Build from source via xilinx-embeddedsw
	  2) Official prebuilt via xilinx-prebuilt
	  3) Prebuilt from custom location

	  U-Boot build process will generate a boot.bin (to be loaded
	  by the ZynqMP boot ROM) containing both the U-Boot SPL and
	  the PMU firmware in the Xilinx-specific boot format.

config BR2_TARGET_UBOOT_ZYNQMP_PMUFW_EMBEDDEDSW
	bool "Build from source via xilinx-embeddedsw"
	depends on BR2_TARGET_XILINX_EMBEDDEDSW_ZYNQMP_PMUFW
	help
	  Use xilinx-embeddedsw boot package for building
	  zynqmp pmufw.elf from
	    https://github.com/Xilinx/embeddedsw repo.

comment "To build from source, xilinx-embeddedsw needs to be enabled with zynqmp_pmufw option."
	depends on !BR2_TARGET_XILINX_EMBEDDEDSW_ZYNQMP_PMUFW

config BR2_TARGET_UBOOT_ZYNQMP_PMUFW_PREBUILT
	bool "Prebuilt via xilinx-prebuilt"
	depends on BR2_TARGET_XILINX_PREBUILT_ZYNQMP || BR2_TARGET_XILINX_PREBUILT_KRIA
	help
	  Use xilinx-prebuilt boot package for downloading prebuilt
	  zynqmp pmufw.elf from
	    https://github.com/Xilinx/soc-prebuilt-firmware repo.

comment "To use official prebuilt, xilinx-prebuilt needs to be enabled with zynqmp or kria option."
	depends on !BR2_TARGET_XILINX_PREBUILT_KRIA
	depends on !BR2_TARGET_XILINX_PREBUILT_ZYNQMP

config BR2_TARGET_UBOOT_ZYNQMP_PMUFW_CUSTOM
	bool "Prebuilt from custom location"
	help
	  Location of a PMU firmware binary defined by:
	  BR2_TARGET_UBOOT_ZYNQMP_PMUFW

endchoice # PMUFW origin

config BR2_TARGET_UBOOT_ZYNQMP_PMUFW
	string "Custom PMU firmware location"
	depends on BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG
	depends on BR2_TARGET_UBOOT_ZYNQMP_PMUFW_CUSTOM
	help
	  Location of a PMU firmware binary.

	  If not empty, instructs the U-Boot build process to generate
	  a boot.bin (to be loaded by the ZynqMP boot ROM) containing
	  both the U-Boot SPL and the PMU firmware in the
	  Xilinx-specific boot format.

	  The value can be an absolute or relative path, and will be
	  used directly from where it is located, or an URI
	  (e.g. http://...), and it will be downloaded and used from
	  the download directory.

	  The PMU firmware binary can be either in ELF or BIN format.

	  If empty, the generated boot.bin will not contain a PMU
	  firmware.

	  This feature requires U-Boot >= 2018.07.

config BR2_TARGET_UBOOT_ZYNQMP_PM_CFG
	string "PMU configuration location"
	depends on BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG
	help
	  Location of a PMU configuration file.

	  If not empty, Buildroot will convert the PMU configuration
	  file into a loadable blob and pass it to U-Boot. The blob gets
	  embedded into the U-Boot SPL and is used to configure the PMU
	  during board initialization.

	  Unlike the PMU firmware, the PMU configuration file is unique
	  to each board configuration. A PMU configuration file can be
	  generated by building your Xilinx SDK BSP. It can be found in
	  the BSP source, for example at
	    ./psu_cortexa53_0/libsrc/xilpm_v2_4/src/pm_cfg_obj.c

	  Leave this option empty if your PMU firmware has a hard-coded
	  configuration object or you are loading it by any other means.

	  This feature requires U-Boot >= v2019.10.

config BR2_TARGET_UBOOT_ZYNQMP_PSU_INIT_FILE
	string "Custom psu_init_gpl file"
	depends on BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG
	help
	  On ZynqMP the bootloader is responsible for some basic
	  initializations, such as enabling peripherals and
	  configuring pinmuxes. The psu_init_gpl.c file (and,
	  optionally, psu_init_gpl.h) contains the code for such
	  initializations.

	  Although U-Boot contains psu_init_gpl.c files for some
	  boards, each of them describes only one specific
	  configuration. Users of a different board, or needing a
	  different configuration, can generate custom files using the
	  Xilinx development tools.

	  Set this variable to the path to your psu_init_gpl.c file
	  (e.g. "board/myboard/psu_init_gpl.c"). psu_init_gpl.h, if
	  needed, should be in the same directory. U-Boot will build
	  and link the user-provided file instead of the built-in one.

	  Leave empty to use the files provided by U-Boot.

	  This feature requires commit
	  6da4f67ad09cd8b311d77b2b04e557b7ef65b56c from upstream
	  U-Boot, available from versions after 2018.07.

endif

config BR2_TARGET_UBOOT_ZYNQ
	bool "Boot on the Xilinx Zynq SoCs"
	depends on BR2_arm
	depends on BR2_cortex_a9
	help
	  Enable options specific to the Xilinx Zynq family of SoCs.

config BR2_TARGET_UBOOT_ZYNQ_PS7_INIT_FILE
	string "Custom ps7_init_gpl file"
	depends on BR2_TARGET_UBOOT_BUILD_SYSTEM_KCONFIG
	depends on BR2_TARGET_UBOOT_ZYNQ
	help
	  On Zynq the bootloader is responsible for some basic
	  initializations, such as enabling peripherals and
	  configuring pinmuxes. The ps7_init_gpl.c file (and,
	  optionally, ps7_init_gpl.h) contains the code for such
	  initializations.

	  Although U-Boot contains ps7_init_gpl.c files for some
	  boards, each of them describes only one specific
	  configuration. Users of a different board, or needing a
	  different configuration, can generate custom files using
	  the Xilinx Vivado development tools.

	  Set this variable to the path to your ps7_init_gpl.c file
	  (e.g. "board/myboard/ps7_init_gpl.c"). ps7_init_gpl.h, if
	  needed, should be in the same directory. U-Boot will build
	  and link the user-provided file instead of the built-in.

	  Leave empty to use the files provided by U-Boot.

	  This feature requires commit
	  6da4f67ad09cd8b311d77b2b04e557b7ef65b56c from upstream
	  U-Boot, available from versions after 2018.07.

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.

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

config BR2_TARGET_UBOOT_CUSTOM_MAKEOPTS
	string "Custom make options"
	help
	  List of custom make options passed at build time. Can be
	  used for example to pass a DEVICE_TREE= value.

endif # BR2_TARGET_UBOOT
