blob: 7e8a430027c44681e111d3ae535155226f79f993 [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"
Carl-Daniel Hailfinger08454642009-06-15 14:14:48 +000025#include "flashchips.h"
Ollie Lho184a4042005-11-26 21:55:36 +000026
Uwe Hermannfc425e82008-03-16 02:06:25 +000027/**
Uwe Hermanna9720402009-05-21 15:55:46 +000028 * List of supported flash chips.
Uwe Hermannfc425e82008-03-16 02:06:25 +000029 *
30 * Please keep the list sorted by vendor name and chip name, so that
31 * the output of 'flashrom -L' is alphabetically sorted.
32 */
Ollie Lho184a4042005-11-26 21:55:36 +000033struct flashchip flashchips[] = {
Uwe Hermannfc425e82008-03-16 02:06:25 +000034
FENG yu ningff692fb2008-12-08 18:15:10 +000035 /* Vendor, Chip, Vendor ID, Chip ID,
Maciej Pijankac6e11112009-06-03 14:46:22 +000036 * Bus Type,
FENG yu ningff692fb2008-12-08 18:15:10 +000037 * Total size (kB), Page size (B),
38 * Test status,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +000039 * Probe function, Probe function timing, Erase function, Write function, Read function
FENG yu ningff692fb2008-12-08 18:15:10 +000040 */
41
Stephan Guilloux5c5b5252009-01-08 03:40:17 +000042 {
43 .vendor = "AMD",
Uwe Hermanna8b37272009-06-19 15:54:39 +000044 .name = "Am29F010A/B",
45 .bustype = CHIP_BUSTYPE_PARALLEL,
46 .manufacture_id = AMD_ID,
47 .model_id = AM_29F010B, /* Same as Am29F010A */
48 .total_size = 128,
49 .page_size = 16 * 1024,
50 .tested = TEST_OK_PREW,
51 .probe = probe_29f040b,
52 .probe_timing = TIMING_FIXME,
53 .erase = erase_29f040b,
54 .write = write_pm29f002,
55 .read = read_memmapped,
56 },
57
58 {
59 .vendor = "AMD",
Stephan Guilloux5c5b5252009-01-08 03:40:17 +000060 .name = "Am29F002(N)BB",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +000061 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +000062 .manufacture_id = AMD_ID,
63 .model_id = AM_29F002BB,
64 .total_size = 256,
65 .page_size = 256,
66 .tested = TEST_UNTESTED,
67 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +000068 .probe_timing = TIMING_FIXME,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +000069 .erase = erase_chip_jedec,
70 .write = write_en29f002a,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +000071 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +000072 },
73
Stephan Guilloux5c5b5252009-01-08 03:40:17 +000074 {
75 .vendor = "AMD",
76 .name = "Am29F002(N)BT",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +000077 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +000078 .manufacture_id = AMD_ID,
79 .model_id = AM_29F002BT,
80 .total_size = 256,
81 .page_size = 256,
82 .tested = TEST_OK_PREW,
83 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +000084 .probe_timing = TIMING_FIXME,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +000085 .erase = erase_chip_jedec,
86 .write = write_en29f002a,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +000087 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +000088 },
89
Stephan Guilloux5c5b5252009-01-08 03:40:17 +000090 {
91 .vendor = "AMD",
92 .name = "Am29F016D",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +000093 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +000094 .manufacture_id = AMD_ID,
95 .model_id = AM_29F016D,
96 .total_size = 2048,
97 .page_size = 64 * 1024,
98 .tested = TEST_UNTESTED,
99 .probe = probe_29f040b,
Maciej Pijankac6e11112009-06-03 14:46:22 +0000100 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (am29f040b.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000101 .erase = erase_29f040b,
102 .write = write_29f040b,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +0000103 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +0000104 },
105
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000106 {
107 .vendor = "AMD",
108 .name = "Am29F040B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000109 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000110 .manufacture_id = AMD_ID,
111 .model_id = AM_29F040B,
112 .total_size = 512,
113 .page_size = 64 * 1024,
114 .tested = TEST_OK_PREW,
115 .probe = probe_29f040b,
Maciej Pijankac6e11112009-06-03 14:46:22 +0000116 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (am29f040b.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000117 .erase = erase_29f040b,
118 .write = write_29f040b,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +0000119 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +0000120 },
121
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000122 {
123 .vendor = "AMD",
Peter Stuge8440cc02009-01-25 23:55:12 +0000124 .name = "Am29F080B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000125 .bustype = CHIP_BUSTYPE_NONSPI,
Mateusz Murawski5bae4382009-06-02 00:38:14 +0000126 .manufacture_id = AMD_ID,
127 .model_id = AM_29F080B,
Peter Stuge8440cc02009-01-25 23:55:12 +0000128 .total_size = 1024,
129 .page_size = 64 * 1024,
130 .tested = TEST_UNTESTED,
131 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +0000132 .probe_timing = TIMING_FIXME,
Peter Stuge8440cc02009-01-25 23:55:12 +0000133 .erase = erase_29f040b,
134 .write = write_29f040b,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +0000135 .read = read_memmapped,
Peter Stuge8440cc02009-01-25 23:55:12 +0000136 },
137
138 {
139 .vendor = "AMD",
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000140 .name = "Am29LV040B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000141 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000142 .manufacture_id = AMD_ID,
143 .model_id = AM_29LV040B,
144 .total_size = 512,
145 .page_size = 64 * 1024,
146 .tested = TEST_UNTESTED,
147 .probe = probe_29f040b,
Maciej Pijankac6e11112009-06-03 14:46:22 +0000148 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (am29f040b.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000149 .erase = erase_29f040b,
150 .write = write_29f040b,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +0000151 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +0000152 },
153
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000154 {
Peter Stuge8440cc02009-01-25 23:55:12 +0000155 .vendor = "AMD",
156 .name = "Am29LV081B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000157 .bustype = CHIP_BUSTYPE_NONSPI,
Mateusz Murawski5bae4382009-06-02 00:38:14 +0000158 .manufacture_id = AMD_ID,
159 .model_id = AM_29LV081B,
Peter Stuge8440cc02009-01-25 23:55:12 +0000160 .total_size = 1024,
161 .page_size = 64 * 1024,
162 .tested = TEST_UNTESTED,
163 .probe = probe_29f040b,
Maciej Pijankac6e11112009-06-03 14:46:22 +0000164 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (am29f040b.c) */
Peter Stuge8440cc02009-01-25 23:55:12 +0000165 .erase = erase_29f040b,
166 .write = write_29f040b,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +0000167 .read = read_memmapped,
Peter Stuge8440cc02009-01-25 23:55:12 +0000168 },
169
170 {
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000171 .vendor = "ASD",
172 .name = "AE49F2008",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000173 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000174 .manufacture_id = ASD_ID,
175 .model_id = ASD_AE49F2008,
176 .total_size = 256,
177 .page_size = 128,
178 .tested = TEST_UNTESTED,
179 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +0000180 .probe_timing = TIMING_FIXME,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000181 .erase = erase_chip_jedec,
182 .write = write_jedec,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +0000183 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +0000184 },
185
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000186 {
187 .vendor = "Atmel",
188 .name = "AT25DF021",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000189 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000190 .manufacture_id = ATMEL_ID,
191 .model_id = AT_25DF021,
192 .total_size = 256,
193 .page_size = 256,
194 .tested = TEST_UNTESTED,
195 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +0000196 .probe_timing = TIMING_ZERO,
Carl-Daniel Hailfingerf8bc28f2009-01-08 16:53:13 +0000197 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +0000198 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000199 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000200 },
201
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000202 {
203 .vendor = "Atmel",
204 .name = "AT25DF041A",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000205 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000206 .manufacture_id = ATMEL_ID,
207 .model_id = AT_25DF041A,
208 .total_size = 512,
209 .page_size = 256,
210 .tested = TEST_UNTESTED,
211 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +0000212 .probe_timing = TIMING_ZERO,
Carl-Daniel Hailfingerf8bc28f2009-01-08 16:53:13 +0000213 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +0000214 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000215 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000216 },
217
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000218 {
219 .vendor = "Atmel",
220 .name = "AT25DF081",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000221 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000222 .manufacture_id = ATMEL_ID,
223 .model_id = AT_25DF081,
224 .total_size = 1024,
225 .page_size = 256,
226 .tested = TEST_UNTESTED,
227 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +0000228 .probe_timing = TIMING_ZERO,
Carl-Daniel Hailfingerf8bc28f2009-01-08 16:53:13 +0000229 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +0000230 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000231 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000232 },
233
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000234 {
235 .vendor = "Atmel",
236 .name = "AT25DF161",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000237 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000238 .manufacture_id = ATMEL_ID,
239 .model_id = AT_25DF161,
240 .total_size = 2048,
241 .page_size = 256,
242 .tested = TEST_UNTESTED,
243 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +0000244 .probe_timing = TIMING_ZERO,
Carl-Daniel Hailfingerf8bc28f2009-01-08 16:53:13 +0000245 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +0000246 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000247 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000248 },
249
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000250 {
251 .vendor = "Atmel",
252 .name = "AT25DF321",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000253 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000254 .manufacture_id = ATMEL_ID,
255 .model_id = AT_25DF321,
256 .total_size = 4096,
257 .page_size = 256,
258 .tested = TEST_OK_PREW,
259 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +0000260 .probe_timing = TIMING_ZERO,
Carl-Daniel Hailfingerf8bc28f2009-01-08 16:53:13 +0000261 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +0000262 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000263 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000264 },
265
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000266 {
267 .vendor = "Atmel",
268 .name = "AT25DF321A",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000269 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000270 .manufacture_id = ATMEL_ID,
271 .model_id = AT_25DF321A,
272 .total_size = 4096,
273 .page_size = 256,
274 .tested = TEST_UNTESTED,
275 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +0000276 .probe_timing = TIMING_ZERO,
Carl-Daniel Hailfingerf8bc28f2009-01-08 16:53:13 +0000277 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +0000278 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000279 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000280 },
281
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000282 {
283 .vendor = "Atmel",
284 .name = "AT25DF641",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000285 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000286 .manufacture_id = ATMEL_ID,
287 .model_id = AT_25DF641,
288 .total_size = 8192,
289 .page_size = 256,
290 .tested = TEST_UNTESTED,
291 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +0000292 .probe_timing = TIMING_ZERO,
Carl-Daniel Hailfingerf8bc28f2009-01-08 16:53:13 +0000293 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +0000294 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000295 .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 = "AT25F512B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000301 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000302 .manufacture_id = ATMEL_ID,
303 .model_id = AT_25F512B,
304 .total_size = 64,
305 .page_size = 256,
306 .tested = TEST_UNTESTED,
307 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +0000308 .probe_timing = TIMING_ZERO,
Carl-Daniel Hailfingerf8bc28f2009-01-08 16:53:13 +0000309 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +0000310 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000311 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000312 },
313
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000314 {
315 .vendor = "Atmel",
316 .name = "AT25FS010",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000317 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000318 .manufacture_id = ATMEL_ID,
319 .model_id = AT_25FS010,
320 .total_size = 128,
321 .page_size = 256,
322 .tested = TEST_UNTESTED,
323 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +0000324 .probe_timing = TIMING_ZERO,
Carl-Daniel Hailfingerf8bc28f2009-01-08 16:53:13 +0000325 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +0000326 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000327 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000328 },
329
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000330 {
331 .vendor = "Atmel",
332 .name = "AT25FS040",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000333 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000334 .manufacture_id = ATMEL_ID,
335 .model_id = AT_25FS040,
336 .total_size = 512,
337 .page_size = 256,
338 .tested = TEST_UNTESTED,
339 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +0000340 .probe_timing = TIMING_ZERO,
Carl-Daniel Hailfingerf8bc28f2009-01-08 16:53:13 +0000341 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +0000342 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000343 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000344 },
345
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000346 {
347 .vendor = "Atmel",
348 .name = "AT26DF041",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000349 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000350 .manufacture_id = ATMEL_ID,
351 .model_id = AT_26DF041,
352 .total_size = 512,
353 .page_size = 256,
354 .tested = TEST_UNTESTED,
355 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +0000356 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000357 .erase = NULL,
358 .write = NULL /* Incompatible Page write */,
359 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000360 },
361
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000362 {
363 .vendor = "Atmel",
364 .name = "AT26DF081A",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000365 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000366 .manufacture_id = ATMEL_ID,
367 .model_id = AT_26DF081A,
368 .total_size = 1024,
369 .page_size = 256,
370 .tested = TEST_UNTESTED,
371 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +0000372 .probe_timing = TIMING_ZERO,
Carl-Daniel Hailfingerf8bc28f2009-01-08 16:53:13 +0000373 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +0000374 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000375 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000376 },
377
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000378 {
379 .vendor = "Atmel",
380 .name = "AT26DF161",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000381 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000382 .manufacture_id = ATMEL_ID,
383 .model_id = AT_26DF161,
384 .total_size = 2048,
385 .page_size = 256,
386 .tested = TEST_UNTESTED,
387 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +0000388 .probe_timing = TIMING_ZERO,
Carl-Daniel Hailfingerf8bc28f2009-01-08 16:53:13 +0000389 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +0000390 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000391 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000392 },
393
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000394 {
395 .vendor = "Atmel",
396 .name = "AT26DF161A",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000397 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000398 .manufacture_id = ATMEL_ID,
399 .model_id = AT_26DF161A,
400 .total_size = 2048,
401 .page_size = 256,
402 .tested = TEST_UNTESTED,
403 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +0000404 .probe_timing = TIMING_ZERO,
Carl-Daniel Hailfingerf8bc28f2009-01-08 16:53:13 +0000405 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +0000406 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000407 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000408 },
409
410 /*The AT26DF321 has the same ID as the AT25DF321. */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000411 /*{
412 .vendor = "Atmel",
413 .name = "AT26DF321",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000414 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000415 .manufacture_id = ATMEL_ID,
416 .model_id = AT_26DF321,
417 .total_size = 4096,
418 .page_size = 256,
419 .tested = TEST_UNTESTED,
420 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +0000421 .probe_timing = TIMING_ZERO,
Carl-Daniel Hailfingerf8bc28f2009-01-08 16:53:13 +0000422 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +0000423 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000424 .read = spi_chip_read,
425 },*/
FENG yu ningff692fb2008-12-08 18:15:10 +0000426
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000427 {
428 .vendor = "Atmel",
429 .name = "AT26F004",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000430 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000431 .manufacture_id = ATMEL_ID,
432 .model_id = AT_26F004,
433 .total_size = 512,
434 .page_size = 256,
435 .tested = TEST_UNTESTED,
436 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +0000437 .probe_timing = TIMING_ZERO,
Carl-Daniel Hailfingerf8bc28f2009-01-08 16:53:13 +0000438 .erase = spi_chip_erase_60_c7,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000439 .write = NULL /* Incompatible Page write */,
440 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000441 },
442
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000443 {
444 .vendor = "Atmel",
Maciej Pijankabc2bbd22009-06-02 16:45:59 +0000445 .name = "AT29C512",
446 .bustype = CHIP_BUSTYPE_NONSPI,
447 .manufacture_id = ATMEL_ID,
448 .model_id = AT_29C512,
449 .total_size = 64,
450 .page_size = 128,
451 .tested = TEST_OK_PREW,
Maciej Pijankac6e11112009-06-03 14:46:22 +0000452 .probe = probe_jedec,
453 .probe_timing = 10000, /* 10mS, Enter=Exec */
Maciej Pijankabc2bbd22009-06-02 16:45:59 +0000454 .erase = erase_chip_jedec,
455 .write = write_jedec,
456 .read = read_memmapped,
457
458 },
459
460 {
461 .vendor = "Atmel",
Uwe Hermann8403ccb2009-05-16 21:39:19 +0000462 .name = "AT29C010A",
Urja Rannikko161b8852009-06-05 08:47:37 +0000463 .bustype = CHIP_BUSTYPE_PARALLEL,
Uwe Hermann8403ccb2009-05-16 21:39:19 +0000464 .manufacture_id = ATMEL_ID,
465 .model_id = AT_29C010A,
466 .total_size = 128,
467 .page_size = 128,
468 .tested = TEST_OK_PRE,
469 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +0000470 .probe_timing = 10000, /* 10mS, Enter=Exec */
Uwe Hermann8403ccb2009-05-16 21:39:19 +0000471 .erase = erase_chip_jedec,
472 .write = write_jedec, /* FIXME */
473 .read = read_memmapped,
474 },
475
476 {
477 .vendor = "Atmel",
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000478 .name = "AT29C020",
Urja Rannikko161b8852009-06-05 08:47:37 +0000479 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000480 .manufacture_id = ATMEL_ID,
481 .model_id = AT_29C020,
482 .total_size = 256,
483 .page_size = 256,
484 .tested = TEST_OK_PREW,
485 .probe = probe_jedec,
Mateusz Murawski8b2f46b2009-06-12 21:29:36 +0000486 .probe_timing = 10000, /* 10ms */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000487 .erase = erase_chip_jedec,
488 .write = write_jedec,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +0000489 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +0000490 },
491
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000492 {
493 .vendor = "Atmel",
494 .name = "AT29C040A",
Urja Rannikko161b8852009-06-05 08:47:37 +0000495 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000496 .manufacture_id = ATMEL_ID,
497 .model_id = AT_29C040A,
498 .total_size = 512,
499 .page_size = 256,
500 .tested = TEST_UNTESTED,
501 .probe = probe_jedec,
Mateusz Murawski8b2f46b2009-06-12 21:29:36 +0000502 .probe_timing = 10000, /* 10 ms */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000503 .erase = erase_chip_jedec,
504 .write = write_jedec,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +0000505 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +0000506 },
507
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000508 {
509 .vendor = "Atmel",
510 .name = "AT45CS1282",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000511 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000512 .manufacture_id = ATMEL_ID,
513 .model_id = AT_45CS1282,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000514 .total_size = 16896 /* No power of two sizes */,
515 .page_size = 1056 /* No power of two sizes */,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000516 .tested = TEST_BAD_READ,
517 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +0000518 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000519 .erase = NULL,
520 .write = NULL /* Incompatible Page write */,
521 .read = NULL /* Incompatible read */,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000522 },
FENG yu ningff692fb2008-12-08 18:15:10 +0000523
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000524 {
525 .vendor = "Atmel",
526 .name = "AT45DB011D",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000527 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000528 .manufacture_id = ATMEL_ID,
529 .model_id = AT_45DB011D,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000530 .total_size = 128 /* Size can only be determined from status register */,
531 .page_size = 256 /* Size can only be determined from status register */,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000532 .tested = TEST_BAD_READ,
533 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +0000534 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000535 .erase = NULL,
536 .write = NULL,
537 .read = NULL,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000538 },
FENG yu ningff692fb2008-12-08 18:15:10 +0000539
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000540 {
541 .vendor = "Atmel",
542 .name = "AT45DB021D",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000543 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000544 .manufacture_id = ATMEL_ID,
545 .model_id = AT_45DB021D,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000546 .total_size = 256 /* Size can only be determined from status register */,
547 .page_size = 256 /* Size can only be determined from status register */,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000548 .tested = TEST_BAD_READ,
549 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +0000550 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000551 .erase = NULL,
552 .write = NULL,
553 .read = NULL,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000554 },
FENG yu ningff692fb2008-12-08 18:15:10 +0000555
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000556 {
557 .vendor = "Atmel",
558 .name = "AT45DB041D",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000559 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000560 .manufacture_id = ATMEL_ID,
561 .model_id = AT_45DB041D,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000562 .total_size = 512 /* Size can only be determined from status register */,
563 .page_size = 256 /* Size can only be determined from status register */,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000564 .tested = TEST_BAD_READ,
565 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +0000566 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000567 .erase = NULL,
568 .write = NULL,
569 .read = NULL,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000570 },
FENG yu ningff692fb2008-12-08 18:15:10 +0000571
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000572 {
573 .vendor = "Atmel",
574 .name = "AT45DB081D",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000575 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000576 .manufacture_id = ATMEL_ID,
577 .model_id = AT_45DB081D,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000578 .total_size = 1024 /* Size can only be determined from status register */,
579 .page_size = 256 /* Size can only be determined from status register */,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000580 .tested = TEST_BAD_READ,
581 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +0000582 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000583 .erase = NULL,
584 .write = NULL,
585 .read = NULL,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000586 },
FENG yu ningff692fb2008-12-08 18:15:10 +0000587
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000588 {
589 .vendor = "Atmel",
590 .name = "AT45DB161D",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000591 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000592 .manufacture_id = ATMEL_ID,
593 .model_id = AT_45DB161D,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000594 .total_size = 2048 /* Size can only be determined from status register */,
595 .page_size = 512 /* Size can only be determined from status register */,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000596 .tested = TEST_BAD_READ,
597 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +0000598 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000599 .erase = NULL,
600 .write = NULL,
601 .read = NULL,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000602 },
FENG yu ningff692fb2008-12-08 18:15:10 +0000603
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000604 {
605 .vendor = "Atmel",
606 .name = "AT45DB321C",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000607 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000608 .manufacture_id = ATMEL_ID,
609 .model_id = AT_45DB321C,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000610 .total_size = 4224 /* No power of two sizes */,
611 .page_size = 528 /* No power of two sizes */,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000612 .tested = TEST_BAD_READ,
613 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +0000614 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000615 .erase = NULL,
616 .write = NULL,
617 .read = NULL /* Incompatible read */,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000618 },
FENG yu ningff692fb2008-12-08 18:15:10 +0000619
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000620 {
621 .vendor = "Atmel",
622 .name = "AT45DB321D",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000623 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000624 .manufacture_id = ATMEL_ID,
625 .model_id = AT_45DB321D,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000626 .total_size = 4096 /* Size can only be determined from status register */,
627 .page_size = 512 /* Size can only be determined from status register */,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000628 .tested = TEST_BAD_READ,
629 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +0000630 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000631 .erase = NULL,
632 .write = NULL,
633 .read = NULL,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000634 },
FENG yu ningff692fb2008-12-08 18:15:10 +0000635
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000636 {
637 .vendor = "Atmel",
638 .name = "AT45DB642D",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000639 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000640 .manufacture_id = ATMEL_ID,
641 .model_id = AT_45DB642D,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000642 .total_size = 8192 /* Size can only be determined from status register */,
643 .page_size = 1024 /* Size can only be determined from status register */,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000644 .tested = TEST_BAD_READ,
645 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +0000646 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000647 .erase = NULL,
648 .write = NULL,
649 .read = NULL,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000650 },
FENG yu ningff692fb2008-12-08 18:15:10 +0000651
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000652 {
653 .vendor = "Atmel",
Uwe Hermannb4dcb712009-05-13 11:36:06 +0000654 .name = "AT49BV512",
Urja Rannikko161b8852009-06-05 08:47:37 +0000655 .bustype = CHIP_BUSTYPE_PARALLEL,
Uwe Hermannb4dcb712009-05-13 11:36:06 +0000656 .manufacture_id = ATMEL_ID,
657 .model_id = AT_49BV512,
658 .total_size = 64,
659 .page_size = 64,
660 .tested = TEST_OK_PREW,
661 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +0000662 .probe_timing = TIMING_FIXME,
Uwe Hermannb4dcb712009-05-13 11:36:06 +0000663 .erase = erase_chip_jedec,
664 .write = write_49f002,
665 .read = read_memmapped,
666 },
667
668 {
669 .vendor = "Atmel",
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000670 .name = "AT49F002(N)",
Urja Rannikko161b8852009-06-05 08:47:37 +0000671 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000672 .manufacture_id = ATMEL_ID,
673 .model_id = AT_49F002N,
674 .total_size = 256,
675 .page_size = 256,
676 .tested = TEST_UNTESTED,
677 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +0000678 .probe_timing = TIMING_FIXME, /* doc1008.pdf dont says anything about probe timing */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000679 .erase = erase_chip_jedec,
680 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +0000681 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +0000682 },
683
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000684 {
685 .vendor = "Atmel",
686 .name = "AT49F002(N)T",
Urja Rannikko161b8852009-06-05 08:47:37 +0000687 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000688 .manufacture_id = ATMEL_ID,
689 .model_id = AT_49F002NT,
690 .total_size = 256,
691 .page_size = 256,
692 .tested = TEST_OK_PREW,
693 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +0000694 .probe_timing = TIMING_FIXME, /* doc1008.pdf dont says anything about probe timing */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000695 .erase = erase_chip_jedec,
696 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +0000697 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +0000698 },
699
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000700 {
701 .vendor = "AMIC",
702 .name = "A25L40P",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000703 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000704 .manufacture_id = AMIC_ID,
705 .model_id = AMIC_A25L40P,
706 .total_size = 512,
707 .page_size = 256,
708 .tested = TEST_OK_PREW,
709 .probe = probe_spi_rdid4,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +0000710 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000711 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +0000712 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000713 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000714 },
715
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000716 {
717 .vendor = "AMIC",
718 .name = "A29002B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000719 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000720 .manufacture_id = AMIC_ID_NOPREFIX,
721 .model_id = AMIC_A29002B,
722 .total_size = 256,
723 .page_size = 64 * 1024,
724 .tested = TEST_UNTESTED,
725 .probe = probe_29f002,
Maciej Pijankac6e11112009-06-03 14:46:22 +0000726 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (mx29f002.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000727 .erase = erase_29f002,
728 .write = write_29f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +0000729 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +0000730 },
731
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000732 {
733 .vendor = "AMIC",
734 .name = "A29002T",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000735 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000736 .manufacture_id = AMIC_ID_NOPREFIX,
737 .model_id = AMIC_A29002T,
738 .total_size = 256,
739 .page_size = 64 * 1024,
740 .tested = TEST_OK_PREW,
741 .probe = probe_29f002,
Maciej Pijankac6e11112009-06-03 14:46:22 +0000742 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (mx29f002.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000743 .erase = erase_29f002,
744 .write = write_29f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +0000745 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +0000746 },
747
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000748 {
749 .vendor = "AMIC",
750 .name = "A29040B",
Urja Rannikko161b8852009-06-05 08:47:37 +0000751 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000752 .manufacture_id = AMIC_ID_NOPREFIX,
753 .model_id = AMIC_A29040B,
754 .total_size = 512,
755 .page_size = 64 * 1024,
756 .tested = TEST_OK_PR,
757 .probe = probe_29f040b,
Maciej Pijankac6e11112009-06-03 14:46:22 +0000758 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (am29f040b.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000759 .erase = erase_29f040b,
760 .write = write_29f040b,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +0000761 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +0000762 },
763
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000764 {
765 .vendor = "AMIC",
766 .name = "A49LF040A",
Urja Rannikko161b8852009-06-05 08:47:37 +0000767 .bustype = CHIP_BUSTYPE_LPC,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000768 .manufacture_id = AMIC_ID_NOPREFIX,
769 .model_id = AMIC_A49LF040A,
770 .total_size = 512,
771 .page_size = 64 * 1024,
772 .tested = TEST_OK_PREW,
773 .probe = probe_49fl00x,
Maciej Pijankac6e11112009-06-03 14:46:22 +0000774 .probe_timing = TIMING_FIXME, /* routine is wrapper to probe_jedec (pm49fl00x.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000775 .erase = erase_49fl00x,
776 .write = write_49fl00x,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +0000777 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +0000778 },
779
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000780 {
781 .vendor = "EMST",
782 .name = "F49B002UA",
Urja Rannikko161b8852009-06-05 08:47:37 +0000783 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000784 .manufacture_id = EMST_ID,
785 .model_id = EMST_F49B002UA,
786 .total_size = 256,
787 .page_size = 4096,
788 .tested = TEST_UNTESTED,
789 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +0000790 .probe_timing = TIMING_FIXME,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000791 .erase = erase_chip_jedec,
792 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +0000793 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +0000794 },
795
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000796 {
Carl-Daniel Hailfinger80243c92009-06-05 20:53:07 +0000797 .vendor = "Eon",
798 .name = "EN25B05",
799 .bustype = CHIP_BUSTYPE_SPI,
Carl-Daniel Hailfingera0a6ae92009-06-15 12:10:57 +0000800 .manufacture_id = EON_ID_NOPREFIX,
Carl-Daniel Hailfinger80243c92009-06-05 20:53:07 +0000801 .model_id = EN_25B05,
802 .total_size = 64,
803 .page_size = 256,
804 .tested = TEST_UNTESTED,
805 .probe = probe_spi_rdid,
806 .probe_timing = TIMING_ZERO,
807 .erase = spi_chip_erase_c7,
808 .write = spi_chip_write_256,
809 .read = spi_chip_read,
810 },
811
812 {
813 .vendor = "Eon",
814 .name = "EN25B10",
815 .bustype = CHIP_BUSTYPE_SPI,
Carl-Daniel Hailfingera0a6ae92009-06-15 12:10:57 +0000816 .manufacture_id = EON_ID_NOPREFIX,
Carl-Daniel Hailfinger80243c92009-06-05 20:53:07 +0000817 .model_id = EN_25B10,
818 .total_size = 128,
819 .page_size = 256,
820 .tested = TEST_UNTESTED,
821 .probe = probe_spi_rdid,
822 .probe_timing = TIMING_ZERO,
823 .erase = spi_chip_erase_c7,
824 .write = spi_chip_write_256,
825 .read = spi_chip_read,
826 },
827
828 {
829 .vendor = "Eon",
830 .name = "EN25B20",
831 .bustype = CHIP_BUSTYPE_SPI,
Carl-Daniel Hailfingera0a6ae92009-06-15 12:10:57 +0000832 .manufacture_id = EON_ID_NOPREFIX,
Carl-Daniel Hailfinger80243c92009-06-05 20:53:07 +0000833 .model_id = EN_25B20,
834 .total_size = 256,
835 .page_size = 256,
836 .tested = TEST_UNTESTED,
837 .probe = probe_spi_rdid,
838 .probe_timing = TIMING_ZERO,
839 .erase = spi_chip_erase_c7,
840 .write = spi_chip_write_256,
841 .read = spi_chip_read,
842 },
843
844 {
845 .vendor = "Eon",
846 .name = "EN25B40",
847 .bustype = CHIP_BUSTYPE_SPI,
Carl-Daniel Hailfingera0a6ae92009-06-15 12:10:57 +0000848 .manufacture_id = EON_ID_NOPREFIX,
Carl-Daniel Hailfinger80243c92009-06-05 20:53:07 +0000849 .model_id = EN_25B40,
850 .total_size = 512,
851 .page_size = 256,
852 .tested = TEST_UNTESTED,
853 .probe = probe_spi_rdid,
854 .probe_timing = TIMING_ZERO,
855 .erase = spi_chip_erase_c7,
856 .write = spi_chip_write_256,
857 .read = spi_chip_read,
858 },
859
860 {
861 .vendor = "Eon",
862 .name = "EN25B80",
863 .bustype = CHIP_BUSTYPE_SPI,
Carl-Daniel Hailfingera0a6ae92009-06-15 12:10:57 +0000864 .manufacture_id = EON_ID_NOPREFIX,
Carl-Daniel Hailfinger80243c92009-06-05 20:53:07 +0000865 .model_id = EN_25B80,
866 .total_size = 1024,
867 .page_size = 256,
868 .tested = TEST_UNTESTED,
869 .probe = probe_spi_rdid,
870 .probe_timing = TIMING_ZERO,
871 .erase = spi_chip_erase_c7,
872 .write = spi_chip_write_256,
873 .read = spi_chip_read,
874 },
875
876 {
877 .vendor = "Eon",
878 .name = "EN25B16",
879 .bustype = CHIP_BUSTYPE_SPI,
Carl-Daniel Hailfingera0a6ae92009-06-15 12:10:57 +0000880 .manufacture_id = EON_ID_NOPREFIX,
Carl-Daniel Hailfinger80243c92009-06-05 20:53:07 +0000881 .model_id = EN_25B16,
882 .total_size = 2048,
883 .page_size = 256,
884 .tested = TEST_UNTESTED,
885 .probe = probe_spi_rdid,
886 .probe_timing = TIMING_ZERO,
887 .erase = spi_chip_erase_c7,
888 .write = spi_chip_write_256,
889 .read = spi_chip_read,
890 },
891
892 {
893 .vendor = "Eon",
894 .name = "EN25B32",
895 .bustype = CHIP_BUSTYPE_SPI,
Carl-Daniel Hailfingera0a6ae92009-06-15 12:10:57 +0000896 .manufacture_id = EON_ID_NOPREFIX,
Carl-Daniel Hailfinger80243c92009-06-05 20:53:07 +0000897 .model_id = EN_25B32,
898 .total_size = 4096,
899 .page_size = 256,
900 .tested = TEST_UNTESTED,
901 .probe = probe_spi_rdid,
902 .probe_timing = TIMING_ZERO,
903 .erase = spi_chip_erase_c7,
904 .write = spi_chip_write_256,
905 .read = spi_chip_read,
906 },
907
908 {
909 .vendor = "Eon",
910 .name = "EN25B64",
911 .bustype = CHIP_BUSTYPE_SPI,
Carl-Daniel Hailfingera0a6ae92009-06-15 12:10:57 +0000912 .manufacture_id = EON_ID_NOPREFIX,
Carl-Daniel Hailfinger80243c92009-06-05 20:53:07 +0000913 .model_id = EN_25B64,
914 .total_size = 8192,
915 .page_size = 256,
916 .tested = TEST_UNTESTED,
917 .probe = probe_spi_rdid,
918 .probe_timing = TIMING_ZERO,
919 .erase = spi_chip_erase_c7,
920 .write = spi_chip_write_256,
921 .read = spi_chip_read,
922 },
923
924 {
925 .vendor = "Eon",
Carl-Daniel Hailfingera0a6ae92009-06-15 12:10:57 +0000926 .name = "EN25D16",
927 .bustype = CHIP_BUSTYPE_SPI,
928 .manufacture_id = EON_ID_NOPREFIX,
929 .model_id = EN_25D16,
930 .total_size = 2048,
931 .page_size = 256,
932 .tested = TEST_UNTESTED,
933 .probe = probe_spi_rdid,
934 .probe_timing = TIMING_ZERO,
935 .erase = spi_chip_erase_60_c7,
936 .write = spi_chip_write_256,
937 .read = spi_chip_read,
938 },
939
940 {
941 .vendor = "Eon",
942 .name = "EN25F05",
943 .bustype = CHIP_BUSTYPE_SPI,
944 .manufacture_id = EON_ID_NOPREFIX,
945 .model_id = EN_25F05,
946 .total_size = 64,
947 .page_size = 256,
948 .tested = TEST_UNTESTED,
949 .probe = probe_spi_rdid,
950 .probe_timing = TIMING_ZERO,
951 .erase = spi_chip_erase_60_c7,
952 .write = spi_chip_write_256,
953 .read = spi_chip_read,
954 },
955
956 {
957 .vendor = "Eon",
958 .name = "EN25F10",
959 .bustype = CHIP_BUSTYPE_SPI,
960 .manufacture_id = EON_ID_NOPREFIX,
961 .model_id = EN_25F10,
962 .total_size = 128,
963 .page_size = 256,
964 .tested = TEST_UNTESTED,
965 .probe = probe_spi_rdid,
966 .probe_timing = TIMING_ZERO,
967 .erase = spi_chip_erase_60_c7,
968 .write = spi_chip_write_256,
969 .read = spi_chip_read,
970 },
971
972 {
973 .vendor = "Eon",
974 .name = "EN25F20",
975 .bustype = CHIP_BUSTYPE_SPI,
976 .manufacture_id = EON_ID_NOPREFIX,
977 .model_id = EN_25F20,
978 .total_size = 256,
979 .page_size = 256,
980 .tested = TEST_UNTESTED,
981 .probe = probe_spi_rdid,
982 .probe_timing = TIMING_ZERO,
983 .erase = spi_chip_erase_60_c7,
984 .write = spi_chip_write_256,
985 .read = spi_chip_read,
986 },
987
988 {
989 .vendor = "Eon",
Carl-Daniel Hailfinger80243c92009-06-05 20:53:07 +0000990 .name = "EN25F40",
991 .bustype = CHIP_BUSTYPE_SPI,
Carl-Daniel Hailfingera0a6ae92009-06-15 12:10:57 +0000992 .manufacture_id = EON_ID_NOPREFIX,
Carl-Daniel Hailfinger80243c92009-06-05 20:53:07 +0000993 .model_id = EN_25F40,
994 .total_size = 512,
995 .page_size = 256,
Carl-Daniel Hailfingerfaaa2b22009-06-22 10:06:28 +0000996 .tested = TEST_OK_PROBE,
Carl-Daniel Hailfinger80243c92009-06-05 20:53:07 +0000997 .probe = probe_spi_rdid,
998 .probe_timing = TIMING_ZERO,
999 .erase = spi_chip_erase_60_c7,
1000 .write = spi_chip_write_256,
1001 .read = spi_chip_read,
1002 },
1003
1004 {
1005 .vendor = "Eon",
1006 .name = "EN25F80",
1007 .bustype = CHIP_BUSTYPE_SPI,
Carl-Daniel Hailfingera0a6ae92009-06-15 12:10:57 +00001008 .manufacture_id = EON_ID_NOPREFIX,
Carl-Daniel Hailfinger80243c92009-06-05 20:53:07 +00001009 .model_id = EN_25F80,
1010 .total_size = 1024,
1011 .page_size = 256,
1012 .tested = TEST_UNTESTED,
1013 .probe = probe_spi_rdid,
1014 .probe_timing = TIMING_ZERO,
1015 .erase = spi_chip_erase_60_c7,
1016 .write = spi_chip_write_256,
1017 .read = spi_chip_read,
1018 },
1019
1020 {
1021 .vendor = "Eon",
1022 .name = "EN25F16",
1023 .bustype = CHIP_BUSTYPE_SPI,
Carl-Daniel Hailfingera0a6ae92009-06-15 12:10:57 +00001024 .manufacture_id = EON_ID_NOPREFIX,
Carl-Daniel Hailfinger80243c92009-06-05 20:53:07 +00001025 .model_id = EN_25F16,
1026 .total_size = 2048,
1027 .page_size = 256,
1028 .tested = TEST_UNTESTED,
1029 .probe = probe_spi_rdid,
1030 .probe_timing = TIMING_ZERO,
1031 .erase = spi_chip_erase_60_c7,
1032 .write = spi_chip_write_256,
1033 .read = spi_chip_read,
1034 },
1035
1036 {
Carl-Daniel Hailfingera0a6ae92009-06-15 12:10:57 +00001037 .vendor = "Eon",
1038 .name = "EN25F32",
1039 .bustype = CHIP_BUSTYPE_SPI,
1040 .manufacture_id = EON_ID_NOPREFIX,
1041 .model_id = EN_25F32,
1042 .total_size = 4096,
1043 .page_size = 256,
1044 .tested = TEST_UNTESTED,
1045 .probe = probe_spi_rdid,
1046 .probe_timing = TIMING_ZERO,
1047 .erase = spi_chip_erase_60_c7,
1048 .write = spi_chip_write_256,
1049 .read = spi_chip_read,
1050 },
1051
1052 {
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001053 .vendor = "EON",
1054 .name = "EN29F002(A)(N)B",
Urja Rannikko161b8852009-06-05 08:47:37 +00001055 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001056 .manufacture_id = EON_ID,
1057 .model_id = EN_29F002B,
1058 .total_size = 256,
1059 .page_size = 256,
1060 .tested = TEST_UNTESTED,
1061 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +00001062 .probe_timing = TIMING_FIXME,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001063 .erase = erase_chip_jedec,
1064 .write = write_en29f002a,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001065 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001066 },
1067
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001068 {
1069 .vendor = "EON",
1070 .name = "EN29F002(A)(N)T",
Urja Rannikko161b8852009-06-05 08:47:37 +00001071 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001072 .manufacture_id = EON_ID,
1073 .model_id = EN_29F002T,
1074 .total_size = 256,
1075 .page_size = 256,
1076 .tested = TEST_OK_PREW,
1077 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +00001078 .probe_timing = TIMING_FIXME,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001079 .erase = erase_chip_jedec,
1080 .write = write_en29f002a,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001081 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001082 },
1083
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001084 {
1085 .vendor = "Fujitsu",
1086 .name = "MBM29F004BC",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001087 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001088 .manufacture_id = FUJITSU_ID,
1089 .model_id = MBM29F004BC,
1090 .total_size = 512,
1091 .page_size = 64 * 1024,
1092 .tested = TEST_UNTESTED,
1093 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +00001094 .probe_timing = TIMING_FIXME,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001095 .erase = NULL,
1096 .write = NULL,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001097 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001098 },
1099
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001100 {
1101 .vendor = "Fujitsu",
1102 .name = "MBM29F004TC",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001103 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001104 .manufacture_id = FUJITSU_ID,
1105 .model_id = MBM29F004TC,
1106 .total_size = 512,
1107 .page_size = 64 * 1024,
1108 .tested = TEST_UNTESTED,
1109 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +00001110 .probe_timing = TIMING_FIXME,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001111 .erase = NULL,
1112 .write = NULL,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001113 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001114 },
1115
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001116 {
1117 .vendor = "Fujitsu",
1118 .name = "MBM29F400BC",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001119 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001120 .manufacture_id = FUJITSU_ID,
1121 .model_id = MBM29F400BC,
1122 .total_size = 512,
1123 .page_size = 64 * 1024,
1124 .tested = TEST_UNTESTED,
1125 .probe = probe_m29f400bt,
Maciej Pijankac6e11112009-06-03 14:46:22 +00001126 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (m29f400bt.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001127 .erase = erase_m29f400bt,
1128 .write = write_coreboot_m29f400bt,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001129 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001130 },
1131
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001132 {
1133 .vendor = "Fujitsu",
1134 .name = "MBM29F400TC",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001135 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001136 .manufacture_id = FUJITSU_ID,
1137 .model_id = MBM29F400TC,
1138 .total_size = 512,
1139 .page_size = 64 * 1024,
1140 .tested = TEST_UNTESTED,
1141 .probe = probe_m29f400bt,
Maciej Pijankac6e11112009-06-03 14:46:22 +00001142 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (m29f400bt.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001143 .erase = erase_m29f400bt,
1144 .write = write_coreboot_m29f400bt,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001145 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001146 },
1147
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001148 {
1149 .vendor = "Intel",
Urja Rannikkoebd7b832009-05-29 12:55:31 +00001150 .name = "28F001BX-B",
Urja Rannikko161b8852009-06-05 08:47:37 +00001151 .bustype = CHIP_BUSTYPE_PARALLEL,
Urja Rannikkoebd7b832009-05-29 12:55:31 +00001152 .manufacture_id = INTEL_ID,
1153 .model_id = P28F001BXB,
1154 .total_size = 128,
1155 .page_size = 128 * 1024, /* 8k + 2x4k + 112k */
1156 .tested = TEST_BAD_ERASE|TEST_BAD_WRITE,
1157 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +00001158 .probe_timing = TIMING_FIXME,
Urja Rannikkoebd7b832009-05-29 12:55:31 +00001159 .erase = NULL,
1160 .write = NULL,
1161 .read = read_memmapped,
1162 },
1163
1164 {
1165 .vendor = "Intel",
1166 .name = "28F001BX-T",
Urja Rannikko161b8852009-06-05 08:47:37 +00001167 .bustype = CHIP_BUSTYPE_PARALLEL,
Urja Rannikkoebd7b832009-05-29 12:55:31 +00001168 .manufacture_id = INTEL_ID,
1169 .model_id = P28F001BXT,
1170 .total_size = 128,
1171 .page_size = 128 * 1024, /* 112k + 2x4k + 8k */
1172 .tested = TEST_OK_PR|TEST_BAD_ERASE|TEST_BAD_WRITE,
1173 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +00001174 .probe_timing = TIMING_FIXME,
Urja Rannikkoebd7b832009-05-29 12:55:31 +00001175 .erase = NULL,
1176 .write = NULL,
1177 .read = read_memmapped,
1178 },
1179
1180 {
1181 .vendor = "Intel",
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001182 .name = "82802AB",
Mateusz Murawskie33890d2009-06-12 11:45:10 +00001183 .bustype = CHIP_BUSTYPE_FWH,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001184 .manufacture_id = INTEL_ID,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00001185 .model_id = I_82802AB,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001186 .total_size = 512,
1187 .page_size = 64 * 1024,
1188 .tested = TEST_OK_PREW,
1189 .probe = probe_82802ab,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001190 .probe_timing = TIMING_IGNORED, /* routine does not use probe_timing (82802ab.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001191 .erase = erase_82802ab,
1192 .write = write_82802ab,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001193 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001194 },
1195
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001196 {
1197 .vendor = "Intel",
1198 .name = "82802AC",
Mateusz Murawskie33890d2009-06-12 11:45:10 +00001199 .bustype = CHIP_BUSTYPE_FWH,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001200 .manufacture_id = INTEL_ID,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00001201 .model_id = I_82802AC,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001202 .total_size = 1024,
1203 .page_size = 64 * 1024,
1204 .tested = TEST_OK_PREW,
1205 .probe = probe_82802ab,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001206 .probe_timing = TIMING_IGNORED, /* routine does not use probe_timing (82802ab.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001207 .erase = erase_82802ab,
1208 .write = write_82802ab,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001209 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001210 },
1211
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001212 {
1213 .vendor = "Macronix",
1214 .name = "MX25L512",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001215 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001216 .manufacture_id = MX_ID,
1217 .model_id = MX_25L512,
1218 .total_size = 64,
1219 .page_size = 256,
1220 .tested = TEST_UNTESTED,
1221 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001222 .probe_timing = TIMING_ZERO,
Stephan Guillouxfd315502009-04-20 22:54:13 +00001223 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001224 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001225 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001226 },
1227
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001228 {
1229 .vendor = "Macronix",
1230 .name = "MX25L1005",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001231 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001232 .manufacture_id = MX_ID,
1233 .model_id = MX_25L1005,
1234 .total_size = 128,
1235 .page_size = 256,
1236 .tested = TEST_UNTESTED,
1237 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001238 .probe_timing = TIMING_ZERO,
Stephan Guillouxfd315502009-04-20 22:54:13 +00001239 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001240 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001241 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001242 },
1243
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001244 {
1245 .vendor = "Macronix",
1246 .name = "MX25L2005",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001247 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001248 .manufacture_id = MX_ID,
1249 .model_id = MX_25L2005,
1250 .total_size = 256,
1251 .page_size = 256,
1252 .tested = TEST_UNTESTED,
1253 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001254 .probe_timing = TIMING_ZERO,
Stephan Guillouxfd315502009-04-20 22:54:13 +00001255 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001256 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001257 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001258 },
1259
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001260 {
1261 .vendor = "Macronix",
1262 .name = "MX25L4005",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001263 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001264 .manufacture_id = MX_ID,
1265 .model_id = MX_25L4005,
1266 .total_size = 512,
1267 .page_size = 256,
1268 .tested = TEST_OK_PREW,
1269 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001270 .probe_timing = TIMING_ZERO,
Stephan Guillouxfd315502009-04-20 22:54:13 +00001271 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001272 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001273 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001274 },
1275
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001276 {
1277 .vendor = "Macronix",
1278 .name = "MX25L8005",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001279 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001280 .manufacture_id = MX_ID,
1281 .model_id = MX_25L8005,
1282 .total_size = 1024,
1283 .page_size = 256,
1284 .tested = TEST_OK_PREW,
1285 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001286 .probe_timing = TIMING_ZERO,
Stephan Guillouxfd315502009-04-20 22:54:13 +00001287 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001288 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001289 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001290 },
1291
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001292 {
1293 .vendor = "Macronix",
1294 .name = "MX25L1605",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001295 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001296 .manufacture_id = MX_ID,
1297 .model_id = MX_25L1605,
1298 .total_size = 2048,
1299 .page_size = 256,
Peter Stugeddb94f72009-04-29 23:22:33 +00001300 .tested = TEST_OK_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001301 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001302 .probe_timing = TIMING_ZERO,
Stephan Guillouxe39631c2009-04-19 23:24:26 +00001303 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001304 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001305 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001306 },
1307
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001308 {
1309 .vendor = "Macronix",
Stephan Guillouxf5c70902009-04-19 23:04:00 +00001310 .name = "MX25L1635D",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001311 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guillouxf5c70902009-04-19 23:04:00 +00001312 .manufacture_id = MX_ID,
1313 .model_id = MX_25L1635D,
1314 .total_size = 2048,
1315 .page_size = 256,
1316 .tested = TEST_UNTESTED,
1317 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001318 .probe_timing = TIMING_ZERO,
Stephan Guillouxe39631c2009-04-19 23:24:26 +00001319 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001320 .write = spi_chip_write_256,
Stephan Guillouxf5c70902009-04-19 23:04:00 +00001321 .read = spi_chip_read,
1322 },
Stephan Guillouxfd315502009-04-20 22:54:13 +00001323
Stephan Guillouxf5c70902009-04-19 23:04:00 +00001324 {
1325 .vendor = "Macronix",
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001326 .name = "MX25L3205",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001327 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001328 .manufacture_id = MX_ID,
1329 .model_id = MX_25L3205,
1330 .total_size = 4096,
1331 .page_size = 256,
1332 .tested = TEST_OK_PREW,
1333 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001334 .probe_timing = TIMING_ZERO,
Stephan Guillouxfd315502009-04-20 22:54:13 +00001335 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001336 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001337 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001338 },
1339
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001340 {
1341 .vendor = "Macronix",
Stephan Guilloux70ea9a32009-04-23 22:51:56 +00001342 .name = "MX25L3235D",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001343 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux70ea9a32009-04-23 22:51:56 +00001344 .manufacture_id = MX_ID,
1345 .model_id = MX_25L3235D,
1346 .total_size = 4096,
1347 .page_size = 256,
1348 .tested = TEST_UNTESTED,
1349 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001350 .probe_timing = TIMING_ZERO,
Stephan Guilloux70ea9a32009-04-23 22:51:56 +00001351 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001352 .write = spi_chip_write_256,
Stephan Guilloux70ea9a32009-04-23 22:51:56 +00001353 .read = spi_chip_read,
1354 },
1355
1356 {
1357 .vendor = "Macronix",
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001358 .name = "MX25L6405",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001359 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001360 .manufacture_id = MX_ID,
1361 .model_id = MX_25L6405,
1362 .total_size = 8192,
1363 .page_size = 256,
Carl-Daniel Hailfinger452b3e32009-06-22 11:14:43 +00001364 .tested = TEST_OK_PROBE,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001365 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001366 .probe_timing = TIMING_ZERO,
Stephan Guillouxfd315502009-04-20 22:54:13 +00001367 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001368 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001369 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001370 },
1371
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001372 {
1373 .vendor = "Macronix",
Stephan Guilloux2f132fe2009-04-21 01:47:16 +00001374 .name = "MX25L12805",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001375 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux2f132fe2009-04-21 01:47:16 +00001376 .manufacture_id = MX_ID,
1377 .model_id = MX_25L12805,
1378 .total_size = 16384,
1379 .page_size = 256,
1380 .tested = TEST_UNTESTED,
1381 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001382 .probe_timing = TIMING_ZERO,
Stephan Guilloux2f132fe2009-04-21 01:47:16 +00001383 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001384 .write = spi_chip_write_256,
Stephan Guilloux2f132fe2009-04-21 01:47:16 +00001385 .read = spi_chip_read,
1386 },
1387
1388 {
1389 .vendor = "Macronix",
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001390 .name = "MX29F002B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001391 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001392 .manufacture_id = MX_ID,
1393 .model_id = MX_29F002B,
1394 .total_size = 256,
1395 .page_size = 64 * 1024,
1396 .tested = TEST_UNTESTED,
1397 .probe = probe_29f002,
Maciej Pijankac6e11112009-06-03 14:46:22 +00001398 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (mx29f002.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001399 .erase = erase_29f002,
1400 .write = write_29f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001401 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001402 },
1403
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001404 {
1405 .vendor = "Macronix",
1406 .name = "MX29F002T",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001407 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001408 .manufacture_id = MX_ID,
1409 .model_id = MX_29F002T,
1410 .total_size = 256,
1411 .page_size = 64 * 1024,
Uwe Hermann66c580c2009-05-21 00:29:50 +00001412 .tested = TEST_OK_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001413 .probe = probe_29f002,
Maciej Pijankac6e11112009-06-03 14:46:22 +00001414 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (mx29f002.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001415 .erase = erase_29f002,
1416 .write = write_29f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001417 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001418 },
1419
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001420 {
1421 .vendor = "Macronix",
1422 .name = "MX29LV040C",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001423 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001424 .manufacture_id = MX_ID,
1425 .model_id = MX_29LV040C,
1426 .total_size = 512,
1427 .page_size = 64 * 1024,
1428 .tested = TEST_OK_PR,
1429 .probe = probe_29f002,
Maciej Pijankac6e11112009-06-03 14:46:22 +00001430 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (mx29f002.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001431 .erase = erase_29f002,
1432 .write = write_29f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001433 .read = read_memmapped,
Carl-Daniel Hailfinger7de86392008-12-10 10:32:05 +00001434 },
1435
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001436 {
1437 .vendor = "Numonyx",
1438 .name = "M25PE10",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001439 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001440 .manufacture_id = ST_ID,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00001441 .model_id = ST_M25PE10,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001442 .total_size = 128,
1443 .page_size = 256,
1444 .tested = TEST_UNTESTED,
1445 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001446 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001447 .erase = spi_chip_erase_d8,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001448 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001449 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001450 },
1451
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001452 {
1453 .vendor = "Numonyx",
1454 .name = "M25PE20",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001455 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001456 .manufacture_id = ST_ID,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00001457 .model_id = ST_M25PE20,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001458 .total_size = 256,
1459 .page_size = 256,
1460 .tested = TEST_UNTESTED,
1461 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001462 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001463 .erase = spi_chip_erase_d8,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001464 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001465 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001466 },
1467
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001468 {
1469 .vendor = "Numonyx",
1470 .name = "M25PE40",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001471 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001472 .manufacture_id = ST_ID,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00001473 .model_id = ST_M25PE40,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001474 .total_size = 256,
1475 .page_size = 256,
1476 .tested = TEST_UNTESTED,
1477 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001478 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001479 .erase = spi_chip_erase_d8,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001480 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001481 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001482 },
1483
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001484 {
1485 .vendor = "Numonyx",
1486 .name = "M25PE80",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001487 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001488 .manufacture_id = ST_ID,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00001489 .model_id = ST_M25PE80,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001490 .total_size = 1024,
1491 .page_size = 256,
1492 .tested = TEST_OK_PREW,
1493 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001494 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001495 .erase = spi_chip_erase_d8,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001496 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001497 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001498 },
1499
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001500 {
1501 .vendor = "Numonyx",
1502 .name = "M25PE16",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001503 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001504 .manufacture_id = ST_ID,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00001505 .model_id = ST_M25PE16,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001506 .total_size = 2048,
1507 .page_size = 256,
1508 .tested = TEST_UNTESTED,
1509 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001510 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001511 .erase = spi_chip_erase_d8,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001512 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001513 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001514 },
1515
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001516 {
1517 .vendor = "PMC",
1518 .name = "Pm25LV010",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001519 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001520 .manufacture_id = PMC_ID,
1521 .model_id = PMC_25LV010,
1522 .total_size = 128,
1523 .page_size = 256,
1524 .tested = TEST_UNTESTED,
1525 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001526 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001527 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001528 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001529 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001530 },
1531
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001532 {
1533 .vendor = "PMC",
1534 .name = "Pm25LV016B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001535 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001536 .manufacture_id = PMC_ID,
1537 .model_id = PMC_25LV016B,
1538 .total_size = 2048,
1539 .page_size = 256,
1540 .tested = TEST_UNTESTED,
1541 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001542 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001543 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001544 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001545 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001546 },
1547
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001548 {
1549 .vendor = "PMC",
1550 .name = "Pm25LV020",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001551 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001552 .manufacture_id = PMC_ID,
1553 .model_id = PMC_25LV020,
1554 .total_size = 256,
1555 .page_size = 256,
1556 .tested = TEST_UNTESTED,
1557 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001558 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001559 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001560 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001561 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001562 },
1563
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001564 {
1565 .vendor = "PMC",
1566 .name = "Pm25LV040",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001567 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001568 .manufacture_id = PMC_ID,
1569 .model_id = PMC_25LV040,
1570 .total_size = 512,
1571 .page_size = 256,
1572 .tested = TEST_UNTESTED,
1573 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001574 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001575 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001576 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001577 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001578 },
1579
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001580 {
1581 .vendor = "PMC",
1582 .name = "Pm25LV080B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001583 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001584 .manufacture_id = PMC_ID,
1585 .model_id = PMC_25LV080B,
1586 .total_size = 1024,
1587 .page_size = 256,
1588 .tested = TEST_UNTESTED,
1589 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001590 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001591 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001592 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001593 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001594 },
1595
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001596 {
1597 .vendor = "PMC",
1598 .name = "Pm25LV512",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001599 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001600 .manufacture_id = PMC_ID,
1601 .model_id = PMC_25LV512,
1602 .total_size = 64,
1603 .page_size = 256,
1604 .tested = TEST_UNTESTED,
1605 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001606 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001607 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001608 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001609 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001610 },
1611
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001612 {
1613 .vendor = "PMC",
Uwe Hermannf983d9f2009-06-14 21:53:26 +00001614 .name = "Pm29F0002T",
1615 .bustype = CHIP_BUSTYPE_PARALLEL,
1616 .manufacture_id = PMC_ID_NOPREFIX,
1617 .model_id = PMC_29F002T,
1618 .total_size = 256,
1619 .page_size = 8192,
1620 .tested = TEST_OK_PREW,
1621 .probe = probe_29f040b,
1622 .probe_timing = TIMING_FIXME,
1623 .erase = erase_29f040b,
1624 .write = write_pm29f002,
1625 .read = read_memmapped,
1626 },
1627
1628 {
1629 .vendor = "PMC",
1630 .name = "Pm29F0002B",
1631 .bustype = CHIP_BUSTYPE_PARALLEL,
1632 .manufacture_id = PMC_ID_NOPREFIX,
1633 .model_id = PMC_29F002B,
1634 .total_size = 256,
1635 .page_size = 8192,
1636 .tested = TEST_UNTESTED,
1637 .probe = probe_29f040b,
1638 .probe_timing = TIMING_FIXME,
1639 .erase = erase_29f040b,
1640 .write = write_pm29f002,
1641 .read = read_memmapped,
1642 },
1643
1644 {
1645 .vendor = "PMC",
Rudolf Marek50fdf3b2009-05-17 17:02:07 +00001646 .name = "Pm39LV010",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001647 .bustype = CHIP_BUSTYPE_NONSPI,
Rudolf Marek50fdf3b2009-05-17 17:02:07 +00001648 .manufacture_id = PMC_ID_NOPREFIX,
1649 .model_id = PMC_39F010,
1650 .total_size = 128,
1651 .page_size = 4096,
1652 .tested = TEST_OK_PREW,
1653 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +00001654 .probe_timing = TIMING_FIXME,
Rudolf Marek50fdf3b2009-05-17 17:02:07 +00001655 .erase = erase_chip_jedec,
1656 .write = write_49f002,
1657 .read = read_memmapped,
1658 },
1659
1660 {
1661 .vendor = "PMC",
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001662 .name = "Pm49FL002",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001663 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001664 .manufacture_id = PMC_ID_NOPREFIX,
1665 .model_id = PMC_49FL002,
1666 .total_size = 256,
1667 .page_size = 16 * 1024,
1668 .tested = TEST_OK_PREW,
1669 .probe = probe_49fl00x,
Maciej Pijankac6e11112009-06-03 14:46:22 +00001670 .probe_timing = TIMING_FIXME, /* routine is wrapper to probe_jedec (pm49fl00x.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001671 .erase = erase_49fl00x,
1672 .write = write_49fl00x,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001673 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001674 },
1675
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001676 {
1677 .vendor = "PMC",
1678 .name = "Pm49FL004",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001679 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001680 .manufacture_id = PMC_ID_NOPREFIX,
1681 .model_id = PMC_49FL004,
1682 .total_size = 512,
1683 .page_size = 64 * 1024,
1684 .tested = TEST_OK_PREW,
1685 .probe = probe_49fl00x,
Maciej Pijankac6e11112009-06-03 14:46:22 +00001686 .probe_timing = TIMING_FIXME, /* routine is wrapper to probe_jedec (pm49fl00x.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001687 .erase = erase_49fl00x,
1688 .write = write_49fl00x,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001689 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001690 },
1691
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001692 {
1693 .vendor = "Sharp",
1694 .name = "LHF00L04",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001695 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001696 .manufacture_id = SHARP_ID,
1697 .model_id = SHARP_LHF00L04,
1698 .total_size = 1024,
1699 .page_size = 64 * 1024,
1700 .tested = TEST_UNTESTED,
1701 .probe = probe_lhf00l04,
Maciej Pijankac6e11112009-06-03 14:46:22 +00001702 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (sharplhf00l04.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001703 .erase = erase_lhf00l04,
1704 .write = write_lhf00l04,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001705 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001706 },
1707
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001708 {
1709 .vendor = "Spansion",
1710 .name = "S25FL016A",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001711 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001712 .manufacture_id = SPANSION_ID,
1713 .model_id = SPANSION_S25FL016A,
1714 .total_size = 2048,
1715 .page_size = 256,
1716 .tested = TEST_OK_PREW,
1717 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001718 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001719 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001720 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001721 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001722 },
1723
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001724 {
1725 .vendor = "SST",
1726 .name = "SST25VF016B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001727 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001728 .manufacture_id = SST_ID,
1729 .model_id = SST_25VF016B,
1730 .total_size = 2048,
1731 .page_size = 256,
1732 .tested = TEST_OK_PREW,
1733 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001734 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001735 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger93bb3752009-05-13 22:19:12 +00001736 .write = spi_chip_write_1,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001737 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001738 },
1739
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001740 {
1741 .vendor = "SST",
1742 .name = "SST25VF032B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001743 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001744 .manufacture_id = SST_ID,
1745 .model_id = SST_25VF032B,
1746 .total_size = 4096,
1747 .page_size = 256,
1748 .tested = TEST_OK_PREW,
1749 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001750 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001751 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger93bb3752009-05-13 22:19:12 +00001752 .write = spi_chip_write_1,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001753 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001754 },
1755
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001756 {
1757 .vendor = "SST",
1758 .name = "SST25VF040B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001759 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001760 .manufacture_id = SST_ID,
1761 .model_id = SST_25VF040B,
1762 .total_size = 512,
1763 .page_size = 256,
1764 .tested = TEST_UNTESTED,
1765 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001766 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001767 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger93bb3752009-05-13 22:19:12 +00001768 .write = spi_chip_write_1,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001769 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001770 },
1771
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001772 {
1773 .vendor = "SST",
Zheng Bao0677dff2009-02-25 08:07:33 +00001774 .name = "SST25VF040.REMS",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001775 .bustype = CHIP_BUSTYPE_SPI,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00001776 .manufacture_id = SST_ID,
1777 .model_id = SST_25VF040_REMS,
Zheng Bao0677dff2009-02-25 08:07:33 +00001778 .total_size = 512,
1779 .page_size = 64*1024,
1780 .tested = TEST_OK_PR,
1781 .probe = probe_spi_rems,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001782 .probe_timing = TIMING_ZERO,
Zheng Bao0677dff2009-02-25 08:07:33 +00001783 .erase = spi_chip_erase_60,
Carl-Daniel Hailfinger93bb3752009-05-13 22:19:12 +00001784 .write = spi_chip_write_1,
Zheng Bao0677dff2009-02-25 08:07:33 +00001785 .read = spi_chip_read,
1786 },
1787
1788 {
1789 .vendor = "SST",
Peter Stugefd9217d2009-01-26 03:37:40 +00001790 .name = "SST25VF040B.REMS",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001791 .bustype = CHIP_BUSTYPE_SPI,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00001792 .manufacture_id = SST_ID,
1793 .model_id = SST_25VF040B_REMS,
Peter Stugefd9217d2009-01-26 03:37:40 +00001794 .total_size = 512,
1795 .page_size = 64*1024,
1796 .tested = TEST_OK_PR,
1797 .probe = probe_spi_rems,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001798 .probe_timing = TIMING_ZERO,
Peter Stugefd9217d2009-01-26 03:37:40 +00001799 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger93bb3752009-05-13 22:19:12 +00001800 .write = spi_chip_write_1,
Peter Stugefd9217d2009-01-26 03:37:40 +00001801 .read = spi_chip_read,
1802 },
1803
1804 {
1805 .vendor = "SST",
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001806 .name = "SST25VF080B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001807 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001808 .manufacture_id = SST_ID,
1809 .model_id = SST_25VF080B,
1810 .total_size = 1024,
1811 .page_size = 256,
Peter Stugee612a112009-05-05 16:34:53 +00001812 .tested = TEST_OK_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001813 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001814 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001815 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001816 .write = spi_chip_write_1,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001817 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001818 },
1819
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001820 {
1821 .vendor = "SST",
1822 .name = "SST28SF040A",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001823 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001824 .manufacture_id = SST_ID,
1825 .model_id = SST_28SF040,
1826 .total_size = 512,
1827 .page_size = 256,
1828 .tested = TEST_UNTESTED,
1829 .probe = probe_28sf040,
Maciej Pijankac6e11112009-06-03 14:46:22 +00001830 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (sst28sf040.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001831 .erase = erase_28sf040,
1832 .write = write_28sf040,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001833 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001834 },
1835
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001836 {
1837 .vendor = "SST",
1838 .name = "SST29EE010",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001839 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001840 .manufacture_id = SST_ID,
1841 .model_id = SST_29EE010,
1842 .total_size = 128,
1843 .page_size = 128,
1844 .tested = TEST_OK_PREW,
1845 .probe = probe_jedec,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00001846 .probe_timing = 10,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001847 .erase = erase_chip_jedec,
1848 .write = write_jedec,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001849 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001850 },
1851
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001852 {
1853 .vendor = "SST",
1854 .name = "SST29LE010",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001855 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001856 .manufacture_id = SST_ID,
1857 .model_id = SST_29LE010,
1858 .total_size = 128,
1859 .page_size = 128,
1860 .tested = TEST_UNTESTED,
1861 .probe = probe_jedec,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00001862 .probe_timing = 10,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001863 .erase = erase_chip_jedec,
1864 .write = write_jedec,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001865 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001866 },
1867
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001868 {
1869 .vendor = "SST",
1870 .name = "SST29EE020A",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001871 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001872 .manufacture_id = SST_ID,
1873 .model_id = SST_29EE020A,
1874 .total_size = 256,
1875 .page_size = 128,
Peter Stugeb27d0a22009-02-22 21:07:28 +00001876 .tested = TEST_OK_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001877 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +00001878 .probe_timing = TIMING_FIXME,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001879 .erase = erase_chip_jedec,
1880 .write = write_jedec,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001881 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001882 },
1883
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001884 {
1885 .vendor = "SST",
1886 .name = "SST29LE020",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001887 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001888 .manufacture_id = SST_ID,
1889 .model_id = SST_29LE020,
1890 .total_size = 256,
1891 .page_size = 128,
1892 .tested = TEST_UNTESTED,
1893 .probe = probe_jedec,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00001894 .probe_timing = 10,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001895 .erase = erase_chip_jedec,
1896 .write = write_jedec,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001897 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001898 },
1899
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001900 {
1901 .vendor = "SST",
1902 .name = "SST39SF010A",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001903 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001904 .manufacture_id = SST_ID,
1905 .model_id = SST_39SF010,
1906 .total_size = 128,
1907 .page_size = 4096,
1908 .tested = TEST_OK_PREW,
1909 .probe = probe_jedec,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00001910 .probe_timing = 1, /* 150 ns */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001911 .erase = erase_chip_jedec,
Uwe Hermann24f9fbe2009-05-12 14:06:04 +00001912 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001913 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001914 },
1915
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001916 {
1917 .vendor = "SST",
1918 .name = "SST39SF020A",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001919 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001920 .manufacture_id = SST_ID,
1921 .model_id = SST_39SF020,
1922 .total_size = 256,
1923 .page_size = 4096,
1924 .tested = TEST_OK_PREW,
1925 .probe = probe_jedec,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00001926 .probe_timing = 1, /* 150 ns */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001927 .erase = erase_chip_jedec,
Uwe Hermann24f9fbe2009-05-12 14:06:04 +00001928 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001929 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001930 },
1931
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001932 {
1933 .vendor = "SST",
1934 .name = "SST39SF040",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001935 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001936 .manufacture_id = SST_ID,
1937 .model_id = SST_39SF040,
1938 .total_size = 512,
1939 .page_size = 4096,
1940 .tested = TEST_OK_PREW,
1941 .probe = probe_jedec,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00001942 .probe_timing = 1, /* 150 ns */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001943 .erase = erase_chip_jedec,
Uwe Hermann24f9fbe2009-05-12 14:06:04 +00001944 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001945 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001946 },
1947
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001948 {
1949 .vendor = "SST",
1950 .name = "SST39VF512",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001951 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001952 .manufacture_id = SST_ID,
1953 .model_id = SST_39VF512,
1954 .total_size = 64,
1955 .page_size = 4096,
Rudolf Mareke186da62009-05-17 18:24:24 +00001956 .tested = TEST_OK_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001957 .probe = probe_jedec,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00001958 .probe_timing = 1, /* 150 ns*/
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001959 .erase = erase_chip_jedec,
Uwe Hermann24f9fbe2009-05-12 14:06:04 +00001960 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001961 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001962 },
1963
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001964 {
1965 .vendor = "SST",
1966 .name = "SST39VF010",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001967 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001968 .manufacture_id = SST_ID,
1969 .model_id = SST_39VF010,
1970 .total_size = 128,
1971 .page_size = 4096,
Rudolf Marek50fdf3b2009-05-17 17:02:07 +00001972 .tested = TEST_OK_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001973 .probe = probe_jedec,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00001974 .probe_timing = 1, /* 150 ns */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001975 .erase = erase_chip_jedec,
Uwe Hermann24f9fbe2009-05-12 14:06:04 +00001976 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001977 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001978 },
1979
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001980 {
1981 .vendor = "SST",
1982 .name = "SST39VF020",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001983 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001984 .manufacture_id = SST_ID,
1985 .model_id = SST_39VF020,
1986 .total_size = 256,
1987 .page_size = 4096,
1988 .tested = TEST_OK_PREW,
1989 .probe = probe_jedec,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00001990 .probe_timing = 1, /* 150 ns */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001991 .erase = erase_chip_jedec,
Uwe Hermann24f9fbe2009-05-12 14:06:04 +00001992 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001993 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001994 },
1995
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001996 {
1997 .vendor = "SST",
1998 .name = "SST39VF040",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001999 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002000 .manufacture_id = SST_ID,
2001 .model_id = SST_39VF040,
2002 .total_size = 512,
2003 .page_size = 4096,
2004 .tested = TEST_OK_PROBE,
2005 .probe = probe_jedec,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00002006 .probe_timing = 1, /* 150 ns */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002007 .erase = erase_chip_jedec,
Uwe Hermann24f9fbe2009-05-12 14:06:04 +00002008 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002009 .read = read_memmapped,
Carl-Daniel Hailfinger90eff152008-12-08 23:51:45 +00002010 },
FENG yu ningff692fb2008-12-08 18:15:10 +00002011
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002012 {
2013 .vendor = "SST",
Peter Stuge8440cc02009-01-25 23:55:12 +00002014 .name = "SST39VF080",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002015 .bustype = CHIP_BUSTYPE_NONSPI,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00002016 .manufacture_id = SST_ID,
2017 .model_id = SST_39VF080,
Peter Stuge8440cc02009-01-25 23:55:12 +00002018 .total_size = 1024,
2019 .page_size = 4096,
2020 .tested = TEST_UNTESTED,
2021 .probe = probe_jedec,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00002022 .probe_timing = 1, /* 150 ns */
Peter Stuge8440cc02009-01-25 23:55:12 +00002023 .erase = erase_chip_jedec,
Uwe Hermann24f9fbe2009-05-12 14:06:04 +00002024 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002025 .read = read_memmapped,
Peter Stuge8440cc02009-01-25 23:55:12 +00002026 },
2027
2028 {
2029 .vendor = "SST",
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002030 .name = "SST49LF002A/B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002031 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002032 .manufacture_id = SST_ID,
2033 .model_id = SST_49LF002A,
2034 .total_size = 256,
2035 .page_size = 16 * 1024,
2036 .tested = TEST_OK_PREW,
2037 .probe = probe_sst_fwhub,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002038 .probe_timing = TIMING_FIXME, /* routine is wrapper to probe_jedec (sst_fwhub.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002039 .erase = erase_sst_fwhub,
2040 .write = write_sst_fwhub,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002041 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002042 },
2043
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002044 {
2045 .vendor = "SST",
2046 .name = "SST49LF003A/B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002047 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002048 .manufacture_id = SST_ID,
2049 .model_id = SST_49LF003A,
2050 .total_size = 384,
2051 .page_size = 64 * 1024,
Carl-Daniel Hailfingerb07eac92009-06-22 11:07:44 +00002052 .tested = TEST_OK_PROBE,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002053 .probe = probe_sst_fwhub,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002054 .probe_timing = TIMING_FIXME, /* routine is wrapper to probe_jedec (sst_fwhub.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002055 .erase = erase_sst_fwhub,
2056 .write = write_sst_fwhub,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002057 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002058 },
2059
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002060 {
2061 .vendor = "SST",
2062 .name = "SST49LF004A/B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002063 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002064 .manufacture_id = SST_ID,
2065 .model_id = SST_49LF004A,
2066 .total_size = 512,
2067 .page_size = 64 * 1024,
2068 .tested = TEST_OK_PREW,
2069 .probe = probe_sst_fwhub,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002070 .probe_timing = TIMING_FIXME, /* routine is wrapper to probe_jedec (sst_fwhub.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002071 .erase = erase_sst_fwhub,
2072 .write = write_sst_fwhub,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002073 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002074 },
2075
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002076 {
2077 .vendor = "SST",
2078 .name = "SST49LF004C",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002079 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002080 .manufacture_id = SST_ID,
2081 .model_id = SST_49LF004C,
2082 .total_size = 512,
2083 .page_size = 4 * 1024,
2084 .tested = TEST_UNTESTED,
2085 .probe = probe_49lfxxxc,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002086 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (sst49lfxxxc.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002087 .erase = erase_49lfxxxc,
2088 .write = write_49lfxxxc,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002089 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002090 },
2091
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002092 {
2093 .vendor = "SST",
2094 .name = "SST49LF008A",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002095 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002096 .manufacture_id = SST_ID,
2097 .model_id = SST_49LF008A,
2098 .total_size = 1024,
2099 .page_size = 64 * 1024,
2100 .tested = TEST_OK_PREW,
2101 .probe = probe_sst_fwhub,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002102 .probe_timing = TIMING_FIXME, /* routine is wrapper to probe_jedec (sst_fwhub.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002103 .erase = erase_sst_fwhub,
2104 .write = write_sst_fwhub,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002105 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002106 },
2107
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002108 {
2109 .vendor = "SST",
2110 .name = "SST49LF008C",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002111 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002112 .manufacture_id = SST_ID,
2113 .model_id = SST_49LF008C,
2114 .total_size = 1024,
2115 .page_size = 4 * 1024,
2116 .tested = TEST_UNTESTED,
2117 .probe = probe_49lfxxxc,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002118 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (sst49lfxxxc.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002119 .erase = erase_49lfxxxc,
2120 .write = write_49lfxxxc,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002121 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002122 },
2123
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002124 {
2125 .vendor = "SST",
2126 .name = "SST49LF016C",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002127 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002128 .manufacture_id = SST_ID,
2129 .model_id = SST_49LF016C,
2130 .total_size = 2048,
2131 .page_size = 4 * 1024,
2132 .tested = TEST_OK_PREW,
2133 .probe = probe_49lfxxxc,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002134 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (sst49lfxxxc.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002135 .erase = erase_49lfxxxc,
2136 .write = write_49lfxxxc,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002137 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002138 },
2139
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002140 {
2141 .vendor = "SST",
2142 .name = "SST49LF020",
Mateusz Murawskie33890d2009-06-12 11:45:10 +00002143 .bustype = CHIP_BUSTYPE_LPC,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002144 .manufacture_id = SST_ID,
2145 .model_id = SST_49LF020,
2146 .total_size = 256,
2147 .page_size = 16 * 1024,
2148 .tested = TEST_OK_PR,
2149 .probe = probe_jedec,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00002150 .probe_timing = 1, /* 150 ns */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002151 .erase = erase_49lf040,
2152 .write = write_49lf040,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002153 .read = read_memmapped,
Sven Schnellec208dfb2009-01-07 12:35:09 +00002154 },
2155
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002156 {
2157 .vendor = "SST",
2158 .name = "SST49LF020A",
Mateusz Murawskie33890d2009-06-12 11:45:10 +00002159 .bustype = CHIP_BUSTYPE_LPC,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002160 .manufacture_id = SST_ID,
2161 .model_id = SST_49LF020A,
2162 .total_size = 256,
2163 .page_size = 16 * 1024,
2164 .tested = TEST_UNTESTED,
2165 .probe = probe_jedec,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00002166 .probe_timing = 1, /* 150 ns */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002167 .erase = erase_49lf040,
2168 .write = write_49lf040,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002169 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002170 },
2171
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002172 {
2173 .vendor = "SST",
2174 .name = "SST49LF040",
Mateusz Murawskie33890d2009-06-12 11:45:10 +00002175 .bustype = CHIP_BUSTYPE_LPC,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002176 .manufacture_id = SST_ID,
2177 .model_id = SST_49LF040,
2178 .total_size = 512,
2179 .page_size = 4096,
2180 .tested = TEST_OK_PREW,
2181 .probe = probe_jedec,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00002182 .probe_timing = 1, /* 150 ns */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002183 .erase = erase_49lf040,
2184 .write = write_49lf040,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002185 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002186 },
2187
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002188 {
2189 .vendor = "SST",
2190 .name = "SST49LF040B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002191 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002192 .manufacture_id = SST_ID,
2193 .model_id = SST_49LF040B,
2194 .total_size = 512,
2195 .page_size = 64 * 1024,
2196 .tested = TEST_OK_PREW,
2197 .probe = probe_sst_fwhub,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002198 .probe_timing = TIMING_FIXME, /* routine is wrapper to probe_jedec (sst_fwhub.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002199 .erase = erase_sst_fwhub,
2200 .write = write_sst_fwhub,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002201 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002202 },
2203
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002204 {
2205 .vendor = "SST",
2206 .name = "SST49LF080A",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002207 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002208 .manufacture_id = SST_ID,
2209 .model_id = SST_49LF080A,
2210 .total_size = 1024,
2211 .page_size = 4096,
2212 .tested = TEST_OK_PREW,
2213 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002214 .probe_timing = TIMING_FIXME,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002215 .erase = erase_49lf040,
2216 .write = write_49lf040,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002217 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002218 },
2219
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002220 {
2221 .vendor = "SST",
2222 .name = "SST49LF160C",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002223 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002224 .manufacture_id = SST_ID,
2225 .model_id = SST_49LF160C,
2226 .total_size = 2048,
2227 .page_size = 4 * 1024,
2228 .tested = TEST_OK_PREW,
2229 .probe = probe_49lfxxxc,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002230 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (sst49lfxxxc.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002231 .erase = erase_49lfxxxc,
2232 .write = write_49lfxxxc,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002233 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002234 },
2235
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002236 {
2237 .vendor = "ST",
2238 .name = "M25P05-A",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002239 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002240 .manufacture_id = ST_ID,
2241 .model_id = ST_M25P05A,
2242 .total_size = 64,
2243 .page_size = 256,
2244 .tested = TEST_UNTESTED,
2245 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00002246 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002247 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00002248 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002249 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00002250 },
2251
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002252 {
2253 .vendor = "ST",
2254 .name = "M25P10-A",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002255 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002256 .manufacture_id = ST_ID,
2257 .model_id = ST_M25P10A,
2258 .total_size = 128,
2259 .page_size = 256,
2260 .tested = TEST_UNTESTED,
2261 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00002262 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002263 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00002264 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002265 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00002266 },
2267
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002268 {
2269 .vendor = "ST",
2270 .name = "M25P20",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002271 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002272 .manufacture_id = ST_ID,
2273 .model_id = ST_M25P20,
2274 .total_size = 256,
2275 .page_size = 256,
2276 .tested = TEST_UNTESTED,
2277 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00002278 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002279 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00002280 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002281 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00002282 },
2283
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002284 {
2285 .vendor = "ST",
2286 .name = "M25P40",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002287 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002288 .manufacture_id = ST_ID,
2289 .model_id = ST_M25P40,
2290 .total_size = 512,
2291 .page_size = 256,
2292 .tested = TEST_UNTESTED,
2293 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00002294 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002295 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00002296 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002297 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00002298 },
2299
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002300 {
2301 .vendor = "ST",
2302 .name = "M25P40-old",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002303 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002304 .manufacture_id = ST_ID,
2305 .model_id = ST_M25P40_RES,
2306 .total_size = 512,
2307 .page_size = 256,
2308 .tested = TEST_UNTESTED,
2309 .probe = probe_spi_res,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00002310 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002311 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00002312 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002313 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00002314 },
2315
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002316 {
2317 .vendor = "ST",
2318 .name = "M25P80",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002319 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002320 .manufacture_id = ST_ID,
2321 .model_id = ST_M25P80,
2322 .total_size = 1024,
2323 .page_size = 256,
Carl-Daniel Hailfinger5190ec12009-06-22 10:09:07 +00002324 .tested = TEST_OK_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002325 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00002326 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002327 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00002328 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002329 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00002330 },
2331
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002332 {
2333 .vendor = "ST",
2334 .name = "M25P16",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002335 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002336 .manufacture_id = ST_ID,
2337 .model_id = ST_M25P16,
2338 .total_size = 2048,
2339 .page_size = 256,
2340 .tested = TEST_OK_PREW,
2341 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00002342 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002343 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00002344 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002345 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00002346 },
2347
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002348 {
2349 .vendor = "ST",
2350 .name = "M25P32",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002351 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002352 .manufacture_id = ST_ID,
2353 .model_id = ST_M25P32,
2354 .total_size = 4096,
2355 .page_size = 256,
2356 .tested = TEST_OK_PREW,
2357 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00002358 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002359 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00002360 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002361 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00002362 },
2363
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002364 {
2365 .vendor = "ST",
2366 .name = "M25P64",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002367 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002368 .manufacture_id = ST_ID,
2369 .model_id = ST_M25P64,
2370 .total_size = 8192,
2371 .page_size = 256,
2372 .tested = TEST_UNTESTED,
2373 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00002374 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002375 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00002376 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002377 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00002378 },
2379
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002380 {
2381 .vendor = "ST",
2382 .name = "M25P128",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002383 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002384 .manufacture_id = ST_ID,
2385 .model_id = ST_M25P128,
2386 .total_size = 16384,
2387 .page_size = 256,
2388 .tested = TEST_UNTESTED,
2389 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00002390 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002391 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00002392 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002393 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00002394 },
2395
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002396 {
2397 .vendor = "ST",
2398 .name = "M29F002B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002399 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002400 .manufacture_id = ST_ID,
2401 .model_id = ST_M29F002B,
2402 .total_size = 256,
2403 .page_size = 64 * 1024,
2404 .tested = TEST_UNTESTED,
2405 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002406 .probe_timing = TIMING_FIXME,
Peter Stugeaf8ffac2009-01-26 06:42:02 +00002407 .erase = erase_m29f002,
2408 .write = write_m29f002b,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002409 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002410 },
2411
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002412 {
2413 .vendor = "ST",
2414 .name = "M29F002T/NT",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002415 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002416 .manufacture_id = ST_ID,
2417 .model_id = ST_M29F002T,
2418 .total_size = 256,
2419 .page_size = 64 * 1024,
Peter Stugeaf8ffac2009-01-26 06:42:02 +00002420 .tested = TEST_OK_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002421 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002422 .probe_timing = TIMING_FIXME,
Peter Stugeaf8ffac2009-01-26 06:42:02 +00002423 .erase = erase_m29f002,
2424 .write = write_m29f002t,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002425 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002426 },
2427
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002428 {
2429 .vendor = "ST",
2430 .name = "M29F040B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002431 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002432 .manufacture_id = ST_ID,
2433 .model_id = ST_M29F040B,
2434 .total_size = 512,
2435 .page_size = 64 * 1024,
2436 .tested = TEST_OK_PREW,
2437 .probe = probe_29f040b,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002438 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (am29f040b.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002439 .erase = erase_29f040b,
2440 .write = write_29f040b,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002441 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002442 },
2443
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002444 {
2445 .vendor = "ST",
2446 .name = "M29F400BT",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002447 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002448 .manufacture_id = ST_ID,
2449 .model_id = ST_M29F400BT,
2450 .total_size = 512,
2451 .page_size = 64 * 1024,
2452 .tested = TEST_UNTESTED,
2453 .probe = probe_m29f400bt,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002454 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (m29f400bt.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002455 .erase = erase_m29f400bt,
2456 .write = write_coreboot_m29f400bt,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002457 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002458 },
2459
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002460 {
2461 .vendor = "ST",
2462 .name = "M29W010B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002463 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002464 .manufacture_id = ST_ID,
2465 .model_id = ST_M29W010B,
2466 .total_size = 128,
2467 .page_size = 16 * 1024,
2468 .tested = TEST_UNTESTED,
2469 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002470 .probe_timing = TIMING_FIXME,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002471 .erase = erase_chip_jedec,
2472 .write = write_jedec,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002473 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002474 },
2475
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002476 {
2477 .vendor = "ST",
2478 .name = "M29W040B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002479 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002480 .manufacture_id = ST_ID,
2481 .model_id = ST_M29W040B,
2482 .total_size = 512,
2483 .page_size = 64 * 1024,
2484 .tested = TEST_UNTESTED,
2485 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002486 .probe_timing = TIMING_FIXME,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002487 .erase = erase_chip_jedec,
2488 .write = write_jedec,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002489 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002490 },
2491
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002492 {
2493 .vendor = "ST",
2494 .name = "M50FLW040A",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002495 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002496 .manufacture_id = ST_ID,
2497 .model_id = ST_M50FLW040A,
2498 .total_size = 512,
2499 .page_size = 64 * 1024,
2500 .tested = TEST_UNTESTED,
2501 .probe = probe_stm50flw0x0x,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002502 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (stm50flw0x0x.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002503 .erase = erase_stm50flw0x0x,
2504 .write = write_stm50flw0x0x,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002505 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002506 },
2507
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002508 {
2509 .vendor = "ST",
2510 .name = "M50FLW040B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002511 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002512 .manufacture_id = ST_ID,
2513 .model_id = ST_M50FLW040B,
2514 .total_size = 512,
2515 .page_size = 64 * 1024,
2516 .tested = TEST_UNTESTED,
2517 .probe = probe_stm50flw0x0x,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002518 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (stm50flw0x0x.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002519 .erase = erase_stm50flw0x0x,
2520 .write = write_stm50flw0x0x,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002521 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002522 },
2523
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002524 {
2525 .vendor = "ST",
2526 .name = "M50FLW080A",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002527 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002528 .manufacture_id = ST_ID,
2529 .model_id = ST_M50FLW080A,
2530 .total_size = 1024,
2531 .page_size = 64 * 1024,
2532 .tested = TEST_OK_PREW,
2533 .probe = probe_stm50flw0x0x,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002534 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (stm50flw0x0x.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002535 .erase = erase_stm50flw0x0x,
2536 .write = write_stm50flw0x0x,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002537 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002538 },
2539
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002540 {
2541 .vendor = "ST",
2542 .name = "M50FLW080B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002543 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002544 .manufacture_id = ST_ID,
2545 .model_id = ST_M50FLW080B,
2546 .total_size = 1024,
2547 .page_size = 64 * 1024,
2548 .tested = TEST_UNTESTED,
2549 .probe = probe_stm50flw0x0x,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002550 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (stm50flw0x0x.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002551 .erase = erase_stm50flw0x0x,
2552 .write = write_stm50flw0x0x,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002553 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002554 },
2555
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002556 {
2557 .vendor = "ST",
2558 .name = "M50FW002",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002559 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002560 .manufacture_id = ST_ID,
2561 .model_id = ST_M50FW002,
2562 .total_size = 256,
2563 .page_size = 64 * 1024,
2564 .tested = TEST_UNTESTED,
2565 .probe = probe_49lfxxxc,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002566 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (sst49lfxxxc.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002567 .erase = NULL,
2568 .write = NULL,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002569 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002570 },
2571
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002572 {
2573 .vendor = "ST",
2574 .name = "M50FW016",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002575 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002576 .manufacture_id = ST_ID,
2577 .model_id = ST_M50FW016,
2578 .total_size = 2048,
2579 .page_size = 64 * 1024,
2580 .tested = TEST_UNTESTED,
2581 .probe = probe_82802ab,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002582 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (82802ab.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002583 .erase = erase_82802ab,
2584 .write = write_82802ab,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002585 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002586 },
2587
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002588 {
2589 .vendor = "ST",
2590 .name = "M50FW040",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002591 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002592 .manufacture_id = ST_ID,
2593 .model_id = ST_M50FW040,
2594 .total_size = 512,
2595 .page_size = 64 * 1024,
2596 .tested = TEST_OK_PREW,
2597 .probe = probe_82802ab,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002598 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (82802ab.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002599 .erase = erase_82802ab,
2600 .write = write_82802ab,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002601 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002602 },
2603
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002604 {
2605 .vendor = "ST",
2606 .name = "M50FW080",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002607 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002608 .manufacture_id = ST_ID,
2609 .model_id = ST_M50FW080,
2610 .total_size = 1024,
2611 .page_size = 64 * 1024,
Peter Stugea657e942009-01-24 23:01:08 +00002612 .tested = TEST_OK_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002613 .probe = probe_82802ab,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002614 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (82802ab.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002615 .erase = erase_82802ab,
2616 .write = write_82802ab,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002617 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002618 },
2619
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002620 {
2621 .vendor = "ST",
2622 .name = "M50LPW116",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002623 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002624 .manufacture_id = ST_ID,
2625 .model_id = ST_M50LPW116,
2626 .total_size = 2048,
2627 .page_size = 64 * 1024,
2628 .tested = TEST_UNTESTED,
2629 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002630 .probe_timing = TIMING_FIXME,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002631 .erase = erase_chip_jedec,
2632 .write = write_jedec,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002633 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002634 },
2635
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002636 {
2637 .vendor = "SyncMOS",
2638 .name = "S29C31004T",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002639 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002640 .manufacture_id = SYNCMOS_ID,
2641 .model_id = S29C31004T,
2642 .total_size = 512,
2643 .page_size = 128,
2644 .tested = TEST_UNTESTED,
2645 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002646 .probe_timing = TIMING_FIXME,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002647 .erase = erase_chip_jedec,
2648 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002649 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002650 },
2651
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002652 {
2653 .vendor = "SyncMOS",
2654 .name = "S29C51001T",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002655 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002656 .manufacture_id = SYNCMOS_ID,
2657 .model_id = S29C51001T,
2658 .total_size = 128,
2659 .page_size = 128,
2660 .tested = TEST_UNTESTED,
2661 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002662 .probe_timing = TIMING_FIXME,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002663 .erase = erase_chip_jedec,
2664 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002665 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002666 },
2667
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002668 {
2669 .vendor = "SyncMOS",
2670 .name = "S29C51002T",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002671 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002672 .manufacture_id = SYNCMOS_ID,
2673 .model_id = S29C51002T,
2674 .total_size = 256,
2675 .page_size = 128,
2676 .tested = TEST_OK_PREW,
2677 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002678 .probe_timing = TIMING_FIXME,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002679 .erase = erase_chip_jedec,
2680 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002681 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002682 },
2683
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002684 {
2685 .vendor = "SyncMOS",
2686 .name = "S29C51004T",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002687 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002688 .manufacture_id = SYNCMOS_ID,
2689 .model_id = S29C51004T,
2690 .total_size = 512,
2691 .page_size = 128,
2692 .tested = TEST_UNTESTED,
2693 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002694 .probe_timing = TIMING_FIXME,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002695 .erase = erase_chip_jedec,
2696 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002697 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002698 },
2699
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002700 {
Uwe Hermanna106d152009-05-27 23:17:40 +00002701 .vendor = "TI",
Carl-Daniel Hailfinger09b4fb72009-05-26 21:26:23 +00002702 .name = "TMS29F002RB",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002703 .bustype = CHIP_BUSTYPE_NONSPI,
Carl-Daniel Hailfinger09b4fb72009-05-26 21:26:23 +00002704 .manufacture_id = TI_OLD_ID,
2705 .model_id = TI_TMS29F002RB,
2706 .total_size = 256,
2707 .page_size = 16384, /* Non-uniform sectors */
2708 .tested = TEST_UNTESTED,
2709 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002710 .probe_timing = TIMING_FIXME,
Carl-Daniel Hailfinger09b4fb72009-05-26 21:26:23 +00002711 .erase = NULL,
2712 .write = NULL,
2713 .read = read_memmapped,
2714 },
2715
2716 {
Uwe Hermanna106d152009-05-27 23:17:40 +00002717 .vendor = "TI",
Carl-Daniel Hailfinger09b4fb72009-05-26 21:26:23 +00002718 .name = "TMS29F002RT",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002719 .bustype = CHIP_BUSTYPE_NONSPI,
Carl-Daniel Hailfinger09b4fb72009-05-26 21:26:23 +00002720 .manufacture_id = TI_OLD_ID,
2721 .model_id = TI_TMS29F002RT,
2722 .total_size = 256,
2723 .page_size = 16384, /* Non-uniform sectors */
2724 .tested = TEST_UNTESTED,
2725 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002726 .probe_timing = TIMING_FIXME,
Carl-Daniel Hailfinger09b4fb72009-05-26 21:26:23 +00002727 .erase = NULL,
2728 .write = NULL,
2729 .read = read_memmapped,
2730 },
2731
2732 {
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002733 .vendor = "Winbond",
2734 .name = "W25x10",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002735 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002736 .manufacture_id = WINBOND_NEX_ID,
2737 .model_id = W_25X10,
2738 .total_size = 128,
2739 .page_size = 256,
2740 .tested = TEST_UNTESTED,
2741 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00002742 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002743 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00002744 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002745 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00002746 },
2747
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002748 {
2749 .vendor = "Winbond",
2750 .name = "W25x20",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002751 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002752 .manufacture_id = WINBOND_NEX_ID,
2753 .model_id = W_25X20,
2754 .total_size = 256,
2755 .page_size = 256,
2756 .tested = TEST_UNTESTED,
2757 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00002758 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002759 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00002760 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002761 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00002762 },
2763
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002764 {
2765 .vendor = "Winbond",
2766 .name = "W25x40",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002767 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002768 .manufacture_id = WINBOND_NEX_ID,
2769 .model_id = W_25X40,
2770 .total_size = 512,
2771 .page_size = 256,
2772 .tested = TEST_OK_PREW,
2773 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00002774 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002775 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00002776 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002777 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00002778 },
2779
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002780 {
2781 .vendor = "Winbond",
2782 .name = "W25x80",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002783 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002784 .manufacture_id = WINBOND_NEX_ID,
2785 .model_id = W_25X80,
2786 .total_size = 1024,
2787 .page_size = 256,
2788 .tested = TEST_OK_PREW,
2789 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00002790 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002791 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00002792 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002793 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00002794 },
2795
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002796 {
2797 .vendor = "Winbond",
2798 .name = "W29C011",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002799 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002800 .manufacture_id = WINBOND_ID,
2801 .model_id = W_29C011,
2802 .total_size = 128,
2803 .page_size = 128,
2804 .tested = TEST_OK_PREW,
2805 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002806 .probe_timing = TIMING_FIXME,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002807 .erase = erase_chip_jedec,
2808 .write = write_jedec,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002809 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002810 },
2811
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002812 {
2813 .vendor = "Winbond",
2814 .name = "W29C020C",
Urja Rannikko161b8852009-06-05 08:47:37 +00002815 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002816 .manufacture_id = WINBOND_ID,
2817 .model_id = W_29C020C,
2818 .total_size = 256,
2819 .page_size = 128,
2820 .tested = TEST_OK_PREW,
2821 .probe = probe_jedec,
Mateusz Murawski8b2f46b2009-06-12 21:29:36 +00002822 .probe_timing = 10,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002823 .erase = erase_chip_jedec,
2824 .write = write_jedec,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002825 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002826 },
2827
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002828 {
2829 .vendor = "Winbond",
2830 .name = "W29C040P",
Urja Rannikko161b8852009-06-05 08:47:37 +00002831 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002832 .manufacture_id = WINBOND_ID,
2833 .model_id = W_29C040P,
2834 .total_size = 512,
2835 .page_size = 256,
2836 .tested = TEST_UNTESTED,
2837 .probe = probe_jedec,
Mateusz Murawski8b2f46b2009-06-12 21:29:36 +00002838 .probe_timing = 10,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002839 .erase = erase_chip_jedec,
2840 .write = write_jedec,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002841 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002842 },
2843
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002844 {
2845 .vendor = "Winbond",
2846 .name = "W29EE011",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002847 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002848 .manufacture_id = WINBOND_ID,
2849 .model_id = W_29C011,
2850 .total_size = 128,
2851 .page_size = 128,
2852 .tested = TEST_OK_PREW,
2853 .probe = probe_w29ee011,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002854 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (w29ee011.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002855 .erase = erase_chip_jedec,
2856 .write = write_jedec,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002857 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002858 },
2859
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002860 {
2861 .vendor = "Winbond",
2862 .name = "W39V040A",
Mateusz Murawski8b2f46b2009-06-12 21:29:36 +00002863 .bustype = CHIP_BUSTYPE_LPC,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002864 .manufacture_id = WINBOND_ID,
2865 .model_id = W_39V040A,
2866 .total_size = 512,
2867 .page_size = 64*1024,
Uwe Hermann690bcba2009-05-21 17:11:25 +00002868 .tested = TEST_OK_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002869 .probe = probe_jedec,
Mateusz Murawski8b2f46b2009-06-12 21:29:36 +00002870 .probe_timing = 10,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002871 .erase = erase_chip_jedec,
Uwe Hermann24f9fbe2009-05-12 14:06:04 +00002872 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002873 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002874 },
2875
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002876 {
2877 .vendor = "Winbond",
2878 .name = "W39V040B",
Mateusz Murawski8b2f46b2009-06-12 21:29:36 +00002879 .bustype = CHIP_BUSTYPE_LPC,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002880 .manufacture_id = WINBOND_ID,
2881 .model_id = W_39V040B,
2882 .total_size = 512,
2883 .page_size = 64*1024,
2884 .tested = TEST_OK_PREW,
2885 .probe = probe_jedec,
Mateusz Murawski8b2f46b2009-06-12 21:29:36 +00002886 .probe_timing = 10,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002887 .erase = erase_chip_jedec,
Uwe Hermann24f9fbe2009-05-12 14:06:04 +00002888 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002889 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002890 },
2891
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002892 {
2893 .vendor = "Winbond",
2894 .name = "W39V040C",
Mateusz Murawski8b2f46b2009-06-12 21:29:36 +00002895 .bustype = CHIP_BUSTYPE_LPC,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002896 .manufacture_id = WINBOND_ID,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00002897 .model_id = W_39V040C,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002898 .total_size = 512,
2899 .page_size = 64*1024,
2900 .tested = TEST_OK_PREW,
2901 .probe = probe_w39v040c,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002902 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (w39v040c.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002903 .erase = erase_w39v040c,
2904 .write = write_w39v040c,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002905 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002906 },
2907
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002908 {
2909 .vendor = "Winbond",
2910 .name = "W39V040FA",
Mateusz Murawski8b2f46b2009-06-12 21:29:36 +00002911 .bustype = CHIP_BUSTYPE_FWH,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002912 .manufacture_id = WINBOND_ID,
2913 .model_id = W_39V040FA,
2914 .total_size = 512,
2915 .page_size = 64*1024,
2916 .tested = TEST_OK_PREW,
2917 .probe = probe_jedec,
Mateusz Murawski8b2f46b2009-06-12 21:29:36 +00002918 .probe_timing = 10,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002919 .erase = erase_chip_jedec,
Uwe Hermann24f9fbe2009-05-12 14:06:04 +00002920 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002921 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002922 },
2923
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002924 {
2925 .vendor = "Winbond",
2926 .name = "W39V080A",
Mateusz Murawski8b2f46b2009-06-12 21:29:36 +00002927 .bustype = CHIP_BUSTYPE_LPC,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002928 .manufacture_id = WINBOND_ID,
2929 .model_id = W_39V080A,
2930 .total_size = 1024,
2931 .page_size = 64*1024,
2932 .tested = TEST_OK_PREW,
2933 .probe = probe_jedec,
Mateusz Murawski8b2f46b2009-06-12 21:29:36 +00002934 .probe_timing = 10,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002935 .erase = erase_chip_jedec,
Uwe Hermann24f9fbe2009-05-12 14:06:04 +00002936 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002937 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002938 },
2939
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002940 {
2941 .vendor = "Winbond",
2942 .name = "W49F002U",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002943 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002944 .manufacture_id = WINBOND_ID,
2945 .model_id = W_49F002U,
2946 .total_size = 256,
2947 .page_size = 128,
2948 .tested = TEST_OK_PREW,
2949 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002950 .probe_timing = TIMING_FIXME,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002951 .erase = erase_chip_jedec,
2952 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002953 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002954 },
2955
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002956 {
2957 .vendor = "Winbond",
2958 .name = "W49V002A",
Mateusz Murawski8b2f46b2009-06-12 21:29:36 +00002959 .bustype = CHIP_BUSTYPE_LPC,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002960 .manufacture_id = WINBOND_ID,
2961 .model_id = W_49V002A,
2962 .total_size = 256,
2963 .page_size = 128,
2964 .tested = TEST_OK_PREW,
2965 .probe = probe_jedec,
Mateusz Murawski8b2f46b2009-06-12 21:29:36 +00002966 .probe_timing = 10,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002967 .erase = erase_chip_jedec,
2968 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002969 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002970 },
2971
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002972 {
2973 .vendor = "Winbond",
2974 .name = "W49V002FA",
Mateusz Murawski8b2f46b2009-06-12 21:29:36 +00002975 .bustype = CHIP_BUSTYPE_FWH,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002976 .manufacture_id = WINBOND_ID,
2977 .model_id = W_49V002FA,
2978 .total_size = 256,
2979 .page_size = 128,
2980 .tested = TEST_UNTESTED,
2981 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002982 .probe_timing = TIMING_FIXME,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002983 .erase = erase_chip_jedec,
2984 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002985 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002986 },
2987
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002988 {
2989 .vendor = "Winbond",
2990 .name = "W39V080FA",
Mateusz Murawski8b2f46b2009-06-12 21:29:36 +00002991 .bustype = CHIP_BUSTYPE_FWH,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002992 .manufacture_id = WINBOND_ID,
2993 .model_id = W_39V080FA,
2994 .total_size = 1024,
2995 .page_size = 64*1024,
2996 .tested = TEST_OK_PREW,
2997 .probe = probe_winbond_fwhub,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002998 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (w39v080fa.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002999 .erase = erase_winbond_fwhub,
3000 .write = write_winbond_fwhub,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00003001 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00003002 },
3003
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003004 {
3005 .vendor = "Winbond",
3006 .name = "W39V080FA (dual mode)",
Mateusz Murawski8b2f46b2009-06-12 21:29:36 +00003007 .bustype = CHIP_BUSTYPE_FWH,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003008 .manufacture_id = WINBOND_ID,
3009 .model_id = W_39V080FA_DM,
3010 .total_size = 512,
3011 .page_size = 64*1024,
3012 .tested = TEST_UNTESTED,
3013 .probe = probe_winbond_fwhub,
Maciej Pijankac6e11112009-06-03 14:46:22 +00003014 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (w39v080fa.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003015 .erase = erase_winbond_fwhub,
3016 .write = write_winbond_fwhub,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00003017 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00003018 },
3019
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003020 {
3021 .vendor = "Atmel",
3022 .name = "unknown Atmel SPI chip",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00003023 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003024 .manufacture_id = ATMEL_ID,
3025 .model_id = GENERIC_DEVICE_ID,
3026 .total_size = 0,
3027 .page_size = 256,
Carl-Daniel Hailfinger42882fd2009-04-22 13:33:43 +00003028 .tested = TEST_BAD_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003029 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00003030 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003031 .erase = NULL,
3032 .write = NULL,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00003033 .read = NULL,
FENG yu ningff692fb2008-12-08 18:15:10 +00003034 },
3035
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003036 {
3037 .vendor = "EON",
3038 .name = "unknown EON SPI chip",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00003039 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003040 .manufacture_id = EON_ID_NOPREFIX,
3041 .model_id = GENERIC_DEVICE_ID,
3042 .total_size = 0,
3043 .page_size = 256,
Carl-Daniel Hailfinger42882fd2009-04-22 13:33:43 +00003044 .tested = TEST_BAD_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003045 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00003046 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003047 .erase = NULL,
3048 .write = NULL,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00003049 .read = NULL,
FENG yu ningff692fb2008-12-08 18:15:10 +00003050 },
3051
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003052 {
3053 .vendor = "Macronix",
3054 .name = "unknown Macronix SPI chip",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00003055 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003056 .manufacture_id = MX_ID,
3057 .model_id = GENERIC_DEVICE_ID,
3058 .total_size = 0,
3059 .page_size = 256,
Carl-Daniel Hailfinger42882fd2009-04-22 13:33:43 +00003060 .tested = TEST_BAD_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003061 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00003062 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003063 .erase = NULL,
3064 .write = NULL,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00003065 .read = NULL,
FENG yu ningff692fb2008-12-08 18:15:10 +00003066 },
3067
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003068 {
3069 .vendor = "PMC",
3070 .name = "unknown PMC SPI chip",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00003071 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003072 .manufacture_id = PMC_ID,
3073 .model_id = GENERIC_DEVICE_ID,
3074 .total_size = 0,
3075 .page_size = 256,
Carl-Daniel Hailfinger42882fd2009-04-22 13:33:43 +00003076 .tested = TEST_BAD_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003077 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00003078 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003079 .erase = NULL,
3080 .write = NULL,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00003081 .read = NULL,
FENG yu ningff692fb2008-12-08 18:15:10 +00003082 },
3083
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003084 {
3085 .vendor = "SST",
3086 .name = "unknown SST SPI chip",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00003087 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003088 .manufacture_id = SST_ID,
3089 .model_id = GENERIC_DEVICE_ID,
3090 .total_size = 0,
3091 .page_size = 256,
Carl-Daniel Hailfinger42882fd2009-04-22 13:33:43 +00003092 .tested = TEST_BAD_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003093 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00003094 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003095 .erase = NULL,
3096 .write = NULL,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00003097 .read = NULL,
FENG yu ningff692fb2008-12-08 18:15:10 +00003098 },
3099
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003100 {
3101 .vendor = "ST",
3102 .name = "unknown ST SPI chip",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00003103 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003104 .manufacture_id = ST_ID,
3105 .model_id = GENERIC_DEVICE_ID,
3106 .total_size = 0,
3107 .page_size = 256,
Carl-Daniel Hailfinger42882fd2009-04-22 13:33:43 +00003108 .tested = TEST_BAD_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003109 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00003110 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003111 .erase = NULL,
3112 .write = NULL,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00003113 .read = NULL,
FENG yu ningff692fb2008-12-08 18:15:10 +00003114 },
Uwe Hermannfc425e82008-03-16 02:06:25 +00003115
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003116 { NULL }
Stephan Guilloux72cf5652009-04-21 01:46:07 +00003117};