Commit 43e6627259da3900a73f40fb2fe3a6f106c0e2d7
Committed by
Marek Vasut
1 parent
5fb29f3c48
Exists in
master
and in
57 other branches
dfu:usb: Support for ext4
Support for ext4 file system handling at DFU. Signed-off-by: Lukasz Majewski <l.majewski@samsung.com> Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com> Reviewed-by: Marek Vasut <marex@denx.de>
Showing 1 changed file with 26 additions and 6 deletions Side-by-side Diff
drivers/dfu/dfu_mmc.c
| ... | ... | @@ -63,10 +63,23 @@ |
| 63 | 63 | char *str_env; |
| 64 | 64 | int ret; |
| 65 | 65 | |
| 66 | - sprintf(cmd_buf, "fat%s mmc %d:%d 0x%x %s %lx", | |
| 67 | - op == DFU_OP_READ ? "load" : "write", | |
| 68 | - dfu->data.mmc.dev, dfu->data.mmc.part, | |
| 69 | - (unsigned int) buf, dfu->name, *len); | |
| 66 | + switch (dfu->layout) { | |
| 67 | + case DFU_FS_FAT: | |
| 68 | + sprintf(cmd_buf, "fat%s mmc %d:%d 0x%x %s %lx", | |
| 69 | + op == DFU_OP_READ ? "load" : "write", | |
| 70 | + dfu->data.mmc.dev, dfu->data.mmc.part, | |
| 71 | + (unsigned int) buf, dfu->name, *len); | |
| 72 | + break; | |
| 73 | + case DFU_FS_EXT4: | |
| 74 | + sprintf(cmd_buf, "ext4%s mmc %d:%d /%s 0x%x %ld", | |
| 75 | + op == DFU_OP_READ ? "load" : "write", | |
| 76 | + dfu->data.mmc.dev, dfu->data.mmc.part, | |
| 77 | + dfu->name, (unsigned int) buf, *len); | |
| 78 | + break; | |
| 79 | + default: | |
| 80 | + printf("%s: Layout (%s) not (yet) supported!\n", __func__, | |
| 81 | + dfu_get_layout(dfu->layout)); | |
| 82 | + } | |
| 70 | 83 | |
| 71 | 84 | debug("%s: %s 0x%p\n", __func__, cmd_buf, cmd_buf); |
| 72 | 85 | |
| ... | ... | @@ -107,6 +120,7 @@ |
| 107 | 120 | ret = mmc_block_write(dfu, buf, len); |
| 108 | 121 | break; |
| 109 | 122 | case DFU_FS_FAT: |
| 123 | + case DFU_FS_EXT4: | |
| 110 | 124 | ret = mmc_file_write(dfu, buf, len); |
| 111 | 125 | break; |
| 112 | 126 | default: |
| ... | ... | @@ -126,6 +140,7 @@ |
| 126 | 140 | ret = mmc_block_read(dfu, buf, len); |
| 127 | 141 | break; |
| 128 | 142 | case DFU_FS_FAT: |
| 143 | + case DFU_FS_EXT4: | |
| 129 | 144 | ret = mmc_file_read(dfu, buf, len); |
| 130 | 145 | break; |
| 131 | 146 | default: |
| 132 | 147 | |
| ... | ... | @@ -149,10 +164,15 @@ |
| 149 | 164 | dfu->data.mmc.lba_blk_size = get_mmc_blk_size(dfu->dev_num); |
| 150 | 165 | } else if (!strcmp(st, "fat")) { |
| 151 | 166 | dfu->layout = DFU_FS_FAT; |
| 152 | - dfu->data.mmc.dev = simple_strtoul(s, &s, 10); | |
| 153 | - dfu->data.mmc.part = simple_strtoul(++s, &s, 10); | |
| 167 | + } else if (!strcmp(st, "ext4")) { | |
| 168 | + dfu->layout = DFU_FS_EXT4; | |
| 154 | 169 | } else { |
| 155 | 170 | printf("%s: Memory layout (%s) not supported!\n", __func__, st); |
| 171 | + } | |
| 172 | + | |
| 173 | + if (dfu->layout == DFU_FS_EXT4 || dfu->layout == DFU_FS_FAT) { | |
| 174 | + dfu->data.mmc.dev = simple_strtoul(s, &s, 10); | |
| 175 | + dfu->data.mmc.part = simple_strtoul(++s, &s, 10); | |
| 156 | 176 | } |
| 157 | 177 | |
| 158 | 178 | dfu->read_medium = dfu_read_medium_mmc; |