Commit 9df49553a462f38341d2613f2635064f34f156a0

Authored by Łukasz Majewski
Committed by Tom Rini
1 parent 051f9a3eed

dfu:ext4:fix Fix DFU upload functionality

For the first eMMC read of data for upload, use the "large" dfu_buf (now
configurable) instead of usb request buffer allocated at composite layer
(which is 4KiB) [*].

For eMMC the whole file is read, which usually is larger than the buffer [*]
provided with usb request.

Signed-off-by: Lukasz Majewski <l.majewski@samsung.com>
Cc: Tom Rini <trini@ti.com>
Cc: Pantelis Antoniou <panto@antoniou-consulting.com>
Cc: Marek Vasut <marex@denx.de>
Cc: Heiko Schocher <hs@denx.de>

Showing 1 changed file with 5 additions and 4 deletions Side-by-side Diff

... ... @@ -248,7 +248,11 @@
248 248 __func__, dfu->name, buf, size, blk_seq_num, dfu->i_buf);
249 249  
250 250 if (!dfu->inited) {
251   - ret = dfu->read_medium(dfu, 0, buf, &dfu->r_left);
  251 + dfu->i_buf_start = dfu_get_buf();
  252 + if (dfu->i_buf_start == NULL)
  253 + return -ENOMEM;
  254 +
  255 + ret = dfu->read_medium(dfu, 0, dfu->i_buf_start, &dfu->r_left);
252 256 if (ret != 0) {
253 257 debug("%s: failed to get r_left\n", __func__);
254 258 return ret;
... ... @@ -259,9 +263,6 @@
259 263 dfu->i_blk_seq_num = 0;
260 264 dfu->crc = 0;
261 265 dfu->offset = 0;
262   - dfu->i_buf_start = dfu_get_buf();
263   - if (dfu->i_buf_start == NULL)
264   - return -ENOMEM;
265 266 dfu->i_buf_end = dfu_get_buf() + dfu_buf_size;
266 267 dfu->i_buf = dfu->i_buf_start;
267 268 dfu->b_left = 0;