nuttx/drivers/mtd
Julian Oes 7e46d282eb drivers/mtd: Add W25N SPI NAND flash driver
Add MTD driver for Winbond W25N series SPI NAND flash.

Currently supports W25N01GV (1Gbit/128MB).

Features:
- Standard SPI interface with configurable frequency (up to 104 MHz)
- Hardware ECC enabled by default
- Block erase with sleep-based wait (releases SPI bus)
- Page read/write with busy-wait for fast operations

Limitations:
- No bad block management (BBM). Factory bad blocks and runtime bad
  blocks are not tracked.
- No bad block table (BBT) scanning at initialization.
- No Quad SPI support (standard SPI only).
- No access to spare area (64 bytes/page) or OTP region.

Tested using:
- Board with STM32H743
- W25N01GV on SPI at 96 MHz with DMA enabled
- Flash mounted using littlefs
- Tested using sdbench:
  - Sequential write speed of 1760 KB/s
  - Sequential read speed of 4900 KB/s

Signed-off-by: Julian Oes <julian@oes.ch>
2025-12-19 10:00:33 +08:00
..
.gitignore drivers/mtd: introduce nvblk 2025-08-06 01:53:56 +08:00
at24xx.c sched/sleep: replace all Signal-based sleep implement to Scheduled sleep 2025-10-17 14:05:02 +08:00
at25.c sched/sleep: replace all Signal-based sleep implement to Scheduled sleep 2025-10-17 14:05:02 +08:00
at25ee.c mtd/at25ee: Use eeprom/spi_xx25xx internally 2025-12-17 19:03:54 +01:00
at45db.c driver/mtd/at45db.c: write to page without built-in erase 2025-03-26 10:29:12 +08:00
cfi.c drivers/mtd: cfi-flash driver 2025-02-11 17:23:44 +08:00
cfi.h drivers/mtd: cfi-flash driver 2025-02-11 17:23:44 +08:00
CMakeLists.txt drivers/mtd: Add W25N SPI NAND flash driver 2025-12-19 10:00:33 +08:00
dhara.c Use lib_get_pathbuffer instead of stack variables 2024-11-12 17:21:42 +08:00
filemtd.c drivers: migrate to SPDX identifier 2024-11-06 18:02:25 +08:00
ftl.c drivers/fs: Control the behavior of FTL by passing oflags during the open process. 2025-07-16 14:11:41 +08:00
gd5f.c sched/sleep: replace all Signal-based sleep implement to Scheduled sleep 2025-10-17 14:05:02 +08:00
gd25.c sched/sleep: replace all Signal-based sleep implement to Scheduled sleep 2025-10-17 14:05:02 +08:00
gd55.c sched/sleep: replace all Signal-based sleep implement to Scheduled sleep 2025-10-17 14:05:02 +08:00
hamming.c drivers: migrate to SPDX identifier 2024-11-06 18:02:25 +08:00
is25xp.c sched/sleep: replace all Signal-based sleep implement to Scheduled sleep 2025-10-17 14:05:02 +08:00
Kconfig drivers/mtd: Add W25N SPI NAND flash driver 2025-12-19 10:00:33 +08:00
m25px.c sched/sleep: replace all Signal-based sleep implement to Scheduled sleep 2025-10-17 14:05:02 +08:00
Make.defs drivers/mtd: Add W25N SPI NAND flash driver 2025-12-19 10:00:33 +08:00
mtd_cfi.c drivers/mtd/mtd_cfi: Add MTDIOC_ERASESTATE 2025-03-28 19:19:35 +08:00
mtd_config.c drivers: migrate to SPDX identifier 2024-11-06 18:02:25 +08:00
mtd_config_fs.c mtd/nvs: Save events if not waited 2025-09-10 10:54:39 -03:00
mtd_modeltab.c drivers: migrate to SPDX identifier 2024-11-06 18:02:25 +08:00
mtd_nand.c drivers: migrate to SPDX identifier 2024-11-06 18:02:25 +08:00
mtd_nandecc.c drivers: migrate to SPDX identifier 2024-11-06 18:02:25 +08:00
mtd_nandmodel.c drivers: migrate to SPDX identifier 2024-11-06 18:02:25 +08:00
mtd_nandram.c drivers: migrate to SPDX identifier 2024-11-06 18:02:25 +08:00
mtd_nandscheme.c drivers: migrate to SPDX identifier 2024-11-06 18:02:25 +08:00
mtd_nandwrapper.c drivers: migrate to SPDX identifier 2024-11-06 18:02:25 +08:00
mtd_onfi.c style: fix spelling in code comments and strings 2025-05-23 10:48:41 +08:00
mtd_partition.c drivers: migrate to SPDX identifier 2024-11-06 18:02:25 +08:00
mtd_progmem.c drivers: migrate to SPDX identifier 2024-11-06 18:02:25 +08:00
mtd_rwbuffer.c drivers/mtd: fix compile warning 2025-06-03 17:33:14 +08:00
mx25lx.c sched/sleep: replace all Signal-based sleep implement to Scheduled sleep 2025-10-17 14:05:02 +08:00
mx25rxx.c sched/sleep: replace all Signal-based sleep implement to Scheduled sleep 2025-10-17 14:05:02 +08:00
mx35.c sched/sleep: replace all Signal-based sleep implement to Scheduled sleep 2025-10-17 14:05:02 +08:00
n25qxxx.c sched/sleep: replace all Signal-based sleep implement to Scheduled sleep 2025-10-17 14:05:02 +08:00
nullmtd.c drivers: migrate to SPDX identifier 2024-11-06 18:02:25 +08:00
nvblk.c drivers/mtd: introduce nvblk 2025-08-06 01:53:56 +08:00
rammtd.c rammtd:add rammtd_uninitialize 2024-11-12 14:58:01 +08:00
ramtron.c driver/mtd: ramtron multi-device spi bus support 2025-03-26 19:26:01 +08:00
rpmsgmtd.c style: fix spelling in code comments and strings 2025-05-23 10:48:41 +08:00
rpmsgmtd.h drivers: migrate to SPDX identifier 2024-11-06 18:02:25 +08:00
rpmsgmtd_server.c drivers: migrate to SPDX identifier 2024-11-06 18:02:25 +08:00
s25fl1.c sched/sleep: replace all Signal-based sleep implement to Scheduled sleep 2025-10-17 14:05:02 +08:00
sector512.c drivers: migrate to SPDX identifier 2024-11-06 18:02:25 +08:00
skeleton.c drivers: migrate to SPDX identifier 2024-11-06 18:02:25 +08:00
smart.c style: fix spelling in code comments and strings 2025-05-23 10:48:41 +08:00
sst25.c sched/sleep: replace all Signal-based sleep implement to Scheduled sleep 2025-10-17 14:05:02 +08:00
sst25xx.c sched/sleep: replace all Signal-based sleep implement to Scheduled sleep 2025-10-17 14:05:02 +08:00
sst26.c sched/sleep: replace all Signal-based sleep implement to Scheduled sleep 2025-10-17 14:05:02 +08:00
sst39vf.c sched/sleep: replace all Signal-based sleep implement to Scheduled sleep 2025-10-17 14:05:02 +08:00
w25.c drivers/mtd/w25: support custom SPI transfers delay 2025-11-27 22:27:40 +08:00
w25n.c drivers/mtd: Add W25N SPI NAND flash driver 2025-12-19 10:00:33 +08:00
w25qxxxjv.c sched/sleep: replace all Signal-based sleep implement to Scheduled sleep 2025-10-17 14:05:02 +08:00