OpenCloudOS-Kernel/drivers/mtd/chips
Harald Nordgard-Hansen 070c32223a mtd: fix recovery after failed write-buffer operation in cfi_cmdset_0002.c
When working on a problem with some flash chips that lock up during
write-buffer operations, I think there may be a bug in the linux
handling of chips using cfi_cmdset_0002.c.

The datasheets I have found for a number of these chips all specify that
when aborting a write-buffer command, it is not enough to use the
standard reset.  Rather a "write-to-buffer-reset command" is needed.
This command is quite similar for all chips, the main variance seem to
be if the final 0xF0 can go to any address or must go to addr_unlock1.

The bug is then in the recovery handling when timing out at the end of
do_write_buffer, where using the normal reset command is not sufficient.

Without this change, if the write-buffer command fails then any
following operations on the flash also fail.

Signed-off-by: Harald Nordgard-Hansen <hhansen@pvv.org>
Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
2012-12-03 16:36:52 +02:00
..
Kconfig mtd: chips: reorganize Kconfig help on swapping 2012-07-06 18:17:07 +01:00
Makefile [MTD] [CHIPS] Remove MTD_OBSOLETE_CHIPS (jedec, amd_flash, sharp) 2007-05-09 13:34:37 +01:00
cfi_cmdset_0001.c mtd: cfi_cmdset_0001: Fix problem with unlocking timeout 2012-09-29 15:29:08 +01:00
cfi_cmdset_0002.c mtd: fix recovery after failed write-buffer operation in cfi_cmdset_0002.c 2012-12-03 16:36:52 +02:00
cfi_cmdset_0020.c mtd: move zero length verification to MTD API functions 2012-03-27 00:32:19 +01:00
cfi_probe.c mtd: cfi_cmdset_0002: make sector erase command variable 2010-10-26 11:39:17 +01:00
cfi_util.c mtd: do not duplicate length and offset checks in drivers 2012-03-27 00:28:18 +01:00
chipreg.c mtd: simplify return logic in do_map_probe() 2012-03-27 00:35:06 +01:00
fwh_lock.h mtd: add leading underscore to all mtd functions 2012-03-27 00:20:01 +01:00
gen_probe.c mtd: cfi_cmdset_0002: use AMD standard command-set with Winbond flash chips 2010-05-20 16:57:00 +01:00
jedec_probe.c mtd: replace DEBUG() with pr_debug() 2011-09-11 15:02:16 +03:00
map_absent.c mtd: remove retlen zeroing duplication 2012-03-27 00:29:34 +01:00
map_ram.c mtd: remove R/O checking duplication 2012-03-27 00:29:11 +01:00
map_rom.c mtd: remove R/O checking duplication 2012-03-27 00:29:11 +01:00