Skip to content

Commit

Permalink
ramips: correct page read return value of the mt7621 nand driver
Browse files Browse the repository at this point in the history
read_page() need to return maximum number of bitflips instead of the
accumulated number. Change takes from upstream mt7621 u-boot [1].

 * @read_page:  function to read a page according to the ECC generator
 *              requirements; returns maximum number of bitflips
 *              corrected in any single ECC step, -EIO hw error

[1] https://lore.kernel.org/all/cover.1653015383.git.weijie.gao@mediatek.com/

Signed-off-by: Shiji Yang <yangshiji66@qq.com>
  • Loading branch information
DragonBluep authored and chunkeey committed May 22, 2023
1 parent 959563f commit 2fbb91d
Showing 1 changed file with 9 additions and 5 deletions.
14 changes: 9 additions & 5 deletions target/linux/ramips/files/drivers/mtd/nand/raw/mt7621_nand.c
Expand Up @@ -1006,7 +1006,7 @@ static int mt7621_nfc_read_page_hwecc(struct nand_chip *nand, uint8_t *buf,
{
struct mt7621_nfc *nfc = nand_get_controller_data(nand);
struct mtd_info *mtd = nand_to_mtd(nand);
int bitflips = 0;
int bitflips = 0, ret = 0;
int rc, i;

nand_read_page_op(nand, page, 0, NULL, 0);
Expand All @@ -1031,7 +1031,7 @@ static int mt7621_nfc_read_page_hwecc(struct nand_chip *nand, uint8_t *buf,
mt7621_nfc_read_sector_fdm(nfc, i);

if (rc < 0) {
bitflips = -EIO;
ret = -EIO;
continue;
}

Expand All @@ -1043,10 +1043,11 @@ static int mt7621_nfc_read_page_hwecc(struct nand_chip *nand, uint8_t *buf,
dev_dbg(nfc->dev,
"Uncorrectable ECC error at page %d.%d\n",
page, i);
bitflips = -EBADMSG;
bitflips = nand->ecc.strength + 1;
mtd->ecc_stats.failed++;
} else if (bitflips >= 0) {
bitflips += rc;
} else {
if (rc > bitflips)
bitflips = rc;
mtd->ecc_stats.corrected += rc;
}
}
Expand All @@ -1055,6 +1056,9 @@ static int mt7621_nfc_read_page_hwecc(struct nand_chip *nand, uint8_t *buf,

nfi_write16(nfc, NFI_CON, 0);

if (ret < 0)
return ret;

return bitflips;
}

Expand Down

2 comments on commit 2fbb91d

@lukasz1992
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is an excelent first candidate to backport to 23.05 branch

@dfateyev
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please sign in to comment.