Skip to contentSkip to conversation

mtd: spinand: add support for FudanMicro FM25S01A

PATCH Superseded Tianling Shen 2 participants 3 messages Aug 10, 2025 – Aug 24, 2025

Subsystems (2)

v1 of 3 Superseded Latest is v3 →

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 mtd: spinand: add support for FudanMicro FM25S01A

Add support for FudanMicro FM25S01A SPI NAND.
Datasheet: http://eng.fmsh.com/nvm/FM25S01A_ds_eng.pdf

---
 drivers/mtd/nand/spi/Makefile |  2 +-
 drivers/mtd/nand/spi/core.c   |  1 +
 drivers/mtd/nand/spi/fmsh.c   | 74 +++++++++++++++++++++++++++++++++++
 include/linux/mtd/spinand.h   |  1 +
 4 files changed, 77 insertions(+), 1 deletion(-)
 create mode 100644 drivers/mtd/nand/spi/fmsh.c
drivers/mtd/nand/spi/Makefile +1 -1
index 258da42451a4..e288742ea8f0 100644
@@ -1,5 +1,5 @@
 # SPDX-License-Identifier: GPL-2.0
-spinand-objs := core.o otp.o
+spinand-objs := core.o fmsh.o otp.o
 spinand-objs += alliancememory.o ato.o esmt.o foresee.o gigadevice.o macronix.o
 spinand-objs += micron.o paragon.o skyhigh.o toshiba.o winbond.o xtx.o
 obj-$(CONFIG_MTD_SPI_NAND) += spinand.o
drivers/mtd/nand/spi/core.c +1 -0
index b0898990b2a5..ea47028d021a 100644
@@ -1184,6 +1184,7 @@ static const struct spinand_manufacturer *spinand_manufacturers[] = {
 	&alliancememory_spinand_manufacturer,
 	&ato_spinand_manufacturer,
 	&esmt_c8_spinand_manufacturer,
+	&fmsh_spinand_manufacturer,
 	&foresee_spinand_manufacturer,
 	&gigadevice_spinand_manufacturer,
 	&macronix_spinand_manufacturer,
drivers/mtd/nand/spi/fmsh.c new file +74 -0

74 lines not on this page · raw message

include/linux/mtd/spinand.h +1 -0
index 27a45bdab7ec..927c10d78769 100644
@@ -355,6 +355,7 @@ struct spinand_manufacturer {
 extern const struct spinand_manufacturer alliancememory_spinand_manufacturer;
 extern const struct spinand_manufacturer ato_spinand_manufacturer;
 extern const struct spinand_manufacturer esmt_c8_spinand_manufacturer;
+extern const struct spinand_manufacturer fmsh_spinand_manufacturer;
 extern const struct spinand_manufacturer foresee_spinand_manufacturer;
 extern const struct spinand_manufacturer gigadevice_spinand_manufacturer;
 extern const struct spinand_manufacturer macronix_spinand_manufacturer;
Signature · 1 line
2.50.1
maintainer
#1 lore raw

Hello Tianling,

Quoted 17 lines · Tianling Shen

Add support for FudanMicro FM25S01A SPI NAND.
Datasheet: http://eng.fmsh.com/nvm/FM25S01A_ds_eng.pdf

---
 drivers/mtd/nand/spi/Makefile |  2 +-
 drivers/mtd/nand/spi/core.c   |  1 +
 drivers/mtd/nand/spi/fmsh.c   | 74 +++++++++++++++++++++++++++++++++++
 include/linux/mtd/spinand.h   |  1 +
 4 files changed, 77 insertions(+), 1 deletion(-)
 create mode 100644 drivers/mtd/nand/spi/fmsh.c
drivers/mtd/nand/spi/Makefile +0 -0
index 258da42451a4..e288742ea8f0 100644

drivers/mtd/nand/spi/Makefile line 2

Quoted 3 lines
drivers/mtd/nand/spi/Makefile +1 -1
@@ -1,5 +1,5 @@
 # SPDX-License-Identifier: GPL-2.0
-spinand-objs := core.o otp.o
+spinand-objs := core.o fmsh.o otp.o

You're adding a manufacturer driver in the middle of the core files. For now we kind of inforce an alphabetical order, so please move it below.

drivers/mtd/nand/spi/Makefile line 4

Quoted 2 lines
drivers/mtd/nand/spi/Makefile +0 -0
 spinand-objs += alliancememory.o ato.o esmt.o foresee.o gigadevice.o
 macronix.o
                                                ^

Here

drivers/mtd/nand/spi/fmsh.c

Quoted 19 lines
drivers/mtd/nand/spi/Makefile +0 -0
 spinand-objs += micron.o paragon.o skyhigh.o toshiba.o winbond.o xtx.o

obj-$(CONFIG_MTD_SPI_NAND) += spinand.o

drivers/mtd/nand/spi/core.c +1 -0
index b0898990b2a5..ea47028d021a 100644
@@ -1184,6 +1184,7 @@ static const struct spinand_manufacturer *spinand_manufacturers[] = {
 	&alliancememory_spinand_manufacturer,
 	&ato_spinand_manufacturer,
 	&esmt_c8_spinand_manufacturer,
+	&fmsh_spinand_manufacturer,
 	&foresee_spinand_manufacturer,
 	&gigadevice_spinand_manufacturer,
 	&macronix_spinand_manufacturer,
drivers/mtd/nand/spi/fmsh.c new file +0 -0
new file mode 100644
index 000000000000..8b2097bfc771

Otherise the driver is simple enough, so v2 should make it :)

Thanks,
Miquèl

#2 lore raw

Hello Miquel,

Quoted 16 lines · Miquel Raynal

Hello Tianling,

Quoted 12 lines · Tianling Shen

Add support for FudanMicro FM25S01A SPI NAND.
Datasheet: http://eng.fmsh.com/nvm/FM25S01A_ds_eng.pdf

---
  drivers/mtd/nand/spi/Makefile |  2 +-
  drivers/mtd/nand/spi/core.c   |  1 +
  drivers/mtd/nand/spi/fmsh.c   | 74 +++++++++++++++++++++++++++++++++++
  include/linux/mtd/spinand.h   |  1 +
  4 files changed, 77 insertions(+), 1 deletion(-)

create mode 100644 drivers/mtd/nand/spi/fmsh.c

Quoted 11 lines

drivers/mtd/nand/spi/Makefile line 2

Quoted 8 lines
drivers/mtd/nand/spi/Makefile +1 -1
index 258da42451a4..e288742ea8f0 100644
@@ -1,5 +1,5 @@
  # SPDX-License-Identifier: GPL-2.0
-spinand-objs := core.o otp.o
+spinand-objs := core.o fmsh.o otp.o

You're adding a manufacturer driver in the middle of the core files. For now we kind of inforce an alphabetical order, so please move it below.

oops, sorry for that, I've sent v2 for it. Thank you!

Regards,
Tianling.

Quoted 31 lines

drivers/mtd/nand/spi/Makefile line 4

Quoted 3 lines
drivers/mtd/nand/spi/Makefile +0 -0
  spinand-objs += alliancememory.o ato.o esmt.o foresee.o gigadevice.o
  macronix.o
                                                 ^

Here

drivers/mtd/nand/spi/fmsh.c

Quoted 19 lines
drivers/mtd/nand/spi/Makefile +0 -0
  spinand-objs += micron.o paragon.o skyhigh.o toshiba.o winbond.o xtx.o
  obj-$(CONFIG_MTD_SPI_NAND) += spinand.o
drivers/mtd/nand/spi/core.c +1 -0
index b0898990b2a5..ea47028d021a 100644
@@ -1184,6 +1184,7 @@ static const struct spinand_manufacturer *spinand_manufacturers[] = {
  	&alliancememory_spinand_manufacturer,
  	&ato_spinand_manufacturer,
  	&esmt_c8_spinand_manufacturer,
+	&fmsh_spinand_manufacturer,
  	&foresee_spinand_manufacturer,
  	&gigadevice_spinand_manufacturer,
  	&macronix_spinand_manufacturer,
drivers/mtd/nand/spi/fmsh.c new file +0 -0
new file mode 100644
index 000000000000..8b2097bfc771

Otherise the driver is simple enough, so v2 should make it :)

Thanks,
Miquèl