mtd: utilize `mtd_is_*()' functions
Signed-off-by: Brian Norris <computersforpeace@gmail.com> Signed-off-by: Artem Bityutskiy <artem.bityutskiy@intel.com>
This commit is contained in:
committed by
Artem Bityutskiy
parent
7387ce7732
commit
d57f40544a
@@ -128,7 +128,7 @@ static int verify_eraseblock(int ebnum)
|
||||
for (j = 0; j < pgcnt - 1; ++j, addr += pgsize) {
|
||||
/* Do a read to set the internal dataRAMs to different data */
|
||||
err = mtd->read(mtd, addr0, bufsize, &read, twopages);
|
||||
if (err == -EUCLEAN)
|
||||
if (mtd_is_bitflip(err))
|
||||
err = 0;
|
||||
if (err || read != bufsize) {
|
||||
printk(PRINT_PREF "error: read failed at %#llx\n",
|
||||
@@ -136,7 +136,7 @@ static int verify_eraseblock(int ebnum)
|
||||
return err;
|
||||
}
|
||||
err = mtd->read(mtd, addrn - bufsize, bufsize, &read, twopages);
|
||||
if (err == -EUCLEAN)
|
||||
if (mtd_is_bitflip(err))
|
||||
err = 0;
|
||||
if (err || read != bufsize) {
|
||||
printk(PRINT_PREF "error: read failed at %#llx\n",
|
||||
@@ -146,7 +146,7 @@ static int verify_eraseblock(int ebnum)
|
||||
memset(twopages, 0, bufsize);
|
||||
read = 0;
|
||||
err = mtd->read(mtd, addr, bufsize, &read, twopages);
|
||||
if (err == -EUCLEAN)
|
||||
if (mtd_is_bitflip(err))
|
||||
err = 0;
|
||||
if (err || read != bufsize) {
|
||||
printk(PRINT_PREF "error: read failed at %#llx\n",
|
||||
@@ -164,7 +164,7 @@ static int verify_eraseblock(int ebnum)
|
||||
unsigned long oldnext = next;
|
||||
/* Do a read to set the internal dataRAMs to different data */
|
||||
err = mtd->read(mtd, addr0, bufsize, &read, twopages);
|
||||
if (err == -EUCLEAN)
|
||||
if (mtd_is_bitflip(err))
|
||||
err = 0;
|
||||
if (err || read != bufsize) {
|
||||
printk(PRINT_PREF "error: read failed at %#llx\n",
|
||||
@@ -172,7 +172,7 @@ static int verify_eraseblock(int ebnum)
|
||||
return err;
|
||||
}
|
||||
err = mtd->read(mtd, addrn - bufsize, bufsize, &read, twopages);
|
||||
if (err == -EUCLEAN)
|
||||
if (mtd_is_bitflip(err))
|
||||
err = 0;
|
||||
if (err || read != bufsize) {
|
||||
printk(PRINT_PREF "error: read failed at %#llx\n",
|
||||
@@ -182,7 +182,7 @@ static int verify_eraseblock(int ebnum)
|
||||
memset(twopages, 0, bufsize);
|
||||
read = 0;
|
||||
err = mtd->read(mtd, addr, bufsize, &read, twopages);
|
||||
if (err == -EUCLEAN)
|
||||
if (mtd_is_bitflip(err))
|
||||
err = 0;
|
||||
if (err || read != bufsize) {
|
||||
printk(PRINT_PREF "error: read failed at %#llx\n",
|
||||
@@ -231,7 +231,7 @@ static int crosstest(void)
|
||||
read = 0;
|
||||
addr = addrn - pgsize - pgsize;
|
||||
err = mtd->read(mtd, addr, pgsize, &read, pp1);
|
||||
if (err == -EUCLEAN)
|
||||
if (mtd_is_bitflip(err))
|
||||
err = 0;
|
||||
if (err || read != pgsize) {
|
||||
printk(PRINT_PREF "error: read failed at %#llx\n",
|
||||
@@ -244,7 +244,7 @@ static int crosstest(void)
|
||||
read = 0;
|
||||
addr = addrn - pgsize - pgsize - pgsize;
|
||||
err = mtd->read(mtd, addr, pgsize, &read, pp1);
|
||||
if (err == -EUCLEAN)
|
||||
if (mtd_is_bitflip(err))
|
||||
err = 0;
|
||||
if (err || read != pgsize) {
|
||||
printk(PRINT_PREF "error: read failed at %#llx\n",
|
||||
@@ -258,7 +258,7 @@ static int crosstest(void)
|
||||
addr = addr0;
|
||||
printk(PRINT_PREF "reading page at %#llx\n", (long long)addr);
|
||||
err = mtd->read(mtd, addr, pgsize, &read, pp2);
|
||||
if (err == -EUCLEAN)
|
||||
if (mtd_is_bitflip(err))
|
||||
err = 0;
|
||||
if (err || read != pgsize) {
|
||||
printk(PRINT_PREF "error: read failed at %#llx\n",
|
||||
@@ -272,7 +272,7 @@ static int crosstest(void)
|
||||
addr = addrn - pgsize;
|
||||
printk(PRINT_PREF "reading page at %#llx\n", (long long)addr);
|
||||
err = mtd->read(mtd, addr, pgsize, &read, pp3);
|
||||
if (err == -EUCLEAN)
|
||||
if (mtd_is_bitflip(err))
|
||||
err = 0;
|
||||
if (err || read != pgsize) {
|
||||
printk(PRINT_PREF "error: read failed at %#llx\n",
|
||||
@@ -286,7 +286,7 @@ static int crosstest(void)
|
||||
addr = addr0;
|
||||
printk(PRINT_PREF "reading page at %#llx\n", (long long)addr);
|
||||
err = mtd->read(mtd, addr, pgsize, &read, pp4);
|
||||
if (err == -EUCLEAN)
|
||||
if (mtd_is_bitflip(err))
|
||||
err = 0;
|
||||
if (err || read != pgsize) {
|
||||
printk(PRINT_PREF "error: read failed at %#llx\n",
|
||||
@@ -345,7 +345,7 @@ static int erasecrosstest(void)
|
||||
printk(PRINT_PREF "reading 1st page of block %d\n", ebnum);
|
||||
memset(readbuf, 0, pgsize);
|
||||
err = mtd->read(mtd, addr0, pgsize, &read, readbuf);
|
||||
if (err == -EUCLEAN)
|
||||
if (mtd_is_bitflip(err))
|
||||
err = 0;
|
||||
if (err || read != pgsize) {
|
||||
printk(PRINT_PREF "error: read failed at %#llx\n",
|
||||
@@ -383,7 +383,7 @@ static int erasecrosstest(void)
|
||||
printk(PRINT_PREF "reading 1st page of block %d\n", ebnum);
|
||||
memset(readbuf, 0, pgsize);
|
||||
err = mtd->read(mtd, addr0, pgsize, &read, readbuf);
|
||||
if (err == -EUCLEAN)
|
||||
if (mtd_is_bitflip(err))
|
||||
err = 0;
|
||||
if (err || read != pgsize) {
|
||||
printk(PRINT_PREF "error: read failed at %#llx\n",
|
||||
@@ -439,7 +439,7 @@ static int erasetest(void)
|
||||
|
||||
printk(PRINT_PREF "reading 1st page of block %d\n", ebnum);
|
||||
err = mtd->read(mtd, addr0, pgsize, &read, twopages);
|
||||
if (err == -EUCLEAN)
|
||||
if (mtd_is_bitflip(err))
|
||||
err = 0;
|
||||
if (err || read != pgsize) {
|
||||
printk(PRINT_PREF "error: read failed at %#llx\n",
|
||||
|
@@ -75,7 +75,7 @@ static int read_eraseblock_by_page(int ebnum)
|
||||
ops.datbuf = NULL;
|
||||
ops.oobbuf = oobbuf;
|
||||
ret = mtd->read_oob(mtd, addr, &ops);
|
||||
if ((ret && ret != -EUCLEAN) ||
|
||||
if ((ret && !mtd_is_bitflip(ret)) ||
|
||||
ops.oobretlen != mtd->oobsize) {
|
||||
printk(PRINT_PREF "error: read oob failed at "
|
||||
"%#llx\n", (long long)addr);
|
||||
|
@@ -216,7 +216,7 @@ static int read_eraseblock(int ebnum)
|
||||
|
||||
err = mtd->read(mtd, addr, mtd->erasesize, &read, iobuf);
|
||||
/* Ignore corrected ECC errors */
|
||||
if (err == -EUCLEAN)
|
||||
if (mtd_is_bitflip(err))
|
||||
err = 0;
|
||||
if (err || read != mtd->erasesize) {
|
||||
printk(PRINT_PREF "error: read failed at %#llx\n", addr);
|
||||
@@ -237,7 +237,7 @@ static int read_eraseblock_by_page(int ebnum)
|
||||
for (i = 0; i < pgcnt; i++) {
|
||||
err = mtd->read(mtd, addr, pgsize, &read, buf);
|
||||
/* Ignore corrected ECC errors */
|
||||
if (err == -EUCLEAN)
|
||||
if (mtd_is_bitflip(err))
|
||||
err = 0;
|
||||
if (err || read != pgsize) {
|
||||
printk(PRINT_PREF "error: read failed at %#llx\n",
|
||||
@@ -263,7 +263,7 @@ static int read_eraseblock_by_2pages(int ebnum)
|
||||
for (i = 0; i < n; i++) {
|
||||
err = mtd->read(mtd, addr, sz, &read, buf);
|
||||
/* Ignore corrected ECC errors */
|
||||
if (err == -EUCLEAN)
|
||||
if (mtd_is_bitflip(err))
|
||||
err = 0;
|
||||
if (err || read != sz) {
|
||||
printk(PRINT_PREF "error: read failed at %#llx\n",
|
||||
@@ -278,7 +278,7 @@ static int read_eraseblock_by_2pages(int ebnum)
|
||||
if (pgcnt % 2) {
|
||||
err = mtd->read(mtd, addr, pgsize, &read, buf);
|
||||
/* Ignore corrected ECC errors */
|
||||
if (err == -EUCLEAN)
|
||||
if (mtd_is_bitflip(err))
|
||||
err = 0;
|
||||
if (err || read != pgsize) {
|
||||
printk(PRINT_PREF "error: read failed at %#llx\n",
|
||||
|
@@ -154,7 +154,7 @@ static int do_read(void)
|
||||
}
|
||||
addr = eb * mtd->erasesize + offs;
|
||||
err = mtd->read(mtd, addr, len, &read, readbuf);
|
||||
if (err == -EUCLEAN)
|
||||
if (mtd_is_bitflip(err))
|
||||
err = 0;
|
||||
if (unlikely(err || read != len)) {
|
||||
printk(PRINT_PREF "error: read failed at 0x%llx\n",
|
||||
|
@@ -198,7 +198,7 @@ static int verify_eraseblock(int ebnum)
|
||||
read = 0;
|
||||
err = mtd->read(mtd, addr, subpgsize, &read, readbuf);
|
||||
if (unlikely(err || read != subpgsize)) {
|
||||
if (err == -EUCLEAN && read == subpgsize) {
|
||||
if (mtd_is_bitflip(err) && read == subpgsize) {
|
||||
printk(PRINT_PREF "ECC correction at %#llx\n",
|
||||
(long long)addr);
|
||||
err = 0;
|
||||
@@ -226,7 +226,7 @@ static int verify_eraseblock(int ebnum)
|
||||
read = 0;
|
||||
err = mtd->read(mtd, addr, subpgsize, &read, readbuf);
|
||||
if (unlikely(err || read != subpgsize)) {
|
||||
if (err == -EUCLEAN && read == subpgsize) {
|
||||
if (mtd_is_bitflip(err) && read == subpgsize) {
|
||||
printk(PRINT_PREF "ECC correction at %#llx\n",
|
||||
(long long)addr);
|
||||
err = 0;
|
||||
@@ -264,7 +264,7 @@ static int verify_eraseblock2(int ebnum)
|
||||
read = 0;
|
||||
err = mtd->read(mtd, addr, subpgsize * k, &read, readbuf);
|
||||
if (unlikely(err || read != subpgsize * k)) {
|
||||
if (err == -EUCLEAN && read == subpgsize * k) {
|
||||
if (mtd_is_bitflip(err) && read == subpgsize * k) {
|
||||
printk(PRINT_PREF "ECC correction at %#llx\n",
|
||||
(long long)addr);
|
||||
err = 0;
|
||||
@@ -298,7 +298,7 @@ static int verify_eraseblock_ff(int ebnum)
|
||||
read = 0;
|
||||
err = mtd->read(mtd, addr, subpgsize, &read, readbuf);
|
||||
if (unlikely(err || read != subpgsize)) {
|
||||
if (err == -EUCLEAN && read == subpgsize) {
|
||||
if (mtd_is_bitflip(err) && read == subpgsize) {
|
||||
printk(PRINT_PREF "ECC correction at %#llx\n",
|
||||
(long long)addr);
|
||||
err = 0;
|
||||
|
@@ -138,7 +138,7 @@ static inline int check_eraseblock(int ebnum, unsigned char *buf)
|
||||
|
||||
retry:
|
||||
err = mtd->read(mtd, addr, len, &read, check_buf);
|
||||
if (err == -EUCLEAN)
|
||||
if (mtd_is_bitflip(err))
|
||||
printk(PRINT_PREF "single bit flip occurred at EB %d "
|
||||
"MTD reported that it was fixed.\n", ebnum);
|
||||
else if (err) {
|
||||
|
Reference in New Issue
Block a user