Annotation of qemu/roms/openbios/utils/devbios/flashchips.c, revision 1.1

1.1     ! root        1: /*
        !             2:  *                     OpenBIOS - free your system! 
        !             3:  *              ( firmware/flash device driver for Linux )
        !             4:  *                          
        !             5:  *  flashchips.c - contains all information about supported flash devices. 
        !             6:  *  
        !             7:  *  This program is part of a free implementation of the IEEE 1275-1994 
        !             8:  *  Standard for Boot (Initialization Configuration) Firmware.
        !             9:  *
        !            10:  *  Copyright (C) 1998-2004  Stefan Reinauer, <[email protected]>
        !            11:  *
        !            12:  *  This program is free software; you can redistribute it and/or modify
        !            13:  *  it under the terms of the GNU General Public License as published by
        !            14:  *  the Free Software Foundation; version 2 of the License.
        !            15:  *
        !            16:  *  This program is distributed in the hope that it will be useful,
        !            17:  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
        !            18:  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
        !            19:  *  GNU General Public License for more details.
        !            20:  *
        !            21:  *  You should have received a copy of the GNU General Public License
        !            22:  *  along with this program; if not, write to the Free Software
        !            23:  *  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA, 02110-1301 USA
        !            24:  *
        !            25:  */
        !            26: // <-- C++ style comments are for experimental comments only.
        !            27: // They will disappear as soon as I fixed all the stuff.
        !            28: 
        !            29: #include "bios.h"
        !            30: #include "flashchips.h"
        !            31: 
        !            32: unsigned int currflash=0;
        !            33: 
        !            34: const manufacturer_t manufacturers[] =
        !            35: {
        !            36:        { "AMD",                0x01 },
        !            37:        { "AMI",                0x02 },
        !            38:        { "Fairchild",          0x83 },
        !            39:        { "Fujitsu",            0x04 },
        !            40:        { "GTE",                0x85 },
        !            41:        { "Harris",             0x86 },
        !            42:        { "Hitachi",            0x07 },
        !            43:        { "Inmos",              0x08 },
        !            44:        { "Intel",              0x89 },
        !            45:        { "I.T.T.",             0x8A },
        !            46:        { "Intersil",           0x0B },
        !            47:        { "Monolithic Memories",0x8C },
        !            48:        { "Mostek",             0x0D },
        !            49:        { "Motorola",           0x0E },
        !            50:        { "National",           0x8F },
        !            51:        { "NEC",                0x10 },
        !            52:        { "RCA",                0x91 },
        !            53:        { "Raytheon",           0x92 },
        !            54:        { "Rockwell",           0x13 },
        !            55:        { "Seeq",               0x94 },
        !            56:        { "Philips Semi.",      0x15 },
        !            57:        { "Synertek",           0x16 },
        !            58:        { "Texas Instruments",  0x97 },
        !            59:        { "Toshiba",            0x98 },
        !            60:        { "Xicor",              0x19 },
        !            61:        { "Zilog",              0x1A },
        !            62:        { "Eurotechnique",      0x9B },
        !            63:        { "Mitsubishi",         0x1C },
        !            64:        { "PMC Flash",          0x9D },
        !            65:        { "Exel",               0x9E },
        !            66:        { "Atmel",              0x1F },
        !            67:        { "SGS/Thomson",        0x20 },
        !            68:        { "Lattice Semi.",      0xA1 },
        !            69:        { "NCR",                0xA2 },
        !            70:        { "Wafer Scale Integr.",0x23 },
        !            71:        { "IBM",                0xA4 },
        !            72:        { "Tristar",            0x25 },
        !            73:        { "Visic",              0x26 },
        !            74:        { "Intl. CMOS Tech.",   0xA7 },
        !            75:        { "SSSI",               0xA8 },
        !            76:        { "MicrochipTech.",     0x29 },
        !            77:        { "Ricoh Ltd.",         0x2A },
        !            78:        { "VLSI",               0xAB },
        !            79:        { "Micron Technology",  0x2C },
        !            80:        { "Hyundai Elect.",     0xAD },
        !            81:        { "OKI Semiconductor",  0xAE },
        !            82:        { "ACTEL",              0x2F },
        !            83:        { "Sharp",              0xB0 },
        !            84:        { "Catalyst",           0x31 },
        !            85:        { "Panasonic",          0x32 },
        !            86:        { "IDT",                0xB3 },
        !            87:        { "Cypress",            0x34 },
        !            88:        { "DEC",                0xB5 },
        !            89:        { "LSI Logic",          0xB6 },
        !            90:        { "Plessey",            0x37 },
        !            91:        { "UTMC",               0x38 },
        !            92:        { "Thinking Machine",   0xB9 },
        !            93:        { "Thomson CSF",        0xBA },
        !            94:        { "Integ. CMOS(Vertex)",0x3B },
        !            95:        { "Honeywell",          0xBC },
        !            96:        { "Tektronix",          0x3D },
        !            97:        { "Sun Microsystems",   0x3E },
        !            98:        { "SST",                0xBF },
        !            99:        { "MOSEL",              0x40 },
        !           100:        { "Siemens",            0xC1 },
        !           101:        { "Macronix",           0xC2 },
        !           102:        { "Xerox",              0x43 },
        !           103:        { "Plus Logic",         0xC4 },
        !           104:        { "SunDisk",            0x45 },
        !           105:        { "Elan Circuit Tech.", 0x46 },
        !           106:        { "Europ. Silicon Str.",0xC7 },
        !           107:        { "Apple Computer",     0xC8 },
        !           108:        { "Xilinx",             0xC9 },
        !           109:        { "Compaq",             0x4A },
        !           110:        { "Protocol Engines",   0xCB },
        !           111:        { "SCI",                0x4C },
        !           112:        { "Seiko Instruments",  0xCD },
        !           113:        { "Samsung",            0xCE },
        !           114:        { "I3 Design System",   0x4F },
        !           115:        { "Klic",               0xD0 },
        !           116:        { "Crosspoint Sol.",    0x51 },
        !           117:        { "Alliance Semicond.", 0x52 },
        !           118:        { "Tandem",             0xD3 },
        !           119:        { "Hewlett-Packard",    0x54 },
        !           120:        { "Intg. Silicon Sol.", 0xD5 },
        !           121:        { "Brooktree",          0xD6 },
        !           122:        { "New Media",          0x57 },
        !           123:        { "MHS Electronic",     0x58 },
        !           124:        { "Performance Semi.",  0xD9 },
        !           125:        { "Winbond",            0xDA },
        !           126:        { "Kawasaki Steel",     0x5B },
        !           127:        { "Bright Micro",       0xDC },
        !           128:        { "TECMAR",             0x5D },
        !           129:        { "Exar",               0x5E },
        !           130:        { "PCMCIA",             0xDF },
        !           131:        { "Goldstar",           0xE0 },
        !           132:        { "Northern Telecom",   0x61 },
        !           133:        { "Sanyo",              0x62 },
        !           134:        { "Array Microsystems", 0xE3 },
        !           135:        { "Crystal Semicond.",  0x64 },
        !           136:        { "Analog Devices",     0xE5 },
        !           137:        { "PMC-Sierra",         0xE6 },
        !           138:        { "Asparix",            0x67 },
        !           139:        { "Convex Computer",    0x68 },
        !           140:        { "Quality Semicond.",  0xE9 },
        !           141:        { "Nimbus Technology",  0xEA },
        !           142:        { "Transwitch",         0x6B },
        !           143:        { "ITT Intermetall",    0xEC },
        !           144:        { "Cannon",             0x6D },
        !           145:        { "Altera",             0x6E },
        !           146:        { "NEXCOM",             0xEF },
        !           147:        { "QUALCOMM",           0x70 },
        !           148:        { "Sony",               0xF1 },
        !           149:        { "Cray Research",      0xF2 },
        !           150:        { "AMS(Austria Micro)", 0x73 },
        !           151:        { "Vitesse",            0xF4 },
        !           152:        { "Aster Electronics",  0x75 },
        !           153:        { "Bay Networks(Synoptic)",     0x76 },
        !           154:        { "Zentrum Mikroelec.", 0xF7 },
        !           155:        { "TRW",                0xF8 },
        !           156:        { "Thesys",             0x79 },
        !           157:        { "Solbourne Computer", 0x7A },
        !           158:        { "Allied-Signal",      0xFB },
        !           159:        { "Dialog",             0x7C },
        !           160:        { "Media Vision",       0xFD },
        !           161:        { "Level One Commun.",  0xFE },
        !           162:        { "Eon",                0x7F },
        !           163: 
        !           164:        { "Unknown",            0x00 }
        !           165: };
        !           166: 
        !           167: const flashchip_t flashchips[] =
        !           168: {
        !           169:        /* AMD */
        !           170:        { "29F016B",    0xad01,  5, 2048, 0,   1, 1, (int []) { 0,2048 } },
        !           171:        { "29F080B",    0xd501,  5, 1024, 0,   1, 1, (int []) { 0,1024 } },
        !           172:        { "29F800BT",   0xd601,  5, 1024, 0,   1, 1, (int []) { 0,1024 } },
        !           173:        { "29F800BB",   0x5801,  5, 1024, 0,   1, 1, (int []) { 0,1024 } },
        !           174:        { "29F040B",    0xa401,  5,  512, 0,   1, 1, (int []) { 0, 512 } },
        !           175:        { "29F400T",    0x2301,  5,  512, 0,   1, 1, (int []) { 0, 512 } },
        !           176:        { "29LV004T",   0xb501,  3,  512, 0,   1, 1, (int []) { 0, 512 } },
        !           177:        { "29LV400T",   0xb901,  3,  512, 0,   1, 1, (int []) { 0, 512 } },
        !           178:        { "29F400B",    0xab01,  5,  512, 0,   1, 1, (int []) { 0, 512 } },
        !           179:        { "29LV004B",   0xb601,  3,  512, 0,   1, 1, (int []) { 0, 512 } },
        !           180:        { "29LV400B",   0xba01,  3,  512, 0,   1, 1, (int []) { 0, 512 } },
        !           181:        { "28F020A",    0x2901, 12,  256, 0,   1, 1, (int []) { 0, 256 } },
        !           182:        { "28F020",     0x2a01, 12,  256, 0,   1, 1, (int []) { 0, 256 } },
        !           183:        { "29F002T",    0xb001,  5,  256, 0,   1, 1, (int []) { 0, 256 } },
        !           184:        { "29LV002T",   0x4001,  3,  256, 0,   1, 1, (int []) { 0, 256 } },
        !           185:        { "29LV200T",   0x3b01,  3,  256, 0,   1, 1, (int []) { 0, 256 } },
        !           186:        { "29F200T",    0x5101,  5,  256, 0,   1, 1, (int []) { 0, 256 } },
        !           187:        { "29F002B",    0x3401,  5,  256, 0,   1, 1, (int []) { 0, 256 } },
        !           188:        { "29LV002B",   0xc201,  3,  256, 0,   1, 1, (int []) { 0, 256 } },
        !           189:        { "29LV200B",   0xbf01,  3,  256, 0,   1, 1, (int []) { 0, 256 } },
        !           190:        { "29F200B",    0x5701,  5,  256, 0,   1, 1, (int []) { 0, 256 } },
        !           191:        { "29F010",     0x2001,  5,  128, 0,   1, 1, (int []) { 0, 128 } },
        !           192:        { "28F010A",    0xa201, 12,  128, 0,   1, 1, (int []) { 0, 128 } },
        !           193:        { "28F010",     0xa701, 12,  128, 0,   1, 1, (int []) { 0, 128 } },
        !           194:        { "29F100T",    0xd901,  5,   64, 0,   1, 1, (int []) { 0,  64 } },
        !           195:        { "29F100B",    0xdf01,  5,   64, 0,   1, 1, (int []) { 0,  64 } },
        !           196:        { "28F512A",    0xae01, 12,   64, 0,   1, 1, (int []) { 0,  64 } },
        !           197:        { "28F512",     0x2501, 12,   64, 0,   1, 1, (int []) { 0,  64 } },
        !           198:        { "28F256A",    0x2f01, 12,   32, 0,   1, 1, (int []) { 0,  32 } },
        !           199:        { "28F256",     0xa101, 12,   32, 0, 128, 1, (int []) { 0,  32 } },
        !           200: 
        !           201:        /* Atmel */
        !           202:        { "AT49BV010",  0x851f,  3,  128, 0, 128, 1, (int []) { 0, 128 } },
        !           203: //Word { "AT49F1025",  0x851f,  5,  128, 0, 256, 1, (int []) { 0, 128 } },
        !           204:        { "AT49x020",   0x0b1f,  5,  256, 0, 128, 1, (int []) { 0, 256 } },
        !           205:        { "AT49F040",   0x131f,  5,  512, 0, 128, 1, (int []) { 0, 512 } },
        !           206:        { "AT49F010",   0x171f,  5,  128, 0, 128, 1, (int []) { 0, 128 } },
        !           207:        { "AT49F080",   0x231f,  5, 1024, 0, 128, 1, (int []) { 0,1024 } },
        !           208:        { "AT29C040A",  0xa41f,  5,  512, 1, 256, 4, (int []) { 0, 512 } },
        !           209: //Word { "AT29C1024",  0x251f,  3,  128, 0, 128, 0, (int []) { 0, 128 } },
        !           210: //Word { "AT29LV1024", 0x261f,  3,  128, 0, 128, 0, (int []) { 0, 128 } },
        !           211:        { "AT49F080T",  0xa71f,  5, 1024, 0, 128, 1, (int []) { 0,1024 } },
        !           212:        { "AT29BV010A", 0x351f,  3,  128, 1, 128, 4, (int []) { 0, 128 } },
        !           213:        { "AT29BV020",  0xba1f,  3,  256, 1, 256, 4, (int []) { 0, 256 } },
        !           214:        { "AT29LV256",  0xbc1f,  3,   32, 1,  64, 4, (int []) { 0,  32 } },
        !           215:        { "AT29LV512",  0x3d1f,  3,   64, 1, 128, 4, (int []) { 0,  64 } },
        !           216:        { "AT29BV040A", 0xc41f,  3,  512, 1, 256, 4, (int []) { 0, 512 } },
        !           217:        { "AT29C010A",  0xd51f,  5,  128, 1, 128, 4, (int []) { 0, 128 } },
        !           218:        { "AT29C020",   0xda1f,  5,  256, 1, 256, 4, (int []) { 0, 256 } },
        !           219:        { "AT29C256",   0xdc1f,  3,   32, 1,  64, 4, (int []) { 0,  32 } },
        !           220:        { "AT29C512",   0x5d1f,  5,   64, 1, 128, 4, (int []) { 0,  64 } },
        !           221: 
        !           222:        /* Catalyst */
        !           223:        { "CAT28F150T", 0x0431, 12,  192, 1, 128, 3, (int []) { 0, 64,160,168,176,192 } },
        !           224:        { "CAT28F150B", 0x8531, 12,  192, 1, 128, 3, (int []) { 0, 16, 24, 32,128, 192 } },
        !           225:        { "CAT28F001T", 0x9431, 12,  128, 1, 128, 3, (int []) { 0,112,116,120,128 } },
        !           226:        { "CAT28F001B", 0x1531, 12,  128, 1, 128, 3, (int []) { 0,  8, 12, 16,128 } },
        !           227:        { "CAT29F002T", 0xb031,  5,  256, 0, 128, 1, (int []) { 0, 64,128,192,224,232,240,256 } },
        !           228:        { "CAT29F002B", 0x3431,  5,  256, 0, 128, 1, (int []) { 0, 16, 24, 32, 64,128,192,256 } },
        !           229:        { "CAT28F002T", 0x7c31, 12,  256, 1, 128, 3, (int []) { 0,128,224,232,240,256 } },
        !           230:        { "CAT28F002B", 0xfd31, 12,  256, 1, 128, 3, (int []) { 0, 16, 24, 32,128,256 } },
        !           231:        { "CAT28F020" , 0xbd31, 12,  256, 0,   1, 1, (int []) { 0,256 } },
        !           232: //Word { "CAT28F102" , 0x5131, 12,  128, 0,   0, 0, (int []) { 0,128 } },
        !           233:        { "CAT28F010" , 0xb431, 12,  128, 0,   1, 1, (int []) { 0,128 } },
        !           234:        { "CAT28F512" , 0xb831, 12,   64, 0,   1, 1, (int []) { 0, 64 } },
        !           235:        
        !           236:        { "29F040",     0xa404,  5,  512, 1,   1, 1, (int []) { 0, 64, 128, 192, 256, 320, 384, 448, 512 } }, /* Fujitsu */
        !           237:        
        !           238:        
        !           239:        /* Intel */
        !           240:        { "28F010",     0x3489, 12,  128, 0, 128, 1, (int []) { 0,128 } },
        !           241:        { "28F020",     0x3d89, 12,  256, 0, 128, 1, (int []) { 0,256 } },
        !           242:        { "28F001BX-T", 0x9489, 12,  128, 1, 128, 3, (int []) { 0,112,116,120,128 } },
        !           243:        { "28F001BX-B", 0x9589, 12,  128, 1, 128, 3, (int []) { 0,  8, 12, 16,128 } },
        !           244: //Word { "28F400BX-T", 0x7089, 12,  512, 0, 256, 3, (int []) { 0,128,256,384,480,488,496,512 } },
        !           245: //Word { "28F400BX-B", 0xF189, 12,  512, 0, 256, 3, (int []) { 0, 16, 24, 32,128,256,384,512 } },
        !           246: //Word { "28F200-T",   0xF489, 12,  256, 0, 256, 3, (int []) { 0,128,224,232,240,256} },
        !           247: //Word { "28F200-B",   0x7589, 12,  256, 0, 256, 3, (int []) { 0, 16, 24, 32,128,256 } },
        !           248:        { "28F016B3-T", 0xd089,  3, 1024, 0,   1, 3, (int []) { 0, 2048 } },
        !           249:        { "28F016B3-B", 0xd189,  3, 1024, 0,   1, 3, (int []) { 0, 2048 } },
        !           250:        { "28F008B3-T", 0xd289,  3, 1024, 0,   1, 3, (int []) { 0, 1024 } },
        !           251:        { "28F008B3-B", 0xd389,  3, 1024, 0,   1, 3, (int []) { 0, 1024 } },
        !           252:        { "28F004B3-T", 0xd489,  3,  512, 0, 128, 3, (int []) { 0,128,256,384,480,488,496,512 } },
        !           253:        { "28F004B3-B", 0xd589,  3,  512, 0, 128, 3, (int []) { 0, 16, 24, 32,128,256,384,512 } },
        !           254:        { "28F004BX-T", 0xF889, 12,  512, 1, 128, 3, (int []) { 0,128,256,384,480,488,496,512 } },
        !           255:        { "28F004BX-B", 0x7989, 12,  512, 1, 128, 3, (int []) { 0, 16, 24, 32,128,256,384,512 } },
        !           256:        { "28F002-T",   0x7c89, 12,  256, 1, 128, 3, (int []) { 0,128,224,232,240,256 } },
        !           257:        { "28F002-B",   0xfd89, 12,  256, 1, 256, 3, (int []) { 0, 16, 24, 32,128,256 } },
        !           258:        { "28F008??",   0xa289, 12, 1024, 1,   1, 3, (int []) { 0, 64,128,192,256,320,384,448,512,576,640,704,768,832,896,960,1024 } },
        !           259:        { "28F008SA",   0xa189, 12, 1024, 1,   1, 3, (int []) { 0, 64,128,192,256,320,384,448,512,576,640,704,768,832,896,960,1024 } },
        !           260:        { "28F004??",   0xad89,  5,  512, 0,   1, 3, (int []) { 0, 512} },
        !           261:        { "28F008??",   0xac89,  5, 1024, 0,   1, 3, (int []) { 0,1024} },
        !           262: 
        !           263:        /* Eon */
        !           264:        { "E28F004S5",  0x7f8f,  5,  512, 1,   1, 3, (int []) { 0, 64,128,192,256,320,384,448,512 } },
        !           265:        { "EN29F002B",  0x977f,  5,  256, 1,   1, 1, (int []) { 0, 16, 24, 32,128,256 } },
        !           266:        { "EN29F002T",  0x927f,  5,  256, 1,   1, 1, (int []) { 0,128,224,232,240,256 } },
        !           267:        
        !           268:        /* SST */
        !           269:        { "28EE011",    0x01bf,  5,  128, 0, 128, 0, (int []) { 0, 128 } },
        !           270:        { "28EE040",    0x04bf,  5,  512, 0, 128, 0, (int []) { 0, 512 } },
        !           271:        { "29EE010",    0x07bf,  5,  128, 1, 128, 0, (int []) { 0, 128 } },
        !           272:        { "29x010",     0x08bf,  3,  128, 0, 128, 0, (int []) { 0, 128 } },
        !           273:        { "29EE020",    0x10bf,  5,  256, 0, 128, 0, (int []) { 0, 256 } },
        !           274:        { "29x020",     0x92bf,  3,  256, 0, 128, 0, (int []) { 0, 256 } },
        !           275:        { "29x512",     0x3dbf,  3,   64, 0, 128, 0, (int []) { 0,  64 } },
        !           276:        { "29EE512",    0x5dbf,  5,   64, 0, 128, 0, (int []) { 0,  64 } },
        !           277:        { "29x020",     0x92bf,  3,  256, 0, 128, 0, (int []) { 0, 256 } },
        !           278:        { "39SF020",    0xb6bf,  5,  256, 1, 1, 0x81, (int []) { 0,4,8,12,16,20,24,28,32,36,40,44,48,52,56,60,64,68,72,76,80,84,88,92,96,100,104,108,112,116,120,124,128,132,136,140,144,148,152,156,160,164,168,172,176,180,184,188,192,196,200,204,208,212,216,220,224,228,232,236,240,244,248,252,256 } },
        !           279:        { "49LF002A",   0x57bf,  3,  256, 0, 1, 0x81, (int[]) {0,256} },
        !           280:        { "49LF003A",   0x1bbf,  3,  384, 0, 1, 0x81, (int[]) {0,384} },
        !           281:        { "49LF004A",   0x60bf,  3,  512, 1, 1, 0x09, (int[]) {0, 4, 8, 12, 16, 24,28, 32, 512} },
        !           282:        { "49LF008A",   0x5abf,  3, 1024, 0, 1, 0x81, (int[]) {0,1024} },
        !           283:        { "49LF020",    0x61bf,  3,  256, 1, 4096, 0, (int[]) {0,256} },
        !           284:        { "49LF040",    0x51bf,  3,  512, 1, 4096, 0, (int[]) {0,512} },
        !           285:        { "49LF080A",   0x5bbf,  3, 1024, 1, 4096, 0, (int[]) {0,1024} },
        !           286:        
        !           287:        /* Macronix */
        !           288:        { "MX28F1000AP",0x1ac2, 12,  128, 0,   1, 1, (int []) { 0, 16, 32, 48, 64, 80, 96,112,116,120,124,128 } },
        !           289:        { "MX28F1000P", 0x91c2, 12,  128, 0,   1, 1, (int []) { 0, 16, 32, 48, 64, 80, 96,112,128 } },
        !           290:        { "MX28F1000PC",0xf7c2, 12,  128, 0,   1, 1, (int []) { 0, 16, 32, 48, 64, 80, 96,112,128 } },
        !           291: //id?  { "MX28F1000PPC",0x7fc2,12,  128, 0,   1, 1, (int []) { 0, 16, 32, 48, 64, 80, 96,112,116,120,124,128 } },
        !           292:        { "MX29F1610A", 0xfac2,  5, 2048, 1, 128, 0, (int []) { 0, 2048} },
        !           293: 
        !           294:        /* Winbond */
        !           295:        { "W29EE011",   0xc1da,  5,  128, 1, 128, 0, (int []) { 0, 128 } },
        !           296:        { "W29C020",    0x45da,  5,  256, 1, 128, 0, (int []) { 0, 256 } },
        !           297:        { "W29C040/042",0x46da,  5,  512, 1, 256, 0, (int []) { 0, 512 } },
        !           298:        { "W29EE512",   0xc8da,  5,   64, 1, 128, 0, (int []) { 0,  64 } },
        !           299:        { "W29C101",    0x4fda,  5,  128, 1, 256, 0, (int []) { 0, 128 } },
        !           300:        { "W49V002",    0xb0da,  3,  256, 1,   1, 1, (int []) { 0, 64, 128, 192, 224, 232, 240, 256 } },
        !           301:        //{ "W49F002",    0x0bda,  5,  256, 1,   1, 1, (int []) { 0, 64, 128, 192, 224, 232, 240, 256 } },
        !           302:        { "W49F002U",   0x0bda,  5,  256, 1, 1,0x09, (int []) { 0, 128, 224, 232, 240, 256 } }, /* Winbond */
        !           303: 
        !           304:        /* SGS/Thomson */
        !           305:        { "M29F002B(N)T", 0xb020,  5,  256, 0,   1, 0,    (int[]) {0, 64, 128, 256 } },
        !           306:        { "M29F002B(N)B", 0x3420,  5,  256, 0,   1, 0,    (int[]) {0, 256 } },
        !           307:        { "M50FW040",   0x2c20,  3,  512, 1, 128, 0x0b, (int []) { 0, 64, 128, 192, 256, 320, 384, 448, 512 } },
        !           308: 
        !           309:        { "Pm29F002T",  0x1d9d,  5,  256, 1, 1, 0x1, (int []) { 0,128,224,232,240,256 } },
        !           310:        /* default entry */
        !           311:        { "Unknown",    0x0000,  0,    0, 0,   0, 0, (int []) { 0 } }
        !           312: };
        !           313: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.