diff options
Diffstat (limited to 'target/linux/bcm63xx/patches-5.4/021-v5.8-mtd-rawnand-brcmnand-improve-hamming-oob-layout.patch')
-rw-r--r-- | target/linux/bcm63xx/patches-5.4/021-v5.8-mtd-rawnand-brcmnand-improve-hamming-oob-layout.patch | 92 |
1 files changed, 0 insertions, 92 deletions
diff --git a/target/linux/bcm63xx/patches-5.4/021-v5.8-mtd-rawnand-brcmnand-improve-hamming-oob-layout.patch b/target/linux/bcm63xx/patches-5.4/021-v5.8-mtd-rawnand-brcmnand-improve-hamming-oob-layout.patch deleted file mode 100644 index 78fa1b39e3..0000000000 --- a/target/linux/bcm63xx/patches-5.4/021-v5.8-mtd-rawnand-brcmnand-improve-hamming-oob-layout.patch +++ /dev/null @@ -1,92 +0,0 @@ -From d00358d7a1c50718232799e1ee10955bcd73795a Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= <noltari@gmail.com> -Date: Tue, 12 May 2020 09:57:33 +0200 -Subject: [PATCH] mtd: rawnand: brcmnand: improve hamming oob layout -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -The current code generates 8 oob sections: -S1 1-5 -ECC 6-8 -S2 9-15 -S3 16-21 -ECC 22-24 -S4 25-31 -S5 32-37 -ECC 38-40 -S6 41-47 -S7 48-53 -ECC 54-56 -S8 57-63 - -Change it by merging continuous sections: -S1 1-5 -ECC 6-8 -S2 9-21 -ECC 22-24 -S3 25-37 -ECC 38-40 -S4 41-53 -ECC 54-56 -S5 57-63 - -Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com> -Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com> -Link: https://lore.kernel.org/linux-mtd/20200512075733.745374-3-noltari@gmail.com ---- - drivers/mtd/nand/raw/brcmnand/brcmnand.c | 35 +++++++++++------------- - 1 file changed, 16 insertions(+), 19 deletions(-) - ---- a/drivers/mtd/nand/raw/brcmnand/brcmnand.c -+++ b/drivers/mtd/nand/raw/brcmnand/brcmnand.c -@@ -1004,33 +1004,30 @@ static int brcmnand_hamming_ooblayout_fr - struct brcmnand_cfg *cfg = &host->hwcfg; - int sas = cfg->spare_area_size << cfg->sector_size_1k; - int sectors = cfg->page_size / (512 << cfg->sector_size_1k); -+ u32 next; - -- if (section >= sectors * 2) -+ if (section > sectors) - return -ERANGE; - -- oobregion->offset = (section / 2) * sas; -+ next = (section * sas); -+ if (section < sectors) -+ next += 6; - -- if (section & 1) { -- oobregion->offset += 9; -- oobregion->length = 7; -+ if (section) { -+ oobregion->offset = ((section - 1) * sas) + 9; - } else { -- oobregion->length = 6; -- -- /* First sector of each page may have BBI */ -- if (!section) { -- /* -- * Small-page NAND use byte 6 for BBI while large-page -- * NAND use bytes 0 and 1. -- */ -- if (cfg->page_size > 512) { -- oobregion->offset += 2; -- oobregion->length -= 2; -- } else { -- oobregion->length--; -- } -+ if (cfg->page_size > 512) { -+ /* Large page NAND uses first 2 bytes for BBI */ -+ oobregion->offset = 2; -+ } else { -+ /* Small page NAND uses last byte before ECC for BBI */ -+ oobregion->offset = 0; -+ next--; - } - } - -+ oobregion->length = next - oobregion->offset; -+ - return 0; - } - |