]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
dfu: mmc: rearrange the code
authorMarek Szyprowski <m.szyprowski@samsung.com>
Mon, 2 Dec 2019 11:11:15 +0000 (12:11 +0100)
committerMatthias Brugger <mbrugger@suse.com>
Wed, 29 Jan 2020 17:30:33 +0000 (18:30 +0100)
Rename functions for bufferred file io operations to make them easier to
understand. Also add missing file offset argument to them (currently
unused). All this is a preparation to remove predefined file size limit
(CONFIG_SYS_DFU_MAX_FILE_SIZE) for DFU read/write operations.

Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
Acked-by: Lukasz Majewski <lukma@denx.de>
Signed-off-by: Matthias Brugger <mbrugger@suse.com>
drivers/dfu/dfu_mmc.c

index 5b551f6ae115c91f4757f150fe491e6d77e57fe1..e52c02be10758f3f78b04226998f22b52987d74f 100644 (file)
@@ -91,22 +91,8 @@ static int mmc_block_op(enum dfu_op op, struct dfu_entity *dfu,
        return 0;
 }
 
-static int mmc_file_buffer(struct dfu_entity *dfu, void *buf, long *len)
-{
-       if (dfu_file_buf_len + *len > CONFIG_SYS_DFU_MAX_FILE_SIZE) {
-               dfu_file_buf_len = 0;
-               return -EINVAL;
-       }
-
-       /* Add to the current buffer. */
-       memcpy(dfu_file_buf + dfu_file_buf_len, buf, *len);
-       dfu_file_buf_len += *len;
-
-       return 0;
-}
-
 static int mmc_file_op(enum dfu_op op, struct dfu_entity *dfu,
-                       void *buf, u64 *len)
+                       u64 offset, void *buf, u64 *len)
 {
        char dev_part_str[8];
        int ret;
@@ -137,7 +123,7 @@ static int mmc_file_op(enum dfu_op op, struct dfu_entity *dfu,
 
        switch (op) {
        case DFU_OP_READ:
-               ret = fs_read(dfu->name, (size_t)buf, 0, 0, &size);
+               ret = fs_read(dfu->name, (size_t)buf, offset, 0, &size);
                if (ret) {
                        puts("dfu: fs_read error!\n");
                        return ret;
@@ -145,7 +131,7 @@ static int mmc_file_op(enum dfu_op op, struct dfu_entity *dfu,
                *len = size;
                break;
        case DFU_OP_WRITE:
-               ret = fs_write(dfu->name, (size_t)buf, 0, *len, &size);
+               ret = fs_write(dfu->name, (size_t)buf, offset, *len, &size);
                if (ret) {
                        puts("dfu: fs_write error!\n");
                        return ret;
@@ -166,6 +152,30 @@ static int mmc_file_op(enum dfu_op op, struct dfu_entity *dfu,
        return ret;
 }
 
+static int mmc_file_buf_write(struct dfu_entity *dfu, u64 offset, void *buf, long *len)
+{
+       if (dfu_file_buf_len + *len > CONFIG_SYS_DFU_MAX_FILE_SIZE) {
+               dfu_file_buf_len = 0;
+               return -EINVAL;
+       }
+
+       /* Add to the current buffer. */
+       memcpy(dfu_file_buf + dfu_file_buf_len, buf, *len);
+       dfu_file_buf_len += *len;
+
+       return 0;
+}
+
+static int mmc_file_buf_write_finish(struct dfu_entity *dfu)
+{
+       int ret = mmc_file_op(DFU_OP_WRITE, dfu, 0, dfu_file_buf,
+                       &dfu_file_buf_len);
+
+       /* Now that we're done */
+       dfu_file_buf_len = 0;
+       return ret;
+}
+
 int dfu_write_medium_mmc(struct dfu_entity *dfu,
                u64 offset, void *buf, long *len)
 {
@@ -177,7 +187,7 @@ int dfu_write_medium_mmc(struct dfu_entity *dfu,
                break;
        case DFU_FS_FAT:
        case DFU_FS_EXT4:
-               ret = mmc_file_buffer(dfu, buf, len);
+               ret = mmc_file_buf_write(dfu, offset, buf, len);
                break;
        default:
                printf("%s: Layout (%s) not (yet) supported!\n", __func__,
@@ -193,11 +203,7 @@ int dfu_flush_medium_mmc(struct dfu_entity *dfu)
 
        if (dfu->layout != DFU_RAW_ADDR) {
                /* Do stuff here. */
-               ret = mmc_file_op(DFU_OP_WRITE, dfu, dfu_file_buf,
-                               &dfu_file_buf_len);
-
-               /* Now that we're done */
-               dfu_file_buf_len = 0;
+               ret = mmc_file_buf_write_finish(dfu);
        }
 
        return ret;
@@ -214,7 +220,7 @@ int dfu_get_medium_size_mmc(struct dfu_entity *dfu, u64 *size)
        case DFU_FS_FAT:
        case DFU_FS_EXT4:
                dfu_file_buf_filled = -1;
-               ret = mmc_file_op(DFU_OP_SIZE, dfu, NULL, size);
+               ret = mmc_file_op(DFU_OP_SIZE, dfu, 0, NULL, size);
                if (ret < 0)
                        return ret;
                if (*size > CONFIG_SYS_DFU_MAX_FILE_SIZE)
@@ -227,14 +233,15 @@ int dfu_get_medium_size_mmc(struct dfu_entity *dfu, u64 *size)
        }
 }
 
-static int mmc_file_unbuffer(struct dfu_entity *dfu, u64 offset, void *buf,
+
+static int mmc_file_buf_read(struct dfu_entity *dfu, u64 offset, void *buf,
                             long *len)
 {
        int ret;
        u64 file_len;
 
        if (dfu_file_buf_filled == -1) {
-               ret = mmc_file_op(DFU_OP_READ, dfu, dfu_file_buf, &file_len);
+               ret = mmc_file_op(DFU_OP_READ, dfu, 0, dfu_file_buf, &file_len);
                if (ret < 0)
                        return ret;
                dfu_file_buf_filled = file_len;
@@ -259,7 +266,7 @@ int dfu_read_medium_mmc(struct dfu_entity *dfu, u64 offset, void *buf,
                break;
        case DFU_FS_FAT:
        case DFU_FS_EXT4:
-               ret = mmc_file_unbuffer(dfu, offset, buf, len);
+               ret = mmc_file_buf_read(dfu, offset, buf, len);
                break;
        default:
                printf("%s: Layout (%s) not (yet) supported!\n", __func__,