]> git.sur5r.net Git - u-boot/commitdiff
dfu: remove limitation on partition size
authorPatrick Delaunay <patrick.delaunay@st.com>
Wed, 19 Jul 2017 14:39:23 +0000 (16:39 +0200)
committerMarek Vasut <marex@denx.de>
Fri, 28 Jul 2017 21:34:39 +0000 (23:34 +0200)
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>
drivers/dfu/dfu.c
drivers/dfu/dfu_mmc.c
drivers/dfu/dfu_nand.c
drivers/dfu/dfu_ram.c
drivers/dfu/dfu_sf.c
include/dfu.h

index c77701646bc25b2400fe8f1dca9beec57c20b1d8..0f1ab0d9f0d5fecc586d81f17f860296fc335e45 100644 (file)
@@ -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;
index d918f95f5ccf46cd2ba6b1d833b8144a3e4839f9..bb23e7fdcb08e8f683e575d2264c994cef45cc50 100644 (file)
@@ -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);
index ed4ceb7a076a857b80397e200f3f4d47f5e371fd..6dc9ff7aeaf77b756d244dc69fe1ab4ef657a717 100644 (file)
@@ -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;
 
index b95cb9facf51caba1b704f070a92f2fbe0a82c1d..6e3f5316f5ada793bcbcf02be408167a3cca2c37 100644 (file)
@@ -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;
 
index 2b26f2c60843b43f55b6ce5b318796a64fd1d38a..2d2586db52ad0a9c9ca56d33b115c5b6ff37f9f6 100644 (file)
@@ -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;
 
index 5b621b577b3172c6fb6f09a4330ec82e2d513f91..7e322d9d2764d4091cd00cf87709a33da991c38f 100644 (file)
@@ -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 */