nandwrite: implement -n (read/write without ecc)
No binary (build failed)
—
(log yok)
| @@ -29,16 +29,18 @@ | |
| //kbuild:lib-$(CONFIG_NANDDUMP) += nandwrite.o | |
| //usage:#define nandwrite_trivial_usage | |
| - | //usage: "[-p] [-s ADDR] MTD_DEVICE [FILE]" |
| + | //usage: "[-np] [-s ADDR] MTD_DEVICE [FILE]" |
| //usage:#define nandwrite_full_usage "\n\n" | |
| //usage: "Write to MTD_DEVICE\n" | |
| + | //usage: "\n -n Write without ecc" |
| //usage: "\n -p Pad to page size" | |
| //usage: "\n -s ADDR Start address" | |
| //usage:#define nanddump_trivial_usage | |
| - | //usage: "[-o]" IF_LONG_OPTS(" [--bb=padbad|skipbad]") " [-s ADDR] [-l LEN] [-f FILE] MTD_DEVICE" |
| + | //usage: "[-no]" IF_LONG_OPTS(" [--bb=padbad|skipbad]") " [-s ADDR] [-l LEN] [-f FILE] MTD_DEVICE" |
| //usage:#define nanddump_full_usage "\n\n" | |
| //usage: "Dump MTD_DEVICE\n" | |
| + | //usage: "\n -n Read without ecc" |
| //usage: "\n -o Dump oob data" | |
| //usage: "\n -s ADDR Start address" | |
| //usage: "\n -l LEN Length" | |
| @@ -57,10 +59,11 @@ | |
| #define OPT_p (1 << 0) /* nandwrite only */ | |
| #define OPT_o (1 << 0) /* nanddump only */ | |
| - | #define OPT_s (1 << 1) |
| - | #define OPT_f (1 << 2) |
| - | #define OPT_l (1 << 3) |
| - | #define OPT_bb (1 << 4) /* must be the last one in the list */ |
| + | #define OPT_n (1 << 1) |
| + | #define OPT_s (1 << 2) |
| + | #define OPT_f (1 << 3) |
| + | #define OPT_l (1 << 4) |
| + | #define OPT_bb (1 << 5) /* must be the last one in the list */ |
| #define BB_PADBAD (1 << 0) | |
| #define BB_SKIPBAD (1 << 1) | |
| @@ -125,10 +128,10 @@ int nandwrite_main(int argc UNUSED_PARAM, char **argv) | |
| applet_long_options = | |
| "bb\0" Required_argument "\xff"; /* no short equivalent */ | |
| #endif | |
| - | opts = getopt32(argv, "os:f:l:", &opt_s, &opt_f, &opt_l, &opt_bb); |
| + | opts = getopt32(argv, "ons:f:l:", &opt_s, &opt_f, &opt_l, &opt_bb); |
| } else { /* nandwrite */ | |
| opt_complementary = "-1:?2"; | |
| - | opts = getopt32(argv, "ps:", &opt_s); |
| + | opts = getopt32(argv, "pns:", &opt_s); |
| } | |
| argv += optind; | |
| @@ -144,6 +147,9 @@ int nandwrite_main(int argc UNUSED_PARAM, char **argv) | |
| fd = xopen(argv[0], IS_NANDWRITE ? O_RDWR : O_RDONLY); | |
| xioctl(fd, MEMGETINFO, &meminfo); | |
| + | if (opts & OPT_n) |
| + | xioctl(fd, MTDFILEMODE, (void *)MTD_FILE_MODE_RAW); |
| + | |
| mtdoffset = xstrtou(opt_s, 0); | |
| if (IS_NANDDUMP && (opts & OPT_l)) { | |
| unsigned length = xstrtou(opt_l, 0); | |