]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
mtd: spi-nor: micron-st: Enable die erase support for MT35XU02GCBA
authorHaoyu Lu <hechushiguitu666@gmail.com>
Tue, 31 Mar 2026 09:53:51 +0000 (17:53 +0800)
committerPratyush Yadav (Google) <pratyush@kernel.org>
Tue, 31 Mar 2026 15:46:47 +0000 (15:46 +0000)
The MT35XU02GCBA flash device does not support chip erase according
to its datasheet, but supports die erase. The existing code had a TODO
comment noting that the SPI_NOR_IO_MODE_EN_VOLATILE flag probably needs
to be enabled and the driver implementation needs to be converted to
use die erase.

This patch enables the SPI_NOR_IO_MODE_EN_VOLATILE flag and adds the
mt35_two_die_fixups to the MT35XU02GCBA entry, which includes the
micron_st_nor_two_die_late_init() function that sets up die erase
support.

With these changes, the flash device can properly use die erase
operations instead of chip erase.

Signed-off-by: Haoyu Lu <hechushiguitu666@gmail.com>
Reviewed-by: Pratyush Yadav (Google) <pratyush@kernel.org>
[pratyush@kernel.org: drop the whole comment instead of just the TODO line]
Signed-off-by: Pratyush Yadav (Google) <pratyush@kernel.org>
drivers/mtd/spi-nor/micron-st.c

index b2b473501d0238e5d384915c645f397e3f33b1c8..c75b0a1cd5676161db5c719d2d1a9b3d75aed439 100644 (file)
@@ -195,7 +195,7 @@ static const struct spi_nor_fixups mt35xu512aba_fixups = {
        .post_sfdp = mt35xu512aba_post_sfdp_fixup,
 };
 
-static const struct spi_nor_fixups mt35xu01gbba_fixups = {
+static const struct spi_nor_fixups mt35_two_die_fixups = {
        .post_sfdp = mt35xu512aba_post_sfdp_fixup,
        .late_init = micron_st_nor_two_die_late_init,
 };
@@ -212,25 +212,16 @@ static const struct flash_info micron_nor_parts[] = {
                .id = SNOR_ID(0x2c, 0x5b, 0x1b),
                .mfr_flags = USE_FSR,
                .fixup_flags = SPI_NOR_IO_MODE_EN_VOLATILE,
-               .fixups = &mt35xu01gbba_fixups,
+               .fixups = &mt35_two_die_fixups,
        }, {
-               /*
-                * The MT35XU02GCBA flash device does not support chip erase,
-                * according to its datasheet. It supports die erase, which
-                * means the current driver implementation will likely need to
-                * be converted to use die erase. Furthermore, similar to the
-                * MT35XU01GBBA, the SPI_NOR_IO_MODE_EN_VOLATILE flag probably
-                * needs to be enabled.
-                *
-                * TODO: Fix these and test on real hardware.
-                */
                .id = SNOR_ID(0x2c, 0x5b, 0x1c),
                .name = "mt35xu02g",
                .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 = &mt35_two_die_fixups,
        },
 };