[GIT PULL] mtd: Changes for 5.7

From: Miquel Raynal
Date: Thu Apr 02 2020 - 12:28:19 EST


Hello Linus,

This is the MTD PR for 5.7.

Thanks,
MiquÃl

The following changes since commit 98d54f81e36ba3bf92172791eba5ca5bd813989b:

Linux 5.6-rc4 (2020-03-01 16:38:46 -0600)

are available in the Git repository at:

git://git.kernel.org/pub/scm/linux/kernel/git/mtd/linux.git tags/mtd/for-5.7

for you to fetch changes up to 025a06c1104cd8995646b761d117816b5f28c873:

mtd: Convert fallthrough comments into statements (2020-03-30 10:14:54 +0200)

----------------------------------------------------------------
MTD core changes:
* Fix issue where write_cached_data() fails but write() still returns success
* maps: sa1100-flash: Replace zero-length array with flexible-array member
* phram: Fix a double free issue in error path
* Convert fallthrough comments into statements
* MAINTAINERS: Add the IRC channel to the MTD related subsystems

Raw NAND core changes:
* Add support for manufacturer specific suspend/resume operation
* Add support for manufacturer specific lock/unlock operation
* Replace zero-length array with flexible-array member
* Fix a typo ("manufecturer")
* Ensure nand_soft_waitrdy wait period is enough

Raw NAND controller driver changes:
* Brcmnand:
- Add support for flash-edu for dma transfers (+ bindings)
* Cadence:
- Reinit completion before executing a new command
- Change bad block marker size
- Fix the calculation of the avaialble OOB size
- Get meta data size from registers
* Qualcom:
- Use dma_request_chan() instead dma_request_slave_channel()
- Release resources on failure within qcom_nandc_alloc()
* Allwinner:
- Use dma_request_chan() instead dma_request_slave_channel()
* Marvell:
- Use dma_request_chan() instead dma_request_slave_channel()
- Release DMA channel on error
* Freescale:
- Use dma_request_chan() instead dma_request_slave_channel()
* Macronix:
- Add support for Macronix NAND randomizer (+ bindings)
* Ams-delta:
- Rename structures and functions to gpio_nand*
- Make the driver custom I/O ready
- Drop useless local variable
- Support custom driver initialisation
- Add module device tables
- Handle more GPIO pins as optional
- Make read pulses optional
- Don't hardcode read/write pulse widths
- Push inversion handling to gpiolib
- Enable OF partition info support
- Drop board specific partition info
- Use struct gpio_nand_platdata
- Write protect device during probe
* Ingenic:
- Use devm_platform_ioremap_resource()
- Add dependency on MIPS || COMPILE_TEST
* Denali:
- Deassert write protect pin
* ST:
- Use dma_request_chan() instead dma_request_slave_channel()

Raw NAND chip driver changes:
* Toshiba:
- Support reading the number of bitflips for BENAND (Built-in ECC NAND)
* Macronix:
- Add support for deep power down mode
- Add support for block protection

SPI-NAND core changes:
* Do not erase the block before writing a bad block marker
* Explicitly use MTD_OPS_RAW to write the bad block marker to OOB
* Stop using spinand->oobbuf for buffering bad block markers
* Rework detect procedure for different READ_ID operation

SPI-NAND driver changes:
* Toshiba:
- Support for new Kioxia Serial NAND
- Rename function name to change suffix and prefix (8Gbit)
- Add comment about Kioxia ID
* Micron:
- Add new Micron SPI NAND devices with multiple dies
- Add M70A series Micron SPI NAND devices
- identify SPI NAND device with Continuous Read mode
- Add new Micron SPI NAND devices
- Describe the SPI NAND device MT29F2G01ABAGD
- Generalize the OOB layout structure and function names

SPI NOR core changes:
* Move all the manufacturer specific quirks/code out of the core,
to make the core logic more readable and thus ease maintenance.
* Move the SFDP logic out of the core, it provides a better
separation between the SFDP parsing and core logic.
* Trim what is exposed in spi-nor.h. The SPI NOR controllers drivers
must not be able to use structures that are meant just for the
SPI NOR core.
* Use the spi-mem direct mapping API to let advanced controllers
optimize the read/write operations when they support direct mapping.
* Add generic formula for the Status Register block protection
handling. It fixes some long standing locking limitations and eases
the addition of the 4bit block protection support.
* Add block protection support for flashes with 4 block protection
bits in the Status Register.

SPI NOR controller drivers changes:
* The mtk-quadspi driver is replaced by the new spi-mem spi-mtk-nor
driver.
* Merge tag 'mtk-mtd-spi-move' into spi-nor/next to avoid conflicts.

HyperBus changes:
* Print error msg when compatible is wrong or missing
* Move mapping of direct access window from core to individual drivers

----------------------------------------------------------------
Boris Brezillon (21):
mtd: spi-nor: Stop prefixing generic functions with a manufacturer name
mtd: spi-nor: Prepare core / manufacturer code split
mtd: spi-nor: Expose stuctures and functions to manufacturer drivers
mtd: spi-nor: Add the concept of SPI NOR manufacturer driver
mtd: spi-nor: Move Atmel bits out of core.c
mtd: spi-nor: Move Eon bits out of core.c
mtd: spi-nor: Move ESMT bits out of core.c
mtd: spi-nor: Move Everspin bits out of core.c
mtd: spi-nor: Move Fujitsu bits out of core.c
mtd: spi-nor: Move GigaDevice bits out of core.c
mtd: spi-nor: Move Intel bits out of core.c
mtd: spi-nor: Move ISSI bits out of core.c
mtd: spi-nor: Move Macronix bits out of core.c
mtd: spi-nor: Move Micron/ST bits out of core.c
mtd: spi-nor: Move Spansion bits out of core.c
mtd: spi-nor: Move SST bits out of core.c
mtd: spi-nor: Move Winbond bits out of core.c
mtd: spi-nor: Move Catalyst bits out of core.c
mtd: spi-nor: Move Xilinx bits out of core.c
mtd: spi-nor: Move XMC bits out of core.c
mtd: spi-nor: Get rid of the now empty spi_nor_ids[] table

Christophe Kerello (1):
mtd: rawnand: free the nand_device object

Chuanhong Guo (5):
mtd: spinand: rework detect procedure for different READ_ID operation
spi: make spi-max-frequency optional
spi: add support for mediatek spi-nor controller
dt-bindings: convert mtk-quadspi binding doc for spi-mtk-nor
mtd: spi-nor: remove mtk-quadspi driver

Colin Ian King (1):
mtd: fix spelling mistake "BlockMultiplerBits" -> "BlockMultiplierBits"

Dan Carpenter (1):
mtd: lpddr: Fix a double free in probe()

Dirk Behme (1):
mtd: hyperbus: Add proper error message for missing compatible

Frieder Schrempf (3):
mtd: spinand: Stop using spinand->oobbuf for buffering bad block markers
mtd: spinand: Explicitly use MTD_OPS_RAW to write the bad block marker to OOB
mtd: spinand: Do not erase the block before writing a bad block marker

Gustavo A. R. Silva (3):
mtd: rawnand: Replace zero-length array with flexible-array member
mtd: spi-nor: controllers: aspeed-smc: Replace zero-length array with flexible-array member
mtd: maps: sa1100-flash: Replace zero-length array with flexible-array member

Janusz Krzysztofik (14):
mtd: rawnand: ams-delta: Write protect device during probe
mtd: rawnand: ams-delta: Use struct gpio_nand_platdata
ARM: OMAP1: ams-delta: Provide board specific partition info
mtd: rawnand: ams-delta: Drop board specific partition info
mtd: rawnand: ams-delta: Enable OF partition info support
mtd: rawnand: ams-delta: Push inversion handling to gpiolib
mtd: rawnand: ams-delta: Don't hardcode read/write pulse widths
mtd: rawnand: ams-delta: Make read pulses optional
mtd: rawnand: ams-delta: Handle more GPIO pins as optional
mtd: rawnand: ams-delta: Add module device tables
mtd: rawnand: ams-delta: Support custom driver initialisation
mtd: rawnand: ams-delta: Drop useless local variable
mtd: rawnand: ams-delta: Make the driver custom I/O ready
mtd: rawnand: ams-delta: Rename structures and functions to gpio_nand*

Jonathan NeuschÃfer (2):
mtd: spi-nor: Refactor spi_nor_read_id()
mtd: rawnand: Fix a typo ("manufecturer")

Jungseung Lee (4):
mtd: spi-nor: introduce SR_BP_SHIFT define
mtd: spi-nor: Add generic formula for SR block protection handling
mtd: spi-nor: Add SR 4bit block protection support
mtd: spi-nor: Enable locking for n25q512ax3/n25q512a

Kamal Dasu (3):
dt: bindings: brcmnand: Add support for flash-edu
arch: mips: brcm: Add 7425 flash-edu support
mtd: rawnand: brcmnand: Add support for flash-edu for dma transfers

Lukas Bulwahn (1):
MAINTAINERS: update entry after SPI NOR controller move

Martin Devera (1):
mtd: rawnand: Ensure nand_soft_waitrdy wait period is enough

Masahiro Yamada (1):
mtd: rawnand: denali: deassert write protect pin

Mason Yang (6):
mtd: rawnand: Add support for Macronix NAND randomizer
dt-bindings: mtd: Document Macronix NAND device bindings
mtd: rawnand: Add support for manufacturer specific lock/unlock operation
mtd: rawnand: Macronix: Add support for block protection
mtd: rawnand: Add support for manufacturer specific suspend/resume operation
mtd: rawnand: macronix: Add support for deep power down mode

Miquel Raynal (5):
mtd: implement proper partition handling
Merge tag 'cfi/for-5.7' into mtd/next
Merge tag 'spi-nor/for-5.7' into mtd/next
Merge tag 'nand/for-5.7' into mtd/next
mtd: Convert fallthrough comments into statements

Paul Cercueil (2):
mtd: rawnand: ingenic: Use devm_platform_ioremap_resource()
mtd: rawnand: ingenic: Add dependency on MIPS || COMPILE_TEST

Peter Ujfalusi (7):
mtd: rawnand: gpmi: Use dma_request_chan() instead dma_request_slave_channel()
mtd: rawnand: marvell: Release DMA channel on error
mtd: rawnand: marvell: Use dma_request_chan() instead dma_request_slave_channel()
mtd: rawnand: sunxi: Use dma_request_chan() instead dma_request_slave_channel()
mtd: rawnand: qcom: Release resources on failure within qcom_nandc_alloc()
mtd: rawnand: qcom: Use dma_request_chan() instead dma_request_slave_channel()
mtd: rawnand: stm32_fmc2: Use dma_request_chan() instead dma_request_slave_channel()

Piotr Sroka (4):
mtd: rawnand: cadence: get meta data size from registers
mtd: rawnand: cadence: fix the calculation of the avaialble OOB size
mtd: rawnand: cadence: change bad block marker size
mtd: rawnand: cadence: reinit completion before executing a new command

Sergei Shtylyov (4):
mtd: spi-nor: use le32_to_cpu_array()
mtd: spi-nor: split spi_nor_spimem_xfer_data()
mtd: spi-nor: use spi-mem dirmap API
mtd: hyperbus: move direct mapping setup to AM654 HBMC driver

Shivamurthy Shastri (6):
mtd: spinand: micron: Generalize the OOB layout structure and function names
mtd: spinand: micron: Describe the SPI NAND device MT29F2G01ABAGD
mtd: spinand: micron: Add new Micron SPI NAND devices
mtd: spinand: micron: identify SPI NAND device with Continuous Read mode
mtd: spinand: micron: Add M70A series Micron SPI NAND devices
mtd: spinand: micron: Add new Micron SPI NAND devices with multiple dies

Tudor Ambarus (8):
Merge tag 'mtk-mtd-spi-move' into spi-nor/next
mtd: spi-nor: Emphasise which is the generic set_4byte_addr_mode() method
mtd: spi-nor: Move SFDP logic out of the core
mtd: spi-nor: Drop the MFR definitions
mtd: spi-nor: Trim what is exposed in spi-nor.h
mtd: spi-nor: Clear WEL bit when erase or program errors occur
mtd: spi-nor: Set all BP bits to one when lock_len == mtd->size
MAINTAINERS: Add the IRC channel to the MTD related subsystems

Vignesh Raghavendra (1):
MAINTAINERS: Add staging branch for HyperBus

Wen Yang (1):
mtd: phram: fix a double free issue in error path

Xiaoming Ni (1):
mtd: Fix issue where write_cached_data() fails but write() still returns success

Yoshio Furuyama (4):
mtd: spinand: toshiba: Add comment about Kioxia ID
mtd: spinand: toshiba: Rename function name to change suffix and prefix (8Gbit)
mtd: spinand: toshiba: Support for new Kioxia Serial NAND
mtd: rawnand: toshiba: Support reading the number of bitflips for BENAND (Built-in ECC NAND)

Documentation/devicetree/bindings/mtd/brcm,brcmnand.txt | 10 +-
Documentation/devicetree/bindings/mtd/nand-macronix.txt | 27 +
Documentation/devicetree/bindings/{mtd/mtk-quadspi.txt => spi/spi-mtk-nor.txt} | 15 +-
MAINTAINERS | 8 +-
arch/arm/mach-omap1/board-ams-delta.c | 47 +-
arch/mips/boot/dts/brcm/bcm7425.dtsi | 4 +-
drivers/mtd/chips/cfi_cmdset_0001.c | 4 +-
drivers/mtd/chips/cfi_cmdset_0002.c | 5 +-
drivers/mtd/chips/cfi_cmdset_0020.c | 17 +-
drivers/mtd/chips/cfi_util.c | 12 +-
drivers/mtd/devices/block2mtd.c | 4 +-
drivers/mtd/devices/phram.c | 19 +-
drivers/mtd/hyperbus/hbmc-am654.c | 12 +
drivers/mtd/hyperbus/hyperbus-core.c | 15 +-
drivers/mtd/inftlmount.c | 2 +-
drivers/mtd/lpddr/lpddr_cmds.c | 4 +-
drivers/mtd/maps/sa1100-flash.c | 5 +-
drivers/mtd/mtdblock.c | 5 +-
drivers/mtd/mtdchar.c | 12 +-
drivers/mtd/mtdcore.c | 250 +-
drivers/mtd/mtdpart.c | 697 ++---
drivers/mtd/nand/onenand/onenand_base.c | 2 +-
drivers/mtd/nand/raw/ams-delta.c | 243 +-
drivers/mtd/nand/raw/brcmnand/brcmnand.c | 293 ++-
drivers/mtd/nand/raw/cadence-nand-controller.c | 34 +-
drivers/mtd/nand/raw/denali.c | 1 +
drivers/mtd/nand/raw/denali.h | 2 +-
drivers/mtd/nand/raw/diskonchip.c | 4 +-
drivers/mtd/nand/raw/fsl_elbc_nand.c | 3 +-
drivers/mtd/nand/raw/gpmi-nand/gpmi-nand.c | 21 +-
drivers/mtd/nand/raw/ingenic/Kconfig | 1 +
drivers/mtd/nand/raw/ingenic/ingenic_ecc.c | 4 +-
drivers/mtd/nand/raw/ingenic/ingenic_nand_drv.c | 2 +-
drivers/mtd/nand/raw/ingenic/jz4725b_bch.c | 4 +-
drivers/mtd/nand/raw/ingenic/jz4780_bch.c | 4 +-
drivers/mtd/nand/raw/internals.h | 1 +
drivers/mtd/nand/raw/marvell_nand.c | 40 +-
drivers/mtd/nand/raw/meson_nand.c | 2 +-
drivers/mtd/nand/raw/mtk_nand.c | 2 +-
drivers/mtd/nand/raw/nand_base.c | 71 +-
drivers/mtd/nand/raw/nand_hynix.c | 2 +-
drivers/mtd/nand/raw/nand_legacy.c | 6 +-
drivers/mtd/nand/raw/nand_macronix.c | 227 ++
drivers/mtd/nand/raw/nand_toshiba.c | 58 +-
drivers/mtd/nand/raw/nandsim.c | 4 +-
drivers/mtd/nand/raw/omap_elm.c | 8 +-
drivers/mtd/nand/raw/qcom_nandc.c | 105 +-
drivers/mtd/nand/raw/stm32_fmc2_nand.c | 44 +-
drivers/mtd/nand/raw/sunxi_nand.c | 17 +-
drivers/mtd/nand/spi/core.c | 104 +-
drivers/mtd/nand/spi/gigadevice.c | 45 +-
drivers/mtd/nand/spi/macronix.c | 30 +-
drivers/mtd/nand/spi/micron.c | 172 +-
drivers/mtd/nand/spi/paragon.c | 28 +-
drivers/mtd/nand/spi/toshiba.c | 208 +-
drivers/mtd/nand/spi/winbond.c | 34 +-
drivers/mtd/spi-nor/Kconfig | 83 +-
drivers/mtd/spi-nor/Makefile | 26 +-
drivers/mtd/spi-nor/atmel.c | 46 +
drivers/mtd/spi-nor/catalyst.c | 29 +
drivers/mtd/spi-nor/controllers/Kconfig | 75 +
drivers/mtd/spi-nor/controllers/Makefile | 8 +
drivers/mtd/spi-nor/{ => controllers}/aspeed-smc.c | 4 +-
drivers/mtd/spi-nor/{ => controllers}/cadence-quadspi.c | 0
drivers/mtd/spi-nor/{ => controllers}/hisi-sfc.c | 0
drivers/mtd/spi-nor/{ => controllers}/intel-spi-pci.c | 0
drivers/mtd/spi-nor/{ => controllers}/intel-spi-platform.c | 0
drivers/mtd/spi-nor/{ => controllers}/intel-spi.c | 0
drivers/mtd/spi-nor/{ => controllers}/intel-spi.h | 0
drivers/mtd/spi-nor/{ => controllers}/nxp-spifi.c | 0
drivers/mtd/spi-nor/core.c | 3466 +++++++++++++++++++++++++
drivers/mtd/spi-nor/core.h | 441 ++++
drivers/mtd/spi-nor/eon.c | 34 +
drivers/mtd/spi-nor/esmt.c | 25 +
drivers/mtd/spi-nor/everspin.c | 27 +
drivers/mtd/spi-nor/fujitsu.c | 20 +
drivers/mtd/spi-nor/gigadevice.c | 59 +
drivers/mtd/spi-nor/intel.c | 32 +
drivers/mtd/spi-nor/issi.c | 83 +
drivers/mtd/spi-nor/macronix.c | 98 +
drivers/mtd/spi-nor/micron-st.c | 157 ++
drivers/mtd/spi-nor/mtk-quadspi.c | 565 ----
drivers/mtd/spi-nor/sfdp.c | 1204 +++++++++
drivers/mtd/spi-nor/sfdp.h | 98 +
drivers/mtd/spi-nor/spansion.c | 95 +
drivers/mtd/spi-nor/spi-nor.c | 5434 ---------------------------------------
drivers/mtd/spi-nor/sst.c | 151 ++
drivers/mtd/spi-nor/winbond.c | 112 +
drivers/mtd/spi-nor/xilinx.c | 94 +
drivers/mtd/spi-nor/xmc.c | 23 +
drivers/mtd/ubi/attach.c | 2 +-
drivers/mtd/ubi/build.c | 4 +-
drivers/spi/Kconfig | 10 +
drivers/spi/Makefile | 1 +
drivers/spi/spi-mtk-nor.c | 689 +++++
drivers/spi/spi.c | 9 +-
include/linux/mtd/mtd.h | 125 +-
include/linux/mtd/partitions.h | 1 -
include/linux/mtd/rawnand.h | 11 +-
include/linux/mtd/spi-nor.h | 285 +-
include/linux/mtd/spinand.h | 67 +-
101 files changed, 9167 insertions(+), 7526 deletions(-)
create mode 100644 Documentation/devicetree/bindings/mtd/nand-macronix.txt
rename Documentation/devicetree/bindings/{mtd/mtk-quadspi.txt => spi/spi-mtk-nor.txt} (75%)
create mode 100644 drivers/mtd/spi-nor/atmel.c
create mode 100644 drivers/mtd/spi-nor/catalyst.c
create mode 100644 drivers/mtd/spi-nor/controllers/Kconfig
create mode 100644 drivers/mtd/spi-nor/controllers/Makefile
rename drivers/mtd/spi-nor/{ => controllers}/aspeed-smc.c (99%)
rename drivers/mtd/spi-nor/{ => controllers}/cadence-quadspi.c (100%)
rename drivers/mtd/spi-nor/{ => controllers}/hisi-sfc.c (100%)
rename drivers/mtd/spi-nor/{ => controllers}/intel-spi-pci.c (100%)
rename drivers/mtd/spi-nor/{ => controllers}/intel-spi-platform.c (100%)
rename drivers/mtd/spi-nor/{ => controllers}/intel-spi.c (100%)
rename drivers/mtd/spi-nor/{ => controllers}/intel-spi.h (100%)
rename drivers/mtd/spi-nor/{ => controllers}/nxp-spifi.c (100%)
create mode 100644 drivers/mtd/spi-nor/core.c
create mode 100644 drivers/mtd/spi-nor/core.h
create mode 100644 drivers/mtd/spi-nor/eon.c
create mode 100644 drivers/mtd/spi-nor/esmt.c
create mode 100644 drivers/mtd/spi-nor/everspin.c
create mode 100644 drivers/mtd/spi-nor/fujitsu.c
create mode 100644 drivers/mtd/spi-nor/gigadevice.c
create mode 100644 drivers/mtd/spi-nor/intel.c
create mode 100644 drivers/mtd/spi-nor/issi.c
create mode 100644 drivers/mtd/spi-nor/macronix.c
create mode 100644 drivers/mtd/spi-nor/micron-st.c
delete mode 100644 drivers/mtd/spi-nor/mtk-quadspi.c
create mode 100644 drivers/mtd/spi-nor/sfdp.c
create mode 100644 drivers/mtd/spi-nor/sfdp.h
create mode 100644 drivers/mtd/spi-nor/spansion.c
delete mode 100644 drivers/mtd/spi-nor/spi-nor.c
create mode 100644 drivers/mtd/spi-nor/sst.c
create mode 100644 drivers/mtd/spi-nor/winbond.c
create mode 100644 drivers/mtd/spi-nor/xilinx.c
create mode 100644 drivers/mtd/spi-nor/xmc.c
create mode 100644 drivers/spi/spi-mtk-nor.c