public inbox for linux-mtd@lists.infradead.org
 help / color / mirror / Atom feed
* [PATCH v2 00/27] mtd: spinand: Octal DTR support
@ 2026-01-09 17:17 Miquel Raynal
  2026-01-09 17:17 ` [PATCH v2 01/27] spi: spi-mem: Make the DTR command operation macro more suitable Miquel Raynal
                   ` (28 more replies)
  0 siblings, 29 replies; 32+ messages in thread
From: Miquel Raynal @ 2026-01-09 17:17 UTC (permalink / raw)
  To: Mark Brown, Richard Weinberger, Vignesh Raghavendra
  Cc: Tudor Ambarus, Pratyush Yadav, Thomas Petazzoni, Steam Lin,
	Santhosh Kumar K, linux-spi, linux-kernel, linux-mtd,
	Miquel Raynal

Hello,

This series adds support for 8D-8D-8D in SPI NAND, which can already be
leveraged without any SPI changes as controllers already have this
support for some SPI NOR devices.

The series is a bit long because many preparation patches were needed
in order to have a clean 8D-8D-8D introduction (one of the last
patches), but I believe the split is worth it.

Among the few spi-mem patches, they are needed for building the SPI NAND
changes (especially the ODTR introduction at the end) and therefore an
immutable tag will be needed for merging in the MTD tree (unless all the
series goes through MTD directly ofc).

There is a benchmark in the last Winbond patch, we get +55% read speed
and +26% write speed with this series, at 25MHz!

    1S-8S-8S:
    
       # flash_speed /dev/mtd0 -c1 -d
       eraseblock write speed is 7529 KiB/s
       eraseblock read speed is 15058 KiB/s
    
    8D-8D-8D:
    
       # flash_speed /dev/mtd0 -c1 -d
       eraseblock write speed is 9481 KiB/s
       eraseblock read speed is 23272 KiB/s

I am excited to see this finally upstream! Next step will be to see TI's
PHY tuning series from Santhosh in conjunction with this one to operate at
maximum speed.

Thanks!
Miquèl

Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
---
Changes in v2:
- Rebased on v6.19-rc1.
- Collected tags.
- Fixed commit logs as reported.
- Removed inline functions and turned them into proper functions in a C
  file as suggested by Tudor.
- Squashed patches 10 and 11 as suggested by Tudor.
- Link to v1: https://lore.kernel.org/r/20251031-winbond-v6-17-rc1-oddr-v1-0-be42de23ebf1@bootlin.com

---
Miquel Raynal (27):
      spi: spi-mem: Make the DTR command operation macro more suitable
      spi: spi-mem: Create a repeated address operation
      spi: spi-mem: Limit octal DTR constraints to octal DTR situations
      mtd: spinand: Fix kernel doc
      mtd: spinand: Add missing check
      mtd: spinand: Remove stale definitions
      mtd: spinand: Use standard return values
      mtd: spinand: Decouple write enable and write disable operations
      mtd: spinand: Create an array of operation templates
      mtd: spinand: Make use of the operation templates through SPINAND_OP()
      mtd: spinand: macronix: Convert vendor specific operation to SPINAND_OP()
      mtd: spinand: winbond: Convert W25N specific operation to SPINAND_OP()
      mtd: spinand: winbond: Convert W35N specific operation to SPINAND_OP()
      mtd: spinand: List vendor specific operations and make sure they are supported
      mtd: spinand: macronix: Register vendor specific operation
      mtd: spinand: winbond: Register W25N vendor specific operation
      mtd: spinand: winbond: Register W35N vendor specific operation
      mtd: spinand: winbond: Fix style
      mtd: spinand: winbond: Rename IO_MODE register macro
      mtd: spinand: winbond: Configure the IO mode after the dummy cycles
      mtd: spinand: Gather all the bus interface steps in one single function
      mtd: spinand: Add support for setting a bus interface
      mtd: spinand: Propagate the bus interface across core helpers
      mtd: spinand: Give the bus interface to the configuration helper
      mtd: spinand: Warn if using SSDR-only vendor commands in a non SSDR mode
      mtd: spinand: Add octal DTR support
      mtd: spinand: winbond: W35N octal DTR support

 drivers/mtd/nand/spi/core.c       | 387 +++++++++++++++++++++++++++++++++-----
 drivers/mtd/nand/spi/esmt.c       |   4 +-
 drivers/mtd/nand/spi/gigadevice.c |   8 +-
 drivers/mtd/nand/spi/macronix.c   |  49 ++++-
 drivers/mtd/nand/spi/micron.c     |   8 +-
 drivers/mtd/nand/spi/toshiba.c    |   3 +-
 drivers/mtd/nand/spi/winbond.c    | 129 +++++++++----
 drivers/spi/spi-mem.c             |  15 +-
 include/linux/mtd/spinand.h       | 161 ++++++++++++++--
 include/linux/spi/spi-mem.h       |  14 +-
 10 files changed, 651 insertions(+), 127 deletions(-)
---
base-commit: f7fae19731779c45416e3961fa7127ca225554a0
change-id: 20251031-winbond-v6-17-rc1-oddr-385f04684ad9

Best regards,
-- 
Miquel Raynal <miquel.raynal@bootlin.com>


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

^ permalink raw reply	[flat|nested] 32+ messages in thread

end of thread, other threads:[~2026-01-29 19:23 UTC | newest]

Thread overview: 32+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-01-09 17:17 [PATCH v2 00/27] mtd: spinand: Octal DTR support Miquel Raynal
2026-01-09 17:17 ` [PATCH v2 01/27] spi: spi-mem: Make the DTR command operation macro more suitable Miquel Raynal
2026-01-09 17:18 ` [PATCH v2 02/27] spi: spi-mem: Create a repeated address operation Miquel Raynal
2026-01-09 17:18 ` [PATCH v2 03/27] spi: spi-mem: Limit octal DTR constraints to octal DTR situations Miquel Raynal
2026-01-09 17:18 ` [PATCH v2 04/27] mtd: spinand: Fix kernel doc Miquel Raynal
2026-01-09 17:18 ` [PATCH v2 05/27] mtd: spinand: Add missing check Miquel Raynal
2026-01-09 17:18 ` [PATCH v2 06/27] mtd: spinand: Remove stale definitions Miquel Raynal
2026-01-09 17:18 ` [PATCH v2 07/27] mtd: spinand: Use standard return values Miquel Raynal
2026-01-09 17:18 ` [PATCH v2 08/27] mtd: spinand: Decouple write enable and write disable operations Miquel Raynal
2026-01-09 17:18 ` [PATCH v2 09/27] mtd: spinand: Create an array of operation templates Miquel Raynal
2026-01-09 17:18 ` [PATCH v2 10/27] mtd: spinand: Make use of the operation templates through SPINAND_OP() Miquel Raynal
2026-01-09 17:18 ` [PATCH v2 11/27] mtd: spinand: macronix: Convert vendor specific operation to SPINAND_OP() Miquel Raynal
2026-01-09 17:18 ` [PATCH v2 12/27] mtd: spinand: winbond: Convert W25N " Miquel Raynal
2026-01-09 17:18 ` [PATCH v2 13/27] mtd: spinand: winbond: Convert W35N " Miquel Raynal
2026-01-09 17:18 ` [PATCH v2 14/27] mtd: spinand: List vendor specific operations and make sure they are supported Miquel Raynal
2026-01-09 17:18 ` [PATCH v2 15/27] mtd: spinand: macronix: Register vendor specific operation Miquel Raynal
2026-01-09 17:18 ` [PATCH v2 16/27] mtd: spinand: winbond: Register W25N " Miquel Raynal
2026-01-09 17:18 ` [PATCH v2 17/27] mtd: spinand: winbond: Register W35N " Miquel Raynal
2026-01-09 17:18 ` [PATCH v2 18/27] mtd: spinand: winbond: Fix style Miquel Raynal
2026-01-09 17:18 ` [PATCH v2 19/27] mtd: spinand: winbond: Rename IO_MODE register macro Miquel Raynal
2026-01-09 17:18 ` [PATCH v2 20/27] mtd: spinand: winbond: Configure the IO mode after the dummy cycles Miquel Raynal
2026-01-09 17:18 ` [PATCH v2 21/27] mtd: spinand: Gather all the bus interface steps in one single function Miquel Raynal
2026-01-09 17:18 ` [PATCH v2 22/27] mtd: spinand: Add support for setting a bus interface Miquel Raynal
2026-01-09 17:18 ` [PATCH v2 23/27] mtd: spinand: Propagate the bus interface across core helpers Miquel Raynal
2026-01-09 17:18 ` [PATCH v2 24/27] mtd: spinand: Give the bus interface to the configuration helper Miquel Raynal
2026-01-09 17:18 ` [PATCH v2 25/27] mtd: spinand: Warn if using SSDR-only vendor commands in a non SSDR mode Miquel Raynal
2026-01-09 17:18 ` [PATCH v2 26/27] mtd: spinand: Add octal DTR support Miquel Raynal
2026-01-09 17:18 ` [PATCH v2 27/27] mtd: spinand: winbond: W35N " Miquel Raynal
2026-01-13 17:29 ` (subset) [PATCH v2 00/27] mtd: spinand: Octal " Mark Brown
2026-01-14 11:25 ` Mark Brown
2026-01-14 16:17   ` Miquel Raynal
2026-01-29 19:23   ` Miquel Raynal

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox