summaryrefslogtreecommitdiffstats
path: root/drivers/mtd
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2018-12-13 13:30:47 +0100
committerSascha Hauer <s.hauer@pengutronix.de>2018-12-14 15:29:32 +0100
commited857a3dc27702c0598790addac9da6fdf58226f (patch)
tree128e5a6c511ae764e1af98bbd6b128d8a62ff864 /drivers/mtd
parent7d5afe91308d11ee701362bb6792f31509d3c966 (diff)
downloadbarebox-ed857a3dc27702c0598790addac9da6fdf58226f.tar.gz
barebox-ed857a3dc27702c0598790addac9da6fdf58226f.tar.xz
mtd: nand: omap: set eccbytes correctly
The total number of ecc bytes per page must be provided to the nand core. This patch fixes this for bch8_hw and bch8_hw_romcode. Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'drivers/mtd')
-rw-r--r--drivers/mtd/nand/nand_omap_gpmc.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/mtd/nand/nand_omap_gpmc.c b/drivers/mtd/nand/nand_omap_gpmc.c
index d64ae41e7a..58ba95cb48 100644
--- a/drivers/mtd/nand/nand_omap_gpmc.c
+++ b/drivers/mtd/nand/nand_omap_gpmc.c
@@ -765,6 +765,7 @@ static int omap_gpmc_eccmode(struct gpmc_nand_info *oinfo,
omap_oobinfo.oobfree->offset = offset;
oinfo->nand.ecc.steps = minfo->writesize / oinfo->nand.ecc.size;
oinfo->nand.ecc.total = oinfo->nand.ecc.steps * oinfo->nand.ecc.bytes;
+ omap_oobinfo.eccbytes = oinfo->nand.ecc.total;
omap_oobinfo.oobfree->length = minfo->oobsize -
offset - omap_oobinfo.eccbytes;
@@ -779,6 +780,9 @@ static int omap_gpmc_eccmode(struct gpmc_nand_info *oinfo,
oinfo->nand.ecc.strength = BCH8_MAX_ERROR;
nand->ecc.read_page = omap_gpmc_read_page_bch_rom_mode;
omap_oobinfo.oobfree->length = 0;
+ oinfo->nand.ecc.steps = minfo->writesize / oinfo->nand.ecc.size;
+ oinfo->nand.ecc.total = oinfo->nand.ecc.steps * oinfo->nand.ecc.bytes;
+ omap_oobinfo.eccbytes = oinfo->nand.ecc.total;
j = 0;
for (i = 2; i < 58; i++)
omap_oobinfo.eccpos[j++] = i;