linux/drivers/mtd
Brian Norris c46f6483d2 mtd: support reading OOB without ECC
This fixes issues with `nanddump -n' and the MEMREADOOB[64] ioctls on
hardware that performs error correction when reading only OOB data. A
driver for such hardware needs to know when we're doing a RAW vs. a
normal write, but mtd_do_read_oob does not pass such information to the
lower layers (e.g., NAND). We should pass MTD_OOB_RAW or MTD_OOB_PLACE
based on the MTD file mode.

For now, most drivers can get away with just setting:

  chip->ecc.read_oob_raw = chip->ecc.read_oob

This is done by default; but for systems that behave as described above,
you must supply your own replacement function.

This was tested with nandsim as well as on actual SLC NAND.

Signed-off-by: Brian Norris <computersforpeace@gmail.com>
Cc: Jim Quinlan <jim2101024@gmail.com>
Signed-off-by: Artem Bityutskiy <artem.bityutskiy@intel.com>
2011-09-11 15:13:38 +03:00
..
chips mtd: cleanup style on pr_debug messages 2011-09-11 15:02:16 +03:00
devices mtd: cleanup style on pr_debug messages 2011-09-11 15:02:16 +03:00
lpddr mtd: remove duplicate assignment of chip->state 2011-05-25 02:11:13 +01:00
maps mtd: Kbuild: remove reference to MTD_PARTITIONS 2011-09-11 15:02:16 +03:00
nand mtd: support reading OOB without ECC 2011-09-11 15:13:38 +03:00
onenand mtd: cleanup style on pr_debug messages 2011-09-11 15:02:16 +03:00
tests mtd: tests: ignore corrected bitflips in OOB on mtd_readtest 2011-09-11 15:02:14 +03:00
ubi Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6 2011-07-22 19:02:39 -07:00
afs.c mtd: abstract last MTD partition parser argument 2011-09-11 15:02:10 +03:00
ar7part.c mtd: abstract last MTD partition parser argument 2011-09-11 15:02:10 +03:00
cmdlinepart.c mtd: abstract last MTD partition parser argument 2011-09-11 15:02:10 +03:00
ftl.c mtd: spelling fixes 2011-09-11 15:02:16 +03:00
inftlcore.c mtd: cleanup style on pr_debug messages 2011-09-11 15:02:16 +03:00
inftlmount.c mtd: spelling fixes 2011-09-11 15:02:16 +03:00
Kconfig mtd: remove CONFIG_MTD_DEBUG 2011-09-11 15:02:16 +03:00
Makefile mtd: make ofpart buildable as a separate module 2011-09-11 15:02:13 +03:00
mtd_blkdevs.c mtd: mtd_blkdevs: fix error path in blktrans_open 2011-05-25 01:53:45 +01:00
mtdblock_ro.c
mtdblock.c mtd: replace DEBUG() with pr_debug() 2011-09-11 15:02:16 +03:00
mtdchar.c mtd: support reading OOB without ECC 2011-09-11 15:13:38 +03:00
mtdconcat.c mtd: spelling fixes 2011-09-11 15:02:16 +03:00
mtdcore.c mtd: check parts pointer before using it 2011-09-11 15:02:18 +03:00
mtdcore.h mtd: hide parse_mtd_partitions 2011-09-11 15:02:13 +03:00
mtdoops.c Merge git://git.infradead.org/mtd-2.6 2011-01-17 11:15:30 -08:00
mtdpart.c mtd: remove put_partition_parser() from public header 2011-09-11 15:02:13 +03:00
mtdsuper.c mtd: replace DEBUG() with pr_debug() 2011-09-11 15:02:16 +03:00
mtdswap.c mtd: spelling fixes 2011-09-11 15:02:16 +03:00
nftlcore.c mtd: replace DEBUG() with pr_debug() 2011-09-11 15:02:16 +03:00
nftlmount.c mtd: spelling fixes 2011-09-11 15:02:16 +03:00
ofpart.c mtd: ofpart: add ofoldpart alias 2011-09-11 15:02:14 +03:00
redboot.c mtd: abstract last MTD partition parser argument 2011-09-11 15:02:10 +03:00
rfd_ftl.c
sm_ftl.c mtd: spelling fixes 2011-09-11 15:02:16 +03:00
sm_ftl.h
ssfdc.c mtd: replace DEBUG() with pr_debug() 2011-09-11 15:02:16 +03:00