All of lore.kernel.org
 help / color / mirror / 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>,
	Pratyush Yadav <p.yadav@ti.com>, Michael Walle <michael@walle.cc>,
	<linux-mtd@lists.infradead.org>
Cc: Rob Herring <robh+dt@kernel.org>, <devicetree@vger.kernel.org>,
	Mark Brown <broonie@kernel.org>, <linux-spi@vger.kernel.org>,
	Xiangsheng Hou <Xiangsheng.Hou@mediatek.com>,
	Julien Su <juliensu@mxic.com.tw>,
	Jaime Liao <jaimeliao@mxic.com.tw>,
	Boris Brezillon <bbrezillon@kernel.org>,
	Thomas Petazzoni <thomas.petazzoni@bootlin.com>,
	Miquel Raynal <miquel.raynal@bootlin.com>
Subject: [PATCH v2 00/20] External ECC engines & Macronix support
Date: Fri, 26 Nov 2021 12:39:04 +0100	[thread overview]
Message-ID: <20211126113924.310459-1-miquel.raynal@bootlin.com> (raw)


Hello all,

This series is now stable and brings support for external/modular ECC
engines, and let SPI controller using the ECC framework.

As a first example, Macronix ECC engine can be used as an
external engine (takes the data, proceeds to the calculations, writes
back the ECC bytes) or as a pipelined engine doing on-the-fly
calculations (which is very common in the raw NAND world).

In the device tree, the ECC engine should be described as a separated DT
node. Then:
* external case: the flash node should provide a nand-ecc-engine
  property pointing to the ECC engine node.
* pipelined case: the flash node should provide a nand-ecc-engine
  property pointing to the SPI controller, itself with another
  nand-ecc-engine property pointing at the ECC engine node.

This series comes with a bunch of improvements on the binding side as
well.

Cheers,
Miquèl

Changes in v2:
* Fixed the bindings and added Rob's acks when relevant.
* Added locking in the ECC engine driver.
* Brought more changes in the core in order to bring the ECC information
  into the spi_mem_op structure with the idea of avoiding any races
  between parallel calls on the same engine.
* Reorganized the ECC driver entirely in order to have a per-engine mxic
  structure plus a per-NAND context. This lead to a number of changes
  internally which cannot all be listed.

Changes since the RFC:
* Rebased on top of v5.15-rc1.
* Fixed the dirmap configuration.
* Added the various tags received.
* Fixed the bindings as reported by the robots.
* Fixed the return value of the helper counting bitflips.
* Included a fix from Jaime Liao in the external pattern logic.
* Added the yaml conversion of Macronix SPI controller description.
* Added the yaml conversion of the SPI-NAND description.
* Created a nand-chip.yaml file to share properties between SPI-NAND and
  raw NAND.

Mason Yang (1):
  mtd: spinand: macronix: Use random program load

Miquel Raynal (19):
  dt-bindings: mtd: nand-controller: Fix the reg property description
  dt-bindings: mtd: nand-controller: Fix a comment in the examples
  dt-bindings: mtd: nand-chip: Create a NAND chip description
  dt-bindings: mtd: spi-nand: Convert spi-nand description file to yaml
  dt-bindings: vendor-prefixes: Clarify Macronix prefix
  dt-bindings: spi: mxic: The interrupt property is not mandatory
  dt-bindings: spi: mxic: Convert to yaml
  dt-bindings: spi: mxic: Document the nand-ecc-engine property
  dt-bindings: mtd: Describe Macronix NAND ECC engine
  mtd: nand: ecc: Add infrastructure to support hardware engines
  mtd: nand: Add a new helper to retrieve the ECC context
  mtd: nand: mxic-ecc: Add Macronix external ECC engine support
  mtd: nand: mxic-ecc: Support SPI pipelined mode
  mtd: spinand: Create direct mapping descriptors for ECC operations
  spi: mxic: Fix the transmit path
  spi: mxic: Create a helper to configure the controller before an
    operation
  spi: mxic: Create a helper to ease the start of an operation
  spi: mxic: Add support for direct mapping
  spi: mxic: Add support for pipelined ECC operations

 .../bindings/mtd/mxicy,nand-ecc-engine.yaml   |  77 ++
 .../devicetree/bindings/mtd/nand-chip.yaml    |  71 ++
 .../bindings/mtd/nand-controller.yaml         |  57 +-
 .../devicetree/bindings/mtd/spi-nand.txt      |   5 -
 .../devicetree/bindings/mtd/spi-nand.yaml     |  27 +
 .../bindings/spi/mxicy,mx25f0a-spi.yaml       |  66 ++
 .../devicetree/bindings/spi/spi-mxic.txt      |  34 -
 .../devicetree/bindings/vendor-prefixes.yaml  |   3 +
 drivers/mtd/nand/Kconfig                      |   6 +
 drivers/mtd/nand/Makefile                     |   1 +
 drivers/mtd/nand/core.c                       |  10 +-
 drivers/mtd/nand/ecc-mxic.c                   | 901 ++++++++++++++++++
 drivers/mtd/nand/ecc.c                        |  88 ++
 drivers/mtd/nand/spi/core.c                   |  28 +-
 drivers/mtd/nand/spi/macronix.c               |   2 +-
 drivers/spi/spi-mxic.c                        | 326 ++++++-
 include/linux/mtd/nand-ecc-mxic.h             |  50 +
 include/linux/mtd/nand.h                      |  33 +
 include/linux/mtd/spinand.h                   |   2 +
 include/linux/spi/spi-mem.h                   |   3 +
 20 files changed, 1642 insertions(+), 148 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/mtd/mxicy,nand-ecc-engine.yaml
 create mode 100644 Documentation/devicetree/bindings/mtd/nand-chip.yaml
 delete mode 100644 Documentation/devicetree/bindings/mtd/spi-nand.txt
 create mode 100644 Documentation/devicetree/bindings/mtd/spi-nand.yaml
 create mode 100644 Documentation/devicetree/bindings/spi/mxicy,mx25f0a-spi.yaml
 delete mode 100644 Documentation/devicetree/bindings/spi/spi-mxic.txt
 create mode 100644 drivers/mtd/nand/ecc-mxic.c
 create mode 100644 include/linux/mtd/nand-ecc-mxic.h

-- 
2.27.0


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

WARNING: multiple messages have this Message-ID (diff)
From: Miquel Raynal <miquel.raynal@bootlin.com>
To: Richard Weinberger <richard@nod.at>,
	Vignesh Raghavendra <vigneshr@ti.com>,
	Tudor Ambarus <Tudor.Ambarus@microchip.com>,
	Pratyush Yadav <p.yadav@ti.com>, Michael Walle <michael@walle.cc>,
	<linux-mtd@lists.infradead.org>
Cc: Rob Herring <robh+dt@kernel.org>, <devicetree@vger.kernel.org>,
	Mark Brown <broonie@kernel.org>, <linux-spi@vger.kernel.org>,
	Xiangsheng Hou <Xiangsheng.Hou@mediatek.com>,
	Julien Su <juliensu@mxic.com.tw>,
	Jaime Liao <jaimeliao@mxic.com.tw>,
	Boris Brezillon <bbrezillon@kernel.org>,
	Thomas Petazzoni <thomas.petazzoni@bootlin.com>,
	Miquel Raynal <miquel.raynal@bootlin.com>
Subject: [PATCH v2 00/20] External ECC engines & Macronix support
Date: Fri, 26 Nov 2021 12:39:04 +0100	[thread overview]
Message-ID: <20211126113924.310459-1-miquel.raynal@bootlin.com> (raw)


Hello all,

This series is now stable and brings support for external/modular ECC
engines, and let SPI controller using the ECC framework.

As a first example, Macronix ECC engine can be used as an
external engine (takes the data, proceeds to the calculations, writes
back the ECC bytes) or as a pipelined engine doing on-the-fly
calculations (which is very common in the raw NAND world).

In the device tree, the ECC engine should be described as a separated DT
node. Then:
* external case: the flash node should provide a nand-ecc-engine
  property pointing to the ECC engine node.
* pipelined case: the flash node should provide a nand-ecc-engine
  property pointing to the SPI controller, itself with another
  nand-ecc-engine property pointing at the ECC engine node.

This series comes with a bunch of improvements on the binding side as
well.

Cheers,
Miquèl

Changes in v2:
* Fixed the bindings and added Rob's acks when relevant.
* Added locking in the ECC engine driver.
* Brought more changes in the core in order to bring the ECC information
  into the spi_mem_op structure with the idea of avoiding any races
  between parallel calls on the same engine.
* Reorganized the ECC driver entirely in order to have a per-engine mxic
  structure plus a per-NAND context. This lead to a number of changes
  internally which cannot all be listed.

Changes since the RFC:
* Rebased on top of v5.15-rc1.
* Fixed the dirmap configuration.
* Added the various tags received.
* Fixed the bindings as reported by the robots.
* Fixed the return value of the helper counting bitflips.
* Included a fix from Jaime Liao in the external pattern logic.
* Added the yaml conversion of Macronix SPI controller description.
* Added the yaml conversion of the SPI-NAND description.
* Created a nand-chip.yaml file to share properties between SPI-NAND and
  raw NAND.

Mason Yang (1):
  mtd: spinand: macronix: Use random program load

Miquel Raynal (19):
  dt-bindings: mtd: nand-controller: Fix the reg property description
  dt-bindings: mtd: nand-controller: Fix a comment in the examples
  dt-bindings: mtd: nand-chip: Create a NAND chip description
  dt-bindings: mtd: spi-nand: Convert spi-nand description file to yaml
  dt-bindings: vendor-prefixes: Clarify Macronix prefix
  dt-bindings: spi: mxic: The interrupt property is not mandatory
  dt-bindings: spi: mxic: Convert to yaml
  dt-bindings: spi: mxic: Document the nand-ecc-engine property
  dt-bindings: mtd: Describe Macronix NAND ECC engine
  mtd: nand: ecc: Add infrastructure to support hardware engines
  mtd: nand: Add a new helper to retrieve the ECC context
  mtd: nand: mxic-ecc: Add Macronix external ECC engine support
  mtd: nand: mxic-ecc: Support SPI pipelined mode
  mtd: spinand: Create direct mapping descriptors for ECC operations
  spi: mxic: Fix the transmit path
  spi: mxic: Create a helper to configure the controller before an
    operation
  spi: mxic: Create a helper to ease the start of an operation
  spi: mxic: Add support for direct mapping
  spi: mxic: Add support for pipelined ECC operations

 .../bindings/mtd/mxicy,nand-ecc-engine.yaml   |  77 ++
 .../devicetree/bindings/mtd/nand-chip.yaml    |  71 ++
 .../bindings/mtd/nand-controller.yaml         |  57 +-
 .../devicetree/bindings/mtd/spi-nand.txt      |   5 -
 .../devicetree/bindings/mtd/spi-nand.yaml     |  27 +
 .../bindings/spi/mxicy,mx25f0a-spi.yaml       |  66 ++
 .../devicetree/bindings/spi/spi-mxic.txt      |  34 -
 .../devicetree/bindings/vendor-prefixes.yaml  |   3 +
 drivers/mtd/nand/Kconfig                      |   6 +
 drivers/mtd/nand/Makefile                     |   1 +
 drivers/mtd/nand/core.c                       |  10 +-
 drivers/mtd/nand/ecc-mxic.c                   | 901 ++++++++++++++++++
 drivers/mtd/nand/ecc.c                        |  88 ++
 drivers/mtd/nand/spi/core.c                   |  28 +-
 drivers/mtd/nand/spi/macronix.c               |   2 +-
 drivers/spi/spi-mxic.c                        | 326 ++++++-
 include/linux/mtd/nand-ecc-mxic.h             |  50 +
 include/linux/mtd/nand.h                      |  33 +
 include/linux/mtd/spinand.h                   |   2 +
 include/linux/spi/spi-mem.h                   |   3 +
 20 files changed, 1642 insertions(+), 148 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/mtd/mxicy,nand-ecc-engine.yaml
 create mode 100644 Documentation/devicetree/bindings/mtd/nand-chip.yaml
 delete mode 100644 Documentation/devicetree/bindings/mtd/spi-nand.txt
 create mode 100644 Documentation/devicetree/bindings/mtd/spi-nand.yaml
 create mode 100644 Documentation/devicetree/bindings/spi/mxicy,mx25f0a-spi.yaml
 delete mode 100644 Documentation/devicetree/bindings/spi/spi-mxic.txt
 create mode 100644 drivers/mtd/nand/ecc-mxic.c
 create mode 100644 include/linux/mtd/nand-ecc-mxic.h

-- 
2.27.0


             reply	other threads:[~2021-11-26 11:40 UTC|newest]

Thread overview: 68+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-11-26 11:39 Miquel Raynal [this message]
2021-11-26 11:39 ` [PATCH v2 00/20] External ECC engines & Macronix support Miquel Raynal
2021-11-26 11:39 ` [PATCH v2 01/20] dt-bindings: mtd: nand-controller: Fix the reg property description Miquel Raynal
2021-11-26 11:39   ` Miquel Raynal
2021-11-26 11:39 ` [PATCH v2 02/20] dt-bindings: mtd: nand-controller: Fix a comment in the examples Miquel Raynal
2021-11-26 11:39   ` Miquel Raynal
2021-11-26 11:39 ` [PATCH v2 03/20] dt-bindings: mtd: nand-chip: Create a NAND chip description Miquel Raynal
2021-11-26 11:39   ` Miquel Raynal
2021-11-27 23:13   ` Rob Herring
2021-11-27 23:13     ` Rob Herring
2021-12-01 23:20   ` Rob Herring
2021-12-01 23:20     ` Rob Herring
2021-11-26 11:39 ` [PATCH v2 04/20] dt-bindings: mtd: spi-nand: Convert spi-nand description file to yaml Miquel Raynal
2021-11-26 11:39   ` Miquel Raynal
2021-11-26 11:39 ` [PATCH v2 05/20] dt-bindings: vendor-prefixes: Clarify Macronix prefix Miquel Raynal
2021-11-26 11:39   ` Miquel Raynal
2021-11-26 11:39 ` [PATCH v2 06/20] dt-bindings: spi: mxic: The interrupt property is not mandatory Miquel Raynal
2021-11-26 11:39   ` Miquel Raynal
2021-11-26 11:39 ` [PATCH v2 07/20] dt-bindings: spi: mxic: Convert to yaml Miquel Raynal
2021-11-26 11:39   ` Miquel Raynal
2021-11-26 11:39 ` [PATCH v2 08/20] dt-bindings: spi: mxic: Document the nand-ecc-engine property Miquel Raynal
2021-11-26 11:39   ` Miquel Raynal
2021-11-26 11:39 ` [PATCH v2 09/20] dt-bindings: mtd: Describe Macronix NAND ECC engine Miquel Raynal
2021-11-26 11:39   ` Miquel Raynal
2021-11-26 11:39 ` [PATCH v2 10/20] mtd: spinand: macronix: Use random program load Miquel Raynal
2021-11-26 11:39   ` Miquel Raynal
2021-11-26 11:39 ` [PATCH v2 11/20] mtd: nand: ecc: Add infrastructure to support hardware engines Miquel Raynal
2021-11-26 11:39   ` Miquel Raynal
2021-11-26 11:39 ` [PATCH v2 12/20] mtd: nand: Add a new helper to retrieve the ECC context Miquel Raynal
2021-11-26 11:39   ` Miquel Raynal
2021-11-26 11:39 ` [PATCH v2 13/20] mtd: nand: mxic-ecc: Add Macronix external ECC engine support Miquel Raynal
2021-11-26 11:39   ` Miquel Raynal
2021-11-26 11:39 ` [PATCH v2 14/20] mtd: nand: mxic-ecc: Support SPI pipelined mode Miquel Raynal
2021-11-26 11:39   ` Miquel Raynal
2021-11-26 11:39 ` [PATCH v2 15/20] mtd: spinand: Create direct mapping descriptors for ECC operations Miquel Raynal
2021-11-26 11:39   ` Miquel Raynal
2021-11-26 14:13   ` Boris Brezillon
2021-11-26 14:13     ` Boris Brezillon
2021-11-26 14:42     ` Miquel Raynal
2021-11-26 14:42       ` Miquel Raynal
2021-11-26 14:47       ` Boris Brezillon
2021-11-26 14:47         ` Boris Brezillon
2021-11-26 14:51         ` Miquel Raynal
2021-11-26 14:51           ` Miquel Raynal
2021-11-26 11:39 ` [PATCH v2 16/20] spi: mxic: Fix the transmit path Miquel Raynal
2021-11-26 11:39   ` Miquel Raynal
2021-11-26 11:39 ` [PATCH v2 17/20] spi: mxic: Create a helper to configure the controller before an operation Miquel Raynal
2021-11-26 11:39   ` Miquel Raynal
2021-11-26 11:39 ` [PATCH v2 18/20] spi: mxic: Create a helper to ease the start of " Miquel Raynal
2021-11-26 11:39   ` Miquel Raynal
2021-11-26 11:39 ` [PATCH v2 19/20] spi: mxic: Add support for direct mapping Miquel Raynal
2021-11-26 11:39   ` Miquel Raynal
2021-11-26 11:39 ` [PATCH v2 20/20] spi: mxic: Add support for pipelined ECC operations Miquel Raynal
2021-11-26 11:39   ` Miquel Raynal
2021-11-26 21:15   ` kernel test robot
2021-11-26 21:15     ` kernel test robot
2021-11-26 21:15     ` kernel test robot
2021-11-27  7:49   ` kernel test robot
2021-11-27  7:49     ` kernel test robot
2021-11-27  7:49     ` kernel test robot
2021-11-26 13:37 ` [PATCH v2 00/20] External ECC engines & Macronix support Mark Brown
2021-11-26 13:37   ` Mark Brown
2021-11-26 14:10   ` Miquel Raynal
2021-11-26 14:10     ` Miquel Raynal
2021-11-26 14:13     ` Mark Brown
2021-11-26 14:13       ` Mark Brown
2021-11-29  9:50       ` Miquel Raynal
2021-11-29  9:50         ` 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=20211126113924.310459-1-miquel.raynal@bootlin.com \
    --to=miquel.raynal@bootlin.com \
    --cc=Tudor.Ambarus@microchip.com \
    --cc=Xiangsheng.Hou@mediatek.com \
    --cc=bbrezillon@kernel.org \
    --cc=broonie@kernel.org \
    --cc=devicetree@vger.kernel.org \
    --cc=jaimeliao@mxic.com.tw \
    --cc=juliensu@mxic.com.tw \
    --cc=linux-mtd@lists.infradead.org \
    --cc=linux-spi@vger.kernel.org \
    --cc=michael@walle.cc \
    --cc=p.yadav@ti.com \
    --cc=richard@nod.at \
    --cc=robh+dt@kernel.org \
    --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
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.