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
next 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: linkBe 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.