Index: flashchips.c =================================================================== --- flashchips.c (revision 809) +++ flashchips.c (working copy) @@ -64,7 +64,17 @@ .tested = TEST_OK_PREW, .probe = probe_29f040b, .probe_timing = TIMING_ZERO, - .erase = erase_29f040b, + .erase = NULL, + .block_erasers = + { + { + .eraseblocks = { {16 * 1024, 8} }, + .block_erase = erase_sector_29f040b, + }, { + .eraseblocks = { {128 * 1024, 1} }, + .block_erase = erase_29f040b, + }, + }, .write = write_pm29f002, .read = read_memmapped, }, @@ -80,7 +90,22 @@ .tested = TEST_UNTESTED, .probe = probe_jedec, .probe_timing = TIMING_ZERO, - .erase = erase_chip_jedec, + .erase = NULL, + .block_erasers = + { + { + .eraseblocks = { + {16*1024, 1}, + {8*1024, 2}, + {32*1024, 1}, + {64*1024, 3}, + }, + .block_erase = erase_sector_jedec, + }, { + .eraseblocks = { {256*1024, 1} } + .block_erase = NULL, + }, + }, .write = write_jedec_1, .read = read_memmapped, }, @@ -96,7 +121,22 @@ .tested = TEST_OK_PRE, .probe = probe_jedec, .probe_timing = TIMING_ZERO, - .erase = erase_chip_jedec, + .erase = NULL, + .block_erasers = + { + { + .eraseblocks = { + {16*1024, 1}, + {8*1024, 2}, + {32*1024, 1}, + {64*1024, 3}, + }, + .block_erase = erase_sector_jedec, + }, { + .eraseblocks = { {256*1024, 1} } + .block_erase = NULL, + }, + }, .write = write_jedec_1, .read = read_memmapped, }, @@ -112,7 +152,17 @@ .tested = TEST_UNTESTED, .probe = probe_29f040b, .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (am29f040b.c) */ - .erase = erase_29f040b, + .erase = NULL, + .block_erasers = + { + { + .eraseblocks = { {64*1024, 32} }, + .block_erase = erase_sector_29f040b, + }, { + .eraseblocks = { {2048*1024, 1} } + .block_erase = erase_29f040b, + }, + }, .write = write_29f040b, .read = read_memmapped, }, @@ -128,7 +178,17 @@ .tested = TEST_OK_PREW, .probe = probe_29f040b, .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (am29f040b.c) */ - .erase = erase_29f040b, + .erase = NULL, + .block_erasers = + { + { + .eraseblocks = { {64*1024, 8} }, + .block_erase = erase_sector_29f040b, + }, { + .eraseblocks = { {512*1024, 1} } + .block_erase = erase_29f040b, + }, + }, .write = write_29f040b, .read = read_memmapped, }, @@ -144,7 +204,17 @@ .tested = TEST_UNTESTED, .probe = probe_jedec, .probe_timing = TIMING_ZERO, - .erase = erase_29f040b, + .erase = NULL, + .block_erasers = + { + { + .eraseblocks = { {64*1024, 16} }, + .block_erase = erase_sector_29f040b, + }, { + .eraseblocks = { {1024*1024, 1} } + .block_erase = erase_29f040b, + }, + }, .write = write_29f040b, .read = read_memmapped, }, @@ -160,7 +230,17 @@ .tested = TEST_UNTESTED, .probe = probe_29f040b, .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (am29f040b.c) */ - .erase = erase_29f040b, + .erase = NULL, + .block_erasers = + { + { + .eraseblocks = { {64*1024, 8} }, + .block_erase = erase_sector_29f040b, + }, { + .eraseblocks = { {512*1024, 1} } + .block_erase = erase_29f040b, + }, + }, .write = write_29f040b, .read = read_memmapped, }, @@ -176,7 +256,17 @@ .tested = TEST_UNTESTED, .probe = probe_29f040b, .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (am29f040b.c) */ - .erase = erase_29f040b, + .erase = NULL, + .block_erasers = + { + { + .eraseblocks = { {64*1024, 16} }, + .block_erase = erase_sector_29f040b, + }, { + .eraseblocks = { {1024*1024, 1} } + .block_erase = erase_29f040b, + }, + }, .write = write_29f040b, .read = read_memmapped, },