Author: hailfinger
Date: Tue Jul 26 16:18:52 2011
New Revision: 1391
URL: http://flashrom.org/trac/flashrom/changeset/1391

Log:
Fix Winbond W29EE011, W29EE012, W29C010M, W29C011A probing.
According to the datasheets probe_w29ee011 is the only valid probe
function for those chips, but we have reports where those chips
were only detected with probe_jedec, and thus we assume that our
datasheets only cover an earlier stepping.

Signed-off-by: Carl-Daniel Hailfinger <[email protected]>
Acked-by: Stefan Tauner <[email protected]>

Modified:
   trunk/flashchips.c
   trunk/w29ee011.c

Modified: trunk/flashchips.c
==============================================================================
--- trunk/flashchips.c  Tue Jul 26 02:54:42 2011        (r1390)
+++ trunk/flashchips.c  Tue Jul 26 16:18:52 2011        (r1391)
@@ -8252,6 +8252,29 @@
 
        {
                .vendor         = "Winbond",
+               .name           = "W29C010(M)/W29C011A/W29EE011/W29EE012-old",
+               .bustype        = CHIP_BUSTYPE_PARALLEL,
+               .manufacture_id = WINBOND_ID,
+               .model_id       = WINBOND_W29C010,
+               .total_size     = 128,
+               .page_size      = 128,
+               .feature_bits   = FEATURE_LONG_RESET,
+               .tested         = TEST_OK_PRE,
+               .probe          = probe_w29ee011,
+               .probe_timing   = TIMING_IGNORED, /* routine doesn't use 
probe_timing (w29ee011.c) */
+               .block_erasers  =
+               {
+                       {
+                               .eraseblocks = { {128 * 1024, 1} },
+                               .block_erase = erase_chip_block_jedec,
+                       }
+               },
+               .write          = write_jedec,
+               .read           = read_memmapped,
+       },
+
+       {/* W29EE011, W29EE012, W29C010M, W29C011A do not support probe_jedec 
according to the datasheet, but it works for newer(?) steppings. */
+               .vendor         = "Winbond",
                .name           = "W29C010(M)/W29C011A/W29EE011/W29EE012",
                .bustype        = CHIP_BUSTYPE_PARALLEL,
                .manufacture_id = WINBOND_ID,
@@ -8322,29 +8345,6 @@
        },
 
        {
-               .vendor         = "Winbond",
-               .name           = "W29C010(M)/W29C011A/W29EE011/W29EE012",
-               .bustype        = CHIP_BUSTYPE_PARALLEL,
-               .manufacture_id = WINBOND_ID,
-               .model_id       = WINBOND_W29C010,
-               .total_size     = 128,
-               .page_size      = 128,
-               .feature_bits   = FEATURE_LONG_RESET,
-               .tested         = TEST_OK_PRE,
-               .probe          = probe_w29ee011,
-               .probe_timing   = TIMING_IGNORED, /* routine doesn't use 
probe_timing (w29ee011.c) */
-               .block_erasers  =
-               {
-                       {
-                               .eraseblocks = { {128 * 1024, 1} },
-                               .block_erase = erase_chip_block_jedec,
-                       }
-               },
-               .write          = write_jedec,
-               .read           = read_memmapped,
-       },
-
-       {
                .vendor         = "Winbond",
                .name           = "W39L040",
                .bustype        = CHIP_BUSTYPE_PARALLEL,

Modified: trunk/w29ee011.c
==============================================================================
--- trunk/w29ee011.c    Tue Jul 26 02:54:42 2011        (r1390)
+++ trunk/w29ee011.c    Tue Jul 26 16:18:52 2011        (r1391)
@@ -22,16 +22,19 @@
 #include "flash.h"
 #include "chipdrivers.h"
 
+/* According to the Winbond W29EE011, W29EE012, W29C010M, W29C011A
+ * datasheets this is the only valid probe function for those chips.
+ */
 int probe_w29ee011(struct flashchip *flash)
 {
        chipaddr bios = flash->virtual_memory;
        uint8_t id1, id2;
 
-       if (!chip_to_probe || strcmp(chip_to_probe, "W29EE011")) {
-               msg_cdbg("Probing disabled for Winbond W29EE011 because "
-                            "the probing sequence puts the AMIC A49LF040A in "
-                            "a funky state. Use 'flashrom -c W29EE011' if you "
-                            "have a board with this chip.\n");
+       if (!chip_to_probe || strcmp(chip_to_probe, flash->name)) {
+               msg_cdbg("Old Winbond W29* probe method disabled because "
+                        "the probing sequence puts the AMIC A49LF040A in "
+                        "a funky state. Use 'flashrom -c %s' if you "
+                        "have a board with such a chip.\n", flash->name);
                return 0;
        }
 

_______________________________________________
flashrom mailing list
[email protected]
http://www.flashrom.org/mailman/listinfo/flashrom

Reply via email to