[RESEND PULL] mtd: nand: changes for 4.7

Boris Brezillon boris.brezillon at free-electrons.com
Thu May 5 15:18:23 PDT 2016


Hi Brian,

I pushed a new nand/for-4.7 tag addressing your comments and fixing the
circular dependency bug and white space problems you reported.

Let me know if you see anything else.

Thanks,

Boris

The following changes since commit f55532a0c0b8bb6148f4e07853b876ef73bc69ca:

  Linux 4.6-rc1 (2016-03-26 16:03:24 -0700)

are available in the git repository at:

  git at github.com:linux-nand/linux.git tags/nand/for-4.7

for you to fetch changes up to 666b65683dad9aa90efaa4aad24ef3710101e3aa:

  mtd: brcmnand: respect ECC algorithm set by NAND subsystem (2016-05-05 23:55:15 +0200)

----------------------------------------------------------------
This pull request contains the following infrastructure changes:
* introduction of the ECC algo concept to extend the ECC mode one
* replacement of the nand_ecclayout infrastructure by something more
  future-proof.
* addition of an mtd-activity led trigger to replace the nand-activity
  one

And a bunch of specific NAND driver improvements/fixes. Here are the
changes that are worth mentioning:
* rework of the OMAP GPMC and NAND drivers
* prepare the sunxi NAND driver to receive DMA support
* handle bitflips in erased pages on GPMI revisions that do not support
  this in hardware.

----------------------------------------------------------------
Boris Brezillon (85):
      Merge branch 'for-v4.7/gpmc-mtd-common' of github.com:rogerq/linux into nand/next
      Merge branch 'mtd-nand-trigger' of git://git.kernel.org/.../j.anaszewski/linux-leds into nand/next
      mtd: nand: atmel: correct bitflips in erased pages for pre-sama5d4 SoCs
      mtd: nand: document the NAND controller/NAND chip DT representation
      mtd: nand: remove unneeded of_mtd.h inclusions
      mtd: nand: omap2: rely on generic DT parsing done in nand_scan_ident()
      mtd: nand: brcm: rely on generic DT parsing done in nand_scan_ident()
      mtd: nand: atmel: rely on generic DT parsing done in nand_scan_ident()
      mtd: nand: pxa3xx: rely on generic DT parsing done in nand_scan_ident()
      mtd: nand: sunxi: fix call order in sunxi_nand_chip_init()
      mtd: nand: sunxi: fix clk rate calculation
      mtd: nand: sunxi: fix EDO mode selection
      mtd: nand: sunxi: adapt clk_rate to tWB, tADL, tWHR and tRHW timings
      mtd: nand: export default read/write oob functions
      mtd: nand: sunxi: implement ->read_oob()/->write_oob()
      mtd: nand: sunxi: implement ->read_subpage()
      mtd: nand: sunxi: improve ->cmd_ctrl() function
      mtd: nand: sunxi: let the NAND controller control the CE line
      mtd: nand: sunxi: fix the NFC_ECC_ERR_CNT() macro
      mtd: nand: sunxi: fix NFC_CTL setting
      mtd: nand: sunxi: disable clks on device removal
      mtd: nand: enable ECC pipelining
      mtd: nand: sunxi: fix ->dev_ready() implementation
      mtd: nand: sunxi: make use of readl_poll_timeout()
      mtd: nand: sunxi: poll for events instead of using interrupts
      mtd: nand: sunxi: move some ECC related operations to their own functions
      mtd: nand: sunxi: make OOB retrieval optional
      mtd: nand: sunxi: make cur_off parameter optional in extra oob helpers
      mtd: add mtd_ooblayout_xxx() helper functions
      mtd: use mtd_ooblayout_xxx() helpers where appropriate
      mtd: nand: core: use mtd_ooblayout_xxx() helpers where appropriate
      mtd: nand: atmel: use mtd_ooblayout_xxx() helpers where appropriate
      mtd: nand: fsl_ifc: use mtd_ooblayout_xxx() helpers where appropriate
      mtd: nand: gpmi: use mtd_ooblayout_xxx() helpers where appropriate
      mtd: nand: lpc32xx: use mtd_ooblayout_xxx() helpers where appropriate
      mtd: nand: omap2: use mtd_ooblayout_xxx() helpers where appropriate
      mtd: nand: qcom: use mtd_ooblayout_xxx() helpers where appropriate
      mtd: onenand: use mtd_ooblayout_xxx() helpers where appropriate
      mtd: add mtd_set_ecclayout() helper function
      mtd: use mtd_set_ecclayout() where appropriate
      mtd: nand: use mtd_set_ecclayout() where appropriate
      mtd: onenand: use mtd_set_ecclayout() where appropriate
      mtd: docg3: use mtd_set_ecclayout() where appropriate
      mtd: create an mtd_ooblayout_ops struct to ease ECC layout definition
      mtd: docg3: switch to mtd_ooblayout_ops
      mtd: nand: implement the default mtd_ooblayout_ops
      mtd: nand: bch: switch to mtd_ooblayout_ops
      mtd: nand: sharpsl: switch to mtd_ooblayout_ops
      mtd: nand: jz4740: switch to mtd_ooblayout_ops
      mtd: nand: atmel: switch to mtd_ooblayout_ops
      mtd: nand: bf5xx: switch to mtd_ooblayout_ops
      mtd: nand: brcm: switch to mtd_ooblayout_ops
      mtd: nand: cafe: switch to mtd_ooblayout_ops
      mtd: nand: davinci: switch to mtd_ooblayout_ops
      mtd: nand: denali: switch to mtd_ooblayout_ops
      mtd: nand: diskonchip: switch to mtd_ooblayout_ops
      mtd: nand: docg4: switch to mtd_ooblayout_ops
      mtd: nand: fsl_elbc: switch to mtd_ooblayout_ops
      mtd: nand: fsl_ifc: switch to mtd_ooblayout_ops
      mtd: nand: fsmc: switch to mtd_ooblayout_ops
      mtd: nand: fsmc: get rid of the fsmc_nand_eccplace struct
      mtd: nand: gpmi: switch to mtd_ooblayout_ops
      mtd: nand: hisi504: switch to mtd_ooblayout_ops
      mtd: nand: jz4780: switch to mtd_ooblayout_ops
      mtd: nand: lpc32xx: switch to mtd_ooblayout_ops
      mtd: nand: mxc: switch to mtd_ooblayout_ops
      mtd: nand: omap2: switch to mtd_ooblayout_ops
      mtd: nand: pxa3xx: switch to mtd_ooblayout_ops
      mtd: nand: s3c2410: switch to mtd_ooblayout_ops
      mtd: nand: sh_flctl: switch to mtd_ooblayout_ops
      mtd: nand: sm_common: switch to mtd_ooblayout_ops
      mtd: nand: sunxi: switch to mtd_ooblayout_ops
      mtd: nand: vf610: switch to mtd_ooblayout_ops
      mtd: nand: qcom: switch to mtd_ooblayout_ops
      mtd: onenand: switch to mtd_ooblayout_ops
      staging: mt29f_spinand: switch to mtd_ooblayout_ops
      mtd: nand: kill the ecc->layout field
      mtd: kill the nand_ecclayout struct
      mtd: nand: gpmi: rely on generic DT parsing done in nand_scan_ident()
      mtd: nand: davinci: rely on generic DT parsing done in nand_scan_ident()
      mtd: nand: hisi504: rely on generic DT parsing done in nand_scan_ident()
      mtd: nand: lpc32xx: rely on generic DT parsing done in nand_scan_ident()
      mtd: nand: mxc: rely on generic DT parsing done in nand_scan_ident()
      mtd: nand: sh_flctl: rely on generic DT parsing done in nand_scan_ident()
      mtd: nand: move of_get_nand_xxx() helpers into nand_base.c

Brian Norris (1):
      mtd: brcmnand: respect ECC algorithm set by NAND subsystem

Cooper Jr., Franklin (2):
      mtd: nand: omap2: Start dma request before enabling prefetch
      mtd: nand: omap2: Fix high memory dma prefetch transfer

Ezequiel Garcia (5):
      leds: trigger: Introduce a kernel panic LED trigger
      mtd: Uninline mtd_write_oob and move it to mtdcore.c
      leds: trigger: Introduce a MTD (NAND/NOR) trigger
      mtd: nand: Remove the "nand-disk" LED trigger
      mtd: Hook I/O activity to the MTD LED trigger

Ezequiel García (1):
      mtd: nand: Remove BUG() abuse in nand_scan_tail

Florian Fainelli (1):
      mtd: brcmnand: Add support for v6.2 controllers

Han Xu (1):
      mtd: gpmi: fix raw_buffer pointer double free issue

Jorge Ramirez-Ortiz (1):
      mtd: nand: jz4780: fixup, device structure assigned at probe

Julia Lawall (2):
      mtd: nand: omap2: fix compare_const_fl.cocci warnings
      mtd: nandsim: add __init attribute

Maarten ter Huurne (1):
      mtd: nand: jz4740: Remove unused local variable

Markus Pargmann (1):
      gpmi-nand: Handle ECC Errors in erased pages

Rafał Miłecki (34):
      mtd: nand: add new enum for storing ECC algorithm
      of: mtd: prepare helper reading NAND ECC algo from DT
      mtd: nand: set ECC algorithm in nand_dt_init
      mtd: nand: nandsim: set ECC algorithm explicitly
      mtd: nand: ams-delta: set ECC algorithm explicitly
      mtd: nand: gpio: set ECC algorithm explicitly
      mtd: nand: mxc: set ECC algorithm explicitly
      mtd: nand: nuc900: set ECC algorithm explicitly
      mtd: nand: orion: set ECC algorithm explicitly
      mtd: nand: pasemi: set ECC algorithm explicitly
      mtd: nand: plat: set ECC algorithm explicitly
      mtd: nand: socrates: set ECC algorithm explicitly
      mtd: nand: pasemi: switch to dev_* printing functions
      mtd: nand: omap2: set ECC algorithm explicitly
      mtd: nand: s3c2410: set ECC algorithm explicitly
      mtd: nand: sh_flctl: set ECC algorithm explicitly
      mtd: nand: au1550nd: set ECC algorithm explicitly
      mtd: nand: mpc5121_nfc: set ECC algorithm explicitly
      mtd: nand: cmx270: set ECC algorithm explicitly
      mtd: nand: fsl_upm: set ECC algorithm explicitly
      mtd: nand: fsl_ifc: set ECC algorithm explicitly
      mtd: nand: fsl_elbc: set ECC algorithm explicitly
      mtd: nand: bf5xx: set ECC algorithm explicitly
      mtd: nand: davinci: set ECC algorithm explicitly
      mtd: nand: atmel: set ECC algorithm explicitly
      CRIS v32: nand: set ECC algorithm explicitly
      staging: mt29f_spinand: set ECC algorithm explicitly
      mtd: nand: set ECC algorithm to Hamming on fallback
      mtd: nand: fsmc: validate ECC setup by checking algorithm directly
      mtd: nand: read ECC algorithm from the new field
      mtd: drop support for NAND_ECC_SOFT_BCH as "soft_bch" mapping
      mtd: mtd: drop NAND_ECC_SOFT_BCH enum value
      mtd: nand: add support for "nand-ecc-algo" DT property
      Documentation: devicetree: deprecate "soft_bch" nand-ecc-mode value

Raghav Dogra (1):
      mtd/ifc: Add support for IFC controller version 2.0

Roger Quadros (17):
      ARM: OMAP2+: gpmc: Add platform data
      ARM: OMAP2+: gpmc: Add gpmc timings and settings to platform data
      memory: omap-gpmc: Introduce GPMC to NAND interface
      memory: omap-gpmc: Add GPMC-NAND ops to get writebufferempty status
      memory: omap-gpmc: Implement IRQ domain for NAND IRQs
      mtd: nand: omap: Use gpmc_omap_get_nand_ops() to get NAND registers
      mtd: nand: omap: Switch to using GPMC-NAND ops for writebuffer empty check
      mtd: nand: omap: Copy platform data parameters to omap_nand_info data
      mtd: nand: omap: Clean up device tree support
      mtd: nand: omap: Update DT binding documentation
      memory: omap-gpmc: Prevent mapping into 1st 16MB
      memory: omap-gpmc: Move device tree binding to correct location
      memory: omap-gpmc: Support general purpose input for WAITPINs
      memory: omap-gpmc: Reserve WAITPIN if needed for WAIT monitoring
      memory: omap-gpmc: Support WAIT pin edge interrupts
      memory: omap-gpmc: Prevent GPMC_STATUS from being accessed via gpmc_regs
      mtd: nand: omap2: Implement NAND ready using gpiolib

Zhaoxiu Zeng (1):
      mtd: nand: s3c2410: fix bug in s3c2410_nand_correct_data()

 .../omap-gpmc.txt}                                 |  17 +
 .../devicetree/bindings/mtd/brcm,brcmnand.txt      |   1 +
 .../devicetree/bindings/mtd/gpmc-nand.txt          |  19 +-
 Documentation/devicetree/bindings/mtd/nand.txt     |  45 +-
 arch/arm/mach-omap2/gpmc-nand.c                    |   7 +-
 arch/arm/mach-pxa/spitz.c                          |  55 +-
 arch/cris/arch-v32/drivers/mach-a3/nandflash.c     |   1 +
 arch/cris/arch-v32/drivers/mach-fs/nandflash.c     |   1 +
 arch/mips/include/asm/mach-jz4740/jz4740_nand.h    |   2 +-
 arch/mips/jz4740/board-qi_lb60.c                   |  87 +--
 drivers/leds/trigger/Kconfig                       |  15 +
 drivers/leds/trigger/Makefile                      |   2 +
 drivers/leds/trigger/ledtrig-mtd.c                 |  45 ++
 drivers/leds/trigger/ledtrig-panic.c               |  30 +
 drivers/memory/Kconfig                             |   1 +
 drivers/memory/fsl_ifc.c                           |  36 +-
 drivers/memory/omap-gpmc.c                         | 657 ++++++++++++--------
 drivers/mtd/devices/docg3.c                        |  46 +-
 drivers/mtd/mtdchar.c                              | 123 +++-
 drivers/mtd/mtdconcat.c                            |   2 +-
 drivers/mtd/mtdcore.c                              | 379 ++++++++++++
 drivers/mtd/mtdpart.c                              |  23 +-
 drivers/mtd/nand/ams-delta.c                       |   1 +
 drivers/mtd/nand/atmel_nand.c                      | 315 +++++-----
 drivers/mtd/nand/au1550nd.c                        |   1 +
 drivers/mtd/nand/bf5xx_nand.c                      |  52 +-
 drivers/mtd/nand/brcmnand/brcmnand.c               | 290 +++++----
 drivers/mtd/nand/cafe_nand.c                       |  44 +-
 drivers/mtd/nand/cmx270_nand.c                     |   1 +
 drivers/mtd/nand/davinci_nand.c                    | 210 +++----
 drivers/mtd/nand/denali.c                          |  50 +-
 drivers/mtd/nand/diskonchip.c                      |  60 +-
 drivers/mtd/nand/docg4.c                           |  33 +-
 drivers/mtd/nand/fsl_elbc_nand.c                   |  84 +--
 drivers/mtd/nand/fsl_ifc_nand.c                    | 317 ++++------
 drivers/mtd/nand/fsl_upm.c                         |   1 +
 drivers/mtd/nand/fsmc_nand.c                       | 332 +++--------
 drivers/mtd/nand/gpio.c                            |   1 +
 drivers/mtd/nand/gpmi-nand/gpmi-nand.c             | 161 ++++-
 drivers/mtd/nand/hisi504_nand.c                    |  40 +-
 drivers/mtd/nand/jz4740_nand.c                     |   3 +-
 drivers/mtd/nand/jz4780_bch.c                      |   1 -
 drivers/mtd/nand/jz4780_nand.c                     |  21 +-
 drivers/mtd/nand/lpc32xx_mlc.c                     |  51 +-
 drivers/mtd/nand/lpc32xx_slc.c                     |  83 ++-
 drivers/mtd/nand/mpc5121_nfc.c                     |   1 +
 drivers/mtd/nand/mxc_nand.c                        | 257 ++++----
 drivers/mtd/nand/nand_base.c                       | 664 +++++++++++++--------
 drivers/mtd/nand/nand_bch.c                        |  48 +-
 drivers/mtd/nand/nandsim.c                         |  10 +-
 drivers/mtd/nand/nuc900_nand.c                     |   1 +
 drivers/mtd/nand/omap2.c                           | 448 +++++++++-----
 drivers/mtd/nand/orion_nand.c                      |   1 +
 drivers/mtd/nand/pasemi_nand.c                     |  16 +-
 drivers/mtd/nand/plat_nand.c                       |   1 +
 drivers/mtd/nand/pxa3xx_nand.c                     | 132 ++--
 drivers/mtd/nand/qcom_nandc.c                      |  88 ++-
 drivers/mtd/nand/s3c2410.c                         |  36 +-
 drivers/mtd/nand/sh_flctl.c                        | 115 ++--
 drivers/mtd/nand/sharpsl.c                         |   2 +-
 drivers/mtd/nand/sm_common.c                       |  93 ++-
 drivers/mtd/nand/socrates_nand.c                   |   1 +
 drivers/mtd/nand/sunxi_nand.c                      | 600 ++++++++++++-------
 drivers/mtd/nand/vf610_nfc.c                       |  35 +-
 drivers/mtd/onenand/onenand_base.c                 | 235 ++++----
 drivers/of/Makefile                                |   1 -
 drivers/of/of_mtd.c                                | 119 ----
 drivers/staging/mt29f_spinand/mt29f_spinand.c      |  49 +-
 include/linux/fsl_ifc.h                            |  45 +-
 include/linux/leds.h                               |   6 +
 include/linux/mtd/fsmc.h                           |  18 -
 include/linux/mtd/mtd.h                            |  75 ++-
 include/linux/mtd/nand.h                           |  28 +-
 include/linux/mtd/onenand.h                        |   2 -
 include/linux/mtd/sharpsl.h                        |   2 +-
 include/linux/of_mtd.h                             |  50 --
 include/linux/omap-gpmc.h                          | 172 +-----
 include/linux/platform_data/gpmc-omap.h            | 172 ++++++
 include/linux/platform_data/mtd-nand-omap2.h       |  12 +-
 include/uapi/mtd/mtd-abi.h                         |   2 +-
 80 files changed, 4387 insertions(+), 2896 deletions(-)
 rename Documentation/devicetree/bindings/{bus/ti-gpmc.txt => memory-controllers/omap-gpmc.txt} (89%)
 create mode 100644 drivers/leds/trigger/ledtrig-mtd.c
 create mode 100644 drivers/leds/trigger/ledtrig-panic.c
 delete mode 100644 drivers/of/of_mtd.c
 delete mode 100644 include/linux/of_mtd.h
 create mode 100644 include/linux/platform_data/gpmc-omap.h



More information about the linux-mtd mailing list