mtd: rawnand: brcmnand: fix OOB R/W with Hamming ECC
[ Upstream commitf5200c1424] Hamming ECC doesn't cover the OOB data, so reading or writing OOB shall always be done without ECC enabled. This is a problem when adding JFFS2 cleanmarkers to erased blocks. If JFFS2 clenmarkers are added to the OOB with ECC enabled, OOB bytes will be changed from ff ff ff to 00 00 00, reporting incorrect ECC errors. Fixes:27c5b17cd1("mtd: nand: add NAND driver "library" for Broadcom STB NAND controller") Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com> Acked-by: Brian Norris <computersforpeace@gmail.com> Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com> Link: https://lore.kernel.org/linux-mtd/20210224080210.23686-1-noltari@gmail.com Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
c8f3837c51
commit
705ad2d8c3
1 changed files with 6 additions and 0 deletions
|
|
@ -2688,6 +2688,12 @@ static int brcmnand_attach_chip(struct nand_chip *chip)
|
|||
|
||||
ret = brcmstb_choose_ecc_layout(host);
|
||||
|
||||
/* If OOB is written with ECC enabled it will cause ECC errors */
|
||||
if (is_hamming_ecc(host->ctrl, &host->hwcfg)) {
|
||||
chip->ecc.write_oob = brcmnand_write_oob_raw;
|
||||
chip->ecc.read_oob = brcmnand_read_oob_raw;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue