summaryrefslogtreecommitdiffstats
path: root/flashchips.c
diff options
context:
space:
mode:
authorCarl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net>2009-12-23 12:16:47 +0000
committerCarl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net>2009-12-23 12:16:47 +0000
commitb34f9d0fb4ae7cdcd7643d88d599eba91c838a66 (patch)
treefc19bf1fc1d9f4f95422a9465afd6fe17507b5c7 /flashchips.c
parent94231f86fa7e3f3620ed2574b53d58a37e3eaa80 (diff)
downloadflashrom-b34f9d0fb4ae7cdcd7643d88d599eba91c838a66.zip
flashrom-b34f9d0fb4ae7cdcd7643d88d599eba91c838a66.tar.gz
Add blockwise erase to all supported chips of the SST25 family
SST25VF040.REMS, SST25VF040B, SST25VF040B.REMS, SST25VF080B, SST25VF016B, SST25VF032B Corresponding to flashrom svn r818. Signed-off-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net> Acked-by: Sean Nelson <audiohacked@gmail.com>
Diffstat (limited to 'flashchips.c')
-rw-r--r--flashchips.c146
1 files changed, 127 insertions, 19 deletions
diff --git a/flashchips.c b/flashchips.c
index d5bb853..bf38c4b 100644
--- a/flashchips.c
+++ b/flashchips.c
@@ -2370,10 +2370,29 @@ struct flashchip flashchips[] = {
.model_id = SST_25VF016B,
.total_size = 2048,
.page_size = 256,
- .tested = TEST_OK_PREW,
+ .tested = TEST_OK_PRW,
.probe = probe_spi_rdid,
.probe_timing = TIMING_ZERO,
- .erase = spi_chip_erase_c7,
+ .erase = NULL,
+ .block_erasers =
+ {
+ {
+ .eraseblocks = { {4 * 1024, 512} },
+ .block_erase = spi_block_erase_20,
+ }, {
+ .eraseblocks = { {32 * 1024, 64} },
+ .block_erase = spi_block_erase_52,
+ }, {
+ .eraseblocks = { {64 * 1024, 32} },
+ .block_erase = spi_block_erase_d8,
+ }, {
+ .eraseblocks = { {2 * 1024 * 1024, 1} },
+ .block_erase = spi_block_erase_60,
+ }, {
+ .eraseblocks = { {2 * 1024 * 1024, 1} },
+ .block_erase = spi_block_erase_c7,
+ },
+ },
.write = spi_chip_write_1,
.read = spi_chip_read,
},
@@ -2386,42 +2405,93 @@ struct flashchip flashchips[] = {
.model_id = SST_25VF032B,
.total_size = 4096,
.page_size = 256,
- .tested = TEST_OK_PREW,
+ .tested = TEST_OK_PRW,
.probe = probe_spi_rdid,
.probe_timing = TIMING_ZERO,
- .erase = spi_chip_erase_c7,
+ .erase = NULL,
+ .block_erasers =
+ {
+ {
+ .eraseblocks = { {4 * 1024, 1024} },
+ .block_erase = spi_block_erase_20,
+ }, {
+ .eraseblocks = { {32 * 1024, 128} },
+ .block_erase = spi_block_erase_52,
+ }, {
+ .eraseblocks = { {64 * 1024, 64} },
+ .block_erase = spi_block_erase_d8,
+ }, {
+ .eraseblocks = { {4 * 1024 * 1024, 1} },
+ .block_erase = spi_block_erase_60,
+ }, {
+ .eraseblocks = { {4 * 1024 * 1024, 1} },
+ .block_erase = spi_block_erase_c7,
+ },
+ },
.write = spi_chip_write_1,
.read = spi_chip_read,
},
{
.vendor = "SST",
- .name = "SST25VF040B",
+ .name = "SST25VF040.REMS",
.bustype = CHIP_BUSTYPE_SPI,
.manufacture_id = SST_ID,
- .model_id = SST_25VF040B,
+ .model_id = SST_25VF040_REMS,
.total_size = 512,
.page_size = 256,
- .tested = TEST_UNTESTED,
- .probe = probe_spi_rdid,
+ .tested = TEST_OK_PR,
+ .probe = probe_spi_rems,
.probe_timing = TIMING_ZERO,
- .erase = spi_chip_erase_c7,
+ .erase = NULL,
+ .block_erasers =
+ {
+ {
+ .eraseblocks = { {4 * 1024, 128} },
+ .block_erase = spi_block_erase_20,
+ }, {
+ .eraseblocks = { {32 * 1024, 16} },
+ .block_erase = spi_block_erase_52,
+ }, {
+ .eraseblocks = { {512 * 1024, 1} },
+ .block_erase = spi_block_erase_60,
+ },
+ },
.write = spi_chip_write_1,
.read = spi_chip_read,
},
{
.vendor = "SST",
- .name = "SST25VF040.REMS",
+ .name = "SST25VF040B",
.bustype = CHIP_BUSTYPE_SPI,
.manufacture_id = SST_ID,
- .model_id = SST_25VF040_REMS,
+ .model_id = SST_25VF040B,
.total_size = 512,
- .page_size = 64 * 1024,
- .tested = TEST_OK_PR,
- .probe = probe_spi_rems,
+ .page_size = 256,
+ .tested = TEST_UNTESTED,
+ .probe = probe_spi_rdid,
.probe_timing = TIMING_ZERO,
- .erase = spi_chip_erase_60,
+ .erase = NULL,
+ .block_erasers =
+ {
+ {
+ .eraseblocks = { {4 * 1024, 128} },
+ .block_erase = spi_block_erase_20,
+ }, {
+ .eraseblocks = { {32 * 1024, 16} },
+ .block_erase = spi_block_erase_52,
+ }, {
+ .eraseblocks = { {64 * 1024, 8} },
+ .block_erase = spi_block_erase_d8,
+ }, {
+ .eraseblocks = { {512 * 1024, 1} },
+ .block_erase = spi_block_erase_60,
+ }, {
+ .eraseblocks = { {512 * 1024, 1} },
+ .block_erase = spi_block_erase_c7,
+ },
+ },
.write = spi_chip_write_1,
.read = spi_chip_read,
},
@@ -2433,11 +2503,30 @@ struct flashchip flashchips[] = {
.manufacture_id = SST_ID,
.model_id = SST_25VF040B_REMS,
.total_size = 512,
- .page_size = 64 * 1024,
+ .page_size = 256,
.tested = TEST_OK_PR,
.probe = probe_spi_rems,
.probe_timing = TIMING_ZERO,
- .erase = spi_chip_erase_c7,
+ .erase = NULL,
+ .block_erasers =
+ {
+ {
+ .eraseblocks = { {4 * 1024, 128} },
+ .block_erase = spi_block_erase_20,
+ }, {
+ .eraseblocks = { {32 * 1024, 16} },
+ .block_erase = spi_block_erase_52,
+ }, {
+ .eraseblocks = { {64 * 1024, 8} },
+ .block_erase = spi_block_erase_d8,
+ }, {
+ .eraseblocks = { {512 * 1024, 1} },
+ .block_erase = spi_block_erase_60,
+ }, {
+ .eraseblocks = { {512 * 1024, 1} },
+ .block_erase = spi_block_erase_c7,
+ },
+ },
.write = spi_chip_write_1,
.read = spi_chip_read,
},
@@ -2450,10 +2539,29 @@ struct flashchip flashchips[] = {
.model_id = SST_25VF080B,
.total_size = 1024,
.page_size = 256,
- .tested = TEST_OK_PREW,
+ .tested = TEST_OK_PRW,
.probe = probe_spi_rdid,
.probe_timing = TIMING_ZERO,
- .erase = spi_chip_erase_60_c7,
+ .erase = NULL,
+ .block_erasers =
+ {
+ {
+ .eraseblocks = { {4 * 1024, 256} },
+ .block_erase = spi_block_erase_20,
+ }, {
+ .eraseblocks = { {32 * 1024, 32} },
+ .block_erase = spi_block_erase_52,
+ }, {
+ .eraseblocks = { {64 * 1024, 16} },
+ .block_erase = spi_block_erase_d8,
+ }, {
+ .eraseblocks = { {1024 * 1024, 1} },
+ .block_erase = spi_block_erase_60,
+ }, {
+ .eraseblocks = { {1024 * 1024, 1} },
+ .block_erase = spi_block_erase_c7,
+ },
+ },
.write = spi_chip_write_1,
.read = spi_chip_read,
},
OpenPOWER on IntegriCloud