ath79: add AR934x NAND Flash Controller driver
authorMichal Cieslakiewicz <michal.cieslakiewicz@wp.pl>
Fri, 11 Oct 2019 08:50:11 +0000 (10:50 +0200)
committerDavid Bauer <mail@david-bauer.net>
Sun, 20 Oct 2019 13:32:53 +0000 (15:32 +0200)
commit758a4d1766b3668422881480db8c3c6f94ebc2ea
tree113ae1f4f035a0a689212c954900e9271c37af53
parentf1d761f95e9664a9c11ce1b98f9e121b43c79d35
ath79: add AR934x NAND Flash Controller driver

This patch contains updated driver for Atheros NAND Flash Controller
written originally by Gabor Juhos for ar71xx (aka 'ar934x-nfc').
ath79 version has adapted to work with kernel 4.19 and Device Tree.
It has also been renamed to 'ar934x-nand' to avoid confusion with
Near-Field Communication technology.
Controller is present on Atheros AR934x SoCs and required for accessing
internal flash storage on routers like Netgear WNDR4300.
This port preserves all NAND programming code while moving platform
configuration to Device Tree and replacing some kernel functions marked
for retirement by 4.19.
Suitable definition is included in 'ar934x.dtsi' ('nand@1b000200' section).

Most important changes to ar71xx version are:
* old kernel sections of code removed
* 'bool swap_dma' provided by platform data is now set by boolean DT
  property 'qca,nand-swap-dma'
* board-supplied (mach-*.c code) platform data removed - its elements
  become either unused, redundant or replaced by DT methods (like reset)
* IRQ is reserved by devm_request_irq() so free_irq() is not needed anymore
* calls to deprecated nand_scan_ident() + nand_scan_tail() function pair
  replaced by using recommended nand_scan() with attach_chip() callback
* ECC is set to hardware by default, can be overriden by standard DT
  'nand-ecc-*' properties (software Hamming or BCH are other options)

This driver has been successfully tested on Netgear WNDR4300 running
experimental ath79 OpenWrt master branch.

Signed-off-by: Michal Cieslakiewicz <michal.cieslakiewicz@wp.pl>
[add reset control]
Signed-off-by: David Bauer <mail@david-bauer.net>
target/linux/ath79/dts/ar934x.dtsi
target/linux/ath79/files/drivers/mtd/nand/raw/ar934x_nand.c [new file with mode: 0644]
target/linux/ath79/nand/config-default
target/linux/ath79/patches-4.19/440-mtd-ar934x-nand-driver.patch [new file with mode: 0644]