|
|
|
@ -241,6 +241,25 @@ mtd_erase(const char *mtd)
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
int
|
|
|
|
|
mtd_refresh(const char *mtd)
|
|
|
|
|
{
|
|
|
|
|
int fd;
|
|
|
|
|
|
|
|
|
|
fd = mtd_open(mtd, O_RDWR | O_SYNC);
|
|
|
|
|
if(fd < 0) {
|
|
|
|
|
fprintf(stderr, "Could not open mtd device: %s\n", mtd);
|
|
|
|
|
exit(1);
|
|
|
|
|
}
|
|
|
|
|
if (ioctl(fd, MTDREFRESH, NULL)) {
|
|
|
|
|
fprintf(stderr, "Failed to refresh the MTD device\n");
|
|
|
|
|
close(fd);
|
|
|
|
|
exit(1);
|
|
|
|
|
}
|
|
|
|
|
close(fd);
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
int
|
|
|
|
|
mtd_write(int imagefd, const char *mtd)
|
|
|
|
|
{
|
|
|
|
@ -318,6 +337,7 @@ void usage(void)
|
|
|
|
|
"The device is in the format of mtdX (eg: mtd4) or its label.\n"
|
|
|
|
|
"mtd recognizes these commands:\n"
|
|
|
|
|
" unlock unlock the device\n"
|
|
|
|
|
" refresh refresh mtd partition\n"
|
|
|
|
|
" erase erase all data on device\n"
|
|
|
|
|
" write <imagefile>|- write <imagefile> (use - for stdin) to device\n"
|
|
|
|
|
"Following options are available:\n"
|
|
|
|
@ -338,7 +358,8 @@ int main (int argc, char **argv)
|
|
|
|
|
enum {
|
|
|
|
|
CMD_ERASE,
|
|
|
|
|
CMD_WRITE,
|
|
|
|
|
CMD_UNLOCK
|
|
|
|
|
CMD_UNLOCK,
|
|
|
|
|
CMD_REFRESH
|
|
|
|
|
} cmd;
|
|
|
|
|
|
|
|
|
|
erase[0] = NULL;
|
|
|
|
@ -380,6 +401,9 @@ int main (int argc, char **argv)
|
|
|
|
|
if ((strcmp(argv[0], "unlock") == 0) && (argc == 2)) {
|
|
|
|
|
cmd = CMD_UNLOCK;
|
|
|
|
|
device = argv[1];
|
|
|
|
|
} else if ((strcmp(argv[0], "refresh") == 0) && (argc == 2)) {
|
|
|
|
|
cmd = CMD_REFRESH;
|
|
|
|
|
device = argv[1];
|
|
|
|
|
} else if ((strcmp(argv[0], "erase") == 0) && (argc == 2)) {
|
|
|
|
|
cmd = CMD_ERASE;
|
|
|
|
|
device = argv[1];
|
|
|
|
@ -451,6 +475,13 @@ int main (int argc, char **argv)
|
|
|
|
|
if (quiet < 2)
|
|
|
|
|
fprintf(stderr, "\n");
|
|
|
|
|
break;
|
|
|
|
|
case CMD_REFRESH:
|
|
|
|
|
if (quiet < 2)
|
|
|
|
|
fprintf(stderr, "Refreshing mtd partition %s ... ");
|
|
|
|
|
mtd_refresh(device);
|
|
|
|
|
if (quiet < 2)
|
|
|
|
|
fprintf(stderr, "\n");
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
sync();
|
|
|
|
|