imx.lists.linux.dev archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/4] mtd: spi-nor: micron-st: add die erase for micron spi nor chip
@ 2025-11-10  4:02 Haibo Chen
  2025-11-10  4:02 ` [PATCH 1/4] mtd: spi-nor: micron-st: rename the die_late_init functions Haibo Chen
                   ` (3 more replies)
  0 siblings, 4 replies; 15+ messages in thread
From: Haibo Chen @ 2025-11-10  4:02 UTC (permalink / raw)
  To: Tudor Ambarus, Pratyush Yadav, Michael Walle, Miquel Raynal,
	Richard Weinberger, Vignesh Raghavendra
  Cc: linux-mtd, linux-kernel, Haibo Chen, imx

mt35xu02gcba, mt35xu01gbba and mt35xu512aba are similar, but with
different number of dies. According to the datasheet:
https://datasheet.octopart.com/MT35XU02GCBA1G12-0AAT-Micron-datasheet-138896808.pdf
these chips all support die erase command, but do not support chip
erase. So change the drivers accordingly.
Also add mt35xu01gbba support here, test this chip on imx95-19x19-evk
board, it works under 200MHz at 8D-8D-8D mode.

Signed-off-by: Haibo Chen <haibo.chen@nxp.com>
---
Haibo Chen (4):
      mtd: spi-nor: micron-st: rename the die_late_init functions
      mtd: spi-nor: micron-st: add die erase for mt35xu512aba
      mtd: spi-nor: micron-st: add mt35xu01gbba support
      mtd: spi-nor: micron-st: enable 8D-8D-8D mode and die erase for mt35xu02gcba

 drivers/mtd/spi-nor/micron-st.c | 114 +++++++++++++++++++++++++++-------------
 1 file changed, 77 insertions(+), 37 deletions(-)
---
base-commit: 9c0826a5d9aa4d52206dd89976858457a2a8a7ed
change-id: 20251107-nor-84fe07ec3363

Best regards,
-- 
Haibo Chen <haibo.chen@nxp.com>


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

* [PATCH 1/4] mtd: spi-nor: micron-st: rename the die_late_init functions
  2025-11-10  4:02 [PATCH 0/4] mtd: spi-nor: micron-st: add die erase for micron spi nor chip Haibo Chen
@ 2025-11-10  4:02 ` Haibo Chen
  2025-11-10  6:32   ` Tudor Ambarus
  2025-11-10  4:02 ` [PATCH 2/4] mtd: spi-nor: micron-st: add die erase for mt35xu512aba Haibo Chen
                   ` (2 subsequent siblings)
  3 siblings, 1 reply; 15+ messages in thread
From: Haibo Chen @ 2025-11-10  4:02 UTC (permalink / raw)
  To: Tudor Ambarus, Pratyush Yadav, Michael Walle, Miquel Raynal,
	Richard Weinberger, Vignesh Raghavendra
  Cc: linux-mtd, linux-kernel, Haibo Chen, imx

st_nor_two/four_die_late_init() also suit for micron chips, so
rename to micron_st_nor_two/four_die_late_init().

Signed-off-by: Haibo Chen <haibo.chen@nxp.com>
---
 drivers/mtd/spi-nor/micron-st.c | 70 ++++++++++++++++++++---------------------
 1 file changed, 35 insertions(+), 35 deletions(-)

diff --git a/drivers/mtd/spi-nor/micron-st.c b/drivers/mtd/spi-nor/micron-st.c
index 187239ccd549510c6e9a6eacf4ae41158287e077..92eb14ca76c57f29ece1edb3fe652c56d1c2888f 100644
--- a/drivers/mtd/spi-nor/micron-st.c
+++ b/drivers/mtd/spi-nor/micron-st.c
@@ -127,6 +127,38 @@ static int micron_st_nor_set_octal_dtr(struct spi_nor *nor, bool enable)
 			micron_st_nor_octal_dtr_dis(nor);
 }
 
+static int micron_st_nor_four_die_late_init(struct spi_nor *nor)
+{
+	struct spi_nor_flash_parameter *params = nor->params;
+
+	params->die_erase_opcode = SPINOR_OP_MT_DIE_ERASE;
+	params->n_dice = 4;
+
+	/*
+	 * Unfortunately the die erase opcode does not have a 4-byte opcode
+	 * correspondent for these flashes. The SFDP 4BAIT table fails to
+	 * consider the die erase too. We're forced to enter in the 4 byte
+	 * address mode in order to benefit of the die erase.
+	 */
+	return spi_nor_set_4byte_addr_mode(nor, true);
+}
+
+static int micron_st_nor_two_die_late_init(struct spi_nor *nor)
+{
+	struct spi_nor_flash_parameter *params = nor->params;
+
+	params->die_erase_opcode = SPINOR_OP_MT_DIE_ERASE;
+	params->n_dice = 2;
+
+	/*
+	 * Unfortunately the die erase opcode does not have a 4-byte opcode
+	 * correspondent for these flashes. The SFDP 4BAIT table fails to
+	 * consider the die erase too. We're forced to enter in the 4 byte
+	 * address mode in order to benefit of the die erase.
+	 */
+	return spi_nor_set_4byte_addr_mode(nor, true);
+}
+
 static void mt35xu512aba_default_init(struct spi_nor *nor)
 {
 	nor->params->set_octal_dtr = micron_st_nor_set_octal_dtr;
@@ -193,48 +225,16 @@ static const struct spi_nor_fixups mt25qu512a_fixups = {
 	.post_bfpt = mt25qu512a_post_bfpt_fixup,
 };
 
-static int st_nor_four_die_late_init(struct spi_nor *nor)
-{
-	struct spi_nor_flash_parameter *params = nor->params;
-
-	params->die_erase_opcode = SPINOR_OP_MT_DIE_ERASE;
-	params->n_dice = 4;
-
-	/*
-	 * Unfortunately the die erase opcode does not have a 4-byte opcode
-	 * correspondent for these flashes. The SFDP 4BAIT table fails to
-	 * consider the die erase too. We're forced to enter in the 4 byte
-	 * address mode in order to benefit of the die erase.
-	 */
-	return spi_nor_set_4byte_addr_mode(nor, true);
-}
-
-static int st_nor_two_die_late_init(struct spi_nor *nor)
-{
-	struct spi_nor_flash_parameter *params = nor->params;
-
-	params->die_erase_opcode = SPINOR_OP_MT_DIE_ERASE;
-	params->n_dice = 2;
-
-	/*
-	 * Unfortunately the die erase opcode does not have a 4-byte opcode
-	 * correspondent for these flashes. The SFDP 4BAIT table fails to
-	 * consider the die erase too. We're forced to enter in the 4 byte
-	 * address mode in order to benefit of the die erase.
-	 */
-	return spi_nor_set_4byte_addr_mode(nor, true);
-}
-
 static const struct spi_nor_fixups n25q00_fixups = {
-	.late_init = st_nor_four_die_late_init,
+	.late_init = micron_st_nor_four_die_late_init,
 };
 
 static const struct spi_nor_fixups mt25q01_fixups = {
-	.late_init = st_nor_two_die_late_init,
+	.late_init = micron_st_nor_two_die_late_init,
 };
 
 static const struct spi_nor_fixups mt25q02_fixups = {
-	.late_init = st_nor_four_die_late_init,
+	.late_init = micron_st_nor_four_die_late_init,
 };
 
 static const struct flash_info st_nor_parts[] = {

-- 
2.34.1


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

* [PATCH 2/4] mtd: spi-nor: micron-st: add die erase for mt35xu512aba
  2025-11-10  4:02 [PATCH 0/4] mtd: spi-nor: micron-st: add die erase for micron spi nor chip Haibo Chen
  2025-11-10  4:02 ` [PATCH 1/4] mtd: spi-nor: micron-st: rename the die_late_init functions Haibo Chen
@ 2025-11-10  4:02 ` Haibo Chen
  2025-11-10  6:38   ` Tudor Ambarus
  2025-11-10  4:02 ` [PATCH 3/4] mtd: spi-nor: micron-st: add mt35xu01gbba support Haibo Chen
  2025-11-10  4:02 ` [PATCH 4/4] mtd: spi-nor: micron-st: enable 8D-8D-8D mode and die erase for mt35xu02gcba Haibo Chen
  3 siblings, 1 reply; 15+ messages in thread
From: Haibo Chen @ 2025-11-10  4:02 UTC (permalink / raw)
  To: Tudor Ambarus, Pratyush Yadav, Michael Walle, Miquel Raynal,
	Richard Weinberger, Vignesh Raghavendra
  Cc: linux-mtd, linux-kernel, Haibo Chen, imx

mt35xu512aba do not support chip erase command, and it contains one
die, and only support die erase.

Unfortunately the die erase opcode does not have a 4-byte opcode,
here forced to enter in the 4 byte address mode in order to benefit
of the die erase.

Link: https://datasheet.octopart.com/MT35XU02GCBA1G12-0AAT-Micron-datasheet-138896808.pdf
Signed-off-by: Haibo Chen <haibo.chen@nxp.com>
---
 drivers/mtd/spi-nor/micron-st.c | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git a/drivers/mtd/spi-nor/micron-st.c b/drivers/mtd/spi-nor/micron-st.c
index 92eb14ca76c57f29ece1edb3fe652c56d1c2888f..89cd146095584ddebdd258a186f6398b420e5800 100644
--- a/drivers/mtd/spi-nor/micron-st.c
+++ b/drivers/mtd/spi-nor/micron-st.c
@@ -159,6 +159,22 @@ static int micron_st_nor_two_die_late_init(struct spi_nor *nor)
 	return spi_nor_set_4byte_addr_mode(nor, true);
 }
 
+static int micron_st_nor_one_die_late_init(struct spi_nor *nor)
+{
+	struct spi_nor_flash_parameter *params = nor->params;
+
+	params->die_erase_opcode = SPINOR_OP_MT_DIE_ERASE;
+	params->n_dice = 1;
+
+	/*
+	 * Unfortunately the die erase opcode does not have a 4-byte opcode
+	 * correspondent for these flashes. The SFDP 4BAIT table fails to
+	 * consider the die erase too. We're forced to enter in the 4 byte
+	 * address mode in order to benefit of the die erase.
+	 */
+	return spi_nor_set_4byte_addr_mode(nor, true);
+}
+
 static void mt35xu512aba_default_init(struct spi_nor *nor)
 {
 	nor->params->set_octal_dtr = micron_st_nor_set_octal_dtr;
@@ -189,6 +205,7 @@ static int mt35xu512aba_post_sfdp_fixup(struct spi_nor *nor)
 static const struct spi_nor_fixups mt35xu512aba_fixups = {
 	.default_init = mt35xu512aba_default_init,
 	.post_sfdp = mt35xu512aba_post_sfdp_fixup,
+	.late_init = micron_st_nor_one_die_late_init,
 };
 
 static const struct flash_info micron_nor_parts[] = {

-- 
2.34.1


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

* [PATCH 3/4] mtd: spi-nor: micron-st: add mt35xu01gbba support
  2025-11-10  4:02 [PATCH 0/4] mtd: spi-nor: micron-st: add die erase for micron spi nor chip Haibo Chen
  2025-11-10  4:02 ` [PATCH 1/4] mtd: spi-nor: micron-st: rename the die_late_init functions Haibo Chen
  2025-11-10  4:02 ` [PATCH 2/4] mtd: spi-nor: micron-st: add die erase for mt35xu512aba Haibo Chen
@ 2025-11-10  4:02 ` Haibo Chen
  2025-11-10  6:42   ` Tudor Ambarus
  2025-11-10  4:02 ` [PATCH 4/4] mtd: spi-nor: micron-st: enable 8D-8D-8D mode and die erase for mt35xu02gcba Haibo Chen
  3 siblings, 1 reply; 15+ messages in thread
From: Haibo Chen @ 2025-11-10  4:02 UTC (permalink / raw)
  To: Tudor Ambarus, Pratyush Yadav, Michael Walle, Miquel Raynal,
	Richard Weinberger, Vignesh Raghavendra
  Cc: linux-mtd, linux-kernel, Haibo Chen, imx

mt35xu01gbba is similar with mt35xu512aba, but with two dies.
SFDP contain the wrong size, so define the size dierctly in
the flash info. And it also support 8D-8D-8D mode, but SFDP
lack SNOR_F_IO_MODE_EN_VOLATILE, so add this fixup flags here.

Link: https://datasheet.octopart.com/MT35XU02GCBA1G12-0AAT-Micron-datasheet-138896808.pdf
Signed-off-by: Haibo Chen <haibo.chen@nxp.com>

---
1) This mt35xu01gbba is populated on the imx95-19x19-evk board, was
   tested at 200MHz using nxp,imx95-fspi SPI controller.
2) root@imx95evk:~# cat /sys/bus/spi/devices/spi1.0/spi-nor/partname
   mt35xu01gbba
   root@imx95evk:~# cat /sys/bus/spi/devices/spi1.0/spi-nor/jedec_id
   2c5b1b
   root@imx95evk:~# cat /sys/bus/spi/devices/spi1.0/spi-nor/manufacturer
   micron
   root@imx95evk:~# hexdump -Cv /sys/bus/spi/devices/spi1.0/spi-nor/sfdp
   00000000  53 46 44 50 0a 01 03 ff  00 08 01 17 30 00 00 ff  |SFDP........0...|
   00000010  84 00 01 02 90 00 00 ff  05 01 01 06 a0 00 00 ff  |................|
   00000020  0a 00 01 08 b0 00 00 ff  ff ff ff ff ff ff ff ff  |................|
   00000030  e5 20 8a ff ff ff ff 3f  00 00 00 00 00 00 00 00  |. .....?........|
   00000040  ee ff ff ff ff ff 00 00  ff ff 00 00 0c 20 11 d8  |............. ..|
   00000050  0f 52 00 00 39 61 99 00  87 8e 03 d3 ac a1 27 3d  |.R..9a........'=|
   00000060  7a 75 7a 75 fb bd d5 5c  00 00 70 ff 81 50 f8 a1  |zuzu...\..p..P..|
   00000070  2f cb 27 8b 00 00 04 01  00 06 01 00 ff ff ff 8e  |/.'.............|
   00000080  00 00 00 00 00 00 00 00  00 00 00 00 ff ff ff ff  |................|
   00000090  43 0e ff ff 21 dc 5c ff  ff ff ff ff ff ff ff ff  |C...!.\.........|
   000000a0  00 0b 80 9e b1 81 b5 85  00 f0 ff 9f 00 0a 00 00  |................|
   000000b0  00 0a 1a 88 10 00 00 00  ff ff ff ff ff ff ff ff  |................|
   000000c0  00 00 06 01 00 00 00 00  14 01 81 03 00 00 00 00  |................|
   000000d0
   root@imx95evk:~# sha256sum /sys/bus/spi/devices/spi1.0/spi-nor/sfdp
   3848f0bd2436d7ca1373cee33f90e09d6479d0f4dc4bfd19f6a082d9e0039495  /sys/bus/spi/devices/spi1.0/spi-nor/sfdp
3) root@imx95evk:~# cat /sys/kernel/debug/spi-nor/spi1.0/capabilities
   Supported read modes by the flash
    1S-1S-1S
     opcode        0x13
     mode cycles   0
     dummy cycles  0
    1S-1S-8S
     opcode        0x7c
     mode cycles   1
     dummy cycles  7
    1S-8S-8S
     opcode        0xcc
     mode cycles   1
     dummy cycles  15
    8D-8D-8D
     opcode        0xfd
     mode cycles   0
     dummy cycles  20

   Supported page program modes by the flash
    1S-1S-1S
     opcode        0x12
    8D-8D-8D
     opcode        0x12

   root@imx95evk:~# cat /sys/kernel/debug/spi-nor/spi1.0/params
   name            mt35xu01gbba
   id              2c 5b 1b 10 41 00
   size            128 MiB
   write size      1
   page size       256
   address nbytes  4
   flags           4B_OPCODES | HAS_4BAIT | HAS_LOCK | IO_MODE_EN_VOLATILE | SOFT_RESET

   opcodes
    read           0xfd
      dummy cycles  20
    erase          0xdc
    program        0x12
    8D extension   repeat

   protocols
    read           8D-8D-8D
    write          8D-8D-8D
    register       8D-8D-8D

   erase commands
     21 (4.00 KiB) [1]
     5c (32.0 KiB) [2]
     dc (128 KiB) [3]
     c4 (128 MiB)

   sector map
     region (in hex)   | erase mask | overlaid
     ------------------+------------+----------
     00000000-07ffffff |     [   3] | no
4) root@imx95evk:~# dd if=/dev/urandom of=./spi_test bs=1M count=2
   2+0 records in
   2+0 records out
   2097152 bytes (2.1 MB, 2.0 MiB) copied, 0.0207974 s, 101 MB/s
   root@imx95evk:~# mtd_debug erase /dev/mtd0 0 2097152
   Erased 2097152 bytes from address 0x00000000 in flash
   root@imx95evk:~# mtd_debug read /dev/mtd0 0 2097152 spi_read
   Copied 2097152 bytes from address 0x00000000 in flash to spi_read
   root@imx95evk:~# hexdump spi_read
   0000000 ffff ffff ffff ffff ffff ffff ffff ffff
   *
   0200000
   root@imx95evk:~# sha256sum spi_read
   4bda3a28f4ffe603c0ec1258c0034d65a1a0d35ab7bd523a834608adabf03cc5  spi_read
   root@imx95evk:~# mtd_debug write /dev/mtd0 0 2097152 spi_test
   Copied 2097152 bytes from spi_test to address 0x00000000 in flash
   root@imx95evk:~# mtd_debug read /dev/mtd0 0 2097152 spi_read
   Copied 2097152 bytes from address 0x00000000 in flash to spi_read
   root@imx95evk:~# sha256sum spi*
   57300768c1271d4588b850dcbf4e1400f287f09b2d515eda610890456695b205  spi_read
   57300768c1271d4588b850dcbf4e1400f287f09b2d515eda610890456695b205  spi_test
   root@imx95evk:~# mtd_debug erase /dev/mtd0 0 2097152
   Erased 2097152 bytes from address 0x00000000 in flash
   root@imx95evk:~# mtd_debug read /dev/mtd0 0 2097152 spi_read
   Copied 2097152 bytes from address 0x00000000 in flash to spi_read
   root@imx95evk:~# sha256sum spi*
   4bda3a28f4ffe603c0ec1258c0034d65a1a0d35ab7bd523a834608adabf03cc5  spi_read
   57300768c1271d4588b850dcbf4e1400f287f09b2d515eda610890456695b205  spi_test
   root@imx95evk:~# mtd_debug info /dev/mtd0
   mtd.type = MTD_NORFLASH
   mtd.flags = MTD_CAP_NORFLASH
   mtd.size = 134217728 (128M)
   mtd.erasesize = 131072 (128K)
   mtd.writesize = 1
   mtd.oobsize = 0
   regions = 0
   root@imx95evk:~# flash_erase /dev/mtd0 0 0
   Erasing 131072 Kibyte @ 0 -- 100 % complete
   root@imx95evk:~# mtd_debug read /dev/mtd0 0 2097152 spi_read
   Copied 2097152 bytes from address 0x00000000 in flash to spi_read
   root@imx95evk:~# hexdump spi_read
   0000000 ffff ffff ffff ffff ffff ffff ffff ffff
   *
   0200000
---
 drivers/mtd/spi-nor/micron-st.c | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/drivers/mtd/spi-nor/micron-st.c b/drivers/mtd/spi-nor/micron-st.c
index 89cd146095584ddebdd258a186f6398b420e5800..f724313f4dd3720908968c670e8d3d58f41c099c 100644
--- a/drivers/mtd/spi-nor/micron-st.c
+++ b/drivers/mtd/spi-nor/micron-st.c
@@ -208,6 +208,12 @@ static const struct spi_nor_fixups mt35xu512aba_fixups = {
 	.late_init = micron_st_nor_one_die_late_init,
 };
 
+static const struct spi_nor_fixups mt35xu01gbba_fixups = {
+	.default_init = mt35xu512aba_default_init,
+	.post_sfdp = mt35xu512aba_post_sfdp_fixup,
+	.late_init = micron_st_nor_two_die_late_init,
+};
+
 static const struct flash_info micron_nor_parts[] = {
 	{
 		.id = SNOR_ID(0x2c, 0x5b, 0x1a),
@@ -219,6 +225,16 @@ static const struct flash_info micron_nor_parts[] = {
 		.mfr_flags = USE_FSR,
 		.fixup_flags = SPI_NOR_4B_OPCODES | SPI_NOR_IO_MODE_EN_VOLATILE,
 		.fixups = &mt35xu512aba_fixups,
+	}, {
+		.id = SNOR_ID(0x2c, 0x5b, 0x1b),
+		.name = "mt35xu01gbba",
+		.sector_size = SZ_128K,
+		.size = SZ_128M,
+		.no_sfdp_flags = SECT_4K | SPI_NOR_OCTAL_READ |
+				 SPI_NOR_OCTAL_DTR_READ | SPI_NOR_OCTAL_DTR_PP,
+		.mfr_flags = USE_FSR,
+		.fixup_flags = SPI_NOR_4B_OPCODES | SPI_NOR_IO_MODE_EN_VOLATILE,
+		.fixups = &mt35xu01gbba_fixups,
 	}, {
 		.id = SNOR_ID(0x2c, 0x5b, 0x1c),
 		.name = "mt35xu02g",

-- 
2.34.1


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

* [PATCH 4/4] mtd: spi-nor: micron-st: enable 8D-8D-8D mode and die erase for mt35xu02gcba
  2025-11-10  4:02 [PATCH 0/4] mtd: spi-nor: micron-st: add die erase for micron spi nor chip Haibo Chen
                   ` (2 preceding siblings ...)
  2025-11-10  4:02 ` [PATCH 3/4] mtd: spi-nor: micron-st: add mt35xu01gbba support Haibo Chen
@ 2025-11-10  4:02 ` Haibo Chen
  2025-11-10  6:45   ` Tudor Ambarus
  3 siblings, 1 reply; 15+ messages in thread
From: Haibo Chen @ 2025-11-10  4:02 UTC (permalink / raw)
  To: Tudor Ambarus, Pratyush Yadav, Michael Walle, Miquel Raynal,
	Richard Weinberger, Vignesh Raghavendra
  Cc: linux-mtd, linux-kernel, Haibo Chen, imx

mt35xu02gcba is similar with mt35xu01gbba and mt35xu512aba, but with
four dies inside. And it also support 8D-8D-8D mode, but SFDP lack
SNOR_F_IO_MODE_EN_VOLATILE, so add this fixup flags here.

Link: https://datasheet.octopart.com/MT35XU02GCBA1G12-0AAT-Micron-datasheet-138896808.pdf
Signed-off-by: Haibo Chen <haibo.chen@nxp.com>
---
 drivers/mtd/spi-nor/micron-st.c | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/drivers/mtd/spi-nor/micron-st.c b/drivers/mtd/spi-nor/micron-st.c
index f724313f4dd3720908968c670e8d3d58f41c099c..b36174436b7aa0f7768dbe48e4ad4927c08a3d6d 100644
--- a/drivers/mtd/spi-nor/micron-st.c
+++ b/drivers/mtd/spi-nor/micron-st.c
@@ -214,6 +214,12 @@ static const struct spi_nor_fixups mt35xu01gbba_fixups = {
 	.late_init = micron_st_nor_two_die_late_init,
 };
 
+static const struct spi_nor_fixups mt35xu02gcba_fixups = {
+	.default_init = mt35xu512aba_default_init,
+	.post_sfdp = mt35xu512aba_post_sfdp_fixup,
+	.late_init = micron_st_nor_four_die_late_init,
+};
+
 static const struct flash_info micron_nor_parts[] = {
 	{
 		.id = SNOR_ID(0x2c, 0x5b, 0x1a),
@@ -237,12 +243,13 @@ static const struct flash_info micron_nor_parts[] = {
 		.fixups = &mt35xu01gbba_fixups,
 	}, {
 		.id = SNOR_ID(0x2c, 0x5b, 0x1c),
-		.name = "mt35xu02g",
+		.name = "mt35xu02gcba",
 		.sector_size = SZ_128K,
 		.size = SZ_256M,
 		.no_sfdp_flags = SECT_4K | SPI_NOR_OCTAL_READ,
 		.mfr_flags = USE_FSR,
-		.fixup_flags = SPI_NOR_4B_OPCODES,
+		.fixup_flags = SPI_NOR_4B_OPCODES | SPI_NOR_IO_MODE_EN_VOLATILE,
+		.fixups = &mt35xu02gcba_fixups,
 	},
 };
 

-- 
2.34.1


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

* Re: [PATCH 1/4] mtd: spi-nor: micron-st: rename the die_late_init functions
  2025-11-10  4:02 ` [PATCH 1/4] mtd: spi-nor: micron-st: rename the die_late_init functions Haibo Chen
@ 2025-11-10  6:32   ` Tudor Ambarus
  0 siblings, 0 replies; 15+ messages in thread
From: Tudor Ambarus @ 2025-11-10  6:32 UTC (permalink / raw)
  To: Haibo Chen, Pratyush Yadav, Michael Walle, Miquel Raynal,
	Richard Weinberger, Vignesh Raghavendra
  Cc: linux-mtd, linux-kernel, imx



On 11/10/25 6:02 AM, Haibo Chen wrote:
> st_nor_two/four_die_late_init() also suit for micron chips, so
> rename to micron_st_nor_two/four_die_late_init().
> 
> Signed-off-by: Haibo Chen <haibo.chen@nxp.com>
> ---
>  drivers/mtd/spi-nor/micron-st.c | 70 ++++++++++++++++++++---------------------
>  1 file changed, 35 insertions(+), 35 deletions(-)
> 
> diff --git a/drivers/mtd/spi-nor/micron-st.c b/drivers/mtd/spi-nor/micron-st.c
> index 187239ccd549510c6e9a6eacf4ae41158287e077..92eb14ca76c57f29ece1edb3fe652c56d1c2888f 100644
> --- a/drivers/mtd/spi-nor/micron-st.c
> +++ b/drivers/mtd/spi-nor/micron-st.c
> @@ -127,6 +127,38 @@ static int micron_st_nor_set_octal_dtr(struct spi_nor *nor, bool enable)
>  			micron_st_nor_octal_dtr_dis(nor);
>  }
>  
> +static int micron_st_nor_four_die_late_init(struct spi_nor *nor)
> +{
> +	struct spi_nor_flash_parameter *params = nor->params;
> +
> +	params->die_erase_opcode = SPINOR_OP_MT_DIE_ERASE;
> +	params->n_dice = 4;
> +
> +	/*
> +	 * Unfortunately the die erase opcode does not have a 4-byte opcode
> +	 * correspondent for these flashes. The SFDP 4BAIT table fails to
> +	 * consider the die erase too. We're forced to enter in the 4 byte
> +	 * address mode in order to benefit of the die erase.
> +	 */
> +	return spi_nor_set_4byte_addr_mode(nor, true);
> +}
> +
> +static int micron_st_nor_two_die_late_init(struct spi_nor *nor)
> +{
> +	struct spi_nor_flash_parameter *params = nor->params;
> +
> +	params->die_erase_opcode = SPINOR_OP_MT_DIE_ERASE;
> +	params->n_dice = 2;
> +
> +	/*
> +	 * Unfortunately the die erase opcode does not have a 4-byte opcode
> +	 * correspondent for these flashes. The SFDP 4BAIT table fails to
> +	 * consider the die erase too. We're forced to enter in the 4 byte
> +	 * address mode in order to benefit of the die erase.
> +	 */
> +	return spi_nor_set_4byte_addr_mode(nor, true);
> +}

I see you also moved the methods a bit up, maybe to have all micron_st methods
in one place. Specify this in the commit message to spare reviewers of checking
bit-to-bit exact move.

With that:
Reviewed-by: Tudor Ambarus <tudor.ambarus@linaro.org>

> +
>  static void mt35xu512aba_default_init(struct spi_nor *nor)
>  {
>  	nor->params->set_octal_dtr = micron_st_nor_set_octal_dtr;
> @@ -193,48 +225,16 @@ static const struct spi_nor_fixups mt25qu512a_fixups = {
>  	.post_bfpt = mt25qu512a_post_bfpt_fixup,
>  };
>  
> -static int st_nor_four_die_late_init(struct spi_nor *nor)
> -{
> -	struct spi_nor_flash_parameter *params = nor->params;
> -
> -	params->die_erase_opcode = SPINOR_OP_MT_DIE_ERASE;
> -	params->n_dice = 4;
> -
> -	/*
> -	 * Unfortunately the die erase opcode does not have a 4-byte opcode
> -	 * correspondent for these flashes. The SFDP 4BAIT table fails to
> -	 * consider the die erase too. We're forced to enter in the 4 byte
> -	 * address mode in order to benefit of the die erase.
> -	 */
> -	return spi_nor_set_4byte_addr_mode(nor, true);
> -}
> -
> -static int st_nor_two_die_late_init(struct spi_nor *nor)
> -{
> -	struct spi_nor_flash_parameter *params = nor->params;
> -
> -	params->die_erase_opcode = SPINOR_OP_MT_DIE_ERASE;
> -	params->n_dice = 2;
> -
> -	/*
> -	 * Unfortunately the die erase opcode does not have a 4-byte opcode
> -	 * correspondent for these flashes. The SFDP 4BAIT table fails to
> -	 * consider the die erase too. We're forced to enter in the 4 byte
> -	 * address mode in order to benefit of the die erase.
> -	 */
> -	return spi_nor_set_4byte_addr_mode(nor, true);
> -}
> -
>  static const struct spi_nor_fixups n25q00_fixups = {
> -	.late_init = st_nor_four_die_late_init,
> +	.late_init = micron_st_nor_four_die_late_init,
>  };
>  
>  static const struct spi_nor_fixups mt25q01_fixups = {
> -	.late_init = st_nor_two_die_late_init,
> +	.late_init = micron_st_nor_two_die_late_init,
>  };
>  
>  static const struct spi_nor_fixups mt25q02_fixups = {
> -	.late_init = st_nor_four_die_late_init,
> +	.late_init = micron_st_nor_four_die_late_init,
>  };
>  
>  static const struct flash_info st_nor_parts[] = {
> 

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

* Re: [PATCH 2/4] mtd: spi-nor: micron-st: add die erase for mt35xu512aba
  2025-11-10  4:02 ` [PATCH 2/4] mtd: spi-nor: micron-st: add die erase for mt35xu512aba Haibo Chen
@ 2025-11-10  6:38   ` Tudor Ambarus
  2025-11-11  7:36     ` Bough Chen
  0 siblings, 1 reply; 15+ messages in thread
From: Tudor Ambarus @ 2025-11-10  6:38 UTC (permalink / raw)
  To: Haibo Chen, Pratyush Yadav, Michael Walle, Miquel Raynal,
	Richard Weinberger, Vignesh Raghavendra
  Cc: linux-mtd, linux-kernel, imx



On 11/10/25 6:02 AM, Haibo Chen wrote:
> mt35xu512aba do not support chip erase command, and it contains one
> die, and only support die erase.

does this need a fixes tag then? With that:
Reviewed-by: Tudor Ambarus <tudor.ambarus@linaro.org>> 
> Unfortunately the die erase opcode does not have a 4-byte opcode,
> here forced to enter in the 4 byte address mode in order to benefit
> of the die erase.
> 
> Link: https://datasheet.octopart.com/MT35XU02GCBA1G12-0AAT-Micron-datasheet-138896808.pdf
> Signed-off-by: Haibo Chen <haibo.chen@nxp.com>
> ---

Also, would you please help us with SFDP dumps, as you did in the next patches?
It helps ups keep a database and update flashes to get rid of the non SFDP data.

Thanks!

>  drivers/mtd/spi-nor/micron-st.c | 17 +++++++++++++++++
>  1 file changed, 17 insertions(+)
> 
> diff --git a/drivers/mtd/spi-nor/micron-st.c b/drivers/mtd/spi-nor/micron-st.c
> index 92eb14ca76c57f29ece1edb3fe652c56d1c2888f..89cd146095584ddebdd258a186f6398b420e5800 100644
> --- a/drivers/mtd/spi-nor/micron-st.c
> +++ b/drivers/mtd/spi-nor/micron-st.c
> @@ -159,6 +159,22 @@ static int micron_st_nor_two_die_late_init(struct spi_nor *nor)
>  	return spi_nor_set_4byte_addr_mode(nor, true);
>  }
>  
> +static int micron_st_nor_one_die_late_init(struct spi_nor *nor)
> +{
> +	struct spi_nor_flash_parameter *params = nor->params;
> +
> +	params->die_erase_opcode = SPINOR_OP_MT_DIE_ERASE;
> +	params->n_dice = 1;
> +
> +	/*
> +	 * Unfortunately the die erase opcode does not have a 4-byte opcode
> +	 * correspondent for these flashes. The SFDP 4BAIT table fails to
> +	 * consider the die erase too. We're forced to enter in the 4 byte
> +	 * address mode in order to benefit of the die erase.
> +	 */
> +	return spi_nor_set_4byte_addr_mode(nor, true);
> +}
> +
>  static void mt35xu512aba_default_init(struct spi_nor *nor)
>  {
>  	nor->params->set_octal_dtr = micron_st_nor_set_octal_dtr;
> @@ -189,6 +205,7 @@ static int mt35xu512aba_post_sfdp_fixup(struct spi_nor *nor)
>  static const struct spi_nor_fixups mt35xu512aba_fixups = {
>  	.default_init = mt35xu512aba_default_init,
>  	.post_sfdp = mt35xu512aba_post_sfdp_fixup,
> +	.late_init = micron_st_nor_one_die_late_init,
>  };
>  
>  static const struct flash_info micron_nor_parts[] = {
> 


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

* Re: [PATCH 3/4] mtd: spi-nor: micron-st: add mt35xu01gbba support
  2025-11-10  4:02 ` [PATCH 3/4] mtd: spi-nor: micron-st: add mt35xu01gbba support Haibo Chen
@ 2025-11-10  6:42   ` Tudor Ambarus
  2025-11-11  7:54     ` Bough Chen
  0 siblings, 1 reply; 15+ messages in thread
From: Tudor Ambarus @ 2025-11-10  6:42 UTC (permalink / raw)
  To: Haibo Chen, Pratyush Yadav, Michael Walle, Miquel Raynal,
	Richard Weinberger, Vignesh Raghavendra
  Cc: linux-mtd, linux-kernel, imx



On 11/10/25 6:02 AM, Haibo Chen wrote:
> mt35xu01gbba is similar with mt35xu512aba, but with two dies.
> SFDP contain the wrong size, so define the size dierctly in
> the flash info. And it also support 8D-8D-8D mode, but SFDP
> lack SNOR_F_IO_MODE_EN_VOLATILE, so add this fixup flags here.
> 
> Link: https://datasheet.octopart.com/MT35XU02GCBA1G12-0AAT-Micron-datasheet-138896808.pdf
> Signed-off-by: Haibo Chen <haibo.chen@nxp.com>
> 
> ---
> 1) This mt35xu01gbba is populated on the imx95-19x19-evk board, was
>    tested at 200MHz using nxp,imx95-fspi SPI controller.
> 2) root@imx95evk:~# cat /sys/bus/spi/devices/spi1.0/spi-nor/partname
>    mt35xu01gbba
>    root@imx95evk:~# cat /sys/bus/spi/devices/spi1.0/spi-nor/jedec_id
>    2c5b1b
>    root@imx95evk:~# cat /sys/bus/spi/devices/spi1.0/spi-nor/manufacturer
>    micron
>    root@imx95evk:~# hexdump -Cv /sys/bus/spi/devices/spi1.0/spi-nor/sfdp
>    00000000  53 46 44 50 0a 01 03 ff  00 08 01 17 30 00 00 ff  |SFDP........0...|
>    00000010  84 00 01 02 90 00 00 ff  05 01 01 06 a0 00 00 ff  |................|
>    00000020  0a 00 01 08 b0 00 00 ff  ff ff ff ff ff ff ff ff  |................|
>    00000030  e5 20 8a ff ff ff ff 3f  00 00 00 00 00 00 00 00  |. .....?........|
>    00000040  ee ff ff ff ff ff 00 00  ff ff 00 00 0c 20 11 d8  |............. ..|
>    00000050  0f 52 00 00 39 61 99 00  87 8e 03 d3 ac a1 27 3d  |.R..9a........'=|
>    00000060  7a 75 7a 75 fb bd d5 5c  00 00 70 ff 81 50 f8 a1  |zuzu...\..p..P..|
>    00000070  2f cb 27 8b 00 00 04 01  00 06 01 00 ff ff ff 8e  |/.'.............|
>    00000080  00 00 00 00 00 00 00 00  00 00 00 00 ff ff ff ff  |................|
>    00000090  43 0e ff ff 21 dc 5c ff  ff ff ff ff ff ff ff ff  |C...!.\.........|
>    000000a0  00 0b 80 9e b1 81 b5 85  00 f0 ff 9f 00 0a 00 00  |................|
>    000000b0  00 0a 1a 88 10 00 00 00  ff ff ff ff ff ff ff ff  |................|
>    000000c0  00 00 06 01 00 00 00 00  14 01 81 03 00 00 00 00  |................|
>    000000d0

you have SFDP here

cut

> +	}, {
> +		.id = SNOR_ID(0x2c, 0x5b, 0x1b),
> +		.name = "mt35xu01gbba",

drop the name field and add it as a comment. See recent flash additions commits.> +		.sector_size = SZ_128K,
> +		.size = SZ_128M,

drop these, SFDP shall handle them.

> +		.no_sfdp_flags = SECT_4K | SPI_NOR_OCTAL_READ |
> +				 SPI_NOR_OCTAL_DTR_READ | SPI_NOR_OCTAL_DTR_PP,

Drop this line, let SFDP handle it

> +		.mfr_flags = USE_FSR,
> +		.fixup_flags = SPI_NOR_4B_OPCODES | SPI_NOR_IO_MODE_EN_VOLATILE,

can we drop SPI_NOR_4B_OPCODES?

> +		.fixups = &mt35xu01gbba_fixups,
>  	}, {
>  		.id = SNOR_ID(0x2c, 0x5b, 0x1c),
>  		.name = "mt35xu02g",
> 


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

* Re: [PATCH 4/4] mtd: spi-nor: micron-st: enable 8D-8D-8D mode and die erase for mt35xu02gcba
  2025-11-10  4:02 ` [PATCH 4/4] mtd: spi-nor: micron-st: enable 8D-8D-8D mode and die erase for mt35xu02gcba Haibo Chen
@ 2025-11-10  6:45   ` Tudor Ambarus
  2025-11-11  8:00     ` Bough Chen
  0 siblings, 1 reply; 15+ messages in thread
From: Tudor Ambarus @ 2025-11-10  6:45 UTC (permalink / raw)
  To: Haibo Chen, Pratyush Yadav, Michael Walle, Miquel Raynal,
	Richard Weinberger, Vignesh Raghavendra
  Cc: linux-mtd, linux-kernel, imx



On 11/10/25 6:02 AM, Haibo Chen wrote:
> mt35xu02gcba is similar with mt35xu01gbba and mt35xu512aba, but with
> four dies inside. And it also support 8D-8D-8D mode, but SFDP lack
> SNOR_F_IO_MODE_EN_VOLATILE, so add this fixup flags here.
> 
> Link: https://datasheet.octopart.com/MT35XU02GCBA1G12-0AAT-Micron-datasheet-138896808.pdf
> Signed-off-by: Haibo Chen <haibo.chen@nxp.com>
> ---

please dump the SFDP data for every flash that you touch, it helps
us with the sfdp database

>  drivers/mtd/spi-nor/micron-st.c | 11 +++++++++--
>  1 file changed, 9 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/mtd/spi-nor/micron-st.c b/drivers/mtd/spi-nor/micron-st.c
> index f724313f4dd3720908968c670e8d3d58f41c099c..b36174436b7aa0f7768dbe48e4ad4927c08a3d6d 100644
> --- a/drivers/mtd/spi-nor/micron-st.c
> +++ b/drivers/mtd/spi-nor/micron-st.c
> @@ -214,6 +214,12 @@ static const struct spi_nor_fixups mt35xu01gbba_fixups = {
>  	.late_init = micron_st_nor_two_die_late_init,
>  };
>  
> +static const struct spi_nor_fixups mt35xu02gcba_fixups = {
> +	.default_init = mt35xu512aba_default_init,
> +	.post_sfdp = mt35xu512aba_post_sfdp_fixup,
> +	.late_init = micron_st_nor_four_die_late_init,
> +};
> +
>  static const struct flash_info micron_nor_parts[] = {
>  	{
>  		.id = SNOR_ID(0x2c, 0x5b, 0x1a),
> @@ -237,12 +243,13 @@ static const struct flash_info micron_nor_parts[] = {
>  		.fixups = &mt35xu01gbba_fixups,
>  	}, {
>  		.id = SNOR_ID(0x2c, 0x5b, 0x1c),
> -		.name = "mt35xu02g",
> +		.name = "mt35xu02gcba",

we don't care about the name, drop the name and add it as a comment.

>  		.sector_size = SZ_128K,
>  		.size = SZ_256M,
>  		.no_sfdp_flags = SECT_4K | SPI_NOR_OCTAL_READ,
>  		.mfr_flags = USE_FSR,
> -		.fixup_flags = SPI_NOR_4B_OPCODES,
> +		.fixup_flags = SPI_NOR_4B_OPCODES | SPI_NOR_IO_MODE_EN_VOLATILE,

Whenever you can, remove the non-sfdp static data and rely on the SFDP
driver to handle it. Can you please drop sector_size, no_sfdp_flags and
SPI_NOR_4B_OPCODES?

Then do the testing and sysfs/debugfs dumps to prove the flash works okay.
Thanks!
ta> +		.fixups = &mt35xu02gcba_fixups,
>  	},
>  };
>  
> 


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

* RE: [PATCH 2/4] mtd: spi-nor: micron-st: add die erase for mt35xu512aba
  2025-11-10  6:38   ` Tudor Ambarus
@ 2025-11-11  7:36     ` Bough Chen
  0 siblings, 0 replies; 15+ messages in thread
From: Bough Chen @ 2025-11-11  7:36 UTC (permalink / raw)
  To: Tudor Ambarus, Pratyush Yadav, Michael Walle, Miquel Raynal,
	Richard Weinberger, Vignesh Raghavendra
  Cc: linux-mtd@lists.infradead.org, linux-kernel@vger.kernel.org,
	imx@lists.linux.dev

> -----Original Message-----
> From: Tudor Ambarus <tudor.ambarus@linaro.org>
> Sent: 2025年11月10日 14:39
> To: Bough Chen <haibo.chen@nxp.com>; Pratyush Yadav
> <pratyush@kernel.org>; Michael Walle <mwalle@kernel.org>; Miquel Raynal
> <miquel.raynal@bootlin.com>; Richard Weinberger <richard@nod.at>; Vignesh
> Raghavendra <vigneshr@ti.com>
> Cc: linux-mtd@lists.infradead.org; linux-kernel@vger.kernel.org;
> imx@lists.linux.dev
> Subject: Re: [PATCH 2/4] mtd: spi-nor: micron-st: add die erase for
> mt35xu512aba
> 
> 
> 
> On 11/10/25 6:02 AM, Haibo Chen wrote:
> > mt35xu512aba do not support chip erase command, and it contains one
> > die, and only support die erase.
> 
> does this need a fixes tag then? With that:
> Reviewed-by: Tudor Ambarus <tudor.ambarus@linaro.org>>
> > Unfortunately the die erase opcode does not have a 4-byte opcode, here
> > forced to enter in the 4 byte address mode in order to benefit of the
> > die erase.
> >
> > Link:
> > https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fdata
> >
> sheet.octopart.com%2FMT35XU02GCBA1G12-0AAT-Micron-datasheet-138896
> 808.
> >
> pdf&data=05%7C02%7Chaibo.chen%40nxp.com%7C2632ec31f3424748f8a308d
> e2023
> >
> c973%7C686ea1d3bc2b4c6fa92cd99c5c301635%7C0%7C1%7C6389835352669
> 00290%7
> >
> CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAw
> MCIsIlA
> >
> iOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C0%7C%7C%7C&sdata=H
> 0Boi
> > thmOc0vuK6MNfCYHCgS8fPONWqzPi%2Fi5gFlcuA%3D&reserved=0
> > Signed-off-by: Haibo Chen <haibo.chen@nxp.com>
> > ---
> 
> Also, would you please help us with SFDP dumps, as you did in the next patches?
> It helps ups keep a database and update flashes to get rid of the non SFDP data.

Okay, will add in next version.

Regards
Haibo Chen
> 
> Thanks!
> 
> >  drivers/mtd/spi-nor/micron-st.c | 17 +++++++++++++++++
> >  1 file changed, 17 insertions(+)
> >
> > diff --git a/drivers/mtd/spi-nor/micron-st.c
> > b/drivers/mtd/spi-nor/micron-st.c index
> >
> 92eb14ca76c57f29ece1edb3fe652c56d1c2888f..89cd146095584ddebdd258a18
> 6f6
> > 398b420e5800 100644
> > --- a/drivers/mtd/spi-nor/micron-st.c
> > +++ b/drivers/mtd/spi-nor/micron-st.c
> > @@ -159,6 +159,22 @@ static int micron_st_nor_two_die_late_init(struct
> spi_nor *nor)
> >  	return spi_nor_set_4byte_addr_mode(nor, true);  }
> >
> > +static int micron_st_nor_one_die_late_init(struct spi_nor *nor) {
> > +	struct spi_nor_flash_parameter *params = nor->params;
> > +
> > +	params->die_erase_opcode = SPINOR_OP_MT_DIE_ERASE;
> > +	params->n_dice = 1;
> > +
> > +	/*
> > +	 * Unfortunately the die erase opcode does not have a 4-byte opcode
> > +	 * correspondent for these flashes. The SFDP 4BAIT table fails to
> > +	 * consider the die erase too. We're forced to enter in the 4 byte
> > +	 * address mode in order to benefit of the die erase.
> > +	 */
> > +	return spi_nor_set_4byte_addr_mode(nor, true); }
> > +
> >  static void mt35xu512aba_default_init(struct spi_nor *nor)  {
> >  	nor->params->set_octal_dtr = micron_st_nor_set_octal_dtr; @@ -189,6
> > +205,7 @@ static int mt35xu512aba_post_sfdp_fixup(struct spi_nor *nor)
> > static const struct spi_nor_fixups mt35xu512aba_fixups = {
> >  	.default_init = mt35xu512aba_default_init,
> >  	.post_sfdp = mt35xu512aba_post_sfdp_fixup,
> > +	.late_init = micron_st_nor_one_die_late_init,
> >  };
> >
> >  static const struct flash_info micron_nor_parts[] = {
> >


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

* RE: [PATCH 3/4] mtd: spi-nor: micron-st: add mt35xu01gbba support
  2025-11-10  6:42   ` Tudor Ambarus
@ 2025-11-11  7:54     ` Bough Chen
  2025-11-11  8:23       ` Tudor Ambarus
  0 siblings, 1 reply; 15+ messages in thread
From: Bough Chen @ 2025-11-11  7:54 UTC (permalink / raw)
  To: Tudor Ambarus, Pratyush Yadav, Michael Walle, Miquel Raynal,
	Richard Weinberger, Vignesh Raghavendra
  Cc: linux-mtd@lists.infradead.org, linux-kernel@vger.kernel.org,
	imx@lists.linux.dev

> -----Original Message-----
> From: Tudor Ambarus <tudor.ambarus@linaro.org>
> Sent: 2025年11月10日 14:42
> To: Bough Chen <haibo.chen@nxp.com>; Pratyush Yadav
> <pratyush@kernel.org>; Michael Walle <mwalle@kernel.org>; Miquel Raynal
> <miquel.raynal@bootlin.com>; Richard Weinberger <richard@nod.at>; Vignesh
> Raghavendra <vigneshr@ti.com>
> Cc: linux-mtd@lists.infradead.org; linux-kernel@vger.kernel.org;
> imx@lists.linux.dev
> Subject: Re: [PATCH 3/4] mtd: spi-nor: micron-st: add mt35xu01gbba support
> 
> 
> 
> On 11/10/25 6:02 AM, Haibo Chen wrote:
> > mt35xu01gbba is similar with mt35xu512aba, but with two dies.
> > SFDP contain the wrong size, so define the size dierctly in the flash
> > info. And it also support 8D-8D-8D mode, but SFDP lack
> > SNOR_F_IO_MODE_EN_VOLATILE, so add this fixup flags here.
> >
> > Link:
> > https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fdata
> >
> sheet.octopart.com%2FMT35XU02GCBA1G12-0AAT-Micron-datasheet-138896
> 808.
> >
> pdf&data=05%7C02%7Chaibo.chen%40nxp.com%7Cca28ca59a1734e70621908
> de2024
> >
> 464e%7C686ea1d3bc2b4c6fa92cd99c5c301635%7C0%7C1%7C6389835373320
> 21937%7
> >
> CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAw
> MCIsIlA
> >
> iOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C0%7C%7C%7C&sdata=6j
> nlg
> > lV4H5w%2BIb3Ua3aNOClElU0MfICnqWYvjWnRCEA%3D&reserved=0
> > Signed-off-by: Haibo Chen <haibo.chen@nxp.com>
> >
> > ---
> > 1) This mt35xu01gbba is populated on the imx95-19x19-evk board, was
> >    tested at 200MHz using nxp,imx95-fspi SPI controller.
> > 2) root@imx95evk:~# cat /sys/bus/spi/devices/spi1.0/spi-nor/partname
> >    mt35xu01gbba
> >    root@imx95evk:~# cat /sys/bus/spi/devices/spi1.0/spi-nor/jedec_id
> >    2c5b1b
> >    root@imx95evk:~# cat /sys/bus/spi/devices/spi1.0/spi-nor/manufacturer
> >    micron
> >    root@imx95evk:~# hexdump -Cv /sys/bus/spi/devices/spi1.0/spi-nor/sfdp
> >    00000000  53 46 44 50 0a 01 03 ff  00 08 01 17 30 00 00 ff
> |SFDP........0...|
> >    00000010  84 00 01 02 90 00 00 ff  05 01 01 06 a0 00 00 ff
> |................|
> >    00000020  0a 00 01 08 b0 00 00 ff  ff ff ff ff ff ff ff ff  |................|
> >    00000030  e5 20 8a ff ff ff ff 3f  00 00 00 00 00 00 00 00  |. .....?........|
> >    00000040  ee ff ff ff ff ff 00 00  ff ff 00 00 0c 20 11 d8  |............. ..|
> >    00000050  0f 52 00 00 39 61 99 00  87 8e 03 d3 ac a1 27 3d
> |.R..9a........'=|
> >    00000060  7a 75 7a 75 fb bd d5 5c  00 00 70 ff 81 50 f8 a1
> |zuzu...\..p..P..|
> >    00000070  2f cb 27 8b 00 00 04 01  00 06 01 00 ff ff ff 8e
> |/.'.............|
> >    00000080  00 00 00 00 00 00 00 00  00 00 00 00 ff ff ff ff
> |................|
> >    00000090  43 0e ff ff 21 dc 5c ff  ff ff ff ff ff ff ff ff  |C...!.\.........|
> >    000000a0  00 0b 80 9e b1 81 b5 85  00 f0 ff 9f 00 0a 00 00
> |................|
> >    000000b0  00 0a 1a 88 10 00 00 00  ff ff ff ff ff ff ff ff  |................|
> >    000000c0  00 00 06 01 00 00 00 00  14 01 81 03 00 00 00 00
> |................|
> >    000000d0
> 
> you have SFDP here
> 
> cut
> 
> > +	}, {
> > +		.id = SNOR_ID(0x2c, 0x5b, 0x1b),
> > +		.name = "mt35xu01gbba",
> 
> drop the name field and add it as a comment. See recent flash additions
> commits.> +		.sector_size = SZ_128K,
> > +		.size = SZ_128M,

I did consider to remove the size and other flags since SFDP can handle that, but if remove the .size here.
Micron spi-nor do not have a chance to execute

params->set_octal_dtr = micron_st_nor_set_octal_dtr;

because in micron-st, params->set_octal_dtr is defined in flash_info->fixups-> default_init.
And flash_info->fixups-> default_init can only be called in spi_nor_init_params_deprecated-> spi_nor_manufacturer_init_params
If no .size define in flash_info, spi_nor_needs_sfdp() will return true, no chance to call spi_nor_init_params_deprecated.

If need to remove the .size here, seems to move the params->set_octal_dtr to spi_nor_manufacturer-> fixups-> late_init or flash_info->fixups->late_init.

I notice macronix already did like that, I will add this change in the next version.

Regards
Haibo Chen
> 
> drop these, SFDP shall handle them.
> 
> > +		.no_sfdp_flags = SECT_4K | SPI_NOR_OCTAL_READ |
> > +				 SPI_NOR_OCTAL_DTR_READ | SPI_NOR_OCTAL_DTR_PP,
> 
> Drop this line, let SFDP handle it
> 
> > +		.mfr_flags = USE_FSR,
> > +		.fixup_flags = SPI_NOR_4B_OPCODES |
> SPI_NOR_IO_MODE_EN_VOLATILE,
> 
> can we drop SPI_NOR_4B_OPCODES?
> 
> > +		.fixups = &mt35xu01gbba_fixups,
> >  	}, {
> >  		.id = SNOR_ID(0x2c, 0x5b, 0x1c),
> >  		.name = "mt35xu02g",
> >


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

* RE: [PATCH 4/4] mtd: spi-nor: micron-st: enable 8D-8D-8D mode and die erase for mt35xu02gcba
  2025-11-10  6:45   ` Tudor Ambarus
@ 2025-11-11  8:00     ` Bough Chen
  2025-11-11  8:29       ` Tudor Ambarus
  0 siblings, 1 reply; 15+ messages in thread
From: Bough Chen @ 2025-11-11  8:00 UTC (permalink / raw)
  To: Tudor Ambarus, Pratyush Yadav, Michael Walle, Miquel Raynal,
	Richard Weinberger, Vignesh Raghavendra
  Cc: linux-mtd@lists.infradead.org, linux-kernel@vger.kernel.org,
	imx@lists.linux.dev

> -----Original Message-----
> From: Tudor Ambarus <tudor.ambarus@linaro.org>
> Sent: 2025年11月10日 14:46
> To: Bough Chen <haibo.chen@nxp.com>; Pratyush Yadav
> <pratyush@kernel.org>; Michael Walle <mwalle@kernel.org>; Miquel Raynal
> <miquel.raynal@bootlin.com>; Richard Weinberger <richard@nod.at>; Vignesh
> Raghavendra <vigneshr@ti.com>
> Cc: linux-mtd@lists.infradead.org; linux-kernel@vger.kernel.org;
> imx@lists.linux.dev
> Subject: Re: [PATCH 4/4] mtd: spi-nor: micron-st: enable 8D-8D-8D mode and die
> erase for mt35xu02gcba
> 
> 
> 
> On 11/10/25 6:02 AM, Haibo Chen wrote:
> > mt35xu02gcba is similar with mt35xu01gbba and mt35xu512aba, but with
> > four dies inside. And it also support 8D-8D-8D mode, but SFDP lack
> > SNOR_F_IO_MODE_EN_VOLATILE, so add this fixup flags here.
> >
> > Link:
> > https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fdata
> >
> sheet.octopart.com%2FMT35XU02GCBA1G12-0AAT-Micron-datasheet-138896
> 808.
> >
> pdf&data=05%7C02%7Chaibo.chen%40nxp.com%7Cc6a4b5f4f56f4ca716d208d
> e2024
> >
> d0a0%7C686ea1d3bc2b4c6fa92cd99c5c301635%7C0%7C1%7C6389835396808
> 11304%7
> >
> CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAw
> MCIsIlA
> >
> iOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C0%7C%7C%7C&sdata=6
> Dqhh
> > hlIzdxftTmQzmj%2BcomjZWxWOqpDWP5%2B4NUGCK0%3D&reserved=0
> > Signed-off-by: Haibo Chen <haibo.chen@nxp.com>
> > ---
> 
> please dump the SFDP data for every flash that you touch, it helps us with the
> sfdp database

Hi Tudor,

I do not have this mt35xu02gcba on hand, I only has mt35xu512aba and mt35xu01gbba.
I touch this chip because I notice these three chips share one datasheet, and seems only
has different number of dies.

So should I drop this patch?

Regards
Haibo Chen
> 
> >  drivers/mtd/spi-nor/micron-st.c | 11 +++++++++--
> >  1 file changed, 9 insertions(+), 2 deletions(-)
> >
> > diff --git a/drivers/mtd/spi-nor/micron-st.c
> > b/drivers/mtd/spi-nor/micron-st.c index
> >
> f724313f4dd3720908968c670e8d3d58f41c099c..b36174436b7aa0f7768dbe48e
> 4ad
> > 4927c08a3d6d 100644
> > --- a/drivers/mtd/spi-nor/micron-st.c
> > +++ b/drivers/mtd/spi-nor/micron-st.c
> > @@ -214,6 +214,12 @@ static const struct spi_nor_fixups
> mt35xu01gbba_fixups = {
> >  	.late_init = micron_st_nor_two_die_late_init,  };
> >
> > +static const struct spi_nor_fixups mt35xu02gcba_fixups = {
> > +	.default_init = mt35xu512aba_default_init,
> > +	.post_sfdp = mt35xu512aba_post_sfdp_fixup,
> > +	.late_init = micron_st_nor_four_die_late_init, };
> > +
> >  static const struct flash_info micron_nor_parts[] = {
> >  	{
> >  		.id = SNOR_ID(0x2c, 0x5b, 0x1a),
> > @@ -237,12 +243,13 @@ static const struct flash_info micron_nor_parts[] = {
> >  		.fixups = &mt35xu01gbba_fixups,
> >  	}, {
> >  		.id = SNOR_ID(0x2c, 0x5b, 0x1c),
> > -		.name = "mt35xu02g",
> > +		.name = "mt35xu02gcba",
> 
> we don't care about the name, drop the name and add it as a comment.
> 
> >  		.sector_size = SZ_128K,
> >  		.size = SZ_256M,
> >  		.no_sfdp_flags = SECT_4K | SPI_NOR_OCTAL_READ,
> >  		.mfr_flags = USE_FSR,
> > -		.fixup_flags = SPI_NOR_4B_OPCODES,
> > +		.fixup_flags = SPI_NOR_4B_OPCODES |
> SPI_NOR_IO_MODE_EN_VOLATILE,
> 
> Whenever you can, remove the non-sfdp static data and rely on the SFDP driver
> to handle it. Can you please drop sector_size, no_sfdp_flags and
> SPI_NOR_4B_OPCODES?
> 
> Then do the testing and sysfs/debugfs dumps to prove the flash works okay.
> Thanks!
> ta> +		.fixups = &mt35xu02gcba_fixups,
> >  	},
> >  };
> >
> >


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

* Re: [PATCH 3/4] mtd: spi-nor: micron-st: add mt35xu01gbba support
  2025-11-11  7:54     ` Bough Chen
@ 2025-11-11  8:23       ` Tudor Ambarus
  0 siblings, 0 replies; 15+ messages in thread
From: Tudor Ambarus @ 2025-11-11  8:23 UTC (permalink / raw)
  To: Bough Chen, Pratyush Yadav, Michael Walle, Miquel Raynal,
	Richard Weinberger, Vignesh Raghavendra
  Cc: linux-mtd@lists.infradead.org, linux-kernel@vger.kernel.org,
	imx@lists.linux.dev

did you use html format when replying? Use plaintext, please.

On 11/11/25 9:54 AM, Bough Chen wrote:
>>> +		.size = SZ_128M,
> I did consider to remove the size and other flags since SFDP can handle that, but if remove the .size here.
> Micron spi-nor do not have a chance to execute
> 
> params->set_octal_dtr = micron_st_nor_set_octal_dtr;
> 
> because in micron-st, params->set_octal_dtr is defined in flash_info->fixups-> default_init.
> And flash_info->fixups-> default_init can only be called in spi_nor_init_params_deprecated-> spi_nor_manufacturer_init_params
> If no .size define in flash_info, spi_nor_needs_sfdp() will return true, no chance to call spi_nor_init_params_deprecated.
> 
> If need to remove the .size here, seems to move the params->set_octal_dtr to spi_nor_manufacturer-> fixups-> late_init or flash_info->fixups->late_init.
> 
> I notice macronix already did like that, I will add this change in the next version.

Yes, move that to late_int(). We'd like to remove default_init()
if possible.

Cheers,
ta

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

* Re: [PATCH 4/4] mtd: spi-nor: micron-st: enable 8D-8D-8D mode and die erase for mt35xu02gcba
  2025-11-11  8:00     ` Bough Chen
@ 2025-11-11  8:29       ` Tudor Ambarus
  2025-11-11  8:33         ` Bough Chen
  0 siblings, 1 reply; 15+ messages in thread
From: Tudor Ambarus @ 2025-11-11  8:29 UTC (permalink / raw)
  To: Bough Chen, Pratyush Yadav, Michael Walle, Miquel Raynal,
	Richard Weinberger, Vignesh Raghavendra
  Cc: linux-mtd@lists.infradead.org, linux-kernel@vger.kernel.org,
	imx@lists.linux.dev



On 11/11/25 10:00 AM, Bough Chen wrote:
>> please dump the SFDP data for every flash that you touch, it helps us with the
>> sfdp database
> Hi Tudor,
> 
> I do not have this mt35xu02gcba on hand, I only has mt35xu512aba and mt35xu01gbba.
> I touch this chip because I notice these three chips share one datasheet, and seems only
> has different number of dies.
> 
> So should I drop this patch?

Ideally we don't change functionality for flashes if we can't test them.
If you feel this flash entry does not work okay, which seems it's the
case based on your previous patches, then just add a comment above this
flash entry and tell what should be changed. Then if someone cares and
have the flash, can do the changes and fix it as you suggest. Does this
sound like a reasonable compromise?

Cheers,
ta

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

* RE: [PATCH 4/4] mtd: spi-nor: micron-st: enable 8D-8D-8D mode and die erase for mt35xu02gcba
  2025-11-11  8:29       ` Tudor Ambarus
@ 2025-11-11  8:33         ` Bough Chen
  0 siblings, 0 replies; 15+ messages in thread
From: Bough Chen @ 2025-11-11  8:33 UTC (permalink / raw)
  To: Tudor Ambarus, Pratyush Yadav, Michael Walle, Miquel Raynal,
	Richard Weinberger, Vignesh Raghavendra
  Cc: linux-mtd@lists.infradead.org, linux-kernel@vger.kernel.org,
	imx@lists.linux.dev

> -----Original Message-----
> From: Tudor Ambarus <tudor.ambarus@linaro.org>
> Sent: 2025年11月11日 16:29
> To: Bough Chen <haibo.chen@nxp.com>; Pratyush Yadav
> <pratyush@kernel.org>; Michael Walle <mwalle@kernel.org>; Miquel Raynal
> <miquel.raynal@bootlin.com>; Richard Weinberger <richard@nod.at>; Vignesh
> Raghavendra <vigneshr@ti.com>
> Cc: linux-mtd@lists.infradead.org; linux-kernel@vger.kernel.org;
> imx@lists.linux.dev
> Subject: Re: [PATCH 4/4] mtd: spi-nor: micron-st: enable 8D-8D-8D mode and die
> erase for mt35xu02gcba
> 
> 
> 
> On 11/11/25 10:00 AM, Bough Chen wrote:
> >> please dump the SFDP data for every flash that you touch, it helps us
> >> with the sfdp database
> > Hi Tudor,
> >
> > I do not have this mt35xu02gcba on hand, I only has mt35xu512aba and
> mt35xu01gbba.
> > I touch this chip because I notice these three chips share one
> > datasheet, and seems only has different number of dies.
> >
> > So should I drop this patch?
> 
> Ideally we don't change functionality for flashes if we can't test them.
> If you feel this flash entry does not work okay, which seems it's the case based on
> your previous patches, then just add a comment above this flash entry and tell
> what should be changed. Then if someone cares and have the flash, can do the
> changes and fix it as you suggest. Does this sound like a reasonable compromise?

Okay, will add comment in next version.

Thanks for your quick reply.

Regards
Haibo Chen
> 
> Cheers,
> ta

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

end of thread, other threads:[~2025-11-11  8:33 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-11-10  4:02 [PATCH 0/4] mtd: spi-nor: micron-st: add die erase for micron spi nor chip Haibo Chen
2025-11-10  4:02 ` [PATCH 1/4] mtd: spi-nor: micron-st: rename the die_late_init functions Haibo Chen
2025-11-10  6:32   ` Tudor Ambarus
2025-11-10  4:02 ` [PATCH 2/4] mtd: spi-nor: micron-st: add die erase for mt35xu512aba Haibo Chen
2025-11-10  6:38   ` Tudor Ambarus
2025-11-11  7:36     ` Bough Chen
2025-11-10  4:02 ` [PATCH 3/4] mtd: spi-nor: micron-st: add mt35xu01gbba support Haibo Chen
2025-11-10  6:42   ` Tudor Ambarus
2025-11-11  7:54     ` Bough Chen
2025-11-11  8:23       ` Tudor Ambarus
2025-11-10  4:02 ` [PATCH 4/4] mtd: spi-nor: micron-st: enable 8D-8D-8D mode and die erase for mt35xu02gcba Haibo Chen
2025-11-10  6:45   ` Tudor Ambarus
2025-11-11  8:00     ` Bough Chen
2025-11-11  8:29       ` Tudor Ambarus
2025-11-11  8:33         ` Bough Chen

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).