Commit b8e212c3 authored by Nikolay Nikolaev's avatar Nikolay Nikolaev Committed by Stefan Tauner
Browse files

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: default avatarNikolay Nikolaev <evrinoma@gmail.com>
Reviewed-by: default avatarSteven Zakulec <spzakulec@gmail.com>
Signed-off-by: default avatarStefan Tauner <stefan.tauner@alumni.tuwien.ac.at>
Acked-by: default avatarStefan Tauner <stefan.tauner@alumni.tuwien.ac.at>
parent d07fde68
...@@ -10147,6 +10147,38 @@ const struct flashchip flashchips[] = { ...@@ -10147,6 +10147,38 @@ const struct flashchip flashchips[] = {
.voltage = {2700, 3600}, .voltage = {2700, 3600},
}, },
{
.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", .vendor = "ST",
.name = "M25PX16", .name = "M25PX16",
...@@ -10173,8 +10205,8 @@ const struct flashchip flashchips[] = { ...@@ -10173,8 +10205,8 @@ const struct flashchip flashchips[] = {
.block_erase = spi_block_erase_c7, .block_erase = spi_block_erase_c7,
} }
}, },
.printlock = spi_prettyprint_status_register_plain, /* TODO: improve */ .printlock = spi_prettyprint_status_register_default_bp2, /* bit5: T/B */
.unlock = spi_disable_blockprotect, .unlock = spi_disable_blockprotect_bp2_srwd, /* TODO: per 64kB sector lock registers */
.write = spi_chip_write_256, .write = spi_chip_write_256,
.read = spi_chip_read, .read = spi_chip_read,
}, },
...@@ -10187,7 +10219,8 @@ const struct flashchip flashchips[] = { ...@@ -10187,7 +10219,8 @@ const struct flashchip flashchips[] = {
.model_id = ST_M25PX32, .model_id = ST_M25PX32,
.total_size = 4096, .total_size = 4096,
.page_size = 256, .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, .tested = TEST_OK_PRE,
.probe = probe_spi_rdid, .probe = probe_spi_rdid,
.probe_timing = TIMING_ZERO, .probe_timing = TIMING_ZERO,
...@@ -10204,8 +10237,8 @@ const struct flashchip flashchips[] = { ...@@ -10204,8 +10237,8 @@ const struct flashchip flashchips[] = {
.block_erase = spi_block_erase_c7, .block_erase = spi_block_erase_c7,
} }
}, },
.printlock = spi_prettyprint_status_register_plain, /* TODO: improve */ .printlock = spi_prettyprint_status_register_default_bp2, /* bit5: T/B */
.unlock = spi_disable_blockprotect, .unlock = spi_disable_blockprotect_bp2_srwd, /* TODO: per 64kB sector lock registers */
.write = spi_chip_write_256, .write = spi_chip_write_256,
.read = spi_chip_read, .read = spi_chip_read,
.voltage = {2700, 3600}, .voltage = {2700, 3600},
...@@ -10219,7 +10252,8 @@ const struct flashchip flashchips[] = { ...@@ -10219,7 +10252,8 @@ const struct flashchip flashchips[] = {
.model_id = ST_M25PX64, .model_id = ST_M25PX64,
.total_size = 8192, .total_size = 8192,
.page_size = 256, .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, .tested = TEST_OK_PRE,
.probe = probe_spi_rdid, .probe = probe_spi_rdid,
.probe_timing = TIMING_ZERO, .probe_timing = TIMING_ZERO,
...@@ -10236,8 +10270,8 @@ const struct flashchip flashchips[] = { ...@@ -10236,8 +10270,8 @@ const struct flashchip flashchips[] = {
.block_erase = spi_block_erase_c7, .block_erase = spi_block_erase_c7,
} }
}, },
.printlock = spi_prettyprint_status_register_plain, /* TODO: improve */ .printlock = spi_prettyprint_status_register_default_bp2, /* bit5: T/B */
.unlock = spi_disable_blockprotect, .unlock = spi_disable_blockprotect_bp2_srwd, /* TODO: per 64kB sector lock registers */
.write = spi_chip_write_256, .write = spi_chip_write_256,
.read = spi_chip_read, .read = spi_chip_read,
}, },
......
...@@ -627,6 +627,7 @@ ...@@ -627,6 +627,7 @@
#define ST_M45PE40 0x4013 #define ST_M45PE40 0x4013
#define ST_M45PE80 0x4014 #define ST_M45PE80 0x4014
#define ST_M45PE16 0x4015 #define ST_M45PE16 0x4015
#define ST_M25PX80 0x7114
#define ST_M25PX16 0x7115 #define ST_M25PX16 0x7115
#define ST_M25PX32 0x7116 #define ST_M25PX32 0x7116
#define ST_M25PX64 0x7117 #define ST_M25PX64 0x7117
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment