summaryrefslogtreecommitdiffstats
path: root/flashchips.c
diff options
context:
space:
mode:
authorDavid Hendricks <david.hendricks@gmail.com>2018-10-27 20:19:42 +0000
committerDavid Hendricks <david.hendricks@gmail.com>2018-10-29 22:50:49 +0000
commit4987679d73fbbf270c4c2ee628652985d02de3c4 (patch)
treeb07ff5f9d3a2de7e04b9ba7179bccfd8d0d81134 /flashchips.c
parent3a41e2a27e45f17889b0789eb2ba43b97af0d1b6 (diff)
downloadflashrom-4987679d73fbbf270c4c2ee628652985d02de3c4.tar.gz
flashrom-4987679d73fbbf270c4c2ee628652985d02de3c4.tar.bz2
flashrom-4987679d73fbbf270c4c2ee628652985d02de3c4.zip
flashchips: Add W25Q256JV support
Similar to W25Q256FV, but it supports the native 4BA page program instruction (12h). Note that the variant with QE enabled by default shares the device ID of the W25Q256FV. Tested using a Raspberry Pi. Change-Id: I76d7362777d364594d2a733d7e478741b0bef7c4 Signed-off-by: David Hendricks <david.hendricks@gmail.com> Reviewed-on: https://review.coreboot.org/29305 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Nico Huber <nico.h@gmx.de>
Diffstat (limited to 'flashchips.c')
-rw-r--r--flashchips.c47
1 files changed, 47 insertions, 0 deletions
diff --git a/flashchips.c b/flashchips.c
index 8065283e0..bbd5cad88 100644
--- a/flashchips.c
+++ b/flashchips.c
@@ -15550,6 +15550,53 @@ const struct flashchip flashchips[] = {
{
.vendor = "Winbond",
+ .name = "W25Q256JV_M",
+ .bustype = BUS_SPI,
+ .manufacture_id = WINBOND_NEX_ID,
+ .model_id = WINBOND_NEX_W25Q256JV_M,
+ .total_size = 32768,
+ .page_size = 256,
+ /* supports SFDP */
+ /* OTP: 1024B total, 256B reserved; read 0x48; write 0x42, erase 0x44, read ID 0x4B */
+ /* FOUR_BYTE_ADDR: supports 4-bytes addressing mode */
+ .feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_4BA,
+ .tested = TEST_OK_PREW,
+ .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_52,
+ }, {
+ .eraseblocks = { {64 * 1024, 512} },
+ .block_erase = spi_block_erase_dc,
+ }, {
+ .eraseblocks = { {64 * 1024, 512} },
+ .block_erase = spi_block_erase_d8,
+ }, {
+ .eraseblocks = { {32 * 1024 * 1024, 1} },
+ .block_erase = spi_block_erase_60,
+ }, {
+ .eraseblocks = { {32 * 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},
+ },
+
+ {
+ .vendor = "Winbond",
.name = "W25Q20.W",
.bustype = BUS_SPI,
.manufacture_id = WINBOND_NEX_ID,