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[] = {
.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",
.name = "M25PX16",
......@@ -10173,8 +10205,8 @@ const struct flashchip flashchips[] = {
.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 @@ const struct flashchip flashchips[] = {
.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 @@ const struct flashchip flashchips[] = {
.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 @@ const struct flashchip flashchips[] = {
.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 @@ const struct flashchip flashchips[] = {
.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,
},
......
......@@ -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
......
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