blob: 5fd78f2487e2a760c63af4c5b8a04f643e940114 [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
Carl-Daniel Hailfinger21eedec2009-07-23 12:42:01 +000035 /*
36 * .vendor = Vendor name
37 * .name = Chip name
38 * .bustype = Supported flash bus types (Parallel, LPC...)
39 * .manufacture_id = Manufacturer chip ID
40 * .model_id = Model chip ID
41 * .total_size = Total size in (binary) kbytes
42 * .page_size = Page or eraseblock(?) size in bytes
43 * .tested = Test status
44 * .probe = Probe function
45 * .probe_timing = Probe function delay
46 * .erase = Chip erase function
47 * .write = Chip write function
48 * .read = Chip read function
FENG yu ningff692fb2008-12-08 18:15:10 +000049 */
50
Stephan Guilloux5c5b5252009-01-08 03:40:17 +000051 {
52 .vendor = "AMD",
Uwe Hermanna8b37272009-06-19 15:54:39 +000053 .name = "Am29F010A/B",
54 .bustype = CHIP_BUSTYPE_PARALLEL,
55 .manufacture_id = AMD_ID,
56 .model_id = AM_29F010B, /* Same as Am29F010A */
57 .total_size = 128,
58 .page_size = 16 * 1024,
59 .tested = TEST_OK_PREW,
60 .probe = probe_29f040b,
61 .probe_timing = TIMING_FIXME,
62 .erase = erase_29f040b,
63 .write = write_pm29f002,
64 .read = read_memmapped,
65 },
66
67 {
68 .vendor = "AMD",
Stephan Guilloux5c5b5252009-01-08 03:40:17 +000069 .name = "Am29F002(N)BB",
Urja Rannikko038a3122009-06-28 19:19:25 +000070 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +000071 .manufacture_id = AMD_ID,
72 .model_id = AM_29F002BB,
73 .total_size = 256,
74 .page_size = 256,
75 .tested = TEST_UNTESTED,
76 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +000077 .probe_timing = TIMING_FIXME,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +000078 .erase = erase_chip_jedec,
79 .write = write_en29f002a,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +000080 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +000081 },
82
Stephan Guilloux5c5b5252009-01-08 03:40:17 +000083 {
84 .vendor = "AMD",
85 .name = "Am29F002(N)BT",
Urja Rannikko038a3122009-06-28 19:19:25 +000086 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +000087 .manufacture_id = AMD_ID,
88 .model_id = AM_29F002BT,
89 .total_size = 256,
90 .page_size = 256,
91 .tested = TEST_OK_PREW,
92 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +000093 .probe_timing = TIMING_FIXME,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +000094 .erase = erase_chip_jedec,
95 .write = write_en29f002a,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +000096 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +000097 },
98
Stephan Guilloux5c5b5252009-01-08 03:40:17 +000099 {
100 .vendor = "AMD",
101 .name = "Am29F016D",
Urja Rannikko038a3122009-06-28 19:19:25 +0000102 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000103 .manufacture_id = AMD_ID,
104 .model_id = AM_29F016D,
105 .total_size = 2048,
106 .page_size = 64 * 1024,
107 .tested = TEST_UNTESTED,
108 .probe = probe_29f040b,
Maciej Pijankac6e11112009-06-03 14:46:22 +0000109 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (am29f040b.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000110 .erase = erase_29f040b,
111 .write = write_29f040b,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +0000112 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +0000113 },
114
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000115 {
116 .vendor = "AMD",
117 .name = "Am29F040B",
Urja Rannikko038a3122009-06-28 19:19:25 +0000118 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000119 .manufacture_id = AMD_ID,
120 .model_id = AM_29F040B,
121 .total_size = 512,
122 .page_size = 64 * 1024,
123 .tested = TEST_OK_PREW,
124 .probe = probe_29f040b,
Maciej Pijankac6e11112009-06-03 14:46:22 +0000125 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (am29f040b.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000126 .erase = erase_29f040b,
127 .write = write_29f040b,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +0000128 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +0000129 },
130
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000131 {
132 .vendor = "AMD",
Peter Stuge8440cc02009-01-25 23:55:12 +0000133 .name = "Am29F080B",
Urja Rannikko038a3122009-06-28 19:19:25 +0000134 .bustype = CHIP_BUSTYPE_PARALLEL,
Mateusz Murawski5bae4382009-06-02 00:38:14 +0000135 .manufacture_id = AMD_ID,
136 .model_id = AM_29F080B,
Peter Stuge8440cc02009-01-25 23:55:12 +0000137 .total_size = 1024,
138 .page_size = 64 * 1024,
139 .tested = TEST_UNTESTED,
140 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +0000141 .probe_timing = TIMING_FIXME,
Peter Stuge8440cc02009-01-25 23:55:12 +0000142 .erase = erase_29f040b,
143 .write = write_29f040b,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +0000144 .read = read_memmapped,
Peter Stuge8440cc02009-01-25 23:55:12 +0000145 },
146
147 {
148 .vendor = "AMD",
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000149 .name = "Am29LV040B",
Urja Rannikko038a3122009-06-28 19:19:25 +0000150 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000151 .manufacture_id = AMD_ID,
152 .model_id = AM_29LV040B,
153 .total_size = 512,
154 .page_size = 64 * 1024,
155 .tested = TEST_UNTESTED,
156 .probe = probe_29f040b,
Maciej Pijankac6e11112009-06-03 14:46:22 +0000157 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (am29f040b.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000158 .erase = erase_29f040b,
159 .write = write_29f040b,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +0000160 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +0000161 },
162
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000163 {
Peter Stuge8440cc02009-01-25 23:55:12 +0000164 .vendor = "AMD",
165 .name = "Am29LV081B",
Urja Rannikko038a3122009-06-28 19:19:25 +0000166 .bustype = CHIP_BUSTYPE_PARALLEL,
Mateusz Murawski5bae4382009-06-02 00:38:14 +0000167 .manufacture_id = AMD_ID,
Carl-Daniel Hailfinger6d5d2532009-08-10 10:14:23 +0000168 .model_id = AM_29LV080B,
Peter Stuge8440cc02009-01-25 23:55:12 +0000169 .total_size = 1024,
170 .page_size = 64 * 1024,
171 .tested = TEST_UNTESTED,
172 .probe = probe_29f040b,
Maciej Pijankac6e11112009-06-03 14:46:22 +0000173 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (am29f040b.c) */
Peter Stuge8440cc02009-01-25 23:55:12 +0000174 .erase = erase_29f040b,
175 .write = write_29f040b,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +0000176 .read = read_memmapped,
Peter Stuge8440cc02009-01-25 23:55:12 +0000177 },
178
179 {
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000180 .vendor = "ASD",
181 .name = "AE49F2008",
Urja Rannikko038a3122009-06-28 19:19:25 +0000182 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000183 .manufacture_id = ASD_ID,
184 .model_id = ASD_AE49F2008,
185 .total_size = 256,
186 .page_size = 128,
187 .tested = TEST_UNTESTED,
188 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +0000189 .probe_timing = TIMING_FIXME,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000190 .erase = erase_chip_jedec,
191 .write = write_jedec,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +0000192 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +0000193 },
194
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000195 {
196 .vendor = "Atmel",
197 .name = "AT25DF021",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000198 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000199 .manufacture_id = ATMEL_ID,
200 .model_id = AT_25DF021,
201 .total_size = 256,
202 .page_size = 256,
203 .tested = TEST_UNTESTED,
204 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +0000205 .probe_timing = TIMING_ZERO,
Carl-Daniel Hailfingerf8bc28f2009-01-08 16:53:13 +0000206 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +0000207 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000208 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000209 },
210
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000211 {
212 .vendor = "Atmel",
213 .name = "AT25DF041A",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000214 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000215 .manufacture_id = ATMEL_ID,
216 .model_id = AT_25DF041A,
217 .total_size = 512,
218 .page_size = 256,
219 .tested = TEST_UNTESTED,
220 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +0000221 .probe_timing = TIMING_ZERO,
Carl-Daniel Hailfingerf8bc28f2009-01-08 16:53:13 +0000222 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +0000223 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000224 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000225 },
226
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000227 {
228 .vendor = "Atmel",
229 .name = "AT25DF081",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000230 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000231 .manufacture_id = ATMEL_ID,
232 .model_id = AT_25DF081,
233 .total_size = 1024,
234 .page_size = 256,
235 .tested = TEST_UNTESTED,
236 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +0000237 .probe_timing = TIMING_ZERO,
Carl-Daniel Hailfingerf8bc28f2009-01-08 16:53:13 +0000238 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +0000239 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000240 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000241 },
242
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000243 {
244 .vendor = "Atmel",
245 .name = "AT25DF161",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000246 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000247 .manufacture_id = ATMEL_ID,
248 .model_id = AT_25DF161,
249 .total_size = 2048,
250 .page_size = 256,
251 .tested = TEST_UNTESTED,
252 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +0000253 .probe_timing = TIMING_ZERO,
Carl-Daniel Hailfingerf8bc28f2009-01-08 16:53:13 +0000254 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +0000255 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000256 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000257 },
258
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000259 {
260 .vendor = "Atmel",
261 .name = "AT25DF321",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000262 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000263 .manufacture_id = ATMEL_ID,
264 .model_id = AT_25DF321,
265 .total_size = 4096,
266 .page_size = 256,
267 .tested = TEST_OK_PREW,
268 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +0000269 .probe_timing = TIMING_ZERO,
Carl-Daniel Hailfingerf8bc28f2009-01-08 16:53:13 +0000270 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +0000271 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000272 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000273 },
274
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000275 {
276 .vendor = "Atmel",
277 .name = "AT25DF321A",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000278 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000279 .manufacture_id = ATMEL_ID,
280 .model_id = AT_25DF321A,
281 .total_size = 4096,
282 .page_size = 256,
283 .tested = TEST_UNTESTED,
284 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +0000285 .probe_timing = TIMING_ZERO,
Carl-Daniel Hailfingerf8bc28f2009-01-08 16:53:13 +0000286 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +0000287 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000288 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000289 },
290
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000291 {
292 .vendor = "Atmel",
293 .name = "AT25DF641",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000294 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000295 .manufacture_id = ATMEL_ID,
296 .model_id = AT_25DF641,
297 .total_size = 8192,
298 .page_size = 256,
299 .tested = TEST_UNTESTED,
300 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +0000301 .probe_timing = TIMING_ZERO,
Carl-Daniel Hailfingerf8bc28f2009-01-08 16:53:13 +0000302 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +0000303 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000304 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000305 },
306
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000307 {
308 .vendor = "Atmel",
309 .name = "AT25F512B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000310 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000311 .manufacture_id = ATMEL_ID,
312 .model_id = AT_25F512B,
313 .total_size = 64,
314 .page_size = 256,
315 .tested = TEST_UNTESTED,
316 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +0000317 .probe_timing = TIMING_ZERO,
Carl-Daniel Hailfingerf8bc28f2009-01-08 16:53:13 +0000318 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +0000319 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000320 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000321 },
322
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000323 {
324 .vendor = "Atmel",
325 .name = "AT25FS010",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000326 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000327 .manufacture_id = ATMEL_ID,
328 .model_id = AT_25FS010,
329 .total_size = 128,
330 .page_size = 256,
331 .tested = TEST_UNTESTED,
332 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +0000333 .probe_timing = TIMING_ZERO,
Carl-Daniel Hailfingerf8bc28f2009-01-08 16:53:13 +0000334 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +0000335 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000336 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000337 },
338
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000339 {
340 .vendor = "Atmel",
341 .name = "AT25FS040",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000342 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000343 .manufacture_id = ATMEL_ID,
344 .model_id = AT_25FS040,
345 .total_size = 512,
346 .page_size = 256,
347 .tested = TEST_UNTESTED,
348 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +0000349 .probe_timing = TIMING_ZERO,
Carl-Daniel Hailfingerf8bc28f2009-01-08 16:53:13 +0000350 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +0000351 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000352 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000353 },
354
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000355 {
356 .vendor = "Atmel",
357 .name = "AT26DF041",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000358 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000359 .manufacture_id = ATMEL_ID,
360 .model_id = AT_26DF041,
361 .total_size = 512,
362 .page_size = 256,
363 .tested = TEST_UNTESTED,
364 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +0000365 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000366 .erase = NULL,
367 .write = NULL /* Incompatible Page write */,
368 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000369 },
370
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000371 {
372 .vendor = "Atmel",
373 .name = "AT26DF081A",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000374 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000375 .manufacture_id = ATMEL_ID,
376 .model_id = AT_26DF081A,
377 .total_size = 1024,
378 .page_size = 256,
379 .tested = TEST_UNTESTED,
380 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +0000381 .probe_timing = TIMING_ZERO,
Carl-Daniel Hailfingerf8bc28f2009-01-08 16:53:13 +0000382 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +0000383 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000384 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000385 },
386
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000387 {
388 .vendor = "Atmel",
389 .name = "AT26DF161",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000390 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000391 .manufacture_id = ATMEL_ID,
392 .model_id = AT_26DF161,
393 .total_size = 2048,
394 .page_size = 256,
395 .tested = TEST_UNTESTED,
396 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +0000397 .probe_timing = TIMING_ZERO,
Carl-Daniel Hailfingerf8bc28f2009-01-08 16:53:13 +0000398 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +0000399 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000400 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000401 },
402
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000403 {
404 .vendor = "Atmel",
405 .name = "AT26DF161A",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000406 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000407 .manufacture_id = ATMEL_ID,
408 .model_id = AT_26DF161A,
409 .total_size = 2048,
410 .page_size = 256,
411 .tested = TEST_UNTESTED,
412 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +0000413 .probe_timing = TIMING_ZERO,
Carl-Daniel Hailfingerf8bc28f2009-01-08 16:53:13 +0000414 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +0000415 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000416 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000417 },
418
419 /*The AT26DF321 has the same ID as the AT25DF321. */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000420 /*{
421 .vendor = "Atmel",
422 .name = "AT26DF321",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000423 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000424 .manufacture_id = ATMEL_ID,
425 .model_id = AT_26DF321,
426 .total_size = 4096,
427 .page_size = 256,
428 .tested = TEST_UNTESTED,
429 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +0000430 .probe_timing = TIMING_ZERO,
Carl-Daniel Hailfingerf8bc28f2009-01-08 16:53:13 +0000431 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +0000432 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000433 .read = spi_chip_read,
434 },*/
FENG yu ningff692fb2008-12-08 18:15:10 +0000435
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000436 {
437 .vendor = "Atmel",
438 .name = "AT26F004",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000439 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000440 .manufacture_id = ATMEL_ID,
441 .model_id = AT_26F004,
442 .total_size = 512,
443 .page_size = 256,
444 .tested = TEST_UNTESTED,
445 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +0000446 .probe_timing = TIMING_ZERO,
Carl-Daniel Hailfingerf8bc28f2009-01-08 16:53:13 +0000447 .erase = spi_chip_erase_60_c7,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000448 .write = NULL /* Incompatible Page write */,
449 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000450 },
451
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000452 {
453 .vendor = "Atmel",
Maciej Pijankabc2bbd22009-06-02 16:45:59 +0000454 .name = "AT29C512",
Urja Rannikko038a3122009-06-28 19:19:25 +0000455 .bustype = CHIP_BUSTYPE_PARALLEL,
Maciej Pijankabc2bbd22009-06-02 16:45:59 +0000456 .manufacture_id = ATMEL_ID,
457 .model_id = AT_29C512,
458 .total_size = 64,
459 .page_size = 128,
460 .tested = TEST_OK_PREW,
Maciej Pijankac6e11112009-06-03 14:46:22 +0000461 .probe = probe_jedec,
462 .probe_timing = 10000, /* 10mS, Enter=Exec */
Maciej Pijankabc2bbd22009-06-02 16:45:59 +0000463 .erase = erase_chip_jedec,
464 .write = write_jedec,
465 .read = read_memmapped,
466
467 },
468
469 {
470 .vendor = "Atmel",
Uwe Hermann8403ccb2009-05-16 21:39:19 +0000471 .name = "AT29C010A",
Urja Rannikko161b8852009-06-05 08:47:37 +0000472 .bustype = CHIP_BUSTYPE_PARALLEL,
Uwe Hermann8403ccb2009-05-16 21:39:19 +0000473 .manufacture_id = ATMEL_ID,
474 .model_id = AT_29C010A,
475 .total_size = 128,
476 .page_size = 128,
477 .tested = TEST_OK_PRE,
478 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +0000479 .probe_timing = 10000, /* 10mS, Enter=Exec */
Uwe Hermann8403ccb2009-05-16 21:39:19 +0000480 .erase = erase_chip_jedec,
481 .write = write_jedec, /* FIXME */
482 .read = read_memmapped,
483 },
484
485 {
486 .vendor = "Atmel",
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000487 .name = "AT29C020",
Urja Rannikko161b8852009-06-05 08:47:37 +0000488 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000489 .manufacture_id = ATMEL_ID,
490 .model_id = AT_29C020,
491 .total_size = 256,
492 .page_size = 256,
493 .tested = TEST_OK_PREW,
494 .probe = probe_jedec,
Mateusz Murawski8b2f46b2009-06-12 21:29:36 +0000495 .probe_timing = 10000, /* 10ms */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000496 .erase = erase_chip_jedec,
497 .write = write_jedec,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +0000498 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +0000499 },
500
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000501 {
502 .vendor = "Atmel",
503 .name = "AT29C040A",
Urja Rannikko161b8852009-06-05 08:47:37 +0000504 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000505 .manufacture_id = ATMEL_ID,
506 .model_id = AT_29C040A,
507 .total_size = 512,
508 .page_size = 256,
509 .tested = TEST_UNTESTED,
510 .probe = probe_jedec,
Mateusz Murawski8b2f46b2009-06-12 21:29:36 +0000511 .probe_timing = 10000, /* 10 ms */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000512 .erase = erase_chip_jedec,
513 .write = write_jedec,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +0000514 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +0000515 },
516
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000517 {
518 .vendor = "Atmel",
519 .name = "AT45CS1282",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000520 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000521 .manufacture_id = ATMEL_ID,
522 .model_id = AT_45CS1282,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000523 .total_size = 16896 /* No power of two sizes */,
524 .page_size = 1056 /* No power of two sizes */,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000525 .tested = TEST_BAD_READ,
526 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +0000527 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000528 .erase = NULL,
529 .write = NULL /* Incompatible Page write */,
530 .read = NULL /* Incompatible read */,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000531 },
FENG yu ningff692fb2008-12-08 18:15:10 +0000532
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000533 {
534 .vendor = "Atmel",
535 .name = "AT45DB011D",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000536 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000537 .manufacture_id = ATMEL_ID,
538 .model_id = AT_45DB011D,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000539 .total_size = 128 /* Size can only be determined from status register */,
540 .page_size = 256 /* Size can only be determined from status register */,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000541 .tested = TEST_BAD_READ,
542 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +0000543 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000544 .erase = NULL,
545 .write = NULL,
546 .read = NULL,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000547 },
FENG yu ningff692fb2008-12-08 18:15:10 +0000548
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000549 {
550 .vendor = "Atmel",
551 .name = "AT45DB021D",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000552 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000553 .manufacture_id = ATMEL_ID,
554 .model_id = AT_45DB021D,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000555 .total_size = 256 /* Size can only be determined from status register */,
556 .page_size = 256 /* Size can only be determined from status register */,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000557 .tested = TEST_BAD_READ,
558 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +0000559 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000560 .erase = NULL,
561 .write = NULL,
562 .read = NULL,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000563 },
FENG yu ningff692fb2008-12-08 18:15:10 +0000564
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000565 {
566 .vendor = "Atmel",
567 .name = "AT45DB041D",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000568 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000569 .manufacture_id = ATMEL_ID,
570 .model_id = AT_45DB041D,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000571 .total_size = 512 /* Size can only be determined from status register */,
572 .page_size = 256 /* Size can only be determined from status register */,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000573 .tested = TEST_BAD_READ,
574 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +0000575 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000576 .erase = NULL,
577 .write = NULL,
578 .read = NULL,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000579 },
FENG yu ningff692fb2008-12-08 18:15:10 +0000580
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000581 {
582 .vendor = "Atmel",
583 .name = "AT45DB081D",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000584 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000585 .manufacture_id = ATMEL_ID,
586 .model_id = AT_45DB081D,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000587 .total_size = 1024 /* Size can only be determined from status register */,
588 .page_size = 256 /* Size can only be determined from status register */,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000589 .tested = TEST_BAD_READ,
590 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +0000591 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000592 .erase = NULL,
593 .write = NULL,
594 .read = NULL,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000595 },
FENG yu ningff692fb2008-12-08 18:15:10 +0000596
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000597 {
598 .vendor = "Atmel",
599 .name = "AT45DB161D",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000600 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000601 .manufacture_id = ATMEL_ID,
602 .model_id = AT_45DB161D,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000603 .total_size = 2048 /* Size can only be determined from status register */,
604 .page_size = 512 /* Size can only be determined from status register */,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000605 .tested = TEST_BAD_READ,
606 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +0000607 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000608 .erase = NULL,
609 .write = NULL,
610 .read = NULL,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000611 },
FENG yu ningff692fb2008-12-08 18:15:10 +0000612
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000613 {
614 .vendor = "Atmel",
615 .name = "AT45DB321C",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000616 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000617 .manufacture_id = ATMEL_ID,
618 .model_id = AT_45DB321C,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000619 .total_size = 4224 /* No power of two sizes */,
620 .page_size = 528 /* No power of two sizes */,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000621 .tested = TEST_BAD_READ,
622 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +0000623 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000624 .erase = NULL,
625 .write = NULL,
626 .read = NULL /* Incompatible read */,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000627 },
FENG yu ningff692fb2008-12-08 18:15:10 +0000628
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000629 {
630 .vendor = "Atmel",
631 .name = "AT45DB321D",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000632 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000633 .manufacture_id = ATMEL_ID,
634 .model_id = AT_45DB321D,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000635 .total_size = 4096 /* Size can only be determined from status register */,
636 .page_size = 512 /* Size can only be determined from status register */,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000637 .tested = TEST_BAD_READ,
638 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +0000639 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000640 .erase = NULL,
641 .write = NULL,
642 .read = NULL,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000643 },
FENG yu ningff692fb2008-12-08 18:15:10 +0000644
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000645 {
646 .vendor = "Atmel",
647 .name = "AT45DB642D",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000648 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000649 .manufacture_id = ATMEL_ID,
650 .model_id = AT_45DB642D,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000651 .total_size = 8192 /* Size can only be determined from status register */,
652 .page_size = 1024 /* Size can only be determined from status register */,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000653 .tested = TEST_BAD_READ,
654 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +0000655 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000656 .erase = NULL,
657 .write = NULL,
658 .read = NULL,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000659 },
FENG yu ningff692fb2008-12-08 18:15:10 +0000660
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000661 {
662 .vendor = "Atmel",
Uwe Hermannb4dcb712009-05-13 11:36:06 +0000663 .name = "AT49BV512",
Urja Rannikko161b8852009-06-05 08:47:37 +0000664 .bustype = CHIP_BUSTYPE_PARALLEL,
Uwe Hermannb4dcb712009-05-13 11:36:06 +0000665 .manufacture_id = ATMEL_ID,
666 .model_id = AT_49BV512,
667 .total_size = 64,
668 .page_size = 64,
669 .tested = TEST_OK_PREW,
670 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +0000671 .probe_timing = TIMING_FIXME,
Uwe Hermannb4dcb712009-05-13 11:36:06 +0000672 .erase = erase_chip_jedec,
673 .write = write_49f002,
674 .read = read_memmapped,
675 },
676
677 {
678 .vendor = "Atmel",
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000679 .name = "AT49F002(N)",
Urja Rannikko161b8852009-06-05 08:47:37 +0000680 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000681 .manufacture_id = ATMEL_ID,
682 .model_id = AT_49F002N,
683 .total_size = 256,
684 .page_size = 256,
685 .tested = TEST_UNTESTED,
686 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +0000687 .probe_timing = TIMING_FIXME, /* doc1008.pdf dont says anything about probe timing */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000688 .erase = erase_chip_jedec,
689 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +0000690 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +0000691 },
692
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000693 {
694 .vendor = "Atmel",
695 .name = "AT49F002(N)T",
Urja Rannikko161b8852009-06-05 08:47:37 +0000696 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000697 .manufacture_id = ATMEL_ID,
698 .model_id = AT_49F002NT,
699 .total_size = 256,
700 .page_size = 256,
701 .tested = TEST_OK_PREW,
702 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +0000703 .probe_timing = TIMING_FIXME, /* doc1008.pdf dont says anything about probe timing */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000704 .erase = erase_chip_jedec,
705 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +0000706 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +0000707 },
708
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000709 {
710 .vendor = "AMIC",
711 .name = "A25L40P",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000712 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000713 .manufacture_id = AMIC_ID,
714 .model_id = AMIC_A25L40P,
715 .total_size = 512,
716 .page_size = 256,
717 .tested = TEST_OK_PREW,
718 .probe = probe_spi_rdid4,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +0000719 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000720 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +0000721 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000722 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000723 },
724
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000725 {
726 .vendor = "AMIC",
727 .name = "A29002B",
Urja Rannikko038a3122009-06-28 19:19:25 +0000728 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000729 .manufacture_id = AMIC_ID_NOPREFIX,
730 .model_id = AMIC_A29002B,
731 .total_size = 256,
732 .page_size = 64 * 1024,
733 .tested = TEST_UNTESTED,
734 .probe = probe_29f002,
Maciej Pijankac6e11112009-06-03 14:46:22 +0000735 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (mx29f002.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000736 .erase = erase_29f002,
737 .write = write_29f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +0000738 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +0000739 },
740
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000741 {
742 .vendor = "AMIC",
743 .name = "A29002T",
Urja Rannikko038a3122009-06-28 19:19:25 +0000744 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000745 .manufacture_id = AMIC_ID_NOPREFIX,
746 .model_id = AMIC_A29002T,
747 .total_size = 256,
748 .page_size = 64 * 1024,
749 .tested = TEST_OK_PREW,
750 .probe = probe_29f002,
Maciej Pijankac6e11112009-06-03 14:46:22 +0000751 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (mx29f002.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000752 .erase = erase_29f002,
753 .write = write_29f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +0000754 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +0000755 },
756
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000757 {
758 .vendor = "AMIC",
759 .name = "A29040B",
Urja Rannikko161b8852009-06-05 08:47:37 +0000760 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000761 .manufacture_id = AMIC_ID_NOPREFIX,
762 .model_id = AMIC_A29040B,
763 .total_size = 512,
764 .page_size = 64 * 1024,
765 .tested = TEST_OK_PR,
766 .probe = probe_29f040b,
Maciej Pijankac6e11112009-06-03 14:46:22 +0000767 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (am29f040b.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000768 .erase = erase_29f040b,
769 .write = write_29f040b,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +0000770 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +0000771 },
772
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000773 {
774 .vendor = "AMIC",
775 .name = "A49LF040A",
Urja Rannikko161b8852009-06-05 08:47:37 +0000776 .bustype = CHIP_BUSTYPE_LPC,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000777 .manufacture_id = AMIC_ID_NOPREFIX,
778 .model_id = AMIC_A49LF040A,
779 .total_size = 512,
780 .page_size = 64 * 1024,
781 .tested = TEST_OK_PREW,
782 .probe = probe_49fl00x,
Maciej Pijankac6e11112009-06-03 14:46:22 +0000783 .probe_timing = TIMING_FIXME, /* routine is wrapper to probe_jedec (pm49fl00x.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000784 .erase = erase_49fl00x,
785 .write = write_49fl00x,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +0000786 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +0000787 },
788
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000789 {
790 .vendor = "EMST",
791 .name = "F49B002UA",
Urja Rannikko161b8852009-06-05 08:47:37 +0000792 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000793 .manufacture_id = EMST_ID,
794 .model_id = EMST_F49B002UA,
795 .total_size = 256,
796 .page_size = 4096,
797 .tested = TEST_UNTESTED,
798 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +0000799 .probe_timing = TIMING_FIXME,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000800 .erase = erase_chip_jedec,
801 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +0000802 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +0000803 },
804
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000805 {
Carl-Daniel Hailfinger80243c92009-06-05 20:53:07 +0000806 .vendor = "Eon",
807 .name = "EN25B05",
808 .bustype = CHIP_BUSTYPE_SPI,
Carl-Daniel Hailfingera0a6ae92009-06-15 12:10:57 +0000809 .manufacture_id = EON_ID_NOPREFIX,
Carl-Daniel Hailfinger80243c92009-06-05 20:53:07 +0000810 .model_id = EN_25B05,
811 .total_size = 64,
812 .page_size = 256,
813 .tested = TEST_UNTESTED,
814 .probe = probe_spi_rdid,
815 .probe_timing = TIMING_ZERO,
816 .erase = spi_chip_erase_c7,
817 .write = spi_chip_write_256,
818 .read = spi_chip_read,
819 },
820
821 {
822 .vendor = "Eon",
823 .name = "EN25B10",
824 .bustype = CHIP_BUSTYPE_SPI,
Carl-Daniel Hailfingera0a6ae92009-06-15 12:10:57 +0000825 .manufacture_id = EON_ID_NOPREFIX,
Carl-Daniel Hailfinger80243c92009-06-05 20:53:07 +0000826 .model_id = EN_25B10,
827 .total_size = 128,
828 .page_size = 256,
829 .tested = TEST_UNTESTED,
830 .probe = probe_spi_rdid,
831 .probe_timing = TIMING_ZERO,
832 .erase = spi_chip_erase_c7,
833 .write = spi_chip_write_256,
834 .read = spi_chip_read,
835 },
836
837 {
838 .vendor = "Eon",
839 .name = "EN25B20",
840 .bustype = CHIP_BUSTYPE_SPI,
Carl-Daniel Hailfingera0a6ae92009-06-15 12:10:57 +0000841 .manufacture_id = EON_ID_NOPREFIX,
Carl-Daniel Hailfinger80243c92009-06-05 20:53:07 +0000842 .model_id = EN_25B20,
843 .total_size = 256,
844 .page_size = 256,
845 .tested = TEST_UNTESTED,
846 .probe = probe_spi_rdid,
847 .probe_timing = TIMING_ZERO,
848 .erase = spi_chip_erase_c7,
849 .write = spi_chip_write_256,
850 .read = spi_chip_read,
851 },
852
853 {
854 .vendor = "Eon",
855 .name = "EN25B40",
856 .bustype = CHIP_BUSTYPE_SPI,
Carl-Daniel Hailfingera0a6ae92009-06-15 12:10:57 +0000857 .manufacture_id = EON_ID_NOPREFIX,
Carl-Daniel Hailfinger80243c92009-06-05 20:53:07 +0000858 .model_id = EN_25B40,
859 .total_size = 512,
860 .page_size = 256,
861 .tested = TEST_UNTESTED,
862 .probe = probe_spi_rdid,
863 .probe_timing = TIMING_ZERO,
864 .erase = spi_chip_erase_c7,
865 .write = spi_chip_write_256,
866 .read = spi_chip_read,
867 },
868
869 {
870 .vendor = "Eon",
871 .name = "EN25B80",
872 .bustype = CHIP_BUSTYPE_SPI,
Carl-Daniel Hailfingera0a6ae92009-06-15 12:10:57 +0000873 .manufacture_id = EON_ID_NOPREFIX,
Carl-Daniel Hailfinger80243c92009-06-05 20:53:07 +0000874 .model_id = EN_25B80,
875 .total_size = 1024,
876 .page_size = 256,
877 .tested = TEST_UNTESTED,
878 .probe = probe_spi_rdid,
879 .probe_timing = TIMING_ZERO,
880 .erase = spi_chip_erase_c7,
881 .write = spi_chip_write_256,
882 .read = spi_chip_read,
883 },
884
885 {
886 .vendor = "Eon",
887 .name = "EN25B16",
888 .bustype = CHIP_BUSTYPE_SPI,
Carl-Daniel Hailfingera0a6ae92009-06-15 12:10:57 +0000889 .manufacture_id = EON_ID_NOPREFIX,
Carl-Daniel Hailfinger80243c92009-06-05 20:53:07 +0000890 .model_id = EN_25B16,
891 .total_size = 2048,
892 .page_size = 256,
893 .tested = TEST_UNTESTED,
894 .probe = probe_spi_rdid,
895 .probe_timing = TIMING_ZERO,
896 .erase = spi_chip_erase_c7,
897 .write = spi_chip_write_256,
898 .read = spi_chip_read,
899 },
900
901 {
902 .vendor = "Eon",
903 .name = "EN25B32",
904 .bustype = CHIP_BUSTYPE_SPI,
Carl-Daniel Hailfingera0a6ae92009-06-15 12:10:57 +0000905 .manufacture_id = EON_ID_NOPREFIX,
Carl-Daniel Hailfinger80243c92009-06-05 20:53:07 +0000906 .model_id = EN_25B32,
907 .total_size = 4096,
908 .page_size = 256,
909 .tested = TEST_UNTESTED,
910 .probe = probe_spi_rdid,
911 .probe_timing = TIMING_ZERO,
912 .erase = spi_chip_erase_c7,
913 .write = spi_chip_write_256,
914 .read = spi_chip_read,
915 },
916
917 {
918 .vendor = "Eon",
919 .name = "EN25B64",
920 .bustype = CHIP_BUSTYPE_SPI,
Carl-Daniel Hailfingera0a6ae92009-06-15 12:10:57 +0000921 .manufacture_id = EON_ID_NOPREFIX,
Carl-Daniel Hailfinger80243c92009-06-05 20:53:07 +0000922 .model_id = EN_25B64,
923 .total_size = 8192,
924 .page_size = 256,
925 .tested = TEST_UNTESTED,
926 .probe = probe_spi_rdid,
927 .probe_timing = TIMING_ZERO,
928 .erase = spi_chip_erase_c7,
929 .write = spi_chip_write_256,
930 .read = spi_chip_read,
931 },
932
933 {
934 .vendor = "Eon",
Carl-Daniel Hailfingera0a6ae92009-06-15 12:10:57 +0000935 .name = "EN25D16",
936 .bustype = CHIP_BUSTYPE_SPI,
937 .manufacture_id = EON_ID_NOPREFIX,
938 .model_id = EN_25D16,
939 .total_size = 2048,
940 .page_size = 256,
941 .tested = TEST_UNTESTED,
942 .probe = probe_spi_rdid,
943 .probe_timing = TIMING_ZERO,
944 .erase = spi_chip_erase_60_c7,
945 .write = spi_chip_write_256,
946 .read = spi_chip_read,
947 },
948
949 {
950 .vendor = "Eon",
951 .name = "EN25F05",
952 .bustype = CHIP_BUSTYPE_SPI,
953 .manufacture_id = EON_ID_NOPREFIX,
954 .model_id = EN_25F05,
955 .total_size = 64,
956 .page_size = 256,
957 .tested = TEST_UNTESTED,
958 .probe = probe_spi_rdid,
959 .probe_timing = TIMING_ZERO,
960 .erase = spi_chip_erase_60_c7,
961 .write = spi_chip_write_256,
962 .read = spi_chip_read,
963 },
964
965 {
966 .vendor = "Eon",
967 .name = "EN25F10",
968 .bustype = CHIP_BUSTYPE_SPI,
969 .manufacture_id = EON_ID_NOPREFIX,
970 .model_id = EN_25F10,
971 .total_size = 128,
972 .page_size = 256,
973 .tested = TEST_UNTESTED,
974 .probe = probe_spi_rdid,
975 .probe_timing = TIMING_ZERO,
976 .erase = spi_chip_erase_60_c7,
977 .write = spi_chip_write_256,
978 .read = spi_chip_read,
979 },
980
981 {
982 .vendor = "Eon",
983 .name = "EN25F20",
984 .bustype = CHIP_BUSTYPE_SPI,
985 .manufacture_id = EON_ID_NOPREFIX,
986 .model_id = EN_25F20,
987 .total_size = 256,
988 .page_size = 256,
989 .tested = TEST_UNTESTED,
990 .probe = probe_spi_rdid,
991 .probe_timing = TIMING_ZERO,
992 .erase = spi_chip_erase_60_c7,
993 .write = spi_chip_write_256,
994 .read = spi_chip_read,
995 },
996
997 {
998 .vendor = "Eon",
Carl-Daniel Hailfinger80243c92009-06-05 20:53:07 +0000999 .name = "EN25F40",
1000 .bustype = CHIP_BUSTYPE_SPI,
Carl-Daniel Hailfingera0a6ae92009-06-15 12:10:57 +00001001 .manufacture_id = EON_ID_NOPREFIX,
Carl-Daniel Hailfinger80243c92009-06-05 20:53:07 +00001002 .model_id = EN_25F40,
1003 .total_size = 512,
1004 .page_size = 256,
Carl-Daniel Hailfingerfaaa2b22009-06-22 10:06:28 +00001005 .tested = TEST_OK_PROBE,
Carl-Daniel Hailfinger80243c92009-06-05 20:53:07 +00001006 .probe = probe_spi_rdid,
1007 .probe_timing = TIMING_ZERO,
1008 .erase = spi_chip_erase_60_c7,
1009 .write = spi_chip_write_256,
1010 .read = spi_chip_read,
1011 },
1012
1013 {
1014 .vendor = "Eon",
1015 .name = "EN25F80",
1016 .bustype = CHIP_BUSTYPE_SPI,
Carl-Daniel Hailfingera0a6ae92009-06-15 12:10:57 +00001017 .manufacture_id = EON_ID_NOPREFIX,
Carl-Daniel Hailfinger80243c92009-06-05 20:53:07 +00001018 .model_id = EN_25F80,
1019 .total_size = 1024,
1020 .page_size = 256,
1021 .tested = TEST_UNTESTED,
1022 .probe = probe_spi_rdid,
1023 .probe_timing = TIMING_ZERO,
1024 .erase = spi_chip_erase_60_c7,
1025 .write = spi_chip_write_256,
1026 .read = spi_chip_read,
1027 },
1028
1029 {
1030 .vendor = "Eon",
1031 .name = "EN25F16",
1032 .bustype = CHIP_BUSTYPE_SPI,
Carl-Daniel Hailfingera0a6ae92009-06-15 12:10:57 +00001033 .manufacture_id = EON_ID_NOPREFIX,
Carl-Daniel Hailfinger80243c92009-06-05 20:53:07 +00001034 .model_id = EN_25F16,
1035 .total_size = 2048,
1036 .page_size = 256,
1037 .tested = TEST_UNTESTED,
1038 .probe = probe_spi_rdid,
1039 .probe_timing = TIMING_ZERO,
1040 .erase = spi_chip_erase_60_c7,
1041 .write = spi_chip_write_256,
1042 .read = spi_chip_read,
1043 },
1044
1045 {
Carl-Daniel Hailfingera0a6ae92009-06-15 12:10:57 +00001046 .vendor = "Eon",
1047 .name = "EN25F32",
1048 .bustype = CHIP_BUSTYPE_SPI,
1049 .manufacture_id = EON_ID_NOPREFIX,
1050 .model_id = EN_25F32,
1051 .total_size = 4096,
1052 .page_size = 256,
1053 .tested = TEST_UNTESTED,
1054 .probe = probe_spi_rdid,
1055 .probe_timing = TIMING_ZERO,
1056 .erase = spi_chip_erase_60_c7,
1057 .write = spi_chip_write_256,
1058 .read = spi_chip_read,
1059 },
1060
1061 {
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001062 .vendor = "EON",
1063 .name = "EN29F002(A)(N)B",
Urja Rannikko161b8852009-06-05 08:47:37 +00001064 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001065 .manufacture_id = EON_ID,
1066 .model_id = EN_29F002B,
1067 .total_size = 256,
1068 .page_size = 256,
1069 .tested = TEST_UNTESTED,
1070 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +00001071 .probe_timing = TIMING_FIXME,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001072 .erase = erase_chip_jedec,
1073 .write = write_en29f002a,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001074 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001075 },
1076
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001077 {
1078 .vendor = "EON",
1079 .name = "EN29F002(A)(N)T",
Urja Rannikko161b8852009-06-05 08:47:37 +00001080 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001081 .manufacture_id = EON_ID,
1082 .model_id = EN_29F002T,
1083 .total_size = 256,
1084 .page_size = 256,
1085 .tested = TEST_OK_PREW,
1086 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +00001087 .probe_timing = TIMING_FIXME,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001088 .erase = erase_chip_jedec,
1089 .write = write_en29f002a,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001090 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001091 },
1092
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001093 {
1094 .vendor = "Fujitsu",
1095 .name = "MBM29F004BC",
Urja Rannikko038a3122009-06-28 19:19:25 +00001096 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001097 .manufacture_id = FUJITSU_ID,
1098 .model_id = MBM29F004BC,
1099 .total_size = 512,
1100 .page_size = 64 * 1024,
1101 .tested = TEST_UNTESTED,
1102 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +00001103 .probe_timing = TIMING_FIXME,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001104 .erase = NULL,
1105 .write = NULL,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001106 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001107 },
1108
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001109 {
1110 .vendor = "Fujitsu",
1111 .name = "MBM29F004TC",
Urja Rannikko038a3122009-06-28 19:19:25 +00001112 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001113 .manufacture_id = FUJITSU_ID,
1114 .model_id = MBM29F004TC,
1115 .total_size = 512,
1116 .page_size = 64 * 1024,
1117 .tested = TEST_UNTESTED,
1118 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +00001119 .probe_timing = TIMING_FIXME,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001120 .erase = NULL,
1121 .write = NULL,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001122 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001123 },
1124
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001125 {
1126 .vendor = "Fujitsu",
1127 .name = "MBM29F400BC",
Urja Rannikko038a3122009-06-28 19:19:25 +00001128 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001129 .manufacture_id = FUJITSU_ID,
1130 .model_id = MBM29F400BC,
1131 .total_size = 512,
1132 .page_size = 64 * 1024,
1133 .tested = TEST_UNTESTED,
1134 .probe = probe_m29f400bt,
Maciej Pijankac6e11112009-06-03 14:46:22 +00001135 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (m29f400bt.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001136 .erase = erase_m29f400bt,
1137 .write = write_coreboot_m29f400bt,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001138 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001139 },
1140
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001141 {
1142 .vendor = "Fujitsu",
1143 .name = "MBM29F400TC",
Urja Rannikko038a3122009-06-28 19:19:25 +00001144 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001145 .manufacture_id = FUJITSU_ID,
1146 .model_id = MBM29F400TC,
1147 .total_size = 512,
1148 .page_size = 64 * 1024,
1149 .tested = TEST_UNTESTED,
1150 .probe = probe_m29f400bt,
Maciej Pijankac6e11112009-06-03 14:46:22 +00001151 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (m29f400bt.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001152 .erase = erase_m29f400bt,
1153 .write = write_coreboot_m29f400bt,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001154 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001155 },
1156
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001157 {
1158 .vendor = "Intel",
Urja Rannikkoebd7b832009-05-29 12:55:31 +00001159 .name = "28F001BX-B",
Urja Rannikko161b8852009-06-05 08:47:37 +00001160 .bustype = CHIP_BUSTYPE_PARALLEL,
Urja Rannikkoebd7b832009-05-29 12:55:31 +00001161 .manufacture_id = INTEL_ID,
1162 .model_id = P28F001BXB,
1163 .total_size = 128,
1164 .page_size = 128 * 1024, /* 8k + 2x4k + 112k */
1165 .tested = TEST_BAD_ERASE|TEST_BAD_WRITE,
1166 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +00001167 .probe_timing = TIMING_FIXME,
Urja Rannikkoebd7b832009-05-29 12:55:31 +00001168 .erase = NULL,
1169 .write = NULL,
1170 .read = read_memmapped,
1171 },
1172
1173 {
1174 .vendor = "Intel",
1175 .name = "28F001BX-T",
Urja Rannikko161b8852009-06-05 08:47:37 +00001176 .bustype = CHIP_BUSTYPE_PARALLEL,
Urja Rannikkoebd7b832009-05-29 12:55:31 +00001177 .manufacture_id = INTEL_ID,
1178 .model_id = P28F001BXT,
1179 .total_size = 128,
1180 .page_size = 128 * 1024, /* 112k + 2x4k + 8k */
1181 .tested = TEST_OK_PR|TEST_BAD_ERASE|TEST_BAD_WRITE,
1182 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +00001183 .probe_timing = TIMING_FIXME,
Urja Rannikkoebd7b832009-05-29 12:55:31 +00001184 .erase = NULL,
1185 .write = NULL,
1186 .read = read_memmapped,
1187 },
1188
1189 {
1190 .vendor = "Intel",
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001191 .name = "82802AB",
Mateusz Murawskie33890d2009-06-12 11:45:10 +00001192 .bustype = CHIP_BUSTYPE_FWH,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001193 .manufacture_id = INTEL_ID,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00001194 .model_id = I_82802AB,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001195 .total_size = 512,
1196 .page_size = 64 * 1024,
1197 .tested = TEST_OK_PREW,
1198 .probe = probe_82802ab,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001199 .probe_timing = TIMING_IGNORED, /* routine does not use probe_timing (82802ab.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001200 .erase = erase_82802ab,
1201 .write = write_82802ab,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001202 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001203 },
1204
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001205 {
1206 .vendor = "Intel",
1207 .name = "82802AC",
Mateusz Murawskie33890d2009-06-12 11:45:10 +00001208 .bustype = CHIP_BUSTYPE_FWH,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001209 .manufacture_id = INTEL_ID,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00001210 .model_id = I_82802AC,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001211 .total_size = 1024,
1212 .page_size = 64 * 1024,
1213 .tested = TEST_OK_PREW,
1214 .probe = probe_82802ab,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001215 .probe_timing = TIMING_IGNORED, /* routine does not use probe_timing (82802ab.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001216 .erase = erase_82802ab,
1217 .write = write_82802ab,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001218 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001219 },
1220
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001221 {
1222 .vendor = "Macronix",
1223 .name = "MX25L512",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001224 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001225 .manufacture_id = MX_ID,
1226 .model_id = MX_25L512,
1227 .total_size = 64,
1228 .page_size = 256,
1229 .tested = TEST_UNTESTED,
1230 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001231 .probe_timing = TIMING_ZERO,
Stephan Guillouxfd315502009-04-20 22:54:13 +00001232 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001233 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001234 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001235 },
1236
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001237 {
1238 .vendor = "Macronix",
1239 .name = "MX25L1005",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001240 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001241 .manufacture_id = MX_ID,
1242 .model_id = MX_25L1005,
1243 .total_size = 128,
1244 .page_size = 256,
1245 .tested = TEST_UNTESTED,
1246 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001247 .probe_timing = TIMING_ZERO,
Stephan Guillouxfd315502009-04-20 22:54:13 +00001248 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001249 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001250 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001251 },
1252
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001253 {
1254 .vendor = "Macronix",
1255 .name = "MX25L2005",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001256 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001257 .manufacture_id = MX_ID,
1258 .model_id = MX_25L2005,
1259 .total_size = 256,
1260 .page_size = 256,
1261 .tested = TEST_UNTESTED,
1262 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001263 .probe_timing = TIMING_ZERO,
Stephan Guillouxfd315502009-04-20 22:54:13 +00001264 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001265 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001266 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001267 },
1268
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001269 {
1270 .vendor = "Macronix",
1271 .name = "MX25L4005",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001272 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001273 .manufacture_id = MX_ID,
1274 .model_id = MX_25L4005,
1275 .total_size = 512,
1276 .page_size = 256,
1277 .tested = TEST_OK_PREW,
1278 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001279 .probe_timing = TIMING_ZERO,
Stephan Guillouxfd315502009-04-20 22:54:13 +00001280 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001281 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001282 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001283 },
1284
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001285 {
1286 .vendor = "Macronix",
1287 .name = "MX25L8005",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001288 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001289 .manufacture_id = MX_ID,
1290 .model_id = MX_25L8005,
1291 .total_size = 1024,
1292 .page_size = 256,
1293 .tested = TEST_OK_PREW,
1294 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001295 .probe_timing = TIMING_ZERO,
Stephan Guillouxfd315502009-04-20 22:54:13 +00001296 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001297 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001298 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001299 },
1300
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001301 {
1302 .vendor = "Macronix",
1303 .name = "MX25L1605",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001304 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001305 .manufacture_id = MX_ID,
1306 .model_id = MX_25L1605,
1307 .total_size = 2048,
1308 .page_size = 256,
Peter Stugeddb94f72009-04-29 23:22:33 +00001309 .tested = TEST_OK_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001310 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001311 .probe_timing = TIMING_ZERO,
Stephan Guillouxe39631c2009-04-19 23:24:26 +00001312 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001313 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001314 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001315 },
1316
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001317 {
1318 .vendor = "Macronix",
Stephan Guillouxf5c70902009-04-19 23:04:00 +00001319 .name = "MX25L1635D",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001320 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guillouxf5c70902009-04-19 23:04:00 +00001321 .manufacture_id = MX_ID,
1322 .model_id = MX_25L1635D,
1323 .total_size = 2048,
1324 .page_size = 256,
1325 .tested = TEST_UNTESTED,
1326 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001327 .probe_timing = TIMING_ZERO,
Stephan Guillouxe39631c2009-04-19 23:24:26 +00001328 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001329 .write = spi_chip_write_256,
Stephan Guillouxf5c70902009-04-19 23:04:00 +00001330 .read = spi_chip_read,
1331 },
Stephan Guillouxfd315502009-04-20 22:54:13 +00001332
Stephan Guillouxf5c70902009-04-19 23:04:00 +00001333 {
1334 .vendor = "Macronix",
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001335 .name = "MX25L3205",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001336 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001337 .manufacture_id = MX_ID,
1338 .model_id = MX_25L3205,
1339 .total_size = 4096,
1340 .page_size = 256,
1341 .tested = TEST_OK_PREW,
1342 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001343 .probe_timing = TIMING_ZERO,
Stephan Guillouxfd315502009-04-20 22:54:13 +00001344 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001345 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001346 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001347 },
1348
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001349 {
1350 .vendor = "Macronix",
Stephan Guilloux70ea9a32009-04-23 22:51:56 +00001351 .name = "MX25L3235D",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001352 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux70ea9a32009-04-23 22:51:56 +00001353 .manufacture_id = MX_ID,
1354 .model_id = MX_25L3235D,
1355 .total_size = 4096,
1356 .page_size = 256,
1357 .tested = TEST_UNTESTED,
1358 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001359 .probe_timing = TIMING_ZERO,
Stephan Guilloux70ea9a32009-04-23 22:51:56 +00001360 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001361 .write = spi_chip_write_256,
Stephan Guilloux70ea9a32009-04-23 22:51:56 +00001362 .read = spi_chip_read,
1363 },
1364
1365 {
1366 .vendor = "Macronix",
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001367 .name = "MX25L6405",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001368 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001369 .manufacture_id = MX_ID,
1370 .model_id = MX_25L6405,
1371 .total_size = 8192,
1372 .page_size = 256,
Carl-Daniel Hailfinger452b3e32009-06-22 11:14:43 +00001373 .tested = TEST_OK_PROBE,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001374 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001375 .probe_timing = TIMING_ZERO,
Stephan Guillouxfd315502009-04-20 22:54:13 +00001376 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001377 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001378 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001379 },
1380
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001381 {
1382 .vendor = "Macronix",
Stephan Guilloux2f132fe2009-04-21 01:47:16 +00001383 .name = "MX25L12805",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001384 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux2f132fe2009-04-21 01:47:16 +00001385 .manufacture_id = MX_ID,
1386 .model_id = MX_25L12805,
1387 .total_size = 16384,
1388 .page_size = 256,
1389 .tested = TEST_UNTESTED,
1390 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001391 .probe_timing = TIMING_ZERO,
Stephan Guilloux2f132fe2009-04-21 01:47:16 +00001392 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001393 .write = spi_chip_write_256,
Stephan Guilloux2f132fe2009-04-21 01:47:16 +00001394 .read = spi_chip_read,
1395 },
1396
1397 {
1398 .vendor = "Macronix",
Mark Panajotovic502a9132009-08-24 01:42:24 +00001399 .name = "MX29F001B",
1400 .bustype = CHIP_BUSTYPE_PARALLEL,
1401 .manufacture_id = MX_ID,
1402 .model_id = MX_29F001B,
1403 .total_size = 128,
1404 .page_size = 32 * 1024,
1405 .tested = TEST_UNTESTED,
1406 .probe = probe_29f002,
1407 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (mx29f002.c) */
1408 .erase = erase_29f002,
1409 .write = write_29f002,
1410 .read = read_memmapped,
1411 },
1412
1413 {
1414 .vendor = "Macronix",
1415 .name = "MX29F001T",
1416 .bustype = CHIP_BUSTYPE_PARALLEL,
1417 .manufacture_id = MX_ID,
1418 .model_id = MX_29F001T,
1419 .total_size = 128,
1420 .page_size = 32 * 1024,
1421 .tested = TEST_OK_PREW,
1422 .probe = probe_29f002,
1423 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (mx29f002.c) */
1424 .erase = erase_29f002,
1425 .write = write_29f002,
1426 .read = read_memmapped,
1427 },
1428
1429 {
1430 .vendor = "Macronix",
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001431 .name = "MX29F002B",
Urja Rannikko038a3122009-06-28 19:19:25 +00001432 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001433 .manufacture_id = MX_ID,
1434 .model_id = MX_29F002B,
1435 .total_size = 256,
1436 .page_size = 64 * 1024,
1437 .tested = TEST_UNTESTED,
1438 .probe = probe_29f002,
Maciej Pijankac6e11112009-06-03 14:46:22 +00001439 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (mx29f002.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001440 .erase = erase_29f002,
1441 .write = write_29f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001442 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001443 },
1444
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001445 {
1446 .vendor = "Macronix",
1447 .name = "MX29F002T",
Urja Rannikko038a3122009-06-28 19:19:25 +00001448 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001449 .manufacture_id = MX_ID,
1450 .model_id = MX_29F002T,
1451 .total_size = 256,
1452 .page_size = 64 * 1024,
Uwe Hermann66c580c2009-05-21 00:29:50 +00001453 .tested = TEST_OK_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001454 .probe = probe_29f002,
Maciej Pijankac6e11112009-06-03 14:46:22 +00001455 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (mx29f002.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001456 .erase = erase_29f002,
1457 .write = write_29f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001458 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001459 },
1460
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001461 {
1462 .vendor = "Macronix",
Carl-Daniel Hailfinger350a0c32009-07-24 13:59:27 +00001463 .name = "MX29LV040",
Urja Rannikko038a3122009-06-28 19:19:25 +00001464 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001465 .manufacture_id = MX_ID,
Carl-Daniel Hailfinger350a0c32009-07-24 13:59:27 +00001466 .model_id = MX_29LV040,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001467 .total_size = 512,
1468 .page_size = 64 * 1024,
1469 .tested = TEST_OK_PR,
1470 .probe = probe_29f002,
Maciej Pijankac6e11112009-06-03 14:46:22 +00001471 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (mx29f002.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001472 .erase = erase_29f002,
1473 .write = write_29f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001474 .read = read_memmapped,
Carl-Daniel Hailfinger7de86392008-12-10 10:32:05 +00001475 },
1476
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001477 {
1478 .vendor = "Numonyx",
1479 .name = "M25PE10",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001480 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001481 .manufacture_id = ST_ID,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00001482 .model_id = ST_M25PE10,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001483 .total_size = 128,
1484 .page_size = 256,
1485 .tested = TEST_UNTESTED,
1486 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001487 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001488 .erase = spi_chip_erase_d8,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001489 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001490 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001491 },
1492
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001493 {
1494 .vendor = "Numonyx",
1495 .name = "M25PE20",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001496 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001497 .manufacture_id = ST_ID,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00001498 .model_id = ST_M25PE20,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001499 .total_size = 256,
1500 .page_size = 256,
1501 .tested = TEST_UNTESTED,
1502 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001503 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001504 .erase = spi_chip_erase_d8,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001505 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001506 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001507 },
1508
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001509 {
1510 .vendor = "Numonyx",
1511 .name = "M25PE40",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001512 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001513 .manufacture_id = ST_ID,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00001514 .model_id = ST_M25PE40,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001515 .total_size = 256,
1516 .page_size = 256,
1517 .tested = TEST_UNTESTED,
1518 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001519 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001520 .erase = spi_chip_erase_d8,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001521 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001522 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001523 },
1524
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001525 {
1526 .vendor = "Numonyx",
1527 .name = "M25PE80",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001528 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001529 .manufacture_id = ST_ID,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00001530 .model_id = ST_M25PE80,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001531 .total_size = 1024,
1532 .page_size = 256,
1533 .tested = TEST_OK_PREW,
1534 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001535 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001536 .erase = spi_chip_erase_d8,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001537 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001538 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001539 },
1540
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001541 {
1542 .vendor = "Numonyx",
1543 .name = "M25PE16",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001544 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001545 .manufacture_id = ST_ID,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00001546 .model_id = ST_M25PE16,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001547 .total_size = 2048,
1548 .page_size = 256,
1549 .tested = TEST_UNTESTED,
1550 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001551 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001552 .erase = spi_chip_erase_d8,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001553 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001554 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001555 },
1556
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001557 {
1558 .vendor = "PMC",
1559 .name = "Pm25LV010",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001560 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001561 .manufacture_id = PMC_ID,
1562 .model_id = PMC_25LV010,
1563 .total_size = 128,
1564 .page_size = 256,
1565 .tested = TEST_UNTESTED,
1566 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001567 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001568 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001569 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001570 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001571 },
1572
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001573 {
1574 .vendor = "PMC",
1575 .name = "Pm25LV016B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001576 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001577 .manufacture_id = PMC_ID,
1578 .model_id = PMC_25LV016B,
1579 .total_size = 2048,
1580 .page_size = 256,
1581 .tested = TEST_UNTESTED,
1582 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001583 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001584 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001585 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001586 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001587 },
1588
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001589 {
1590 .vendor = "PMC",
1591 .name = "Pm25LV020",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001592 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001593 .manufacture_id = PMC_ID,
1594 .model_id = PMC_25LV020,
1595 .total_size = 256,
1596 .page_size = 256,
1597 .tested = TEST_UNTESTED,
1598 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001599 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001600 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001601 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001602 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001603 },
1604
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001605 {
1606 .vendor = "PMC",
1607 .name = "Pm25LV040",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001608 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001609 .manufacture_id = PMC_ID,
1610 .model_id = PMC_25LV040,
1611 .total_size = 512,
1612 .page_size = 256,
1613 .tested = TEST_UNTESTED,
1614 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001615 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001616 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001617 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001618 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001619 },
1620
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001621 {
1622 .vendor = "PMC",
1623 .name = "Pm25LV080B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001624 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001625 .manufacture_id = PMC_ID,
1626 .model_id = PMC_25LV080B,
1627 .total_size = 1024,
1628 .page_size = 256,
1629 .tested = TEST_UNTESTED,
1630 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001631 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001632 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001633 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001634 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001635 },
1636
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001637 {
1638 .vendor = "PMC",
1639 .name = "Pm25LV512",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001640 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001641 .manufacture_id = PMC_ID,
1642 .model_id = PMC_25LV512,
1643 .total_size = 64,
1644 .page_size = 256,
1645 .tested = TEST_UNTESTED,
1646 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001647 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001648 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001649 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001650 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001651 },
1652
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001653 {
1654 .vendor = "PMC",
Uwe Hermannf983d9f2009-06-14 21:53:26 +00001655 .name = "Pm29F0002T",
1656 .bustype = CHIP_BUSTYPE_PARALLEL,
1657 .manufacture_id = PMC_ID_NOPREFIX,
1658 .model_id = PMC_29F002T,
1659 .total_size = 256,
1660 .page_size = 8192,
1661 .tested = TEST_OK_PREW,
1662 .probe = probe_29f040b,
1663 .probe_timing = TIMING_FIXME,
1664 .erase = erase_29f040b,
1665 .write = write_pm29f002,
1666 .read = read_memmapped,
1667 },
1668
1669 {
1670 .vendor = "PMC",
1671 .name = "Pm29F0002B",
1672 .bustype = CHIP_BUSTYPE_PARALLEL,
1673 .manufacture_id = PMC_ID_NOPREFIX,
1674 .model_id = PMC_29F002B,
1675 .total_size = 256,
1676 .page_size = 8192,
1677 .tested = TEST_UNTESTED,
1678 .probe = probe_29f040b,
1679 .probe_timing = TIMING_FIXME,
1680 .erase = erase_29f040b,
1681 .write = write_pm29f002,
1682 .read = read_memmapped,
1683 },
1684
1685 {
1686 .vendor = "PMC",
Rudolf Marek50fdf3b2009-05-17 17:02:07 +00001687 .name = "Pm39LV010",
Urja Rannikko038a3122009-06-28 19:19:25 +00001688 .bustype = CHIP_BUSTYPE_PARALLEL,
Rudolf Marek50fdf3b2009-05-17 17:02:07 +00001689 .manufacture_id = PMC_ID_NOPREFIX,
1690 .model_id = PMC_39F010,
1691 .total_size = 128,
1692 .page_size = 4096,
1693 .tested = TEST_OK_PREW,
1694 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +00001695 .probe_timing = TIMING_FIXME,
Rudolf Marek50fdf3b2009-05-17 17:02:07 +00001696 .erase = erase_chip_jedec,
1697 .write = write_49f002,
1698 .read = read_memmapped,
1699 },
1700
1701 {
1702 .vendor = "PMC",
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001703 .name = "Pm49FL002",
Urja Rannikko038a3122009-06-28 19:19:25 +00001704 .bustype = CHIP_BUSTYPE_LPC|CHIP_BUSTYPE_FWH, /* A/A Mux*/
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001705 .manufacture_id = PMC_ID_NOPREFIX,
1706 .model_id = PMC_49FL002,
1707 .total_size = 256,
1708 .page_size = 16 * 1024,
1709 .tested = TEST_OK_PREW,
1710 .probe = probe_49fl00x,
Maciej Pijankac6e11112009-06-03 14:46:22 +00001711 .probe_timing = TIMING_FIXME, /* routine is wrapper to probe_jedec (pm49fl00x.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001712 .erase = erase_49fl00x,
1713 .write = write_49fl00x,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001714 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001715 },
1716
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001717 {
1718 .vendor = "PMC",
1719 .name = "Pm49FL004",
Urja Rannikko038a3122009-06-28 19:19:25 +00001720 .bustype = CHIP_BUSTYPE_LPC|CHIP_BUSTYPE_FWH, /* A/A Mux*/
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001721 .manufacture_id = PMC_ID_NOPREFIX,
1722 .model_id = PMC_49FL004,
1723 .total_size = 512,
1724 .page_size = 64 * 1024,
1725 .tested = TEST_OK_PREW,
1726 .probe = probe_49fl00x,
Maciej Pijankac6e11112009-06-03 14:46:22 +00001727 .probe_timing = TIMING_FIXME, /* routine is wrapper to probe_jedec (pm49fl00x.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001728 .erase = erase_49fl00x,
1729 .write = write_49fl00x,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001730 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001731 },
1732
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001733 {
1734 .vendor = "Sharp",
1735 .name = "LHF00L04",
Urja Rannikko038a3122009-06-28 19:19:25 +00001736 .bustype = CHIP_BUSTYPE_FWH, /* A/A Mux */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001737 .manufacture_id = SHARP_ID,
1738 .model_id = SHARP_LHF00L04,
1739 .total_size = 1024,
1740 .page_size = 64 * 1024,
1741 .tested = TEST_UNTESTED,
1742 .probe = probe_lhf00l04,
Maciej Pijankac6e11112009-06-03 14:46:22 +00001743 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (sharplhf00l04.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001744 .erase = erase_lhf00l04,
1745 .write = write_lhf00l04,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001746 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001747 },
1748
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001749 {
1750 .vendor = "Spansion",
1751 .name = "S25FL016A",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001752 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001753 .manufacture_id = SPANSION_ID,
1754 .model_id = SPANSION_S25FL016A,
1755 .total_size = 2048,
1756 .page_size = 256,
1757 .tested = TEST_OK_PREW,
1758 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001759 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001760 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001761 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001762 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001763 },
1764
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001765 {
1766 .vendor = "SST",
1767 .name = "SST25VF016B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001768 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001769 .manufacture_id = SST_ID,
1770 .model_id = SST_25VF016B,
1771 .total_size = 2048,
1772 .page_size = 256,
1773 .tested = TEST_OK_PREW,
1774 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001775 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001776 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger93bb3752009-05-13 22:19:12 +00001777 .write = spi_chip_write_1,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001778 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001779 },
1780
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001781 {
1782 .vendor = "SST",
1783 .name = "SST25VF032B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001784 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001785 .manufacture_id = SST_ID,
1786 .model_id = SST_25VF032B,
1787 .total_size = 4096,
1788 .page_size = 256,
1789 .tested = TEST_OK_PREW,
1790 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001791 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001792 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger93bb3752009-05-13 22:19:12 +00001793 .write = spi_chip_write_1,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001794 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001795 },
1796
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001797 {
1798 .vendor = "SST",
1799 .name = "SST25VF040B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001800 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001801 .manufacture_id = SST_ID,
1802 .model_id = SST_25VF040B,
1803 .total_size = 512,
1804 .page_size = 256,
1805 .tested = TEST_UNTESTED,
1806 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001807 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001808 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger93bb3752009-05-13 22:19:12 +00001809 .write = spi_chip_write_1,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001810 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001811 },
1812
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001813 {
1814 .vendor = "SST",
Zheng Bao0677dff2009-02-25 08:07:33 +00001815 .name = "SST25VF040.REMS",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001816 .bustype = CHIP_BUSTYPE_SPI,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00001817 .manufacture_id = SST_ID,
1818 .model_id = SST_25VF040_REMS,
Zheng Bao0677dff2009-02-25 08:07:33 +00001819 .total_size = 512,
1820 .page_size = 64*1024,
1821 .tested = TEST_OK_PR,
1822 .probe = probe_spi_rems,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001823 .probe_timing = TIMING_ZERO,
Zheng Bao0677dff2009-02-25 08:07:33 +00001824 .erase = spi_chip_erase_60,
Carl-Daniel Hailfinger93bb3752009-05-13 22:19:12 +00001825 .write = spi_chip_write_1,
Zheng Bao0677dff2009-02-25 08:07:33 +00001826 .read = spi_chip_read,
1827 },
1828
1829 {
1830 .vendor = "SST",
Peter Stugefd9217d2009-01-26 03:37:40 +00001831 .name = "SST25VF040B.REMS",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001832 .bustype = CHIP_BUSTYPE_SPI,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00001833 .manufacture_id = SST_ID,
1834 .model_id = SST_25VF040B_REMS,
Peter Stugefd9217d2009-01-26 03:37:40 +00001835 .total_size = 512,
1836 .page_size = 64*1024,
1837 .tested = TEST_OK_PR,
1838 .probe = probe_spi_rems,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001839 .probe_timing = TIMING_ZERO,
Peter Stugefd9217d2009-01-26 03:37:40 +00001840 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger93bb3752009-05-13 22:19:12 +00001841 .write = spi_chip_write_1,
Peter Stugefd9217d2009-01-26 03:37:40 +00001842 .read = spi_chip_read,
1843 },
1844
1845 {
1846 .vendor = "SST",
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001847 .name = "SST25VF080B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001848 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001849 .manufacture_id = SST_ID,
1850 .model_id = SST_25VF080B,
1851 .total_size = 1024,
1852 .page_size = 256,
Peter Stugee612a112009-05-05 16:34:53 +00001853 .tested = TEST_OK_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001854 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001855 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001856 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001857 .write = spi_chip_write_1,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001858 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001859 },
1860
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001861 {
1862 .vendor = "SST",
1863 .name = "SST28SF040A",
Urja Rannikko038a3122009-06-28 19:19:25 +00001864 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001865 .manufacture_id = SST_ID,
1866 .model_id = SST_28SF040,
1867 .total_size = 512,
1868 .page_size = 256,
1869 .tested = TEST_UNTESTED,
1870 .probe = probe_28sf040,
Maciej Pijankac6e11112009-06-03 14:46:22 +00001871 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (sst28sf040.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001872 .erase = erase_28sf040,
1873 .write = write_28sf040,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001874 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001875 },
1876
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001877 {
1878 .vendor = "SST",
1879 .name = "SST29EE010",
Urja Rannikko038a3122009-06-28 19:19:25 +00001880 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001881 .manufacture_id = SST_ID,
1882 .model_id = SST_29EE010,
1883 .total_size = 128,
1884 .page_size = 128,
1885 .tested = TEST_OK_PREW,
1886 .probe = probe_jedec,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00001887 .probe_timing = 10,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001888 .erase = erase_chip_jedec,
1889 .write = write_jedec,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001890 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001891 },
1892
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001893 {
1894 .vendor = "SST",
1895 .name = "SST29LE010",
Urja Rannikko038a3122009-06-28 19:19:25 +00001896 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001897 .manufacture_id = SST_ID,
1898 .model_id = SST_29LE010,
1899 .total_size = 128,
1900 .page_size = 128,
1901 .tested = TEST_UNTESTED,
1902 .probe = probe_jedec,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00001903 .probe_timing = 10,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001904 .erase = erase_chip_jedec,
1905 .write = write_jedec,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001906 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001907 },
1908
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001909 {
1910 .vendor = "SST",
1911 .name = "SST29EE020A",
Urja Rannikko038a3122009-06-28 19:19:25 +00001912 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001913 .manufacture_id = SST_ID,
1914 .model_id = SST_29EE020A,
1915 .total_size = 256,
1916 .page_size = 128,
Peter Stugeb27d0a22009-02-22 21:07:28 +00001917 .tested = TEST_OK_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001918 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +00001919 .probe_timing = TIMING_FIXME,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001920 .erase = erase_chip_jedec,
1921 .write = write_jedec,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001922 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001923 },
1924
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001925 {
1926 .vendor = "SST",
1927 .name = "SST29LE020",
Urja Rannikko038a3122009-06-28 19:19:25 +00001928 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001929 .manufacture_id = SST_ID,
1930 .model_id = SST_29LE020,
1931 .total_size = 256,
1932 .page_size = 128,
1933 .tested = TEST_UNTESTED,
1934 .probe = probe_jedec,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00001935 .probe_timing = 10,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001936 .erase = erase_chip_jedec,
1937 .write = write_jedec,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001938 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001939 },
1940
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001941 {
1942 .vendor = "SST",
1943 .name = "SST39SF010A",
Urja Rannikko038a3122009-06-28 19:19:25 +00001944 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001945 .manufacture_id = SST_ID,
1946 .model_id = SST_39SF010,
1947 .total_size = 128,
1948 .page_size = 4096,
1949 .tested = TEST_OK_PREW,
1950 .probe = probe_jedec,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00001951 .probe_timing = 1, /* 150 ns */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001952 .erase = erase_chip_jedec,
Uwe Hermann24f9fbe2009-05-12 14:06:04 +00001953 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001954 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001955 },
1956
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001957 {
1958 .vendor = "SST",
1959 .name = "SST39SF020A",
Urja Rannikko038a3122009-06-28 19:19:25 +00001960 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001961 .manufacture_id = SST_ID,
1962 .model_id = SST_39SF020,
1963 .total_size = 256,
1964 .page_size = 4096,
1965 .tested = TEST_OK_PREW,
1966 .probe = probe_jedec,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00001967 .probe_timing = 1, /* 150 ns */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001968 .erase = erase_chip_jedec,
Uwe Hermann24f9fbe2009-05-12 14:06:04 +00001969 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001970 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001971 },
1972
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001973 {
1974 .vendor = "SST",
1975 .name = "SST39SF040",
Urja Rannikko038a3122009-06-28 19:19:25 +00001976 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001977 .manufacture_id = SST_ID,
1978 .model_id = SST_39SF040,
1979 .total_size = 512,
1980 .page_size = 4096,
1981 .tested = TEST_OK_PREW,
1982 .probe = probe_jedec,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00001983 .probe_timing = 1, /* 150 ns */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001984 .erase = erase_chip_jedec,
Uwe Hermann24f9fbe2009-05-12 14:06:04 +00001985 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001986 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001987 },
1988
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001989 {
1990 .vendor = "SST",
1991 .name = "SST39VF512",
Urja Rannikko038a3122009-06-28 19:19:25 +00001992 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001993 .manufacture_id = SST_ID,
1994 .model_id = SST_39VF512,
1995 .total_size = 64,
1996 .page_size = 4096,
Rudolf Mareke186da62009-05-17 18:24:24 +00001997 .tested = TEST_OK_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001998 .probe = probe_jedec,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00001999 .probe_timing = 1, /* 150 ns*/
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002000 .erase = erase_chip_jedec,
Uwe Hermann24f9fbe2009-05-12 14:06:04 +00002001 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002002 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002003 },
2004
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002005 {
2006 .vendor = "SST",
2007 .name = "SST39VF010",
Urja Rannikko038a3122009-06-28 19:19:25 +00002008 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002009 .manufacture_id = SST_ID,
2010 .model_id = SST_39VF010,
2011 .total_size = 128,
2012 .page_size = 4096,
Rudolf Marek50fdf3b2009-05-17 17:02:07 +00002013 .tested = TEST_OK_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002014 .probe = probe_jedec,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00002015 .probe_timing = 1, /* 150 ns */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002016 .erase = erase_chip_jedec,
Uwe Hermann24f9fbe2009-05-12 14:06:04 +00002017 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002018 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002019 },
2020
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002021 {
2022 .vendor = "SST",
2023 .name = "SST39VF020",
Urja Rannikko038a3122009-06-28 19:19:25 +00002024 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002025 .manufacture_id = SST_ID,
2026 .model_id = SST_39VF020,
2027 .total_size = 256,
2028 .page_size = 4096,
2029 .tested = TEST_OK_PREW,
2030 .probe = probe_jedec,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00002031 .probe_timing = 1, /* 150 ns */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002032 .erase = erase_chip_jedec,
Uwe Hermann24f9fbe2009-05-12 14:06:04 +00002033 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002034 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002035 },
2036
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002037 {
2038 .vendor = "SST",
2039 .name = "SST39VF040",
Urja Rannikko038a3122009-06-28 19:19:25 +00002040 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002041 .manufacture_id = SST_ID,
2042 .model_id = SST_39VF040,
2043 .total_size = 512,
2044 .page_size = 4096,
2045 .tested = TEST_OK_PROBE,
2046 .probe = probe_jedec,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00002047 .probe_timing = 1, /* 150 ns */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002048 .erase = erase_chip_jedec,
Uwe Hermann24f9fbe2009-05-12 14:06:04 +00002049 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002050 .read = read_memmapped,
Carl-Daniel Hailfinger90eff152008-12-08 23:51:45 +00002051 },
FENG yu ningff692fb2008-12-08 18:15:10 +00002052
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002053 {
2054 .vendor = "SST",
Peter Stuge8440cc02009-01-25 23:55:12 +00002055 .name = "SST39VF080",
Urja Rannikko038a3122009-06-28 19:19:25 +00002056 .bustype = CHIP_BUSTYPE_PARALLEL,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00002057 .manufacture_id = SST_ID,
2058 .model_id = SST_39VF080,
Peter Stuge8440cc02009-01-25 23:55:12 +00002059 .total_size = 1024,
2060 .page_size = 4096,
2061 .tested = TEST_UNTESTED,
2062 .probe = probe_jedec,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00002063 .probe_timing = 1, /* 150 ns */
Peter Stuge8440cc02009-01-25 23:55:12 +00002064 .erase = erase_chip_jedec,
Uwe Hermann24f9fbe2009-05-12 14:06:04 +00002065 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002066 .read = read_memmapped,
Peter Stuge8440cc02009-01-25 23:55:12 +00002067 },
2068
2069 {
2070 .vendor = "SST",
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002071 .name = "SST49LF002A/B",
Urja Rannikko038a3122009-06-28 19:19:25 +00002072 .bustype = CHIP_BUSTYPE_FWH, /* A/A Mux */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002073 .manufacture_id = SST_ID,
2074 .model_id = SST_49LF002A,
2075 .total_size = 256,
2076 .page_size = 16 * 1024,
2077 .tested = TEST_OK_PREW,
2078 .probe = probe_sst_fwhub,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002079 .probe_timing = TIMING_FIXME, /* routine is wrapper to probe_jedec (sst_fwhub.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002080 .erase = erase_sst_fwhub,
2081 .write = write_sst_fwhub,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002082 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002083 },
2084
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002085 {
2086 .vendor = "SST",
2087 .name = "SST49LF003A/B",
Urja Rannikko038a3122009-06-28 19:19:25 +00002088 .bustype = CHIP_BUSTYPE_FWH, /* A/A Mux */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002089 .manufacture_id = SST_ID,
2090 .model_id = SST_49LF003A,
2091 .total_size = 384,
2092 .page_size = 64 * 1024,
Carl-Daniel Hailfingerb07eac92009-06-22 11:07:44 +00002093 .tested = TEST_OK_PROBE,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002094 .probe = probe_sst_fwhub,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002095 .probe_timing = TIMING_FIXME, /* routine is wrapper to probe_jedec (sst_fwhub.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002096 .erase = erase_sst_fwhub,
2097 .write = write_sst_fwhub,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002098 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002099 },
2100
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002101 {
2102 .vendor = "SST",
2103 .name = "SST49LF004A/B",
Urja Rannikko038a3122009-06-28 19:19:25 +00002104 .bustype = CHIP_BUSTYPE_FWH, /* A/A Mux */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002105 .manufacture_id = SST_ID,
2106 .model_id = SST_49LF004A,
2107 .total_size = 512,
2108 .page_size = 64 * 1024,
2109 .tested = TEST_OK_PREW,
2110 .probe = probe_sst_fwhub,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002111 .probe_timing = TIMING_FIXME, /* routine is wrapper to probe_jedec (sst_fwhub.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002112 .erase = erase_sst_fwhub,
2113 .write = write_sst_fwhub,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002114 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002115 },
2116
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002117 {
2118 .vendor = "SST",
2119 .name = "SST49LF004C",
Urja Rannikko038a3122009-06-28 19:19:25 +00002120 .bustype = CHIP_BUSTYPE_FWH,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002121 .manufacture_id = SST_ID,
2122 .model_id = SST_49LF004C,
2123 .total_size = 512,
2124 .page_size = 4 * 1024,
2125 .tested = TEST_UNTESTED,
2126 .probe = probe_49lfxxxc,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002127 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (sst49lfxxxc.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002128 .erase = erase_49lfxxxc,
2129 .write = write_49lfxxxc,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002130 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002131 },
2132
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002133 {
2134 .vendor = "SST",
2135 .name = "SST49LF008A",
Urja Rannikko038a3122009-06-28 19:19:25 +00002136 .bustype = CHIP_BUSTYPE_FWH, /* A/A Mux */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002137 .manufacture_id = SST_ID,
2138 .model_id = SST_49LF008A,
2139 .total_size = 1024,
2140 .page_size = 64 * 1024,
2141 .tested = TEST_OK_PREW,
2142 .probe = probe_sst_fwhub,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002143 .probe_timing = TIMING_FIXME, /* routine is wrapper to probe_jedec (sst_fwhub.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002144 .erase = erase_sst_fwhub,
2145 .write = write_sst_fwhub,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002146 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002147 },
2148
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002149 {
2150 .vendor = "SST",
2151 .name = "SST49LF008C",
Urja Rannikko038a3122009-06-28 19:19:25 +00002152 .bustype = CHIP_BUSTYPE_FWH,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002153 .manufacture_id = SST_ID,
2154 .model_id = SST_49LF008C,
2155 .total_size = 1024,
2156 .page_size = 4 * 1024,
2157 .tested = TEST_UNTESTED,
2158 .probe = probe_49lfxxxc,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002159 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (sst49lfxxxc.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002160 .erase = erase_49lfxxxc,
2161 .write = write_49lfxxxc,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002162 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002163 },
2164
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002165 {
2166 .vendor = "SST",
2167 .name = "SST49LF016C",
Urja Rannikko038a3122009-06-28 19:19:25 +00002168 .bustype = CHIP_BUSTYPE_FWH,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002169 .manufacture_id = SST_ID,
2170 .model_id = SST_49LF016C,
2171 .total_size = 2048,
2172 .page_size = 4 * 1024,
2173 .tested = TEST_OK_PREW,
2174 .probe = probe_49lfxxxc,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002175 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (sst49lfxxxc.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002176 .erase = erase_49lfxxxc,
2177 .write = write_49lfxxxc,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002178 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002179 },
2180
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002181 {
2182 .vendor = "SST",
2183 .name = "SST49LF020",
Mateusz Murawskie33890d2009-06-12 11:45:10 +00002184 .bustype = CHIP_BUSTYPE_LPC,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002185 .manufacture_id = SST_ID,
2186 .model_id = SST_49LF020,
2187 .total_size = 256,
2188 .page_size = 16 * 1024,
2189 .tested = TEST_OK_PR,
2190 .probe = probe_jedec,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00002191 .probe_timing = 1, /* 150 ns */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002192 .erase = erase_49lf040,
2193 .write = write_49lf040,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002194 .read = read_memmapped,
Sven Schnellec208dfb2009-01-07 12:35:09 +00002195 },
2196
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002197 {
2198 .vendor = "SST",
2199 .name = "SST49LF020A",
Mateusz Murawskie33890d2009-06-12 11:45:10 +00002200 .bustype = CHIP_BUSTYPE_LPC,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002201 .manufacture_id = SST_ID,
2202 .model_id = SST_49LF020A,
2203 .total_size = 256,
Carl-Daniel Hailfingerda654322009-07-23 01:44:38 +00002204 .page_size = 4 * 1024,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002205 .tested = TEST_UNTESTED,
2206 .probe = probe_jedec,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00002207 .probe_timing = 1, /* 150 ns */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002208 .erase = erase_49lf040,
2209 .write = write_49lf040,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002210 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002211 },
2212
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002213 {
2214 .vendor = "SST",
2215 .name = "SST49LF040",
Mateusz Murawskie33890d2009-06-12 11:45:10 +00002216 .bustype = CHIP_BUSTYPE_LPC,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002217 .manufacture_id = SST_ID,
2218 .model_id = SST_49LF040,
2219 .total_size = 512,
2220 .page_size = 4096,
2221 .tested = TEST_OK_PREW,
2222 .probe = probe_jedec,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00002223 .probe_timing = 1, /* 150 ns */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002224 .erase = erase_49lf040,
2225 .write = write_49lf040,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002226 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002227 },
2228
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002229 {
2230 .vendor = "SST",
2231 .name = "SST49LF040B",
Urja Rannikko038a3122009-06-28 19:19:25 +00002232 .bustype = CHIP_BUSTYPE_LPC, /* A/A Mux */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002233 .manufacture_id = SST_ID,
2234 .model_id = SST_49LF040B,
2235 .total_size = 512,
2236 .page_size = 64 * 1024,
2237 .tested = TEST_OK_PREW,
2238 .probe = probe_sst_fwhub,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002239 .probe_timing = TIMING_FIXME, /* routine is wrapper to probe_jedec (sst_fwhub.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002240 .erase = erase_sst_fwhub,
2241 .write = write_sst_fwhub,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002242 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002243 },
2244
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002245 {
2246 .vendor = "SST",
2247 .name = "SST49LF080A",
Urja Rannikko038a3122009-06-28 19:19:25 +00002248 .bustype = CHIP_BUSTYPE_LPC, /* A/A Mux */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002249 .manufacture_id = SST_ID,
Urja Rannikko038a3122009-06-28 19:19:25 +00002250 .model_id = SST_49LF080A,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002251 .total_size = 1024,
2252 .page_size = 4096,
2253 .tested = TEST_OK_PREW,
2254 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002255 .probe_timing = TIMING_FIXME,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002256 .erase = erase_49lf040,
2257 .write = write_49lf040,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002258 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002259 },
2260
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002261 {
2262 .vendor = "SST",
2263 .name = "SST49LF160C",
Urja Rannikko038a3122009-06-28 19:19:25 +00002264 .bustype = CHIP_BUSTYPE_LPC,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002265 .manufacture_id = SST_ID,
2266 .model_id = SST_49LF160C,
2267 .total_size = 2048,
2268 .page_size = 4 * 1024,
2269 .tested = TEST_OK_PREW,
2270 .probe = probe_49lfxxxc,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002271 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (sst49lfxxxc.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002272 .erase = erase_49lfxxxc,
2273 .write = write_49lfxxxc,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002274 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002275 },
2276
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002277 {
2278 .vendor = "ST",
2279 .name = "M25P05-A",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002280 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002281 .manufacture_id = ST_ID,
2282 .model_id = ST_M25P05A,
2283 .total_size = 64,
2284 .page_size = 256,
2285 .tested = TEST_UNTESTED,
2286 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00002287 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002288 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00002289 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002290 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00002291 },
2292
Carl-Daniel Hailfinger32961be2009-07-23 01:40:20 +00002293 /* The ST M25P05 is a bit of a problem. It has the same ID as the
2294 * ST M25P05-A in RES mode, but supports only 128 byte writes instead
2295 * of 256 byte writes. We rely heavily on the fact that probe_spi_res
2296 * only is successful if RDID does not work.
2297 */
2298 {
2299 .vendor = "ST",
2300 .name = "M25P05.RES",
2301 .bustype = CHIP_BUSTYPE_SPI,
2302 .manufacture_id = ST_ID,
2303 .model_id = ST_M25P05_RES,
2304 .total_size = 64,
2305 .page_size = 256,
2306 .tested = TEST_UNTESTED,
2307 .probe = probe_spi_res,
2308 .probe_timing = TIMING_ZERO,
2309 .erase = spi_chip_erase_c7,
2310 .write = spi_chip_write_1, /* 128 */
2311 .read = spi_chip_read,
2312 },
2313
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002314 {
2315 .vendor = "ST",
2316 .name = "M25P10-A",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002317 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002318 .manufacture_id = ST_ID,
2319 .model_id = ST_M25P10A,
2320 .total_size = 128,
2321 .page_size = 256,
2322 .tested = TEST_UNTESTED,
2323 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00002324 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002325 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00002326 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002327 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00002328 },
2329
Carl-Daniel Hailfinger32961be2009-07-23 01:40:20 +00002330 /* The ST M25P10 has the same problem as the M25P05. */
2331 {
2332 .vendor = "ST",
2333 .name = "M25P10.RES",
2334 .bustype = CHIP_BUSTYPE_SPI,
2335 .manufacture_id = ST_ID,
2336 .model_id = ST_M25P10_RES,
2337 .total_size = 128,
2338 .page_size = 256,
2339 .tested = TEST_UNTESTED,
2340 .probe = probe_spi_res,
2341 .probe_timing = TIMING_ZERO,
2342 .erase = spi_chip_erase_c7,
2343 .write = spi_chip_write_1, /* 128 */
2344 .read = spi_chip_read,
2345 },
2346
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002347 {
2348 .vendor = "ST",
2349 .name = "M25P20",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002350 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002351 .manufacture_id = ST_ID,
2352 .model_id = ST_M25P20,
2353 .total_size = 256,
2354 .page_size = 256,
2355 .tested = TEST_UNTESTED,
2356 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00002357 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002358 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00002359 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002360 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00002361 },
2362
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002363 {
2364 .vendor = "ST",
2365 .name = "M25P40",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002366 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002367 .manufacture_id = ST_ID,
2368 .model_id = ST_M25P40,
2369 .total_size = 512,
2370 .page_size = 256,
Uwe Hermann04d5dc42009-07-03 17:12:05 +00002371 .tested = TEST_OK_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002372 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00002373 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002374 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00002375 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002376 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00002377 },
2378
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002379 {
2380 .vendor = "ST",
2381 .name = "M25P40-old",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002382 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002383 .manufacture_id = ST_ID,
2384 .model_id = ST_M25P40_RES,
2385 .total_size = 512,
2386 .page_size = 256,
2387 .tested = TEST_UNTESTED,
2388 .probe = probe_spi_res,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00002389 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002390 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00002391 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002392 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00002393 },
2394
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002395 {
2396 .vendor = "ST",
2397 .name = "M25P80",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002398 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002399 .manufacture_id = ST_ID,
2400 .model_id = ST_M25P80,
2401 .total_size = 1024,
2402 .page_size = 256,
Carl-Daniel Hailfinger5190ec12009-06-22 10:09:07 +00002403 .tested = TEST_OK_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002404 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00002405 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002406 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00002407 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002408 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00002409 },
2410
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002411 {
2412 .vendor = "ST",
2413 .name = "M25P16",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002414 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002415 .manufacture_id = ST_ID,
2416 .model_id = ST_M25P16,
2417 .total_size = 2048,
2418 .page_size = 256,
2419 .tested = TEST_OK_PREW,
2420 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00002421 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002422 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00002423 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002424 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00002425 },
2426
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002427 {
2428 .vendor = "ST",
2429 .name = "M25P32",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002430 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002431 .manufacture_id = ST_ID,
2432 .model_id = ST_M25P32,
2433 .total_size = 4096,
2434 .page_size = 256,
2435 .tested = TEST_OK_PREW,
2436 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00002437 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002438 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00002439 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002440 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00002441 },
2442
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002443 {
2444 .vendor = "ST",
2445 .name = "M25P64",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002446 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002447 .manufacture_id = ST_ID,
2448 .model_id = ST_M25P64,
2449 .total_size = 8192,
2450 .page_size = 256,
2451 .tested = TEST_UNTESTED,
2452 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00002453 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002454 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00002455 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002456 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00002457 },
2458
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002459 {
2460 .vendor = "ST",
2461 .name = "M25P128",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002462 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002463 .manufacture_id = ST_ID,
2464 .model_id = ST_M25P128,
2465 .total_size = 16384,
2466 .page_size = 256,
2467 .tested = TEST_UNTESTED,
2468 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00002469 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002470 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00002471 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002472 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00002473 },
2474
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002475 {
2476 .vendor = "ST",
2477 .name = "M29F002B",
Urja Rannikko038a3122009-06-28 19:19:25 +00002478 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002479 .manufacture_id = ST_ID,
2480 .model_id = ST_M29F002B,
2481 .total_size = 256,
2482 .page_size = 64 * 1024,
2483 .tested = TEST_UNTESTED,
2484 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002485 .probe_timing = TIMING_FIXME,
Peter Stugeaf8ffac2009-01-26 06:42:02 +00002486 .erase = erase_m29f002,
2487 .write = write_m29f002b,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002488 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002489 },
2490
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002491 {
2492 .vendor = "ST",
2493 .name = "M29F002T/NT",
Urja Rannikko038a3122009-06-28 19:19:25 +00002494 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002495 .manufacture_id = ST_ID,
2496 .model_id = ST_M29F002T,
2497 .total_size = 256,
2498 .page_size = 64 * 1024,
Peter Stugeaf8ffac2009-01-26 06:42:02 +00002499 .tested = TEST_OK_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002500 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002501 .probe_timing = TIMING_FIXME,
Peter Stugeaf8ffac2009-01-26 06:42:02 +00002502 .erase = erase_m29f002,
2503 .write = write_m29f002t,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002504 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002505 },
2506
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002507 {
2508 .vendor = "ST",
2509 .name = "M29F040B",
Urja Rannikko038a3122009-06-28 19:19:25 +00002510 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002511 .manufacture_id = ST_ID,
2512 .model_id = ST_M29F040B,
2513 .total_size = 512,
2514 .page_size = 64 * 1024,
2515 .tested = TEST_OK_PREW,
2516 .probe = probe_29f040b,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002517 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (am29f040b.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002518 .erase = erase_29f040b,
2519 .write = write_29f040b,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002520 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002521 },
2522
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002523 {
2524 .vendor = "ST",
2525 .name = "M29F400BT",
Urja Rannikko038a3122009-06-28 19:19:25 +00002526 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002527 .manufacture_id = ST_ID,
2528 .model_id = ST_M29F400BT,
2529 .total_size = 512,
2530 .page_size = 64 * 1024,
2531 .tested = TEST_UNTESTED,
2532 .probe = probe_m29f400bt,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002533 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (m29f400bt.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002534 .erase = erase_m29f400bt,
2535 .write = write_coreboot_m29f400bt,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002536 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002537 },
2538
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002539 {
2540 .vendor = "ST",
2541 .name = "M29W010B",
Urja Rannikko038a3122009-06-28 19:19:25 +00002542 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002543 .manufacture_id = ST_ID,
2544 .model_id = ST_M29W010B,
2545 .total_size = 128,
2546 .page_size = 16 * 1024,
2547 .tested = TEST_UNTESTED,
2548 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002549 .probe_timing = TIMING_FIXME,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002550 .erase = erase_chip_jedec,
2551 .write = write_jedec,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002552 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002553 },
2554
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002555 {
2556 .vendor = "ST",
2557 .name = "M29W040B",
Urja Rannikko038a3122009-06-28 19:19:25 +00002558 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002559 .manufacture_id = ST_ID,
2560 .model_id = ST_M29W040B,
2561 .total_size = 512,
2562 .page_size = 64 * 1024,
2563 .tested = TEST_UNTESTED,
2564 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002565 .probe_timing = TIMING_FIXME,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002566 .erase = erase_chip_jedec,
2567 .write = write_jedec,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002568 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002569 },
2570
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002571 {
2572 .vendor = "ST",
2573 .name = "M50FLW040A",
Urja Rannikko038a3122009-06-28 19:19:25 +00002574 .bustype = CHIP_BUSTYPE_FWH|CHIP_BUSTYPE_LPC, /* A/A Mux */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002575 .manufacture_id = ST_ID,
2576 .model_id = ST_M50FLW040A,
2577 .total_size = 512,
2578 .page_size = 64 * 1024,
2579 .tested = TEST_UNTESTED,
2580 .probe = probe_stm50flw0x0x,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002581 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (stm50flw0x0x.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002582 .erase = erase_stm50flw0x0x,
2583 .write = write_stm50flw0x0x,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002584 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002585 },
2586
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002587 {
2588 .vendor = "ST",
2589 .name = "M50FLW040B",
Urja Rannikko038a3122009-06-28 19:19:25 +00002590 .bustype = CHIP_BUSTYPE_FWH|CHIP_BUSTYPE_LPC, /* A/A Mux */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002591 .manufacture_id = ST_ID,
2592 .model_id = ST_M50FLW040B,
2593 .total_size = 512,
2594 .page_size = 64 * 1024,
2595 .tested = TEST_UNTESTED,
2596 .probe = probe_stm50flw0x0x,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002597 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (stm50flw0x0x.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002598 .erase = erase_stm50flw0x0x,
2599 .write = write_stm50flw0x0x,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002600 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002601 },
2602
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002603 {
2604 .vendor = "ST",
2605 .name = "M50FLW080A",
Urja Rannikko038a3122009-06-28 19:19:25 +00002606 .bustype = CHIP_BUSTYPE_FWH|CHIP_BUSTYPE_LPC, /* A/A Mux */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002607 .manufacture_id = ST_ID,
2608 .model_id = ST_M50FLW080A,
2609 .total_size = 1024,
2610 .page_size = 64 * 1024,
2611 .tested = TEST_OK_PREW,
2612 .probe = probe_stm50flw0x0x,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002613 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (stm50flw0x0x.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002614 .erase = erase_stm50flw0x0x,
2615 .write = write_stm50flw0x0x,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002616 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002617 },
2618
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002619 {
2620 .vendor = "ST",
2621 .name = "M50FLW080B",
Urja Rannikko038a3122009-06-28 19:19:25 +00002622 .bustype = CHIP_BUSTYPE_FWH|CHIP_BUSTYPE_LPC, /* A/A Mux */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002623 .manufacture_id = ST_ID,
2624 .model_id = ST_M50FLW080B,
2625 .total_size = 1024,
2626 .page_size = 64 * 1024,
2627 .tested = TEST_UNTESTED,
2628 .probe = probe_stm50flw0x0x,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002629 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (stm50flw0x0x.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002630 .erase = erase_stm50flw0x0x,
2631 .write = write_stm50flw0x0x,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002632 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002633 },
2634
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002635 {
2636 .vendor = "ST",
2637 .name = "M50FW002",
Urja Rannikko038a3122009-06-28 19:19:25 +00002638 .bustype = CHIP_BUSTYPE_FWH, /* A/A Mux */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002639 .manufacture_id = ST_ID,
2640 .model_id = ST_M50FW002,
2641 .total_size = 256,
2642 .page_size = 64 * 1024,
2643 .tested = TEST_UNTESTED,
2644 .probe = probe_49lfxxxc,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002645 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (sst49lfxxxc.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002646 .erase = NULL,
2647 .write = NULL,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002648 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002649 },
2650
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002651 {
2652 .vendor = "ST",
2653 .name = "M50FW016",
Urja Rannikko038a3122009-06-28 19:19:25 +00002654 .bustype = CHIP_BUSTYPE_FWH, /* A/A Mux */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002655 .manufacture_id = ST_ID,
2656 .model_id = ST_M50FW016,
2657 .total_size = 2048,
2658 .page_size = 64 * 1024,
2659 .tested = TEST_UNTESTED,
2660 .probe = probe_82802ab,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002661 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (82802ab.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002662 .erase = erase_82802ab,
2663 .write = write_82802ab,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002664 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002665 },
2666
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002667 {
2668 .vendor = "ST",
2669 .name = "M50FW040",
Urja Rannikko038a3122009-06-28 19:19:25 +00002670 .bustype = CHIP_BUSTYPE_FWH, /* A/A Mux */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002671 .manufacture_id = ST_ID,
2672 .model_id = ST_M50FW040,
2673 .total_size = 512,
2674 .page_size = 64 * 1024,
2675 .tested = TEST_OK_PREW,
2676 .probe = probe_82802ab,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002677 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (82802ab.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002678 .erase = erase_82802ab,
2679 .write = write_82802ab,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002680 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002681 },
2682
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002683 {
2684 .vendor = "ST",
2685 .name = "M50FW080",
Urja Rannikko038a3122009-06-28 19:19:25 +00002686 .bustype = CHIP_BUSTYPE_FWH, /* A/A Mux */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002687 .manufacture_id = ST_ID,
2688 .model_id = ST_M50FW080,
2689 .total_size = 1024,
2690 .page_size = 64 * 1024,
Peter Stugea657e942009-01-24 23:01:08 +00002691 .tested = TEST_OK_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002692 .probe = probe_82802ab,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002693 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (82802ab.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002694 .erase = erase_82802ab,
2695 .write = write_82802ab,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002696 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002697 },
2698
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002699 {
2700 .vendor = "ST",
2701 .name = "M50LPW116",
Urja Rannikko038a3122009-06-28 19:19:25 +00002702 .bustype = CHIP_BUSTYPE_LPC, /* A/A Mux */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002703 .manufacture_id = ST_ID,
2704 .model_id = ST_M50LPW116,
2705 .total_size = 2048,
2706 .page_size = 64 * 1024,
2707 .tested = TEST_UNTESTED,
2708 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002709 .probe_timing = TIMING_FIXME,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002710 .erase = erase_chip_jedec,
2711 .write = write_jedec,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002712 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002713 },
2714
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002715 {
2716 .vendor = "SyncMOS",
2717 .name = "S29C31004T",
Urja Rannikko038a3122009-06-28 19:19:25 +00002718 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002719 .manufacture_id = SYNCMOS_ID,
2720 .model_id = S29C31004T,
2721 .total_size = 512,
2722 .page_size = 128,
2723 .tested = TEST_UNTESTED,
2724 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002725 .probe_timing = TIMING_FIXME,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002726 .erase = erase_chip_jedec,
2727 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002728 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002729 },
2730
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002731 {
2732 .vendor = "SyncMOS",
2733 .name = "S29C51001T",
Urja Rannikko038a3122009-06-28 19:19:25 +00002734 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002735 .manufacture_id = SYNCMOS_ID,
2736 .model_id = S29C51001T,
2737 .total_size = 128,
2738 .page_size = 128,
2739 .tested = TEST_UNTESTED,
2740 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002741 .probe_timing = TIMING_FIXME,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002742 .erase = erase_chip_jedec,
2743 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002744 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002745 },
2746
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002747 {
2748 .vendor = "SyncMOS",
2749 .name = "S29C51002T",
Urja Rannikko038a3122009-06-28 19:19:25 +00002750 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002751 .manufacture_id = SYNCMOS_ID,
2752 .model_id = S29C51002T,
2753 .total_size = 256,
2754 .page_size = 128,
2755 .tested = TEST_OK_PREW,
2756 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002757 .probe_timing = TIMING_FIXME,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002758 .erase = erase_chip_jedec,
2759 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002760 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002761 },
2762
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002763 {
2764 .vendor = "SyncMOS",
2765 .name = "S29C51004T",
Urja Rannikko038a3122009-06-28 19:19:25 +00002766 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002767 .manufacture_id = SYNCMOS_ID,
2768 .model_id = S29C51004T,
2769 .total_size = 512,
2770 .page_size = 128,
2771 .tested = TEST_UNTESTED,
2772 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002773 .probe_timing = TIMING_FIXME,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002774 .erase = erase_chip_jedec,
2775 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002776 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002777 },
2778
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002779 {
Uwe Hermanna106d152009-05-27 23:17:40 +00002780 .vendor = "TI",
Carl-Daniel Hailfinger09b4fb72009-05-26 21:26:23 +00002781 .name = "TMS29F002RB",
Urja Rannikko038a3122009-06-28 19:19:25 +00002782 .bustype = CHIP_BUSTYPE_PARALLEL,
Carl-Daniel Hailfinger09b4fb72009-05-26 21:26:23 +00002783 .manufacture_id = TI_OLD_ID,
2784 .model_id = TI_TMS29F002RB,
2785 .total_size = 256,
2786 .page_size = 16384, /* Non-uniform sectors */
2787 .tested = TEST_UNTESTED,
2788 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002789 .probe_timing = TIMING_FIXME,
Carl-Daniel Hailfinger09b4fb72009-05-26 21:26:23 +00002790 .erase = NULL,
2791 .write = NULL,
2792 .read = read_memmapped,
2793 },
2794
2795 {
Uwe Hermanna106d152009-05-27 23:17:40 +00002796 .vendor = "TI",
Carl-Daniel Hailfinger09b4fb72009-05-26 21:26:23 +00002797 .name = "TMS29F002RT",
Urja Rannikko038a3122009-06-28 19:19:25 +00002798 .bustype = CHIP_BUSTYPE_PARALLEL,
Carl-Daniel Hailfinger09b4fb72009-05-26 21:26:23 +00002799 .manufacture_id = TI_OLD_ID,
2800 .model_id = TI_TMS29F002RT,
2801 .total_size = 256,
2802 .page_size = 16384, /* Non-uniform sectors */
2803 .tested = TEST_UNTESTED,
2804 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002805 .probe_timing = TIMING_FIXME,
Carl-Daniel Hailfinger09b4fb72009-05-26 21:26:23 +00002806 .erase = NULL,
2807 .write = NULL,
2808 .read = read_memmapped,
2809 },
2810
2811 {
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002812 .vendor = "Winbond",
2813 .name = "W25x10",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002814 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002815 .manufacture_id = WINBOND_NEX_ID,
2816 .model_id = W_25X10,
2817 .total_size = 128,
2818 .page_size = 256,
2819 .tested = TEST_UNTESTED,
2820 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00002821 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002822 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00002823 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002824 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00002825 },
2826
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002827 {
2828 .vendor = "Winbond",
2829 .name = "W25x20",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002830 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002831 .manufacture_id = WINBOND_NEX_ID,
2832 .model_id = W_25X20,
2833 .total_size = 256,
2834 .page_size = 256,
2835 .tested = TEST_UNTESTED,
2836 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00002837 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002838 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00002839 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002840 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00002841 },
2842
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002843 {
2844 .vendor = "Winbond",
2845 .name = "W25x40",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002846 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002847 .manufacture_id = WINBOND_NEX_ID,
2848 .model_id = W_25X40,
2849 .total_size = 512,
2850 .page_size = 256,
2851 .tested = TEST_OK_PREW,
2852 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00002853 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002854 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00002855 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002856 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00002857 },
2858
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002859 {
2860 .vendor = "Winbond",
2861 .name = "W25x80",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002862 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002863 .manufacture_id = WINBOND_NEX_ID,
2864 .model_id = W_25X80,
2865 .total_size = 1024,
2866 .page_size = 256,
2867 .tested = TEST_OK_PREW,
2868 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00002869 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002870 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00002871 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002872 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00002873 },
2874
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002875 {
2876 .vendor = "Winbond",
Hector Martina721ae22009-07-11 19:39:11 +00002877 .name = "W25x16",
2878 .bustype = CHIP_BUSTYPE_SPI,
2879 .manufacture_id = WINBOND_NEX_ID,
2880 .model_id = W_25X16,
2881 .total_size = 2048,
2882 .page_size = 256,
2883 .tested = TEST_OK_PR,
2884 .probe = probe_spi_rdid,
2885 .probe_timing = TIMING_ZERO,
2886 .erase = spi_chip_erase_c7,
2887 .write = spi_chip_write_256,
2888 .read = spi_chip_read,
2889 },
2890
2891 {
2892 .vendor = "Winbond",
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002893 .name = "W29C011",
Urja Rannikko038a3122009-06-28 19:19:25 +00002894 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002895 .manufacture_id = WINBOND_ID,
2896 .model_id = W_29C011,
2897 .total_size = 128,
2898 .page_size = 128,
2899 .tested = TEST_OK_PREW,
2900 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002901 .probe_timing = TIMING_FIXME,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002902 .erase = erase_chip_jedec,
2903 .write = write_jedec,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002904 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002905 },
2906
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002907 {
2908 .vendor = "Winbond",
2909 .name = "W29C020C",
Urja Rannikko161b8852009-06-05 08:47:37 +00002910 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002911 .manufacture_id = WINBOND_ID,
2912 .model_id = W_29C020C,
2913 .total_size = 256,
2914 .page_size = 128,
2915 .tested = TEST_OK_PREW,
2916 .probe = probe_jedec,
Mateusz Murawski8b2f46b2009-06-12 21:29:36 +00002917 .probe_timing = 10,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002918 .erase = erase_chip_jedec,
2919 .write = write_jedec,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002920 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002921 },
2922
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002923 {
2924 .vendor = "Winbond",
2925 .name = "W29C040P",
Urja Rannikko161b8852009-06-05 08:47:37 +00002926 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002927 .manufacture_id = WINBOND_ID,
2928 .model_id = W_29C040P,
2929 .total_size = 512,
2930 .page_size = 256,
2931 .tested = TEST_UNTESTED,
2932 .probe = probe_jedec,
Mateusz Murawski8b2f46b2009-06-12 21:29:36 +00002933 .probe_timing = 10,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002934 .erase = erase_chip_jedec,
2935 .write = write_jedec,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002936 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002937 },
2938
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002939 {
2940 .vendor = "Winbond",
2941 .name = "W29EE011",
Urja Rannikko038a3122009-06-28 19:19:25 +00002942 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002943 .manufacture_id = WINBOND_ID,
2944 .model_id = W_29C011,
2945 .total_size = 128,
2946 .page_size = 128,
2947 .tested = TEST_OK_PREW,
2948 .probe = probe_w29ee011,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002949 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (w29ee011.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002950 .erase = erase_chip_jedec,
2951 .write = write_jedec,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002952 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002953 },
2954
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002955 {
2956 .vendor = "Winbond",
2957 .name = "W39V040A",
Mateusz Murawski8b2f46b2009-06-12 21:29:36 +00002958 .bustype = CHIP_BUSTYPE_LPC,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002959 .manufacture_id = WINBOND_ID,
2960 .model_id = W_39V040A,
2961 .total_size = 512,
2962 .page_size = 64*1024,
Uwe Hermann690bcba2009-05-21 17:11:25 +00002963 .tested = TEST_OK_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002964 .probe = probe_jedec,
Mateusz Murawski8b2f46b2009-06-12 21:29:36 +00002965 .probe_timing = 10,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002966 .erase = erase_chip_jedec,
Uwe Hermann24f9fbe2009-05-12 14:06:04 +00002967 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002968 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002969 },
2970
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002971 {
2972 .vendor = "Winbond",
2973 .name = "W39V040B",
Mateusz Murawski8b2f46b2009-06-12 21:29:36 +00002974 .bustype = CHIP_BUSTYPE_LPC,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002975 .manufacture_id = WINBOND_ID,
2976 .model_id = W_39V040B,
2977 .total_size = 512,
2978 .page_size = 64*1024,
Luc Verhaegen8bfb59c2009-07-08 14:50:36 +00002979 .tested = TEST_OK_PR | TEST_BAD_ERASE | TEST_BAD_WRITE,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002980 .probe = probe_jedec,
Mateusz Murawski8b2f46b2009-06-12 21:29:36 +00002981 .probe_timing = 10,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002982 .erase = erase_chip_jedec,
Uwe Hermann24f9fbe2009-05-12 14:06:04 +00002983 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002984 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002985 },
2986
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002987 {
2988 .vendor = "Winbond",
2989 .name = "W39V040C",
Mateusz Murawski8b2f46b2009-06-12 21:29:36 +00002990 .bustype = CHIP_BUSTYPE_LPC,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002991 .manufacture_id = WINBOND_ID,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00002992 .model_id = W_39V040C,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002993 .total_size = 512,
2994 .page_size = 64*1024,
2995 .tested = TEST_OK_PREW,
2996 .probe = probe_w39v040c,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002997 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (w39v040c.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002998 .erase = erase_w39v040c,
2999 .write = write_w39v040c,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00003000 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00003001 },
3002
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003003 {
3004 .vendor = "Winbond",
3005 .name = "W39V040FA",
Mateusz Murawski8b2f46b2009-06-12 21:29:36 +00003006 .bustype = CHIP_BUSTYPE_FWH,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003007 .manufacture_id = WINBOND_ID,
3008 .model_id = W_39V040FA,
3009 .total_size = 512,
3010 .page_size = 64*1024,
3011 .tested = TEST_OK_PREW,
3012 .probe = probe_jedec,
Mateusz Murawski8b2f46b2009-06-12 21:29:36 +00003013 .probe_timing = 10,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003014 .erase = erase_chip_jedec,
Uwe Hermann24f9fbe2009-05-12 14:06:04 +00003015 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00003016 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00003017 },
3018
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003019 {
3020 .vendor = "Winbond",
3021 .name = "W39V080A",
Mateusz Murawski8b2f46b2009-06-12 21:29:36 +00003022 .bustype = CHIP_BUSTYPE_LPC,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003023 .manufacture_id = WINBOND_ID,
3024 .model_id = W_39V080A,
3025 .total_size = 1024,
3026 .page_size = 64*1024,
3027 .tested = TEST_OK_PREW,
3028 .probe = probe_jedec,
Mateusz Murawski8b2f46b2009-06-12 21:29:36 +00003029 .probe_timing = 10,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003030 .erase = erase_chip_jedec,
Uwe Hermann24f9fbe2009-05-12 14:06:04 +00003031 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00003032 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00003033 },
3034
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003035 {
3036 .vendor = "Winbond",
3037 .name = "W49F002U",
Urja Rannikko038a3122009-06-28 19:19:25 +00003038 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003039 .manufacture_id = WINBOND_ID,
3040 .model_id = W_49F002U,
3041 .total_size = 256,
3042 .page_size = 128,
3043 .tested = TEST_OK_PREW,
3044 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +00003045 .probe_timing = TIMING_FIXME,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003046 .erase = erase_chip_jedec,
3047 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00003048 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00003049 },
3050
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003051 {
3052 .vendor = "Winbond",
3053 .name = "W49V002A",
Mateusz Murawski8b2f46b2009-06-12 21:29:36 +00003054 .bustype = CHIP_BUSTYPE_LPC,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003055 .manufacture_id = WINBOND_ID,
3056 .model_id = W_49V002A,
3057 .total_size = 256,
3058 .page_size = 128,
3059 .tested = TEST_OK_PREW,
3060 .probe = probe_jedec,
Mateusz Murawski8b2f46b2009-06-12 21:29:36 +00003061 .probe_timing = 10,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003062 .erase = erase_chip_jedec,
3063 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00003064 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00003065 },
3066
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003067 {
3068 .vendor = "Winbond",
3069 .name = "W49V002FA",
Mateusz Murawski8b2f46b2009-06-12 21:29:36 +00003070 .bustype = CHIP_BUSTYPE_FWH,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003071 .manufacture_id = WINBOND_ID,
3072 .model_id = W_49V002FA,
3073 .total_size = 256,
3074 .page_size = 128,
3075 .tested = TEST_UNTESTED,
3076 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +00003077 .probe_timing = TIMING_FIXME,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003078 .erase = erase_chip_jedec,
3079 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00003080 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00003081 },
3082
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003083 {
3084 .vendor = "Winbond",
3085 .name = "W39V080FA",
Mateusz Murawski8b2f46b2009-06-12 21:29:36 +00003086 .bustype = CHIP_BUSTYPE_FWH,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003087 .manufacture_id = WINBOND_ID,
3088 .model_id = W_39V080FA,
3089 .total_size = 1024,
3090 .page_size = 64*1024,
3091 .tested = TEST_OK_PREW,
3092 .probe = probe_winbond_fwhub,
Maciej Pijankac6e11112009-06-03 14:46:22 +00003093 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (w39v080fa.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003094 .erase = erase_winbond_fwhub,
3095 .write = write_winbond_fwhub,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00003096 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00003097 },
3098
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003099 {
3100 .vendor = "Winbond",
3101 .name = "W39V080FA (dual mode)",
Mateusz Murawski8b2f46b2009-06-12 21:29:36 +00003102 .bustype = CHIP_BUSTYPE_FWH,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003103 .manufacture_id = WINBOND_ID,
3104 .model_id = W_39V080FA_DM,
3105 .total_size = 512,
3106 .page_size = 64*1024,
3107 .tested = TEST_UNTESTED,
3108 .probe = probe_winbond_fwhub,
Maciej Pijankac6e11112009-06-03 14:46:22 +00003109 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (w39v080fa.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003110 .erase = erase_winbond_fwhub,
3111 .write = write_winbond_fwhub,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00003112 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00003113 },
3114
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003115 {
3116 .vendor = "Atmel",
3117 .name = "unknown Atmel SPI chip",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00003118 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003119 .manufacture_id = ATMEL_ID,
3120 .model_id = GENERIC_DEVICE_ID,
3121 .total_size = 0,
3122 .page_size = 256,
Carl-Daniel Hailfinger42882fd2009-04-22 13:33:43 +00003123 .tested = TEST_BAD_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003124 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00003125 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003126 .erase = NULL,
3127 .write = NULL,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00003128 .read = NULL,
FENG yu ningff692fb2008-12-08 18:15:10 +00003129 },
3130
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003131 {
3132 .vendor = "EON",
3133 .name = "unknown EON SPI chip",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00003134 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003135 .manufacture_id = EON_ID_NOPREFIX,
3136 .model_id = GENERIC_DEVICE_ID,
3137 .total_size = 0,
3138 .page_size = 256,
Carl-Daniel Hailfinger42882fd2009-04-22 13:33:43 +00003139 .tested = TEST_BAD_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003140 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00003141 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003142 .erase = NULL,
3143 .write = NULL,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00003144 .read = NULL,
FENG yu ningff692fb2008-12-08 18:15:10 +00003145 },
3146
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003147 {
3148 .vendor = "Macronix",
3149 .name = "unknown Macronix SPI chip",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00003150 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003151 .manufacture_id = MX_ID,
3152 .model_id = GENERIC_DEVICE_ID,
3153 .total_size = 0,
3154 .page_size = 256,
Carl-Daniel Hailfinger42882fd2009-04-22 13:33:43 +00003155 .tested = TEST_BAD_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003156 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00003157 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003158 .erase = NULL,
3159 .write = NULL,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00003160 .read = NULL,
FENG yu ningff692fb2008-12-08 18:15:10 +00003161 },
3162
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003163 {
3164 .vendor = "PMC",
3165 .name = "unknown PMC SPI chip",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00003166 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003167 .manufacture_id = PMC_ID,
3168 .model_id = GENERIC_DEVICE_ID,
3169 .total_size = 0,
3170 .page_size = 256,
Carl-Daniel Hailfinger42882fd2009-04-22 13:33:43 +00003171 .tested = TEST_BAD_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003172 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00003173 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003174 .erase = NULL,
3175 .write = NULL,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00003176 .read = NULL,
FENG yu ningff692fb2008-12-08 18:15:10 +00003177 },
3178
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003179 {
3180 .vendor = "SST",
3181 .name = "unknown SST SPI chip",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00003182 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003183 .manufacture_id = SST_ID,
3184 .model_id = GENERIC_DEVICE_ID,
3185 .total_size = 0,
3186 .page_size = 256,
Carl-Daniel Hailfinger42882fd2009-04-22 13:33:43 +00003187 .tested = TEST_BAD_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003188 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00003189 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003190 .erase = NULL,
3191 .write = NULL,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00003192 .read = NULL,
FENG yu ningff692fb2008-12-08 18:15:10 +00003193 },
3194
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003195 {
3196 .vendor = "ST",
3197 .name = "unknown ST SPI chip",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00003198 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003199 .manufacture_id = ST_ID,
3200 .model_id = GENERIC_DEVICE_ID,
3201 .total_size = 0,
3202 .page_size = 256,
Carl-Daniel Hailfinger42882fd2009-04-22 13:33:43 +00003203 .tested = TEST_BAD_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003204 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00003205 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003206 .erase = NULL,
3207 .write = NULL,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00003208 .read = NULL,
FENG yu ningff692fb2008-12-08 18:15:10 +00003209 },
Uwe Hermannfc425e82008-03-16 02:06:25 +00003210
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003211 { NULL }
Stephan Guilloux72cf5652009-04-21 01:46:07 +00003212};