Mediatek has an extended version of their NAND Flash Interface which
has a SPI-NAND mode. In this mode, the controller can perform 1-bit
spi-mem ops for up-to 0xa0 bytes and typical SPI-NAND single, dual
and quad IO page cache ops with 2-byte address. Additionally, the
page cache ops can be performed with ECC and auto data formatting
using the ECC engine of the controller.
This patchset implements support of this mode as a separated SPI-MEM
driver with pipelined ECC engine.
Changes since v1:
add a blank line between properties in dt binding doc
rename ecc-engine to nand-ecc-engine for the generic properties
fix warnings/errors from the CI
Changes since v2:
use streamed DMA api to avoid an extra memory copy during read
make ECC engine config a per-nand context
take user-requested ECC strength into account
Change since v3:
fix a missed ecc-engine rename in doc from v1
Changes since v4:
fix typo: piplined -> pipelined
fix missing OOB write in snfi driver
print page format with dev_dbg instead
replace uint*_t copied from vendor driver with u*
Chuanhong Guo (5):
mtd: nand: make mtk_ecc.c a separated module
spi: add driver for MTK SPI NAND Flash Interface
mtd: nand: mtk-ecc: also parse nand-ecc-engine if available
spi: dt-bindings: add binding doc for spi-mtk-snfi
arm64: dts: mediatek: add mtk-snfi for mt7622
.../bindings/spi/mediatek,spi-mtk-snfi.yaml | 88 +
arch/arm64/boot/dts/mediatek/mt7622.dtsi | 12 +
drivers/mtd/nand/Kconfig | 7 +
drivers/mtd/nand/Makefile | 1 +
drivers/mtd/nand/{raw/mtk_ecc.c => ecc-mtk.c} | 8 +-
drivers/mtd/nand/raw/Kconfig | 1 +
drivers/mtd/nand/raw/Makefile | 2 +-
drivers/mtd/nand/raw/mtk_nand.c | 2 +-
drivers/spi/Kconfig | 10 +
drivers/spi/Makefile | 1 +
drivers/spi/spi-mtk-snfi.c | 1467 +++++++++++++++++
.../linux/mtd/nand-ecc-mtk.h | 0
12 files changed, 1594 insertions(+), 5 deletions(-)
create mode 100644 Documentation/devicetree/bindings/spi/mediatek,spi-mtk-snfi.yaml
rename drivers/mtd/nand/{raw/mtk_ecc.c => ecc-mtk.c} (98%)
create mode 100644 drivers/spi/spi-mtk-snfi.c
rename drivers/mtd/nand/raw/mtk_ecc.h => include/linux/mtd/nand-ecc-mtk.h (100%)
--
2.35.1
On Sat, Apr 9, 2022 at 8:08 PM Chuanhong Guo <[email protected]> wrote:
>
> Mediatek has an extended version of their NAND Flash Interface which
> has a SPI-NAND mode. In this mode, the controller can perform 1-bit
> spi-mem ops for up-to 0xa0 bytes and typical SPI-NAND single, dual
> and quad IO page cache ops with 2-byte address. Additionally, the
> page cache ops can be performed with ECC and auto data formatting
> using the ECC engine of the controller.
There are two missing register configurations in this series.
It wasn't affecting me back then because the bootloader set them
for me. I'll send a v6 soon.
--
Regards,
Chuanhong Guo