diff options
author | Sascha Hauer <s.hauer@pengutronix.de> | 2020-11-10 15:07:38 +0100 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2020-11-10 15:07:38 +0100 |
commit | 7b1d8b4b3561c043a79d5933a7c1eb9266dc328d (patch) | |
tree | 9c398aa20e22763a239d11eecf6fb4c1d06d4c97 /commands/nand-bitflip.c | |
parent | 0b0eada569b198aa3882cfec5874bc35a8a0fa14 (diff) | |
parent | 4db0f1c3dbe6173fdf91cbeb83e250719332c6a3 (diff) | |
download | barebox-7b1d8b4b3561c043a79d5933a7c1eb9266dc328d.tar.gz barebox-7b1d8b4b3561c043a79d5933a7c1eb9266dc328d.tar.xz |
Merge branch 'for-next/mtd-nand'
Diffstat (limited to 'commands/nand-bitflip.c')
-rw-r--r-- | commands/nand-bitflip.c | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/commands/nand-bitflip.c b/commands/nand-bitflip.c index 7335f77379..1395021ec0 100644 --- a/commands/nand-bitflip.c +++ b/commands/nand-bitflip.c @@ -10,6 +10,25 @@ #include <linux/mtd/mtd.h> #include <mtd/mtd-peb.h> +static int bitflip_mtd_read(struct mtd_info *mtd, loff_t from, size_t len, + size_t *retlen, void *buf) +{ + int ret_code; + + if (mtd->_read_oob) { + struct mtd_oob_ops ops = { + .len = len, + .datbuf = buf, + }; + + ret_code = mtd->_read_oob(mtd, from, &ops); + } else { + ret_code = mtd->_read(mtd, from, len, retlen, buf); + } + + return ret_code; +} + static int do_nand_bitflip(int argc, char *argv[]) { int opt, ret, fd; @@ -34,7 +53,7 @@ static int do_nand_bitflip(int argc, char *argv[]) block = simple_strtoul(optarg, NULL, 0); break; case 'o': - offset = simple_strtoull(optarg, NULL, 0); + offset = strtoull_suffix(optarg, NULL, 0); break; case 'c': check = 1; @@ -77,7 +96,7 @@ static int do_nand_bitflip(int argc, char *argv[]) buf = xzalloc(meminfo.writesize); roffset = (loff_t)block * meminfo.mtd->erasesize + offset; - ret = meminfo.mtd->read(meminfo.mtd, roffset, meminfo.writesize, &r, buf); + ret = bitflip_mtd_read(meminfo.mtd, roffset, meminfo.writesize, &r, buf); if (ret > 0) { printf("page at block %d, offset 0x%08llx has %d bitflips%s\n", block, offset, ret, |