mirror of
https://review.coreboot.org/flashrom.git
synced 2025-07-02 06:23:18 +02:00
Add support for Eon EN25P Series
These are very similar to Eon's EN25B series but unlike those the EN25P has uniform sectors (of 32 and 64 kB). They can not be distinguished by RDID alone but the RES and REMS IDs are different and hence could be detected eventually in the future. This patch also refines tiny bits of the EN25B series. The series includes: - EN25P05 - EN25P10 - EN25P20 - EN25P40 - EN25P80 - EN25P16 - EN25P32 - EN25P64 Corresponding to flashrom svn r1870. Signed-off-by: Stefan Tauner <stefan.tauner@alumni.tuwien.ac.at> Acked-by: Stefan Tauner <stefan.tauner@alumni.tuwien.ac.at>
This commit is contained in:
279
flashchips.c
279
flashchips.c
@ -3332,7 +3332,7 @@ const struct flashchip flashchips[] = {
|
||||
.printlock = spi_prettyprint_status_register_plain, /* TODO: improve */
|
||||
.unlock = spi_disable_blockprotect,
|
||||
.write = spi_chip_write_256,
|
||||
.read = spi_chip_read,
|
||||
.read = spi_chip_read, /* Fast read (0x0B) supported */
|
||||
.voltage = {2700, 3600},
|
||||
},
|
||||
|
||||
@ -3366,7 +3366,37 @@ const struct flashchip flashchips[] = {
|
||||
.printlock = spi_prettyprint_status_register_plain, /* TODO: improve */
|
||||
.unlock = spi_disable_blockprotect,
|
||||
.write = spi_chip_write_256,
|
||||
.read = spi_chip_read,
|
||||
.read = spi_chip_read, /* Fast read (0x0B) supported */
|
||||
.voltage = {2700, 3600},
|
||||
},
|
||||
|
||||
{
|
||||
.vendor = "Eon",
|
||||
.name = "EN25P05",
|
||||
.bustype = BUS_SPI,
|
||||
.manufacture_id = EON_ID_NOPREFIX,
|
||||
.model_id = EON_EN25B05,
|
||||
.total_size = 64,
|
||||
.page_size = 256,
|
||||
.feature_bits = FEATURE_WRSR_WREN,
|
||||
.tested = TEST_UNTESTED,
|
||||
.probe = probe_spi_rdid,
|
||||
.probe_timing = TIMING_ZERO,
|
||||
.block_erasers =
|
||||
{
|
||||
{
|
||||
.eraseblocks = {
|
||||
{32 * 1024, 2} },
|
||||
.block_erase = spi_block_erase_d8,
|
||||
}, {
|
||||
.eraseblocks = { {64 * 1024, 1} },
|
||||
.block_erase = spi_block_erase_c7,
|
||||
}
|
||||
},
|
||||
.printlock = spi_prettyprint_status_register_plain, /* TODO: improve */
|
||||
.unlock = spi_disable_blockprotect,
|
||||
.write = spi_chip_write_256,
|
||||
.read = spi_chip_read, /* Fast read (0x0B) supported */
|
||||
.voltage = {2700, 3600},
|
||||
},
|
||||
|
||||
@ -3400,7 +3430,7 @@ const struct flashchip flashchips[] = {
|
||||
.printlock = spi_prettyprint_status_register_plain, /* TODO: improve */
|
||||
.unlock = spi_disable_blockprotect,
|
||||
.write = spi_chip_write_256,
|
||||
.read = spi_chip_read,
|
||||
.read = spi_chip_read, /* Fast read (0x0B) supported */
|
||||
.voltage = {2700, 3600},
|
||||
},
|
||||
|
||||
@ -3434,7 +3464,36 @@ const struct flashchip flashchips[] = {
|
||||
.printlock = spi_prettyprint_status_register_plain, /* TODO: improve */
|
||||
.unlock = spi_disable_blockprotect,
|
||||
.write = spi_chip_write_256,
|
||||
.read = spi_chip_read,
|
||||
.read = spi_chip_read, /* Fast read (0x0B) supported */
|
||||
.voltage = {2700, 3600},
|
||||
},
|
||||
|
||||
{
|
||||
.vendor = "Eon",
|
||||
.name = "EN25P10",
|
||||
.bustype = BUS_SPI,
|
||||
.manufacture_id = EON_ID_NOPREFIX,
|
||||
.model_id = EON_EN25B10,
|
||||
.total_size = 128,
|
||||
.page_size = 256,
|
||||
.feature_bits = FEATURE_WRSR_WREN,
|
||||
.tested = TEST_UNTESTED,
|
||||
.probe = probe_spi_rdid,
|
||||
.probe_timing = TIMING_ZERO,
|
||||
.block_erasers =
|
||||
{
|
||||
{
|
||||
.eraseblocks = { {32 * 1024, 4} },
|
||||
.block_erase = spi_block_erase_d8,
|
||||
}, {
|
||||
.eraseblocks = { {128 * 1024, 1} },
|
||||
.block_erase = spi_block_erase_c7,
|
||||
}
|
||||
},
|
||||
.printlock = spi_prettyprint_status_register_plain, /* TODO: improve */
|
||||
.unlock = spi_disable_blockprotect,
|
||||
.write = spi_chip_write_256,
|
||||
.read = spi_chip_read, /* Fast read (0x0B) supported */
|
||||
.voltage = {2700, 3600},
|
||||
},
|
||||
|
||||
@ -3469,7 +3528,7 @@ const struct flashchip flashchips[] = {
|
||||
.printlock = spi_prettyprint_status_register_plain, /* TODO: improve */
|
||||
.unlock = spi_disable_blockprotect,
|
||||
.write = spi_chip_write_256,
|
||||
.read = spi_chip_read,
|
||||
.read = spi_chip_read, /* Fast read (0x0B) supported */
|
||||
.voltage = {2700, 3600},
|
||||
},
|
||||
|
||||
@ -3504,7 +3563,36 @@ const struct flashchip flashchips[] = {
|
||||
.printlock = spi_prettyprint_status_register_plain, /* TODO: improve */
|
||||
.unlock = spi_disable_blockprotect,
|
||||
.write = spi_chip_write_256,
|
||||
.read = spi_chip_read,
|
||||
.read = spi_chip_read, /* Fast read (0x0B) supported */
|
||||
.voltage = {2700, 3600},
|
||||
},
|
||||
|
||||
{
|
||||
.vendor = "Eon",
|
||||
.name = "EN25P20",
|
||||
.bustype = BUS_SPI,
|
||||
.manufacture_id = EON_ID_NOPREFIX,
|
||||
.model_id = EON_EN25B20,
|
||||
.total_size = 256,
|
||||
.page_size = 256,
|
||||
.feature_bits = FEATURE_WRSR_WREN,
|
||||
.tested = TEST_UNTESTED,
|
||||
.probe = probe_spi_rdid,
|
||||
.probe_timing = TIMING_ZERO,
|
||||
.block_erasers =
|
||||
{
|
||||
{
|
||||
.eraseblocks = { {64 * 1024, 4} },
|
||||
.block_erase = spi_block_erase_d8,
|
||||
}, {
|
||||
.eraseblocks = { {256 * 1024, 1} },
|
||||
.block_erase = spi_block_erase_c7,
|
||||
}
|
||||
},
|
||||
.printlock = spi_prettyprint_status_register_plain, /* TODO: improve */
|
||||
.unlock = spi_disable_blockprotect,
|
||||
.write = spi_chip_write_256,
|
||||
.read = spi_chip_read, /* Fast read (0x0B) supported */
|
||||
.voltage = {2700, 3600},
|
||||
},
|
||||
|
||||
@ -3539,7 +3627,7 @@ const struct flashchip flashchips[] = {
|
||||
.printlock = spi_prettyprint_status_register_plain, /* TODO: improve */
|
||||
.unlock = spi_disable_blockprotect,
|
||||
.write = spi_chip_write_256,
|
||||
.read = spi_chip_read,
|
||||
.read = spi_chip_read, /* Fast read (0x0B) supported */
|
||||
.voltage = {2700, 3600},
|
||||
},
|
||||
|
||||
@ -3574,7 +3662,36 @@ const struct flashchip flashchips[] = {
|
||||
.printlock = spi_prettyprint_status_register_plain, /* TODO: improve */
|
||||
.unlock = spi_disable_blockprotect,
|
||||
.write = spi_chip_write_256,
|
||||
.read = spi_chip_read,
|
||||
.read = spi_chip_read, /* Fast read (0x0B) supported */
|
||||
.voltage = {2700, 3600},
|
||||
},
|
||||
|
||||
{
|
||||
.vendor = "Eon",
|
||||
.name = "EN25P40",
|
||||
.bustype = BUS_SPI,
|
||||
.manufacture_id = EON_ID_NOPREFIX,
|
||||
.model_id = EON_EN25B40,
|
||||
.total_size = 512,
|
||||
.page_size = 256,
|
||||
.feature_bits = FEATURE_WRSR_WREN,
|
||||
.tested = TEST_UNTESTED,
|
||||
.probe = probe_spi_rdid,
|
||||
.probe_timing = TIMING_ZERO,
|
||||
.block_erasers =
|
||||
{
|
||||
{
|
||||
.eraseblocks = { {64 * 1024, 8} },
|
||||
.block_erase = spi_block_erase_d8,
|
||||
}, {
|
||||
.eraseblocks = { {512 * 1024, 1} },
|
||||
.block_erase = spi_block_erase_c7,
|
||||
}
|
||||
},
|
||||
.printlock = spi_prettyprint_status_register_plain, /* TODO: improve */
|
||||
.unlock = spi_disable_blockprotect,
|
||||
.write = spi_chip_write_256,
|
||||
.read = spi_chip_read, /* Fast read (0x0B) supported */
|
||||
.voltage = {2700, 3600},
|
||||
},
|
||||
|
||||
@ -3609,7 +3726,7 @@ const struct flashchip flashchips[] = {
|
||||
.printlock = spi_prettyprint_status_register_plain, /* TODO: improve */
|
||||
.unlock = spi_disable_blockprotect,
|
||||
.write = spi_chip_write_256,
|
||||
.read = spi_chip_read,
|
||||
.read = spi_chip_read, /* Fast read (0x0B) supported */
|
||||
.voltage = {2700, 3600},
|
||||
},
|
||||
|
||||
@ -3644,7 +3761,36 @@ const struct flashchip flashchips[] = {
|
||||
.printlock = spi_prettyprint_status_register_plain, /* TODO: improve */
|
||||
.unlock = spi_disable_blockprotect,
|
||||
.write = spi_chip_write_256,
|
||||
.read = spi_chip_read,
|
||||
.read = spi_chip_read, /* Fast read (0x0B) supported */
|
||||
.voltage = {2700, 3600},
|
||||
},
|
||||
|
||||
{
|
||||
.vendor = "Eon",
|
||||
.name = "EN25P80",
|
||||
.bustype = BUS_SPI,
|
||||
.manufacture_id = EON_ID_NOPREFIX,
|
||||
.model_id = EON_EN25B80,
|
||||
.total_size = 1024,
|
||||
.page_size = 256,
|
||||
.feature_bits = FEATURE_WRSR_WREN,
|
||||
.tested = TEST_UNTESTED,
|
||||
.probe = probe_spi_rdid,
|
||||
.probe_timing = TIMING_ZERO,
|
||||
.block_erasers =
|
||||
{
|
||||
{
|
||||
.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_plain, /* TODO: improve */
|
||||
.unlock = spi_disable_blockprotect,
|
||||
.write = spi_chip_write_256,
|
||||
.read = spi_chip_read, /* Fast read (0x0B) supported */
|
||||
.voltage = {2700, 3600},
|
||||
},
|
||||
|
||||
@ -3679,7 +3825,7 @@ const struct flashchip flashchips[] = {
|
||||
.printlock = spi_prettyprint_status_register_plain, /* TODO: improve */
|
||||
.unlock = spi_disable_blockprotect,
|
||||
.write = spi_chip_write_256,
|
||||
.read = spi_chip_read,
|
||||
.read = spi_chip_read, /* Fast read (0x0B) supported */
|
||||
.voltage = {2700, 3600},
|
||||
},
|
||||
|
||||
@ -3714,7 +3860,36 @@ const struct flashchip flashchips[] = {
|
||||
.printlock = spi_prettyprint_status_register_plain, /* TODO: improve */
|
||||
.unlock = spi_disable_blockprotect,
|
||||
.write = spi_chip_write_256,
|
||||
.read = spi_chip_read,
|
||||
.read = spi_chip_read, /* Fast read (0x0B) supported */
|
||||
.voltage = {2700, 3600},
|
||||
},
|
||||
|
||||
{
|
||||
.vendor = "Eon",
|
||||
.name = "EN25P16",
|
||||
.bustype = BUS_SPI,
|
||||
.manufacture_id = EON_ID_NOPREFIX,
|
||||
.model_id = EON_EN25B16,
|
||||
.total_size = 2048,
|
||||
.page_size = 256,
|
||||
.feature_bits = FEATURE_WRSR_WREN,
|
||||
.tested = TEST_UNTESTED,
|
||||
.probe = probe_spi_rdid,
|
||||
.probe_timing = TIMING_ZERO,
|
||||
.block_erasers =
|
||||
{
|
||||
{
|
||||
.eraseblocks = { {64 * 1024, 32} },
|
||||
.block_erase = spi_block_erase_d8,
|
||||
}, {
|
||||
.eraseblocks = { {2 * 1024 * 1024, 1} },
|
||||
.block_erase = spi_block_erase_c7,
|
||||
}
|
||||
},
|
||||
.printlock = spi_prettyprint_status_register_plain, /* TODO: improve */
|
||||
.unlock = spi_disable_blockprotect,
|
||||
.write = spi_chip_write_256,
|
||||
.read = spi_chip_read, /* Fast read (0x0B) supported */
|
||||
.voltage = {2700, 3600},
|
||||
},
|
||||
|
||||
@ -3726,7 +3901,8 @@ const struct flashchip flashchips[] = {
|
||||
.model_id = EON_EN25B32,
|
||||
.total_size = 4096,
|
||||
.page_size = 256,
|
||||
.feature_bits = FEATURE_WRSR_WREN,
|
||||
/* OTP: 512B total; enter 0x3A */
|
||||
.feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP,
|
||||
.tested = TEST_UNTESTED,
|
||||
.probe = probe_spi_rdid,
|
||||
.probe_timing = TIMING_ZERO,
|
||||
@ -3749,7 +3925,7 @@ const struct flashchip flashchips[] = {
|
||||
.printlock = spi_prettyprint_status_register_plain, /* TODO: improve */
|
||||
.unlock = spi_disable_blockprotect,
|
||||
.write = spi_chip_write_256,
|
||||
.read = spi_chip_read,
|
||||
.read = spi_chip_read, /* Fast read (0x0B) supported */
|
||||
.voltage = {2700, 3600},
|
||||
},
|
||||
|
||||
@ -3761,7 +3937,8 @@ const struct flashchip flashchips[] = {
|
||||
.model_id = EON_EN25B32,
|
||||
.total_size = 4096,
|
||||
.page_size = 256,
|
||||
.feature_bits = FEATURE_WRSR_WREN,
|
||||
/* OTP: 512B total; enter 0x3A */
|
||||
.feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP,
|
||||
.tested = TEST_UNTESTED,
|
||||
.probe = probe_spi_rdid,
|
||||
.probe_timing = TIMING_ZERO,
|
||||
@ -3784,7 +3961,37 @@ const struct flashchip flashchips[] = {
|
||||
.printlock = spi_prettyprint_status_register_plain, /* TODO: improve */
|
||||
.unlock = spi_disable_blockprotect,
|
||||
.write = spi_chip_write_256,
|
||||
.read = spi_chip_read,
|
||||
.read = spi_chip_read, /* Fast read (0x0B) supported */
|
||||
.voltage = {2700, 3600},
|
||||
},
|
||||
|
||||
{
|
||||
.vendor = "Eon",
|
||||
.name = "EN25P32", /* Uniform version of EN25B32 */
|
||||
.bustype = BUS_SPI,
|
||||
.manufacture_id = EON_ID_NOPREFIX,
|
||||
.model_id = EON_EN25B32,
|
||||
.total_size = 4096,
|
||||
.page_size = 256,
|
||||
/* OTP: 512B total; enter 0x3A */
|
||||
.feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP,
|
||||
.tested = TEST_UNTESTED,
|
||||
.probe = probe_spi_rdid,
|
||||
.probe_timing = TIMING_ZERO,
|
||||
.block_erasers =
|
||||
{
|
||||
{
|
||||
.eraseblocks = { {64 * 1024, 64} },
|
||||
.block_erase = spi_block_erase_d8,
|
||||
}, {
|
||||
.eraseblocks = { {4 * 1024 * 1024, 1} },
|
||||
.block_erase = spi_block_erase_c7,
|
||||
}
|
||||
},
|
||||
.printlock = spi_prettyprint_status_register_plain, /* TODO: improve */
|
||||
.unlock = spi_disable_blockprotect,
|
||||
.write = spi_chip_write_256,
|
||||
.read = spi_chip_read, /* Fast read (0x0B) supported */
|
||||
.voltage = {2700, 3600},
|
||||
},
|
||||
|
||||
@ -3796,7 +4003,8 @@ const struct flashchip flashchips[] = {
|
||||
.model_id = EON_EN25B64,
|
||||
.total_size = 8192,
|
||||
.page_size = 256,
|
||||
.feature_bits = FEATURE_WRSR_WREN,
|
||||
/* OTP: 512B total; enter 0x3A */
|
||||
.feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP,
|
||||
.tested = TEST_UNTESTED,
|
||||
.probe = probe_spi_rdid,
|
||||
.probe_timing = TIMING_ZERO,
|
||||
@ -3819,7 +4027,7 @@ const struct flashchip flashchips[] = {
|
||||
.printlock = spi_prettyprint_status_register_plain, /* TODO: improve */
|
||||
.unlock = spi_disable_blockprotect,
|
||||
.write = spi_chip_write_256,
|
||||
.read = spi_chip_read,
|
||||
.read = spi_chip_read, /* Fast read (0x0B) supported */
|
||||
.voltage = {2700, 3600},
|
||||
},
|
||||
|
||||
@ -3831,7 +4039,8 @@ const struct flashchip flashchips[] = {
|
||||
.model_id = EON_EN25B64,
|
||||
.total_size = 8192,
|
||||
.page_size = 256,
|
||||
.feature_bits = FEATURE_WRSR_WREN,
|
||||
/* OTP: 512B total; enter 0x3A */
|
||||
.feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP,
|
||||
.tested = TEST_UNTESTED,
|
||||
.probe = probe_spi_rdid,
|
||||
.probe_timing = TIMING_ZERO,
|
||||
@ -3854,7 +4063,37 @@ const struct flashchip flashchips[] = {
|
||||
.printlock = spi_prettyprint_status_register_plain, /* TODO: improve */
|
||||
.unlock = spi_disable_blockprotect,
|
||||
.write = spi_chip_write_256,
|
||||
.read = spi_chip_read,
|
||||
.read = spi_chip_read, /* Fast read (0x0B) supported */
|
||||
.voltage = {2700, 3600},
|
||||
},
|
||||
|
||||
{
|
||||
.vendor = "Eon",
|
||||
.name = "EN25P64",
|
||||
.bustype = BUS_SPI,
|
||||
.manufacture_id = EON_ID_NOPREFIX,
|
||||
.model_id = EON_EN25B64,
|
||||
.total_size = 8192,
|
||||
.page_size = 256,
|
||||
/* OTP: 512B total; enter 0x3A */
|
||||
.feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP,
|
||||
.tested = TEST_UNTESTED,
|
||||
.probe = probe_spi_rdid,
|
||||
.probe_timing = TIMING_ZERO,
|
||||
.block_erasers =
|
||||
{
|
||||
{
|
||||
.eraseblocks = { {64 * 1024, 128} },
|
||||
.block_erase = spi_block_erase_d8,
|
||||
}, {
|
||||
.eraseblocks = { {8 * 1024 * 1024, 1} },
|
||||
.block_erase = spi_block_erase_c7,
|
||||
}
|
||||
},
|
||||
.printlock = spi_prettyprint_status_register_plain, /* TODO: improve */
|
||||
.unlock = spi_disable_blockprotect,
|
||||
.write = spi_chip_write_256,
|
||||
.read = spi_chip_read, /* Fast read (0x0B) supported */
|
||||
.voltage = {2700, 3600},
|
||||
},
|
||||
|
||||
|
Reference in New Issue
Block a user