usb:gadget:f_thor: fix write to filesystem by add dfu_flush()
authorPrzemyslaw Marczak <p.marczak@samsung.com>
Fri, 18 Apr 2014 07:12:19 +0000 (09:12 +0200)
committerPrzemyslaw Marczak <p.marczak@samsung.com>
Fri, 25 Apr 2014 09:28:23 +0000 (11:28 +0200)
Since dfu read/write operations needs to be flushed manually,
writing to filesystem on MMC by thor was broken. MMC raw write
actually is working fine because current dfu_flush() function
writes filesystem only. This commit adds dfu_flush() to f_thor
and now filesystem write is working.

This change was tested on Trats2 board.

Signed-off-by: Przemyslaw Marczak <p.marczak@samsung.com>
Cc: Lukasz Majewski <l.majewski@samsung.com>
Cc: Marek Vasut <marex@denx.de>
Cc: Heiko Schocher <hs@denx.de>
Cc: Tom Rini <trini@ti.com>
drivers/usb/gadget/f_thor.c

index b5a199ae10010c425730c6e86d316b8e3c1bf8fe..cdf34c8c31db95dac6ba10dcf7255b949c920094 100644 (file)
@@ -238,15 +238,15 @@ static int download_tail(long long int left, int cnt)
        }
 
        /*
-        * To store last "packet" DFU storage backend requires dfu_write with
-        * size parameter equal to 0
+        * To store last "packet" or write file from buffer to filesystem
+        * DFU storage backend requires dfu_flush
         *
         * This also frees memory malloc'ed by dfu_get_buf(), so no explicit
         * need fo call dfu_free_buf() is needed.
         */
-       ret = dfu_write(dfu_entity, transfer_buffer, 0, cnt);
+       ret = dfu_flush(dfu_entity, transfer_buffer, 0, cnt);
        if (ret)
-               error("DFU write failed [%d] cnt: %d", ret, cnt);
+               error("DFU flush failed!");
 
 exit:
        return ret;