On 9/14/21 11:31 AM, Lukasz Majewski wrote:
On Tue, 14 Sep 2021 05:26:51 +0200
Marek Vasut <ma...@denx.de> wrote:
Not all SPI flashes and controllers can do continuous transfer longer
than 16 MiB, so perform the DFU read in 16 MiB chunks.
Signed-off-by: Marek Vasut <ma...@denx.de>
Cc: Lukasz Majewski <lu...@denx.de>
---
drivers/dfu/dfu_sf.c | 14 ++++++++++++--
1 file changed, 12 insertions(+), 2 deletions(-)
diff --git a/drivers/dfu/dfu_sf.c b/drivers/dfu/dfu_sf.c
index 7e64ab772f0..b72493ced86 100644
--- a/drivers/dfu/dfu_sf.c
+++ b/drivers/dfu/dfu_sf.c
@@ -24,8 +24,18 @@ static int dfu_get_medium_size_sf(struct
dfu_entity *dfu, u64 *size) static int dfu_read_medium_sf(struct
dfu_entity *dfu, u64 offset, void *buf, long *len)
{
- return spi_flash_read(dfu->data.sf.dev, dfu->data.sf.start +
offset,
- *len, buf);
+ long seglen = *len;
+ int ret;
+
+ if (seglen > (16 << 20))
+ seglen = (16 << 20);
+
+ ret = spi_flash_read(dfu->data.sf.dev, dfu->data.sf.start +
offset,
+ seglen, buf);
+ if (!ret)
+ *len = seglen;
+
+ return ret;
}
static u64 find_sector(struct dfu_entity *dfu, u64 start, u64 offset)
Reviewed-by: Lukasz Majewski <lu...@denx.de>
Is there going to be a PR with this or shall Tom pick it directly, since
it is just one patch ?