diff options
Diffstat (limited to 'package/system/mtd/src/mtd.c')
-rw-r--r-- | package/system/mtd/src/mtd.c | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/package/system/mtd/src/mtd.c b/package/system/mtd/src/mtd.c index c5115a794c..a8464947f3 100644 --- a/package/system/mtd/src/mtd.c +++ b/package/system/mtd/src/mtd.c @@ -737,6 +737,8 @@ static void usage(void) if (mtd_fixtrx) { fprintf(stderr, " -o offset offset of the image header in the partition(for fixtrx)\n"); + fprintf(stderr, + " -c datasize amount of data to be used for checksum calculation (for fixtrx)\n"); } fprintf(stderr, #ifdef FIS_SUPPORT @@ -769,7 +771,7 @@ int main (int argc, char **argv) int ch, i, boot, imagefd = 0, force, unlocked; char *erase[MAX_ARGS], *device = NULL; char *fis_layout = NULL; - size_t offset = 0, part_offset = 0, dump_len = 0; + size_t offset = 0, data_size = 0, part_offset = 0, dump_len = 0; enum { CMD_ERASE, CMD_WRITE, @@ -793,7 +795,7 @@ int main (int argc, char **argv) #ifdef FIS_SUPPORT "F:" #endif - "frnqe:d:s:j:p:o:l:")) != -1) + "frnqe:d:s:j:p:o:c:l:")) != -1) switch (ch) { case 'f': force = 1; @@ -853,6 +855,14 @@ int main (int argc, char **argv) usage(); } break; + case 'c': + errno = 0; + data_size = strtoul(optarg, 0, 0); + if (errno) { + fprintf(stderr, "-d: illegal numeric string\n"); + usage(); + } + break; #ifdef FIS_SUPPORT case 'F': fis_layout = optarg; @@ -967,7 +977,7 @@ int main (int argc, char **argv) break; case CMD_FIXTRX: if (mtd_fixtrx) { - mtd_fixtrx(device, offset); + mtd_fixtrx(device, offset, data_size); } break; case CMD_RESETBC: |