From: Victor Axelrod <vict...@marvell.com>

Add support for 2KB page 8-bit ECC strength flash layout

Signed-off-by: Victor Axelrod <vict...@marvell.com>
Reviewed-by: Igal Liberman <ig...@marvell.com>
Cc: Stefan Roese <s...@denx.de>
Cc: Simon Glass <s...@chromium.org>
---
 drivers/mtd/nand/pxa3xx_nand.c | 27 +++++++++++++++++++++++++++
 1 file changed, 27 insertions(+)

diff --git a/drivers/mtd/nand/pxa3xx_nand.c b/drivers/mtd/nand/pxa3xx_nand.c
index c1f7d61..81e75f2 100644
--- a/drivers/mtd/nand/pxa3xx_nand.c
+++ b/drivers/mtd/nand/pxa3xx_nand.c
@@ -308,6 +308,20 @@ static struct nand_ecclayout ecc_layout_2KB_bch4bit = {
        .oobfree = { {2, 30} }
 };
 
+static struct nand_ecclayout ecc_layout_2KB_bch8bit = {
+       .eccbytes = 64,
+       .eccpos = {
+               64,  65,  66,  67,  68,  69,  70,  71,
+               72,  73,  74,  75,  76,  77,  78,  79,
+               80,  81,  82,  83,  84,  85,  86,  87,
+               88,  89,  90,  91,  92,  93,  94,  95,
+               96,  97,  98,  99,  100, 101, 102, 103,
+               104, 105, 106, 107, 108, 109, 110, 111,
+               112, 113, 114, 115, 116, 117, 118, 119,
+               120, 121, 122, 123, 124, 125, 126, 127},
+       .oobfree = { {1, 4}, {6, 26} }
+};
+
 static struct nand_ecclayout ecc_layout_4KB_bch4bit = {
        .eccbytes = 64,
        .eccpos = {
@@ -1439,6 +1453,19 @@ static int pxa_ecc_init(struct pxa3xx_nand_info *info,
                ecc->size = info->chunk_size;
                ecc->layout = &ecc_layout_4KB_bch8bit;
                ecc->strength = 16;
+       } else if (strength == 8 && ecc_stepsize == 512 && page_size == 2048) {
+               info->ecc_bch = 1;
+               info->nfullchunks = 1;
+               info->ntotalchunks = 2;
+               info->chunk_size = 1024;
+               info->spare_size = 0;
+               info->last_chunk_size = 1024;
+               info->last_spare_size = 64;
+               info->ecc_size = 32;
+               ecc->mode = NAND_ECC_HW;
+               ecc->size = info->chunk_size;
+               ecc->layout = &ecc_layout_2KB_bch8bit;
+               ecc->strength = 16;
        } else {
                dev_err(&info->pdev->dev,
                        "ECC strength %d at page size %d is not supported\n",
-- 
2.7.4

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot

Reply via email to