OpenCloudOS-Kernel/drivers/mtd/nand
Brian Norris 6924d99fcd mtd: nand: fix Samsung SLC detection regression
This patch fixes errors seen in identifying old Samsung SLC, due to the
following commits:

    commit e2d3a35ee4
    mtd: nand: detect Samsung K9GBG08U0A, K9GAG08U0F ID

    commit e3b88bd604
    mtd: nand: add generic READ ID length calculation functions

Some Samsung NAND with "5-byte" ID really appear to have 6-byte IDs, with
wraparound like:

  Samsung K9K8G08U0D
  ec d3 51 95 58 ec ec d3

  Samsung K9F1G08U0C
  ec f1 00 95 40 ec ec f1

  Samsung K9F2G08U0B
  ec da 10 95 44 00 ec da

This bad wraparound makes it hard to reliably detect the difference
between Samsung SLC with 5-byte ID and Samsung SLC with 6-byte ID.

The fix is to, for now, only use the new Samsung table for MLC. We
cannot support the new SLC (K9FAG08U0M) until Samsung gives better ID
decode information.

Note that this applies in addition to the previous regression fix:

    commit bc86cf7af2
    mtd: nand: fix Samsung SLC NAND identification regression

Together, these patches completely restore the previous detection
behavior so that we cannot see any more regressions in Samsung SLC NAND
(finger crossed). With luck, I can get a hold of a Samsung
representative and stop having to cross my fingers eventually.

Reported-by: Sylwester Nawrocki <sylvester.nawrocki@gmail.com>
Tested-by: Sylwester Nawrocki <sylvester.nawrocki@gmail.com>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
2012-11-15 15:37:43 +02:00
..
gpmi-nand mtd: gpmi: initialize the timing registers only one time 2012-09-29 15:56:45 +01:00
Kconfig mtd: docg4: add missing HAS_IOMEM dependency 2012-09-29 15:56:59 +01:00
Makefile mtd: remove bcmring NAND driver 2012-09-29 15:54:09 +01:00
alauda.c mtd: driver _read() returns max_bitflips; mtd_read() returns -EUCLEAN 2012-05-13 23:14:23 -05:00
ams-delta.c UAPI Disintegration 2012-10-09 2012-10-09 15:04:25 +01:00
atmel_nand.c mtd: atmel nand: fix gpio missing request 2012-09-29 14:53:58 +01:00
atmel_nand_ecc.h mtd: at91: atmel_nand: add Programmable Multibit ECC controller support 2012-07-06 18:23:25 +01:00
au1550nd.c mtd: kill MTD_NAND_VERIFY_WRITE 2012-09-29 15:00:46 +01:00
autcpu12.c ARM: clps711x: Using a single definition for the PHYS and VIRT registers offset 2012-05-11 16:18:01 +02:00
bf5xx_nand.c mtd: nand: teach write_page and write_page_raw return an error code 2012-07-06 18:17:07 +01:00
cafe_nand.c mtd: kill MTD_NAND_VERIFY_WRITE 2012-09-29 15:00:46 +01:00
cmx270_nand.c mtd: kill MTD_NAND_VERIFY_WRITE 2012-09-29 15:00:46 +01:00
cs553x_nand.c mtd: nand: kill NAND_NO_AUTOINCR option 2012-05-13 23:15:38 -05:00
davinci_nand.c UAPI Disintegration 2012-10-09 2012-10-09 15:04:25 +01:00
denali.c mtd: nand: teach write_page and write_page_raw return an error code 2012-07-06 18:17:07 +01:00
denali.h mtd: denali: detect the number of banks 2011-05-25 02:02:12 +01:00
diskonchip.c mtd: kill MTD_NAND_VERIFY_WRITE 2012-09-29 15:00:46 +01:00
docg4.c mtd: docg4: ecc.read_page() returns 0 on uncorrectable errors 2012-09-29 15:54:11 +01:00
fsl_elbc_nand.c mtd: kill MTD_NAND_VERIFY_WRITE 2012-09-29 15:00:46 +01:00
fsl_ifc_nand.c UAPI Disintegration 2012-10-09 2012-10-09 15:04:25 +01:00
fsl_upm.c mtd: convert drivers/mtd/* to use module_platform_driver() 2012-01-09 18:12:35 +00:00
fsmc_nand.c mtd: nand: add 'oob_required' argument to NAND {read,write}_page interfaces 2012-05-13 23:20:00 -05:00
gpio.c mtd: nand/gpio: Convert to module_platform_driver() 2012-09-29 15:44:02 +01:00
h1910.c - More robust parsing especially of xattr data in JFFS2 2012-06-01 16:55:42 -07:00
jz4740_nand.c MTD: NAND: JZ4740: Multi-bank support with autodetection 2012-07-23 13:56:20 +01:00
lpc32xx_mlc.c mtd: lpc32xx_mlc: Cleanup after DT-only conversion 2012-09-29 15:12:49 +01:00
lpc32xx_slc.c mtd: lpc32xx_slc: Cleanup after DT-only conversion 2012-09-29 15:12:48 +01:00
mpc5121_nfc.c mtd: kill MTD_NAND_VERIFY_WRITE 2012-09-29 15:00:46 +01:00
mxc_nand.c UAPI Disintegration 2012-10-09 2012-10-09 15:04:25 +01:00
nand_base.c mtd: nand: fix Samsung SLC detection regression 2012-11-15 15:37:43 +02:00
nand_bbt.c mtd: nand: use NAND_BBT_SCAN_MAXBLOCKS 2012-09-29 15:54:10 +01:00
nand_bch.c mtd: cleanup style on pr_debug messages 2011-09-11 15:02:16 +03:00
nand_ecc.c mtd: spelling, capitalization, uniformity 2011-09-11 15:02:13 +03:00
nand_ids.c mtd: nand: change "AMD" manuf. ID to "AMD/Spansion" 2012-07-06 18:17:08 +01:00
nandsim.c mtd: nandsim: bugfix: fail if overridesize is too big 2012-09-29 15:54:12 +01:00
ndfc.c mtd: kill MTD_NAND_VERIFY_WRITE 2012-09-29 15:00:46 +01:00
nomadik_nand.c ARM: nomadik: move platform_data definitions 2012-09-14 11:19:00 +02:00
nuc900_nand.c mtd: kill MTD_NAND_VERIFY_WRITE 2012-09-29 15:00:46 +01:00
omap2.c UAPI Disintegration 2012-10-09 2012-10-09 15:04:25 +01:00
orion_nand.c UAPI Disintegration 2012-10-09 2012-10-09 15:04:25 +01:00
pasemi_nand.c mtd: nand: kill NAND_NO_AUTOINCR option 2012-05-13 23:15:38 -05:00
plat_nand.c mtd: check for valid pdata inside plat_nand 2012-09-29 15:01:52 +01:00
ppchameleonevb.c mtd: do not use plain 0 as NULL 2012-03-27 00:53:20 +01:00
pxa3xx_nand.c UAPI Disintegration 2012-10-09 2012-10-09 15:04:25 +01:00
r852.c mtd: kill MTD_NAND_VERIFY_WRITE 2012-09-29 15:00:46 +01:00
r852.h mtd: r852: remove useless pci powerup/down from suspend/resume routines 2010-10-25 01:32:21 +01:00
rtc_from4.c mtd: flash drivers set ecc strength 2012-03-27 00:56:46 +01:00
s3c2410.c UAPI Disintegration 2012-10-09 2012-10-09 15:04:25 +01:00
sh_flctl.c mtd: kill MTD_NAND_VERIFY_WRITE 2012-09-29 15:00:46 +01:00
sharpsl.c mtd: flash drivers set ecc strength 2012-03-27 00:56:46 +01:00
sm_common.c mtd: nand: kill NAND_NO_AUTOINCR option 2012-05-13 23:15:38 -05:00
sm_common.h mtd: sm_common: split smartmedia and xD table 2010-05-14 01:03:46 +01:00
socrates_nand.c mtd: kill MTD_NAND_VERIFY_WRITE 2012-09-29 15:00:46 +01:00
spia.c mtd: convert remaining users to mtd_device_register() 2011-05-25 02:25:00 +01:00
tmio_nand.c mtd: kill MTD_NAND_VERIFY_WRITE 2012-09-29 15:00:46 +01:00
txx9ndfmc.c mtd: kill MTD_NAND_VERIFY_WRITE 2012-09-29 15:00:46 +01:00
xway_nand.c mtd: lantiq: Add NAND support on Lantiq XWAY SoC. 2012-09-29 15:05:18 +01:00