[PATCH v4 00/10] ARM: berlin: add nand support
Antoine Tenart
antoine.tenart at free-electrons.com
Wed Apr 15 10:23:58 PDT 2015
Hi all,
This series introduces the support for the Marvell Berlin nand
controller. It was tested on the Marvell Berlin BG2Q DMP board.
The support is added into the existing pxa3xx nand controller. Some
additions were done in order to get this controller working:
- Support for a non mandatory ECC clock has been added.
- The Berlin nand controller needs to poll the status register.
- Sequences of commands are quite different in order to perform write
operation.
Since v3, this series had a lots of changes. The pxa3xx nand driver
was using its own flash table and had its own timings setup. I made
the required modifications to use the nand framework to perform these
steps. This worked nicely until we found out some boards use non-onfi
nands. To handle this case, I had to reintroduce the timing table in
the pxa3xx driver. In this case, the flash detection is done by the
framework, and the flash used *has to* be supported by the framework,
but its timing definitions remains inside the pxa3xx driver.
This should be tested on old platform using this driver, with non-onfi
devices and theirs definitions may have to be added in the nand_ids
table.
Another solution would have been to configure the timings in the
device tree, but this wouldn't have work for devices using board
files.
Antoine
Changes since v3:
- Reworked the nand flash detection
- Reworked the timings setup
Changes since v2:
- Reworked the timings setup
- Added a explanation in the default chunk size commit
- Ensured commit 4/10 was useless and removed it
- Fixed typos, cosmetic
Changes since v1:
- Added a fallback to NULL when looking for the 'nfc' clock
- Added the clocks in the bindings documentation
- Reworked the DT
- Removed non needed RNDOUT command
- Used the standard RESET command
- Fixed the flash type matching order
- Remove all non tested flash types (only one left)
- Added a check to explicitly not support nand chips with small pages
- Remove useless checks for clocks in the probing function
- Various clean up
Antoine Tenart (10):
mtd: pxa3xx_nand: add a non mandatory ECC clock
Documentation: bindings: document the clocks for pxa3xx-nand
mtd: pxa3xx_nand: add a default chunk size
mtd: pxa3xx_nand: rework flash detection and timing setup
mtd: nand: add Samsung K9GBG08U0A-M to nand_ids table
mtd: pxa3xx_nand: add support for the Marvell Berlin nand controller
Documentation: bindings: add the Berlin nand controller compatible
mtd: nand: let Marvell Berlin SoCs select the pxa3xx driver
ARM: berlin: add BG2Q node for the nand
ARM: berlin: enable flash on the BG2Q DMP
.../devicetree/bindings/mtd/pxa3xx-nand.txt | 5 +
arch/arm/boot/dts/berlin2q-marvell-dmp.dts | 25 ++
arch/arm/boot/dts/berlin2q.dtsi | 13 +
drivers/mtd/nand/Kconfig | 4 +-
drivers/mtd/nand/nand_ids.c | 4 +
drivers/mtd/nand/pxa3xx_nand.c | 432 +++++++++++++++------
include/linux/platform_data/mtd-nand-pxa3xx.h | 11 +-
7 files changed, 366 insertions(+), 128 deletions(-)
--
2.3.5
More information about the linux-arm-kernel
mailing list