blob: be9bcbb55352385ff36fba69a528a05b3b06c9f1 [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>
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +00007 * Copyright (C) 2006-2009 Carl-Daniel Hailfinger
Uwe Hermannd1107642007-08-29 17:52:32 +00008 *
Stefan Reinauerce532972007-05-23 17:20:56 +00009 * This program is free software; you can redistribute it and/or modify
10 * it under the terms of the GNU General Public License as published by
11 * the Free Software Foundation; either version 2 of the License, or
12 * (at your option) any later version.
Ollie Lho184a4042005-11-26 21:55:36 +000013 *
Stefan Reinauerce532972007-05-23 17:20:56 +000014 * This program is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 * GNU General Public License for more details.
Ollie Lho184a4042005-11-26 21:55:36 +000018 *
Stefan Reinauerce532972007-05-23 17:20:56 +000019 * You should have received a copy of the GNU General Public License
20 * along with this program; if not, write to the Free Software
Uwe Hermannd1107642007-08-29 17:52:32 +000021 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Ollie Lho184a4042005-11-26 21:55:36 +000022 */
23
24#include "flash.h"
Ollie Lho184a4042005-11-26 21:55:36 +000025
Uwe Hermannfc425e82008-03-16 02:06:25 +000026/**
27 * List of supported flash ROM chips.
28 *
29 * Please keep the list sorted by vendor name and chip name, so that
30 * the output of 'flashrom -L' is alphabetically sorted.
31 */
Ollie Lho184a4042005-11-26 21:55:36 +000032struct flashchip flashchips[] = {
Uwe Hermannfc425e82008-03-16 02:06:25 +000033
FENG yu ningff692fb2008-12-08 18:15:10 +000034 /* Vendor, Chip, Vendor ID, Chip ID,
35 * Total size (kB), Page size (B),
36 * Test status,
37 * Probe function, Erase function, Write function, Read function
38 */
39
Stephan Guilloux5c5b5252009-01-08 03:40:17 +000040 {
41 .vendor = "AMD",
42 .name = "Am29F002(N)BB",
43 .manufacture_id = AMD_ID,
44 .model_id = AM_29F002BB,
45 .total_size = 256,
46 .page_size = 256,
47 .tested = TEST_UNTESTED,
48 .probe = probe_jedec,
49 .erase = erase_chip_jedec,
50 .write = write_en29f002a,
FENG yu ningff692fb2008-12-08 18:15:10 +000051 },
52
Stephan Guilloux5c5b5252009-01-08 03:40:17 +000053 {
54 .vendor = "AMD",
55 .name = "Am29F002(N)BT",
56 .manufacture_id = AMD_ID,
57 .model_id = AM_29F002BT,
58 .total_size = 256,
59 .page_size = 256,
60 .tested = TEST_OK_PREW,
61 .probe = probe_jedec,
62 .erase = erase_chip_jedec,
63 .write = write_en29f002a,
FENG yu ningff692fb2008-12-08 18:15:10 +000064 },
65
Stephan Guilloux5c5b5252009-01-08 03:40:17 +000066 {
67 .vendor = "AMD",
68 .name = "Am29F016D",
69 .manufacture_id = AMD_ID,
70 .model_id = AM_29F016D,
71 .total_size = 2048,
72 .page_size = 64 * 1024,
73 .tested = TEST_UNTESTED,
74 .probe = probe_29f040b,
75 .erase = erase_29f040b,
76 .write = write_29f040b,
FENG yu ningff692fb2008-12-08 18:15:10 +000077 },
78
Stephan Guilloux5c5b5252009-01-08 03:40:17 +000079 {
80 .vendor = "AMD",
81 .name = "Am29F040B",
82 .manufacture_id = AMD_ID,
83 .model_id = AM_29F040B,
84 .total_size = 512,
85 .page_size = 64 * 1024,
86 .tested = TEST_OK_PREW,
87 .probe = probe_29f040b,
88 .erase = erase_29f040b,
89 .write = write_29f040b,
FENG yu ningff692fb2008-12-08 18:15:10 +000090 },
91
Stephan Guilloux5c5b5252009-01-08 03:40:17 +000092 {
93 .vendor = "AMD",
Peter Stuge8440cc02009-01-25 23:55:12 +000094 .name = "Am29F080B",
95 .manufacture_id = 0x01,
96 .model_id = 0xd5,
97 .total_size = 1024,
98 .page_size = 64 * 1024,
99 .tested = TEST_UNTESTED,
100 .probe = probe_jedec,
101 .erase = erase_29f040b,
102 .write = write_29f040b,
103 },
104
105 {
106 .vendor = "AMD",
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000107 .name = "Am29LV040B",
108 .manufacture_id = AMD_ID,
109 .model_id = AM_29LV040B,
110 .total_size = 512,
111 .page_size = 64 * 1024,
112 .tested = TEST_UNTESTED,
113 .probe = probe_29f040b,
114 .erase = erase_29f040b,
115 .write = write_29f040b,
FENG yu ningff692fb2008-12-08 18:15:10 +0000116 },
117
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000118 {
Peter Stuge8440cc02009-01-25 23:55:12 +0000119 .vendor = "AMD",
120 .name = "Am29LV081B",
121 .manufacture_id = 0x01,
122 .model_id = 0x38,
123 .total_size = 1024,
124 .page_size = 64 * 1024,
125 .tested = TEST_UNTESTED,
126 .probe = probe_29f040b,
127 .erase = erase_29f040b,
128 .write = write_29f040b,
129 },
130
131 {
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000132 .vendor = "ASD",
133 .name = "AE49F2008",
134 .manufacture_id = ASD_ID,
135 .model_id = ASD_AE49F2008,
136 .total_size = 256,
137 .page_size = 128,
138 .tested = TEST_UNTESTED,
139 .probe = probe_jedec,
140 .erase = erase_chip_jedec,
141 .write = write_jedec,
FENG yu ningff692fb2008-12-08 18:15:10 +0000142 },
143
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000144 {
145 .vendor = "Atmel",
146 .name = "AT25DF021",
147 .manufacture_id = ATMEL_ID,
148 .model_id = AT_25DF021,
149 .total_size = 256,
150 .page_size = 256,
151 .tested = TEST_UNTESTED,
152 .probe = probe_spi_rdid,
Carl-Daniel Hailfingerf8bc28f2009-01-08 16:53:13 +0000153 .erase = spi_chip_erase_60_c7,
154 .write = spi_chip_write,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000155 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000156 },
157
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000158 {
159 .vendor = "Atmel",
160 .name = "AT25DF041A",
161 .manufacture_id = ATMEL_ID,
162 .model_id = AT_25DF041A,
163 .total_size = 512,
164 .page_size = 256,
165 .tested = TEST_UNTESTED,
166 .probe = probe_spi_rdid,
Carl-Daniel Hailfingerf8bc28f2009-01-08 16:53:13 +0000167 .erase = spi_chip_erase_60_c7,
168 .write = spi_chip_write,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000169 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000170 },
171
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000172 {
173 .vendor = "Atmel",
174 .name = "AT25DF081",
175 .manufacture_id = ATMEL_ID,
176 .model_id = AT_25DF081,
177 .total_size = 1024,
178 .page_size = 256,
179 .tested = TEST_UNTESTED,
180 .probe = probe_spi_rdid,
Carl-Daniel Hailfingerf8bc28f2009-01-08 16:53:13 +0000181 .erase = spi_chip_erase_60_c7,
182 .write = spi_chip_write,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000183 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000184 },
185
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000186 {
187 .vendor = "Atmel",
188 .name = "AT25DF161",
189 .manufacture_id = ATMEL_ID,
190 .model_id = AT_25DF161,
191 .total_size = 2048,
192 .page_size = 256,
193 .tested = TEST_UNTESTED,
194 .probe = probe_spi_rdid,
Carl-Daniel Hailfingerf8bc28f2009-01-08 16:53:13 +0000195 .erase = spi_chip_erase_60_c7,
196 .write = spi_chip_write,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000197 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000198 },
199
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000200 {
201 .vendor = "Atmel",
202 .name = "AT25DF321",
203 .manufacture_id = ATMEL_ID,
204 .model_id = AT_25DF321,
205 .total_size = 4096,
206 .page_size = 256,
207 .tested = TEST_OK_PREW,
208 .probe = probe_spi_rdid,
Carl-Daniel Hailfingerf8bc28f2009-01-08 16:53:13 +0000209 .erase = spi_chip_erase_60_c7,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000210 .write = spi_chip_write,
211 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000212 },
213
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000214 {
215 .vendor = "Atmel",
216 .name = "AT25DF321A",
217 .manufacture_id = ATMEL_ID,
218 .model_id = AT_25DF321A,
219 .total_size = 4096,
220 .page_size = 256,
221 .tested = TEST_UNTESTED,
222 .probe = probe_spi_rdid,
Carl-Daniel Hailfingerf8bc28f2009-01-08 16:53:13 +0000223 .erase = spi_chip_erase_60_c7,
224 .write = spi_chip_write,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000225 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000226 },
227
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000228 {
229 .vendor = "Atmel",
230 .name = "AT25DF641",
231 .manufacture_id = ATMEL_ID,
232 .model_id = AT_25DF641,
233 .total_size = 8192,
234 .page_size = 256,
235 .tested = TEST_UNTESTED,
236 .probe = probe_spi_rdid,
Carl-Daniel Hailfingerf8bc28f2009-01-08 16:53:13 +0000237 .erase = spi_chip_erase_60_c7,
238 .write = spi_chip_write,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000239 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000240 },
241
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000242 {
243 .vendor = "Atmel",
244 .name = "AT25F512B",
245 .manufacture_id = ATMEL_ID,
246 .model_id = AT_25F512B,
247 .total_size = 64,
248 .page_size = 256,
249 .tested = TEST_UNTESTED,
250 .probe = probe_spi_rdid,
Carl-Daniel Hailfingerf8bc28f2009-01-08 16:53:13 +0000251 .erase = spi_chip_erase_60_c7,
252 .write = spi_chip_write,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000253 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000254 },
255
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000256 {
257 .vendor = "Atmel",
258 .name = "AT25FS010",
259 .manufacture_id = ATMEL_ID,
260 .model_id = AT_25FS010,
261 .total_size = 128,
262 .page_size = 256,
263 .tested = TEST_UNTESTED,
264 .probe = probe_spi_rdid,
Carl-Daniel Hailfingerf8bc28f2009-01-08 16:53:13 +0000265 .erase = spi_chip_erase_60_c7,
266 .write = spi_chip_write,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000267 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000268 },
269
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000270 {
271 .vendor = "Atmel",
272 .name = "AT25FS040",
273 .manufacture_id = ATMEL_ID,
274 .model_id = AT_25FS040,
275 .total_size = 512,
276 .page_size = 256,
277 .tested = TEST_UNTESTED,
278 .probe = probe_spi_rdid,
Carl-Daniel Hailfingerf8bc28f2009-01-08 16:53:13 +0000279 .erase = spi_chip_erase_60_c7,
280 .write = spi_chip_write,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000281 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000282 },
283
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000284 {
285 .vendor = "Atmel",
286 .name = "AT26DF041",
287 .manufacture_id = ATMEL_ID,
288 .model_id = AT_26DF041,
289 .total_size = 512,
290 .page_size = 256,
291 .tested = TEST_UNTESTED,
292 .probe = probe_spi_rdid,
293 .erase = NULL,
294 .write = NULL /* Incompatible Page write */,
295 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000296 },
297
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000298 {
299 .vendor = "Atmel",
300 .name = "AT26DF081A",
301 .manufacture_id = ATMEL_ID,
302 .model_id = AT_26DF081A,
303 .total_size = 1024,
304 .page_size = 256,
305 .tested = TEST_UNTESTED,
306 .probe = probe_spi_rdid,
Carl-Daniel Hailfingerf8bc28f2009-01-08 16:53:13 +0000307 .erase = spi_chip_erase_60_c7,
308 .write = spi_chip_write,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000309 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000310 },
311
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000312 {
313 .vendor = "Atmel",
314 .name = "AT26DF161",
315 .manufacture_id = ATMEL_ID,
316 .model_id = AT_26DF161,
317 .total_size = 2048,
318 .page_size = 256,
319 .tested = TEST_UNTESTED,
320 .probe = probe_spi_rdid,
Carl-Daniel Hailfingerf8bc28f2009-01-08 16:53:13 +0000321 .erase = spi_chip_erase_60_c7,
322 .write = spi_chip_write,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000323 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000324 },
325
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000326 {
327 .vendor = "Atmel",
328 .name = "AT26DF161A",
329 .manufacture_id = ATMEL_ID,
330 .model_id = AT_26DF161A,
331 .total_size = 2048,
332 .page_size = 256,
333 .tested = TEST_UNTESTED,
334 .probe = probe_spi_rdid,
Carl-Daniel Hailfingerf8bc28f2009-01-08 16:53:13 +0000335 .erase = spi_chip_erase_60_c7,
336 .write = spi_chip_write,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000337 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000338 },
339
340 /*The AT26DF321 has the same ID as the AT25DF321. */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000341 /*{
342 .vendor = "Atmel",
343 .name = "AT26DF321",
344 .manufacture_id = ATMEL_ID,
345 .model_id = AT_26DF321,
346 .total_size = 4096,
347 .page_size = 256,
348 .tested = TEST_UNTESTED,
349 .probe = probe_spi_rdid,
Carl-Daniel Hailfingerf8bc28f2009-01-08 16:53:13 +0000350 .erase = spi_chip_erase_60_c7,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000351 .write = spi_chip_write,
352 .read = spi_chip_read,
353 },*/
FENG yu ningff692fb2008-12-08 18:15:10 +0000354
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000355 {
356 .vendor = "Atmel",
357 .name = "AT26F004",
358 .manufacture_id = ATMEL_ID,
359 .model_id = AT_26F004,
360 .total_size = 512,
361 .page_size = 256,
362 .tested = TEST_UNTESTED,
363 .probe = probe_spi_rdid,
Carl-Daniel Hailfingerf8bc28f2009-01-08 16:53:13 +0000364 .erase = spi_chip_erase_60_c7,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000365 .write = NULL /* Incompatible Page write */,
366 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000367 },
368
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000369 {
370 .vendor = "Atmel",
371 .name = "AT29C020",
372 .manufacture_id = ATMEL_ID,
373 .model_id = AT_29C020,
374 .total_size = 256,
375 .page_size = 256,
376 .tested = TEST_OK_PREW,
377 .probe = probe_jedec,
378 .erase = erase_chip_jedec,
379 .write = write_jedec,
FENG yu ningff692fb2008-12-08 18:15:10 +0000380 },
381
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000382 {
383 .vendor = "Atmel",
384 .name = "AT29C040A",
385 .manufacture_id = ATMEL_ID,
386 .model_id = AT_29C040A,
387 .total_size = 512,
388 .page_size = 256,
389 .tested = TEST_UNTESTED,
390 .probe = probe_jedec,
391 .erase = erase_chip_jedec,
392 .write = write_jedec,
FENG yu ningff692fb2008-12-08 18:15:10 +0000393 },
394
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000395 {
396 .vendor = "Atmel",
397 .name = "AT45CS1282",
398 .manufacture_id = ATMEL_ID,
399 .model_id = AT_45CS1282,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000400 .total_size = 16896 /* No power of two sizes */,
401 .page_size = 1056 /* No power of two sizes */,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000402 .tested = TEST_BAD_READ,
403 .probe = probe_spi_rdid,
404 .erase = NULL,
405 .write = NULL /* Incompatible Page write */,
406 .read = NULL /* Incompatible read */,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000407 },
FENG yu ningff692fb2008-12-08 18:15:10 +0000408
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000409 {
410 .vendor = "Atmel",
411 .name = "AT45DB011D",
412 .manufacture_id = ATMEL_ID,
413 .model_id = AT_45DB011D,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000414 .total_size = 128 /* Size can only be determined from status register */,
415 .page_size = 256 /* Size can only be determined from status register */,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000416 .tested = TEST_BAD_READ,
417 .probe = probe_spi_rdid,
418 .erase = NULL,
419 .write = NULL,
420 .read = NULL,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000421 },
FENG yu ningff692fb2008-12-08 18:15:10 +0000422
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000423 {
424 .vendor = "Atmel",
425 .name = "AT45DB021D",
426 .manufacture_id = ATMEL_ID,
427 .model_id = AT_45DB021D,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000428 .total_size = 256 /* Size can only be determined from status register */,
429 .page_size = 256 /* Size can only be determined from status register */,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000430 .tested = TEST_BAD_READ,
431 .probe = probe_spi_rdid,
432 .erase = NULL,
433 .write = NULL,
434 .read = NULL,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000435 },
FENG yu ningff692fb2008-12-08 18:15:10 +0000436
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000437 {
438 .vendor = "Atmel",
439 .name = "AT45DB041D",
440 .manufacture_id = ATMEL_ID,
441 .model_id = AT_45DB041D,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000442 .total_size = 512 /* Size can only be determined from status register */,
443 .page_size = 256 /* Size can only be determined from status register */,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000444 .tested = TEST_BAD_READ,
445 .probe = probe_spi_rdid,
446 .erase = NULL,
447 .write = NULL,
448 .read = NULL,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000449 },
FENG yu ningff692fb2008-12-08 18:15:10 +0000450
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000451 {
452 .vendor = "Atmel",
453 .name = "AT45DB081D",
454 .manufacture_id = ATMEL_ID,
455 .model_id = AT_45DB081D,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000456 .total_size = 1024 /* Size can only be determined from status register */,
457 .page_size = 256 /* Size can only be determined from status register */,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000458 .tested = TEST_BAD_READ,
459 .probe = probe_spi_rdid,
460 .erase = NULL,
461 .write = NULL,
462 .read = NULL,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000463 },
FENG yu ningff692fb2008-12-08 18:15:10 +0000464
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000465 {
466 .vendor = "Atmel",
467 .name = "AT45DB161D",
468 .manufacture_id = ATMEL_ID,
469 .model_id = AT_45DB161D,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000470 .total_size = 2048 /* Size can only be determined from status register */,
471 .page_size = 512 /* Size can only be determined from status register */,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000472 .tested = TEST_BAD_READ,
473 .probe = probe_spi_rdid,
474 .erase = NULL,
475 .write = NULL,
476 .read = NULL,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000477 },
FENG yu ningff692fb2008-12-08 18:15:10 +0000478
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000479 {
480 .vendor = "Atmel",
481 .name = "AT45DB321C",
482 .manufacture_id = ATMEL_ID,
483 .model_id = AT_45DB321C,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000484 .total_size = 4224 /* No power of two sizes */,
485 .page_size = 528 /* No power of two sizes */,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000486 .tested = TEST_BAD_READ,
487 .probe = probe_spi_rdid,
488 .erase = NULL,
489 .write = NULL,
490 .read = NULL /* Incompatible read */,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000491 },
FENG yu ningff692fb2008-12-08 18:15:10 +0000492
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000493 {
494 .vendor = "Atmel",
495 .name = "AT45DB321D",
496 .manufacture_id = ATMEL_ID,
497 .model_id = AT_45DB321D,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000498 .total_size = 4096 /* Size can only be determined from status register */,
499 .page_size = 512 /* Size can only be determined from status register */,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000500 .tested = TEST_BAD_READ,
501 .probe = probe_spi_rdid,
502 .erase = NULL,
503 .write = NULL,
504 .read = NULL,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000505 },
FENG yu ningff692fb2008-12-08 18:15:10 +0000506
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000507 {
508 .vendor = "Atmel",
509 .name = "AT45DB642D",
510 .manufacture_id = ATMEL_ID,
511 .model_id = AT_45DB642D,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000512 .total_size = 8192 /* Size can only be determined from status register */,
513 .page_size = 1024 /* Size can only be determined from status register */,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000514 .tested = TEST_BAD_READ,
515 .probe = probe_spi_rdid,
516 .erase = NULL,
517 .write = NULL,
518 .read = NULL,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000519 },
FENG yu ningff692fb2008-12-08 18:15:10 +0000520
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000521 {
522 .vendor = "Atmel",
523 .name = "AT49F002(N)",
524 .manufacture_id = ATMEL_ID,
525 .model_id = AT_49F002N,
526 .total_size = 256,
527 .page_size = 256,
528 .tested = TEST_UNTESTED,
529 .probe = probe_jedec,
530 .erase = erase_chip_jedec,
531 .write = write_49f002,
FENG yu ningff692fb2008-12-08 18:15:10 +0000532 },
533
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000534 {
535 .vendor = "Atmel",
536 .name = "AT49F002(N)T",
537 .manufacture_id = ATMEL_ID,
538 .model_id = AT_49F002NT,
539 .total_size = 256,
540 .page_size = 256,
541 .tested = TEST_OK_PREW,
542 .probe = probe_jedec,
543 .erase = erase_chip_jedec,
544 .write = write_49f002,
FENG yu ningff692fb2008-12-08 18:15:10 +0000545 },
546
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000547 {
548 .vendor = "AMIC",
549 .name = "A25L40P",
550 .manufacture_id = AMIC_ID,
551 .model_id = AMIC_A25L40P,
552 .total_size = 512,
553 .page_size = 256,
554 .tested = TEST_OK_PREW,
555 .probe = probe_spi_rdid4,
556 .erase = spi_chip_erase_c7,
557 .write = spi_chip_write,
558 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000559 },
560
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000561 {
562 .vendor = "AMIC",
563 .name = "A29002B",
564 .manufacture_id = AMIC_ID_NOPREFIX,
565 .model_id = AMIC_A29002B,
566 .total_size = 256,
567 .page_size = 64 * 1024,
568 .tested = TEST_UNTESTED,
569 .probe = probe_29f002,
570 .erase = erase_29f002,
571 .write = write_29f002,
FENG yu ningff692fb2008-12-08 18:15:10 +0000572 },
573
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000574 {
575 .vendor = "AMIC",
576 .name = "A29002T",
577 .manufacture_id = AMIC_ID_NOPREFIX,
578 .model_id = AMIC_A29002T,
579 .total_size = 256,
580 .page_size = 64 * 1024,
581 .tested = TEST_OK_PREW,
582 .probe = probe_29f002,
583 .erase = erase_29f002,
584 .write = write_29f002,
FENG yu ningff692fb2008-12-08 18:15:10 +0000585 },
586
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000587 {
588 .vendor = "AMIC",
589 .name = "A29040B",
590 .manufacture_id = AMIC_ID_NOPREFIX,
591 .model_id = AMIC_A29040B,
592 .total_size = 512,
593 .page_size = 64 * 1024,
594 .tested = TEST_OK_PR,
595 .probe = probe_29f040b,
596 .erase = erase_29f040b,
597 .write = write_29f040b,
FENG yu ningff692fb2008-12-08 18:15:10 +0000598 },
599
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000600 {
601 .vendor = "AMIC",
602 .name = "A49LF040A",
603 .manufacture_id = AMIC_ID_NOPREFIX,
604 .model_id = AMIC_A49LF040A,
605 .total_size = 512,
606 .page_size = 64 * 1024,
607 .tested = TEST_OK_PREW,
608 .probe = probe_49fl00x,
609 .erase = erase_49fl00x,
610 .write = write_49fl00x,
FENG yu ningff692fb2008-12-08 18:15:10 +0000611 },
612
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000613 {
614 .vendor = "EMST",
615 .name = "F49B002UA",
616 .manufacture_id = EMST_ID,
617 .model_id = EMST_F49B002UA,
618 .total_size = 256,
619 .page_size = 4096,
620 .tested = TEST_UNTESTED,
621 .probe = probe_jedec,
622 .erase = erase_chip_jedec,
623 .write = write_49f002,
FENG yu ningff692fb2008-12-08 18:15:10 +0000624 },
625
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000626 {
627 .vendor = "EON",
628 .name = "EN29F002(A)(N)B",
629 .manufacture_id = EON_ID,
630 .model_id = EN_29F002B,
631 .total_size = 256,
632 .page_size = 256,
633 .tested = TEST_UNTESTED,
634 .probe = probe_jedec,
635 .erase = erase_chip_jedec,
636 .write = write_en29f002a,
FENG yu ningff692fb2008-12-08 18:15:10 +0000637 },
638
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000639 {
640 .vendor = "EON",
641 .name = "EN29F002(A)(N)T",
642 .manufacture_id = EON_ID,
643 .model_id = EN_29F002T,
644 .total_size = 256,
645 .page_size = 256,
646 .tested = TEST_OK_PREW,
647 .probe = probe_jedec,
648 .erase = erase_chip_jedec,
649 .write = write_en29f002a,
FENG yu ningff692fb2008-12-08 18:15:10 +0000650 },
651
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000652 {
653 .vendor = "Fujitsu",
654 .name = "MBM29F004BC",
655 .manufacture_id = FUJITSU_ID,
656 .model_id = MBM29F004BC,
657 .total_size = 512,
658 .page_size = 64 * 1024,
659 .tested = TEST_UNTESTED,
660 .probe = probe_jedec,
661 .erase = NULL,
662 .write = NULL,
FENG yu ningff692fb2008-12-08 18:15:10 +0000663 },
664
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000665 {
666 .vendor = "Fujitsu",
667 .name = "MBM29F004TC",
668 .manufacture_id = FUJITSU_ID,
669 .model_id = MBM29F004TC,
670 .total_size = 512,
671 .page_size = 64 * 1024,
672 .tested = TEST_UNTESTED,
673 .probe = probe_jedec,
674 .erase = NULL,
675 .write = NULL,
FENG yu ningff692fb2008-12-08 18:15:10 +0000676 },
677
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000678 {
679 .vendor = "Fujitsu",
680 .name = "MBM29F400BC",
681 .manufacture_id = FUJITSU_ID,
682 .model_id = MBM29F400BC,
683 .total_size = 512,
684 .page_size = 64 * 1024,
685 .tested = TEST_UNTESTED,
686 .probe = probe_m29f400bt,
687 .erase = erase_m29f400bt,
688 .write = write_coreboot_m29f400bt,
FENG yu ningff692fb2008-12-08 18:15:10 +0000689 },
690
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000691 {
692 .vendor = "Fujitsu",
693 .name = "MBM29F400TC",
694 .manufacture_id = FUJITSU_ID,
695 .model_id = MBM29F400TC,
696 .total_size = 512,
697 .page_size = 64 * 1024,
698 .tested = TEST_UNTESTED,
699 .probe = probe_m29f400bt,
700 .erase = erase_m29f400bt,
701 .write = write_coreboot_m29f400bt,
FENG yu ningff692fb2008-12-08 18:15:10 +0000702 },
703
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000704 {
705 .vendor = "Intel",
706 .name = "82802AB",
707 .manufacture_id = INTEL_ID,
708 .model_id = 173,
709 .total_size = 512,
710 .page_size = 64 * 1024,
711 .tested = TEST_OK_PREW,
712 .probe = probe_82802ab,
713 .erase = erase_82802ab,
714 .write = write_82802ab,
FENG yu ningff692fb2008-12-08 18:15:10 +0000715 },
716
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000717 {
718 .vendor = "Intel",
719 .name = "82802AC",
720 .manufacture_id = INTEL_ID,
721 .model_id = 172,
722 .total_size = 1024,
723 .page_size = 64 * 1024,
724 .tested = TEST_OK_PREW,
725 .probe = probe_82802ab,
726 .erase = erase_82802ab,
727 .write = write_82802ab,
FENG yu ningff692fb2008-12-08 18:15:10 +0000728 },
729
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000730 {
731 .vendor = "Macronix",
732 .name = "MX25L512",
733 .manufacture_id = MX_ID,
734 .model_id = MX_25L512,
735 .total_size = 64,
736 .page_size = 256,
737 .tested = TEST_UNTESTED,
738 .probe = probe_spi_rdid,
Stephan Guillouxfd315502009-04-20 22:54:13 +0000739 .erase = spi_chip_erase_60_c7,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000740 .write = spi_chip_write,
741 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000742 },
743
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000744 {
745 .vendor = "Macronix",
746 .name = "MX25L1005",
747 .manufacture_id = MX_ID,
748 .model_id = MX_25L1005,
749 .total_size = 128,
750 .page_size = 256,
751 .tested = TEST_UNTESTED,
752 .probe = probe_spi_rdid,
Stephan Guillouxfd315502009-04-20 22:54:13 +0000753 .erase = spi_chip_erase_60_c7,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000754 .write = spi_chip_write,
755 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000756 },
757
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000758 {
759 .vendor = "Macronix",
760 .name = "MX25L2005",
761 .manufacture_id = MX_ID,
762 .model_id = MX_25L2005,
763 .total_size = 256,
764 .page_size = 256,
765 .tested = TEST_UNTESTED,
766 .probe = probe_spi_rdid,
Stephan Guillouxfd315502009-04-20 22:54:13 +0000767 .erase = spi_chip_erase_60_c7,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000768 .write = spi_chip_write,
769 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000770 },
771
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000772 {
773 .vendor = "Macronix",
774 .name = "MX25L4005",
775 .manufacture_id = MX_ID,
776 .model_id = MX_25L4005,
777 .total_size = 512,
778 .page_size = 256,
779 .tested = TEST_OK_PREW,
780 .probe = probe_spi_rdid,
Stephan Guillouxfd315502009-04-20 22:54:13 +0000781 .erase = spi_chip_erase_60_c7,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000782 .write = spi_chip_write,
783 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000784 },
785
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000786 {
787 .vendor = "Macronix",
788 .name = "MX25L8005",
789 .manufacture_id = MX_ID,
790 .model_id = MX_25L8005,
791 .total_size = 1024,
792 .page_size = 256,
793 .tested = TEST_OK_PREW,
794 .probe = probe_spi_rdid,
Stephan Guillouxfd315502009-04-20 22:54:13 +0000795 .erase = spi_chip_erase_60_c7,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000796 .write = spi_chip_write,
797 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000798 },
799
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000800 {
801 .vendor = "Macronix",
802 .name = "MX25L1605",
803 .manufacture_id = MX_ID,
804 .model_id = MX_25L1605,
805 .total_size = 2048,
806 .page_size = 256,
Peter Stugeddb94f72009-04-29 23:22:33 +0000807 .tested = TEST_OK_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000808 .probe = probe_spi_rdid,
Stephan Guillouxe39631c2009-04-19 23:24:26 +0000809 .erase = spi_chip_erase_60_c7,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000810 .write = spi_chip_write,
811 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000812 },
813
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000814 {
815 .vendor = "Macronix",
Stephan Guillouxf5c70902009-04-19 23:04:00 +0000816 .name = "MX25L1635D",
817 .manufacture_id = MX_ID,
818 .model_id = MX_25L1635D,
819 .total_size = 2048,
820 .page_size = 256,
821 .tested = TEST_UNTESTED,
822 .probe = probe_spi_rdid,
Stephan Guillouxe39631c2009-04-19 23:24:26 +0000823 .erase = spi_chip_erase_60_c7,
Stephan Guillouxf5c70902009-04-19 23:04:00 +0000824 .write = spi_chip_write,
825 .read = spi_chip_read,
826 },
Stephan Guillouxfd315502009-04-20 22:54:13 +0000827
Stephan Guillouxf5c70902009-04-19 23:04:00 +0000828 {
829 .vendor = "Macronix",
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000830 .name = "MX25L3205",
831 .manufacture_id = MX_ID,
832 .model_id = MX_25L3205,
833 .total_size = 4096,
834 .page_size = 256,
835 .tested = TEST_OK_PREW,
836 .probe = probe_spi_rdid,
Stephan Guillouxfd315502009-04-20 22:54:13 +0000837 .erase = spi_chip_erase_60_c7,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000838 .write = spi_chip_write,
839 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000840 },
841
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000842 {
843 .vendor = "Macronix",
Stephan Guilloux70ea9a32009-04-23 22:51:56 +0000844 .name = "MX25L3235D",
845 .manufacture_id = MX_ID,
846 .model_id = MX_25L3235D,
847 .total_size = 4096,
848 .page_size = 256,
849 .tested = TEST_UNTESTED,
850 .probe = probe_spi_rdid,
851 .erase = spi_chip_erase_60_c7,
852 .write = spi_chip_write,
853 .read = spi_chip_read,
854 },
855
856 {
857 .vendor = "Macronix",
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000858 .name = "MX25L6405",
859 .manufacture_id = MX_ID,
860 .model_id = MX_25L6405,
861 .total_size = 8192,
862 .page_size = 256,
863 .tested = TEST_UNTESTED,
864 .probe = probe_spi_rdid,
Stephan Guillouxfd315502009-04-20 22:54:13 +0000865 .erase = spi_chip_erase_60_c7,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000866 .write = spi_chip_write,
867 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000868 },
869
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000870 {
871 .vendor = "Macronix",
Stephan Guilloux2f132fe2009-04-21 01:47:16 +0000872 .name = "MX25L12805",
873 .manufacture_id = MX_ID,
874 .model_id = MX_25L12805,
875 .total_size = 16384,
876 .page_size = 256,
877 .tested = TEST_UNTESTED,
878 .probe = probe_spi_rdid,
879 .erase = spi_chip_erase_60_c7,
880 .write = spi_chip_write,
881 .read = spi_chip_read,
882 },
883
884 {
885 .vendor = "Macronix",
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000886 .name = "MX29F002B",
887 .manufacture_id = MX_ID,
888 .model_id = MX_29F002B,
889 .total_size = 256,
890 .page_size = 64 * 1024,
891 .tested = TEST_UNTESTED,
892 .probe = probe_29f002,
893 .erase = erase_29f002,
894 .write = write_29f002,
FENG yu ningff692fb2008-12-08 18:15:10 +0000895 },
896
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000897 {
898 .vendor = "Macronix",
899 .name = "MX29F002T",
900 .manufacture_id = MX_ID,
901 .model_id = MX_29F002T,
902 .total_size = 256,
903 .page_size = 64 * 1024,
904 .tested = TEST_UNTESTED,
905 .probe = probe_29f002,
906 .erase = erase_29f002,
907 .write = write_29f002,
FENG yu ningff692fb2008-12-08 18:15:10 +0000908 },
909
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000910 {
911 .vendor = "Macronix",
912 .name = "MX29LV040C",
913 .manufacture_id = MX_ID,
914 .model_id = MX_29LV040C,
915 .total_size = 512,
916 .page_size = 64 * 1024,
917 .tested = TEST_OK_PR,
918 .probe = probe_29f002,
919 .erase = erase_29f002,
920 .write = write_29f002,
Carl-Daniel Hailfinger7de86392008-12-10 10:32:05 +0000921 },
922
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000923 {
924 .vendor = "Numonyx",
925 .name = "M25PE10",
926 .manufacture_id = ST_ID,
927 .model_id = 0x8011,
928 .total_size = 128,
929 .page_size = 256,
930 .tested = TEST_UNTESTED,
931 .probe = probe_spi_rdid,
932 .erase = spi_chip_erase_d8,
933 .write = spi_chip_write,
934 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000935 },
936
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000937 {
938 .vendor = "Numonyx",
939 .name = "M25PE20",
940 .manufacture_id = ST_ID,
941 .model_id = 0x8012,
942 .total_size = 256,
943 .page_size = 256,
944 .tested = TEST_UNTESTED,
945 .probe = probe_spi_rdid,
946 .erase = spi_chip_erase_d8,
947 .write = spi_chip_write,
948 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000949 },
950
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000951 {
952 .vendor = "Numonyx",
953 .name = "M25PE40",
954 .manufacture_id = ST_ID,
955 .model_id = 0x8013,
956 .total_size = 256,
957 .page_size = 256,
958 .tested = TEST_UNTESTED,
959 .probe = probe_spi_rdid,
960 .erase = spi_chip_erase_d8,
961 .write = spi_chip_write,
962 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000963 },
964
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000965 {
966 .vendor = "Numonyx",
967 .name = "M25PE80",
968 .manufacture_id = ST_ID,
969 .model_id = 0x8014,
970 .total_size = 1024,
971 .page_size = 256,
972 .tested = TEST_OK_PREW,
973 .probe = probe_spi_rdid,
974 .erase = spi_chip_erase_d8,
975 .write = spi_chip_write,
976 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000977 },
978
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000979 {
980 .vendor = "Numonyx",
981 .name = "M25PE16",
982 .manufacture_id = ST_ID,
983 .model_id = 0x8015,
984 .total_size = 2048,
985 .page_size = 256,
986 .tested = TEST_UNTESTED,
987 .probe = probe_spi_rdid,
988 .erase = spi_chip_erase_d8,
989 .write = spi_chip_write,
990 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000991 },
992
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000993 {
994 .vendor = "PMC",
995 .name = "Pm25LV010",
996 .manufacture_id = PMC_ID,
997 .model_id = PMC_25LV010,
998 .total_size = 128,
999 .page_size = 256,
1000 .tested = TEST_UNTESTED,
1001 .probe = probe_spi_rdid,
1002 .erase = spi_chip_erase_c7,
1003 .write = spi_chip_write,
1004 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001005 },
1006
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001007 {
1008 .vendor = "PMC",
1009 .name = "Pm25LV016B",
1010 .manufacture_id = PMC_ID,
1011 .model_id = PMC_25LV016B,
1012 .total_size = 2048,
1013 .page_size = 256,
1014 .tested = TEST_UNTESTED,
1015 .probe = probe_spi_rdid,
1016 .erase = spi_chip_erase_c7,
1017 .write = spi_chip_write,
1018 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001019 },
1020
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001021 {
1022 .vendor = "PMC",
1023 .name = "Pm25LV020",
1024 .manufacture_id = PMC_ID,
1025 .model_id = PMC_25LV020,
1026 .total_size = 256,
1027 .page_size = 256,
1028 .tested = TEST_UNTESTED,
1029 .probe = probe_spi_rdid,
1030 .erase = spi_chip_erase_c7,
1031 .write = spi_chip_write,
1032 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001033 },
1034
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001035 {
1036 .vendor = "PMC",
1037 .name = "Pm25LV040",
1038 .manufacture_id = PMC_ID,
1039 .model_id = PMC_25LV040,
1040 .total_size = 512,
1041 .page_size = 256,
1042 .tested = TEST_UNTESTED,
1043 .probe = probe_spi_rdid,
1044 .erase = spi_chip_erase_c7,
1045 .write = spi_chip_write,
1046 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001047 },
1048
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001049 {
1050 .vendor = "PMC",
1051 .name = "Pm25LV080B",
1052 .manufacture_id = PMC_ID,
1053 .model_id = PMC_25LV080B,
1054 .total_size = 1024,
1055 .page_size = 256,
1056 .tested = TEST_UNTESTED,
1057 .probe = probe_spi_rdid,
1058 .erase = spi_chip_erase_c7,
1059 .write = spi_chip_write,
1060 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001061 },
1062
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001063 {
1064 .vendor = "PMC",
1065 .name = "Pm25LV512",
1066 .manufacture_id = PMC_ID,
1067 .model_id = PMC_25LV512,
1068 .total_size = 64,
1069 .page_size = 256,
1070 .tested = TEST_UNTESTED,
1071 .probe = probe_spi_rdid,
1072 .erase = spi_chip_erase_c7,
1073 .write = spi_chip_write,
1074 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001075 },
1076
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001077 {
1078 .vendor = "PMC",
1079 .name = "Pm49FL002",
1080 .manufacture_id = PMC_ID_NOPREFIX,
1081 .model_id = PMC_49FL002,
1082 .total_size = 256,
1083 .page_size = 16 * 1024,
1084 .tested = TEST_OK_PREW,
1085 .probe = probe_49fl00x,
1086 .erase = erase_49fl00x,
1087 .write = write_49fl00x,
FENG yu ningff692fb2008-12-08 18:15:10 +00001088 },
1089
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001090 {
1091 .vendor = "PMC",
1092 .name = "Pm49FL004",
1093 .manufacture_id = PMC_ID_NOPREFIX,
1094 .model_id = PMC_49FL004,
1095 .total_size = 512,
1096 .page_size = 64 * 1024,
1097 .tested = TEST_OK_PREW,
1098 .probe = probe_49fl00x,
1099 .erase = erase_49fl00x,
1100 .write = write_49fl00x,
FENG yu ningff692fb2008-12-08 18:15:10 +00001101 },
1102
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001103 {
1104 .vendor = "Sharp",
1105 .name = "LHF00L04",
1106 .manufacture_id = SHARP_ID,
1107 .model_id = SHARP_LHF00L04,
1108 .total_size = 1024,
1109 .page_size = 64 * 1024,
1110 .tested = TEST_UNTESTED,
1111 .probe = probe_lhf00l04,
1112 .erase = erase_lhf00l04,
1113 .write = write_lhf00l04,
FENG yu ningff692fb2008-12-08 18:15:10 +00001114 },
1115
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001116 {
1117 .vendor = "Spansion",
1118 .name = "S25FL016A",
1119 .manufacture_id = SPANSION_ID,
1120 .model_id = SPANSION_S25FL016A,
1121 .total_size = 2048,
1122 .page_size = 256,
1123 .tested = TEST_OK_PREW,
1124 .probe = probe_spi_rdid,
1125 .erase = spi_chip_erase_c7,
1126 .write = spi_chip_write,
1127 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001128 },
1129
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001130 {
1131 .vendor = "SST",
1132 .name = "SST25VF016B",
1133 .manufacture_id = SST_ID,
1134 .model_id = SST_25VF016B,
1135 .total_size = 2048,
1136 .page_size = 256,
1137 .tested = TEST_OK_PREW,
1138 .probe = probe_spi_rdid,
1139 .erase = spi_chip_erase_c7,
1140 .write = spi_chip_write,
1141 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001142 },
1143
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001144 {
1145 .vendor = "SST",
1146 .name = "SST25VF032B",
1147 .manufacture_id = SST_ID,
1148 .model_id = SST_25VF032B,
1149 .total_size = 4096,
1150 .page_size = 256,
1151 .tested = TEST_OK_PREW,
1152 .probe = probe_spi_rdid,
1153 .erase = spi_chip_erase_c7,
1154 .write = spi_chip_write,
1155 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001156 },
1157
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001158 {
1159 .vendor = "SST",
1160 .name = "SST25VF040B",
1161 .manufacture_id = SST_ID,
1162 .model_id = SST_25VF040B,
1163 .total_size = 512,
1164 .page_size = 256,
1165 .tested = TEST_UNTESTED,
1166 .probe = probe_spi_rdid,
1167 .erase = spi_chip_erase_c7,
1168 .write = spi_chip_write,
1169 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001170 },
1171
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001172 {
1173 .vendor = "SST",
Zheng Bao0677dff2009-02-25 08:07:33 +00001174 .name = "SST25VF040.REMS",
1175 .manufacture_id = 0xbf,
1176 .model_id = 0x44,
1177 .total_size = 512,
1178 .page_size = 64*1024,
1179 .tested = TEST_OK_PR,
1180 .probe = probe_spi_rems,
1181 .erase = spi_chip_erase_60,
1182 .write = spi_chip_write,
1183 .read = spi_chip_read,
1184 },
1185
1186 {
1187 .vendor = "SST",
Peter Stugefd9217d2009-01-26 03:37:40 +00001188 .name = "SST25VF040B.REMS",
1189 .manufacture_id = 0xbf,
1190 .model_id = 0x8d,
1191 .total_size = 512,
1192 .page_size = 64*1024,
1193 .tested = TEST_OK_PR,
1194 .probe = probe_spi_rems,
1195 .erase = spi_chip_erase_c7,
Peter Stugec6e90552009-01-26 04:48:01 +00001196 .write = spi_aai_write,
Peter Stugefd9217d2009-01-26 03:37:40 +00001197 .read = spi_chip_read,
1198 },
1199
1200 {
1201 .vendor = "SST",
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001202 .name = "SST25VF080B",
1203 .manufacture_id = SST_ID,
1204 .model_id = SST_25VF080B,
1205 .total_size = 1024,
1206 .page_size = 256,
Peter Stuge51f40622009-01-24 01:32:40 +00001207 .tested = TEST_OK_PROBE,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001208 .probe = probe_spi_rdid,
1209 .erase = spi_chip_erase_60_c7,
1210 .write = spi_chip_write,
1211 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001212 },
1213
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001214 {
1215 .vendor = "SST",
1216 .name = "SST28SF040A",
1217 .manufacture_id = SST_ID,
1218 .model_id = SST_28SF040,
1219 .total_size = 512,
1220 .page_size = 256,
1221 .tested = TEST_UNTESTED,
1222 .probe = probe_28sf040,
1223 .erase = erase_28sf040,
1224 .write = write_28sf040,
FENG yu ningff692fb2008-12-08 18:15:10 +00001225 },
1226
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001227 {
1228 .vendor = "SST",
1229 .name = "SST29EE010",
1230 .manufacture_id = SST_ID,
1231 .model_id = SST_29EE010,
1232 .total_size = 128,
1233 .page_size = 128,
1234 .tested = TEST_OK_PREW,
1235 .probe = probe_jedec,
1236 .erase = erase_chip_jedec,
1237 .write = write_jedec,
FENG yu ningff692fb2008-12-08 18:15:10 +00001238 },
1239
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001240 {
1241 .vendor = "SST",
1242 .name = "SST29LE010",
1243 .manufacture_id = SST_ID,
1244 .model_id = SST_29LE010,
1245 .total_size = 128,
1246 .page_size = 128,
1247 .tested = TEST_UNTESTED,
1248 .probe = probe_jedec,
1249 .erase = erase_chip_jedec,
1250 .write = write_jedec,
FENG yu ningff692fb2008-12-08 18:15:10 +00001251 },
1252
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001253 {
1254 .vendor = "SST",
1255 .name = "SST29EE020A",
1256 .manufacture_id = SST_ID,
1257 .model_id = SST_29EE020A,
1258 .total_size = 256,
1259 .page_size = 128,
Peter Stugeb27d0a22009-02-22 21:07:28 +00001260 .tested = TEST_OK_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001261 .probe = probe_jedec,
1262 .erase = erase_chip_jedec,
1263 .write = write_jedec,
FENG yu ningff692fb2008-12-08 18:15:10 +00001264 },
1265
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001266 {
1267 .vendor = "SST",
1268 .name = "SST29LE020",
1269 .manufacture_id = SST_ID,
1270 .model_id = SST_29LE020,
1271 .total_size = 256,
1272 .page_size = 128,
1273 .tested = TEST_UNTESTED,
1274 .probe = probe_jedec,
1275 .erase = erase_chip_jedec,
1276 .write = write_jedec,
FENG yu ningff692fb2008-12-08 18:15:10 +00001277 },
1278
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001279 {
1280 .vendor = "SST",
1281 .name = "SST39SF010A",
1282 .manufacture_id = SST_ID,
1283 .model_id = SST_39SF010,
1284 .total_size = 128,
1285 .page_size = 4096,
1286 .tested = TEST_OK_PREW,
1287 .probe = probe_jedec,
1288 .erase = erase_chip_jedec,
1289 .write = write_39sf020,
FENG yu ningff692fb2008-12-08 18:15:10 +00001290 },
1291
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001292 {
1293 .vendor = "SST",
1294 .name = "SST39SF020A",
1295 .manufacture_id = SST_ID,
1296 .model_id = SST_39SF020,
1297 .total_size = 256,
1298 .page_size = 4096,
1299 .tested = TEST_OK_PREW,
1300 .probe = probe_jedec,
1301 .erase = erase_chip_jedec,
1302 .write = write_39sf020,
FENG yu ningff692fb2008-12-08 18:15:10 +00001303 },
1304
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001305 {
1306 .vendor = "SST",
1307 .name = "SST39SF040",
1308 .manufacture_id = SST_ID,
1309 .model_id = SST_39SF040,
1310 .total_size = 512,
1311 .page_size = 4096,
1312 .tested = TEST_OK_PREW,
1313 .probe = probe_jedec,
1314 .erase = erase_chip_jedec,
1315 .write = write_39sf020,
FENG yu ningff692fb2008-12-08 18:15:10 +00001316 },
1317
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001318 {
1319 .vendor = "SST",
1320 .name = "SST39VF512",
1321 .manufacture_id = SST_ID,
1322 .model_id = SST_39VF512,
1323 .total_size = 64,
1324 .page_size = 4096,
1325 .tested = TEST_UNTESTED,
1326 .probe = probe_jedec,
1327 .erase = erase_chip_jedec,
1328 .write = write_39sf020,
FENG yu ningff692fb2008-12-08 18:15:10 +00001329 },
1330
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001331 {
1332 .vendor = "SST",
1333 .name = "SST39VF010",
1334 .manufacture_id = SST_ID,
1335 .model_id = SST_39VF010,
1336 .total_size = 128,
1337 .page_size = 4096,
1338 .tested = TEST_UNTESTED,
1339 .probe = probe_jedec,
1340 .erase = erase_chip_jedec,
1341 .write = write_39sf020,
FENG yu ningff692fb2008-12-08 18:15:10 +00001342 },
1343
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001344 {
1345 .vendor = "SST",
1346 .name = "SST39VF020",
1347 .manufacture_id = SST_ID,
1348 .model_id = SST_39VF020,
1349 .total_size = 256,
1350 .page_size = 4096,
1351 .tested = TEST_OK_PREW,
1352 .probe = probe_jedec,
1353 .erase = erase_chip_jedec,
1354 .write = write_39sf020,
FENG yu ningff692fb2008-12-08 18:15:10 +00001355 },
1356
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001357 {
1358 .vendor = "SST",
1359 .name = "SST39VF040",
1360 .manufacture_id = SST_ID,
1361 .model_id = SST_39VF040,
1362 .total_size = 512,
1363 .page_size = 4096,
1364 .tested = TEST_OK_PROBE,
1365 .probe = probe_jedec,
1366 .erase = erase_chip_jedec,
1367 .write = write_39sf020,
Carl-Daniel Hailfinger90eff152008-12-08 23:51:45 +00001368 },
FENG yu ningff692fb2008-12-08 18:15:10 +00001369
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001370 {
1371 .vendor = "SST",
Peter Stuge8440cc02009-01-25 23:55:12 +00001372 .name = "SST39VF080",
1373 .manufacture_id = 0xbf,
1374 .model_id = 0xd8,
1375 .total_size = 1024,
1376 .page_size = 4096,
1377 .tested = TEST_UNTESTED,
1378 .probe = probe_jedec,
1379 .erase = erase_chip_jedec,
1380 .write = write_39sf020,
1381 },
1382
1383 {
1384 .vendor = "SST",
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001385 .name = "SST49LF002A/B",
1386 .manufacture_id = SST_ID,
1387 .model_id = SST_49LF002A,
1388 .total_size = 256,
1389 .page_size = 16 * 1024,
1390 .tested = TEST_OK_PREW,
1391 .probe = probe_sst_fwhub,
1392 .erase = erase_sst_fwhub,
1393 .write = write_sst_fwhub,
FENG yu ningff692fb2008-12-08 18:15:10 +00001394 },
1395
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001396 {
1397 .vendor = "SST",
1398 .name = "SST49LF003A/B",
1399 .manufacture_id = SST_ID,
1400 .model_id = SST_49LF003A,
1401 .total_size = 384,
1402 .page_size = 64 * 1024,
1403 .tested = TEST_UNTESTED,
1404 .probe = probe_sst_fwhub,
1405 .erase = erase_sst_fwhub,
1406 .write = write_sst_fwhub,
FENG yu ningff692fb2008-12-08 18:15:10 +00001407 },
1408
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001409 {
1410 .vendor = "SST",
1411 .name = "SST49LF004A/B",
1412 .manufacture_id = SST_ID,
1413 .model_id = SST_49LF004A,
1414 .total_size = 512,
1415 .page_size = 64 * 1024,
1416 .tested = TEST_OK_PREW,
1417 .probe = probe_sst_fwhub,
1418 .erase = erase_sst_fwhub,
1419 .write = write_sst_fwhub,
FENG yu ningff692fb2008-12-08 18:15:10 +00001420 },
1421
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001422 {
1423 .vendor = "SST",
1424 .name = "SST49LF004C",
1425 .manufacture_id = SST_ID,
1426 .model_id = SST_49LF004C,
1427 .total_size = 512,
1428 .page_size = 4 * 1024,
1429 .tested = TEST_UNTESTED,
1430 .probe = probe_49lfxxxc,
1431 .erase = erase_49lfxxxc,
1432 .write = write_49lfxxxc,
FENG yu ningff692fb2008-12-08 18:15:10 +00001433 },
1434
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001435 {
1436 .vendor = "SST",
1437 .name = "SST49LF008A",
1438 .manufacture_id = SST_ID,
1439 .model_id = SST_49LF008A,
1440 .total_size = 1024,
1441 .page_size = 64 * 1024,
1442 .tested = TEST_OK_PREW,
1443 .probe = probe_sst_fwhub,
1444 .erase = erase_sst_fwhub,
1445 .write = write_sst_fwhub,
FENG yu ningff692fb2008-12-08 18:15:10 +00001446 },
1447
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001448 {
1449 .vendor = "SST",
1450 .name = "SST49LF008C",
1451 .manufacture_id = SST_ID,
1452 .model_id = SST_49LF008C,
1453 .total_size = 1024,
1454 .page_size = 4 * 1024,
1455 .tested = TEST_UNTESTED,
1456 .probe = probe_49lfxxxc,
1457 .erase = erase_49lfxxxc,
1458 .write = write_49lfxxxc,
FENG yu ningff692fb2008-12-08 18:15:10 +00001459 },
1460
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001461 {
1462 .vendor = "SST",
1463 .name = "SST49LF016C",
1464 .manufacture_id = SST_ID,
1465 .model_id = SST_49LF016C,
1466 .total_size = 2048,
1467 .page_size = 4 * 1024,
1468 .tested = TEST_OK_PREW,
1469 .probe = probe_49lfxxxc,
1470 .erase = erase_49lfxxxc,
1471 .write = write_49lfxxxc,
FENG yu ningff692fb2008-12-08 18:15:10 +00001472 },
1473
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001474 {
1475 .vendor = "SST",
1476 .name = "SST49LF020",
1477 .manufacture_id = SST_ID,
1478 .model_id = SST_49LF020,
1479 .total_size = 256,
1480 .page_size = 16 * 1024,
1481 .tested = TEST_OK_PR,
1482 .probe = probe_jedec,
1483 .erase = erase_49lf040,
1484 .write = write_49lf040,
Sven Schnellec208dfb2009-01-07 12:35:09 +00001485 },
1486
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001487 {
1488 .vendor = "SST",
1489 .name = "SST49LF020A",
1490 .manufacture_id = SST_ID,
1491 .model_id = SST_49LF020A,
1492 .total_size = 256,
1493 .page_size = 16 * 1024,
1494 .tested = TEST_UNTESTED,
1495 .probe = probe_jedec,
1496 .erase = erase_49lf040,
1497 .write = write_49lf040,
FENG yu ningff692fb2008-12-08 18:15:10 +00001498 },
1499
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001500 {
1501 .vendor = "SST",
1502 .name = "SST49LF040",
1503 .manufacture_id = SST_ID,
1504 .model_id = SST_49LF040,
1505 .total_size = 512,
1506 .page_size = 4096,
1507 .tested = TEST_OK_PREW,
1508 .probe = probe_jedec,
1509 .erase = erase_49lf040,
1510 .write = write_49lf040,
FENG yu ningff692fb2008-12-08 18:15:10 +00001511 },
1512
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001513 {
1514 .vendor = "SST",
1515 .name = "SST49LF040B",
1516 .manufacture_id = SST_ID,
1517 .model_id = SST_49LF040B,
1518 .total_size = 512,
1519 .page_size = 64 * 1024,
1520 .tested = TEST_OK_PREW,
1521 .probe = probe_sst_fwhub,
1522 .erase = erase_sst_fwhub,
1523 .write = write_sst_fwhub,
FENG yu ningff692fb2008-12-08 18:15:10 +00001524 },
1525
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001526 {
1527 .vendor = "SST",
1528 .name = "SST49LF080A",
1529 .manufacture_id = SST_ID,
1530 .model_id = SST_49LF080A,
1531 .total_size = 1024,
1532 .page_size = 4096,
1533 .tested = TEST_OK_PREW,
1534 .probe = probe_jedec,
1535 .erase = erase_49lf040,
1536 .write = write_49lf040,
FENG yu ningff692fb2008-12-08 18:15:10 +00001537 },
1538
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001539 {
1540 .vendor = "SST",
1541 .name = "SST49LF160C",
1542 .manufacture_id = SST_ID,
1543 .model_id = SST_49LF160C,
1544 .total_size = 2048,
1545 .page_size = 4 * 1024,
1546 .tested = TEST_OK_PREW,
1547 .probe = probe_49lfxxxc,
1548 .erase = erase_49lfxxxc,
1549 .write = write_49lfxxxc,
FENG yu ningff692fb2008-12-08 18:15:10 +00001550 },
1551
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001552 {
1553 .vendor = "ST",
1554 .name = "M25P05-A",
1555 .manufacture_id = ST_ID,
1556 .model_id = ST_M25P05A,
1557 .total_size = 64,
1558 .page_size = 256,
1559 .tested = TEST_UNTESTED,
1560 .probe = probe_spi_rdid,
1561 .erase = spi_chip_erase_c7,
1562 .write = spi_chip_write,
1563 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001564 },
1565
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001566 {
1567 .vendor = "ST",
1568 .name = "M25P10-A",
1569 .manufacture_id = ST_ID,
1570 .model_id = ST_M25P10A,
1571 .total_size = 128,
1572 .page_size = 256,
1573 .tested = TEST_UNTESTED,
1574 .probe = probe_spi_rdid,
1575 .erase = spi_chip_erase_c7,
1576 .write = spi_chip_write,
1577 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001578 },
1579
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001580 {
1581 .vendor = "ST",
1582 .name = "M25P20",
1583 .manufacture_id = ST_ID,
1584 .model_id = ST_M25P20,
1585 .total_size = 256,
1586 .page_size = 256,
1587 .tested = TEST_UNTESTED,
1588 .probe = probe_spi_rdid,
1589 .erase = spi_chip_erase_c7,
1590 .write = spi_chip_write,
1591 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001592 },
1593
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001594 {
1595 .vendor = "ST",
1596 .name = "M25P40",
1597 .manufacture_id = ST_ID,
1598 .model_id = ST_M25P40,
1599 .total_size = 512,
1600 .page_size = 256,
1601 .tested = TEST_UNTESTED,
1602 .probe = probe_spi_rdid,
1603 .erase = spi_chip_erase_c7,
1604 .write = spi_chip_write,
1605 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001606 },
1607
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001608 {
1609 .vendor = "ST",
1610 .name = "M25P40-old",
1611 .manufacture_id = ST_ID,
1612 .model_id = ST_M25P40_RES,
1613 .total_size = 512,
1614 .page_size = 256,
1615 .tested = TEST_UNTESTED,
1616 .probe = probe_spi_res,
1617 .erase = spi_chip_erase_c7,
1618 .write = spi_chip_write,
1619 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001620 },
1621
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001622 {
1623 .vendor = "ST",
1624 .name = "M25P80",
1625 .manufacture_id = ST_ID,
1626 .model_id = ST_M25P80,
1627 .total_size = 1024,
1628 .page_size = 256,
1629 .tested = TEST_UNTESTED,
1630 .probe = probe_spi_rdid,
1631 .erase = spi_chip_erase_c7,
1632 .write = spi_chip_write,
1633 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001634 },
1635
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001636 {
1637 .vendor = "ST",
1638 .name = "M25P16",
1639 .manufacture_id = ST_ID,
1640 .model_id = ST_M25P16,
1641 .total_size = 2048,
1642 .page_size = 256,
1643 .tested = TEST_OK_PREW,
1644 .probe = probe_spi_rdid,
1645 .erase = spi_chip_erase_c7,
1646 .write = spi_chip_write,
1647 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001648 },
1649
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001650 {
1651 .vendor = "ST",
1652 .name = "M25P32",
1653 .manufacture_id = ST_ID,
1654 .model_id = ST_M25P32,
1655 .total_size = 4096,
1656 .page_size = 256,
1657 .tested = TEST_OK_PREW,
1658 .probe = probe_spi_rdid,
1659 .erase = spi_chip_erase_c7,
1660 .write = spi_chip_write,
1661 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001662 },
1663
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001664 {
1665 .vendor = "ST",
1666 .name = "M25P64",
1667 .manufacture_id = ST_ID,
1668 .model_id = ST_M25P64,
1669 .total_size = 8192,
1670 .page_size = 256,
1671 .tested = TEST_UNTESTED,
1672 .probe = probe_spi_rdid,
1673 .erase = spi_chip_erase_c7,
1674 .write = spi_chip_write,
1675 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001676 },
1677
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001678 {
1679 .vendor = "ST",
1680 .name = "M25P128",
1681 .manufacture_id = ST_ID,
1682 .model_id = ST_M25P128,
1683 .total_size = 16384,
1684 .page_size = 256,
1685 .tested = TEST_UNTESTED,
1686 .probe = probe_spi_rdid,
1687 .erase = spi_chip_erase_c7,
1688 .write = spi_chip_write,
1689 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001690 },
1691
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001692 {
1693 .vendor = "ST",
1694 .name = "M29F002B",
1695 .manufacture_id = ST_ID,
1696 .model_id = ST_M29F002B,
1697 .total_size = 256,
1698 .page_size = 64 * 1024,
1699 .tested = TEST_UNTESTED,
1700 .probe = probe_jedec,
Peter Stugeaf8ffac2009-01-26 06:42:02 +00001701 .erase = erase_m29f002,
1702 .write = write_m29f002b,
FENG yu ningff692fb2008-12-08 18:15:10 +00001703 },
1704
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001705 {
1706 .vendor = "ST",
1707 .name = "M29F002T/NT",
1708 .manufacture_id = ST_ID,
1709 .model_id = ST_M29F002T,
1710 .total_size = 256,
1711 .page_size = 64 * 1024,
Peter Stugeaf8ffac2009-01-26 06:42:02 +00001712 .tested = TEST_OK_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001713 .probe = probe_jedec,
Peter Stugeaf8ffac2009-01-26 06:42:02 +00001714 .erase = erase_m29f002,
1715 .write = write_m29f002t,
FENG yu ningff692fb2008-12-08 18:15:10 +00001716 },
1717
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001718 {
1719 .vendor = "ST",
1720 .name = "M29F040B",
1721 .manufacture_id = ST_ID,
1722 .model_id = ST_M29F040B,
1723 .total_size = 512,
1724 .page_size = 64 * 1024,
1725 .tested = TEST_OK_PREW,
1726 .probe = probe_29f040b,
1727 .erase = erase_29f040b,
1728 .write = write_29f040b,
FENG yu ningff692fb2008-12-08 18:15:10 +00001729 },
1730
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001731 {
1732 .vendor = "ST",
1733 .name = "M29F400BT",
1734 .manufacture_id = ST_ID,
1735 .model_id = ST_M29F400BT,
1736 .total_size = 512,
1737 .page_size = 64 * 1024,
1738 .tested = TEST_UNTESTED,
1739 .probe = probe_m29f400bt,
1740 .erase = erase_m29f400bt,
1741 .write = write_coreboot_m29f400bt,
FENG yu ningff692fb2008-12-08 18:15:10 +00001742 },
1743
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001744 {
1745 .vendor = "ST",
1746 .name = "M29W010B",
1747 .manufacture_id = ST_ID,
1748 .model_id = ST_M29W010B,
1749 .total_size = 128,
1750 .page_size = 16 * 1024,
1751 .tested = TEST_UNTESTED,
1752 .probe = probe_jedec,
1753 .erase = erase_chip_jedec,
1754 .write = write_jedec,
FENG yu ningff692fb2008-12-08 18:15:10 +00001755 },
1756
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001757 {
1758 .vendor = "ST",
1759 .name = "M29W040B",
1760 .manufacture_id = ST_ID,
1761 .model_id = ST_M29W040B,
1762 .total_size = 512,
1763 .page_size = 64 * 1024,
1764 .tested = TEST_UNTESTED,
1765 .probe = probe_jedec,
1766 .erase = erase_chip_jedec,
1767 .write = write_jedec,
FENG yu ningff692fb2008-12-08 18:15:10 +00001768 },
1769
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001770 {
1771 .vendor = "ST",
1772 .name = "M50FLW040A",
1773 .manufacture_id = ST_ID,
1774 .model_id = ST_M50FLW040A,
1775 .total_size = 512,
1776 .page_size = 64 * 1024,
1777 .tested = TEST_UNTESTED,
1778 .probe = probe_stm50flw0x0x,
1779 .erase = erase_stm50flw0x0x,
1780 .write = write_stm50flw0x0x,
FENG yu ningff692fb2008-12-08 18:15:10 +00001781 },
1782
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001783 {
1784 .vendor = "ST",
1785 .name = "M50FLW040B",
1786 .manufacture_id = ST_ID,
1787 .model_id = ST_M50FLW040B,
1788 .total_size = 512,
1789 .page_size = 64 * 1024,
1790 .tested = TEST_UNTESTED,
1791 .probe = probe_stm50flw0x0x,
1792 .erase = erase_stm50flw0x0x,
1793 .write = write_stm50flw0x0x,
FENG yu ningff692fb2008-12-08 18:15:10 +00001794 },
1795
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001796 {
1797 .vendor = "ST",
1798 .name = "M50FLW080A",
1799 .manufacture_id = ST_ID,
1800 .model_id = ST_M50FLW080A,
1801 .total_size = 1024,
1802 .page_size = 64 * 1024,
1803 .tested = TEST_OK_PREW,
1804 .probe = probe_stm50flw0x0x,
1805 .erase = erase_stm50flw0x0x,
1806 .write = write_stm50flw0x0x,
FENG yu ningff692fb2008-12-08 18:15:10 +00001807 },
1808
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001809 {
1810 .vendor = "ST",
1811 .name = "M50FLW080B",
1812 .manufacture_id = ST_ID,
1813 .model_id = ST_M50FLW080B,
1814 .total_size = 1024,
1815 .page_size = 64 * 1024,
1816 .tested = TEST_UNTESTED,
1817 .probe = probe_stm50flw0x0x,
1818 .erase = erase_stm50flw0x0x,
1819 .write = write_stm50flw0x0x,
FENG yu ningff692fb2008-12-08 18:15:10 +00001820 },
1821
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001822 {
1823 .vendor = "ST",
1824 .name = "M50FW002",
1825 .manufacture_id = ST_ID,
1826 .model_id = ST_M50FW002,
1827 .total_size = 256,
1828 .page_size = 64 * 1024,
1829 .tested = TEST_UNTESTED,
1830 .probe = probe_49lfxxxc,
1831 .erase = NULL,
1832 .write = NULL,
FENG yu ningff692fb2008-12-08 18:15:10 +00001833 },
1834
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001835 {
1836 .vendor = "ST",
1837 .name = "M50FW016",
1838 .manufacture_id = ST_ID,
1839 .model_id = ST_M50FW016,
1840 .total_size = 2048,
1841 .page_size = 64 * 1024,
1842 .tested = TEST_UNTESTED,
1843 .probe = probe_82802ab,
1844 .erase = erase_82802ab,
1845 .write = write_82802ab,
FENG yu ningff692fb2008-12-08 18:15:10 +00001846 },
1847
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001848 {
1849 .vendor = "ST",
1850 .name = "M50FW040",
1851 .manufacture_id = ST_ID,
1852 .model_id = ST_M50FW040,
1853 .total_size = 512,
1854 .page_size = 64 * 1024,
1855 .tested = TEST_OK_PREW,
1856 .probe = probe_82802ab,
1857 .erase = erase_82802ab,
1858 .write = write_82802ab,
FENG yu ningff692fb2008-12-08 18:15:10 +00001859 },
1860
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001861 {
1862 .vendor = "ST",
1863 .name = "M50FW080",
1864 .manufacture_id = ST_ID,
1865 .model_id = ST_M50FW080,
1866 .total_size = 1024,
1867 .page_size = 64 * 1024,
Peter Stugea657e942009-01-24 23:01:08 +00001868 .tested = TEST_OK_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001869 .probe = probe_82802ab,
1870 .erase = erase_82802ab,
1871 .write = write_82802ab,
FENG yu ningff692fb2008-12-08 18:15:10 +00001872 },
1873
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001874 {
1875 .vendor = "ST",
1876 .name = "M50LPW116",
1877 .manufacture_id = ST_ID,
1878 .model_id = ST_M50LPW116,
1879 .total_size = 2048,
1880 .page_size = 64 * 1024,
1881 .tested = TEST_UNTESTED,
1882 .probe = probe_jedec,
1883 .erase = erase_chip_jedec,
1884 .write = write_jedec,
FENG yu ningff692fb2008-12-08 18:15:10 +00001885 },
1886
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001887 {
1888 .vendor = "SyncMOS",
1889 .name = "S29C31004T",
1890 .manufacture_id = SYNCMOS_ID,
1891 .model_id = S29C31004T,
1892 .total_size = 512,
1893 .page_size = 128,
1894 .tested = TEST_UNTESTED,
1895 .probe = probe_jedec,
1896 .erase = erase_chip_jedec,
1897 .write = write_49f002,
FENG yu ningff692fb2008-12-08 18:15:10 +00001898 },
1899
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001900 {
1901 .vendor = "SyncMOS",
1902 .name = "S29C51001T",
1903 .manufacture_id = SYNCMOS_ID,
1904 .model_id = S29C51001T,
1905 .total_size = 128,
1906 .page_size = 128,
1907 .tested = TEST_UNTESTED,
1908 .probe = probe_jedec,
1909 .erase = erase_chip_jedec,
1910 .write = write_49f002,
FENG yu ningff692fb2008-12-08 18:15:10 +00001911 },
1912
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001913 {
1914 .vendor = "SyncMOS",
1915 .name = "S29C51002T",
1916 .manufacture_id = SYNCMOS_ID,
1917 .model_id = S29C51002T,
1918 .total_size = 256,
1919 .page_size = 128,
1920 .tested = TEST_OK_PREW,
1921 .probe = probe_jedec,
1922 .erase = erase_chip_jedec,
1923 .write = write_49f002,
FENG yu ningff692fb2008-12-08 18:15:10 +00001924 },
1925
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001926 {
1927 .vendor = "SyncMOS",
1928 .name = "S29C51004T",
1929 .manufacture_id = SYNCMOS_ID,
1930 .model_id = S29C51004T,
1931 .total_size = 512,
1932 .page_size = 128,
1933 .tested = TEST_UNTESTED,
1934 .probe = probe_jedec,
1935 .erase = erase_chip_jedec,
1936 .write = write_49f002,
FENG yu ningff692fb2008-12-08 18:15:10 +00001937 },
1938
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001939 {
1940 .vendor = "Winbond",
1941 .name = "W25x10",
1942 .manufacture_id = WINBOND_NEX_ID,
1943 .model_id = W_25X10,
1944 .total_size = 128,
1945 .page_size = 256,
1946 .tested = TEST_UNTESTED,
1947 .probe = probe_spi_rdid,
1948 .erase = spi_chip_erase_c7,
1949 .write = spi_chip_write,
1950 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001951 },
1952
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001953 {
1954 .vendor = "Winbond",
1955 .name = "W25x20",
1956 .manufacture_id = WINBOND_NEX_ID,
1957 .model_id = W_25X20,
1958 .total_size = 256,
1959 .page_size = 256,
1960 .tested = TEST_UNTESTED,
1961 .probe = probe_spi_rdid,
1962 .erase = spi_chip_erase_c7,
1963 .write = spi_chip_write,
1964 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001965 },
1966
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001967 {
1968 .vendor = "Winbond",
1969 .name = "W25x40",
1970 .manufacture_id = WINBOND_NEX_ID,
1971 .model_id = W_25X40,
1972 .total_size = 512,
1973 .page_size = 256,
1974 .tested = TEST_OK_PREW,
1975 .probe = probe_spi_rdid,
1976 .erase = spi_chip_erase_c7,
1977 .write = spi_chip_write,
1978 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001979 },
1980
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001981 {
1982 .vendor = "Winbond",
1983 .name = "W25x80",
1984 .manufacture_id = WINBOND_NEX_ID,
1985 .model_id = W_25X80,
1986 .total_size = 1024,
1987 .page_size = 256,
1988 .tested = TEST_OK_PREW,
1989 .probe = probe_spi_rdid,
1990 .erase = spi_chip_erase_c7,
1991 .write = spi_chip_write,
1992 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001993 },
1994
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001995 {
1996 .vendor = "Winbond",
1997 .name = "W29C011",
1998 .manufacture_id = WINBOND_ID,
1999 .model_id = W_29C011,
2000 .total_size = 128,
2001 .page_size = 128,
2002 .tested = TEST_OK_PREW,
2003 .probe = probe_jedec,
2004 .erase = erase_chip_jedec,
2005 .write = write_jedec,
FENG yu ningff692fb2008-12-08 18:15:10 +00002006 },
2007
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002008 {
2009 .vendor = "Winbond",
2010 .name = "W29C020C",
2011 .manufacture_id = WINBOND_ID,
2012 .model_id = W_29C020C,
2013 .total_size = 256,
2014 .page_size = 128,
2015 .tested = TEST_OK_PREW,
2016 .probe = probe_jedec,
2017 .erase = erase_chip_jedec,
2018 .write = write_jedec,
FENG yu ningff692fb2008-12-08 18:15:10 +00002019 },
2020
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002021 {
2022 .vendor = "Winbond",
2023 .name = "W29C040P",
2024 .manufacture_id = WINBOND_ID,
2025 .model_id = W_29C040P,
2026 .total_size = 512,
2027 .page_size = 256,
2028 .tested = TEST_UNTESTED,
2029 .probe = probe_jedec,
2030 .erase = erase_chip_jedec,
2031 .write = write_jedec,
FENG yu ningff692fb2008-12-08 18:15:10 +00002032 },
2033
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002034 {
2035 .vendor = "Winbond",
2036 .name = "W29EE011",
2037 .manufacture_id = WINBOND_ID,
2038 .model_id = W_29C011,
2039 .total_size = 128,
2040 .page_size = 128,
2041 .tested = TEST_OK_PREW,
2042 .probe = probe_w29ee011,
2043 .erase = erase_chip_jedec,
2044 .write = write_jedec,
FENG yu ningff692fb2008-12-08 18:15:10 +00002045 },
2046
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002047 {
2048 .vendor = "Winbond",
2049 .name = "W39V040A",
2050 .manufacture_id = WINBOND_ID,
2051 .model_id = W_39V040A,
2052 .total_size = 512,
2053 .page_size = 64*1024,
2054 .tested = TEST_UNTESTED,
2055 .probe = probe_jedec,
2056 .erase = erase_chip_jedec,
2057 .write = write_39sf020,
FENG yu ningff692fb2008-12-08 18:15:10 +00002058 },
2059
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002060 {
2061 .vendor = "Winbond",
2062 .name = "W39V040B",
2063 .manufacture_id = WINBOND_ID,
2064 .model_id = W_39V040B,
2065 .total_size = 512,
2066 .page_size = 64*1024,
2067 .tested = TEST_OK_PREW,
2068 .probe = probe_jedec,
2069 .erase = erase_chip_jedec,
2070 .write = write_39sf020,
FENG yu ningff692fb2008-12-08 18:15:10 +00002071 },
2072
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002073 {
2074 .vendor = "Winbond",
2075 .name = "W39V040C",
2076 .manufacture_id = WINBOND_ID,
2077 .model_id = 0x50,
2078 .total_size = 512,
2079 .page_size = 64*1024,
2080 .tested = TEST_OK_PREW,
2081 .probe = probe_w39v040c,
2082 .erase = erase_w39v040c,
2083 .write = write_w39v040c,
FENG yu ningff692fb2008-12-08 18:15:10 +00002084 },
2085
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002086 {
2087 .vendor = "Winbond",
2088 .name = "W39V040FA",
2089 .manufacture_id = WINBOND_ID,
2090 .model_id = W_39V040FA,
2091 .total_size = 512,
2092 .page_size = 64*1024,
2093 .tested = TEST_OK_PREW,
2094 .probe = probe_jedec,
2095 .erase = erase_chip_jedec,
2096 .write = write_39sf020,
FENG yu ningff692fb2008-12-08 18:15:10 +00002097 },
2098
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002099 {
2100 .vendor = "Winbond",
2101 .name = "W39V080A",
2102 .manufacture_id = WINBOND_ID,
2103 .model_id = W_39V080A,
2104 .total_size = 1024,
2105 .page_size = 64*1024,
2106 .tested = TEST_OK_PREW,
2107 .probe = probe_jedec,
2108 .erase = erase_chip_jedec,
2109 .write = write_39sf020,
FENG yu ningff692fb2008-12-08 18:15:10 +00002110 },
2111
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002112 {
2113 .vendor = "Winbond",
2114 .name = "W49F002U",
2115 .manufacture_id = WINBOND_ID,
2116 .model_id = W_49F002U,
2117 .total_size = 256,
2118 .page_size = 128,
2119 .tested = TEST_OK_PREW,
2120 .probe = probe_jedec,
2121 .erase = erase_chip_jedec,
2122 .write = write_49f002,
FENG yu ningff692fb2008-12-08 18:15:10 +00002123 },
2124
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002125 {
2126 .vendor = "Winbond",
2127 .name = "W49V002A",
2128 .manufacture_id = WINBOND_ID,
2129 .model_id = W_49V002A,
2130 .total_size = 256,
2131 .page_size = 128,
2132 .tested = TEST_OK_PREW,
2133 .probe = probe_jedec,
2134 .erase = erase_chip_jedec,
2135 .write = write_49f002,
FENG yu ningff692fb2008-12-08 18:15:10 +00002136 },
2137
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002138 {
2139 .vendor = "Winbond",
2140 .name = "W49V002FA",
2141 .manufacture_id = WINBOND_ID,
2142 .model_id = W_49V002FA,
2143 .total_size = 256,
2144 .page_size = 128,
2145 .tested = TEST_UNTESTED,
2146 .probe = probe_jedec,
2147 .erase = erase_chip_jedec,
2148 .write = write_49f002,
FENG yu ningff692fb2008-12-08 18:15:10 +00002149 },
2150
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002151 {
2152 .vendor = "Winbond",
2153 .name = "W39V080FA",
2154 .manufacture_id = WINBOND_ID,
2155 .model_id = W_39V080FA,
2156 .total_size = 1024,
2157 .page_size = 64*1024,
2158 .tested = TEST_OK_PREW,
2159 .probe = probe_winbond_fwhub,
2160 .erase = erase_winbond_fwhub,
2161 .write = write_winbond_fwhub,
FENG yu ningff692fb2008-12-08 18:15:10 +00002162 },
2163
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002164 {
2165 .vendor = "Winbond",
2166 .name = "W39V080FA (dual mode)",
2167 .manufacture_id = WINBOND_ID,
2168 .model_id = W_39V080FA_DM,
2169 .total_size = 512,
2170 .page_size = 64*1024,
2171 .tested = TEST_UNTESTED,
2172 .probe = probe_winbond_fwhub,
2173 .erase = erase_winbond_fwhub,
2174 .write = write_winbond_fwhub,
FENG yu ningff692fb2008-12-08 18:15:10 +00002175 },
2176
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002177 {
2178 .vendor = "Atmel",
2179 .name = "unknown Atmel SPI chip",
2180 .manufacture_id = ATMEL_ID,
2181 .model_id = GENERIC_DEVICE_ID,
2182 .total_size = 0,
2183 .page_size = 256,
Carl-Daniel Hailfinger42882fd2009-04-22 13:33:43 +00002184 .tested = TEST_BAD_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002185 .probe = probe_spi_rdid,
2186 .erase = NULL,
2187 .write = NULL,
FENG yu ningff692fb2008-12-08 18:15:10 +00002188 },
2189
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002190 {
2191 .vendor = "EON",
2192 .name = "unknown EON SPI chip",
2193 .manufacture_id = EON_ID_NOPREFIX,
2194 .model_id = GENERIC_DEVICE_ID,
2195 .total_size = 0,
2196 .page_size = 256,
Carl-Daniel Hailfinger42882fd2009-04-22 13:33:43 +00002197 .tested = TEST_BAD_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002198 .probe = probe_spi_rdid,
2199 .erase = NULL,
2200 .write = NULL,
FENG yu ningff692fb2008-12-08 18:15:10 +00002201 },
2202
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002203 {
2204 .vendor = "Macronix",
2205 .name = "unknown Macronix SPI chip",
2206 .manufacture_id = MX_ID,
2207 .model_id = GENERIC_DEVICE_ID,
2208 .total_size = 0,
2209 .page_size = 256,
Carl-Daniel Hailfinger42882fd2009-04-22 13:33:43 +00002210 .tested = TEST_BAD_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002211 .probe = probe_spi_rdid,
2212 .erase = NULL,
2213 .write = NULL,
FENG yu ningff692fb2008-12-08 18:15:10 +00002214 },
2215
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002216 {
2217 .vendor = "PMC",
2218 .name = "unknown PMC SPI chip",
2219 .manufacture_id = PMC_ID,
2220 .model_id = GENERIC_DEVICE_ID,
2221 .total_size = 0,
2222 .page_size = 256,
Carl-Daniel Hailfinger42882fd2009-04-22 13:33:43 +00002223 .tested = TEST_BAD_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002224 .probe = probe_spi_rdid,
2225 .erase = NULL,
2226 .write = NULL,
FENG yu ningff692fb2008-12-08 18:15:10 +00002227 },
2228
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002229 {
2230 .vendor = "SST",
2231 .name = "unknown SST SPI chip",
2232 .manufacture_id = SST_ID,
2233 .model_id = GENERIC_DEVICE_ID,
2234 .total_size = 0,
2235 .page_size = 256,
Carl-Daniel Hailfinger42882fd2009-04-22 13:33:43 +00002236 .tested = TEST_BAD_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002237 .probe = probe_spi_rdid,
2238 .erase = NULL,
2239 .write = NULL,
FENG yu ningff692fb2008-12-08 18:15:10 +00002240 },
2241
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002242 {
2243 .vendor = "ST",
2244 .name = "unknown ST SPI chip",
2245 .manufacture_id = ST_ID,
2246 .model_id = GENERIC_DEVICE_ID,
2247 .total_size = 0,
2248 .page_size = 256,
Carl-Daniel Hailfinger42882fd2009-04-22 13:33:43 +00002249 .tested = TEST_BAD_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002250 .probe = probe_spi_rdid,
2251 .erase = NULL,
2252 .write = NULL,
FENG yu ningff692fb2008-12-08 18:15:10 +00002253 },
Uwe Hermannfc425e82008-03-16 02:06:25 +00002254
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002255 { NULL }
Stephan Guilloux72cf5652009-04-21 01:46:07 +00002256};