mirror of
https://review.coreboot.org/flashrom.git
synced 2025-04-27 15:12:36 +02:00
flashchips: enable write-protection for W25Q{64,128}.V
Configuration for W25Q64 was tested on hardware (W25Q64FV). Emulation of W25Q128 in dummyflasher will be extended to support WP. Haven't tested this one on hardware, but it's the same configuration as for W25Q64 except that it has WPS. W25Q64JV chip was renamed to W25Q64JV-.M (those with QPI). W25Q64.V chip was split into W25Q64BV/W25Q64CV/W25Q64FV (no SR3 and WPS) and W25Q64JV-.Q (SR3 and WPS, but no QPI). Change-Id: Iccb69a8d3a0dd2192e2c938caddaf07b1889ed35 Signed-off-by: Sergii Dmytruk <sergii.dmytruk@3mdeb.com> Reviewed-on: https://review.coreboot.org/c/flashrom/+/59071 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Anastasia Klimchuk <aklm@chromium.org> Reviewed-by: Nikolai Artemiev <nartemiev@google.com> Reviewed-by: Edward O'Callaghan <quasisec@chromium.org>
This commit is contained in:
parent
393e19bd2e
commit
7b4c4f3611
80
flashchips.c
80
flashchips.c
@ -17181,7 +17181,7 @@ const struct flashchip flashchips[] = {
|
||||
.page_size = 256,
|
||||
/* supports SFDP */
|
||||
/* OTP: 1024B total, 256B reserved; read 0x48; write 0x42, erase 0x44, read ID 0x4B */
|
||||
.feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP,
|
||||
.feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_WRSR2,
|
||||
.tested = TEST_OK_PREW,
|
||||
.probe = probe_spi_rdid,
|
||||
.probe_timing = TIMING_ZERO,
|
||||
@ -17209,6 +17209,17 @@ const struct flashchip flashchips[] = {
|
||||
.write = spi_chip_write_256,
|
||||
.read = spi_chip_read,
|
||||
.voltage = {2700, 3600},
|
||||
.reg_bits =
|
||||
{
|
||||
.srp = {STATUS1, 7, RW},
|
||||
.srl = {STATUS2, 0, RW},
|
||||
.bp = {{STATUS1, 2, RW}, {STATUS1, 3, RW}, {STATUS1, 4, RW}},
|
||||
.tb = {STATUS1, 5, RW},
|
||||
.sec = {STATUS1, 6, RW},
|
||||
.cmp = {STATUS2, 6, RW},
|
||||
.wps = {STATUS3, 2, RW},
|
||||
},
|
||||
.decode_range = decode_range_spi25,
|
||||
},
|
||||
|
||||
{
|
||||
@ -17953,7 +17964,7 @@ const struct flashchip flashchips[] = {
|
||||
|
||||
{
|
||||
.vendor = "Winbond",
|
||||
.name = "W25Q64.V",
|
||||
.name = "W25Q64BV/W25Q64CV/W25Q64FV",
|
||||
.bustype = BUS_SPI,
|
||||
.manufacture_id = WINBOND_NEX_ID,
|
||||
.model_id = WINBOND_NEX_W25Q64_V,
|
||||
@ -17961,7 +17972,7 @@ const struct flashchip flashchips[] = {
|
||||
.page_size = 256,
|
||||
/* supports SFDP */
|
||||
/* OTP: 1024B total, 256B reserved; read 0x48; write 0x42, erase 0x44, read ID 0x4B */
|
||||
.feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP,
|
||||
.feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_WRSR2,
|
||||
.tested = TEST_OK_PREW,
|
||||
.probe = probe_spi_rdid,
|
||||
.probe_timing = TIMING_ZERO,
|
||||
@ -17989,11 +18000,72 @@ const struct flashchip flashchips[] = {
|
||||
.write = spi_chip_write_256,
|
||||
.read = spi_chip_read,
|
||||
.voltage = {2700, 3600},
|
||||
.reg_bits =
|
||||
{
|
||||
.srp = {STATUS1, 7, RW},
|
||||
.srl = {STATUS2, 0, RW},
|
||||
.bp = {{STATUS1, 2, RW}, {STATUS1, 3, RW}, {STATUS1, 4, RW}},
|
||||
.tb = {STATUS1, 5, RW},
|
||||
.sec = {STATUS1, 6, RW},
|
||||
.cmp = {STATUS2, 6, RW},
|
||||
},
|
||||
.decode_range = decode_range_spi25,
|
||||
},
|
||||
|
||||
{
|
||||
.vendor = "Winbond",
|
||||
.name = "W25Q64JV",
|
||||
.name = "W25Q64JV-.Q",
|
||||
.bustype = BUS_SPI,
|
||||
.manufacture_id = WINBOND_NEX_ID,
|
||||
.model_id = WINBOND_NEX_W25Q64_V,
|
||||
.total_size = 8192,
|
||||
.page_size = 256,
|
||||
/* supports SFDP */
|
||||
/* OTP: 1024B total, 256B reserved; read 0x48; write 0x42, erase 0x44, read ID 0x4B */
|
||||
.feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_WRSR2,
|
||||
.tested = TEST_OK_PREW,
|
||||
.probe = probe_spi_rdid,
|
||||
.probe_timing = TIMING_ZERO,
|
||||
.block_erasers =
|
||||
{
|
||||
{
|
||||
.eraseblocks = { {4 * 1024, 2048} },
|
||||
.block_erase = spi_block_erase_20,
|
||||
}, {
|
||||
.eraseblocks = { {32 * 1024, 256} },
|
||||
.block_erase = spi_block_erase_52,
|
||||
}, {
|
||||
.eraseblocks = { {64 * 1024, 128} },
|
||||
.block_erase = spi_block_erase_d8,
|
||||
}, {
|
||||
.eraseblocks = { {8 * 1024 * 1024, 1} },
|
||||
.block_erase = spi_block_erase_60,
|
||||
}, {
|
||||
.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,
|
||||
.voltage = {2700, 3600},
|
||||
.reg_bits =
|
||||
{
|
||||
.srp = {STATUS1, 7, RW},
|
||||
.srl = {STATUS2, 0, RW},
|
||||
.bp = {{STATUS1, 2, RW}, {STATUS1, 3, RW}, {STATUS1, 4, RW}},
|
||||
.tb = {STATUS1, 5, RW},
|
||||
.sec = {STATUS1, 6, RW},
|
||||
.cmp = {STATUS2, 6, RW},
|
||||
.wps = {STATUS3, 2, RW},
|
||||
},
|
||||
.decode_range = decode_range_spi25,
|
||||
},
|
||||
|
||||
{
|
||||
.vendor = "Winbond",
|
||||
.name = "W25Q64JV-.M",
|
||||
.bustype = BUS_SPI,
|
||||
.manufacture_id = WINBOND_NEX_ID,
|
||||
.model_id = WINBOND_NEX_W25Q64JV,
|
||||
|
Loading…
x
Reference in New Issue
Block a user