linux/drivers/mtd/nand
Kevin Cernekee 426c457a32 mtd: nand: extend NAND flash detection to new MLC chips
Some of the newer MLC devices have a 6-byte ID sequence in which
several field definitions differ from older chips in a manner that is
not backward compatible.  For instance:

Samsung K9GAG08U0M (5-byte sequence): ec d5 14 b6 74
4th byte, bits 1:0 encode the page size: 0=1KiB, 1=2KiB, 2=4KiB, 3=8KiB
4th byte, bits 5:4 encode the block size: 0=64KiB, 1=128KiB, ...
4th byte, bit 6 encodes the OOB size: 0=8B/512B, 1=16B/512B

Samsung K9GAG08U0D (6-byte sequence): ec d5 94 29 34 41
4th byte, bits 1:0 encode the page size: 0=2KiB, 1=4KiB, 3=8KiB, 4=rsvd
4th byte, bits 7;5:4 encode the block size: 0=128KiB, 1=256KiB, ...
4th byte, bits 6;3:2 encode the OOB size: 1=128B/page, 2=218B/page

This patch uses the new 6-byte scheme if the following conditions are
all true:

1) The ID code wraps around after exactly 6 bytes

2) Manufacturer is Samsung

3) 6th byte is zero

The patch also extends the maximum OOB size from 128B to 256B.

Signed-off-by: Kevin Cernekee <cernekee@gmail.com>
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
2010-05-14 01:54:44 +01:00
..
alauda.c mtd: nand: make USB device id constant 2010-02-25 11:26:31 +00:00
ams-delta.c omap: headers: Move remaining headers from include/mach to include/plat 2009-10-20 09:40:47 -07:00
atmel_nand_ecc.h [ARM] 5265/3: [AT91] Add copyright info 2008-09-21 23:01:18 +01:00
atmel_nand.c mtd: nand: Allow caller to pass alternative ID table to nand_scan_ident() 2010-02-26 18:32:56 +00:00
au1550nd.c Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 2010-03-26 14:55:59 +00:00
autcpu12.c [ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach 2008-08-07 09:55:48 +01:00
bcm_umi_bch.c mtd: add bcmring nand driver 2009-10-20 10:07:23 +09:00
bcm_umi_nand.c Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 2010-05-10 14:32:46 +01:00
bf5xx_nand.c mtd: Blackfin NFC: localize MMR bit masks 2010-05-10 14:16:43 +01:00
cafe_nand.c Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 2010-05-10 14:32:46 +01:00
cmx270_nand.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
cs553x_nand.c [MTD] [NAND] Fix compilation warnings in drivers/mtd/nand/cs553x_nand.c 2008-10-18 12:39:17 +01:00
davinci_nand.c Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 2010-05-10 14:32:46 +01:00
denali.c mtd/nand: Fix denali build on ppc64 2010-05-13 16:12:45 +01:00
denali.h mtd/nand: Add Intel Moorestown/Denali NAND support 2010-05-13 16:12:16 +01:00
diskonchip.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
edb7312.c [ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach 2008-08-07 09:55:48 +01:00
fsl_elbc_nand.c mtd: nand: Allow caller to pass alternative ID table to nand_scan_ident() 2010-02-26 18:32:56 +00:00
fsl_upm.c Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 2010-05-10 14:32:46 +01:00
gpio.c mtd: drivers/mtd/nand/gpio.c: use resource_size() 2009-12-31 20:47:01 +00:00
h1910.c [ARM] Move include/asm-arm/arch-* to arch/arm/*/include/mach 2008-08-07 09:55:48 +01:00
Kconfig mtd/nand: Add Intel Moorestown/Denali NAND support 2010-05-13 16:12:16 +01:00
Makefile mtd/nand: Add Intel Moorestown/Denali NAND support 2010-05-13 16:12:16 +01:00
mpc5121_nfc.c mtd: mpc5121_nfc: Changed SVR check to allow MPC5123. 2010-05-10 14:27:16 +01:00
mxc_nand.c mtd: mxc_nand: support i.MX21 2010-05-14 01:02:53 +01:00
nand_base.c mtd: nand: extend NAND flash detection to new MLC chips 2010-05-14 01:54:44 +01:00
nand_bbt.c mtd: nand: make reads using MTD_OOB_RAW affect only ECC validation 2010-02-26 18:00:08 +00:00
nand_bcm_umi.c mtd: add bcmring nand driver 2009-10-20 10:07:23 +09:00
nand_bcm_umi.h mtd: nand_bcm: fix hot spin and code duplication 2010-02-26 16:56:35 +00:00
nand_ecc.c Merge git://git.infradead.org/mtd-2.6 2009-12-16 10:23:43 -08:00
nand_ids.c MTD/JFFS2: remove CVS keywords 2008-06-04 17:50:17 +01:00
nandsim.c mtd: nandsim: make some structures anonymous 2010-05-10 14:12:06 +01:00
ndfc.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
nomadik_nand.c Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 2010-05-10 14:32:46 +01:00
nuc900_nand.c mtd: nand: rename w90p910_nand.c to nuc900_nand.c 2010-01-01 12:16:47 +00:00
omap2.c Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 2010-05-10 14:32:46 +01:00
orion_nand.c mtd: orion/kirkwood: add RnB line support to orion mtd driver 2010-05-14 01:04:19 +01:00
pasemi_nand.c mtd: nand: make Open Firmware device id constant 2010-02-25 11:26:36 +00:00
plat_nand.c mtd: plat_nand: request memory resource before doing ioremap 2009-10-20 09:09:59 +09:00
ppchameleonevb.c MTD/JFFS2: remove CVS keywords 2008-06-04 17:50:17 +01:00
pxa3xx_nand.c Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 2010-05-10 14:32:46 +01:00
r852.c mtd: sm_common: split smartmedia and xD table 2010-05-14 01:03:46 +01:00
r852.h mtd: nand: Add driver for Ricoh xD/SmartMedia reader 2010-02-26 19:22:38 +00:00
rtc_from4.c MTD/JFFS2: remove CVS keywords 2008-06-04 17:50:17 +01:00
s3c2410.c drivers/mtd/nand: Use kzalloc 2010-05-13 21:21:38 +01:00
sh_flctl.c Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 2010-05-10 14:32:46 +01:00
sharpsl.c [MTD] sharpsl-nand: move registration to board code 2008-10-29 21:08:37 +03:00
sm_common.c mtd: sm_common: split smartmedia and xD table 2010-05-14 01:03:46 +01:00
sm_common.h mtd: sm_common: split smartmedia and xD table 2010-05-14 01:03:46 +01:00
socrates_nand.c mtd: nand: Allow caller to pass alternative ID table to nand_scan_ident() 2010-02-26 18:32:56 +00:00
spia.c MTD/JFFS2: remove CVS keywords 2008-06-04 17:50:17 +01:00
tmio_nand.c Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 2010-05-10 14:32:46 +01:00
txx9ndfmc.c mtd: nand: Allow caller to pass alternative ID table to nand_scan_ident() 2010-02-26 18:32:56 +00:00