blob: 8736b44e364d024cfbc390e20c690ac3de5c1035 [file] [log] [blame]
Ollie Lho184a4042005-11-26 21:55:36 +00001/*
Uwe Hermannd1107642007-08-29 17:52:32 +00002 * This file is part of the flashrom project.
Ollie Lho184a4042005-11-26 21:55:36 +00003 *
Uwe Hermannd22a1d42007-09-09 20:21:05 +00004 * Copyright (C) 2000 Silicon Integrated System Corporation
5 * Copyright (C) 2004 Tyan Corp
Stefan Reinauer4c390c82008-07-02 13:33:09 +00006 * Copyright (C) 2005-2008 coresystems GmbH <stepan@openbios.org>
Uwe Hermannd1107642007-08-29 17:52:32 +00007 *
Stefan Reinauerce532972007-05-23 17:20:56 +00008 * 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.
Ollie Lho184a4042005-11-26 21:55:36 +000012 *
Stefan Reinauerce532972007-05-23 17:20:56 +000013 * 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.
Ollie Lho184a4042005-11-26 21:55:36 +000017 *
Stefan Reinauerce532972007-05-23 17:20:56 +000018 * You should have received a copy of the GNU General Public License
19 * along with this program; if not, write to the Free Software
Uwe Hermannd1107642007-08-29 17:52:32 +000020 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Ollie Lho184a4042005-11-26 21:55:36 +000021 */
22
23#include "flash.h"
Ollie Lho184a4042005-11-26 21:55:36 +000024
Uwe Hermannfc425e82008-03-16 02:06:25 +000025/**
26 * List of supported flash ROM chips.
27 *
28 * Please keep the list sorted by vendor name and chip name, so that
29 * the output of 'flashrom -L' is alphabetically sorted.
30 */
Ollie Lho184a4042005-11-26 21:55:36 +000031struct flashchip flashchips[] = {
Uwe Hermannfc425e82008-03-16 02:06:25 +000032
FENG yu ningff692fb2008-12-08 18:15:10 +000033 /* Vendor, Chip, Vendor ID, Chip ID,
34 * Total size (kB), Page size (B),
35 * Test status,
36 * Probe function, Erase function, Write function, Read function
37 */
38
Stephan Guilloux5c5b5252009-01-08 03:40:17 +000039 {
40 .vendor = "AMD",
41 .name = "Am29F002(N)BB",
42 .manufacture_id = AMD_ID,
43 .model_id = AM_29F002BB,
44 .total_size = 256,
45 .page_size = 256,
46 .tested = TEST_UNTESTED,
47 .probe = probe_jedec,
48 .erase = erase_chip_jedec,
49 .write = write_en29f002a,
FENG yu ningff692fb2008-12-08 18:15:10 +000050 },
51
Stephan Guilloux5c5b5252009-01-08 03:40:17 +000052 {
53 .vendor = "AMD",
54 .name = "Am29F002(N)BT",
55 .manufacture_id = AMD_ID,
56 .model_id = AM_29F002BT,
57 .total_size = 256,
58 .page_size = 256,
59 .tested = TEST_OK_PREW,
60 .probe = probe_jedec,
61 .erase = erase_chip_jedec,
62 .write = write_en29f002a,
FENG yu ningff692fb2008-12-08 18:15:10 +000063 },
64
Stephan Guilloux5c5b5252009-01-08 03:40:17 +000065 {
66 .vendor = "AMD",
67 .name = "Am29F016D",
68 .manufacture_id = AMD_ID,
69 .model_id = AM_29F016D,
70 .total_size = 2048,
71 .page_size = 64 * 1024,
72 .tested = TEST_UNTESTED,
73 .probe = probe_29f040b,
74 .erase = erase_29f040b,
75 .write = write_29f040b,
FENG yu ningff692fb2008-12-08 18:15:10 +000076 },
77
Stephan Guilloux5c5b5252009-01-08 03:40:17 +000078 {
79 .vendor = "AMD",
80 .name = "Am29F040B",
81 .manufacture_id = AMD_ID,
82 .model_id = AM_29F040B,
83 .total_size = 512,
84 .page_size = 64 * 1024,
85 .tested = TEST_OK_PREW,
86 .probe = probe_29f040b,
87 .erase = erase_29f040b,
88 .write = write_29f040b,
FENG yu ningff692fb2008-12-08 18:15:10 +000089 },
90
Stephan Guilloux5c5b5252009-01-08 03:40:17 +000091 {
92 .vendor = "AMD",
93 .name = "Am29LV040B",
94 .manufacture_id = AMD_ID,
95 .model_id = AM_29LV040B,
96 .total_size = 512,
97 .page_size = 64 * 1024,
98 .tested = TEST_UNTESTED,
99 .probe = probe_29f040b,
100 .erase = erase_29f040b,
101 .write = write_29f040b,
FENG yu ningff692fb2008-12-08 18:15:10 +0000102 },
103
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000104 {
105 .vendor = "ASD",
106 .name = "AE49F2008",
107 .manufacture_id = ASD_ID,
108 .model_id = ASD_AE49F2008,
109 .total_size = 256,
110 .page_size = 128,
111 .tested = TEST_UNTESTED,
112 .probe = probe_jedec,
113 .erase = erase_chip_jedec,
114 .write = write_jedec,
FENG yu ningff692fb2008-12-08 18:15:10 +0000115 },
116
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000117 {
118 .vendor = "Atmel",
119 .name = "AT25DF021",
120 .manufacture_id = ATMEL_ID,
121 .model_id = AT_25DF021,
122 .total_size = 256,
123 .page_size = 256,
124 .tested = TEST_UNTESTED,
125 .probe = probe_spi_rdid,
Carl-Daniel Hailfingerf8bc28f2009-01-08 16:53:13 +0000126 .erase = spi_chip_erase_60_c7,
127 .write = spi_chip_write,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000128 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000129 },
130
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000131 {
132 .vendor = "Atmel",
133 .name = "AT25DF041A",
134 .manufacture_id = ATMEL_ID,
135 .model_id = AT_25DF041A,
136 .total_size = 512,
137 .page_size = 256,
138 .tested = TEST_UNTESTED,
139 .probe = probe_spi_rdid,
Carl-Daniel Hailfingerf8bc28f2009-01-08 16:53:13 +0000140 .erase = spi_chip_erase_60_c7,
141 .write = spi_chip_write,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000142 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000143 },
144
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000145 {
146 .vendor = "Atmel",
147 .name = "AT25DF081",
148 .manufacture_id = ATMEL_ID,
149 .model_id = AT_25DF081,
150 .total_size = 1024,
151 .page_size = 256,
152 .tested = TEST_UNTESTED,
153 .probe = probe_spi_rdid,
Carl-Daniel Hailfingerf8bc28f2009-01-08 16:53:13 +0000154 .erase = spi_chip_erase_60_c7,
155 .write = spi_chip_write,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000156 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000157 },
158
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000159 {
160 .vendor = "Atmel",
161 .name = "AT25DF161",
162 .manufacture_id = ATMEL_ID,
163 .model_id = AT_25DF161,
164 .total_size = 2048,
165 .page_size = 256,
166 .tested = TEST_UNTESTED,
167 .probe = probe_spi_rdid,
Carl-Daniel Hailfingerf8bc28f2009-01-08 16:53:13 +0000168 .erase = spi_chip_erase_60_c7,
169 .write = spi_chip_write,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000170 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000171 },
172
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000173 {
174 .vendor = "Atmel",
175 .name = "AT25DF321",
176 .manufacture_id = ATMEL_ID,
177 .model_id = AT_25DF321,
178 .total_size = 4096,
179 .page_size = 256,
180 .tested = TEST_OK_PREW,
181 .probe = probe_spi_rdid,
Carl-Daniel Hailfingerf8bc28f2009-01-08 16:53:13 +0000182 .erase = spi_chip_erase_60_c7,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000183 .write = spi_chip_write,
184 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000185 },
186
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000187 {
188 .vendor = "Atmel",
189 .name = "AT25DF321A",
190 .manufacture_id = ATMEL_ID,
191 .model_id = AT_25DF321A,
192 .total_size = 4096,
193 .page_size = 256,
194 .tested = TEST_UNTESTED,
195 .probe = probe_spi_rdid,
Carl-Daniel Hailfingerf8bc28f2009-01-08 16:53:13 +0000196 .erase = spi_chip_erase_60_c7,
197 .write = spi_chip_write,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000198 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000199 },
200
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000201 {
202 .vendor = "Atmel",
203 .name = "AT25DF641",
204 .manufacture_id = ATMEL_ID,
205 .model_id = AT_25DF641,
206 .total_size = 8192,
207 .page_size = 256,
208 .tested = TEST_UNTESTED,
209 .probe = probe_spi_rdid,
Carl-Daniel Hailfingerf8bc28f2009-01-08 16:53:13 +0000210 .erase = spi_chip_erase_60_c7,
211 .write = spi_chip_write,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000212 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000213 },
214
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000215 {
216 .vendor = "Atmel",
217 .name = "AT25F512B",
218 .manufacture_id = ATMEL_ID,
219 .model_id = AT_25F512B,
220 .total_size = 64,
221 .page_size = 256,
222 .tested = TEST_UNTESTED,
223 .probe = probe_spi_rdid,
Carl-Daniel Hailfingerf8bc28f2009-01-08 16:53:13 +0000224 .erase = spi_chip_erase_60_c7,
225 .write = spi_chip_write,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000226 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000227 },
228
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000229 {
230 .vendor = "Atmel",
231 .name = "AT25FS010",
232 .manufacture_id = ATMEL_ID,
233 .model_id = AT_25FS010,
234 .total_size = 128,
235 .page_size = 256,
236 .tested = TEST_UNTESTED,
237 .probe = probe_spi_rdid,
Carl-Daniel Hailfingerf8bc28f2009-01-08 16:53:13 +0000238 .erase = spi_chip_erase_60_c7,
239 .write = spi_chip_write,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000240 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000241 },
242
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000243 {
244 .vendor = "Atmel",
245 .name = "AT25FS040",
246 .manufacture_id = ATMEL_ID,
247 .model_id = AT_25FS040,
248 .total_size = 512,
249 .page_size = 256,
250 .tested = TEST_UNTESTED,
251 .probe = probe_spi_rdid,
Carl-Daniel Hailfingerf8bc28f2009-01-08 16:53:13 +0000252 .erase = spi_chip_erase_60_c7,
253 .write = spi_chip_write,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000254 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000255 },
256
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000257 {
258 .vendor = "Atmel",
259 .name = "AT26DF041",
260 .manufacture_id = ATMEL_ID,
261 .model_id = AT_26DF041,
262 .total_size = 512,
263 .page_size = 256,
264 .tested = TEST_UNTESTED,
265 .probe = probe_spi_rdid,
266 .erase = NULL,
267 .write = NULL /* Incompatible Page write */,
268 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000269 },
270
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000271 {
272 .vendor = "Atmel",
273 .name = "AT26DF081A",
274 .manufacture_id = ATMEL_ID,
275 .model_id = AT_26DF081A,
276 .total_size = 1024,
277 .page_size = 256,
278 .tested = TEST_UNTESTED,
279 .probe = probe_spi_rdid,
Carl-Daniel Hailfingerf8bc28f2009-01-08 16:53:13 +0000280 .erase = spi_chip_erase_60_c7,
281 .write = spi_chip_write,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000282 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000283 },
284
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000285 {
286 .vendor = "Atmel",
287 .name = "AT26DF161",
288 .manufacture_id = ATMEL_ID,
289 .model_id = AT_26DF161,
290 .total_size = 2048,
291 .page_size = 256,
292 .tested = TEST_UNTESTED,
293 .probe = probe_spi_rdid,
Carl-Daniel Hailfingerf8bc28f2009-01-08 16:53:13 +0000294 .erase = spi_chip_erase_60_c7,
295 .write = spi_chip_write,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000296 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000297 },
298
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000299 {
300 .vendor = "Atmel",
301 .name = "AT26DF161A",
302 .manufacture_id = ATMEL_ID,
303 .model_id = AT_26DF161A,
304 .total_size = 2048,
305 .page_size = 256,
306 .tested = TEST_UNTESTED,
307 .probe = probe_spi_rdid,
Carl-Daniel Hailfingerf8bc28f2009-01-08 16:53:13 +0000308 .erase = spi_chip_erase_60_c7,
309 .write = spi_chip_write,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000310 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000311 },
312
313 /*The AT26DF321 has the same ID as the AT25DF321. */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000314 /*{
315 .vendor = "Atmel",
316 .name = "AT26DF321",
317 .manufacture_id = ATMEL_ID,
318 .model_id = AT_26DF321,
319 .total_size = 4096,
320 .page_size = 256,
321 .tested = TEST_UNTESTED,
322 .probe = probe_spi_rdid,
Carl-Daniel Hailfingerf8bc28f2009-01-08 16:53:13 +0000323 .erase = spi_chip_erase_60_c7,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000324 .write = spi_chip_write,
325 .read = spi_chip_read,
326 },*/
FENG yu ningff692fb2008-12-08 18:15:10 +0000327
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000328 {
329 .vendor = "Atmel",
330 .name = "AT26F004",
331 .manufacture_id = ATMEL_ID,
332 .model_id = AT_26F004,
333 .total_size = 512,
334 .page_size = 256,
335 .tested = TEST_UNTESTED,
336 .probe = probe_spi_rdid,
Carl-Daniel Hailfingerf8bc28f2009-01-08 16:53:13 +0000337 .erase = spi_chip_erase_60_c7,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000338 .write = NULL /* Incompatible Page write */,
339 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000340 },
341
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000342 {
343 .vendor = "Atmel",
344 .name = "AT29C020",
345 .manufacture_id = ATMEL_ID,
346 .model_id = AT_29C020,
347 .total_size = 256,
348 .page_size = 256,
349 .tested = TEST_OK_PREW,
350 .probe = probe_jedec,
351 .erase = erase_chip_jedec,
352 .write = write_jedec,
FENG yu ningff692fb2008-12-08 18:15:10 +0000353 },
354
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000355 {
356 .vendor = "Atmel",
357 .name = "AT29C040A",
358 .manufacture_id = ATMEL_ID,
359 .model_id = AT_29C040A,
360 .total_size = 512,
361 .page_size = 256,
362 .tested = TEST_UNTESTED,
363 .probe = probe_jedec,
364 .erase = erase_chip_jedec,
365 .write = write_jedec,
FENG yu ningff692fb2008-12-08 18:15:10 +0000366 },
367
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000368 {
369 .vendor = "Atmel",
370 .name = "AT45CS1282",
371 .manufacture_id = ATMEL_ID,
372 .model_id = AT_45CS1282,
373 .total_size = 16896/*!*/,
374 .page_size = 1056/*!*/,
375 .tested = TEST_BAD_READ,
376 .probe = probe_spi_rdid,
377 .erase = NULL,
378 .write = NULL /* Incompatible Page write */,
379 .read = NULL /* Incompatible read */,
FENG yu ningff692fb2008-12-08 18:15:10 +0000380 }, /* No power of two sizes */
381
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000382 {
383 .vendor = "Atmel",
384 .name = "AT45DB011D",
385 .manufacture_id = ATMEL_ID,
386 .model_id = AT_45DB011D,
387 .total_size = 128/*!*/,
388 .page_size = 256/*!*/,
389 .tested = TEST_BAD_READ,
390 .probe = probe_spi_rdid,
391 .erase = NULL,
392 .write = NULL,
393 .read = NULL,
FENG yu ningff692fb2008-12-08 18:15:10 +0000394 }, /* Size can only be determined from status register */
395
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000396 {
397 .vendor = "Atmel",
398 .name = "AT45DB021D",
399 .manufacture_id = ATMEL_ID,
400 .model_id = AT_45DB021D,
401 .total_size = 256/*!*/,
402 .page_size = 256/*!*/,
403 .tested = TEST_BAD_READ,
404 .probe = probe_spi_rdid,
405 .erase = NULL,
406 .write = NULL,
407 .read = NULL,
FENG yu ningff692fb2008-12-08 18:15:10 +0000408 }, /* Size can only be determined from status register */
409
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000410 {
411 .vendor = "Atmel",
412 .name = "AT45DB041D",
413 .manufacture_id = ATMEL_ID,
414 .model_id = AT_45DB041D,
415 .total_size = 512/*!*/,
416 .page_size = 256/*!*/,
417 .tested = TEST_BAD_READ,
418 .probe = probe_spi_rdid,
419 .erase = NULL,
420 .write = NULL,
421 .read = NULL,
FENG yu ningff692fb2008-12-08 18:15:10 +0000422 }, /* Size can only be determined from status register */
423
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000424 {
425 .vendor = "Atmel",
426 .name = "AT45DB081D",
427 .manufacture_id = ATMEL_ID,
428 .model_id = AT_45DB081D,
429 .total_size = 1024/*!*/,
430 .page_size = 256/*!*/,
431 .tested = TEST_BAD_READ,
432 .probe = probe_spi_rdid,
433 .erase = NULL,
434 .write = NULL,
435 .read = NULL,
FENG yu ningff692fb2008-12-08 18:15:10 +0000436 }, /* Size can only be determined from status register */
437
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000438 {
439 .vendor = "Atmel",
440 .name = "AT45DB161D",
441 .manufacture_id = ATMEL_ID,
442 .model_id = AT_45DB161D,
443 .total_size = 2048/*!*/,
444 .page_size = 512/*!*/,
445 .tested = TEST_BAD_READ,
446 .probe = probe_spi_rdid,
447 .erase = NULL,
448 .write = NULL,
449 .read = NULL,
FENG yu ningff692fb2008-12-08 18:15:10 +0000450 }, /* Size can only be determined from status register */
451
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000452 {
453 .vendor = "Atmel",
454 .name = "AT45DB321C",
455 .manufacture_id = ATMEL_ID,
456 .model_id = AT_45DB321C,
457 .total_size = 4224/*!*/,
458 .page_size = 528/*!*/,
459 .tested = TEST_BAD_READ,
460 .probe = probe_spi_rdid,
461 .erase = NULL,
462 .write = NULL,
463 .read = NULL /* Incompatible read */,
FENG yu ningff692fb2008-12-08 18:15:10 +0000464 }, /* No power of two sizes */
465
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000466 {
467 .vendor = "Atmel",
468 .name = "AT45DB321D",
469 .manufacture_id = ATMEL_ID,
470 .model_id = AT_45DB321D,
471 .total_size = 4096/*!*/,
472 .page_size = 512/*!*/,
473 .tested = TEST_BAD_READ,
474 .probe = probe_spi_rdid,
475 .erase = NULL,
476 .write = NULL,
477 .read = NULL,
FENG yu ningff692fb2008-12-08 18:15:10 +0000478 }, /* Size can only be determined from status register */
479
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000480 {
481 .vendor = "Atmel",
482 .name = "AT45DB642D",
483 .manufacture_id = ATMEL_ID,
484 .model_id = AT_45DB642D,
485 .total_size = 8192/*!*/,
486 .page_size = 1024/*!*/,
487 .tested = TEST_BAD_READ,
488 .probe = probe_spi_rdid,
489 .erase = NULL,
490 .write = NULL,
491 .read = NULL,
FENG yu ningff692fb2008-12-08 18:15:10 +0000492 }, /* Size can only be determined from status register */
493
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000494 {
495 .vendor = "Atmel",
496 .name = "AT49F002(N)",
497 .manufacture_id = ATMEL_ID,
498 .model_id = AT_49F002N,
499 .total_size = 256,
500 .page_size = 256,
501 .tested = TEST_UNTESTED,
502 .probe = probe_jedec,
503 .erase = erase_chip_jedec,
504 .write = write_49f002,
FENG yu ningff692fb2008-12-08 18:15:10 +0000505 },
506
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000507 {
508 .vendor = "Atmel",
509 .name = "AT49F002(N)T",
510 .manufacture_id = ATMEL_ID,
511 .model_id = AT_49F002NT,
512 .total_size = 256,
513 .page_size = 256,
514 .tested = TEST_OK_PREW,
515 .probe = probe_jedec,
516 .erase = erase_chip_jedec,
517 .write = write_49f002,
FENG yu ningff692fb2008-12-08 18:15:10 +0000518 },
519
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000520 {
521 .vendor = "AMIC",
522 .name = "A25L40P",
523 .manufacture_id = AMIC_ID,
524 .model_id = AMIC_A25L40P,
525 .total_size = 512,
526 .page_size = 256,
527 .tested = TEST_OK_PREW,
528 .probe = probe_spi_rdid4,
529 .erase = spi_chip_erase_c7,
530 .write = spi_chip_write,
531 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000532 },
533
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000534 {
535 .vendor = "AMIC",
536 .name = "A29002B",
537 .manufacture_id = AMIC_ID_NOPREFIX,
538 .model_id = AMIC_A29002B,
539 .total_size = 256,
540 .page_size = 64 * 1024,
541 .tested = TEST_UNTESTED,
542 .probe = probe_29f002,
543 .erase = erase_29f002,
544 .write = write_29f002,
FENG yu ningff692fb2008-12-08 18:15:10 +0000545 },
546
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000547 {
548 .vendor = "AMIC",
549 .name = "A29002T",
550 .manufacture_id = AMIC_ID_NOPREFIX,
551 .model_id = AMIC_A29002T,
552 .total_size = 256,
553 .page_size = 64 * 1024,
554 .tested = TEST_OK_PREW,
555 .probe = probe_29f002,
556 .erase = erase_29f002,
557 .write = write_29f002,
FENG yu ningff692fb2008-12-08 18:15:10 +0000558 },
559
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000560 {
561 .vendor = "AMIC",
562 .name = "A29040B",
563 .manufacture_id = AMIC_ID_NOPREFIX,
564 .model_id = AMIC_A29040B,
565 .total_size = 512,
566 .page_size = 64 * 1024,
567 .tested = TEST_OK_PR,
568 .probe = probe_29f040b,
569 .erase = erase_29f040b,
570 .write = write_29f040b,
FENG yu ningff692fb2008-12-08 18:15:10 +0000571 },
572
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000573 {
574 .vendor = "AMIC",
575 .name = "A49LF040A",
576 .manufacture_id = AMIC_ID_NOPREFIX,
577 .model_id = AMIC_A49LF040A,
578 .total_size = 512,
579 .page_size = 64 * 1024,
580 .tested = TEST_OK_PREW,
581 .probe = probe_49fl00x,
582 .erase = erase_49fl00x,
583 .write = write_49fl00x,
FENG yu ningff692fb2008-12-08 18:15:10 +0000584 },
585
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000586 {
587 .vendor = "EMST",
588 .name = "F49B002UA",
589 .manufacture_id = EMST_ID,
590 .model_id = EMST_F49B002UA,
591 .total_size = 256,
592 .page_size = 4096,
593 .tested = TEST_UNTESTED,
594 .probe = probe_jedec,
595 .erase = erase_chip_jedec,
596 .write = write_49f002,
FENG yu ningff692fb2008-12-08 18:15:10 +0000597 },
598
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000599 {
600 .vendor = "EON",
601 .name = "EN29F002(A)(N)B",
602 .manufacture_id = EON_ID,
603 .model_id = EN_29F002B,
604 .total_size = 256,
605 .page_size = 256,
606 .tested = TEST_UNTESTED,
607 .probe = probe_jedec,
608 .erase = erase_chip_jedec,
609 .write = write_en29f002a,
FENG yu ningff692fb2008-12-08 18:15:10 +0000610 },
611
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000612 {
613 .vendor = "EON",
614 .name = "EN29F002(A)(N)T",
615 .manufacture_id = EON_ID,
616 .model_id = EN_29F002T,
617 .total_size = 256,
618 .page_size = 256,
619 .tested = TEST_OK_PREW,
620 .probe = probe_jedec,
621 .erase = erase_chip_jedec,
622 .write = write_en29f002a,
FENG yu ningff692fb2008-12-08 18:15:10 +0000623 },
624
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000625 {
626 .vendor = "Fujitsu",
627 .name = "MBM29F004BC",
628 .manufacture_id = FUJITSU_ID,
629 .model_id = MBM29F004BC,
630 .total_size = 512,
631 .page_size = 64 * 1024,
632 .tested = TEST_UNTESTED,
633 .probe = probe_jedec,
634 .erase = NULL,
635 .write = NULL,
FENG yu ningff692fb2008-12-08 18:15:10 +0000636 },
637
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000638 {
639 .vendor = "Fujitsu",
640 .name = "MBM29F004TC",
641 .manufacture_id = FUJITSU_ID,
642 .model_id = MBM29F004TC,
643 .total_size = 512,
644 .page_size = 64 * 1024,
645 .tested = TEST_UNTESTED,
646 .probe = probe_jedec,
647 .erase = NULL,
648 .write = NULL,
FENG yu ningff692fb2008-12-08 18:15:10 +0000649 },
650
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000651 {
652 .vendor = "Fujitsu",
653 .name = "MBM29F400BC",
654 .manufacture_id = FUJITSU_ID,
655 .model_id = MBM29F400BC,
656 .total_size = 512,
657 .page_size = 64 * 1024,
658 .tested = TEST_UNTESTED,
659 .probe = probe_m29f400bt,
660 .erase = erase_m29f400bt,
661 .write = write_coreboot_m29f400bt,
FENG yu ningff692fb2008-12-08 18:15:10 +0000662 },
663
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000664 {
665 .vendor = "Fujitsu",
666 .name = "MBM29F400TC",
667 .manufacture_id = FUJITSU_ID,
668 .model_id = MBM29F400TC,
669 .total_size = 512,
670 .page_size = 64 * 1024,
671 .tested = TEST_UNTESTED,
672 .probe = probe_m29f400bt,
673 .erase = erase_m29f400bt,
674 .write = write_coreboot_m29f400bt,
FENG yu ningff692fb2008-12-08 18:15:10 +0000675 },
676
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000677 {
678 .vendor = "Intel",
679 .name = "82802AB",
680 .manufacture_id = INTEL_ID,
681 .model_id = 173,
682 .total_size = 512,
683 .page_size = 64 * 1024,
684 .tested = TEST_OK_PREW,
685 .probe = probe_82802ab,
686 .erase = erase_82802ab,
687 .write = write_82802ab,
FENG yu ningff692fb2008-12-08 18:15:10 +0000688 },
689
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000690 {
691 .vendor = "Intel",
692 .name = "82802AC",
693 .manufacture_id = INTEL_ID,
694 .model_id = 172,
695 .total_size = 1024,
696 .page_size = 64 * 1024,
697 .tested = TEST_OK_PREW,
698 .probe = probe_82802ab,
699 .erase = erase_82802ab,
700 .write = write_82802ab,
FENG yu ningff692fb2008-12-08 18:15:10 +0000701 },
702
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000703 {
704 .vendor = "Macronix",
705 .name = "MX25L512",
706 .manufacture_id = MX_ID,
707 .model_id = MX_25L512,
708 .total_size = 64,
709 .page_size = 256,
710 .tested = TEST_UNTESTED,
711 .probe = probe_spi_rdid,
712 .erase = spi_chip_erase_c7,
713 .write = spi_chip_write,
714 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000715 },
716
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000717 {
718 .vendor = "Macronix",
719 .name = "MX25L1005",
720 .manufacture_id = MX_ID,
721 .model_id = MX_25L1005,
722 .total_size = 128,
723 .page_size = 256,
724 .tested = TEST_UNTESTED,
725 .probe = probe_spi_rdid,
726 .erase = spi_chip_erase_c7,
727 .write = spi_chip_write,
728 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000729 },
730
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000731 {
732 .vendor = "Macronix",
733 .name = "MX25L2005",
734 .manufacture_id = MX_ID,
735 .model_id = MX_25L2005,
736 .total_size = 256,
737 .page_size = 256,
738 .tested = TEST_UNTESTED,
739 .probe = probe_spi_rdid,
740 .erase = spi_chip_erase_c7,
741 .write = spi_chip_write,
742 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000743 },
744
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000745 {
746 .vendor = "Macronix",
747 .name = "MX25L4005",
748 .manufacture_id = MX_ID,
749 .model_id = MX_25L4005,
750 .total_size = 512,
751 .page_size = 256,
752 .tested = TEST_OK_PREW,
753 .probe = probe_spi_rdid,
754 .erase = spi_chip_erase_c7,
755 .write = spi_chip_write,
756 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000757 },
758
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000759 {
760 .vendor = "Macronix",
761 .name = "MX25L8005",
762 .manufacture_id = MX_ID,
763 .model_id = MX_25L8005,
764 .total_size = 1024,
765 .page_size = 256,
766 .tested = TEST_OK_PREW,
767 .probe = probe_spi_rdid,
768 .erase = spi_chip_erase_c7,
769 .write = spi_chip_write,
770 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000771 },
772
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000773 {
774 .vendor = "Macronix",
775 .name = "MX25L1605",
776 .manufacture_id = MX_ID,
777 .model_id = MX_25L1605,
778 .total_size = 2048,
779 .page_size = 256,
780 .tested = TEST_UNTESTED,
781 .probe = probe_spi_rdid,
782 .erase = spi_chip_erase_c7,
783 .write = spi_chip_write,
784 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000785 },
786
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000787 {
788 .vendor = "Macronix",
789 .name = "MX25L3205",
790 .manufacture_id = MX_ID,
791 .model_id = MX_25L3205,
792 .total_size = 4096,
793 .page_size = 256,
794 .tested = TEST_OK_PREW,
795 .probe = probe_spi_rdid,
796 .erase = spi_chip_erase_c7,
797 .write = spi_chip_write,
798 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000799 },
800
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000801 {
802 .vendor = "Macronix",
803 .name = "MX25L6405",
804 .manufacture_id = MX_ID,
805 .model_id = MX_25L6405,
806 .total_size = 8192,
807 .page_size = 256,
808 .tested = TEST_UNTESTED,
809 .probe = probe_spi_rdid,
810 .erase = spi_chip_erase_c7,
811 .write = spi_chip_write,
812 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000813 },
814
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000815 {
816 .vendor = "Macronix",
817 .name = "MX29F002B",
818 .manufacture_id = MX_ID,
819 .model_id = MX_29F002B,
820 .total_size = 256,
821 .page_size = 64 * 1024,
822 .tested = TEST_UNTESTED,
823 .probe = probe_29f002,
824 .erase = erase_29f002,
825 .write = write_29f002,
FENG yu ningff692fb2008-12-08 18:15:10 +0000826 },
827
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000828 {
829 .vendor = "Macronix",
830 .name = "MX29F002T",
831 .manufacture_id = MX_ID,
832 .model_id = MX_29F002T,
833 .total_size = 256,
834 .page_size = 64 * 1024,
835 .tested = TEST_UNTESTED,
836 .probe = probe_29f002,
837 .erase = erase_29f002,
838 .write = write_29f002,
FENG yu ningff692fb2008-12-08 18:15:10 +0000839 },
840
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000841 {
842 .vendor = "Macronix",
843 .name = "MX29LV040C",
844 .manufacture_id = MX_ID,
845 .model_id = MX_29LV040C,
846 .total_size = 512,
847 .page_size = 64 * 1024,
848 .tested = TEST_OK_PR,
849 .probe = probe_29f002,
850 .erase = erase_29f002,
851 .write = write_29f002,
Carl-Daniel Hailfinger7de86392008-12-10 10:32:05 +0000852 },
853
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000854 {
855 .vendor = "Numonyx",
856 .name = "M25PE10",
857 .manufacture_id = ST_ID,
858 .model_id = 0x8011,
859 .total_size = 128,
860 .page_size = 256,
861 .tested = TEST_UNTESTED,
862 .probe = probe_spi_rdid,
863 .erase = spi_chip_erase_d8,
864 .write = spi_chip_write,
865 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000866 },
867
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000868 {
869 .vendor = "Numonyx",
870 .name = "M25PE20",
871 .manufacture_id = ST_ID,
872 .model_id = 0x8012,
873 .total_size = 256,
874 .page_size = 256,
875 .tested = TEST_UNTESTED,
876 .probe = probe_spi_rdid,
877 .erase = spi_chip_erase_d8,
878 .write = spi_chip_write,
879 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000880 },
881
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000882 {
883 .vendor = "Numonyx",
884 .name = "M25PE40",
885 .manufacture_id = ST_ID,
886 .model_id = 0x8013,
887 .total_size = 256,
888 .page_size = 256,
889 .tested = TEST_UNTESTED,
890 .probe = probe_spi_rdid,
891 .erase = spi_chip_erase_d8,
892 .write = spi_chip_write,
893 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000894 },
895
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000896 {
897 .vendor = "Numonyx",
898 .name = "M25PE80",
899 .manufacture_id = ST_ID,
900 .model_id = 0x8014,
901 .total_size = 1024,
902 .page_size = 256,
903 .tested = TEST_OK_PREW,
904 .probe = probe_spi_rdid,
905 .erase = spi_chip_erase_d8,
906 .write = spi_chip_write,
907 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000908 },
909
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000910 {
911 .vendor = "Numonyx",
912 .name = "M25PE16",
913 .manufacture_id = ST_ID,
914 .model_id = 0x8015,
915 .total_size = 2048,
916 .page_size = 256,
917 .tested = TEST_UNTESTED,
918 .probe = probe_spi_rdid,
919 .erase = spi_chip_erase_d8,
920 .write = spi_chip_write,
921 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000922 },
923
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000924 {
925 .vendor = "PMC",
926 .name = "Pm25LV010",
927 .manufacture_id = PMC_ID,
928 .model_id = PMC_25LV010,
929 .total_size = 128,
930 .page_size = 256,
931 .tested = TEST_UNTESTED,
932 .probe = probe_spi_rdid,
933 .erase = spi_chip_erase_c7,
934 .write = spi_chip_write,
935 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000936 },
937
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000938 {
939 .vendor = "PMC",
940 .name = "Pm25LV016B",
941 .manufacture_id = PMC_ID,
942 .model_id = PMC_25LV016B,
943 .total_size = 2048,
944 .page_size = 256,
945 .tested = TEST_UNTESTED,
946 .probe = probe_spi_rdid,
947 .erase = spi_chip_erase_c7,
948 .write = spi_chip_write,
949 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000950 },
951
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000952 {
953 .vendor = "PMC",
954 .name = "Pm25LV020",
955 .manufacture_id = PMC_ID,
956 .model_id = PMC_25LV020,
957 .total_size = 256,
958 .page_size = 256,
959 .tested = TEST_UNTESTED,
960 .probe = probe_spi_rdid,
961 .erase = spi_chip_erase_c7,
962 .write = spi_chip_write,
963 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000964 },
965
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000966 {
967 .vendor = "PMC",
968 .name = "Pm25LV040",
969 .manufacture_id = PMC_ID,
970 .model_id = PMC_25LV040,
971 .total_size = 512,
972 .page_size = 256,
973 .tested = TEST_UNTESTED,
974 .probe = probe_spi_rdid,
975 .erase = spi_chip_erase_c7,
976 .write = spi_chip_write,
977 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000978 },
979
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000980 {
981 .vendor = "PMC",
982 .name = "Pm25LV080B",
983 .manufacture_id = PMC_ID,
984 .model_id = PMC_25LV080B,
985 .total_size = 1024,
986 .page_size = 256,
987 .tested = TEST_UNTESTED,
988 .probe = probe_spi_rdid,
989 .erase = spi_chip_erase_c7,
990 .write = spi_chip_write,
991 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000992 },
993
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000994 {
995 .vendor = "PMC",
996 .name = "Pm25LV512",
997 .manufacture_id = PMC_ID,
998 .model_id = PMC_25LV512,
999 .total_size = 64,
1000 .page_size = 256,
1001 .tested = TEST_UNTESTED,
1002 .probe = probe_spi_rdid,
1003 .erase = spi_chip_erase_c7,
1004 .write = spi_chip_write,
1005 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001006 },
1007
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001008 {
1009 .vendor = "PMC",
1010 .name = "Pm49FL002",
1011 .manufacture_id = PMC_ID_NOPREFIX,
1012 .model_id = PMC_49FL002,
1013 .total_size = 256,
1014 .page_size = 16 * 1024,
1015 .tested = TEST_OK_PREW,
1016 .probe = probe_49fl00x,
1017 .erase = erase_49fl00x,
1018 .write = write_49fl00x,
FENG yu ningff692fb2008-12-08 18:15:10 +00001019 },
1020
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001021 {
1022 .vendor = "PMC",
1023 .name = "Pm49FL004",
1024 .manufacture_id = PMC_ID_NOPREFIX,
1025 .model_id = PMC_49FL004,
1026 .total_size = 512,
1027 .page_size = 64 * 1024,
1028 .tested = TEST_OK_PREW,
1029 .probe = probe_49fl00x,
1030 .erase = erase_49fl00x,
1031 .write = write_49fl00x,
FENG yu ningff692fb2008-12-08 18:15:10 +00001032 },
1033
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001034 {
1035 .vendor = "Sharp",
1036 .name = "LHF00L04",
1037 .manufacture_id = SHARP_ID,
1038 .model_id = SHARP_LHF00L04,
1039 .total_size = 1024,
1040 .page_size = 64 * 1024,
1041 .tested = TEST_UNTESTED,
1042 .probe = probe_lhf00l04,
1043 .erase = erase_lhf00l04,
1044 .write = write_lhf00l04,
FENG yu ningff692fb2008-12-08 18:15:10 +00001045 },
1046
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001047 {
1048 .vendor = "Spansion",
1049 .name = "S25FL016A",
1050 .manufacture_id = SPANSION_ID,
1051 .model_id = SPANSION_S25FL016A,
1052 .total_size = 2048,
1053 .page_size = 256,
1054 .tested = TEST_OK_PREW,
1055 .probe = probe_spi_rdid,
1056 .erase = spi_chip_erase_c7,
1057 .write = spi_chip_write,
1058 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001059 },
1060
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001061 {
1062 .vendor = "SST",
1063 .name = "SST25VF016B",
1064 .manufacture_id = SST_ID,
1065 .model_id = SST_25VF016B,
1066 .total_size = 2048,
1067 .page_size = 256,
1068 .tested = TEST_OK_PREW,
1069 .probe = probe_spi_rdid,
1070 .erase = spi_chip_erase_c7,
1071 .write = spi_chip_write,
1072 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001073 },
1074
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001075 {
1076 .vendor = "SST",
1077 .name = "SST25VF032B",
1078 .manufacture_id = SST_ID,
1079 .model_id = SST_25VF032B,
1080 .total_size = 4096,
1081 .page_size = 256,
1082 .tested = TEST_OK_PREW,
1083 .probe = probe_spi_rdid,
1084 .erase = spi_chip_erase_c7,
1085 .write = spi_chip_write,
1086 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001087 },
1088
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001089 {
1090 .vendor = "SST",
1091 .name = "SST25VF040B",
1092 .manufacture_id = SST_ID,
1093 .model_id = SST_25VF040B,
1094 .total_size = 512,
1095 .page_size = 256,
1096 .tested = TEST_UNTESTED,
1097 .probe = probe_spi_rdid,
1098 .erase = spi_chip_erase_c7,
1099 .write = spi_chip_write,
1100 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001101 },
1102
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001103 {
1104 .vendor = "SST",
1105 .name = "SST25VF080B",
1106 .manufacture_id = SST_ID,
1107 .model_id = SST_25VF080B,
1108 .total_size = 1024,
1109 .page_size = 256,
Peter Stuge51f40622009-01-24 01:32:40 +00001110 .tested = TEST_OK_PROBE,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001111 .probe = probe_spi_rdid,
1112 .erase = spi_chip_erase_60_c7,
1113 .write = spi_chip_write,
1114 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001115 },
1116
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001117 {
1118 .vendor = "SST",
1119 .name = "SST28SF040A",
1120 .manufacture_id = SST_ID,
1121 .model_id = SST_28SF040,
1122 .total_size = 512,
1123 .page_size = 256,
1124 .tested = TEST_UNTESTED,
1125 .probe = probe_28sf040,
1126 .erase = erase_28sf040,
1127 .write = write_28sf040,
FENG yu ningff692fb2008-12-08 18:15:10 +00001128 },
1129
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001130 {
1131 .vendor = "SST",
1132 .name = "SST29EE010",
1133 .manufacture_id = SST_ID,
1134 .model_id = SST_29EE010,
1135 .total_size = 128,
1136 .page_size = 128,
1137 .tested = TEST_OK_PREW,
1138 .probe = probe_jedec,
1139 .erase = erase_chip_jedec,
1140 .write = write_jedec,
FENG yu ningff692fb2008-12-08 18:15:10 +00001141 },
1142
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001143 {
1144 .vendor = "SST",
1145 .name = "SST29LE010",
1146 .manufacture_id = SST_ID,
1147 .model_id = SST_29LE010,
1148 .total_size = 128,
1149 .page_size = 128,
1150 .tested = TEST_UNTESTED,
1151 .probe = probe_jedec,
1152 .erase = erase_chip_jedec,
1153 .write = write_jedec,
FENG yu ningff692fb2008-12-08 18:15:10 +00001154 },
1155
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001156 {
1157 .vendor = "SST",
1158 .name = "SST29EE020A",
1159 .manufacture_id = SST_ID,
1160 .model_id = SST_29EE020A,
1161 .total_size = 256,
1162 .page_size = 128,
1163 .tested = TEST_UNTESTED,
1164 .probe = probe_jedec,
1165 .erase = erase_chip_jedec,
1166 .write = write_jedec,
FENG yu ningff692fb2008-12-08 18:15:10 +00001167 },
1168
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001169 {
1170 .vendor = "SST",
1171 .name = "SST29LE020",
1172 .manufacture_id = SST_ID,
1173 .model_id = SST_29LE020,
1174 .total_size = 256,
1175 .page_size = 128,
1176 .tested = TEST_UNTESTED,
1177 .probe = probe_jedec,
1178 .erase = erase_chip_jedec,
1179 .write = write_jedec,
FENG yu ningff692fb2008-12-08 18:15:10 +00001180 },
1181
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001182 {
1183 .vendor = "SST",
1184 .name = "SST39SF010A",
1185 .manufacture_id = SST_ID,
1186 .model_id = SST_39SF010,
1187 .total_size = 128,
1188 .page_size = 4096,
1189 .tested = TEST_OK_PREW,
1190 .probe = probe_jedec,
1191 .erase = erase_chip_jedec,
1192 .write = write_39sf020,
FENG yu ningff692fb2008-12-08 18:15:10 +00001193 },
1194
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001195 {
1196 .vendor = "SST",
1197 .name = "SST39SF020A",
1198 .manufacture_id = SST_ID,
1199 .model_id = SST_39SF020,
1200 .total_size = 256,
1201 .page_size = 4096,
1202 .tested = TEST_OK_PREW,
1203 .probe = probe_jedec,
1204 .erase = erase_chip_jedec,
1205 .write = write_39sf020,
FENG yu ningff692fb2008-12-08 18:15:10 +00001206 },
1207
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001208 {
1209 .vendor = "SST",
1210 .name = "SST39SF040",
1211 .manufacture_id = SST_ID,
1212 .model_id = SST_39SF040,
1213 .total_size = 512,
1214 .page_size = 4096,
1215 .tested = TEST_OK_PREW,
1216 .probe = probe_jedec,
1217 .erase = erase_chip_jedec,
1218 .write = write_39sf020,
FENG yu ningff692fb2008-12-08 18:15:10 +00001219 },
1220
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001221 {
1222 .vendor = "SST",
1223 .name = "SST39VF512",
1224 .manufacture_id = SST_ID,
1225 .model_id = SST_39VF512,
1226 .total_size = 64,
1227 .page_size = 4096,
1228 .tested = TEST_UNTESTED,
1229 .probe = probe_jedec,
1230 .erase = erase_chip_jedec,
1231 .write = write_39sf020,
FENG yu ningff692fb2008-12-08 18:15:10 +00001232 },
1233
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001234 {
1235 .vendor = "SST",
1236 .name = "SST39VF010",
1237 .manufacture_id = SST_ID,
1238 .model_id = SST_39VF010,
1239 .total_size = 128,
1240 .page_size = 4096,
1241 .tested = TEST_UNTESTED,
1242 .probe = probe_jedec,
1243 .erase = erase_chip_jedec,
1244 .write = write_39sf020,
FENG yu ningff692fb2008-12-08 18:15:10 +00001245 },
1246
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001247 {
1248 .vendor = "SST",
1249 .name = "SST39VF020",
1250 .manufacture_id = SST_ID,
1251 .model_id = SST_39VF020,
1252 .total_size = 256,
1253 .page_size = 4096,
1254 .tested = TEST_OK_PREW,
1255 .probe = probe_jedec,
1256 .erase = erase_chip_jedec,
1257 .write = write_39sf020,
FENG yu ningff692fb2008-12-08 18:15:10 +00001258 },
1259
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001260 {
1261 .vendor = "SST",
1262 .name = "SST39VF040",
1263 .manufacture_id = SST_ID,
1264 .model_id = SST_39VF040,
1265 .total_size = 512,
1266 .page_size = 4096,
1267 .tested = TEST_OK_PROBE,
1268 .probe = probe_jedec,
1269 .erase = erase_chip_jedec,
1270 .write = write_39sf020,
Carl-Daniel Hailfinger90eff152008-12-08 23:51:45 +00001271 },
FENG yu ningff692fb2008-12-08 18:15:10 +00001272
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001273 {
1274 .vendor = "SST",
1275 .name = "SST49LF002A/B",
1276 .manufacture_id = SST_ID,
1277 .model_id = SST_49LF002A,
1278 .total_size = 256,
1279 .page_size = 16 * 1024,
1280 .tested = TEST_OK_PREW,
1281 .probe = probe_sst_fwhub,
1282 .erase = erase_sst_fwhub,
1283 .write = write_sst_fwhub,
FENG yu ningff692fb2008-12-08 18:15:10 +00001284 },
1285
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001286 {
1287 .vendor = "SST",
1288 .name = "SST49LF003A/B",
1289 .manufacture_id = SST_ID,
1290 .model_id = SST_49LF003A,
1291 .total_size = 384,
1292 .page_size = 64 * 1024,
1293 .tested = TEST_UNTESTED,
1294 .probe = probe_sst_fwhub,
1295 .erase = erase_sst_fwhub,
1296 .write = write_sst_fwhub,
FENG yu ningff692fb2008-12-08 18:15:10 +00001297 },
1298
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001299 {
1300 .vendor = "SST",
1301 .name = "SST49LF004A/B",
1302 .manufacture_id = SST_ID,
1303 .model_id = SST_49LF004A,
1304 .total_size = 512,
1305 .page_size = 64 * 1024,
1306 .tested = TEST_OK_PREW,
1307 .probe = probe_sst_fwhub,
1308 .erase = erase_sst_fwhub,
1309 .write = write_sst_fwhub,
FENG yu ningff692fb2008-12-08 18:15:10 +00001310 },
1311
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001312 {
1313 .vendor = "SST",
1314 .name = "SST49LF004C",
1315 .manufacture_id = SST_ID,
1316 .model_id = SST_49LF004C,
1317 .total_size = 512,
1318 .page_size = 4 * 1024,
1319 .tested = TEST_UNTESTED,
1320 .probe = probe_49lfxxxc,
1321 .erase = erase_49lfxxxc,
1322 .write = write_49lfxxxc,
FENG yu ningff692fb2008-12-08 18:15:10 +00001323 },
1324
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001325 {
1326 .vendor = "SST",
1327 .name = "SST49LF008A",
1328 .manufacture_id = SST_ID,
1329 .model_id = SST_49LF008A,
1330 .total_size = 1024,
1331 .page_size = 64 * 1024,
1332 .tested = TEST_OK_PREW,
1333 .probe = probe_sst_fwhub,
1334 .erase = erase_sst_fwhub,
1335 .write = write_sst_fwhub,
FENG yu ningff692fb2008-12-08 18:15:10 +00001336 },
1337
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001338 {
1339 .vendor = "SST",
1340 .name = "SST49LF008C",
1341 .manufacture_id = SST_ID,
1342 .model_id = SST_49LF008C,
1343 .total_size = 1024,
1344 .page_size = 4 * 1024,
1345 .tested = TEST_UNTESTED,
1346 .probe = probe_49lfxxxc,
1347 .erase = erase_49lfxxxc,
1348 .write = write_49lfxxxc,
FENG yu ningff692fb2008-12-08 18:15:10 +00001349 },
1350
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001351 {
1352 .vendor = "SST",
1353 .name = "SST49LF016C",
1354 .manufacture_id = SST_ID,
1355 .model_id = SST_49LF016C,
1356 .total_size = 2048,
1357 .page_size = 4 * 1024,
1358 .tested = TEST_OK_PREW,
1359 .probe = probe_49lfxxxc,
1360 .erase = erase_49lfxxxc,
1361 .write = write_49lfxxxc,
FENG yu ningff692fb2008-12-08 18:15:10 +00001362 },
1363
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001364 {
1365 .vendor = "SST",
1366 .name = "SST49LF020",
1367 .manufacture_id = SST_ID,
1368 .model_id = SST_49LF020,
1369 .total_size = 256,
1370 .page_size = 16 * 1024,
1371 .tested = TEST_OK_PR,
1372 .probe = probe_jedec,
1373 .erase = erase_49lf040,
1374 .write = write_49lf040,
Sven Schnellec208dfb2009-01-07 12:35:09 +00001375 },
1376
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001377 {
1378 .vendor = "SST",
1379 .name = "SST49LF020A",
1380 .manufacture_id = SST_ID,
1381 .model_id = SST_49LF020A,
1382 .total_size = 256,
1383 .page_size = 16 * 1024,
1384 .tested = TEST_UNTESTED,
1385 .probe = probe_jedec,
1386 .erase = erase_49lf040,
1387 .write = write_49lf040,
FENG yu ningff692fb2008-12-08 18:15:10 +00001388 },
1389
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001390 {
1391 .vendor = "SST",
1392 .name = "SST49LF040",
1393 .manufacture_id = SST_ID,
1394 .model_id = SST_49LF040,
1395 .total_size = 512,
1396 .page_size = 4096,
1397 .tested = TEST_OK_PREW,
1398 .probe = probe_jedec,
1399 .erase = erase_49lf040,
1400 .write = write_49lf040,
FENG yu ningff692fb2008-12-08 18:15:10 +00001401 },
1402
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001403 {
1404 .vendor = "SST",
1405 .name = "SST49LF040B",
1406 .manufacture_id = SST_ID,
1407 .model_id = SST_49LF040B,
1408 .total_size = 512,
1409 .page_size = 64 * 1024,
1410 .tested = TEST_OK_PREW,
1411 .probe = probe_sst_fwhub,
1412 .erase = erase_sst_fwhub,
1413 .write = write_sst_fwhub,
FENG yu ningff692fb2008-12-08 18:15:10 +00001414 },
1415
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001416 {
1417 .vendor = "SST",
1418 .name = "SST49LF080A",
1419 .manufacture_id = SST_ID,
1420 .model_id = SST_49LF080A,
1421 .total_size = 1024,
1422 .page_size = 4096,
1423 .tested = TEST_OK_PREW,
1424 .probe = probe_jedec,
1425 .erase = erase_49lf040,
1426 .write = write_49lf040,
FENG yu ningff692fb2008-12-08 18:15:10 +00001427 },
1428
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001429 {
1430 .vendor = "SST",
1431 .name = "SST49LF160C",
1432 .manufacture_id = SST_ID,
1433 .model_id = SST_49LF160C,
1434 .total_size = 2048,
1435 .page_size = 4 * 1024,
1436 .tested = TEST_OK_PREW,
1437 .probe = probe_49lfxxxc,
1438 .erase = erase_49lfxxxc,
1439 .write = write_49lfxxxc,
FENG yu ningff692fb2008-12-08 18:15:10 +00001440 },
1441
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001442 {
1443 .vendor = "ST",
1444 .name = "M25P05-A",
1445 .manufacture_id = ST_ID,
1446 .model_id = ST_M25P05A,
1447 .total_size = 64,
1448 .page_size = 256,
1449 .tested = TEST_UNTESTED,
1450 .probe = probe_spi_rdid,
1451 .erase = spi_chip_erase_c7,
1452 .write = spi_chip_write,
1453 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001454 },
1455
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001456 {
1457 .vendor = "ST",
1458 .name = "M25P10-A",
1459 .manufacture_id = ST_ID,
1460 .model_id = ST_M25P10A,
1461 .total_size = 128,
1462 .page_size = 256,
1463 .tested = TEST_UNTESTED,
1464 .probe = probe_spi_rdid,
1465 .erase = spi_chip_erase_c7,
1466 .write = spi_chip_write,
1467 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001468 },
1469
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001470 {
1471 .vendor = "ST",
1472 .name = "M25P20",
1473 .manufacture_id = ST_ID,
1474 .model_id = ST_M25P20,
1475 .total_size = 256,
1476 .page_size = 256,
1477 .tested = TEST_UNTESTED,
1478 .probe = probe_spi_rdid,
1479 .erase = spi_chip_erase_c7,
1480 .write = spi_chip_write,
1481 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001482 },
1483
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001484 {
1485 .vendor = "ST",
1486 .name = "M25P40",
1487 .manufacture_id = ST_ID,
1488 .model_id = ST_M25P40,
1489 .total_size = 512,
1490 .page_size = 256,
1491 .tested = TEST_UNTESTED,
1492 .probe = probe_spi_rdid,
1493 .erase = spi_chip_erase_c7,
1494 .write = spi_chip_write,
1495 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001496 },
1497
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001498 {
1499 .vendor = "ST",
1500 .name = "M25P40-old",
1501 .manufacture_id = ST_ID,
1502 .model_id = ST_M25P40_RES,
1503 .total_size = 512,
1504 .page_size = 256,
1505 .tested = TEST_UNTESTED,
1506 .probe = probe_spi_res,
1507 .erase = spi_chip_erase_c7,
1508 .write = spi_chip_write,
1509 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001510 },
1511
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001512 {
1513 .vendor = "ST",
1514 .name = "M25P80",
1515 .manufacture_id = ST_ID,
1516 .model_id = ST_M25P80,
1517 .total_size = 1024,
1518 .page_size = 256,
1519 .tested = TEST_UNTESTED,
1520 .probe = probe_spi_rdid,
1521 .erase = spi_chip_erase_c7,
1522 .write = spi_chip_write,
1523 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001524 },
1525
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001526 {
1527 .vendor = "ST",
1528 .name = "M25P16",
1529 .manufacture_id = ST_ID,
1530 .model_id = ST_M25P16,
1531 .total_size = 2048,
1532 .page_size = 256,
1533 .tested = TEST_OK_PREW,
1534 .probe = probe_spi_rdid,
1535 .erase = spi_chip_erase_c7,
1536 .write = spi_chip_write,
1537 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001538 },
1539
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001540 {
1541 .vendor = "ST",
1542 .name = "M25P32",
1543 .manufacture_id = ST_ID,
1544 .model_id = ST_M25P32,
1545 .total_size = 4096,
1546 .page_size = 256,
1547 .tested = TEST_OK_PREW,
1548 .probe = probe_spi_rdid,
1549 .erase = spi_chip_erase_c7,
1550 .write = spi_chip_write,
1551 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001552 },
1553
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001554 {
1555 .vendor = "ST",
1556 .name = "M25P64",
1557 .manufacture_id = ST_ID,
1558 .model_id = ST_M25P64,
1559 .total_size = 8192,
1560 .page_size = 256,
1561 .tested = TEST_UNTESTED,
1562 .probe = probe_spi_rdid,
1563 .erase = spi_chip_erase_c7,
1564 .write = spi_chip_write,
1565 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001566 },
1567
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001568 {
1569 .vendor = "ST",
1570 .name = "M25P128",
1571 .manufacture_id = ST_ID,
1572 .model_id = ST_M25P128,
1573 .total_size = 16384,
1574 .page_size = 256,
1575 .tested = TEST_UNTESTED,
1576 .probe = probe_spi_rdid,
1577 .erase = spi_chip_erase_c7,
1578 .write = spi_chip_write,
1579 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001580 },
1581
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001582 {
1583 .vendor = "ST",
1584 .name = "M29F002B",
1585 .manufacture_id = ST_ID,
1586 .model_id = ST_M29F002B,
1587 .total_size = 256,
1588 .page_size = 64 * 1024,
1589 .tested = TEST_UNTESTED,
1590 .probe = probe_jedec,
1591 .erase = erase_chip_jedec,
1592 .write = write_jedec,
FENG yu ningff692fb2008-12-08 18:15:10 +00001593 },
1594
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001595 {
1596 .vendor = "ST",
1597 .name = "M29F002T/NT",
1598 .manufacture_id = ST_ID,
1599 .model_id = ST_M29F002T,
1600 .total_size = 256,
1601 .page_size = 64 * 1024,
1602 .tested = TEST_UNTESTED,
1603 .probe = probe_jedec,
1604 .erase = erase_chip_jedec,
1605 .write = write_jedec,
FENG yu ningff692fb2008-12-08 18:15:10 +00001606 },
1607
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001608 {
1609 .vendor = "ST",
1610 .name = "M29F040B",
1611 .manufacture_id = ST_ID,
1612 .model_id = ST_M29F040B,
1613 .total_size = 512,
1614 .page_size = 64 * 1024,
1615 .tested = TEST_OK_PREW,
1616 .probe = probe_29f040b,
1617 .erase = erase_29f040b,
1618 .write = write_29f040b,
FENG yu ningff692fb2008-12-08 18:15:10 +00001619 },
1620
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001621 {
1622 .vendor = "ST",
1623 .name = "M29F400BT",
1624 .manufacture_id = ST_ID,
1625 .model_id = ST_M29F400BT,
1626 .total_size = 512,
1627 .page_size = 64 * 1024,
1628 .tested = TEST_UNTESTED,
1629 .probe = probe_m29f400bt,
1630 .erase = erase_m29f400bt,
1631 .write = write_coreboot_m29f400bt,
FENG yu ningff692fb2008-12-08 18:15:10 +00001632 },
1633
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001634 {
1635 .vendor = "ST",
1636 .name = "M29W010B",
1637 .manufacture_id = ST_ID,
1638 .model_id = ST_M29W010B,
1639 .total_size = 128,
1640 .page_size = 16 * 1024,
1641 .tested = TEST_UNTESTED,
1642 .probe = probe_jedec,
1643 .erase = erase_chip_jedec,
1644 .write = write_jedec,
FENG yu ningff692fb2008-12-08 18:15:10 +00001645 },
1646
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001647 {
1648 .vendor = "ST",
1649 .name = "M29W040B",
1650 .manufacture_id = ST_ID,
1651 .model_id = ST_M29W040B,
1652 .total_size = 512,
1653 .page_size = 64 * 1024,
1654 .tested = TEST_UNTESTED,
1655 .probe = probe_jedec,
1656 .erase = erase_chip_jedec,
1657 .write = write_jedec,
FENG yu ningff692fb2008-12-08 18:15:10 +00001658 },
1659
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001660 {
1661 .vendor = "ST",
1662 .name = "M50FLW040A",
1663 .manufacture_id = ST_ID,
1664 .model_id = ST_M50FLW040A,
1665 .total_size = 512,
1666 .page_size = 64 * 1024,
1667 .tested = TEST_UNTESTED,
1668 .probe = probe_stm50flw0x0x,
1669 .erase = erase_stm50flw0x0x,
1670 .write = write_stm50flw0x0x,
FENG yu ningff692fb2008-12-08 18:15:10 +00001671 },
1672
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001673 {
1674 .vendor = "ST",
1675 .name = "M50FLW040B",
1676 .manufacture_id = ST_ID,
1677 .model_id = ST_M50FLW040B,
1678 .total_size = 512,
1679 .page_size = 64 * 1024,
1680 .tested = TEST_UNTESTED,
1681 .probe = probe_stm50flw0x0x,
1682 .erase = erase_stm50flw0x0x,
1683 .write = write_stm50flw0x0x,
FENG yu ningff692fb2008-12-08 18:15:10 +00001684 },
1685
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001686 {
1687 .vendor = "ST",
1688 .name = "M50FLW080A",
1689 .manufacture_id = ST_ID,
1690 .model_id = ST_M50FLW080A,
1691 .total_size = 1024,
1692 .page_size = 64 * 1024,
1693 .tested = TEST_OK_PREW,
1694 .probe = probe_stm50flw0x0x,
1695 .erase = erase_stm50flw0x0x,
1696 .write = write_stm50flw0x0x,
FENG yu ningff692fb2008-12-08 18:15:10 +00001697 },
1698
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001699 {
1700 .vendor = "ST",
1701 .name = "M50FLW080B",
1702 .manufacture_id = ST_ID,
1703 .model_id = ST_M50FLW080B,
1704 .total_size = 1024,
1705 .page_size = 64 * 1024,
1706 .tested = TEST_UNTESTED,
1707 .probe = probe_stm50flw0x0x,
1708 .erase = erase_stm50flw0x0x,
1709 .write = write_stm50flw0x0x,
FENG yu ningff692fb2008-12-08 18:15:10 +00001710 },
1711
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001712 {
1713 .vendor = "ST",
1714 .name = "M50FW002",
1715 .manufacture_id = ST_ID,
1716 .model_id = ST_M50FW002,
1717 .total_size = 256,
1718 .page_size = 64 * 1024,
1719 .tested = TEST_UNTESTED,
1720 .probe = probe_49lfxxxc,
1721 .erase = NULL,
1722 .write = NULL,
FENG yu ningff692fb2008-12-08 18:15:10 +00001723 },
1724
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001725 {
1726 .vendor = "ST",
1727 .name = "M50FW016",
1728 .manufacture_id = ST_ID,
1729 .model_id = ST_M50FW016,
1730 .total_size = 2048,
1731 .page_size = 64 * 1024,
1732 .tested = TEST_UNTESTED,
1733 .probe = probe_82802ab,
1734 .erase = erase_82802ab,
1735 .write = write_82802ab,
FENG yu ningff692fb2008-12-08 18:15:10 +00001736 },
1737
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001738 {
1739 .vendor = "ST",
1740 .name = "M50FW040",
1741 .manufacture_id = ST_ID,
1742 .model_id = ST_M50FW040,
1743 .total_size = 512,
1744 .page_size = 64 * 1024,
1745 .tested = TEST_OK_PREW,
1746 .probe = probe_82802ab,
1747 .erase = erase_82802ab,
1748 .write = write_82802ab,
FENG yu ningff692fb2008-12-08 18:15:10 +00001749 },
1750
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001751 {
1752 .vendor = "ST",
1753 .name = "M50FW080",
1754 .manufacture_id = ST_ID,
1755 .model_id = ST_M50FW080,
1756 .total_size = 1024,
1757 .page_size = 64 * 1024,
Peter Stugea657e942009-01-24 23:01:08 +00001758 .tested = TEST_OK_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001759 .probe = probe_82802ab,
1760 .erase = erase_82802ab,
1761 .write = write_82802ab,
FENG yu ningff692fb2008-12-08 18:15:10 +00001762 },
1763
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001764 {
1765 .vendor = "ST",
1766 .name = "M50LPW116",
1767 .manufacture_id = ST_ID,
1768 .model_id = ST_M50LPW116,
1769 .total_size = 2048,
1770 .page_size = 64 * 1024,
1771 .tested = TEST_UNTESTED,
1772 .probe = probe_jedec,
1773 .erase = erase_chip_jedec,
1774 .write = write_jedec,
FENG yu ningff692fb2008-12-08 18:15:10 +00001775 },
1776
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001777 {
1778 .vendor = "SyncMOS",
1779 .name = "S29C31004T",
1780 .manufacture_id = SYNCMOS_ID,
1781 .model_id = S29C31004T,
1782 .total_size = 512,
1783 .page_size = 128,
1784 .tested = TEST_UNTESTED,
1785 .probe = probe_jedec,
1786 .erase = erase_chip_jedec,
1787 .write = write_49f002,
FENG yu ningff692fb2008-12-08 18:15:10 +00001788 },
1789
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001790 {
1791 .vendor = "SyncMOS",
1792 .name = "S29C51001T",
1793 .manufacture_id = SYNCMOS_ID,
1794 .model_id = S29C51001T,
1795 .total_size = 128,
1796 .page_size = 128,
1797 .tested = TEST_UNTESTED,
1798 .probe = probe_jedec,
1799 .erase = erase_chip_jedec,
1800 .write = write_49f002,
FENG yu ningff692fb2008-12-08 18:15:10 +00001801 },
1802
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001803 {
1804 .vendor = "SyncMOS",
1805 .name = "S29C51002T",
1806 .manufacture_id = SYNCMOS_ID,
1807 .model_id = S29C51002T,
1808 .total_size = 256,
1809 .page_size = 128,
1810 .tested = TEST_OK_PREW,
1811 .probe = probe_jedec,
1812 .erase = erase_chip_jedec,
1813 .write = write_49f002,
FENG yu ningff692fb2008-12-08 18:15:10 +00001814 },
1815
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001816 {
1817 .vendor = "SyncMOS",
1818 .name = "S29C51004T",
1819 .manufacture_id = SYNCMOS_ID,
1820 .model_id = S29C51004T,
1821 .total_size = 512,
1822 .page_size = 128,
1823 .tested = TEST_UNTESTED,
1824 .probe = probe_jedec,
1825 .erase = erase_chip_jedec,
1826 .write = write_49f002,
FENG yu ningff692fb2008-12-08 18:15:10 +00001827 },
1828
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001829 {
1830 .vendor = "Winbond",
1831 .name = "W25x10",
1832 .manufacture_id = WINBOND_NEX_ID,
1833 .model_id = W_25X10,
1834 .total_size = 128,
1835 .page_size = 256,
1836 .tested = TEST_UNTESTED,
1837 .probe = probe_spi_rdid,
1838 .erase = spi_chip_erase_c7,
1839 .write = spi_chip_write,
1840 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001841 },
1842
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001843 {
1844 .vendor = "Winbond",
1845 .name = "W25x20",
1846 .manufacture_id = WINBOND_NEX_ID,
1847 .model_id = W_25X20,
1848 .total_size = 256,
1849 .page_size = 256,
1850 .tested = TEST_UNTESTED,
1851 .probe = probe_spi_rdid,
1852 .erase = spi_chip_erase_c7,
1853 .write = spi_chip_write,
1854 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001855 },
1856
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001857 {
1858 .vendor = "Winbond",
1859 .name = "W25x40",
1860 .manufacture_id = WINBOND_NEX_ID,
1861 .model_id = W_25X40,
1862 .total_size = 512,
1863 .page_size = 256,
1864 .tested = TEST_OK_PREW,
1865 .probe = probe_spi_rdid,
1866 .erase = spi_chip_erase_c7,
1867 .write = spi_chip_write,
1868 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001869 },
1870
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001871 {
1872 .vendor = "Winbond",
1873 .name = "W25x80",
1874 .manufacture_id = WINBOND_NEX_ID,
1875 .model_id = W_25X80,
1876 .total_size = 1024,
1877 .page_size = 256,
1878 .tested = TEST_OK_PREW,
1879 .probe = probe_spi_rdid,
1880 .erase = spi_chip_erase_c7,
1881 .write = spi_chip_write,
1882 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001883 },
1884
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001885 {
1886 .vendor = "Winbond",
1887 .name = "W29C011",
1888 .manufacture_id = WINBOND_ID,
1889 .model_id = W_29C011,
1890 .total_size = 128,
1891 .page_size = 128,
1892 .tested = TEST_OK_PREW,
1893 .probe = probe_jedec,
1894 .erase = erase_chip_jedec,
1895 .write = write_jedec,
FENG yu ningff692fb2008-12-08 18:15:10 +00001896 },
1897
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001898 {
1899 .vendor = "Winbond",
1900 .name = "W29C020C",
1901 .manufacture_id = WINBOND_ID,
1902 .model_id = W_29C020C,
1903 .total_size = 256,
1904 .page_size = 128,
1905 .tested = TEST_OK_PREW,
1906 .probe = probe_jedec,
1907 .erase = erase_chip_jedec,
1908 .write = write_jedec,
FENG yu ningff692fb2008-12-08 18:15:10 +00001909 },
1910
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001911 {
1912 .vendor = "Winbond",
1913 .name = "W29C040P",
1914 .manufacture_id = WINBOND_ID,
1915 .model_id = W_29C040P,
1916 .total_size = 512,
1917 .page_size = 256,
1918 .tested = TEST_UNTESTED,
1919 .probe = probe_jedec,
1920 .erase = erase_chip_jedec,
1921 .write = write_jedec,
FENG yu ningff692fb2008-12-08 18:15:10 +00001922 },
1923
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001924 {
1925 .vendor = "Winbond",
1926 .name = "W29EE011",
1927 .manufacture_id = WINBOND_ID,
1928 .model_id = W_29C011,
1929 .total_size = 128,
1930 .page_size = 128,
1931 .tested = TEST_OK_PREW,
1932 .probe = probe_w29ee011,
1933 .erase = erase_chip_jedec,
1934 .write = write_jedec,
FENG yu ningff692fb2008-12-08 18:15:10 +00001935 },
1936
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001937 {
1938 .vendor = "Winbond",
1939 .name = "W39V040A",
1940 .manufacture_id = WINBOND_ID,
1941 .model_id = W_39V040A,
1942 .total_size = 512,
1943 .page_size = 64*1024,
1944 .tested = TEST_UNTESTED,
1945 .probe = probe_jedec,
1946 .erase = erase_chip_jedec,
1947 .write = write_39sf020,
FENG yu ningff692fb2008-12-08 18:15:10 +00001948 },
1949
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001950 {
1951 .vendor = "Winbond",
1952 .name = "W39V040B",
1953 .manufacture_id = WINBOND_ID,
1954 .model_id = W_39V040B,
1955 .total_size = 512,
1956 .page_size = 64*1024,
1957 .tested = TEST_OK_PREW,
1958 .probe = probe_jedec,
1959 .erase = erase_chip_jedec,
1960 .write = write_39sf020,
FENG yu ningff692fb2008-12-08 18:15:10 +00001961 },
1962
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001963 {
1964 .vendor = "Winbond",
1965 .name = "W39V040C",
1966 .manufacture_id = WINBOND_ID,
1967 .model_id = 0x50,
1968 .total_size = 512,
1969 .page_size = 64*1024,
1970 .tested = TEST_OK_PREW,
1971 .probe = probe_w39v040c,
1972 .erase = erase_w39v040c,
1973 .write = write_w39v040c,
FENG yu ningff692fb2008-12-08 18:15:10 +00001974 },
1975
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001976 {
1977 .vendor = "Winbond",
1978 .name = "W39V040FA",
1979 .manufacture_id = WINBOND_ID,
1980 .model_id = W_39V040FA,
1981 .total_size = 512,
1982 .page_size = 64*1024,
1983 .tested = TEST_OK_PREW,
1984 .probe = probe_jedec,
1985 .erase = erase_chip_jedec,
1986 .write = write_39sf020,
FENG yu ningff692fb2008-12-08 18:15:10 +00001987 },
1988
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001989 {
1990 .vendor = "Winbond",
1991 .name = "W39V080A",
1992 .manufacture_id = WINBOND_ID,
1993 .model_id = W_39V080A,
1994 .total_size = 1024,
1995 .page_size = 64*1024,
1996 .tested = TEST_OK_PREW,
1997 .probe = probe_jedec,
1998 .erase = erase_chip_jedec,
1999 .write = write_39sf020,
FENG yu ningff692fb2008-12-08 18:15:10 +00002000 },
2001
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002002 {
2003 .vendor = "Winbond",
2004 .name = "W49F002U",
2005 .manufacture_id = WINBOND_ID,
2006 .model_id = W_49F002U,
2007 .total_size = 256,
2008 .page_size = 128,
2009 .tested = TEST_OK_PREW,
2010 .probe = probe_jedec,
2011 .erase = erase_chip_jedec,
2012 .write = write_49f002,
FENG yu ningff692fb2008-12-08 18:15:10 +00002013 },
2014
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002015 {
2016 .vendor = "Winbond",
2017 .name = "W49V002A",
2018 .manufacture_id = WINBOND_ID,
2019 .model_id = W_49V002A,
2020 .total_size = 256,
2021 .page_size = 128,
2022 .tested = TEST_OK_PREW,
2023 .probe = probe_jedec,
2024 .erase = erase_chip_jedec,
2025 .write = write_49f002,
FENG yu ningff692fb2008-12-08 18:15:10 +00002026 },
2027
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002028 {
2029 .vendor = "Winbond",
2030 .name = "W49V002FA",
2031 .manufacture_id = WINBOND_ID,
2032 .model_id = W_49V002FA,
2033 .total_size = 256,
2034 .page_size = 128,
2035 .tested = TEST_UNTESTED,
2036 .probe = probe_jedec,
2037 .erase = erase_chip_jedec,
2038 .write = write_49f002,
FENG yu ningff692fb2008-12-08 18:15:10 +00002039 },
2040
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002041 {
2042 .vendor = "Winbond",
2043 .name = "W39V080FA",
2044 .manufacture_id = WINBOND_ID,
2045 .model_id = W_39V080FA,
2046 .total_size = 1024,
2047 .page_size = 64*1024,
2048 .tested = TEST_OK_PREW,
2049 .probe = probe_winbond_fwhub,
2050 .erase = erase_winbond_fwhub,
2051 .write = write_winbond_fwhub,
FENG yu ningff692fb2008-12-08 18:15:10 +00002052 },
2053
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002054 {
2055 .vendor = "Winbond",
2056 .name = "W39V080FA (dual mode)",
2057 .manufacture_id = WINBOND_ID,
2058 .model_id = W_39V080FA_DM,
2059 .total_size = 512,
2060 .page_size = 64*1024,
2061 .tested = TEST_UNTESTED,
2062 .probe = probe_winbond_fwhub,
2063 .erase = erase_winbond_fwhub,
2064 .write = write_winbond_fwhub,
FENG yu ningff692fb2008-12-08 18:15:10 +00002065 },
2066
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002067 {
2068 .vendor = "Atmel",
2069 .name = "unknown Atmel SPI chip",
2070 .manufacture_id = ATMEL_ID,
2071 .model_id = GENERIC_DEVICE_ID,
2072 .total_size = 0,
2073 .page_size = 256,
2074 .tested = TEST_UNTESTED,
2075 .probe = probe_spi_rdid,
2076 .erase = NULL,
2077 .write = NULL,
FENG yu ningff692fb2008-12-08 18:15:10 +00002078 },
2079
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002080 {
2081 .vendor = "EON",
2082 .name = "unknown EON SPI chip",
2083 .manufacture_id = EON_ID_NOPREFIX,
2084 .model_id = GENERIC_DEVICE_ID,
2085 .total_size = 0,
2086 .page_size = 256,
2087 .tested = TEST_UNTESTED,
2088 .probe = probe_spi_rdid,
2089 .erase = NULL,
2090 .write = NULL,
FENG yu ningff692fb2008-12-08 18:15:10 +00002091 },
2092
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002093 {
2094 .vendor = "Macronix",
2095 .name = "unknown Macronix SPI chip",
2096 .manufacture_id = MX_ID,
2097 .model_id = GENERIC_DEVICE_ID,
2098 .total_size = 0,
2099 .page_size = 256,
2100 .tested = TEST_UNTESTED,
2101 .probe = probe_spi_rdid,
2102 .erase = NULL,
2103 .write = NULL,
FENG yu ningff692fb2008-12-08 18:15:10 +00002104 },
2105
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002106 {
2107 .vendor = "PMC",
2108 .name = "unknown PMC SPI chip",
2109 .manufacture_id = PMC_ID,
2110 .model_id = GENERIC_DEVICE_ID,
2111 .total_size = 0,
2112 .page_size = 256,
2113 .tested = TEST_UNTESTED,
2114 .probe = probe_spi_rdid,
2115 .erase = NULL,
2116 .write = NULL,
FENG yu ningff692fb2008-12-08 18:15:10 +00002117 },
2118
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002119 {
2120 .vendor = "SST",
2121 .name = "unknown SST SPI chip",
2122 .manufacture_id = SST_ID,
2123 .model_id = GENERIC_DEVICE_ID,
2124 .total_size = 0,
2125 .page_size = 256,
2126 .tested = TEST_UNTESTED,
2127 .probe = probe_spi_rdid,
2128 .erase = NULL,
2129 .write = NULL,
FENG yu ningff692fb2008-12-08 18:15:10 +00002130 },
2131
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002132 {
2133 .vendor = "ST",
2134 .name = "unknown ST SPI chip",
2135 .manufacture_id = ST_ID,
2136 .model_id = GENERIC_DEVICE_ID,
2137 .total_size = 0,
2138 .page_size = 256,
2139 .tested = TEST_UNTESTED,
2140 .probe = probe_spi_rdid,
2141 .erase = NULL,
2142 .write = NULL,
FENG yu ningff692fb2008-12-08 18:15:10 +00002143 },
Uwe Hermannfc425e82008-03-16 02:06:25 +00002144
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002145 { NULL }
2146 };