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"
	depends on NETDEVICES
	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"
	depends on MMC
	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
	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"
	depends on SPI_FLASH || DM_SPI_FLASH
	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.

config DFU_NAME_MAX_SIZE
	int "Size of the name to be added in dfu entity"
	default 32
	depends on DFU
	help
	  This value is used to maximum size. If name is longer than default size,
	  we need to change the proper maximum size.

endif
endmenu
