linux/drivers/mtd/nand/raw
Frieder Schrempf f90da7818b mtd: rawnand: Support bad block markers in first, second or last page
Currently supported bad block marker positions within the block are:
* in first page only
* in last page only
* in first or second page

Some ESMT NANDs are known to have been shipped by the manufacturer
with bad block markers in the first or last page, instead of the
first or second page.

Also the datasheets for Cypress/Spansion/AMD NANDs claim that the
first, second *and* last page needs to be checked.

Therefore we make it possible to set NAND_BBM_FIRSTPAGE,
NAND_BBM_SECONDPAGE and NAND_BBM_LASTPAGE independently in any
combination.

To simplify the code, the logic to evaluate the flags is moved to a
a new function nand_bbm_get_next_page().

Signed-off-by: Frieder Schrempf <frieder.schrempf@kontron.de>
Reviewed-by: Boris Brezillon <bbrezillon@kernel.org>
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
2019-04-18 08:54:08 +02:00
..
atmel mtd: rawnand: atmel: Fix spelling mistake in error message 2019-04-18 08:54:02 +02:00
bcm47xxnflash mtd: rawnand: Get rid of chip->chipsize 2019-04-08 10:21:15 +02:00
brcmnand mtd: rawnand: Provide a helper to get chip->data_buf 2019-04-08 10:21:13 +02:00
gpmi-nand mtd: rawnand: Get rid of chip->ecc_{strength,step}_ds 2019-04-08 10:21:16 +02:00
ingenic mtd: rawnand: ingenic: Make jz4725b_ooblayout_ops static 2019-04-18 08:54:04 +02:00
ams-delta.c mtd: rawnand: ams-delta: Use GPIO API for data I/O 2018-12-07 10:38:27 +01:00
au1550nd.c mtd: rawnand: Deprecate the ->select_chip() hook 2018-12-07 10:38:27 +01:00
cafe_nand.c mtd: rawnand: Deprecate the dummy_controller field 2018-12-07 10:58:11 +01:00
cmx270_nand.c mtd: rawnand: Deprecate ->chip_delay 2018-10-03 11:12:25 +02:00
cs553x_nand.c mtd: rawnand: Deprecate ->chip_delay 2018-10-03 11:12:25 +02:00
davinci_nand.c mtd: rawnand: Deprecate the dummy_controller field 2018-12-07 10:58:11 +01:00
denali_dt.c mtd: rawnand: denali: decouple controller and NAND chips 2019-04-18 08:54:03 +02:00
denali_pci.c mtd: rawnand: denali: decouple controller and NAND chips 2019-04-18 08:54:03 +02:00
denali.c mtd: rawnand: denali: clean up coding style 2019-04-18 08:54:04 +02:00
denali.h mtd: rawnand: denali: decouple controller and NAND chips 2019-04-18 08:54:03 +02:00
diskonchip.c mtd: rawnand: Get rid of chip->numchips 2019-04-08 10:21:16 +02:00
fsl_elbc_nand.c mtd: rawnand: fsl_elbc: Make SW ECC work 2019-04-18 08:54:02 +02:00
fsl_ifc_nand.c mtd: rawnand: Get rid of chip->numchips 2019-04-08 10:21:16 +02:00
fsl_upm.c mtd: rawnand: Deprecate the ->select_chip() hook 2018-12-07 10:38:27 +01:00
fsmc_nand.c MTD changes: 2019-03-04 18:59:37 -08:00
gpio.c mtd: rawnand: Deprecate ->chip_delay 2018-10-03 11:12:25 +02:00
hisi504_nand.c mtd: rawnand: Get rid of chip->numchips 2019-04-08 10:21:16 +02:00
internals.h mtd: rawnand: Support bad block markers in first, second or last page 2019-04-18 08:54:08 +02:00
Kconfig mtd: rawnand: fix build dependency 2019-04-18 08:54:01 +02:00
lpc32xx_mlc.c mtd: rawnand: Deprecate the dummy_controller field 2018-12-07 10:58:11 +01:00
lpc32xx_slc.c mtd: rawnand: Deprecate the dummy_controller field 2018-12-07 10:58:11 +01:00
Makefile mtd: rawnand: fix build dependency 2019-04-18 08:54:01 +02:00
marvell_nand.c mtd: rawnand: marvell: Fix helper name in comment 2019-04-18 08:54:06 +02:00
meson_nand.c mtd: rawnand: meson: only initialize the RB completion once 2019-04-18 08:54:07 +02:00
mpc5121_nfc.c mtd: rawnand: Deprecate the ->select_chip() hook 2018-12-07 10:38:27 +01:00
mtk_ecc.c mtd: rawnand: mtk: fix possible object reference leak 2019-02-07 23:14:16 +01:00
mtk_ecc.h
mtk_nand.c mtd: rawnand: Get rid of chip->ecc_{strength,step}_ds 2019-04-08 10:21:16 +02:00
mxc_nand.c mtd: rawnand: Deprecate the dummy_controller field 2018-12-07 10:58:11 +01:00
nand_amd.c mtd: nand: Make flags for bad block marker position more granular 2019-04-18 08:54:07 +02:00
nand_base.c mtd: rawnand: Support bad block markers in first, second or last page 2019-04-18 08:54:08 +02:00
nand_bbt.c mtd: rawnand: Support bad block markers in first, second or last page 2019-04-18 08:54:08 +02:00
nand_bch.c mtd: rawnand: Pass a nand_chip object to ecc->correct() 2018-10-03 11:12:25 +02:00
nand_ecc.c mtd: rawnand: Allow selection of ECC byte ordering at runtime 2018-10-03 11:12:25 +02:00
nand_esmt.c mtd: nand: Make flags for bad block marker position more granular 2019-04-18 08:54:07 +02:00
nand_hynix.c mtd: nand: Make flags for bad block marker position more granular 2019-04-18 08:54:07 +02:00
nand_ids.c mtd: rawnand: ESMT: retrieve ECC requirements from 5th id byte 2018-10-03 11:12:25 +02:00
nand_jedec.c mtd: rawnand: Get rid of chip->ecc_{strength,step}_ds 2019-04-08 10:21:16 +02:00
nand_legacy.c mtd: rawnand: Annotate implicit fall through in nand_command/nand_command_lp 2019-02-05 16:56:10 +01:00
nand_macronix.c mtd: nand: Make flags for bad block marker position more granular 2019-04-18 08:54:07 +02:00
nand_micron.c mtd: nand: Make flags for bad block marker position more granular 2019-04-18 08:54:07 +02:00
nand_onfi.c mtd: rawnand: Get rid of chip->ecc_{strength,step}_ds 2019-04-08 10:21:16 +02:00
nand_samsung.c mtd: nand: Make flags for bad block marker position more granular 2019-04-18 08:54:07 +02:00
nand_timings.c mtd: rawnand: Keep all internal stuff private 2018-10-03 11:12:25 +02:00
nand_toshiba.c mtd: nand: Make flags for bad block marker position more granular 2019-04-18 08:54:07 +02:00
nandsim.c mtd: rawnand: Get rid of chip->chipsize 2019-04-08 10:21:15 +02:00
ndfc.c mtd: rawnand: Deprecate the ->select_chip() hook 2018-12-07 10:38:27 +01:00
nuc900_nand.c mtd: rawnand: Mark expected switch fall-throughs 2019-03-21 16:44:55 +01:00
omap2.c mtd: nand: Clarify Kconfig entry for software BCH ECC algorithm 2019-04-18 08:54:00 +02:00
omap_elm.c mtd: rawnand: Mark expected switch fall-throughs 2019-03-21 16:44:55 +01:00
orion_nand.c mtd: rawnand: Deprecate ->chip_delay 2018-10-03 11:12:25 +02:00
oxnas_nand.c mtd: rawnand: Deprecate ->chip_delay 2018-10-03 11:12:25 +02:00
pasemi_nand.c mtd: rawnand: Deprecate ->chip_delay 2018-10-03 11:12:25 +02:00
plat_nand.c mtd: rawnand: Deprecate the ->select_chip() hook 2018-12-07 10:38:27 +01:00
qcom_nandc.c mtd: rawnand: Provide a helper to get chip->data_buf 2019-04-08 10:21:13 +02:00
r852.c mtd: rawnand: Stop using chip->state in drivers 2019-02-05 15:39:40 +01:00
r852.h mtd: rawnand: r852: fix spelling mistake "card_registred" -> "card_registered" 2018-10-08 10:00:10 +02:00
s3c2410.c mtd: rawnand: Move ->setup_data_interface() to nand_controller_ops 2018-12-07 10:38:27 +01:00
sh_flctl.c mtd: nand: Make flags for bad block marker position more granular 2019-04-18 08:54:07 +02:00
sharpsl.c mtd: rawnand: Deprecate ->chip_delay 2018-10-03 11:12:25 +02:00
sm_common.c mtd: rawnand: Deprecate the dummy_controller field 2018-12-07 10:58:11 +01:00
sm_common.h
socrates_nand.c mtd: rawnand: Deprecate ->chip_delay 2018-10-03 11:12:25 +02:00
stm32_fmc2_nand.c mtd: rawnand: stm32_fmc2: add polling mode 2019-02-05 15:39:37 +01:00
sunxi_nand.c mtd: rawnand: sunxi: Add A23/A33 DMA support 2019-04-18 08:54:05 +02:00
tango_nand.c mtd: rawnand: Move ->setup_data_interface() to nand_controller_ops 2018-12-07 10:38:27 +01:00
tegra_nand.c mtd: rawnand: Get rid of chip->ecc_{strength,step}_ds 2019-04-08 10:21:16 +02:00
tmio_nand.c mtd: rawnand: Stop using chip->state in drivers 2019-02-05 15:39:40 +01:00
txx9ndfmc.c mtd: rawnand: Allow selection of ECC byte ordering at runtime 2018-10-03 11:12:25 +02:00
vf610_nfc.c mtd: rawnand: vf610: Avoid a potential NULL pointer dereference 2019-04-08 10:21:07 +02:00
xway_nand.c mtd: rawnand: Deprecate the ->select_chip() hook 2018-12-07 10:38:27 +01:00