]> git.karo-electronics.de Git - karo-tx-uboot.git/blobdiff - drivers/dfu/dfu.c
Merge branch 'master' of git://git.denx.de/u-boot-arm
[karo-tx-uboot.git] / drivers / dfu / dfu.c
index 4a8804e4b70789df280863dfb88fed3508ae79bd..07011e99a850fafa7475d02451c8f358986b7f3c 100644 (file)
@@ -74,6 +74,11 @@ unsigned char *dfu_free_buf(void)
        return dfu_buf;
 }
 
+unsigned long dfu_get_buf_size(void)
+{
+       return dfu_buf_size;
+}
+
 unsigned char *dfu_get_buf(void)
 {
        char *s;
@@ -229,6 +234,7 @@ static int dfu_read_buffer_fill(struct dfu_entity *dfu, void *buf, int size)
                        dfu->crc = crc32(dfu->crc, buf, chunk);
                        dfu->i_buf += chunk;
                        dfu->b_left -= chunk;
+                       dfu->r_left -= chunk;
                        size -= chunk;
                        buf += chunk;
                        readn += chunk;
@@ -287,7 +293,7 @@ int dfu_read(struct dfu_entity *dfu, void *buf, int size, int blk_seq_num)
                dfu->offset = 0;
                dfu->i_buf_end = dfu_get_buf() + dfu_buf_size;
                dfu->i_buf = dfu->i_buf_start;
-               dfu->b_left = 0;
+               dfu->b_left = min(dfu_buf_size, dfu->r_left);
 
                dfu->bad_skip = 0;