Add support for Micron/Numonyx/ST M25PX80
Also, refine status register prettyprinting and unlocking of all family
members and add OTP details.
Corresponding to flashrom svn r1690.
Signed-off-by: Nikolay Nikolaev <evrinoma@gmail.com>
Reviewed-by: Steven Zakulec <spzakulec@gmail.com>
Signed-off-by: Stefan Tauner <stefan.tauner@alumni.tuwien.ac.at>
Acked-by: Stefan Tauner <stefan.tauner@alumni.tuwien.ac.at>
diff --git a/flashchips.c b/flashchips.c
index 541ba7a..e8d8690 100644
--- a/flashchips.c
+++ b/flashchips.c
@@ -10149,6 +10149,38 @@
{
.vendor = "ST",
+ .name = "M25PX80",
+ .bustype = BUS_SPI,
+ .manufacture_id = ST_ID,
+ .model_id = ST_M25PX80,
+ .total_size = 1024,
+ .page_size = 256,
+ /* OTP: 64B total; read 0x4B, write 0x42 */
+ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP,
+ .tested = TEST_UNTESTED,
+ .probe = probe_spi_rdid,
+ .probe_timing = TIMING_ZERO,
+ .block_erasers = {
+ {
+ .eraseblocks = { { 4 * 1024, 256 } },
+ .block_erase = spi_block_erase_20,
+ }, {
+ .eraseblocks = { {64 * 1024, 16} },
+ .block_erase = spi_block_erase_d8,
+ }, {
+ .eraseblocks = { {1024 * 1024, 1} },
+ .block_erase = spi_block_erase_c7,
+ }
+ },
+ .printlock = spi_prettyprint_status_register_default_bp2, /* bit5: T/B */
+ .unlock = spi_disable_blockprotect_bp2_srwd, /* TODO: per 64kB sector lock registers */
+ .write = spi_chip_write_256,
+ .read = spi_chip_read,
+ .voltage = {2700, 3600},
+ },
+
+ {
+ .vendor = "ST",
.name = "M25PX16",
.bustype = BUS_SPI,
.manufacture_id = ST_ID,
@@ -10173,8 +10205,8 @@
.block_erase = spi_block_erase_c7,
}
},
- .printlock = spi_prettyprint_status_register_plain, /* TODO: improve */
- .unlock = spi_disable_blockprotect,
+ .printlock = spi_prettyprint_status_register_default_bp2, /* bit5: T/B */
+ .unlock = spi_disable_blockprotect_bp2_srwd, /* TODO: per 64kB sector lock registers */
.write = spi_chip_write_256,
.read = spi_chip_read,
},
@@ -10187,7 +10219,8 @@
.model_id = ST_M25PX32,
.total_size = 4096,
.page_size = 256,
- .feature_bits = FEATURE_WRSR_WREN,
+ /* OTP: 64B total; read 0x4B; write 0x42 */
+ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP,
.tested = TEST_OK_PRE,
.probe = probe_spi_rdid,
.probe_timing = TIMING_ZERO,
@@ -10204,8 +10237,8 @@
.block_erase = spi_block_erase_c7,
}
},
- .printlock = spi_prettyprint_status_register_plain, /* TODO: improve */
- .unlock = spi_disable_blockprotect,
+ .printlock = spi_prettyprint_status_register_default_bp2, /* bit5: T/B */
+ .unlock = spi_disable_blockprotect_bp2_srwd, /* TODO: per 64kB sector lock registers */
.write = spi_chip_write_256,
.read = spi_chip_read,
.voltage = {2700, 3600},
@@ -10219,7 +10252,8 @@
.model_id = ST_M25PX64,
.total_size = 8192,
.page_size = 256,
- .feature_bits = FEATURE_WRSR_WREN,
+ /* OTP: 64B total; read 0x4B; write 0x42 */
+ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP,
.tested = TEST_OK_PRE,
.probe = probe_spi_rdid,
.probe_timing = TIMING_ZERO,
@@ -10236,8 +10270,8 @@
.block_erase = spi_block_erase_c7,
}
},
- .printlock = spi_prettyprint_status_register_plain, /* TODO: improve */
- .unlock = spi_disable_blockprotect,
+ .printlock = spi_prettyprint_status_register_default_bp2, /* bit5: T/B */
+ .unlock = spi_disable_blockprotect_bp2_srwd, /* TODO: per 64kB sector lock registers */
.write = spi_chip_write_256,
.read = spi_chip_read,
},
diff --git a/flashchips.h b/flashchips.h
index 41bc143..a35b54f 100644
--- a/flashchips.h
+++ b/flashchips.h
@@ -627,6 +627,7 @@
#define ST_M45PE40 0x4013
#define ST_M45PE80 0x4014
#define ST_M45PE16 0x4015
+#define ST_M25PX80 0x7114
#define ST_M25PX16 0x7115
#define ST_M25PX32 0x7116
#define ST_M25PX64 0x7117