summaryrefslogtreecommitdiff
path: root/drivers/dfu
diff options
context:
space:
mode:
authorPrzemyslaw Marczak <p.marczak@samsung.com>2014-05-12 12:05:33 +0200
committerMarek Vasut <marex@denx.de>2014-05-15 00:23:56 +0200
commit1aa4bdc82db1e0393a461e0cd908d88418e1f632 (patch)
treef8f31b282c8a8df758e3c26243af305917d11d3e /drivers/dfu
parent8630c1c7e395e946ca6f98e2500e86e14f2c56bb (diff)
downloadu-boot-imx-1aa4bdc82db1e0393a461e0cd908d88418e1f632.zip
u-boot-imx-1aa4bdc82db1e0393a461e0cd908d88418e1f632.tar.gz
u-boot-imx-1aa4bdc82db1e0393a461e0cd908d88418e1f632.tar.bz2
drivers:dfu: dfu_flush(): add raw data flush to complete dfu write
Before dfu write and flush operations separation, dfu write data was flushed by host download request with len of zero size. Since above change manually calling dfu write with zero size has non sense (e.g. in THOR). This should be done by flush operation. So now dfu_write_buffer_drain() is called in dfu_flush(). If there is any raw data to flush (like it can be in thor) then it will be physically written to medium. Signed-off-by: Przemyslaw Marczak <p.marczak@samsung.com> Cc: Lukasz Majewski <l.majewski@samsung.com> Cc: Heiko Schocher <hs@denx.de> Cc: Marek Vasut <marex@denx.de>
Diffstat (limited to 'drivers/dfu')
-rw-r--r--drivers/dfu/dfu.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/dfu/dfu.c b/drivers/dfu/dfu.c
index 51b1026..a938109 100644
--- a/drivers/dfu/dfu.c
+++ b/drivers/dfu/dfu.c
@@ -131,6 +131,10 @@ int dfu_flush(struct dfu_entity *dfu, void *buf, int size, int blk_seq_num)
{
int ret = 0;
+ ret = dfu_write_buffer_drain(dfu);
+ if (ret)
+ return ret;
+
if (dfu->flush_medium)
ret = dfu->flush_medium(dfu);