linux/drivers/mtd/nand
Boris Brezillon f88fc122cc mtd: nand: Cleanup/rework the atmel_nand driver
This is a complete rewrite of the driver whose main purpose is to
support the new DT representation where the NAND controller node is now
really visible in the DT and appears under the EBI bus. With this new
representation, we can add other devices under the EBI bus without
risking pinmuxing conflicts (the NAND controller is under the EBI
bus logic and as such, share some of its pins with other devices
connected on this bus).

Even though the goal of this rework was not necessarily to add new
features, the new driver has been designed with this in mind. With a
clearer separation between the different blocks and different IP
revisions, adding new functionalities should be easier (we already
have plans to support SMC timing configuration so that we no longer
have to rely on the configuration done by the bootloader/bootstrap).

Also note that we no longer have a custom ->cmdfunc() implementation,
which means we can now benefit from new features added in the core
implementation for free (support for new NAND operations for example).

The last thing that we gain with this rework is support for multi-chips
and multi-dies chips, thanks to the clean NAND controller <-> NAND
devices representation.

During this transition we also dropped support for AVR32 SoCs which
should soon disappear from mainline (removal of the AVR32 arch is
planned for 4.12).

This new driver has been tested on several platforms (at91sam9261,
at91sam9g45, at91sam9x5, sama5d3 and sama5d4) to make sure it did not
introduce regressions, and it's worth mentioning that old bindings are
still supported (which partly explain the positive diffstat).

Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>
Acked-by: Nicolas Ferre <nicolas.ferre@microchip.com>
2017-04-25 14:18:29 +02:00
..
atmel mtd: nand: Cleanup/rework the atmel_nand driver 2017-04-25 14:18:29 +02:00
bcm47xxnflash mtd: nand: make use of nand_set/get_controller_data() helpers 2016-01-07 10:23:41 -08:00
brcmnand mtd: nand: brcmnand: return error code of nand_scan_ident/tail() on error 2016-11-07 14:48:47 +01:00
gpmi-nand sched/headers: Prepare for new header dependencies before moving code to <linux/sched/task_stack.h> 2017-03-02 08:42:36 +01:00
ams-delta.c mtd: nand: ams-delta: return error code of nand_scan() on error 2016-11-07 14:48:41 +01:00
au1550nd.c mtd: nand: au1550nd: set ECC algorithm explicitly 2016-05-05 23:51:53 +02:00
bf5xx_nand.c mtd: nand: import nand_hw_control_init() 2016-09-23 09:35:16 +02:00
cafe_nand.c mtd: nand: cafe: return error code of nand_scan_ident() on error 2016-11-07 14:48:51 +01:00
cmx270_nand.c mtd: nand: cmx270: return error code of nand_scan() on error 2016-11-07 14:48:41 +01:00
cs553x_nand.c mtd: nand: cs553x: return error code of nand_scan() on error 2016-11-07 14:48:42 +01:00
davinci_nand.c mtd: nand: davinci: Reinitialize the HW ECC engine in 4bit hwctl 2016-09-09 19:39:33 -07:00
denali_dt.c mtd: nand: denali: introduce capability flag 2017-03-24 09:51:38 +01:00
denali_pci.c mtd: nand: denali: remove unneeded <linux/slab.h> includes 2016-11-19 09:30:55 +01:00
denali.c mtd: nand: denali: remove unnecessary writes to ECC_CORRECTION 2017-03-28 14:24:46 +02:00
denali.h mtd: nand: denali: remove unnecessary writes to ECC_CORRECTION 2017-03-28 14:24:46 +02:00
diskonchip.c mtd: nand: diskonchip: switch to mtd_ooblayout_ops 2016-05-05 23:51:40 +02:00
docg4.c mtd: nand: import nand_hw_control_init() 2016-09-23 09:35:16 +02:00
fsl_elbc_nand.c mtd: nand: import nand_hw_control_init() 2016-09-23 09:35:16 +02:00
fsl_ifc_nand.c mtd: nand: ifc: Fix location of eccstat registers for IFC V1.0 2017-02-06 08:54:01 +01:00
fsl_upm.c mtd: nand: fsl_upm: set ECC algorithm explicitly 2016-05-05 23:51:54 +02:00
fsmc_nand.c mtd: nand: fsmc: remove CONFIG_OF conditional 2017-03-23 11:11:44 +01:00
gpio.c mtd: nand: gpio: make nCE GPIO optional 2017-03-16 10:34:27 +01:00
hisi504_nand.c mtd: nand: hisi504: return error code of nand_scan_ident() on error 2016-11-07 14:48:51 +01:00
jz4740_nand.c mtd: nand: jz4740: Remove unused local variable 2016-05-05 23:51:56 +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: import nand_hw_control_init() 2016-09-23 09:35:16 +02:00
Kconfig mtd: nand: Cleanup/rework the atmel_nand driver 2017-04-25 14:18:29 +02:00
lpc32xx_mlc.c mtd: nand: lpc32xx: fix invalid error handling of a requested irq 2017-01-04 20:50:18 +01:00
lpc32xx_slc.c mtd: nand: lpc32xx_slc: Remove unneeded NULL check on 'rc' 2017-01-30 11:50:30 +01:00
Makefile mtd: nand: Cleanup/rework the atmel_nand driver 2017-04-25 14:18:29 +02:00
mpc5121_nfc.c mtd: nand: mpc5121: return error code of nand_scan() on error 2016-11-07 14:48:43 +01:00
mtk_ecc.c mtd: mtk: avoid warning in mtk_ecc_encode 2016-10-28 10:21:23 +02:00
mtk_ecc.h mtd: mediatek: driver for MTK Smart Device 2016-07-11 08:39:54 +02:00
mtk_nand.c mtd: nand: mediatek: remove redundant dev_err call in mtk_nfc_probe() 2017-01-30 11:54:22 +01:00
mxc_nand.c mtd: nand: mxc: return error code of nand_scan_ident/tail() on error 2016-11-07 14:48:49 +01:00
nand_amd.c mtd: nand: Move AMD/Spansion specific init/detection logic in nand_amd.c 2017-03-08 23:21:22 +01:00
nand_base.c mtd: nand: do not check R/B# for CMD_SET_FEATURES in nand_command(_lp) 2017-03-24 10:07:40 +01:00
nand_bbt.c mtd: nand_bbt: scan for next free bbt block if writing bbt fails 2016-09-23 09:35:16 +02:00
nand_bch.c mtd: nand_bch: fix spelling of "probably" 2016-05-06 09:45:45 -07:00
nand_ecc.c mtd: nand: return consistent error codes in ecc.correct() implementations 2016-01-06 18:45:46 -08:00
nand_hynix.c mtd: nand: hynix: Fix an error code in init 2017-03-23 10:44:02 +01:00
nand_ids.c mtd: nand: Move Macronix specific initialization in nand_macronix.c 2017-03-08 23:21:23 +01:00
nand_macronix.c mtd: nand: Move Macronix specific initialization in nand_macronix.c 2017-03-08 23:21:23 +01:00
nand_micron.c mtd: nand: Move Micron specific init logic in nand_micron.c 2017-03-08 23:21:21 +01:00
nand_samsung.c mtd: nand: samsung: Retrieve ECC requirements from extended ID 2017-03-08 23:21:23 +01:00
nand_timings.c mtd: nand: Add a few more timings to nand_sdr_timings 2016-11-07 14:48:37 +01:00
nand_toshiba.c mtd: nand: Move Toshiba specific init/detection logic in nand_toshiba.c 2017-03-08 23:21:21 +01:00
nandsim.c mtd: nand: nandsim: fix spelling mistake: "weakpagess" -> "weakpages" 2017-03-16 10:23:38 +01:00
ndfc.c mtd: nand: import nand_hw_control_init() 2016-09-23 09:35:16 +02:00
nuc900_nand.c mtd: nand: nuc900: set ECC algorithm explicitly 2016-04-19 22:05:32 +02:00
omap2.c mtd: nand: omap2: return error code of nand_scan_ident/tail() on error 2016-11-07 14:48:50 +01:00
omap_elm.c mtd: omap_elm: print interrupt resource using %pr 2015-12-18 10:16:17 -08:00
orion_nand.c mtd: nand: orion: improve handling of optional clock 2017-03-29 17:05:37 +02:00
oxnas_nand.c mtd: nand: Add OX820 NAND Support 2016-10-22 14:24:21 +02:00
pasemi_nand.c mtd: nand: pasemi: return error code of nand_scan() on error 2016-11-07 14:48:45 +01:00
plat_nand.c mtd: nand: plat_nand: return error code of nand_scan() on error 2016-11-07 14:48:45 +01:00
pxa3xx_nand.c mtd: nand: pxa3xx: return error code of nand_scan_ident() on error 2016-11-07 14:48:52 +01:00
qcom_nandc.c mtd: nand: import nand_hw_control_init() 2016-09-23 09:35:16 +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: r852: use the mtd instance embedded in struct nand_chip 2015-12-18 10:54:41 -08:00
s3c2410.c mtd: s3c2410: parse the device configuration from OF node 2016-11-07 14:48:36 +01:00
sh_flctl.c mtd: nand: sh_flctl: handle dma_submit() errors 2016-09-23 09:35:16 +02:00
sharpsl.c mtd: nand: sharpsl: switch to mtd_ooblayout_ops 2016-05-05 23:51:36 +02:00
sm_common.c mtd: nand: sm_common: switch to mtd_ooblayout_ops 2016-05-05 23:51:48 +02:00
sm_common.h
socrates_nand.c mtd: nand: socrates: use nand_scan() for nand_scan_ident/tail() combo 2016-11-07 14:48:53 +01:00
sunxi_nand.c mtd: nand: sunxi: simplify optional reset handling 2017-03-16 09:53:59 +01:00
tango_nand.c mtd: nand: tango: Enforce DMA direction type 2017-03-16 10:26:23 +01:00
tmio_nand.c mtd: nand: tmio: return error code of nand_scan() on error 2016-11-07 14:48:44 +01:00
txx9ndfmc.c mtd: nand: import nand_hw_control_init() 2016-09-23 09:35:16 +02:00
vf610_nfc.c mtd: nand: vf610: return error code of nand_scan_ident/tail() on error 2016-11-07 14:48:50 +01:00
xway_nand.c mtd: update my email address 2017-02-08 12:49:27 -08:00