Linux-mtd Archive on lore.kernel.org
 help / color / Atom feed
From: Miquel Raynal <miquel.raynal@bootlin.com>
To: Richard Weinberger <richard@nod.at>,
	Vignesh Raghavendra <vigneshr@ti.com>,
	Tudor Ambarus <Tudor.Ambarus@microchip.com>,
	<linux-mtd@lists.infradead.org>
Cc: Thomas Petazzoni <thomas.petazzoni@bootlin.com>,
	Michal Simek <monstr@monstr.eu>,
	Naga Sureshkumar Relli <nagasure@xilinx.com>,
	Amit Kumar Mahapatra <akumarma@xilinx.com>,
	Miquel Raynal <miquel.raynal@bootlin.com>
Subject: [PATCH 00/22] mtd: rawnand: NV-DDR support
Date: Wed,  5 May 2021 23:37:28 +0200
Message-ID: <20210505213750.257417-1-miquel.raynal@bootlin.com> (raw)

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


______________________________________________________
Linux MTD discussion mailing list
http://lists.infradead.org/mailman/listinfo/linux-mtd/

             reply index

Thread overview: 44+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-05-05 21:37 Miquel Raynal [this message]
2021-05-05 21:37 ` [PATCH 01/22] mtd: rawnand: Add a helper to clarify the interface configuration Miquel Raynal
2021-05-26  9:05   ` Miquel Raynal
2021-05-05 21:37 ` [PATCH 02/22] mtd: rawnand: arasan: Check the proposed data interface is supported Miquel Raynal
2021-05-26  9:05   ` Miquel Raynal
2021-05-05 21:37 ` [PATCH 03/22] mtd: rawnand: atmel: " Miquel Raynal
2021-05-26  9:05   ` Miquel Raynal
2021-05-05 21:37 ` [PATCH 04/22] mtd: rawnand: onfi: Use the BIT() macro when possible Miquel Raynal
2021-05-26  9:05   ` Miquel Raynal
2021-05-05 21:37 ` [PATCH 05/22] mtd: rawnand: Update dead URL Miquel Raynal
2021-05-26  9:05   ` Miquel Raynal
2021-05-05 21:37 ` [PATCH 06/22] mtd: rawnand: Use more recent ONFI specification wording Miquel Raynal
2021-05-26  9:05   ` Miquel Raynal
2021-05-05 21:37 ` [PATCH 07/22] mtd: rawnand: Clarify the NV-DDR entries in the ONFI structure Miquel Raynal
2021-05-26  9:04   ` Miquel Raynal
2021-05-05 21:37 ` [PATCH 08/22] mtd: rawnand: Add NV-DDR timings Miquel Raynal
2021-05-26  9:04   ` Miquel Raynal
2021-05-05 21:37 ` [PATCH 09/22] mtd: rawnand: Retrieve NV-DDR timing modes from the ONFI parameter page Miquel Raynal
2021-05-26  9:04   ` Miquel Raynal
2021-05-05 21:37 ` [PATCH 10/22] mtd: rawnand: Add an indirection on onfi_fill_interface_config() Miquel Raynal
2021-05-26  9:04   ` Miquel Raynal
2021-05-05 21:37 ` [PATCH 11/22] mtd: rawnand: Add onfi_fill_nvddr_interface_config() helper Miquel Raynal
2021-05-26  9:04   ` Miquel Raynal
2021-05-05 21:37 ` [PATCH 12/22] mtd: rawnand: Avoid accessing NV-DDR timings from legacy code Miquel Raynal
2021-05-26  9:04   ` Miquel Raynal
2021-05-05 21:37 ` [PATCH 13/22] mtd: rawnand: Access SDR and NV-DDR timings through a common macro Miquel Raynal
2021-05-26  9:04   ` Miquel Raynal
2021-05-05 21:37 ` [PATCH 14/22] mtd: rawnand: Handle the double bytes in NV-DDR mode Miquel Raynal
2021-05-26  9:04   ` Miquel Raynal
2021-05-05 21:37 ` [PATCH 15/22] mtd: rawnand: Add a helper to find the closest ONFI " Miquel Raynal
2021-05-26  9:04   ` Miquel Raynal
2021-05-05 21:37 ` [PATCH 16/22] mtd: rawnand: Support enabling NV-DDR through SET_FEATURES Miquel Raynal
2021-05-05 21:37 ` [PATCH 17/22] mtd: rawnand: Allow SDR timings to be nacked Miquel Raynal
2021-05-26  9:04   ` Miquel Raynal
2021-05-05 21:37 ` [PATCH 18/22] mtd: rawnand: Choose the best timings, NV-DDR included Miquel Raynal
2021-05-26  9:04   ` Miquel Raynal
2021-05-05 21:37 ` [PATCH 19/22] MAINTAINERS: Add myself as co-maintainer of the Arasan NAND controller driver Miquel Raynal
2021-05-26  9:04   ` Miquel Raynal
2021-05-05 21:37 ` [PATCH 20/22] mtd: rawnand: arasan: Fix a macro parameter Miquel Raynal
2021-05-26  9:03   ` Miquel Raynal
2021-05-05 21:37 ` [PATCH 21/22] mtd: rawnand: arasan: Workaround a misbehaving prog type with NV-DDR Miquel Raynal
2021-05-26  9:03   ` Miquel Raynal
2021-05-05 21:37 ` [PATCH 22/22] mtd: rawnand: arasan: Support NV-DDR interface Miquel Raynal
2021-05-26  9:03   ` Miquel Raynal

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20210505213750.257417-1-miquel.raynal@bootlin.com \
    --to=miquel.raynal@bootlin.com \
    --cc=Tudor.Ambarus@microchip.com \
    --cc=akumarma@xilinx.com \
    --cc=linux-mtd@lists.infradead.org \
    --cc=monstr@monstr.eu \
    --cc=nagasure@xilinx.com \
    --cc=richard@nod.at \
    --cc=thomas.petazzoni@bootlin.com \
    --cc=vigneshr@ti.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

Linux-mtd Archive on lore.kernel.org

Archives are clonable:
	git clone --mirror https://lore.kernel.org/linux-mtd/0 linux-mtd/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 linux-mtd linux-mtd/ https://lore.kernel.org/linux-mtd \
		linux-mtd@lists.infradead.org
	public-inbox-index linux-mtd

Example config snippet for mirrors

Newsgroup available over NNTP:
	nntp://nntp.lore.kernel.org/org.infradead.lists.linux-mtd


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git