linux/drivers/mtd
Vipin Kumar 519300cfe1 mtd: fsmc: Newly erased page read algorithm implemented
A newly erased page contains ff in data as well as spare area. While reading an
erased page, the read out ecc from spare area does not match the ecc generated
by fsmc ecc hardware accelerator. This is because ecc of data ff ff is not ff
ff. This leads to errors when file system erases and reads back the pages to
ensure consistency.

This patch adds a software workaround to ensure that the ecc check is not
performed for erased pages. This problem is solved by checking the number of
bits (in 512 byte data + 13 byte ecc) which are 0. If these number of bits are
less than 8, the page is considered erased and correction algorithm is not tried
on that page

Signed-off-by: Vipin Kumar <vipin.kumar@st.com>
Acked-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
2012-03-27 00:44:57 +01:00
..
chips mtd: fix 'Flash device refused suspend due to active operation' message 2012-03-27 00:36:40 +01:00
devices mtd: docg3 trivial renaming 2012-03-27 00:43:32 +01:00
lpddr mtd: move zero length verification to MTD API functions 2012-03-27 00:32:19 +01:00
maps mtd: mips: lantiq: reintroduce support for cmdline partitions 2012-03-27 00:38:51 +01:00
nand mtd: fsmc: Newly erased page read algorithm implemented 2012-03-27 00:44:57 +01:00
onenand mtd: remove retlen zeroing duplication 2012-03-27 00:29:34 +01:00
tests mtd: introduce mtd_can_have_bb helper 2012-01-09 18:26:24 +00:00
ubi mtd: remove R/O checking duplication 2012-03-27 00:29:11 +01:00
afs.c mtd: introduce mtd_read interface 2012-01-09 18:25:19 +00:00
ar7part.c mtd: introduce mtd_read interface 2012-01-09 18:25:19 +00:00
bcm63xxpart.c mtd: introduce mtd_read interface 2012-01-09 18:25:19 +00:00
cmdlinepart.c Merge git://git.infradead.org/mtd-2.6 2011-11-07 09:11:16 -08:00
ftl.c mtd: do not use mtd->sync directly 2012-01-09 18:26:21 +00:00
inftlcore.c mtd: add leading underscore to all mtd functions 2012-03-27 00:20:01 +01:00
inftlmount.c mtd: introduce mtd_block_markbad interface 2012-01-09 18:25:48 +00:00
Kconfig mtd: mtdoops: kill Kconfig usage instructions 2012-03-27 00:15:37 +01:00
Makefile mtd: maps: bcm963xx-flash: make CFE partition parsing an mtd parser 2012-01-09 18:15:31 +00:00
mtd_blkdevs.c mtd: mtdblock: call mtd_sync() only if opened for write 2012-03-27 00:11:11 +01:00
mtdblock_ro.c mtd: introduce mtd_write interface 2012-01-09 18:25:20 +00:00
mtdblock.c mtd: mtdblock: call mtd_sync() only if opened for write 2012-03-27 00:11:11 +01:00
mtdchar.c mtd: add leading underscore to all mtd functions 2012-03-27 00:20:01 +01:00
mtdconcat.c mtd: remove retlen zeroing duplication 2012-03-27 00:29:34 +01:00
mtdcore.c mtd: check for zero length in OTP functions 2012-03-27 00:32:29 +01:00
mtdcore.h mtd: hide parse_mtd_partitions 2011-09-11 15:02:13 +03:00
mtdoops.c mtdoops: clean-up new MTD API usage 2012-03-27 00:23:53 +01:00
mtdpart.c mtd: fix partition wrapper functions 2012-03-27 00:44:29 +01:00
mtdsuper.c Merge git://git.infradead.org/mtd-2.6 2011-11-07 09:11:16 -08:00
mtdswap.c mtd: do not use mtd->block_markbad directly 2012-01-09 18:26:26 +00:00
nftlcore.c mtd: nftlcore: remove out-of-date and now irrelevant piece of code 2012-03-27 00:24:03 +01:00
nftlmount.c mtd: introduce mtd_block_markbad interface 2012-01-09 18:25:48 +00:00
ofpart.c mtd: ofpart: add ofoldpart alias 2011-09-11 15:02:14 +03:00
redboot.c mtd: redboot: remove useless code 2012-03-27 00:24:14 +01:00
rfd_ftl.c mtd: do not use mtd->sync directly 2012-01-09 18:26:21 +00:00
sm_ftl.c mtd: introduce mtd_has_oob helper 2012-01-09 18:26:08 +00:00
sm_ftl.h mtd: sm_ftl: cosmetic, use bool when possible 2010-10-25 01:33:08 +01:00
ssfdc.c mtd: introduce mtd_block_isbad interface 2012-01-09 18:25:47 +00:00