From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lukasz Majewski Date: Fri, 28 Jun 2013 18:41:50 +0200 Subject: [U-Boot] [PATCH 2/2] dfu:ext4:fix Fix DFU upload functionality In-Reply-To: <1372437710-6361-1-git-send-email-l.majewski@samsung.com> References: <1372437710-6361-1-git-send-email-l.majewski@samsung.com> Message-ID: <1372437710-6361-2-git-send-email-l.majewski@samsung.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de 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 Cc: Tom Rini Cc: Pantelis Antoniou Cc: Marek Vasut Cc: Heiko Schocher --- drivers/dfu/dfu.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/drivers/dfu/dfu.c b/drivers/dfu/dfu.c index e429d74..0521752 100644 --- a/drivers/dfu/dfu.c +++ b/drivers/dfu/dfu.c @@ -248,7 +248,11 @@ int dfu_read(struct dfu_entity *dfu, void *buf, int size, int blk_seq_num) __func__, dfu->name, buf, size, blk_seq_num, dfu->i_buf); if (!dfu->inited) { - ret = dfu->read_medium(dfu, 0, buf, &dfu->r_left); + dfu->i_buf_start = dfu_get_buf(); + if (dfu->i_buf_start == NULL) + return -ENOMEM; + + ret = dfu->read_medium(dfu, 0, dfu->i_buf_start, &dfu->r_left); if (ret != 0) { debug("%s: failed to get r_left\n", __func__); return ret; @@ -259,9 +263,6 @@ int dfu_read(struct dfu_entity *dfu, void *buf, int size, int blk_seq_num) dfu->i_blk_seq_num = 0; dfu->crc = 0; dfu->offset = 0; - dfu->i_buf_start = dfu_get_buf(); - if (dfu->i_buf_start == NULL) - return -ENOMEM; dfu->i_buf_end = dfu_get_buf() + dfu_buf_size; dfu->i_buf = dfu->i_buf_start; dfu->b_left = 0; -- 1.7.10.4