1
0
mirror of https://review.coreboot.org/flashrom.git synced 2025-04-29 07:53:44 +02:00

flashchips: Add missing N25Q/MT25Q variants

This adds missing voltage and capacity variants for N25Q and MT25Q
series devices. This also fixes a typo in some model numbers where the
last letter should have been a G instead of an E. Added devices include:

N25Q256..1E
N25Q512..1G
N25Q00A..1G
N25Q00A..3G
MT25QU128
MT25QL128
MT25QU256
MT25QU512 tested by Jacob Creedon <jcreedon@google.com>
MT25QL01G tested by Konstantin Grudnev <grudnevkv@gmail.com>
MT25QU01G
MT25QL02G
MT25QU02G

Two have been tested as indicated, all other variants added are marked
untested.

Signed-off-by: Jacob Creedon <jcreedon@google.com>
Change-Id: I85630e4f6c0aa3b261f9871b7d363dad278b997e
Reviewed-on: https://review.coreboot.org/c/flashrom/+/34491
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Edward O'Callaghan <quasisec@chromium.org>
This commit is contained in:
Jacob Creedon 2019-07-22 12:35:30 -07:00 committed by David Hendricks
parent 2f6936bd92
commit 80e8dc4df7
2 changed files with 535 additions and 10 deletions

View File

@ -10349,6 +10349,86 @@ const struct flashchip flashchips[] = {
.voltage = {2700, 3600}, .voltage = {2700, 3600},
}, },
{
.vendor = "Micron/Numonyx/ST",
.name = "N25Q00A..1G", /* ..1G = 1.8V, uniform 64KB/4KB blocks/sectors */
.bustype = BUS_SPI,
.manufacture_id = ST_ID,
.model_id = ST_N25Q00A__1G,
.total_size = 131072,
.page_size = 256,
/* supports SFDP */
/* OTP: 64B total; read 0x4B, write 0x42 */
.feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_4BA_WREN,
.tested = TEST_UNTESTED,
.probe = probe_spi_rdid,
.probe_timing = TIMING_ZERO,
.block_erasers =
{
{
.eraseblocks = { {4 * 1024, 32768} },
.block_erase = spi_block_erase_21,
}, {
.eraseblocks = { {4 * 1024, 32768} },
.block_erase = spi_block_erase_20,
}, {
.eraseblocks = { {64 * 1024, 2048} },
.block_erase = spi_block_erase_dc,
}, {
.eraseblocks = { {64 * 1024, 2048} },
.block_erase = spi_block_erase_d8,
}, {
.eraseblocks = { {32768 * 1024, 4} },
.block_erase = spi_block_erase_c4,
}
},
.printlock = spi_prettyprint_status_register_n25q, /* TODO: config, lock, flag regs */
.unlock = spi_disable_blockprotect_n25q, /* TODO: per 64kB sector lock registers */
.write = spi_chip_write_256, /* Multi I/O supported */
.read = spi_chip_read, /* Fast read (0x0B) and multi I/O supported */
.voltage = {1700, 2000},
},
{
.vendor = "Micron/Numonyx/ST",
.name = "N25Q00A..3G", /* ..3G = 3V, uniform 64KB/4KB blocks/sectors */
.bustype = BUS_SPI,
.manufacture_id = ST_ID,
.model_id = ST_N25Q00A__3G,
.total_size = 131072,
.page_size = 256,
/* supports SFDP */
/* OTP: 64B total; read 0x4B, write 0x42 */
.feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_4BA_WREN,
.tested = TEST_UNTESTED,
.probe = probe_spi_rdid,
.probe_timing = TIMING_ZERO,
.block_erasers =
{
{
.eraseblocks = { {4 * 1024, 32768} },
.block_erase = spi_block_erase_21,
}, {
.eraseblocks = { {4 * 1024, 32768} },
.block_erase = spi_block_erase_20,
}, {
.eraseblocks = { {64 * 1024, 2048} },
.block_erase = spi_block_erase_dc,
}, {
.eraseblocks = { {64 * 1024, 2048} },
.block_erase = spi_block_erase_d8,
}, {
.eraseblocks = { {32768 * 1024, 4} },
.block_erase = spi_block_erase_c4,
}
},
.printlock = spi_prettyprint_status_register_n25q, /* TODO: config, lock, flag regs */
.unlock = spi_disable_blockprotect_n25q, /* TODO: per 64kB sector lock registers */
.write = spi_chip_write_256, /* Multi I/O supported */
.read = spi_chip_read, /* Fast read (0x0B) and multi I/O supported */
.voltage = {2700, 3600},
},
{ {
.vendor = "Micron/Numonyx/ST", .vendor = "Micron/Numonyx/ST",
.name = "N25Q016", .name = "N25Q016",
@ -10590,6 +10670,46 @@ const struct flashchip flashchips[] = {
.voltage = {2700, 3600}, .voltage = {2700, 3600},
}, },
{
.vendor = "Micron/Numonyx/ST",
.name = "N25Q256..1E", /* ..1E = 1.8V, uniform 64KB/4KB blocks/sectors */
.bustype = BUS_SPI,
.manufacture_id = ST_ID,
.model_id = ST_N25Q256__1E,
.total_size = 32768,
.page_size = 256,
/* supports SFDP */
/* OTP: 64B total; read 0x4B, write 0x42 */
.feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_4BA_WREN,
.tested = TEST_UNTESTED,
.probe = probe_spi_rdid,
.probe_timing = TIMING_ZERO,
.block_erasers =
{
{
.eraseblocks = { {4 * 1024, 8192} },
.block_erase = spi_block_erase_21,
}, {
.eraseblocks = { {4 * 1024, 8192} },
.block_erase = spi_block_erase_20,
}, {
.eraseblocks = { {64 * 1024, 512} },
.block_erase = spi_block_erase_dc,
}, {
.eraseblocks = { {64 * 1024, 512} },
.block_erase = spi_block_erase_d8,
}, {
.eraseblocks = { {32768 * 1024, 1} },
.block_erase = spi_block_erase_c7,
}
},
.printlock = spi_prettyprint_status_register_n25q, /* TODO: config, lock, flag regs */
.unlock = spi_disable_blockprotect_n25q, /* TODO: per 64kB sector lock registers */
.write = spi_chip_write_256, /* Multi I/O supported */
.read = spi_chip_read, /* Fast read (0x0B) and multi I/O supported */
.voltage = {1700, 2000},
},
{ {
.vendor = "Micron/Numonyx/ST", .vendor = "Micron/Numonyx/ST",
.name = "N25Q256..3E", /* ..3E = 3V, uniform 64KB/4KB blocks/sectors */ .name = "N25Q256..3E", /* ..3E = 3V, uniform 64KB/4KB blocks/sectors */
@ -10632,10 +10752,50 @@ const struct flashchip flashchips[] = {
{ {
.vendor = "Micron/Numonyx/ST", .vendor = "Micron/Numonyx/ST",
.name = "N25Q512..3E", /* ..3E = 3V, uniform 64KB/4KB blocks/sectors */ .name = "N25Q512..1G", /* ..1G = 1.8V, uniform 64KB/4KB blocks/sectors */
.bustype = BUS_SPI, .bustype = BUS_SPI,
.manufacture_id = ST_ID, .manufacture_id = ST_ID,
.model_id = ST_N25Q512__3E, .model_id = ST_N25Q512__1G,
.total_size = 65536,
.page_size = 256,
/* supports SFDP */
/* OTP: 64B total; read 0x4B, write 0x42 */
.feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_4BA_WREN,
.tested = TEST_UNTESTED,
.probe = probe_spi_rdid,
.probe_timing = TIMING_ZERO,
.block_erasers =
{
{
.eraseblocks = { {4 * 1024, 16384} },
.block_erase = spi_block_erase_21,
}, {
.eraseblocks = { {4 * 1024, 16384} },
.block_erase = spi_block_erase_20,
}, {
.eraseblocks = { {64 * 1024, 1024} },
.block_erase = spi_block_erase_dc,
}, {
.eraseblocks = { {64 * 1024, 1024} },
.block_erase = spi_block_erase_d8,
}, {
.eraseblocks = { {32768 * 1024, 2} },
.block_erase = spi_block_erase_c4,
}
},
.printlock = spi_prettyprint_status_register_n25q, /* TODO: config, lock, flag regs */
.unlock = spi_disable_blockprotect_n25q, /* TODO: per 64kB sector lock registers */
.write = spi_chip_write_256, /* Multi I/O supported */
.read = spi_chip_read, /* Fast read (0x0B) and multi I/O supported */
.voltage = {1700, 2000},
},
{
.vendor = "Micron/Numonyx/ST",
.name = "N25Q512..3G", /* ..3G = 3V, uniform 64KB/4KB blocks/sectors */
.bustype = BUS_SPI,
.manufacture_id = ST_ID,
.model_id = ST_N25Q512__3G,
.total_size = 65536, .total_size = 65536,
.page_size = 256, .page_size = 256,
/* supports SFDP */ /* supports SFDP */
@ -10670,6 +10830,270 @@ const struct flashchip flashchips[] = {
.voltage = {2700, 3600}, .voltage = {2700, 3600},
}, },
{
.vendor = "Micron",
.name = "MT25QL01G", /* L = 3V, uniform 64KB/4KB blocks/sectors */
.bustype = BUS_SPI,
.manufacture_id = ST_ID,
.model_id = ST_N25Q00A__3G,
.total_size = 131072,
.page_size = 256,
/* supports SFDP */
/* OTP: 64B total; read 0x4B, write 0x42 */
.feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_4BA_WREN,
.tested = TEST_OK_PREW,
.probe = probe_spi_rdid,
.probe_timing = TIMING_ZERO,
.block_erasers =
{
{
.eraseblocks = { {4 * 1024, 32768} },
.block_erase = spi_block_erase_21,
}, {
.eraseblocks = { {4 * 1024, 32768} },
.block_erase = spi_block_erase_20,
}, {
.eraseblocks = { {32 * 1024, 4096} },
.block_erase = spi_block_erase_5c,
}, {
.eraseblocks = { {32 * 1024, 4096} },
.block_erase = spi_block_erase_52,
}, {
.eraseblocks = { {64 * 1024, 2048} },
.block_erase = spi_block_erase_dc,
}, {
.eraseblocks = { {64 * 1024, 2048} },
.block_erase = spi_block_erase_d8,
}, {
.eraseblocks = { {65536 * 1024, 2} },
.block_erase = spi_block_erase_c4,
}
},
.printlock = spi_prettyprint_status_register_n25q, /* TODO: config, lock, flag regs */
.unlock = spi_disable_blockprotect_n25q, /* TODO: per 64kB sector lock registers */
.write = spi_chip_write_256, /* Multi I/O supported */
.read = spi_chip_read, /* Fast read (0x0B) and multi I/O supported */
.voltage = {2700, 3600},
},
{
.vendor = "Micron",
.name = "MT25QU01G", /* U = 1.8V, uniform 64KB/4KB blocks/sectors */
.bustype = BUS_SPI,
.manufacture_id = ST_ID,
.model_id = ST_N25Q00A__1G,
.total_size = 131072,
.page_size = 256,
/* supports SFDP */
/* OTP: 64B total; read 0x4B, write 0x42 */
.feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_4BA_WREN,
.tested = TEST_UNTESTED,
.probe = probe_spi_rdid,
.probe_timing = TIMING_ZERO,
.block_erasers =
{
{
.eraseblocks = { {4 * 1024, 32768} },
.block_erase = spi_block_erase_21,
}, {
.eraseblocks = { {4 * 1024, 32768} },
.block_erase = spi_block_erase_20,
}, {
.eraseblocks = { {32 * 1024, 4096} },
.block_erase = spi_block_erase_5c,
}, {
.eraseblocks = { {32 * 1024, 4096} },
.block_erase = spi_block_erase_52,
}, {
.eraseblocks = { {64 * 1024, 2048} },
.block_erase = spi_block_erase_dc,
}, {
.eraseblocks = { {64 * 1024, 2048} },
.block_erase = spi_block_erase_d8,
}, {
.eraseblocks = { {65536 * 1024, 2} },
.block_erase = spi_block_erase_c4,
}
},
.printlock = spi_prettyprint_status_register_n25q, /* TODO: config, lock, flag regs */
.unlock = spi_disable_blockprotect_n25q, /* TODO: per 64kB sector lock registers */
.write = spi_chip_write_256, /* Multi I/O supported */
.read = spi_chip_read, /* Fast read (0x0B) and multi I/O supported */
.voltage = {1700, 2000},
},
{
.vendor = "Micron",
.name = "MT25QL02G", /* L = 3V, uniform 64KB/4KB blocks/sectors */
.bustype = BUS_SPI,
.manufacture_id = ST_ID,
.model_id = ST_MT25QL02G,
.total_size = 262144,
.page_size = 256,
/* supports SFDP */
/* OTP: 64B total; read 0x4B, write 0x42 */
.feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_4BA_WREN,
.tested = TEST_UNTESTED,
.probe = probe_spi_rdid,
.probe_timing = TIMING_ZERO,
.block_erasers =
{
{
.eraseblocks = { {4 * 1024, 65536} },
.block_erase = spi_block_erase_21,
}, {
.eraseblocks = { {4 * 1024, 65536} },
.block_erase = spi_block_erase_20,
}, {
.eraseblocks = { {32 * 1024, 8192} },
.block_erase = spi_block_erase_5c,
}, {
.eraseblocks = { {32 * 1024, 8192} },
.block_erase = spi_block_erase_52,
}, {
.eraseblocks = { {64 * 1024, 4096} },
.block_erase = spi_block_erase_dc,
}, {
.eraseblocks = { {64 * 1024, 4096} },
.block_erase = spi_block_erase_d8,
}, {
.eraseblocks = { {65536 * 1024, 4} },
.block_erase = spi_block_erase_c4,
}
},
.printlock = spi_prettyprint_status_register_n25q, /* TODO: config, lock, flag regs */
.unlock = spi_disable_blockprotect_n25q, /* TODO: per 64kB sector lock registers */
.write = spi_chip_write_256, /* Multi I/O supported */
.read = spi_chip_read, /* Fast read (0x0B) and multi I/O supported */
.voltage = {2700, 3600},
},
{
.vendor = "Micron",
.name = "MT25QU02G", /* U = 1.8V, uniform 64KB/4KB blocks/sectors */
.bustype = BUS_SPI,
.manufacture_id = ST_ID,
.model_id = ST_MT25QU02G,
.total_size = 262144,
.page_size = 256,
/* supports SFDP */
/* OTP: 64B total; read 0x4B, write 0x42 */
.feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_4BA_WREN,
.tested = TEST_UNTESTED,
.probe = probe_spi_rdid,
.probe_timing = TIMING_ZERO,
.block_erasers =
{
{
.eraseblocks = { {4 * 1024, 65536} },
.block_erase = spi_block_erase_21,
}, {
.eraseblocks = { {4 * 1024, 65536} },
.block_erase = spi_block_erase_20,
}, {
.eraseblocks = { {32 * 1024, 8192} },
.block_erase = spi_block_erase_5c,
}, {
.eraseblocks = { {32 * 1024, 8192} },
.block_erase = spi_block_erase_52,
}, {
.eraseblocks = { {64 * 1024, 4096} },
.block_erase = spi_block_erase_dc,
}, {
.eraseblocks = { {64 * 1024, 4096} },
.block_erase = spi_block_erase_d8,
}, {
.eraseblocks = { {65536 * 1024, 4} },
.block_erase = spi_block_erase_c4,
}
},
.printlock = spi_prettyprint_status_register_n25q, /* TODO: config, lock, flag regs */
.unlock = spi_disable_blockprotect_n25q, /* TODO: per 64kB sector lock registers */
.write = spi_chip_write_256, /* Multi I/O supported */
.read = spi_chip_read, /* Fast read (0x0B) and multi I/O supported */
.voltage = {1700, 2000},
},
{
.vendor = "Micron",
.name = "MT25QU128", /* U = 1.8V, uniform 64KB/4KB blocks/sectors */
.bustype = BUS_SPI,
.manufacture_id = ST_ID,
.model_id = ST_N25Q128__1E,
.total_size = 16384,
.page_size = 256,
/* supports SFDP */
/* OTP: 64B total; read 0x4B, write 0x42 */
.feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_4BA_WREN,
.tested = TEST_UNTESTED,
.probe = probe_spi_rdid,
.probe_timing = TIMING_ZERO,
.block_erasers =
{
{
.eraseblocks = { {4 * 1024, 4096} },
.block_erase = spi_block_erase_20,
}, {
.eraseblocks = { {32 * 1024, 512} },
.block_erase = spi_block_erase_52,
}, {
.eraseblocks = { {64 * 1024, 256} },
.block_erase = spi_block_erase_d8,
}, {
.eraseblocks = { {16384 * 1024, 1} },
.block_erase = spi_block_erase_c7,
}, {
.eraseblocks = { {16384 * 1024, 1} },
.block_erase = spi_block_erase_60,
}
},
.printlock = spi_prettyprint_status_register_n25q, /* TODO: config, lock, flag regs */
.unlock = spi_disable_blockprotect_n25q, /* TODO: per 64kB sector lock registers */
.write = spi_chip_write_256, /* Multi I/O supported */
.read = spi_chip_read, /* Fast read (0x0B) and multi I/O supported */
.voltage = {1700, 2000},
},
{
.vendor = "Micron",
.name = "MT25QL128", /* L = 3V, uniform 64KB/4KB blocks/sectors */
.bustype = BUS_SPI,
.manufacture_id = ST_ID,
.model_id = ST_N25Q128__3E,
.total_size = 16384,
.page_size = 256,
/* supports SFDP */
/* OTP: 64B total; read 0x4B, write 0x42 */
.feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_4BA_WREN,
.tested = TEST_UNTESTED,
.probe = probe_spi_rdid,
.probe_timing = TIMING_ZERO,
.block_erasers =
{
{
.eraseblocks = { {4 * 1024, 4096} },
.block_erase = spi_block_erase_20,
}, {
.eraseblocks = { {32 * 1024, 512} },
.block_erase = spi_block_erase_52,
}, {
.eraseblocks = { {64 * 1024, 256} },
.block_erase = spi_block_erase_d8,
}, {
.eraseblocks = { {16384 * 1024, 1} },
.block_erase = spi_block_erase_c7,
}, {
.eraseblocks = { {16384 * 1024, 1} },
.block_erase = spi_block_erase_60,
}
},
.printlock = spi_prettyprint_status_register_n25q, /* TODO: config, lock, flag regs */
.unlock = spi_disable_blockprotect_n25q, /* TODO: per 64kB sector lock registers */
.write = spi_chip_write_256, /* Multi I/O supported */
.read = spi_chip_read, /* Fast read (0x0B) and multi I/O supported */
.voltage = {2700, 3600},
},
{ {
.vendor = "Micron", .vendor = "Micron",
.name = "MT25QL256", /* L = 3V, uniform 64KB/4KB blocks/sectors */ .name = "MT25QL256", /* L = 3V, uniform 64KB/4KB blocks/sectors */
@ -10719,12 +11143,61 @@ const struct flashchip flashchips[] = {
.voltage = {2700, 3600}, .voltage = {2700, 3600},
}, },
{
.vendor = "Micron",
.name = "MT25QU256", /* U = 1.8V, uniform 64KB/4KB blocks/sectors */
.bustype = BUS_SPI,
.manufacture_id = ST_ID,
.model_id = ST_N25Q256__1E,
.total_size = 32768,
.page_size = 256,
/* supports SFDP */
/* OTP: 64B total; read 0x4B, write 0x42 */
.feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_4BA_WREN,
.tested = TEST_UNTESTED,
.probe = probe_spi_rdid,
.probe_timing = TIMING_ZERO,
.block_erasers =
{
{
.eraseblocks = { {4 * 1024, 8192} },
.block_erase = spi_block_erase_21,
}, {
.eraseblocks = { {4 * 1024, 8192} },
.block_erase = spi_block_erase_20,
}, {
.eraseblocks = { {32 * 1024, 1024} },
.block_erase = spi_block_erase_5c,
}, {
.eraseblocks = { {32 * 1024, 1024} },
.block_erase = spi_block_erase_52,
}, {
.eraseblocks = { {64 * 1024, 512} },
.block_erase = spi_block_erase_dc,
}, {
.eraseblocks = { {64 * 1024, 512} },
.block_erase = spi_block_erase_d8,
}, {
.eraseblocks = { {32768 * 1024, 1} },
.block_erase = spi_block_erase_c7,
}, {
.eraseblocks = { {32768 * 1024, 1} },
.block_erase = spi_block_erase_60,
}
},
.printlock = spi_prettyprint_status_register_n25q, /* TODO: config, lock, flag regs */
.unlock = spi_disable_blockprotect_n25q, /* TODO: per 64kB sector lock registers */
.write = spi_chip_write_256, /* Multi I/O supported */
.read = spi_chip_read, /* Fast read (0x0B) and multi I/O supported */
.voltage = {1700, 2000},
},
{ {
.vendor = "Micron", .vendor = "Micron",
.name = "MT25QL512", /* L = 3V, uniform 64KB/4KB blocks/sectors */ .name = "MT25QL512", /* L = 3V, uniform 64KB/4KB blocks/sectors */
.bustype = BUS_SPI, .bustype = BUS_SPI,
.manufacture_id = ST_ID, .manufacture_id = ST_ID,
.model_id = ST_N25Q512__3E, .model_id = ST_N25Q512__3G,
.total_size = 65536, .total_size = 65536,
.page_size = 256, .page_size = 256,
/* supports SFDP */ /* supports SFDP */
@ -10768,6 +11241,55 @@ const struct flashchip flashchips[] = {
.voltage = {2700, 3600}, .voltage = {2700, 3600},
}, },
{
.vendor = "Micron",
.name = "MT25QU512", /* U = 1.8V, uniform 64KB/4KB blocks/sectors */
.bustype = BUS_SPI,
.manufacture_id = ST_ID,
.model_id = ST_N25Q512__1G,
.total_size = 65536,
.page_size = 256,
/* supports SFDP */
/* OTP: 64B total; read 0x4B, write 0x42 */
.feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_4BA_WREN,
.tested = TEST_OK_PREW,
.probe = probe_spi_rdid,
.probe_timing = TIMING_ZERO,
.block_erasers =
{
{
.eraseblocks = { {4 * 1024, 16384} },
.block_erase = spi_block_erase_21,
}, {
.eraseblocks = { {4 * 1024, 16384} },
.block_erase = spi_block_erase_20,
}, {
.eraseblocks = { {32 * 1024, 2048} },
.block_erase = spi_block_erase_5c,
}, {
.eraseblocks = { {32 * 1024, 2048} },
.block_erase = spi_block_erase_52,
}, {
.eraseblocks = { {64 * 1024, 1024} },
.block_erase = spi_block_erase_dc,
}, {
.eraseblocks = { {64 * 1024, 1024} },
.block_erase = spi_block_erase_d8,
}, {
.eraseblocks = { {65536 * 1024, 1} },
.block_erase = spi_block_erase_c7,
}, {
.eraseblocks = { {65536 * 1024, 1} },
.block_erase = spi_block_erase_60,
}
},
.printlock = spi_prettyprint_status_register_n25q, /* TODO: config, lock, flag regs */
.unlock = spi_disable_blockprotect_n25q, /* TODO: per 64kB sector lock registers */
.write = spi_chip_write_256, /* Multi I/O supported */
.read = spi_chip_read, /* Fast read (0x0B) and multi I/O supported */
.voltage = {1700, 2000},
},
{ {
.vendor = "MoselVitelic", .vendor = "MoselVitelic",
.name = "V29C51000B", .name = "V29C51000B",

View File

@ -866,13 +866,16 @@
#define ST_N25Q032__1E 0xBB16 /* N25Q032, 1.8V, (uniform sectors expected) */ #define ST_N25Q032__1E 0xBB16 /* N25Q032, 1.8V, (uniform sectors expected) */
#define ST_N25Q064__3E 0xBA17 /* N25Q064, 3.0V, (uniform sectors expected) */ #define ST_N25Q064__3E 0xBA17 /* N25Q064, 3.0V, (uniform sectors expected) */
#define ST_N25Q064__1E 0xBB17 /* N25Q064, 1.8V, (uniform sectors expected) */ #define ST_N25Q064__1E 0xBB17 /* N25Q064, 1.8V, (uniform sectors expected) */
#define ST_N25Q128__3E 0xBA18 /* N25Q128, 3.0V, (uniform sectors expected) */ #define ST_N25Q128__3E 0xBA18 /* N25Q128/MT25QL128, 3.0V, (uniform sectors expected) */
#define ST_N25Q128__1E 0xBB18 /* N25Q128, 1.8V, (uniform sectors expected) */ #define ST_N25Q128__1E 0xBB18 /* N25Q128/MT25QU128, 1.8V, (uniform sectors expected) */
#define ST_N25Q256__3E 0xBA19 /* N25Q256, 3.0V, (uniform sectors expected) */ #define ST_N25Q256__3E 0xBA19 /* N25Q256/MT25QL256, 3.0V, (uniform sectors expected) */
#define ST_N25Q256__1E 0xBB19 /* N25Q256, 1.8V, (uniform sectors expected) */ #define ST_N25Q256__1E 0xBB19 /* N25Q256/MT25QU256, 1.8V, (uniform sectors expected) */
#define ST_N25Q512__3E 0xBA20 /* N25Q512, 3.0V, (uniform sectors expected) */ #define ST_N25Q512__3G 0xBA20 /* N25Q512/MT25QL512, 3.0V, (uniform sectors expected) */
#define ST_N25Q512__1E 0xBB20 /* N25Q512, 1.8V, (uniform sectors expected) */ #define ST_N25Q512__1G 0xBB20 /* N25Q512/MT25QU512, 1.8V, (uniform sectors expected) */
#define ST_N25Q00A__3E 0xBA21 /* N25Q00A, 3.0V, (uniform sectors expected) */ #define ST_N25Q00A__3G 0xBA21 /* N25Q00A/MT25QL01G, 3.0V, (uniform sectors expected) */
#define ST_N25Q00A__1G 0xBB21 /* N25Q00A/MT25QU01G, 1.8V, (uniform sectors expected) */
#define ST_MT25QL02G 0xBA22 /* MT25QL02G, 3.0V, (uniform sectors expected) */
#define ST_MT25QU02G 0xBB22 /* MT25QU02G, 1.8V, (uniform sectors expected) */
#define ST_NP5Q032 0xDA16 /* Phase-change memory (PCM), 3V */ #define ST_NP5Q032 0xDA16 /* Phase-change memory (PCM), 3V */
#define ST_NP5Q064 0xDA17 /* Phase-change memory (PCM), 3V */ #define ST_NP5Q064 0xDA17 /* Phase-change memory (PCM), 3V */
#define ST_NP5Q128 0xDA18 /* Phase-change memory (PCM), 3V */ #define ST_NP5Q128 0xDA18 /* Phase-change memory (PCM), 3V */