[PATCH 00/22] mtd: rawnand: NV-DDR support

Miquel Raynal miquel.raynal at bootlin.com
Wed May 5 14:37:28 PDT 2021


Hello,

After almost 20 years of exclusive SDR support in the Linux kernel and
thanks to the major updates recently done in the NAND subsystem, here is
the final series attempting to bring NV-DDR support to raw NAND
devices.

As always, first patches are here to prepare the field for the second
half which actually brings NV-DDR support bits per bits to make it more
readable and easier to review.

Finally, the Arasan NAND controller driver is being updated to support the
NV-DDR interface. On a 16kiB-page NAND device here are the measured results:
* SDR mode 5:
  > 8094 kiB/s reads
  > 7013 kiB/s writes
* NV-DDR mode 5:
  > 16062 kiB/s reads
  > 24824 kiB/s writes
However, these values are much lower than what the controller is able to do
because of the flaky design of the Arasan ECC engine which needs a costly
software workaround. When this workaround is disabled, the bare throughput,
still with ECC correction, even though it cannot be 100% trusted, is:
  > 113777 kiB/s reads
  > 31751 kiB/s writes

Cheers,
Miquèl

Miquel Raynal (22):
  mtd: rawnand: Add a helper to clarify the interface configuration
  mtd: rawnand: arasan: Check the proposed data interface is supported
  mtd: rawnand: atmel: Check the proposed data interface is supported
  mtd: rawnand: onfi: Use the BIT() macro when possible
  mtd: rawnand: Update dead URL
  mtd: rawnand: Use more recent ONFI specification wording
  mtd: rawnand: Clarify the NV-DDR entries in the ONFI structure
  mtd: rawnand: Add NV-DDR timings
  mtd: rawnand: Retrieve NV-DDR timing modes from the ONFI parameter
    page
  mtd: rawnand: Add an indirection on onfi_fill_interface_config()
  mtd: rawnand: Add onfi_fill_nvddr_interface_config() helper
  mtd: rawnand: Avoid accessing NV-DDR timings from legacy code
  mtd: rawnand: Access SDR and NV-DDR timings through a common macro
  mtd: rawnand: Handle the double bytes in NV-DDR mode
  mtd: rawnand: Add a helper to find the closest ONFI NV-DDR mode
  mtd: rawnand: Support enabling NV-DDR through SET_FEATURES
  mtd: rawnand: Allow SDR timings to be nacked
  mtd: rawnand: Choose the best timings, NV-DDR included
  MAINTAINERS: Add myself as co-maintainer of the Arasan NAND controller
    driver
  mtd: rawnand: arasan: Fix a macro parameter
  mtd: rawnand: arasan: Workaround a misbehaving prog type with NV-DDR
  mtd: rawnand: arasan: Support NV-DDR interface

 MAINTAINERS                                   |   1 +
 drivers/mtd/nand/raw/arasan-nand-controller.c |  45 +-
 drivers/mtd/nand/raw/atmel/nand-controller.c  |   7 +-
 .../mtd/nand/raw/cadence-nand-controller.c    |   6 +-
 drivers/mtd/nand/raw/gpmi-nand/gpmi-nand.h    |   2 +-
 drivers/mtd/nand/raw/internals.h              |   5 +
 drivers/mtd/nand/raw/nand_base.c              | 325 ++++++++++----
 drivers/mtd/nand/raw/nand_legacy.c            |   2 +-
 drivers/mtd/nand/raw/nand_onfi.c              |   5 +-
 drivers/mtd/nand/raw/nand_timings.c           | 402 ++++++++++++++++--
 include/linux/mtd/onfi.h                      |  40 +-
 include/linux/mtd/rawnand.h                   | 155 ++++++-
 12 files changed, 862 insertions(+), 133 deletions(-)

-- 
2.27.0




More information about the linux-mtd mailing list