This patch series makes u-boot SPI NAND driver almost the same as in linux-6.17-rc1. This provides the following improvements: * it becomes easy to port changes from linux kernel * more flash is supported * spi drivers can accelerate flash reading/writing using spi-mem dirmap API * continuous reading mode was supported (for some flashes) * OTP support was added (for some flashes) * add support of special data recovery reading (for some flashes) * bug fixes * other minor improvements
The following linux kernel driver features was not implemented * support of different ECC engines * per operation maximum spi bus frequency The code has been tested on Airoha AN7581 (64-bit) based boards equipped with flash memory Micron MT29F2G01ABAGD Changes v2: * update patch description * add fixes for continuous reading mode Changes v3: * fix duplication in patch description * add more information about commits ported from linux kernel Changes v4: * the original authorship was preserved for several patches * the code was synced with the latest shapshot of future linux-6.17-rc1 * spi-nand was replaced by spinand in patch description * continuous reading mode fixes were updated Changes v5: * add missed SoB tags * improve patch messages * add tags for patches ported from linux * drop continuous mode fixes (will be sent after corresponding linux fixes) Alexander Lobakin (1): mtd: spinand: core: add missing MODULE_DEVICE_TABLE() Cheng Ming Lin (2): mtd: spinand: Add support for setting plane select bits mtd: spinand: Add read retry support Daniel Golle (1): mtd: spinand: set bitflip_threshold to 75% of ECC strength Gabor Juhos (1): mtd: spinand: propagate spinand_wait() errors from spinand_write_page() Mikhail Kshevetskiy (12): spi: spi-mem: Extend SPI MEM ops to match Linux 6.16 mtd: spinand: Use the spi-mem dirmap API mtd: spinand: Extend spinand_wait() to match Linux kernel implementation mtd: spinand: Make use of spinand_to_[mtd/nand]() helpers mtd: spinand: Align logic for enabling ECC to match Linux kernel mtd: spinand: Refactor spinand_init* functions mtd: spinand: Refactor ECC/OOB functions mtd: spinand: Sync core code and device support with Linux 6.10 mtd: spinand: add support of continuous reading mode mtd: spinand: add OTP support mtd: spinand: Enhance the logic when picking a variant mtd: spinand: Sync core code and device support with Linux 6.17-rc1 Miquel Raynal (2): mtd: nand: Add a NAND page I/O request type mtd: spinand: Add a ->configure_chip() hook Takahiro Kuwano (2): mtd: spinand: Remove write_enable_op() in markbad() mtd: spinand: Introduce a way to avoid raw access drivers/mtd/nand/spi/Makefile | 5 +- drivers/mtd/nand/spi/alliancememory.c | 155 +++++ drivers/mtd/nand/spi/ato.c | 88 +++ drivers/mtd/nand/spi/core.c | 931 ++++++++++++++++++-------- drivers/mtd/nand/spi/esmt.c | 123 +++- drivers/mtd/nand/spi/foresee.c | 107 +++ drivers/mtd/nand/spi/gigadevice.c | 86 ++- drivers/mtd/nand/spi/macronix.c | 289 ++++++-- drivers/mtd/nand/spi/micron.c | 180 ++++- drivers/mtd/nand/spi/otp.c | 369 ++++++++++ drivers/mtd/nand/spi/paragon.c | 24 +- drivers/mtd/nand/spi/skyhigh.c | 149 +++++ drivers/mtd/nand/spi/toshiba.c | 63 +- drivers/mtd/nand/spi/winbond.c | 361 +++++++++- drivers/mtd/nand/spi/xtx.c | 20 +- drivers/spi/spi-mem.c | 45 +- include/linux/mtd/nand.h | 157 ++++- include/linux/mtd/spinand.h | 374 +++++++++-- include/spi-mem.h | 93 ++- 19 files changed, 3110 insertions(+), 509 deletions(-) create mode 100644 drivers/mtd/nand/spi/alliancememory.c create mode 100644 drivers/mtd/nand/spi/ato.c create mode 100644 drivers/mtd/nand/spi/foresee.c create mode 100644 drivers/mtd/nand/spi/otp.c create mode 100644 drivers/mtd/nand/spi/skyhigh.c -- 2.50.1