From f4eeefd8aba94aca007c8f4b65b551df3a5fa07a Mon Sep 17 00:00:00 2001 From: Jacob Appelbaum Date: Mon, 2 Sep 2019 09:10:43 -0400 Subject: Add support for Winbond W25X05CL This commit adds support for the Winbond W25X05CL SPI flash chip. The Winbond W25X05CL is a 512Kib (64 KiB) SPI flash chip with 4KiB sectors. I have tested this patch with a Bus Pirate (v3b) and an in-circuit W25X05CL flash chip using a test clip. Reading, erasing, and writing all function as expected. Change-Id: I19c33c7da374f0263f30577a10a0f0f1afa4febc Signed-off-by: Jacob Appelbaum Reviewed-on: https://review.coreboot.org/c/flashrom/+/43573 Reviewed-by: Angel Pons Tested-by: build bot (Jenkins) --- flashchips.c | 32 ++++++++++++++++++++++++++++++++ flashchips.h | 1 + 2 files changed, 33 insertions(+) diff --git a/flashchips.c b/flashchips.c index 48405fef8..3d8042d0d 100644 --- a/flashchips.c +++ b/flashchips.c @@ -17327,6 +17327,38 @@ const struct flashchip flashchips[] = { .voltage = {1650, 1950}, /* Fast read (0x0B) and multi I/O supported */ }, + { + .vendor = "Winbond", + .name = "W25X05", + .bustype = BUS_SPI, + .manufacture_id = WINBOND_NEX_ID, + .model_id = WINBOND_NEX_W25X05, + .total_size = 64, + .page_size = 256, + .feature_bits = FEATURE_WRSR_WREN, + .tested = TEST_OK_PREW, + .probe = probe_spi_rdid, + .probe_timing = TIMING_ZERO, + .block_erasers = + { + { + .eraseblocks = { {4 * 1024, 16} }, + .block_erase = spi_block_erase_20, + }, { + .eraseblocks = { {32 * 1024, 2} }, + .block_erase = spi_block_erase_52, + }, { + .eraseblocks = { {64 * 1024, 1} }, + .block_erase = spi_block_erase_d8, + } + }, + .printlock = spi_prettyprint_status_register_plain, + .unlock = spi_disable_blockprotect, + .write = spi_chip_write_256, + .read = spi_chip_read, + .voltage = {2300, 3600}, + }, + { .vendor = "Winbond", .name = "W25X10", diff --git a/flashchips.h b/flashchips.h index c58595d02..f6e2588ce 100644 --- a/flashchips.h +++ b/flashchips.h @@ -917,6 +917,7 @@ #define WINBOND_NEX_W25P80 0x2014 #define WINBOND_NEX_W25P16 0x2015 #define WINBOND_NEX_W25P32 0x2016 +#define WINBOND_NEX_W25X05 0x3010 /* W25X05CL */ #define WINBOND_NEX_W25X10 0x3011 #define WINBOND_NEX_W25X20 0x3012 #define WINBOND_NEX_W25X40 0x3013 -- cgit v1.2.3