config BR2_PACKAGE_RPI_FIRMWARE
	bool "rpi-firmware"
	depends on BR2_arm || BR2_aarch64
	help
	  RaspberryPi Firmware

	  Pre-compiled binaries of the current bootloader and GPU
	  firmware

	  https://github.com/raspberrypi/firmware

if BR2_PACKAGE_RPI_FIRMWARE

choice
	bool "rpi variant"
	help
	  The Raspberry Pi 4 introduced a slightly different naming
	  convention and set of boot files. This option controls which
	  format to use.

config BR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI
	bool "rpi 0/1/2/3"
	help
	  The default set of files, for versions pre-4

config BR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI4
	bool "rpi 4"
	help
	  The Raspberry Pi 4 files
endchoice

choice
	bool "Firmware to boot"
	default BR2_PACKAGE_RPI_FIRMWARE_DEFAULT
	help
	  There are three different firmware files:
	    - the default firmware, that enables standard GPU
	      features;
	    - the extended firmware, that enables additional GPU
	      features (eg. more audio/video codecs);
	    - the cut-down firmware, for emergency situations, with
	      only features required to boot a Linux kernel.

config BR2_PACKAGE_RPI_FIRMWARE_DEFAULT
	bool "default"
	help
	  The default firmware, that enables standard GPU features.

config BR2_PACKAGE_RPI_FIRMWARE_X
	bool "extended ('x', more codecs)"
	help
	  The extended firmware, that enables additional GPU features
	  (eg. more audio/video codecs).

config BR2_PACKAGE_RPI_FIRMWARE_CD
	bool "cut-down ('cd', emergency)"
	help
	  The cut-down firmware, for emergency situations, with only
	  features required to boot a Linux kernel.

config BR2_PACKAGE_RPI_FIRMWARE_CUSTOM_LIST
	bool "deploy firmware files from list"
	help
	  Deploy firmware files as listed.

endchoice

config BR2_PACKAGE_RPI_FIRMWARE_LIST
	string
	default "start.elf start_x.elf start_cd.elf fixup.dat fixup_x.dat fixup_cd.dat" if BR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI
	default "start4.elf start4x.elf start4cd.elf fixup4.dat fixup4x.dat fixup4cd.dat" if BR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI4

config BR2_PACKAGE_RPI_FIRMWARE_BOOT
	string
	default ""      if BR2_PACKAGE_RPI_FIRMWARE_DEFAULT && BR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI
	default "4"     if BR2_PACKAGE_RPI_FIRMWARE_DEFAULT && BR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI4
	default "_x"    if BR2_PACKAGE_RPI_FIRMWARE_X && BR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI
	default "4x"    if BR2_PACKAGE_RPI_FIRMWARE_X && BR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI4
	default "_cd"   if BR2_PACKAGE_RPI_FIRMWARE_CD && BR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI
	default "4cd"   if BR2_PACKAGE_RPI_FIRMWARE_CD && BR2_PACKAGE_RPI_FIRMWARE_VARIANT_PI4

config BR2_PACKAGE_RPI_FIRMWARE_INSTALL_DTBS
	bool "Install Device Tree Blobs (DTBs)"
	default y
	depends on !BR2_LINUX_KERNEL_DTS_SUPPORT
	help
	  If you are using a Linux kernel <= 3.18, you should say 'y'
	  here.

	  If you are using a Linux kernel >= 3.19, you should say 'n'
	  here, and enable BR2_LINUX_KERNEL_DTS_SUPPORT to let the
	  kernel build the DTB.

config BR2_PACKAGE_RPI_FIRMWARE_INSTALL_DTB_OVERLAYS
	bool "Install DTB overlays"
	default y
	depends on BR2_PACKAGE_RPI_FIRMWARE_INSTALL_DTBS \
		|| BR2_LINUX_KERNEL_DTS_SUPPORT
	select BR2_LINUX_KERNEL_DTB_OVERLAY_SUPPORT \
		if BR2_LINUX_KERNEL_DTS_SUPPORT
	help
	  Say 'y' here if you need to load one or more of the DTB
	  overlays, to support HATs (Hardware Attached on Top, add-on
	  modules).

config BR2_PACKAGE_RPI_FIRMWARE_INSTALL_VCDBG
	bool "vcdbg"
	depends on BR2_arm # prebuilt arm binary, rpi-userland
	depends on BR2_TOOLCHAIN_USES_GLIBC
	depends on BR2_INSTALL_LIBSTDCPP # rpi-userland
	select BR2_PACKAGE_RPI_USERLAND
	help
	  Install vcdbg, to help debug communication with the GPU.

comment "vcdbg needs a glibc toolchain w/ C++"
	depends on BR2_arm
	depends on !BR2_TOOLCHAIN_USES_GLIBC || !BR2_INSTALL_LIBSTDCPP

endif # BR2_PACKAGE_RPI_FIRMWARE
