menu "DFU support"

config DFU
	bool
	imply DFU_OVER_USB if USB_GADGET

config DFU_OVER_USB
	bool
	select HASH
	depends on USB_GADGET

config DFU_OVER_TFTP
	bool
	depends on NET

if DFU
config DFU_WRITE_ALT
	bool

config DFU_TFTP
	bool "DFU via TFTP"
	select UPDATE_COMMON
	select DFU_OVER_TFTP
	help
	  This option allows performing update of DFU-managed medium with data
	  sent via TFTP boot.

	  Detailed description of this feature can be found at ./doc/README.dfutftp

config DFU_TIMEOUT
	bool "Timeout waiting for DFU"
	help
	  This option adds an optional timeout parameter for DFU which, if set,
	  will cause DFU to only wait for that many seconds before exiting.

config DFU_MMC
	bool "MMC back end for DFU"
	help
	  This option enables using DFU to read and write to MMC based storage.

config DFU_MTD
	bool "MTD back end for DFU"
	depends on DM_MTD
	depends on CMD_MTDPARTS
	help
	  This option enables using DFU to read and write to on any MTD device.

config DFU_NAND
	bool "NAND back end for DFU"
	depends on CMD_MTDPARTS
	depends on MTD_RAW_NAND
	help
	  This option enables using DFU to read and write to NAND based
	  storage.

config DFU_NAND_TRIMFFS
	bool "Skip empty pages when flashing UBI images to NAND"
	depends on DFU_NAND
	help
	  When flashing UBI images to NAND, enable the DROP_FFS flag to drop
	  trailing all-0xff pages.

config DFU_RAM
	bool "RAM back end for DFU"
	help
	  This option enables using DFU to read and write RAM on the target.

config DFU_SF
	bool "SPI flash back end for DFU"
	help
	  This option enables using DFU to read and write to SPI flash based
	  storage.

config DFU_SF_PART
	bool "MTD partition support for SPI flash back end"
	depends on DFU_SF && CMD_MTDPARTS
	default y
	help
	  This option enables the support of "part" and "partubi" target in
	  SPI flash DFU back end.

config DFU_VIRT
	bool "VIRTUAL flash back end for DFU"
	help
	  This option enables using DFU to read and write to VIRTUAL device
	  used at board level to manage specific behavior
	  (OTP update for example).

config SET_DFU_ALT_INFO
	bool "Dynamic set of DFU alternate information"
	help
	  This option allows to call the function set_dfu_alt_info to
	  dynamically build dfu_alt_info in board.

config SYS_DFU_DATA_BUF_SIZE
	hex "Size of buffer to be allocated for transfer to raw storage device"
	default 0x800000
	help
	  DFU transfer uses a buffer before writing data to the
	  raw storage device. This value can be used for setting the
	  size of this buffer. The size of the buffer is also configurable
	  through the "dfu_bufsiz" environment variable. If both are
	  given the size of the buffer is set to "dfu_bufsize".

config SYS_DFU_MAX_FILE_SIZE
	hex "Size of the buffer to be allocated for transferring files"
	default SYS_DFU_DATA_BUF_SIZE
	help
	  When updating files rather than the raw storage device,
	  we use a static buffer to copy the file into and then write
	  the buffer once we've been given the whole file.  Define
	  this to the maximum filesize (in bytes) for the buffer.
	  If undefined it defaults to the CONFIG_SYS_DFU_DATA_BUF_SIZE.
endif
endmenu
