Changeset 1391


Ignore:
Timestamp:
07/26/11 16:18:52 (10 months ago)
Author:
hailfinger
Message:

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 <c-d.hailfinger.devel.2006@…>
Acked-by: Stefan Tauner <stefan.tauner@…>

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/flashchips.c

    r1386 r1391  
    82538253        { 
    82548254                .vendor         = "Winbond", 
    8255                 .name           = "W29C010(M)/W29C011A/W29EE011/W29EE012", 
    8256                 .bustype        = CHIP_BUSTYPE_PARALLEL, 
    8257                 .manufacture_id = WINBOND_ID, 
    8258                 .model_id       = WINBOND_W29C010, 
    8259                 .total_size     = 128, 
    8260                 .page_size      = 128, 
    8261                 .feature_bits   = FEATURE_LONG_RESET, 
    8262                 .tested         = TEST_OK_PREW, 
    8263                 .probe          = probe_jedec, 
    8264                 .probe_timing   = 10,           /* used datasheet for the W29C011A */ 
    8265                 .block_erasers  = 
    8266                 { 
    8267                         { 
    8268                                 .eraseblocks = { {128 * 1024, 1} }, 
    8269                                 .block_erase = erase_chip_block_jedec, 
    8270                         } 
    8271                 }, 
    8272                 .write          = write_jedec, 
    8273                 .read           = read_memmapped, 
    8274         }, 
    8275  
    8276         { 
    8277                 .vendor         = "Winbond", 
    8278                 .name           = "W29C020(C)/W29C022", 
    8279                 .bustype        = CHIP_BUSTYPE_PARALLEL, 
    8280                 .manufacture_id = WINBOND_ID, 
    8281                 .model_id       = WINBOND_W29C020, 
    8282                 .total_size     = 256, 
    8283                 .page_size      = 128, 
    8284                 .feature_bits   = FEATURE_LONG_RESET, 
    8285                 .tested         = TEST_OK_PREW, 
    8286                 .probe          = probe_jedec, 
    8287                 .probe_timing   = 10, 
    8288                 .block_erasers  = 
    8289                 { 
    8290                         { 
    8291                                 .eraseblocks = { {256 * 1024, 1} }, 
    8292                                 .block_erase = erase_chip_block_jedec, 
    8293                         } 
    8294                 }, 
    8295                 .write          = write_jedec, 
    8296                 .read           = read_memmapped, 
    8297                 .voltage        = {4500, 5500}, 
    8298         }, 
    8299  
    8300         { 
    8301                 .vendor         = "Winbond", 
    8302                 .name           = "W29C040/P", 
    8303                 .bustype        = CHIP_BUSTYPE_PARALLEL, 
    8304                 .manufacture_id = WINBOND_ID, 
    8305                 .model_id       = WINBOND_W29C040, 
    8306                 .total_size     = 512, 
    8307                 .page_size      = 256, 
    8308                 .feature_bits   = FEATURE_LONG_RESET, 
    8309                 .tested         = TEST_UNTESTED, 
    8310                 .probe          = probe_jedec, 
    8311                 .probe_timing   = 10,  
    8312                 .block_erasers  = 
    8313                 { 
    8314                         { 
    8315                                 .eraseblocks = { {512 * 1024, 1} }, 
    8316                                 .block_erase = erase_chip_block_jedec, 
    8317                         } 
    8318                 }, 
    8319                 .write          = write_jedec, 
    8320                 .read           = read_memmapped, 
    8321                 .voltage        = {4500, 5500}, 
    8322         }, 
    8323  
    8324         { 
    8325                 .vendor         = "Winbond", 
    8326                 .name           = "W29C010(M)/W29C011A/W29EE011/W29EE012", 
     8255                .name           = "W29C010(M)/W29C011A/W29EE011/W29EE012-old", 
    83278256                .bustype        = CHIP_BUSTYPE_PARALLEL, 
    83288257                .manufacture_id = WINBOND_ID, 
     
    83438272                .write          = write_jedec, 
    83448273                .read           = read_memmapped, 
     8274        }, 
     8275 
     8276        {/* W29EE011, W29EE012, W29C010M, W29C011A do not support probe_jedec according to the datasheet, but it works for newer(?) steppings. */ 
     8277                .vendor         = "Winbond", 
     8278                .name           = "W29C010(M)/W29C011A/W29EE011/W29EE012", 
     8279                .bustype        = CHIP_BUSTYPE_PARALLEL, 
     8280                .manufacture_id = WINBOND_ID, 
     8281                .model_id       = WINBOND_W29C010, 
     8282                .total_size     = 128, 
     8283                .page_size      = 128, 
     8284                .feature_bits   = FEATURE_LONG_RESET, 
     8285                .tested         = TEST_OK_PREW, 
     8286                .probe          = probe_jedec, 
     8287                .probe_timing   = 10,           /* used datasheet for the W29C011A */ 
     8288                .block_erasers  = 
     8289                { 
     8290                        { 
     8291                                .eraseblocks = { {128 * 1024, 1} }, 
     8292                                .block_erase = erase_chip_block_jedec, 
     8293                        } 
     8294                }, 
     8295                .write          = write_jedec, 
     8296                .read           = read_memmapped, 
     8297        }, 
     8298 
     8299        { 
     8300                .vendor         = "Winbond", 
     8301                .name           = "W29C020(C)/W29C022", 
     8302                .bustype        = CHIP_BUSTYPE_PARALLEL, 
     8303                .manufacture_id = WINBOND_ID, 
     8304                .model_id       = WINBOND_W29C020, 
     8305                .total_size     = 256, 
     8306                .page_size      = 128, 
     8307                .feature_bits   = FEATURE_LONG_RESET, 
     8308                .tested         = TEST_OK_PREW, 
     8309                .probe          = probe_jedec, 
     8310                .probe_timing   = 10, 
     8311                .block_erasers  = 
     8312                { 
     8313                        { 
     8314                                .eraseblocks = { {256 * 1024, 1} }, 
     8315                                .block_erase = erase_chip_block_jedec, 
     8316                        } 
     8317                }, 
     8318                .write          = write_jedec, 
     8319                .read           = read_memmapped, 
     8320                .voltage        = {4500, 5500}, 
     8321        }, 
     8322 
     8323        { 
     8324                .vendor         = "Winbond", 
     8325                .name           = "W29C040/P", 
     8326                .bustype        = CHIP_BUSTYPE_PARALLEL, 
     8327                .manufacture_id = WINBOND_ID, 
     8328                .model_id       = WINBOND_W29C040, 
     8329                .total_size     = 512, 
     8330                .page_size      = 256, 
     8331                .feature_bits   = FEATURE_LONG_RESET, 
     8332                .tested         = TEST_UNTESTED, 
     8333                .probe          = probe_jedec, 
     8334                .probe_timing   = 10,  
     8335                .block_erasers  = 
     8336                { 
     8337                        { 
     8338                                .eraseblocks = { {512 * 1024, 1} }, 
     8339                                .block_erase = erase_chip_block_jedec, 
     8340                        } 
     8341                }, 
     8342                .write          = write_jedec, 
     8343                .read           = read_memmapped, 
     8344                .voltage        = {4500, 5500}, 
    83458345        }, 
    83468346 
  • trunk/w29ee011.c

    r1087 r1391  
    2323#include "chipdrivers.h" 
    2424 
     25/* According to the Winbond W29EE011, W29EE012, W29C010M, W29C011A 
     26 * datasheets this is the only valid probe function for those chips. 
     27 */ 
    2528int probe_w29ee011(struct flashchip *flash) 
    2629{ 
     
    2831        uint8_t id1, id2; 
    2932 
    30         if (!chip_to_probe || strcmp(chip_to_probe, "W29EE011")) { 
    31                 msg_cdbg("Probing disabled for Winbond W29EE011 because " 
    32                              "the probing sequence puts the AMIC A49LF040A in " 
    33                              "a funky state. Use 'flashrom -c W29EE011' if you " 
    34                              "have a board with this chip.\n"); 
     33        if (!chip_to_probe || strcmp(chip_to_probe, flash->name)) { 
     34                msg_cdbg("Old Winbond W29* probe method disabled because " 
     35                         "the probing sequence puts the AMIC A49LF040A in " 
     36                         "a funky state. Use 'flashrom -c %s' if you " 
     37                         "have a board with such a chip.\n", flash->name); 
    3538                return 0; 
    3639        } 
Note: See TracChangeset for help on using the changeset viewer.