usb, dfu: extract flush code into seperate function
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>
This commit is contained in:
parent
2c072c958b
commit
a2199afea1
@ -126,6 +126,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,24 +219,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;
|
||||
}
|
||||
|
@ -138,6 +138,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);
|
||||
|
Loading…
Reference in New Issue
Block a user