linux/drivers/mtd/nand
White Ding 57d3a9a89a mtd: nand: fix nand_lock/unlock() function
Do nand reset before write protect check.

If we want to check the WP# low or high through STATUS READ and check bit 7,
we must reset the device, other operation (eg.erase/program a locked block) can
also clear the bit 7 of status register.

As we know the status register can be refreshed, if we do some operation to trigger it,
for example if we do erase/program operation to one block that is locked, then READ STATUS,
the bit 7 of READ STATUS will be 0 indicate the device in write protect, then if we do
erase/program operation to another block that is unlocked, the bit 7 of READ STATUS will
be 1 indicate the device is not write protect.
Suppose we checked the bit 7 of READ STATUS is 0 then judge the WP# is low (write protect),
but in this case the WP# maybe high if we do erase/program operation to a locked block,
so we must reset the device if we want to check the WP# low or high through STATUS READ and
check bit 7.

Signed-off-by: White Ding <bpqw@micron.com>
Signed-off-by: Brian Norris <computersforpeace@gmail.com>
2014-08-19 11:53:07 -07:00
..
bcm47xxnflash mtd: bcm47xxnflash: Use devm_kzalloc 2013-11-06 23:32:56 -08:00
gpmi-nand mtd: gpmi: make blockmark swapping optional 2014-07-27 22:06:31 -07:00
ams-delta.c mtd: delete non-required instances of include <linux/init.h> 2014-03-10 22:42:22 -07:00
atmel_nand_ecc.h mtd: at91: atmel_nand: add Programmable Multibit ECC controller support 2012-07-06 18:23:25 +01:00
atmel_nand_nfc.h mtd: atmel_nand: add NFC status error check 2014-07-21 20:02:01 -07:00
atmel_nand.c mtd: atmel_nand: remove redundant dev_err call 2014-08-19 11:53:06 -07:00
au1550nd.c MIPS: Alchemy: remove au_read/write/sync 2014-07-30 13:56:34 +02:00
bf5xx_nand.c mtd: bf5xx_nand: drop no-op PM support 2014-07-02 17:42:57 -07:00
cafe_nand.c mtd: nand: kill the the NAND_MAX_PAGESIZE/NAND_MAX_OOBSIZE for nand_buffers{} 2014-03-10 22:42:22 -07:00
cmx270_nand.c mtd: cmx270_nand: Remove unnecessary OOM messages 2014-01-03 11:22:29 -08:00
cs553x_nand.c mtd: cs553x_nand: Remove unnecessary OOM messages 2014-01-03 11:22:29 -08:00
davinci_nand.c mtd: davinci-nand: disable subpage write for keystone-nand 2014-04-30 15:26:49 -07:00
denali_dt.c mtd: denali_dt: Use devm_ioremap_resource() 2014-03-25 23:21:08 -07:00
denali_pci.c mtd: denali: Drop print of build date/time 2014-01-09 08:52:48 -08:00
denali.c mtd: denali: avoid using a magic number 2014-08-19 11:53:07 -07:00
denali.h mtd: denali: kill the NAND_MAX_PAGESIZE/NAND_MAX_OOBSIZE 2014-01-11 12:20:15 -08:00
diskonchip.c mtd: diskonchip: mem resource name is not optional 2014-03-31 18:43:22 -07:00
docg4.c mtd: nand: refactor erase_cmd() to return chip status 2014-05-09 13:19:42 -07:00
fsl_elbc_nand.c mtd: eLBC NAND: fix subpage write support 2014-05-20 16:35:31 -07:00
fsl_ifc_nand.c mtd: fsl_ifc_nand: Workaround bogus WP on 16-bit NAND 2014-05-20 17:36:34 -07:00
fsl_upm.c drivers: clean-up prom.h implicit includes 2013-10-09 20:04:04 -05:00
fsmc_nand.c mtd: fsmc_nand: use dev_warn() instead of printk() 2014-01-07 10:07:03 -08:00
gpio.c mtd: delete non-required instances of include <linux/init.h> 2014-03-10 22:42:22 -07:00
jz4740_nand.c mtd: jz4740_nand: Remove unnecessary OOM messages 2014-01-03 11:22:30 -08:00
Kconfig MTD updates for 3.15: 2014-04-07 10:17:30 -07:00
lpc32xx_mlc.c mtd: lpc32xx: drop bitflip_threshold initialization 2014-07-01 18:55:02 -07:00
lpc32xx_slc.c mtd: lpc32xx: drop bitflip_threshold initialization 2014-07-01 18:55:02 -07:00
Makefile mtd: nand: add ONFI timing mode to nand_timings converter 2014-07-21 19:39:55 -07:00
mpc5121_nfc.c mtd: delete non-required instances of include <linux/init.h> 2014-03-10 22:42:22 -07:00
mxc_nand.c mtd: mxc_nand: Propagate the error if platform_get_irq() fails 2014-03-10 22:42:26 -07:00
nand_base.c mtd: nand: fix nand_lock/unlock() function 2014-08-19 11:53:07 -07:00
nand_bbt.c mtd: Introduce mtd_block_isreserved() 2014-07-08 18:38:16 -07:00
nand_bch.c mtd: cleanup style on pr_debug messages 2011-09-11 15:02:16 +03:00
nand_ecc.c mtd: nand: add line feed to pr_err 2014-04-16 00:18:26 -07:00
nand_ids.c mtd: nand: add support for SanDisk SDTNRGAMA-008G 2014-03-10 22:42:22 -07:00
nand_timings.c mtd: nand: add ONFI timing mode to nand_timings converter 2014-07-21 19:39:55 -07:00
nandsim.c replace checking for ->read/->aio_read presence with check in ->f_mode 2014-05-06 17:32:55 -04:00
ndfc.c mtd: ndfc: silence an array underflow static checker warning 2014-08-19 11:53:05 -07:00
nuc900_nand.c mtd: nuc900_nand: NULL dereference in nuc900_nand_enable() 2014-03-10 22:42:27 -07:00
omap2.c mtd: nand: omap: fix omap_calculate_ecc_bch() for-loop error 2014-05-28 13:13:00 -07:00
orion_nand.c mtd: orion_nand: Make of_device_id array const 2014-05-20 16:35:30 -07:00
pasemi_nand.c mtd: delete non-required instances of include <linux/init.h> 2014-03-10 22:42:22 -07:00
plat_nand.c mtd: plat_nand: remove redundant return value check of platform_get_resource() 2014-01-20 11:37:29 -08:00
pxa3xx_nand.c mtd: pxa3xx_nand: make the driver work on big-endian systems 2014-05-28 13:27:37 -07:00
r852.c mtd: nand: r852: correct write_buf loop bounds 2014-05-28 00:05:26 -07:00
r852.h
s3c2410.c mtd: s3c2410: Move to clk_prepare_enable/clk_disable_unprepare 2014-07-02 15:19:22 -07:00
sh_flctl.c PM / QoS: Rename device resume latency QoS items 2014-02-11 00:35:23 +01:00
sharpsl.c mtd: sharpsl: use dev_err() instead of printk() 2014-01-07 10:07:31 -08:00
sm_common.c mtd: nand: refactor chip->block_markbad interface 2013-08-30 16:47:52 +01:00
sm_common.h
socrates_nand.c MTD merge for 3.13 2013-11-14 12:31:43 +09:00
tmio_nand.c mtd: tmio_nand: Use devm_*() functions 2014-01-03 11:22:28 -08:00
txx9ndfmc.c mtd: txx9ndfmc: Remove unnecessary OOM messages 2014-01-03 11:22:30 -08:00
xway_nand.c mtd: lantiq: Add NAND support on Lantiq XWAY SoC. 2012-09-29 15:05:18 +01:00