After asking if page_size was equivalent to a chip's sector size, while I was verifying datasheets and our flashchip support table, Carl-Daniel suggested I convert all chips to use struct eraseblock. Starting from the top of the file and working down, this is the first of many patches.

Signed-off-by: Sean Nelson <[email protected]>
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,
        },
_______________________________________________
flashrom mailing list
[email protected]
http://www.flashrom.org/mailman/listinfo/flashrom

Reply via email to