Drop 82802ab.c as it is identical to sharplhf00l04.c.
[coreboot.git] / util / flashrom / flashchips.c
1 /*
2  * This file is part of the flashrom project.
3  *
4  * Copyright (C) 2000 Silicon Integrated System Corporation
5  * Copyright (C) 2004 Tyan Corp
6  * Copyright (C) 2005-2007 coresystems GmbH <stepan@openbios.org>
7  *
8  * This program is free software; you can redistribute it and/or modify
9  * it under the terms of the GNU General Public License as published by
10  * the Free Software Foundation; either version 2 of the License, or
11  * (at your option) any later version.
12  *
13  * This program is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16  * GNU General Public License for more details.
17  *
18  * You should have received a copy of the GNU General Public License
19  * along with this program; if not, write to the Free Software
20  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
21  */
22
23 #include "flash.h"
24 #ifndef DISABLE_DOC
25 #include "msys_doc.h"
26 #endif
27
28 struct flashchip flashchips[] = {
29         {"Am29F040B",   AMD_ID,         AM_29F040B,     512, 64 * 1024,
30          probe_29f040b, erase_29f040b,  write_29f040b},
31         {"Am29LV040B",  AMD_ID,         AM_29LV040B,    512, 64 * 1024,
32          probe_29f040b, erase_29f040b,  write_29f040b},
33         {"Am29F016D",   AMD_ID,         AM_29F016D,     2048, 64 * 1024,
34          probe_29f040b, erase_29f040b,  write_29f040b},
35         {"AE49F2008",   ASD_ID,         ASD_AE49F2008,  256, 128,
36          probe_jedec,   erase_chip_jedec, write_jedec},
37         {"At29C040A",   ATMEL_ID,       AT_29C040A,     512, 256,
38          probe_jedec,   erase_chip_jedec, write_jedec},
39         {"At29C020",    ATMEL_ID,       AT_29C020,      256, 256,
40          probe_jedec,   erase_chip_jedec, write_jedec},
41         {"At49F002(N)", ATMEL_ID,       AT_49F002N,     256, 256,
42          probe_jedec,   erase_chip_jedec, write_jedec},
43         {"At49F002(N)T",ATMEL_ID,       AT_49F002NT,    256, 256,
44          probe_jedec,   erase_chip_jedec, write_jedec},
45         {"EN29F002(A)(N)T",     EON_ID, EN_29F002T,     256, 256,
46          probe_jedec,   erase_chip_jedec, write_jedec},
47         {"EN29F002(A)(N)B",     EON_ID, EN_29F002B,     256, 256,
48          probe_jedec,   erase_chip_jedec, write_jedec},
49         {"MBM29F400TC", FUJITSU_ID,     MBM29F400TC_STRANGE,    512, 64 * 1024,
50          probe_m29f400bt, erase_m29f400bt, write_coreboot_m29f400bt},
51         {"MX29F002",    MX_ID,          MX_29F002,      256, 64 * 1024,
52          probe_29f002,  erase_29f002,   write_29f002},
53         {"MX25L4005",   MX_ID,          MX_25L4005,     512, 256,
54          probe_spi,     generic_spi_chip_erase_c7,      generic_spi_chip_write, generic_spi_chip_read},
55         {"MX25L8005",   MX_ID,          MX_25L8005,     1024, 256,
56          probe_spi,     generic_spi_chip_erase_c7,      generic_spi_chip_write, generic_spi_chip_read},
57         {"MX25L3205",   MX_ID,          MX_25L3205,     4096, 256,
58          probe_spi,     generic_spi_chip_erase_c7,      generic_spi_chip_write, generic_spi_chip_read},
59         {"S25FL016A",   SPANSION_ID,    SPANSION_S25FL016A,     2048, 256,
60          probe_spi,     generic_spi_chip_erase_c7,      generic_spi_chip_write, generic_spi_chip_read},
61         {"SST25VF040B", SST_ID,         SST_25VF040B,   512,    256,
62          probe_spi,     generic_spi_chip_erase_c7,      generic_spi_chip_write, generic_spi_chip_read},
63         {"SST25VF016B", SST_ID,         SST_25VF016B,   2048,   256,
64          probe_spi,     generic_spi_chip_erase_c7,      generic_spi_chip_write, generic_spi_chip_read},
65         {"SST29EE020A", SST_ID,         SST_29EE020A,   256, 128,
66          probe_jedec,   erase_chip_jedec, write_jedec},
67         {"SST28SF040A", SST_ID,         SST_28SF040,    512, 256,
68          probe_28sf040, erase_28sf040, write_28sf040},
69         {"SST39SF010A", SST_ID,         SST_39SF010,    128, 4096,
70          probe_jedec,   erase_chip_jedec, write_39sf020},
71         {"SST39SF020A", SST_ID,         SST_39SF020,    256, 4096,
72          probe_jedec,   erase_chip_jedec, write_39sf020},
73         {"SST39SF040",  SST_ID,         SST_39SF040,    512, 4096,
74          probe_jedec,   erase_chip_jedec, write_39sf020},
75         {"SST39VF020",  SST_ID,         SST_39VF020,    256, 4096,
76          probe_jedec,   erase_chip_jedec, write_39sf020},
77 // assume similar to 004B, ignoring data sheet
78         {"SST49LF040B", SST_ID,         SST_49LF040B,   512, 64 * 1024,
79          probe_sst_fwhub, erase_sst_fwhub, write_sst_fwhub},
80
81         {"SST49LF040",  SST_ID,         SST_49LF040,    512, 4096,
82          probe_jedec,   erase_49lf040, write_49lf040},
83         {"SST49LF020A", SST_ID,         SST_49LF020A,   256, 16 * 1024,
84          probe_jedec,   erase_49lf040, write_49lf040},
85         {"SST49LF080A", SST_ID,         SST_49LF080A,   1024, 4096,
86          probe_jedec,   erase_49lf040, write_49lf040},
87         {"SST49LF002A/B", SST_ID,       SST_49LF002A,   256, 16 * 1024,
88          probe_sst_fwhub, erase_sst_fwhub, write_sst_fwhub},
89         {"SST49LF003A/B", SST_ID,       SST_49LF003A,   384, 64 * 1024,
90          probe_sst_fwhub, erase_sst_fwhub, write_sst_fwhub},
91         {"SST49LF004A/B", SST_ID,       SST_49LF004A,   512, 64 * 1024,
92          probe_sst_fwhub, erase_sst_fwhub, write_sst_fwhub},
93         {"SST49LF008A", SST_ID,         SST_49LF008A,   1024, 64 * 1024 ,
94          probe_sst_fwhub, erase_sst_fwhub, write_sst_fwhub},
95         {"SST49LF004C", SST_ID,         SST_49LF004C,   512, 4 * 1024,
96          probe_49lfxxxc, erase_49lfxxxc, write_49lfxxxc},
97         {"SST49LF008C", SST_ID,         SST_49LF008C,   1024, 4 * 1024 ,
98          probe_49lfxxxc, erase_49lfxxxc, write_49lfxxxc},
99         {"SST49LF016C", SST_ID,         SST_49LF016C,   2048, 4 * 1024 ,
100          probe_49lfxxxc, erase_49lfxxxc, write_49lfxxxc},
101         {"SST49LF160C", SST_ID,         SST_49LF160C,   2048, 4 * 1024 ,
102          probe_49lfxxxc, erase_49lfxxxc, write_49lfxxxc},
103         {"Pm49FL002",   PMC_ID_NOPREFIX,        PMC_49FL002,    256, 16 * 1024,
104          probe_jedec,   erase_chip_jedec, write_49fl004},
105         {"Pm49FL004",   PMC_ID_NOPREFIX,        PMC_49FL004,    512, 64 * 1024,
106          probe_jedec,   erase_chip_jedec, write_49fl004},
107         {"Pm25LV512",   PMC_ID, PMC_25LV512,    64, 256,
108          probe_spi,     generic_spi_chip_erase_c7,      generic_spi_chip_write, generic_spi_chip_read},
109         {"Pm25LV010",   PMC_ID, PMC_25LV010,    128, 256,
110          probe_spi,     generic_spi_chip_erase_c7,      generic_spi_chip_write, generic_spi_chip_read},
111         {"Pm25LV020",   PMC_ID, PMC_25LV020,    256, 256,
112          probe_spi,     generic_spi_chip_erase_c7,      generic_spi_chip_write, generic_spi_chip_read},
113         {"Pm25LV040",   PMC_ID, PMC_25LV040,    512, 256,
114          probe_spi,     generic_spi_chip_erase_c7,      generic_spi_chip_write, generic_spi_chip_read},
115         {"Pm25LV080B",  PMC_ID, PMC_25LV080B,   1024, 256,
116          probe_spi,     generic_spi_chip_erase_c7,      generic_spi_chip_write, generic_spi_chip_read},
117         {"Pm25LV016B",  PMC_ID, PMC_25LV016B,   2048, 256,
118          probe_spi,     generic_spi_chip_erase_c7,      generic_spi_chip_write, generic_spi_chip_read},
119         {"W29C011",     WINBOND_ID,     W_29C011,       128, 128,
120          probe_jedec,   erase_chip_jedec, write_jedec},
121         {"W29C040P",    WINBOND_ID,     W_29C040P,      512, 256,
122          probe_jedec,   erase_chip_jedec, write_jedec},
123         {"W29C020C",    WINBOND_ID,     W_29C020C,      256, 128,
124          probe_jedec,   erase_chip_jedec, write_jedec},
125         {"W29EE011",    WINBOND_ID,     W_29C011,       128, 128,
126          probe_w29ee011,erase_chip_jedec, write_jedec},
127         {"W49F002U",    WINBOND_ID,     W_49F002U,      256, 128,
128          probe_jedec,   erase_chip_jedec, write_49f002},
129         {"W49V002A",    WINBOND_ID,     W_49V002A,      256, 128,
130          probe_jedec,   erase_chip_jedec, write_49f002},
131         {"W49V002FA",   WINBOND_ID,     W_49V002FA,     256, 128,
132          probe_jedec,   erase_chip_jedec, write_49f002},
133         {"W39V040FA",   WINBOND_ID,     W_39V040FA,     512, 64*1024,
134          probe_jedec,   erase_chip_jedec, write_39sf020},
135         {"W39V040A",    WINBOND_ID,     W_39V040A,      512, 64*1024,
136          probe_jedec,   erase_chip_jedec, write_39sf020},
137         {"W39V040B",    WINBOND_ID,     W_39V040B,      512, 64*1024,
138          probe_jedec,   erase_chip_jedec, write_39sf020},
139         {"W39V080A",    WINBOND_ID,     W_39V080A,      1024, 64*1024,
140          probe_jedec,   erase_chip_jedec, write_39sf020},
141         {"W25x10",      WINBOND_NEX_ID, W_25X10,        128, 256, 
142          probe_spi,     generic_spi_chip_erase_c7,      generic_spi_chip_write, generic_spi_chip_read},
143         {"W25x20",      WINBOND_NEX_ID, W_25X20,        256, 256, 
144          probe_spi,     generic_spi_chip_erase_c7,      generic_spi_chip_write, generic_spi_chip_read},
145         {"W25x40",      WINBOND_NEX_ID, W_25X40,        512, 256, 
146          probe_spi,     generic_spi_chip_erase_c7,      generic_spi_chip_write, generic_spi_chip_read},
147         {"W25x80",      WINBOND_NEX_ID, W_25X80,        1024, 256, 
148          probe_spi,     generic_spi_chip_erase_c7,      generic_spi_chip_write, generic_spi_chip_read},
149         {"M29F002B",    ST_ID,          ST_M29F002B,    256, 64 * 1024,
150          probe_jedec,   erase_chip_jedec, write_jedec},
151         {"M50FW040",    ST_ID,          ST_M50FW040,    512, 64 * 1024,
152          probe_jedec,   erase_chip_jedec, write_jedec},
153         {"M29W040B",    ST_ID,          ST_M29W040B,    512, 64 * 1024,
154          probe_jedec,   erase_chip_jedec, write_jedec},
155         {"M29F002T/NT", ST_ID,          ST_M29F002T,    256, 64 * 1024,
156          probe_jedec,   erase_chip_jedec, write_jedec},
157         {"M29F400BT",   ST_ID,          ST_M29F400BT,   512, 64 * 1024,
158          probe_m29f400bt, erase_m29f400bt, write_coreboot_m29f400bt},
159         {"M50FLW040A",  ST_ID,          ST_M50FLW040A,  512,    64 * 1024,
160          probe_jedec,   erase_chip_jedec,       write_jedec},
161         {"M50FLW040B",  ST_ID,          ST_M50FLW040B,  512,    64 * 1024,
162          probe_jedec,   erase_chip_jedec,       write_jedec},
163         {"M50FLW080A",  ST_ID,          ST_M50FLW080A,  1024,   64 * 1024,
164          probe_jedec,   erase_chip_jedec,       write_jedec},
165         {"M50FLW080B",  ST_ID,          ST_M50FLW080B,  1024,   64 * 1024,
166          probe_jedec,   erase_chip_jedec,       write_jedec},
167         {"M50FW080",    ST_ID,          ST_M50FW080,    1024,   64 * 1024,
168          probe_jedec,   erase_chip_jedec,       write_jedec},
169         {"M50FW016",    ST_ID,          ST_M50FW016,    2048,   64 * 1024,
170          probe_jedec,   erase_chip_jedec,       write_jedec},
171         {"M50LPW116",   ST_ID,          ST_M50LPW116,   2048,   64 * 1024,
172          probe_jedec,   erase_chip_jedec,       write_jedec},
173         {"M29W010B",    ST_ID,          ST_M29W010B,    128,    16 * 1024,
174          probe_jedec,   erase_chip_jedec,       write_jedec},
175         {"M29F040B",    ST_ID,          ST_M29F040B,    512, 64 * 1024,
176          probe_29f040b, erase_29f040b,  write_29f040b},
177         {"M25P05-A",    ST_ID,          ST_M25P05A,     64,     256,
178          probe_spi,     generic_spi_chip_erase_c7,      generic_spi_chip_write, generic_spi_chip_read},
179         {"M25P10-A",    ST_ID,          ST_M25P10A,     128,    256,
180          probe_spi,     generic_spi_chip_erase_c7,      generic_spi_chip_write, generic_spi_chip_read},
181         {"M25P20",      ST_ID,          ST_M25P20,      256,    256,
182          probe_spi,     generic_spi_chip_erase_c7,      generic_spi_chip_write, generic_spi_chip_read},
183         {"M25P40",      ST_ID,          ST_M25P40,      512,    256,
184          probe_spi,     generic_spi_chip_erase_c7,      generic_spi_chip_write, generic_spi_chip_read},
185         {"M25P80",      ST_ID,          ST_M25P80,      1024,   256,
186          probe_spi,     generic_spi_chip_erase_c7,      generic_spi_chip_write, generic_spi_chip_read},
187         {"M25P16",      ST_ID,          ST_M25P16,      2048,   256,
188          probe_spi,     generic_spi_chip_erase_c7,      generic_spi_chip_write, generic_spi_chip_read},
189         {"M25P32",      ST_ID,          ST_M25P32,      4096,   256,
190          probe_spi,     generic_spi_chip_erase_c7,      generic_spi_chip_write, generic_spi_chip_read},
191         {"M25P64",      ST_ID,          ST_M25P64,      8192,   256,
192          probe_spi,     generic_spi_chip_erase_c7,      generic_spi_chip_write, generic_spi_chip_read},
193         {"M25P128",     ST_ID,          ST_M25P128,     16384,  256,
194          probe_spi,     generic_spi_chip_erase_c7,      generic_spi_chip_write, generic_spi_chip_read},
195         {"82802ab",     INTEL_ID,       173,            512, 64 * 1024,
196          probe_lhf00l04, erase_lhf00l04,        write_lhf00l04},
197         {"82802ac",     INTEL_ID,       172,            1024, 64 * 1024,
198          probe_lhf00l04, erase_lhf00l04,        write_lhf00l04},
199         {"F49B002UA",   EMST_ID,        EMST_F49B002UA, 256, 4096,
200          probe_jedec,   erase_chip_jedec, write_49f002},
201 #ifndef DISABLE_DOC
202         {"MD-2802 (M-Systems DiskOnChip Millennium Module)",
203                         MSYSTEMS_ID,    MSYSTEMS_MD2802,8, 8 * 1024,
204          probe_md2802, erase_md2802, write_md2802, read_md2802},
205 #endif
206         {"LHF00L04",    SHARP_ID,       SHARP_LHF00L04, 1024, 64 * 1024,
207          probe_lhf00l04, erase_lhf00l04,  write_lhf00l04},
208         {"S29C51001T",  SYNCMOS_ID,     S29C51001T,     128, 128,
209          probe_jedec,   erase_chip_jedec, write_49f002},
210         {"S29C51002T",  SYNCMOS_ID,     S29C51002T,     256, 128,
211          probe_jedec,   erase_chip_jedec, write_49f002},
212         {"S29C51004T",  SYNCMOS_ID,     S29C51004T,     512, 128,
213          probe_jedec,   erase_chip_jedec, write_49f002},
214         {"S29C31004T",  SYNCMOS_ID,     S29C31004T,     512, 128,
215          probe_jedec,   erase_chip_jedec, write_49f002},
216         {"EON unknown SPI chip", EON_ID_NOPREFIX, GENERIC_DEVICE_ID,    0, 0,
217          probe_spi,     NULL,   NULL},
218         {"MX unknown SPI chip", MX_ID,  GENERIC_DEVICE_ID,      0, 0,
219          probe_spi,     NULL,   NULL},
220         {"PMC unknown SPI chip",        PMC_ID, GENERIC_DEVICE_ID,      0, 0,
221          probe_spi,     NULL,   NULL},
222         {"SST unknown SPI chip",        SST_ID, GENERIC_DEVICE_ID,      0, 0,
223          probe_spi,     NULL,   NULL},
224         {"ST unknown SPI chip", ST_ID,  GENERIC_DEVICE_ID,      0, 0,
225          probe_spi,     NULL,   NULL},
226         {NULL,}
227 };