diff options
Diffstat (limited to 'drivers/mtd/nand/omap_gpmc.c')
| -rw-r--r-- | drivers/mtd/nand/omap_gpmc.c | 8 | 
1 files changed, 6 insertions, 2 deletions
| diff --git a/drivers/mtd/nand/omap_gpmc.c b/drivers/mtd/nand/omap_gpmc.c index 5e7e6b337..23a961c9d 100644 --- a/drivers/mtd/nand/omap_gpmc.c +++ b/drivers/mtd/nand/omap_gpmc.c @@ -798,8 +798,12 @@ static int omap_select_ecc_scheme(struct nand_chip *nand,  		nand->ecc.calculate	= omap_calculate_ecc;  		/* define ecc-layout */  		ecclayout->eccbytes	= nand->ecc.bytes * eccsteps; -		for (i = 0; i < ecclayout->eccbytes; i++) -			ecclayout->eccpos[i] = i + BADBLOCK_MARKER_LENGTH; +		for (i = 0; i < ecclayout->eccbytes; i++) { +			if (nand->options & NAND_BUSWIDTH_16) +				ecclayout->eccpos[i] = i + 2; +			else +				ecclayout->eccpos[i] = i + 1; +		}  		ecclayout->oobfree[0].offset = i + BADBLOCK_MARKER_LENGTH;  		ecclayout->oobfree[0].length = oobsize - ecclayout->eccbytes -  						BADBLOCK_MARKER_LENGTH; |