config BR2_TARGET_ARM_TRUSTED_FIRMWARE
	bool "ARM Trusted Firmware (ATF)"
	depends on BR2_aarch64 && BR2_TARGET_UBOOT
	help
	  Enable this option if you want to build the ATF for your ARM
	  based embedded device.

	  https://github.com/ARM-software/arm-trusted-firmware

if BR2_TARGET_ARM_TRUSTED_FIRMWARE
choice
	prompt "ATF Version"
	help
	  Select the specific ATF version you want to use

config BR2_TARGET_ARM_TRUSTED_FIRMWARE_LATEST_VERSION
	bool "v1.4"

config BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_TARBALL
	bool "Custom tarball"

config BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_GIT
	bool "Custom Git repository"

endchoice

if BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_TARBALL

config BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_TARBALL_LOCATION
	string "URL of custom ATF tarball"

endif

config BR2_TARGET_ARM_TRUSTED_FIRMWARE_VERSION
	string
	default "v1.4"		if BR2_TARGET_ARM_TRUSTED_FIRMWARE_LATEST_VERSION
	default "custom"	if BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_TARBALL
	default BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_VERSION \
				if BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_GIT

if BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_GIT

config BR2_TARGET_ARM_TRUSTED_FIRMWARE_CUSTOM_REPO_URL
	string "URL of custom repository"

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

endif

config BR2_TARGET_ARM_TRUSTED_FIRMWARE_PLATFORM
	string "ATF platform"
	help
	  Target plaform to build for.

config BR2_TARGET_ARM_TRUSTED_FIRMWARE_FIP
	bool "Build FIP image"
	help
	  This option enables building the FIP image (Firmware Image
	  Package). This is typically the image format used by
	  platforms were ATF encapsulates the second stage bootloader
	  (such as U-Boot).

config BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL31
	bool "Build BL31 image"
	help
	  This option enables building the BL31 image. This is
	  typically used on platforms where another bootloader (e.g
	  U-Boot) encapsulates ATF BL31.

config BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL31_UBOOT
	bool "Build BL31 U-Boot image"
	select BR2_TARGET_ARM_TRUSTED_FIRMWARE_BL31
	help
	  Generates a U-Boot image named atf-uboot.ub containing
	  bl31.bin.  This is used for example by the Xilinx version of
	  U-Boot SPL to load ATF on the ZynqMP SoC.

config BR2_TARGET_ARM_TRUSTED_FIRMWARE_UBOOT_AS_BL33
	bool "Use U-Boot as BL33"
	depends on BR2_TARGET_UBOOT
	help
	  This option allows to embed u-boot.bin as the BL33 part of
	  the ARM Trusted Firmware. It ensures that the u-boot package
	  gets built before ATF, and that the appropriate BL33
	  variable pointing to u-boot.bin is passed when building ATF.

config BR2_TARGET_ARM_TRUSTED_FIRMWARE_ADDITIONAL_VARIABLES
	string "Additional ATF build variables"
	help
	  Additional parameters for the ATF build
	  E.G. 'DEBUG=1 LOG_LEVEL=20'

endif
