menu "Fastboot support"

config FASTBOOT
	bool
	imply ANDROID_BOOT_IMAGE
	imply CMD_FASTBOOT
	help
	  Fastboot is a protocol used in Android devices for
	  communicating between the device and a computer during
	  the bootloader stage. It allows the user to flash the
	  device firmware and unlock the bootloader.
	  More information about the protocol and usecases:
	  https://android.googlesource.com/platform/system/core/+/refs/heads/master/fastboot/

	  Note that enabling CMDLINE is recommended since fastboot allows U-Boot
	  commands to be executed on request. The CMDLINE option is required
	  for anything other than simply booting the OS.

config USB_FUNCTION_FASTBOOT
	bool "Enable USB fastboot gadget"
	depends on USB_GADGET
	default y if ARCH_SUNXI && USB_MUSB_GADGET
	select FASTBOOT
	select USB_GADGET_DOWNLOAD
	help
	  This enables the USB part of the fastboot gadget.

config UDP_FUNCTION_FASTBOOT
	depends on NET
	select FASTBOOT
	bool "Enable fastboot protocol over UDP"
	help
	  This enables the fastboot protocol over UDP.

config UDP_FUNCTION_FASTBOOT_PORT
	depends on UDP_FUNCTION_FASTBOOT
	int "Define FASTBOOT UDP port"
	default 5554
	help
	  The fastboot protocol requires a UDP port number.

config TCP_FUNCTION_FASTBOOT
	depends on NET
	select FASTBOOT
	bool "Enable fastboot protocol over TCP"
	help
	  This enables the fastboot protocol over TCP.

if FASTBOOT

config FASTBOOT_BUF_ADDR
	hex "Define FASTBOOT buffer address"
	default 0x82000000 if MX6SX || MX6SL || MX6UL || MX6SLL
	default 0x81000000 if ARCH_OMAP2PLUS
	default 0x42000000 if ARCH_SUNXI && !MACH_SUN9I
	default 0x22000000 if ARCH_SUNXI && MACH_SUN9I
	default 0x60800800 if ROCKCHIP_RK3036 || ROCKCHIP_RK3188 || \
				ROCKCHIP_RK322X
	default 0x800800 if ROCKCHIP_RK3288 || ROCKCHIP_RK3329 || \
				ROCKCHIP_RK3399
	default 0x280000 if ROCKCHIP_RK3368
	default 0x100000 if ARCH_ZYNQMP
	default 0x0 if SANDBOX
	help
	  The fastboot protocol requires a large memory buffer for
	  downloads. Define this to the starting RAM address to use for
	  downloaded images.

config FASTBOOT_BUF_SIZE
	hex "Define FASTBOOT buffer size"
	default 0x8000000 if ARCH_ROCKCHIP
	default 0x6000000 if ARCH_ZYNQMP
	default 0x2000000 if ARCH_SUNXI
	default 0x8192 if SANDBOX
	default 0x7000000
	help
	  The fastboot protocol requires a large memory buffer for
	  downloads. This buffer should be as large as possible for a
	  platform. Define this to the size available RAM for fastboot.

config FASTBOOT_USB_DEV
	int "USB controller number"
	depends on USB_FUNCTION_FASTBOOT
	default 0
	help
	  Some boards have USB OTG controller other than 0. Define this
	  option so it can be used in compiled environment (e.g. in
	  CONFIG_BOOTCOMMAND).

config FASTBOOT_FLASH
	bool "Enable FASTBOOT FLASH command"
	default y if ARCH_SUNXI || ARCH_ROCKCHIP
	depends on MMC || (MTD_RAW_NAND && CMD_MTDPARTS)
	select IMAGE_SPARSE
	help
	  The fastboot protocol includes a "flash" command for writing
	  the downloaded image to a non-volatile storage device. Define
	  this to enable the "fastboot flash" command.

config FASTBOOT_UUU_SUPPORT
	bool "Enable UUU support"
	help
	  This extends the fastboot protocol with the "UCmd" and "ACmd"
	  commands, which are used by NXP's "universal update utility" (UUU).
	  These commands allow running any shell command. Do not enable this
	  feature if you are using verified boot, as it will allow an attacker
	  to bypass any restrictions you have in place.

choice
	prompt "Flash provider for FASTBOOT"
	depends on FASTBOOT_FLASH

config FASTBOOT_FLASH_MMC
	bool "FASTBOOT on MMC"
	depends on MMC

config FASTBOOT_FLASH_NAND
	bool "FASTBOOT on NAND"
	depends on MTD_RAW_NAND && CMD_MTDPARTS

endchoice

config FASTBOOT_FLASH_MMC_DEV
	int "Define FASTBOOT MMC FLASH default device"
	depends on FASTBOOT_FLASH_MMC
	default 0 if ARCH_ROCKCHIP
	default 0 if ARCH_SUNXI && MMC_SUNXI_SLOT_EXTRA = -1
	default 1 if ARCH_SUNXI && MMC_SUNXI_SLOT_EXTRA != -1
	help
	  The fastboot "flash" command requires additional information
	  regarding the non-volatile storage device. Define this to
	  the eMMC device that fastboot should use to store the image.

config FASTBOOT_FLASH_NAND_TRIMFFS
	bool "Skip empty pages when flashing NAND"
	depends on FASTBOOT_FLASH_NAND
	help
	  When flashing NAND enable the DROP_FFS flag to drop trailing all-0xff
	  pages.

config FASTBOOT_MMC_BOOT_SUPPORT
	bool "Enable EMMC_BOOT flash/erase"
	depends on FASTBOOT_FLASH_MMC
	help
	  The fastboot "flash" and "erase" commands normally does operations
	  on eMMC userdata. Define this to enable the special commands to
	  flash/erase eMMC boot partition.
	  The default target name for updating eMMC boot partition 1/2 is
	  CONFIG_FASTBOOT_MMC_BOOT1_NAME/CONFIG_FASTBOOT_MMC_BOOT2_NAME.

config FASTBOOT_MMC_BOOT1_NAME
	string "Target name for updating EMMC_BOOT1"
	depends on FASTBOOT_MMC_BOOT_SUPPORT
	default "mmc0boot0"
	help
	  The fastboot "flash" and "erase" commands support operations on
	  EMMC_BOOT1. This occurs when the specified "EMMC_BOOT1 name" on
	  the "fastboot flash" and "fastboot erase" commands match the value
	  defined here.
	  The default target name for updating EMMC_BOOT1 is "mmc0boot0".

config FASTBOOT_MMC_BOOT2_NAME
	string "Target name for updating EMMC_BOOT2"
	depends on FASTBOOT_MMC_BOOT_SUPPORT
	default "mmc0boot1"
	help
	  The fastboot "flash" and "erase" commands support operations on
	  EMMC_BOOT2. This occurs when the specified "EMMC_BOOT2 name" on
	  the "fastboot flash" and "fastboot erase" commands match the value
	  defined here.
	  The default target name for updating EMMC_BOOT2 is "mmc0boot1".

config FASTBOOT_MMC_USER_SUPPORT
	bool "Enable eMMC userdata partition flash/erase"
	depends on FASTBOOT_FLASH_MMC
	help
	  Define this to enable the support "flash" and "erase" command on
	  eMMC userdata. The "flash" command only update the MBR and GPT
	  header when CONFIG_EFI_PARTITION is supported.
	  The "erase" command erase all the userdata.
	  This occurs when the specified "partition name" on the
	  fastboot command line matches the value CONFIG_FASTBOOT_MMC_USER_NAME.

config FASTBOOT_MMC_USER_NAME
	string "Target name for updating EMMC_USER"
	depends on FASTBOOT_MMC_USER_SUPPORT
	default "mmc0"
	help
	  The fastboot "flash" and "erase" command supports EMMC_USER.
	  This occurs when the specified "EMMC_USER name" on the
	  "fastboot flash" and the "fastboot erase" commands match the value
	  defined here.
	  The default target name for erasing EMMC_USER is "mmc0".

config FASTBOOT_GPT_NAME
	string "Target name for updating GPT"
	depends on FASTBOOT_FLASH_MMC && EFI_PARTITION
	default "gpt"
	help
	  The fastboot "flash" command supports writing the downloaded
	  image to the Protective MBR and the Primary GUID Partition
	  Table. (Additionally, this downloaded image is post-processed
	  to generate and write the Backup GUID Partition Table.)
	  This occurs when the specified "partition name" on the
	  "fastboot flash" command line matches the value defined here.
	  The default target name for updating GPT is "gpt".

config FASTBOOT_MBR_NAME
	string "Target name for updating MBR"
	depends on FASTBOOT_FLASH_MMC && DOS_PARTITION
	default "mbr"
	help
	  The fastboot "flash" command allows to write the downloaded image
	  to the Master Boot Record. This occurs when the "partition name"
	  specified on the "fastboot flash" command line matches the value
	  defined here. The default target name for updating MBR is "mbr".

config FASTBOOT_CMD_OEM_FORMAT
	bool "Enable the 'oem format' command"
	depends on FASTBOOT_FLASH_MMC && CMD_GPT
	help
	  Add support for the "oem format" command from a client. This
	  relies on the env variable partitions to contain the list of
	  partitions as required by the gpt command.

config FASTBOOT_CMD_OEM_PARTCONF
	bool "Enable the 'oem partconf' command"
	depends on FASTBOOT_FLASH_MMC && SUPPORT_EMMC_BOOT
	help
	  Add support for the "oem partconf" command from a client. This set
	  the mmc boot-partition for the selecting eMMC device.

config FASTBOOT_CMD_OEM_BOOTBUS
	bool "Enable the 'oem bootbus' command"
	depends on FASTBOOT_FLASH_MMC && SUPPORT_EMMC_BOOT
	help
	  Add support for the "oem bootbus" command from a client. This set
	  the mmc boot configuration for the selecting eMMC device.

config FASTBOOT_OEM_RUN
	bool "Enable the 'oem run' command"
	help
	  This extends the fastboot protocol with an "oem run" command. This
	  command allows running arbitrary U-Boot shell commands. Do not enable
	  this feature if you are using verified boot, as it will allow an
	  attacker to bypass any restrictions you have in place.

config FASTBOOT_CMD_OEM_CONSOLE
	bool "Enable the 'oem console' command"
	depends on CONSOLE_RECORD
	help
	  Add support for the "oem console" command to input and read console
	  record buffer.

endif # FASTBOOT

endmenu
