From patchwork Fri Jun 18 03:21:43 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: Winbond W25Q64 support Date: Fri, 18 Jun 2010 03:21:43 -0000 From: David Hendricks X-Patchwork-Id: 1527 Message-Id: To: flashrom This patch adds support for the W25Q64. It's similar, but has its own datasheet [Link], although it's mentioned in the W25Q{80,16,32} datasheet once. Anyway, I happen to have one and was able to successfully read, erase, and write to it using an NM10 based device. I was only able to successfully erase with D8h block erase and C7h chip erase commands, but other than that it seemed to work great. Patch attached. Signed-off by: David Hendricks (dhendrix@google.com) Acked-by: Carl-Daniel Hailfinger Index: flashchips.c =================================================================== --- flashchips.c (revision 1048) +++ flashchips.c (working copy) @@ -5746,6 +5746,40 @@ { .vendor = "Winbond", + .name = "W25Q64", + .bustype = CHIP_BUSTYPE_SPI, + .manufacture_id = WINBOND_NEX_ID, + .model_id = W_25Q64, + .total_size = 8192, + .page_size = 256, + .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, + } + }, + .write = spi_chip_write_256, + .read = spi_chip_read, + }, + + { + .vendor = "Winbond", .name = "W25x10", .bustype = CHIP_BUSTYPE_SPI, .manufacture_id = WINBOND_NEX_ID, Index: flashchips.h =================================================================== --- flashchips.h (revision 1048) +++ flashchips.h (working copy) @@ -510,6 +510,7 @@ #define W_25Q80 0x4014 #define W_25Q16 0x4015 #define W_25Q32 0x4016 +#define W_25Q64 0x4017 #define W_29C011 0xC1 #define W_29C020C 0x45 /* Same as W29C020 and ASD AE29F2008 */ #define W_29C040P 0x46 /* Same as W29C040 */