mtd: introduce mtd_read interface
Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com> Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
This commit is contained in:

committed by
David Woodhouse

szülő
04c601bfa4
commit
329ad399a9
@@ -127,7 +127,7 @@ static int verify_eraseblock(int ebnum)
|
||||
set_random_data(writebuf, mtd->erasesize);
|
||||
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);
|
||||
err = mtd_read(mtd, addr0, bufsize, &read, twopages);
|
||||
if (mtd_is_bitflip(err))
|
||||
err = 0;
|
||||
if (err || read != bufsize) {
|
||||
@@ -135,7 +135,7 @@ static int verify_eraseblock(int ebnum)
|
||||
(long long)addr0);
|
||||
return err;
|
||||
}
|
||||
err = mtd->read(mtd, addrn - bufsize, bufsize, &read, twopages);
|
||||
err = mtd_read(mtd, addrn - bufsize, bufsize, &read, twopages);
|
||||
if (mtd_is_bitflip(err))
|
||||
err = 0;
|
||||
if (err || read != bufsize) {
|
||||
@@ -145,7 +145,7 @@ static int verify_eraseblock(int ebnum)
|
||||
}
|
||||
memset(twopages, 0, bufsize);
|
||||
read = 0;
|
||||
err = mtd->read(mtd, addr, bufsize, &read, twopages);
|
||||
err = mtd_read(mtd, addr, bufsize, &read, twopages);
|
||||
if (mtd_is_bitflip(err))
|
||||
err = 0;
|
||||
if (err || read != bufsize) {
|
||||
@@ -163,7 +163,7 @@ static int verify_eraseblock(int ebnum)
|
||||
if (addr <= addrn - pgsize - pgsize && !bbt[ebnum + 1]) {
|
||||
unsigned long oldnext = next;
|
||||
/* Do a read to set the internal dataRAMs to different data */
|
||||
err = mtd->read(mtd, addr0, bufsize, &read, twopages);
|
||||
err = mtd_read(mtd, addr0, bufsize, &read, twopages);
|
||||
if (mtd_is_bitflip(err))
|
||||
err = 0;
|
||||
if (err || read != bufsize) {
|
||||
@@ -171,7 +171,7 @@ static int verify_eraseblock(int ebnum)
|
||||
(long long)addr0);
|
||||
return err;
|
||||
}
|
||||
err = mtd->read(mtd, addrn - bufsize, bufsize, &read, twopages);
|
||||
err = mtd_read(mtd, addrn - bufsize, bufsize, &read, twopages);
|
||||
if (mtd_is_bitflip(err))
|
||||
err = 0;
|
||||
if (err || read != bufsize) {
|
||||
@@ -181,7 +181,7 @@ static int verify_eraseblock(int ebnum)
|
||||
}
|
||||
memset(twopages, 0, bufsize);
|
||||
read = 0;
|
||||
err = mtd->read(mtd, addr, bufsize, &read, twopages);
|
||||
err = mtd_read(mtd, addr, bufsize, &read, twopages);
|
||||
if (mtd_is_bitflip(err))
|
||||
err = 0;
|
||||
if (err || read != bufsize) {
|
||||
@@ -230,7 +230,7 @@ static int crosstest(void)
|
||||
/* Read 2nd-to-last page to pp1 */
|
||||
read = 0;
|
||||
addr = addrn - pgsize - pgsize;
|
||||
err = mtd->read(mtd, addr, pgsize, &read, pp1);
|
||||
err = mtd_read(mtd, addr, pgsize, &read, pp1);
|
||||
if (mtd_is_bitflip(err))
|
||||
err = 0;
|
||||
if (err || read != pgsize) {
|
||||
@@ -243,7 +243,7 @@ static int crosstest(void)
|
||||
/* Read 3rd-to-last page to pp1 */
|
||||
read = 0;
|
||||
addr = addrn - pgsize - pgsize - pgsize;
|
||||
err = mtd->read(mtd, addr, pgsize, &read, pp1);
|
||||
err = mtd_read(mtd, addr, pgsize, &read, pp1);
|
||||
if (mtd_is_bitflip(err))
|
||||
err = 0;
|
||||
if (err || read != pgsize) {
|
||||
@@ -257,7 +257,7 @@ static int crosstest(void)
|
||||
read = 0;
|
||||
addr = addr0;
|
||||
printk(PRINT_PREF "reading page at %#llx\n", (long long)addr);
|
||||
err = mtd->read(mtd, addr, pgsize, &read, pp2);
|
||||
err = mtd_read(mtd, addr, pgsize, &read, pp2);
|
||||
if (mtd_is_bitflip(err))
|
||||
err = 0;
|
||||
if (err || read != pgsize) {
|
||||
@@ -271,7 +271,7 @@ static int crosstest(void)
|
||||
read = 0;
|
||||
addr = addrn - pgsize;
|
||||
printk(PRINT_PREF "reading page at %#llx\n", (long long)addr);
|
||||
err = mtd->read(mtd, addr, pgsize, &read, pp3);
|
||||
err = mtd_read(mtd, addr, pgsize, &read, pp3);
|
||||
if (mtd_is_bitflip(err))
|
||||
err = 0;
|
||||
if (err || read != pgsize) {
|
||||
@@ -285,7 +285,7 @@ static int crosstest(void)
|
||||
read = 0;
|
||||
addr = addr0;
|
||||
printk(PRINT_PREF "reading page at %#llx\n", (long long)addr);
|
||||
err = mtd->read(mtd, addr, pgsize, &read, pp4);
|
||||
err = mtd_read(mtd, addr, pgsize, &read, pp4);
|
||||
if (mtd_is_bitflip(err))
|
||||
err = 0;
|
||||
if (err || read != pgsize) {
|
||||
@@ -344,7 +344,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);
|
||||
err = mtd_read(mtd, addr0, pgsize, &read, readbuf);
|
||||
if (mtd_is_bitflip(err))
|
||||
err = 0;
|
||||
if (err || read != pgsize) {
|
||||
@@ -382,7 +382,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);
|
||||
err = mtd_read(mtd, addr0, pgsize, &read, readbuf);
|
||||
if (mtd_is_bitflip(err))
|
||||
err = 0;
|
||||
if (err || read != pgsize) {
|
||||
@@ -438,7 +438,7 @@ static int erasetest(void)
|
||||
return err;
|
||||
|
||||
printk(PRINT_PREF "reading 1st page of block %d\n", ebnum);
|
||||
err = mtd->read(mtd, addr0, pgsize, &read, twopages);
|
||||
err = mtd_read(mtd, addr0, pgsize, &read, twopages);
|
||||
if (mtd_is_bitflip(err))
|
||||
err = 0;
|
||||
if (err || read != pgsize) {
|
||||
|
@@ -52,7 +52,7 @@ static int read_eraseblock_by_page(int ebnum)
|
||||
|
||||
for (i = 0; i < pgcnt; i++) {
|
||||
memset(buf, 0 , pgcnt);
|
||||
ret = mtd->read(mtd, addr, pgsize, &read, buf);
|
||||
ret = mtd_read(mtd, addr, pgsize, &read, buf);
|
||||
if (ret == -EUCLEAN)
|
||||
ret = 0;
|
||||
if (ret || read != pgsize) {
|
||||
|
@@ -214,7 +214,7 @@ static int read_eraseblock(int ebnum)
|
||||
int err = 0;
|
||||
loff_t addr = ebnum * mtd->erasesize;
|
||||
|
||||
err = mtd->read(mtd, addr, mtd->erasesize, &read, iobuf);
|
||||
err = mtd_read(mtd, addr, mtd->erasesize, &read, iobuf);
|
||||
/* Ignore corrected ECC errors */
|
||||
if (mtd_is_bitflip(err))
|
||||
err = 0;
|
||||
@@ -235,7 +235,7 @@ static int read_eraseblock_by_page(int ebnum)
|
||||
void *buf = iobuf;
|
||||
|
||||
for (i = 0; i < pgcnt; i++) {
|
||||
err = mtd->read(mtd, addr, pgsize, &read, buf);
|
||||
err = mtd_read(mtd, addr, pgsize, &read, buf);
|
||||
/* Ignore corrected ECC errors */
|
||||
if (mtd_is_bitflip(err))
|
||||
err = 0;
|
||||
@@ -261,7 +261,7 @@ static int read_eraseblock_by_2pages(int ebnum)
|
||||
void *buf = iobuf;
|
||||
|
||||
for (i = 0; i < n; i++) {
|
||||
err = mtd->read(mtd, addr, sz, &read, buf);
|
||||
err = mtd_read(mtd, addr, sz, &read, buf);
|
||||
/* Ignore corrected ECC errors */
|
||||
if (mtd_is_bitflip(err))
|
||||
err = 0;
|
||||
@@ -276,7 +276,7 @@ static int read_eraseblock_by_2pages(int ebnum)
|
||||
buf += sz;
|
||||
}
|
||||
if (pgcnt % 2) {
|
||||
err = mtd->read(mtd, addr, pgsize, &read, buf);
|
||||
err = mtd_read(mtd, addr, pgsize, &read, buf);
|
||||
/* Ignore corrected ECC errors */
|
||||
if (mtd_is_bitflip(err))
|
||||
err = 0;
|
||||
|
@@ -153,7 +153,7 @@ static int do_read(void)
|
||||
len = mtd->erasesize - offs;
|
||||
}
|
||||
addr = eb * mtd->erasesize + offs;
|
||||
err = mtd->read(mtd, addr, len, &read, readbuf);
|
||||
err = mtd_read(mtd, addr, len, &read, readbuf);
|
||||
if (mtd_is_bitflip(err))
|
||||
err = 0;
|
||||
if (unlikely(err || read != len)) {
|
||||
|
@@ -196,7 +196,7 @@ static int verify_eraseblock(int ebnum)
|
||||
set_random_data(writebuf, subpgsize);
|
||||
clear_data(readbuf, subpgsize);
|
||||
read = 0;
|
||||
err = mtd->read(mtd, addr, subpgsize, &read, readbuf);
|
||||
err = mtd_read(mtd, addr, subpgsize, &read, readbuf);
|
||||
if (unlikely(err || read != subpgsize)) {
|
||||
if (mtd_is_bitflip(err) && read == subpgsize) {
|
||||
printk(PRINT_PREF "ECC correction at %#llx\n",
|
||||
@@ -224,7 +224,7 @@ static int verify_eraseblock(int ebnum)
|
||||
set_random_data(writebuf, subpgsize);
|
||||
clear_data(readbuf, subpgsize);
|
||||
read = 0;
|
||||
err = mtd->read(mtd, addr, subpgsize, &read, readbuf);
|
||||
err = mtd_read(mtd, addr, subpgsize, &read, readbuf);
|
||||
if (unlikely(err || read != subpgsize)) {
|
||||
if (mtd_is_bitflip(err) && read == subpgsize) {
|
||||
printk(PRINT_PREF "ECC correction at %#llx\n",
|
||||
@@ -262,7 +262,7 @@ static int verify_eraseblock2(int ebnum)
|
||||
set_random_data(writebuf, subpgsize * k);
|
||||
clear_data(readbuf, subpgsize * k);
|
||||
read = 0;
|
||||
err = mtd->read(mtd, addr, subpgsize * k, &read, readbuf);
|
||||
err = mtd_read(mtd, addr, subpgsize * k, &read, readbuf);
|
||||
if (unlikely(err || read != subpgsize * k)) {
|
||||
if (mtd_is_bitflip(err) && read == subpgsize * k) {
|
||||
printk(PRINT_PREF "ECC correction at %#llx\n",
|
||||
@@ -296,7 +296,7 @@ static int verify_eraseblock_ff(int ebnum)
|
||||
for (j = 0; j < mtd->erasesize / subpgsize; ++j) {
|
||||
clear_data(readbuf, subpgsize);
|
||||
read = 0;
|
||||
err = mtd->read(mtd, addr, subpgsize, &read, readbuf);
|
||||
err = mtd_read(mtd, addr, subpgsize, &read, readbuf);
|
||||
if (unlikely(err || read != subpgsize)) {
|
||||
if (mtd_is_bitflip(err) && read == subpgsize) {
|
||||
printk(PRINT_PREF "ECC correction at %#llx\n",
|
||||
|
@@ -137,7 +137,7 @@ static inline int check_eraseblock(int ebnum, unsigned char *buf)
|
||||
}
|
||||
|
||||
retry:
|
||||
err = mtd->read(mtd, addr, len, &read, check_buf);
|
||||
err = mtd_read(mtd, addr, len, &read, check_buf);
|
||||
if (mtd_is_bitflip(err))
|
||||
printk(PRINT_PREF "single bit flip occurred at EB %d "
|
||||
"MTD reported that it was fixed.\n", ebnum);
|
||||
|
Reference in New Issue
Block a user