summaryrefslogtreecommitdiff
path: root/include/dfu.h
diff options
context:
space:
mode:
authorHeiko Schocher <hs@denx.de>2014-03-18 08:09:56 +0100
committerMarek Vasut <marex@denx.de>2014-03-23 02:20:09 +0100
commit001a8319866062cd63b7b62e5bb4b85eacfde4b4 (patch)
tree9d9d6a5bd0f4aa96f7fe3466dab6ddc3d846615c /include/dfu.h
parenta2199afea169c1e13881ca90a02a28e4c9ffd114 (diff)
downloadu-boot-001a8319866062cd63b7b62e5bb4b85eacfde4b4.tar.gz
usb: dfu: introduce dfuMANIFEST state
on nand flash using ubi, after the download of the new image into the flash, the "rest" of the nand sectors get erased while flushing the medium. With current u-boot version dfu-util may show: Starting download: [##################################################] finished! state(7) = dfuMANIFEST, status(0) = No error condition is present unable to read DFU status as get_status is not answered while erasing sectors, if erasing needs some time. So do the following changes to prevent this: - introduce dfuManifest state According to dfu specification ( http://www.usb.org/developers/devclass_docs/usbdfu10.pdf ) section 7: "the device enters the dfuMANIFEST-SYNC state and awaits the solicitation of the status report by the host. Upon receipt of the anticipated DFU_GETSTATUS, the device enters the dfuMANIFEST state, where it completes its reprogramming operations." - when stepping into dfuManifest state, sending a PollTimeout DFU_MANIFEST_POLL_TIMEOUT in ms, to the host, so the host (dfu-util) waits the PollTimeout before sending a get_status again. Signed-off-by: Heiko Schocher <hs@denx.de> Cc: Lukasz Majewski <l.majewski@samsung.com> Cc: Kyungmin Park <kyungmin.park@samsung.com> Cc: Marek Vasut <marex@denx.de> Cc: Pantelis Antoniou <panto@antoniou-consulting.com>
Diffstat (limited to 'include/dfu.h')
-rw-r--r--include/dfu.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/include/dfu.h b/include/dfu.h
index 272a245764..6c71ecbe35 100644
--- a/include/dfu.h
+++ b/include/dfu.h
@@ -80,6 +80,9 @@ static inline unsigned int get_mmc_blk_size(int dev)
#ifndef DFU_DEFAULT_POLL_TIMEOUT
#define DFU_DEFAULT_POLL_TIMEOUT 0
#endif
+#ifndef DFU_MANIFEST_POLL_TIMEOUT
+#define DFU_MANIFEST_POLL_TIMEOUT DFU_DEFAULT_POLL_TIMEOUT
+#endif
struct dfu_entity {
char name[DFU_NAME_SIZE];