usb, dfu: extract flush code into seperate function
authorHeiko Schocher <hs@denx.de>
Tue, 18 Mar 2014 07:09:55 +0000 (08:09 +0100)
committerChanho Park <chanho61.park@samsung.com>
Fri, 24 Jul 2015 07:29:52 +0000 (16:29 +0900)
move the flushing code into an extra function dfu_flush(),
so it can be used from other code.

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>
drivers/dfu/dfu.c
include/dfu.h

index 8f52f0dd9407371b64354e89435671635ddd0910..4ba64c28e119ac99658e6f143561897f5be4ba76 100644 (file)
@@ -139,6 +139,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;
@@ -210,24 +232,8 @@ int dfu_write(struct dfu_entity *dfu, void *buf, int size, int blk_seq_num)
        }
 
        /* 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;
-
-       }
+       if (size == 0)
+               ret = dfu_flush(dfu, buf, size, blk_seq_num);
 
        return ret = 0 ? size : ret;
 }
index 3fe72ee8dcad364040d40718c668972a2b49b24d..858e9c6b0eabbf553a793f2bb7c28237ac764223 100644 (file)
@@ -150,6 +150,7 @@ unsigned long dfu_get_buf_size(void);
 
 int dfu_read(struct dfu_entity *de, void *buf, int size, int blk_seq_num);
 int dfu_write(struct dfu_entity *de, void *buf, int size, int blk_seq_num);
+int dfu_flush(struct dfu_entity *de, void *buf, int size, int blk_seq_num);
 /* Device specific */
 #ifdef CONFIG_DFU_MMC
 extern int dfu_fill_entity_mmc(struct dfu_entity *dfu, char *s);