]> git.kernelconcepts.de Git - karo-tx-uboot.git/blobdiff - drivers/dfu/dfu.c
Merge branch 'u-boot/master' into 'u-boot-arm/master'
[karo-tx-uboot.git] / drivers / dfu / dfu.c
index 56e69fd231551a2d8320dbc1036e7a15c24c37fa..8a09aafbf246b5059b6d6d7ec0d3bcc16448b66d 100644 (file)
@@ -127,6 +127,28 @@ static int dfu_write_buffer_drain(struct dfu_entity *dfu)
        return ret;
 }
 
+int dfu_flush(struct dfu_entity *dfu, void *buf, int size, int blk_seq_num)
+{
+       int ret = 0;
+
+       if (dfu->flush_medium)
+               ret = dfu->flush_medium(dfu);
+
+       printf("\nDFU complete CRC32: 0x%08x\n", dfu->crc);
+
+       /* clear everything */
+       dfu_free_buf();
+       dfu->crc = 0;
+       dfu->offset = 0;
+       dfu->i_blk_seq_num = 0;
+       dfu->i_buf_start = dfu_buf;
+       dfu->i_buf_end = dfu_buf;
+       dfu->i_buf = dfu->i_buf_start;
+       dfu->inited = 0;
+
+       return ret;
+}
+
 int dfu_write(struct dfu_entity *dfu, void *buf, int size, int blk_seq_num)
 {
        int ret = 0;
@@ -197,26 +219,6 @@ int dfu_write(struct dfu_entity *dfu, void *buf, int size, int blk_seq_num)
                        ret = tret;
        }
 
-       /* end? */
-       if (size == 0) {
-               /* Now try and flush to the medium if needed. */
-               if (dfu->flush_medium)
-                       ret = dfu->flush_medium(dfu);
-               printf("\nDFU complete CRC32: 0x%08x\n", dfu->crc);
-
-               /* clear everything */
-               dfu_free_buf();
-               dfu->crc = 0;
-               dfu->offset = 0;
-               dfu->i_blk_seq_num = 0;
-               dfu->i_buf_start = dfu_buf;
-               dfu->i_buf_end = dfu_buf;
-               dfu->i_buf = dfu->i_buf_start;
-
-               dfu->inited = 0;
-
-       }
-
        return ret = 0 ? size : ret;
 }