summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPatrick Delaunay <patrick.delaunay@st.com>2017-07-19 17:39:23 +0300
committerMarek Vasut <marex@denx.de>2017-07-29 00:34:39 +0300
commit15970d871c299c8a4218911ee68edb0495a69cd4 (patch)
treef8f31f420ca9e3f4f1ec4be3cc568303c59f833d
parent4de512018ba7d57f1672be21c7459281f7c97514 (diff)
downloadu-boot-15970d871c299c8a4218911ee68edb0495a69cd4.tar.xz
dfu: remove limitation on partition size
Change long (32 bits on arm) to u64 (same type than offset) for size and read offset r_left So partition and device used for DFU can be greater than 4GB Signed-off-by: Patrick Delaunay <patrick.delaunay@st.com>
-rw-r--r--drivers/dfu/dfu.c2
-rw-r--r--drivers/dfu/dfu_mmc.c10
-rw-r--r--drivers/dfu/dfu_nand.c2
-rw-r--r--drivers/dfu/dfu_ram.c2
-rw-r--r--drivers/dfu/dfu_sf.c2
-rw-r--r--include/dfu.h4
6 files changed, 11 insertions, 11 deletions
diff --git a/drivers/dfu/dfu.c b/drivers/dfu/dfu.c
index c77701646b..0f1ab0d9f0 100644
--- a/drivers/dfu/dfu.c
+++ b/drivers/dfu/dfu.c
@@ -343,7 +343,7 @@ int dfu_read(struct dfu_entity *dfu, void *buf, int size, int blk_seq_num)
if (ret < 0)
return ret;
- debug("%s: %s %ld [B]\n", __func__, dfu->name, dfu->r_left);
+ debug("%s: %s %lld [B]\n", __func__, dfu->name, dfu->r_left);
dfu->i_blk_seq_num = 0;
dfu->crc = 0;
diff --git a/drivers/dfu/dfu_mmc.c b/drivers/dfu/dfu_mmc.c
index d918f95f5c..bb23e7fdcb 100644
--- a/drivers/dfu/dfu_mmc.c
+++ b/drivers/dfu/dfu_mmc.c
@@ -17,7 +17,7 @@
#include <mmc.h>
static unsigned char *dfu_file_buf;
-static long dfu_file_buf_len;
+static u64 dfu_file_buf_len;
static long dfu_file_buf_filled;
static int mmc_block_op(enum dfu_op op, struct dfu_entity *dfu,
@@ -107,7 +107,7 @@ static int mmc_file_buffer(struct dfu_entity *dfu, void *buf, long *len)
}
static int mmc_file_op(enum dfu_op op, struct dfu_entity *dfu,
- void *buf, long *len)
+ void *buf, u64 *len)
{
const char *fsname, *opname;
char cmd_buf[DFU_CMD_BUF_SIZE];
@@ -150,7 +150,7 @@ static int mmc_file_op(enum dfu_op op, struct dfu_entity *dfu,
sprintf(cmd_buf + strlen(cmd_buf), " %s", dfu->name);
if (op == DFU_OP_WRITE)
- sprintf(cmd_buf + strlen(cmd_buf), " %lx", *len);
+ sprintf(cmd_buf + strlen(cmd_buf), " %llx", *len);
debug("%s: %s 0x%p\n", __func__, cmd_buf, cmd_buf);
@@ -209,7 +209,7 @@ int dfu_flush_medium_mmc(struct dfu_entity *dfu)
return ret;
}
-int dfu_get_medium_size_mmc(struct dfu_entity *dfu, long *size)
+int dfu_get_medium_size_mmc(struct dfu_entity *dfu, u64 *size)
{
int ret;
@@ -237,7 +237,7 @@ static int mmc_file_unbuffer(struct dfu_entity *dfu, u64 offset, void *buf,
long *len)
{
int ret;
- long file_len;
+ u64 file_len;
if (dfu_file_buf_filled == -1) {
ret = mmc_file_op(DFU_OP_READ, dfu, dfu_file_buf, &file_len);
diff --git a/drivers/dfu/dfu_nand.c b/drivers/dfu/dfu_nand.c
index ed4ceb7a07..6dc9ff7aea 100644
--- a/drivers/dfu/dfu_nand.c
+++ b/drivers/dfu/dfu_nand.c
@@ -114,7 +114,7 @@ static int dfu_write_medium_nand(struct dfu_entity *dfu,
return ret;
}
-int dfu_get_medium_size_nand(struct dfu_entity *dfu, long *size)
+int dfu_get_medium_size_nand(struct dfu_entity *dfu, u64 *size)
{
*size = dfu->data.nand.size;
diff --git a/drivers/dfu/dfu_ram.c b/drivers/dfu/dfu_ram.c
index b95cb9facf..6e3f5316f5 100644
--- a/drivers/dfu/dfu_ram.c
+++ b/drivers/dfu/dfu_ram.c
@@ -41,7 +41,7 @@ static int dfu_write_medium_ram(struct dfu_entity *dfu, u64 offset,
return dfu_transfer_medium_ram(DFU_OP_WRITE, dfu, offset, buf, len);
}
-int dfu_get_medium_size_ram(struct dfu_entity *dfu, long *size)
+int dfu_get_medium_size_ram(struct dfu_entity *dfu, u64 *size)
{
*size = dfu->data.ram.size;
diff --git a/drivers/dfu/dfu_sf.c b/drivers/dfu/dfu_sf.c
index 2b26f2c608..2d2586db52 100644
--- a/drivers/dfu/dfu_sf.c
+++ b/drivers/dfu/dfu_sf.c
@@ -12,7 +12,7 @@
#include <spi.h>
#include <spi_flash.h>
-static int dfu_get_medium_size_sf(struct dfu_entity *dfu, long *size)
+static int dfu_get_medium_size_sf(struct dfu_entity *dfu, u64 *size)
{
*size = dfu->data.sf.size;
diff --git a/include/dfu.h b/include/dfu.h
index 5b621b577b..7e322d9d27 100644
--- a/include/dfu.h
+++ b/include/dfu.h
@@ -110,7 +110,7 @@ struct dfu_entity {
struct sf_internal_data sf;
} data;
- int (*get_medium_size)(struct dfu_entity *dfu, long *size);
+ int (*get_medium_size)(struct dfu_entity *dfu, u64 *size);
int (*read_medium)(struct dfu_entity *dfu,
u64 offset, void *buf, long *len);
@@ -132,7 +132,7 @@ struct dfu_entity {
u8 *i_buf;
u8 *i_buf_start;
u8 *i_buf_end;
- long r_left;
+ u64 r_left;
long b_left;
u32 bad_skip; /* for nand use */