linux/drivers/mtd/nand
Boris Brezillon fee4380f36 mtd: nand: pxa3xx: Fix READOOB implementation
In the current driver, OOB bytes are accessed in raw mode, and when a
page access is done with NDCR_SPARE_EN set and NDCR_ECC_EN cleared, the
driver must read the whole spare area (64 bytes in case of a 2k page,
16 bytes for a 512 page). The driver was only reading the free OOB
bytes, which was leaving some unread data in the FIFO and was somehow
leading to a timeout.

We could patch the driver to read ->spare_size + ->ecc_size instead of
just ->spare_size when READOOB is requested, but we'd better make
in-band and OOB accesses consistent.
Since the driver is always accessing in-band data in non-raw mode (with
the ECC engine enabled), we should also access OOB data in this mode.
That's particularly useful when using the BCH engine because in this
mode the free OOB bytes are also ECC protected.

Fixes: 43bcfd2bb2 ("mtd: nand: pxa3xx: Add driver-specific ECC BCH support")
Cc: stable@vger.kernel.org
Reported-by: Sean Nyekjær <sean.nyekjaer@prevas.dk>
Tested-by: Willy Tarreau <w@1wt.eu>
Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>
Acked-by: Ezequiel Garcia <ezequiel@vanguardiasur.com.ar>
Tested-by: Sean Nyekjaer <sean.nyekjaer@prevas.dk>
Acked-by: Robert Jarzmik <robert.jarzmik@free.fr>
Signed-off-by: Richard Weinberger <richard@nod.at>
2018-01-06 23:06:58 +01:00
..
atmel Core changes: 2017-11-02 22:30:37 +01:00
bcm47xxnflash License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
brcmnand mtd: nand: brcmnand: Zero bitflip is not an error 2017-12-15 22:26:48 +01:00
gpmi-nand mtd: nand: gpmi: Fix failure when a erased page has a bitflip at BBM 2017-12-15 22:26:15 +01:00
ams-delta.c mtd: constify mtd_partition 2017-11-06 23:26:01 +01:00
au1550nd.c mtd: nand: introduce NAND_ROW_ADDR_3 flag 2017-09-18 14:55:52 +02:00
bf5xx_nand.c mtd: nand: Rename nand.h into rawnand.h 2017-08-13 10:11:49 +02:00
cafe_nand.c mtd: nand: Rename nand.h into rawnand.h 2017-08-13 10:11:49 +02:00
cmx270_nand.c mtd: constify mtd_partition 2017-11-06 23:26:01 +01:00
cs553x_nand.c mtd: nand: Rename nand.h into rawnand.h 2017-08-13 10:11:49 +02:00
davinci_nand.c mtd: nand: Rename nand.h into rawnand.h 2017-08-13 10:11:49 +02:00
denali_dt.c mtd: nand: denali: clean up comments 2017-09-22 09:04:32 +02:00
denali_pci.c mtd: nand: denali: clean up comments 2017-09-22 09:04:32 +02:00
denali.c mtd: nand: denali: fix setup_data_interface to meet tCCS delay 2017-10-07 11:28:06 +02:00
denali.h mtd: nand: denali: change the setup_dma choice into hook 2017-09-22 09:04:40 +02:00
diskonchip.c mtd: nand: introduce NAND_ROW_ADDR_3 flag 2017-09-18 14:55:52 +02:00
docg4.c mtd: nand: Rename nand.h into rawnand.h 2017-08-13 10:11:49 +02:00
fsl_elbc_nand.c mtd: nand: Rename nand.h into rawnand.h 2017-08-13 10:11:49 +02:00
fsl_ifc_nand.c mtd: nand: Rename nand.h into rawnand.h 2017-08-13 10:11:49 +02:00
fsl_upm.c mtd: nand: Rename nand.h into rawnand.h 2017-08-13 10:11:49 +02:00
fsmc_nand.c mtd: nand: Rename nand.h into rawnand.h 2017-08-13 10:11:49 +02:00
gpio.c mtd: nand: gpio: Fix ALE gpio configuration 2017-12-15 22:27:54 +01:00
hisi504_nand.c mtd: nand: introduce NAND_ROW_ADDR_3 flag 2017-09-18 14:55:52 +02:00
jz4740_nand.c mtd: nand: Rename nand.h into rawnand.h 2017-08-13 10:11:49 +02:00
jz4780_bch.c mtd: nand: jz4780: Update MODULE_AUTHOR email address 2016-07-11 08:40:19 +02:00
jz4780_bch.h mtd: nand: jz4780: driver for NAND devices on JZ4780 SoCs 2016-01-07 09:35:11 -08:00
jz4780_nand.c mtd: nand: Rename nand.h into rawnand.h 2017-08-13 10:11:49 +02:00
Kconfig mtd: nand: pxa3xx_nand: Update Kconfig information 2017-10-07 11:28:06 +02:00
lpc32xx_mlc.c mtd: nand: lpc32xx_mlc: Fix an error handling path in lpc32xx_nand_probe() 2017-09-18 12:07:30 +02:00
lpc32xx_slc.c Merge branch 'nand/rename-header-file' of git://git.infradead.org/l2-mtd into nand/next 2017-08-23 17:00:12 +02:00
Makefile This pull request contains the following core changes: 2017-11-22 20:46:06 -10:00
mpc5121_nfc.c mtd: nand: Rename nand.h into rawnand.h 2017-08-13 10:11:49 +02:00
mtk_ecc.c mtd: nand: mtk: fix infinite ECC decode IRQ issue 2017-10-30 09:35:04 +01:00
mtk_ecc.h mtd: nand: mediatek: add support for different MTK NAND FLASH Controller IP 2017-06-01 10:09:37 +02:00
mtk_nand.c mtd: nand: Rename nand.h into rawnand.h 2017-08-13 10:11:49 +02:00
mxc_nand.c mtd: nand: mxc: use dev_dbg to print debug messages 2017-10-16 17:57:08 +02:00
nand_amd.c mtd: nand: Rename nand.h into rawnand.h 2017-08-13 10:11:49 +02:00
nand_base.c Core changes: 2017-11-02 22:30:37 +01:00
nand_bbt.c mtd: nand: Rename nand.h into rawnand.h 2017-08-13 10:11:49 +02:00
nand_bch.c mtd: nand: Rename nand.h into rawnand.h 2017-08-13 10:11:49 +02:00
nand_ecc.c mtd: nand: Rename nand.h into rawnand.h 2017-08-13 10:11:49 +02:00
nand_hynix.c Merge branch 'nand/rename-header-file' of git://git.infradead.org/l2-mtd into nand/next 2017-08-23 17:00:12 +02:00
nand_ids.c mtd: nand: Rename nand.h into rawnand.h 2017-08-13 10:11:49 +02:00
nand_macronix.c mtd: nand: Rename nand.h into rawnand.h 2017-08-13 10:11:49 +02:00
nand_micron.c mtd: nand: Rename nand.h into rawnand.h 2017-08-13 10:11:49 +02:00
nand_samsung.c mtd: nand: Rename nand.h into rawnand.h 2017-08-13 10:11:49 +02:00
nand_timings.c This pull request contains the following core changes: 2017-09-01 15:34:30 +02:00
nand_toshiba.c mtd: nand: Rename nand.h into rawnand.h 2017-08-13 10:11:49 +02:00
nandsim.c mtd: Avoid probe failures when mtd->dbg.dfs_dir is invalid 2017-11-13 22:07:31 +01:00
ndfc.c mtd: nand: Rename nand.h into rawnand.h 2017-08-13 10:11:49 +02:00
nuc900_nand.c mtd: nand: introduce NAND_ROW_ADDR_3 flag 2017-09-18 14:55:52 +02:00
omap2.c mtd: nand: omap2: Fix subpage write 2017-10-27 16:53:23 +02:00
omap_elm.c mtd: omap_elm: print interrupt resource using %pr 2015-12-18 10:16:17 -08:00
orion_nand.c Merge branch 'nand/rename-header-file' of git://git.infradead.org/l2-mtd into nand/next 2017-08-23 17:00:12 +02:00
oxnas_nand.c Merge branch 'nand/rename-header-file' of git://git.infradead.org/l2-mtd into nand/next 2017-08-23 17:00:12 +02:00
pasemi_nand.c mtd: nand: Rename nand.h into rawnand.h 2017-08-13 10:11:49 +02:00
plat_nand.c mtd: nand: Rename nand.h into rawnand.h 2017-08-13 10:11:49 +02:00
pxa3xx_nand.c mtd: nand: pxa3xx: Fix READOOB implementation 2018-01-06 23:06:58 +01:00
qcom_nandc.c mtd: nand: qcom: support for command descriptor formation 2017-10-07 11:28:05 +02:00
r852.c mtd: nand: make use of nand_set/get_controller_data() helpers 2016-01-07 10:23:41 -08:00
r852.h mtd: nand: Rename nand.h into rawnand.h 2017-08-13 10:11:49 +02:00
s3c2410.c mtd: nand: Rename nand.h into rawnand.h 2017-08-13 10:11:49 +02:00
sh_flctl.c mtd: nand: sh_flctl: Use of_device_get_match_data() helper 2017-10-07 11:28:07 +02:00
sharpsl.c Merge branch 'nand/rename-header-file' of git://git.infradead.org/l2-mtd into nand/next 2017-08-23 17:00:12 +02:00
sm_common.c mtd: nand: Rename nand.h into rawnand.h 2017-08-13 10:11:49 +02:00
sm_common.h mtd: use __packed shorthand 2014-08-19 11:53:08 -07:00
socrates_nand.c mtd: nand: Rename nand.h into rawnand.h 2017-08-13 10:11:49 +02:00
sunxi_nand.c This pull request contains the following core changes: 2017-09-01 15:34:30 +02:00
tango_nand.c mtd: nand: Rename nand.h into rawnand.h 2017-08-13 10:11:49 +02:00
tmio_nand.c Merge branch 'nand/rename-header-file' of git://git.infradead.org/l2-mtd into nand/next 2017-08-23 17:00:12 +02:00
txx9ndfmc.c mtd: nand: Rename nand.h into rawnand.h 2017-08-13 10:11:49 +02:00
vf610_nfc.c Merge branch 'nand/rename-header-file' of git://git.infradead.org/l2-mtd into nand/next 2017-08-23 17:00:12 +02:00
xway_nand.c mtd: nand: Rename nand.h into rawnand.h 2017-08-13 10:11:49 +02:00