comment "FASTBOOT"

config FASTBOOT
	bool ""

menu "Fastboot support"
	depends on FASTBOOT

config USB_FUNCTION_FASTBOOT
	bool "Enable USB fastboot gadget"
	help
	  This enables the USB part of the fastboot gadget.

config CMD_FASTBOOT
	bool "Enable FASTBOOT command"
	help
	  This enables the command "fastboot" which enables the Android
	  fastboot mode for the platform's USB device. Fastboot is a USB
	  protocol for downloading images, flashing and device control
	  used on Android devices.

config ANDROID_BOOT_IMAGE
	bool "Enable support for Android Boot Images"
	help
	  This enables support for booting images which use the Android
	  image format header.

if USB_FUNCTION_FASTBOOT

config FASTBOOT_BUF_ADDR
	hex "Define FASTBOOT buffer address"
	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"
	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"
	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"
	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_FLASH_MMC_DEV
	int "Define FASTBOOT MMC FLASH default device"
	depends on FASTBOOT_FLASH
	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_GPT_NAME
	string "Target name for updating GPT"
	depends on FASTBOOT_FLASH
	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
	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".

endif # USB_FUNCTION_FASTBOOT

endmenu
