mirror of
git://projects.qi-hardware.com/openwrt-xburst.git
synced 2024-11-30 17:40:16 +02:00
add 'mtd refresh' command
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@8439 3c298f89-4303-0410-b956-a3cf2f4a3e73
This commit is contained in:
parent
7b7737acaf
commit
4f8894887d
@ -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();
|
||||
|
@ -96,6 +96,7 @@ struct region_info_user {
|
||||
#define MEMGETREGIONINFO _IOWR('M', 8, struct region_info_user)
|
||||
#define MEMREADDATA _IOWR('M', 9, struct mtd_oob_buf)
|
||||
#define MEMWRITEDATA _IOWR('M', 10, struct mtd_oob_buf)
|
||||
#define MTDREFRESH _IO('M', 23)
|
||||
|
||||
#ifndef __KERNEL__
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user