blob: 0983f1d89d0042b5f1d86178863ba585c662b448 [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,
Udu Ogahc04ee222009-09-05 01:31:32 +000061 .probe_timing = TIMING_ZERO,
Uwe Hermanna8b37272009-06-19 15:54:39 +000062 .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,
Udu Ogahc04ee222009-09-05 01:31:32 +000077 .probe_timing = TIMING_ZERO,
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,
Udu Ogahc04ee222009-09-05 01:31:32 +000093 .probe_timing = TIMING_ZERO,
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,
Udu Ogahc04ee222009-09-05 01:31:32 +0000141 .probe_timing = TIMING_ZERO,
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,
Udu Ogahc04ee222009-09-05 01:31:32 +0000671 .probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */
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,
Udu Ogahc04ee222009-09-05 01:31:32 +0000687 .probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */
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,
Udu Ogahc04ee222009-09-05 01:31:32 +0000703 .probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */
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,
Udu Ogahc04ee222009-09-05 01:31:32 +0000783 .probe_timing = TIMING_ZERO, /* 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,
Udu Ogahc04ee222009-09-05 01:31:32 +0000799 .probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */
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,
Udu Ogahc04ee222009-09-05 01:31:32 +00001071 .probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */
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,
Udu Ogahc04ee222009-09-05 01:31:32 +00001087 .probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */
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,
Udu Ogahc04ee222009-09-05 01:31:32 +00001103 .probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */
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,
Udu Ogahc04ee222009-09-05 01:31:32 +00001119 .probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */
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,
Udu Ogahc04ee222009-09-05 01:31:32 +00001167 .probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */
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,
Udu Ogahc04ee222009-09-05 01:31:32 +00001183 .probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */
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,
Carl-Daniel Hailfingerf38431a2009-09-05 02:30:58 +00001232 .erase = NULL,
1233 .block_erasers =
1234 {
1235 {
1236 .eraseblocks = { {4 * 1024, 16} },
1237 .block_erase = spi_block_erase_20,
1238 },
1239 {
1240 .eraseblocks = { {64 * 1024, 1} },
1241 .block_erase = spi_block_erase_52,
1242 },
1243 {
1244 .eraseblocks = { {64 * 1024, 1} },
1245 .block_erase = spi_block_erase_d8,
1246 },
1247 {
1248 .eraseblocks = { {64 * 1024, 1} },
1249 .block_erase = spi_block_erase_60,
1250 },
1251 {
1252 .eraseblocks = { {64 * 1024, 1} },
1253 .block_erase = spi_block_erase_c7,
1254 },
1255 },
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001256 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001257 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001258 },
1259
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001260 {
1261 .vendor = "Macronix",
1262 .name = "MX25L1005",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001263 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001264 .manufacture_id = MX_ID,
1265 .model_id = MX_25L1005,
1266 .total_size = 128,
1267 .page_size = 256,
1268 .tested = TEST_UNTESTED,
1269 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001270 .probe_timing = TIMING_ZERO,
Carl-Daniel Hailfingerf38431a2009-09-05 02:30:58 +00001271 .erase = NULL,
1272 .block_erasers =
1273 {
1274 {
1275 .eraseblocks = { {4 * 1024, 32} },
1276 .block_erase = spi_block_erase_20,
1277 },
1278 {
1279 .eraseblocks = { {64 * 1024, 2} },
1280 .block_erase = spi_block_erase_d8,
1281 },
1282 {
1283 .eraseblocks = { {128 * 1024, 1} },
1284 .block_erase = spi_block_erase_60,
1285 },
1286 {
1287 .eraseblocks = { {128 * 1024, 1} },
1288 .block_erase = spi_block_erase_c7,
1289 },
1290 },
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001291 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001292 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001293 },
1294
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001295 {
1296 .vendor = "Macronix",
1297 .name = "MX25L2005",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001298 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001299 .manufacture_id = MX_ID,
1300 .model_id = MX_25L2005,
1301 .total_size = 256,
1302 .page_size = 256,
1303 .tested = TEST_UNTESTED,
1304 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001305 .probe_timing = TIMING_ZERO,
Stephan Guillouxfd315502009-04-20 22:54:13 +00001306 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001307 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001308 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001309 },
1310
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001311 {
1312 .vendor = "Macronix",
1313 .name = "MX25L4005",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001314 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001315 .manufacture_id = MX_ID,
1316 .model_id = MX_25L4005,
1317 .total_size = 512,
1318 .page_size = 256,
1319 .tested = TEST_OK_PREW,
1320 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001321 .probe_timing = TIMING_ZERO,
Stephan Guillouxfd315502009-04-20 22:54:13 +00001322 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001323 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001324 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001325 },
1326
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001327 {
1328 .vendor = "Macronix",
1329 .name = "MX25L8005",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001330 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001331 .manufacture_id = MX_ID,
1332 .model_id = MX_25L8005,
1333 .total_size = 1024,
1334 .page_size = 256,
1335 .tested = TEST_OK_PREW,
1336 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001337 .probe_timing = TIMING_ZERO,
Stephan Guillouxfd315502009-04-20 22:54:13 +00001338 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001339 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001340 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001341 },
1342
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001343 {
1344 .vendor = "Macronix",
1345 .name = "MX25L1605",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001346 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001347 .manufacture_id = MX_ID,
1348 .model_id = MX_25L1605,
1349 .total_size = 2048,
1350 .page_size = 256,
Peter Stugeddb94f72009-04-29 23:22:33 +00001351 .tested = TEST_OK_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001352 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001353 .probe_timing = TIMING_ZERO,
Stephan Guillouxe39631c2009-04-19 23:24:26 +00001354 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001355 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001356 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001357 },
1358
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001359 {
1360 .vendor = "Macronix",
Stephan Guillouxf5c70902009-04-19 23:04:00 +00001361 .name = "MX25L1635D",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001362 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guillouxf5c70902009-04-19 23:04:00 +00001363 .manufacture_id = MX_ID,
1364 .model_id = MX_25L1635D,
1365 .total_size = 2048,
1366 .page_size = 256,
1367 .tested = TEST_UNTESTED,
1368 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001369 .probe_timing = TIMING_ZERO,
Stephan Guillouxe39631c2009-04-19 23:24:26 +00001370 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001371 .write = spi_chip_write_256,
Stephan Guillouxf5c70902009-04-19 23:04:00 +00001372 .read = spi_chip_read,
1373 },
Stephan Guillouxfd315502009-04-20 22:54:13 +00001374
Stephan Guillouxf5c70902009-04-19 23:04:00 +00001375 {
1376 .vendor = "Macronix",
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001377 .name = "MX25L3205",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001378 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001379 .manufacture_id = MX_ID,
1380 .model_id = MX_25L3205,
1381 .total_size = 4096,
1382 .page_size = 256,
1383 .tested = TEST_OK_PREW,
1384 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001385 .probe_timing = TIMING_ZERO,
Stephan Guillouxfd315502009-04-20 22:54:13 +00001386 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001387 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001388 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001389 },
1390
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001391 {
1392 .vendor = "Macronix",
Stephan Guilloux70ea9a32009-04-23 22:51:56 +00001393 .name = "MX25L3235D",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001394 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux70ea9a32009-04-23 22:51:56 +00001395 .manufacture_id = MX_ID,
1396 .model_id = MX_25L3235D,
1397 .total_size = 4096,
1398 .page_size = 256,
1399 .tested = TEST_UNTESTED,
1400 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001401 .probe_timing = TIMING_ZERO,
Stephan Guilloux70ea9a32009-04-23 22:51:56 +00001402 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001403 .write = spi_chip_write_256,
Stephan Guilloux70ea9a32009-04-23 22:51:56 +00001404 .read = spi_chip_read,
1405 },
1406
1407 {
1408 .vendor = "Macronix",
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001409 .name = "MX25L6405",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001410 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001411 .manufacture_id = MX_ID,
1412 .model_id = MX_25L6405,
1413 .total_size = 8192,
1414 .page_size = 256,
Carl-Daniel Hailfinger452b3e32009-06-22 11:14:43 +00001415 .tested = TEST_OK_PROBE,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001416 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001417 .probe_timing = TIMING_ZERO,
Stephan Guillouxfd315502009-04-20 22:54:13 +00001418 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001419 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001420 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001421 },
1422
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001423 {
1424 .vendor = "Macronix",
Stephan Guilloux2f132fe2009-04-21 01:47:16 +00001425 .name = "MX25L12805",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001426 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux2f132fe2009-04-21 01:47:16 +00001427 .manufacture_id = MX_ID,
1428 .model_id = MX_25L12805,
1429 .total_size = 16384,
1430 .page_size = 256,
1431 .tested = TEST_UNTESTED,
1432 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001433 .probe_timing = TIMING_ZERO,
Stephan Guilloux2f132fe2009-04-21 01:47:16 +00001434 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001435 .write = spi_chip_write_256,
Stephan Guilloux2f132fe2009-04-21 01:47:16 +00001436 .read = spi_chip_read,
1437 },
1438
1439 {
1440 .vendor = "Macronix",
Mark Panajotovic502a9132009-08-24 01:42:24 +00001441 .name = "MX29F001B",
1442 .bustype = CHIP_BUSTYPE_PARALLEL,
1443 .manufacture_id = MX_ID,
1444 .model_id = MX_29F001B,
1445 .total_size = 128,
1446 .page_size = 32 * 1024,
Uwe Hermannb08ee5c2009-09-09 00:58:19 +00001447 .tested = TEST_OK_PREW,
Mark Panajotovic502a9132009-08-24 01:42:24 +00001448 .probe = probe_29f002,
1449 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (mx29f002.c) */
1450 .erase = erase_29f002,
1451 .write = write_29f002,
1452 .read = read_memmapped,
1453 },
1454
1455 {
1456 .vendor = "Macronix",
1457 .name = "MX29F001T",
1458 .bustype = CHIP_BUSTYPE_PARALLEL,
1459 .manufacture_id = MX_ID,
1460 .model_id = MX_29F001T,
1461 .total_size = 128,
1462 .page_size = 32 * 1024,
1463 .tested = TEST_OK_PREW,
1464 .probe = probe_29f002,
1465 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (mx29f002.c) */
1466 .erase = erase_29f002,
1467 .write = write_29f002,
1468 .read = read_memmapped,
1469 },
1470
1471 {
1472 .vendor = "Macronix",
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001473 .name = "MX29F002B",
Urja Rannikko038a3122009-06-28 19:19:25 +00001474 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001475 .manufacture_id = MX_ID,
1476 .model_id = MX_29F002B,
1477 .total_size = 256,
1478 .page_size = 64 * 1024,
1479 .tested = TEST_UNTESTED,
1480 .probe = probe_29f002,
Maciej Pijankac6e11112009-06-03 14:46:22 +00001481 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (mx29f002.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001482 .erase = erase_29f002,
1483 .write = write_29f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001484 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001485 },
1486
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001487 {
1488 .vendor = "Macronix",
1489 .name = "MX29F002T",
Urja Rannikko038a3122009-06-28 19:19:25 +00001490 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001491 .manufacture_id = MX_ID,
1492 .model_id = MX_29F002T,
1493 .total_size = 256,
1494 .page_size = 64 * 1024,
Uwe Hermann66c580c2009-05-21 00:29:50 +00001495 .tested = TEST_OK_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001496 .probe = probe_29f002,
Maciej Pijankac6e11112009-06-03 14:46:22 +00001497 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (mx29f002.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001498 .erase = erase_29f002,
1499 .write = write_29f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001500 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001501 },
1502
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001503 {
1504 .vendor = "Macronix",
Carl-Daniel Hailfinger350a0c32009-07-24 13:59:27 +00001505 .name = "MX29LV040",
Urja Rannikko038a3122009-06-28 19:19:25 +00001506 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001507 .manufacture_id = MX_ID,
Carl-Daniel Hailfinger350a0c32009-07-24 13:59:27 +00001508 .model_id = MX_29LV040,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001509 .total_size = 512,
1510 .page_size = 64 * 1024,
1511 .tested = TEST_OK_PR,
1512 .probe = probe_29f002,
Maciej Pijankac6e11112009-06-03 14:46:22 +00001513 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (mx29f002.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001514 .erase = erase_29f002,
1515 .write = write_29f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001516 .read = read_memmapped,
Carl-Daniel Hailfinger7de86392008-12-10 10:32:05 +00001517 },
1518
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001519 {
1520 .vendor = "Numonyx",
1521 .name = "M25PE10",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001522 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001523 .manufacture_id = ST_ID,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00001524 .model_id = ST_M25PE10,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001525 .total_size = 128,
1526 .page_size = 256,
1527 .tested = TEST_UNTESTED,
1528 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001529 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001530 .erase = spi_chip_erase_d8,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001531 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001532 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001533 },
1534
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001535 {
1536 .vendor = "Numonyx",
1537 .name = "M25PE20",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001538 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001539 .manufacture_id = ST_ID,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00001540 .model_id = ST_M25PE20,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001541 .total_size = 256,
1542 .page_size = 256,
1543 .tested = TEST_UNTESTED,
1544 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001545 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001546 .erase = spi_chip_erase_d8,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001547 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001548 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001549 },
1550
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001551 {
1552 .vendor = "Numonyx",
1553 .name = "M25PE40",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001554 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001555 .manufacture_id = ST_ID,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00001556 .model_id = ST_M25PE40,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001557 .total_size = 256,
1558 .page_size = 256,
1559 .tested = TEST_UNTESTED,
1560 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001561 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001562 .erase = spi_chip_erase_d8,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001563 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001564 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001565 },
1566
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001567 {
1568 .vendor = "Numonyx",
1569 .name = "M25PE80",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001570 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001571 .manufacture_id = ST_ID,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00001572 .model_id = ST_M25PE80,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001573 .total_size = 1024,
1574 .page_size = 256,
1575 .tested = TEST_OK_PREW,
1576 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001577 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001578 .erase = spi_chip_erase_d8,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001579 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001580 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001581 },
1582
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001583 {
1584 .vendor = "Numonyx",
1585 .name = "M25PE16",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001586 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001587 .manufacture_id = ST_ID,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00001588 .model_id = ST_M25PE16,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001589 .total_size = 2048,
1590 .page_size = 256,
1591 .tested = TEST_UNTESTED,
1592 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001593 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001594 .erase = spi_chip_erase_d8,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001595 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001596 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001597 },
1598
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001599 {
1600 .vendor = "PMC",
1601 .name = "Pm25LV010",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001602 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001603 .manufacture_id = PMC_ID,
1604 .model_id = PMC_25LV010,
1605 .total_size = 128,
1606 .page_size = 256,
1607 .tested = TEST_UNTESTED,
1608 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001609 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001610 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001611 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001612 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001613 },
1614
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001615 {
1616 .vendor = "PMC",
1617 .name = "Pm25LV016B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001618 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001619 .manufacture_id = PMC_ID,
1620 .model_id = PMC_25LV016B,
1621 .total_size = 2048,
1622 .page_size = 256,
1623 .tested = TEST_UNTESTED,
1624 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001625 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001626 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001627 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001628 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001629 },
1630
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001631 {
1632 .vendor = "PMC",
1633 .name = "Pm25LV020",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001634 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001635 .manufacture_id = PMC_ID,
1636 .model_id = PMC_25LV020,
1637 .total_size = 256,
1638 .page_size = 256,
1639 .tested = TEST_UNTESTED,
1640 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001641 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001642 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001643 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001644 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001645 },
1646
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001647 {
1648 .vendor = "PMC",
1649 .name = "Pm25LV040",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001650 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001651 .manufacture_id = PMC_ID,
1652 .model_id = PMC_25LV040,
1653 .total_size = 512,
1654 .page_size = 256,
1655 .tested = TEST_UNTESTED,
1656 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001657 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001658 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001659 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001660 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001661 },
1662
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001663 {
1664 .vendor = "PMC",
1665 .name = "Pm25LV080B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001666 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001667 .manufacture_id = PMC_ID,
1668 .model_id = PMC_25LV080B,
1669 .total_size = 1024,
1670 .page_size = 256,
1671 .tested = TEST_UNTESTED,
1672 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001673 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001674 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001675 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001676 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001677 },
1678
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001679 {
1680 .vendor = "PMC",
1681 .name = "Pm25LV512",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001682 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001683 .manufacture_id = PMC_ID,
1684 .model_id = PMC_25LV512,
1685 .total_size = 64,
1686 .page_size = 256,
1687 .tested = TEST_UNTESTED,
1688 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001689 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001690 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001691 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001692 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001693 },
1694
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001695 {
1696 .vendor = "PMC",
Uwe Hermannf983d9f2009-06-14 21:53:26 +00001697 .name = "Pm29F0002T",
1698 .bustype = CHIP_BUSTYPE_PARALLEL,
1699 .manufacture_id = PMC_ID_NOPREFIX,
1700 .model_id = PMC_29F002T,
1701 .total_size = 256,
1702 .page_size = 8192,
1703 .tested = TEST_OK_PREW,
1704 .probe = probe_29f040b,
1705 .probe_timing = TIMING_FIXME,
1706 .erase = erase_29f040b,
1707 .write = write_pm29f002,
1708 .read = read_memmapped,
1709 },
1710
1711 {
1712 .vendor = "PMC",
1713 .name = "Pm29F0002B",
1714 .bustype = CHIP_BUSTYPE_PARALLEL,
1715 .manufacture_id = PMC_ID_NOPREFIX,
1716 .model_id = PMC_29F002B,
1717 .total_size = 256,
1718 .page_size = 8192,
1719 .tested = TEST_UNTESTED,
1720 .probe = probe_29f040b,
1721 .probe_timing = TIMING_FIXME,
1722 .erase = erase_29f040b,
1723 .write = write_pm29f002,
1724 .read = read_memmapped,
1725 },
1726
1727 {
1728 .vendor = "PMC",
Rudolf Marek50fdf3b2009-05-17 17:02:07 +00001729 .name = "Pm39LV010",
Urja Rannikko038a3122009-06-28 19:19:25 +00001730 .bustype = CHIP_BUSTYPE_PARALLEL,
Rudolf Marek50fdf3b2009-05-17 17:02:07 +00001731 .manufacture_id = PMC_ID_NOPREFIX,
1732 .model_id = PMC_39F010,
1733 .total_size = 128,
1734 .page_size = 4096,
1735 .tested = TEST_OK_PREW,
1736 .probe = probe_jedec,
Udu Ogahc04ee222009-09-05 01:31:32 +00001737 .probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */
Rudolf Marek50fdf3b2009-05-17 17:02:07 +00001738 .erase = erase_chip_jedec,
1739 .write = write_49f002,
1740 .read = read_memmapped,
1741 },
1742
1743 {
1744 .vendor = "PMC",
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001745 .name = "Pm49FL002",
Urja Rannikko038a3122009-06-28 19:19:25 +00001746 .bustype = CHIP_BUSTYPE_LPC|CHIP_BUSTYPE_FWH, /* A/A Mux*/
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001747 .manufacture_id = PMC_ID_NOPREFIX,
1748 .model_id = PMC_49FL002,
1749 .total_size = 256,
1750 .page_size = 16 * 1024,
1751 .tested = TEST_OK_PREW,
1752 .probe = probe_49fl00x,
Udu Ogahc04ee222009-09-05 01:31:32 +00001753 .probe_timing = TIMING_ZERO, /* routine is wrapper to probe_jedec (pm49fl00x.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001754 .erase = erase_49fl00x,
1755 .write = write_49fl00x,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001756 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001757 },
1758
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001759 {
1760 .vendor = "PMC",
1761 .name = "Pm49FL004",
Urja Rannikko038a3122009-06-28 19:19:25 +00001762 .bustype = CHIP_BUSTYPE_LPC|CHIP_BUSTYPE_FWH, /* A/A Mux*/
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001763 .manufacture_id = PMC_ID_NOPREFIX,
1764 .model_id = PMC_49FL004,
1765 .total_size = 512,
1766 .page_size = 64 * 1024,
1767 .tested = TEST_OK_PREW,
1768 .probe = probe_49fl00x,
Udu Ogahc04ee222009-09-05 01:31:32 +00001769 .probe_timing = TIMING_ZERO, /* routine is wrapper to probe_jedec (pm49fl00x.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001770 .erase = erase_49fl00x,
1771 .write = write_49fl00x,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001772 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001773 },
1774
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001775 {
1776 .vendor = "Sharp",
1777 .name = "LHF00L04",
Urja Rannikko038a3122009-06-28 19:19:25 +00001778 .bustype = CHIP_BUSTYPE_FWH, /* A/A Mux */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001779 .manufacture_id = SHARP_ID,
1780 .model_id = SHARP_LHF00L04,
1781 .total_size = 1024,
1782 .page_size = 64 * 1024,
1783 .tested = TEST_UNTESTED,
1784 .probe = probe_lhf00l04,
Maciej Pijankac6e11112009-06-03 14:46:22 +00001785 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (sharplhf00l04.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001786 .erase = erase_lhf00l04,
1787 .write = write_lhf00l04,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001788 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001789 },
1790
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001791 {
1792 .vendor = "Spansion",
1793 .name = "S25FL016A",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001794 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001795 .manufacture_id = SPANSION_ID,
1796 .model_id = SPANSION_S25FL016A,
1797 .total_size = 2048,
1798 .page_size = 256,
1799 .tested = TEST_OK_PREW,
1800 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001801 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001802 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001803 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001804 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001805 },
1806
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001807 {
1808 .vendor = "SST",
1809 .name = "SST25VF016B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001810 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001811 .manufacture_id = SST_ID,
1812 .model_id = SST_25VF016B,
1813 .total_size = 2048,
1814 .page_size = 256,
1815 .tested = TEST_OK_PREW,
1816 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001817 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001818 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger93bb3752009-05-13 22:19:12 +00001819 .write = spi_chip_write_1,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001820 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001821 },
1822
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001823 {
1824 .vendor = "SST",
1825 .name = "SST25VF032B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001826 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001827 .manufacture_id = SST_ID,
1828 .model_id = SST_25VF032B,
1829 .total_size = 4096,
1830 .page_size = 256,
1831 .tested = TEST_OK_PREW,
1832 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001833 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001834 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger93bb3752009-05-13 22:19:12 +00001835 .write = spi_chip_write_1,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001836 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001837 },
1838
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001839 {
1840 .vendor = "SST",
1841 .name = "SST25VF040B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001842 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001843 .manufacture_id = SST_ID,
1844 .model_id = SST_25VF040B,
1845 .total_size = 512,
1846 .page_size = 256,
1847 .tested = TEST_UNTESTED,
1848 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001849 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001850 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger93bb3752009-05-13 22:19:12 +00001851 .write = spi_chip_write_1,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001852 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001853 },
1854
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001855 {
1856 .vendor = "SST",
Zheng Bao0677dff2009-02-25 08:07:33 +00001857 .name = "SST25VF040.REMS",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001858 .bustype = CHIP_BUSTYPE_SPI,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00001859 .manufacture_id = SST_ID,
1860 .model_id = SST_25VF040_REMS,
Zheng Bao0677dff2009-02-25 08:07:33 +00001861 .total_size = 512,
1862 .page_size = 64*1024,
1863 .tested = TEST_OK_PR,
1864 .probe = probe_spi_rems,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001865 .probe_timing = TIMING_ZERO,
Zheng Bao0677dff2009-02-25 08:07:33 +00001866 .erase = spi_chip_erase_60,
Carl-Daniel Hailfinger93bb3752009-05-13 22:19:12 +00001867 .write = spi_chip_write_1,
Zheng Bao0677dff2009-02-25 08:07:33 +00001868 .read = spi_chip_read,
1869 },
1870
1871 {
1872 .vendor = "SST",
Peter Stugefd9217d2009-01-26 03:37:40 +00001873 .name = "SST25VF040B.REMS",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001874 .bustype = CHIP_BUSTYPE_SPI,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00001875 .manufacture_id = SST_ID,
1876 .model_id = SST_25VF040B_REMS,
Peter Stugefd9217d2009-01-26 03:37:40 +00001877 .total_size = 512,
1878 .page_size = 64*1024,
1879 .tested = TEST_OK_PR,
1880 .probe = probe_spi_rems,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001881 .probe_timing = TIMING_ZERO,
Peter Stugefd9217d2009-01-26 03:37:40 +00001882 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger93bb3752009-05-13 22:19:12 +00001883 .write = spi_chip_write_1,
Peter Stugefd9217d2009-01-26 03:37:40 +00001884 .read = spi_chip_read,
1885 },
1886
1887 {
1888 .vendor = "SST",
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001889 .name = "SST25VF080B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001890 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001891 .manufacture_id = SST_ID,
1892 .model_id = SST_25VF080B,
1893 .total_size = 1024,
1894 .page_size = 256,
Peter Stugee612a112009-05-05 16:34:53 +00001895 .tested = TEST_OK_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001896 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001897 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001898 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001899 .write = spi_chip_write_1,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001900 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001901 },
1902
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001903 {
1904 .vendor = "SST",
1905 .name = "SST28SF040A",
Urja Rannikko038a3122009-06-28 19:19:25 +00001906 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001907 .manufacture_id = SST_ID,
1908 .model_id = SST_28SF040,
1909 .total_size = 512,
1910 .page_size = 256,
1911 .tested = TEST_UNTESTED,
1912 .probe = probe_28sf040,
Maciej Pijankac6e11112009-06-03 14:46:22 +00001913 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (sst28sf040.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001914 .erase = erase_28sf040,
1915 .write = write_28sf040,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001916 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001917 },
1918
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001919 {
1920 .vendor = "SST",
1921 .name = "SST29EE010",
Urja Rannikko038a3122009-06-28 19:19:25 +00001922 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001923 .manufacture_id = SST_ID,
1924 .model_id = SST_29EE010,
1925 .total_size = 128,
1926 .page_size = 128,
1927 .tested = TEST_OK_PREW,
1928 .probe = probe_jedec,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00001929 .probe_timing = 10,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001930 .erase = erase_chip_jedec,
1931 .write = write_jedec,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001932 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001933 },
1934
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001935 {
1936 .vendor = "SST",
1937 .name = "SST29LE010",
Urja Rannikko038a3122009-06-28 19:19:25 +00001938 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001939 .manufacture_id = SST_ID,
1940 .model_id = SST_29LE010,
1941 .total_size = 128,
1942 .page_size = 128,
1943 .tested = TEST_UNTESTED,
1944 .probe = probe_jedec,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00001945 .probe_timing = 10,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001946 .erase = erase_chip_jedec,
1947 .write = write_jedec,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001948 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001949 },
1950
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001951 {
1952 .vendor = "SST",
1953 .name = "SST29EE020A",
Urja Rannikko038a3122009-06-28 19:19:25 +00001954 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001955 .manufacture_id = SST_ID,
1956 .model_id = SST_29EE020A,
1957 .total_size = 256,
1958 .page_size = 128,
Peter Stugeb27d0a22009-02-22 21:07:28 +00001959 .tested = TEST_OK_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001960 .probe = probe_jedec,
Udu Ogahc04ee222009-09-05 01:31:32 +00001961 .probe_timing = 10,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001962 .erase = erase_chip_jedec,
1963 .write = write_jedec,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001964 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001965 },
1966
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001967 {
1968 .vendor = "SST",
1969 .name = "SST29LE020",
Urja Rannikko038a3122009-06-28 19:19:25 +00001970 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001971 .manufacture_id = SST_ID,
1972 .model_id = SST_29LE020,
1973 .total_size = 256,
1974 .page_size = 128,
1975 .tested = TEST_UNTESTED,
1976 .probe = probe_jedec,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00001977 .probe_timing = 10,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001978 .erase = erase_chip_jedec,
1979 .write = write_jedec,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001980 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001981 },
1982
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001983 {
1984 .vendor = "SST",
1985 .name = "SST39SF010A",
Urja Rannikko038a3122009-06-28 19:19:25 +00001986 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001987 .manufacture_id = SST_ID,
1988 .model_id = SST_39SF010,
1989 .total_size = 128,
1990 .page_size = 4096,
1991 .tested = TEST_OK_PREW,
1992 .probe = probe_jedec,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00001993 .probe_timing = 1, /* 150 ns */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001994 .erase = erase_chip_jedec,
Uwe Hermann24f9fbe2009-05-12 14:06:04 +00001995 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001996 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001997 },
1998
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001999 {
2000 .vendor = "SST",
2001 .name = "SST39SF020A",
Urja Rannikko038a3122009-06-28 19:19:25 +00002002 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002003 .manufacture_id = SST_ID,
2004 .model_id = SST_39SF020,
2005 .total_size = 256,
2006 .page_size = 4096,
2007 .tested = TEST_OK_PREW,
2008 .probe = probe_jedec,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00002009 .probe_timing = 1, /* 150 ns */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002010 .erase = erase_chip_jedec,
Uwe Hermann24f9fbe2009-05-12 14:06:04 +00002011 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002012 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002013 },
2014
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002015 {
2016 .vendor = "SST",
2017 .name = "SST39SF040",
Urja Rannikko038a3122009-06-28 19:19:25 +00002018 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002019 .manufacture_id = SST_ID,
2020 .model_id = SST_39SF040,
2021 .total_size = 512,
2022 .page_size = 4096,
2023 .tested = TEST_OK_PREW,
2024 .probe = probe_jedec,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00002025 .probe_timing = 1, /* 150 ns */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002026 .erase = erase_chip_jedec,
Uwe Hermann24f9fbe2009-05-12 14:06:04 +00002027 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002028 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002029 },
2030
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002031 {
2032 .vendor = "SST",
2033 .name = "SST39VF512",
Urja Rannikko038a3122009-06-28 19:19:25 +00002034 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002035 .manufacture_id = SST_ID,
2036 .model_id = SST_39VF512,
2037 .total_size = 64,
2038 .page_size = 4096,
Rudolf Mareke186da62009-05-17 18:24:24 +00002039 .tested = TEST_OK_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002040 .probe = probe_jedec,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00002041 .probe_timing = 1, /* 150 ns*/
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002042 .erase = erase_chip_jedec,
Uwe Hermann24f9fbe2009-05-12 14:06:04 +00002043 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002044 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002045 },
2046
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002047 {
2048 .vendor = "SST",
2049 .name = "SST39VF010",
Urja Rannikko038a3122009-06-28 19:19:25 +00002050 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002051 .manufacture_id = SST_ID,
2052 .model_id = SST_39VF010,
2053 .total_size = 128,
2054 .page_size = 4096,
Rudolf Marek50fdf3b2009-05-17 17:02:07 +00002055 .tested = TEST_OK_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002056 .probe = probe_jedec,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00002057 .probe_timing = 1, /* 150 ns */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002058 .erase = erase_chip_jedec,
Uwe Hermann24f9fbe2009-05-12 14:06:04 +00002059 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002060 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002061 },
2062
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002063 {
2064 .vendor = "SST",
2065 .name = "SST39VF020",
Urja Rannikko038a3122009-06-28 19:19:25 +00002066 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002067 .manufacture_id = SST_ID,
2068 .model_id = SST_39VF020,
2069 .total_size = 256,
2070 .page_size = 4096,
2071 .tested = TEST_OK_PREW,
2072 .probe = probe_jedec,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00002073 .probe_timing = 1, /* 150 ns */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002074 .erase = erase_chip_jedec,
Uwe Hermann24f9fbe2009-05-12 14:06:04 +00002075 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002076 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002077 },
2078
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002079 {
2080 .vendor = "SST",
2081 .name = "SST39VF040",
Urja Rannikko038a3122009-06-28 19:19:25 +00002082 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002083 .manufacture_id = SST_ID,
2084 .model_id = SST_39VF040,
2085 .total_size = 512,
2086 .page_size = 4096,
2087 .tested = TEST_OK_PROBE,
2088 .probe = probe_jedec,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00002089 .probe_timing = 1, /* 150 ns */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002090 .erase = erase_chip_jedec,
Uwe Hermann24f9fbe2009-05-12 14:06:04 +00002091 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002092 .read = read_memmapped,
Carl-Daniel Hailfinger90eff152008-12-08 23:51:45 +00002093 },
FENG yu ningff692fb2008-12-08 18:15:10 +00002094
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002095 {
2096 .vendor = "SST",
Peter Stuge8440cc02009-01-25 23:55:12 +00002097 .name = "SST39VF080",
Urja Rannikko038a3122009-06-28 19:19:25 +00002098 .bustype = CHIP_BUSTYPE_PARALLEL,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00002099 .manufacture_id = SST_ID,
2100 .model_id = SST_39VF080,
Peter Stuge8440cc02009-01-25 23:55:12 +00002101 .total_size = 1024,
2102 .page_size = 4096,
2103 .tested = TEST_UNTESTED,
2104 .probe = probe_jedec,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00002105 .probe_timing = 1, /* 150 ns */
Peter Stuge8440cc02009-01-25 23:55:12 +00002106 .erase = erase_chip_jedec,
Uwe Hermann24f9fbe2009-05-12 14:06:04 +00002107 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002108 .read = read_memmapped,
Peter Stuge8440cc02009-01-25 23:55:12 +00002109 },
2110
2111 {
2112 .vendor = "SST",
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002113 .name = "SST49LF002A/B",
Urja Rannikko038a3122009-06-28 19:19:25 +00002114 .bustype = CHIP_BUSTYPE_FWH, /* A/A Mux */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002115 .manufacture_id = SST_ID,
2116 .model_id = SST_49LF002A,
2117 .total_size = 256,
2118 .page_size = 16 * 1024,
2119 .tested = TEST_OK_PREW,
2120 .probe = probe_sst_fwhub,
Udu Ogahc04ee222009-09-05 01:31:32 +00002121 .probe_timing = 1, /* 150 ns | routine is wrapper to probe_jedec (sst_fwhub.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002122 .erase = erase_sst_fwhub,
2123 .write = write_sst_fwhub,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002124 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002125 },
2126
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002127 {
2128 .vendor = "SST",
2129 .name = "SST49LF003A/B",
Urja Rannikko038a3122009-06-28 19:19:25 +00002130 .bustype = CHIP_BUSTYPE_FWH, /* A/A Mux */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002131 .manufacture_id = SST_ID,
2132 .model_id = SST_49LF003A,
2133 .total_size = 384,
2134 .page_size = 64 * 1024,
Carl-Daniel Hailfingerb07eac92009-06-22 11:07:44 +00002135 .tested = TEST_OK_PROBE,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002136 .probe = probe_sst_fwhub,
Udu Ogahc04ee222009-09-05 01:31:32 +00002137 .probe_timing = 1, /* 150 ns | routine is wrapper to probe_jedec (sst_fwhub.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002138 .erase = erase_sst_fwhub,
2139 .write = write_sst_fwhub,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002140 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002141 },
2142
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002143 {
2144 .vendor = "SST",
2145 .name = "SST49LF004A/B",
Urja Rannikko038a3122009-06-28 19:19:25 +00002146 .bustype = CHIP_BUSTYPE_FWH, /* A/A Mux */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002147 .manufacture_id = SST_ID,
2148 .model_id = SST_49LF004A,
2149 .total_size = 512,
2150 .page_size = 64 * 1024,
2151 .tested = TEST_OK_PREW,
2152 .probe = probe_sst_fwhub,
Udu Ogahc04ee222009-09-05 01:31:32 +00002153 .probe_timing = 1, /* 150 ns | routine is wrapper to probe_jedec (sst_fwhub.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002154 .erase = erase_sst_fwhub,
2155 .write = write_sst_fwhub,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002156 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002157 },
2158
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002159 {
2160 .vendor = "SST",
2161 .name = "SST49LF004C",
Urja Rannikko038a3122009-06-28 19:19:25 +00002162 .bustype = CHIP_BUSTYPE_FWH,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002163 .manufacture_id = SST_ID,
2164 .model_id = SST_49LF004C,
2165 .total_size = 512,
2166 .page_size = 4 * 1024,
2167 .tested = TEST_UNTESTED,
2168 .probe = probe_49lfxxxc,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002169 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (sst49lfxxxc.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002170 .erase = erase_49lfxxxc,
2171 .write = write_49lfxxxc,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002172 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002173 },
2174
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002175 {
2176 .vendor = "SST",
2177 .name = "SST49LF008A",
Urja Rannikko038a3122009-06-28 19:19:25 +00002178 .bustype = CHIP_BUSTYPE_FWH, /* A/A Mux */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002179 .manufacture_id = SST_ID,
2180 .model_id = SST_49LF008A,
2181 .total_size = 1024,
2182 .page_size = 64 * 1024,
2183 .tested = TEST_OK_PREW,
2184 .probe = probe_sst_fwhub,
Udu Ogahc04ee222009-09-05 01:31:32 +00002185 .probe_timing = 1, /* 150 ns | routine is wrapper to probe_jedec (sst_fwhub.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002186 .erase = erase_sst_fwhub,
2187 .write = write_sst_fwhub,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002188 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002189 },
2190
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002191 {
2192 .vendor = "SST",
2193 .name = "SST49LF008C",
Urja Rannikko038a3122009-06-28 19:19:25 +00002194 .bustype = CHIP_BUSTYPE_FWH,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002195 .manufacture_id = SST_ID,
2196 .model_id = SST_49LF008C,
2197 .total_size = 1024,
2198 .page_size = 4 * 1024,
2199 .tested = TEST_UNTESTED,
2200 .probe = probe_49lfxxxc,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002201 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (sst49lfxxxc.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002202 .erase = erase_49lfxxxc,
2203 .write = write_49lfxxxc,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002204 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002205 },
2206
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002207 {
2208 .vendor = "SST",
2209 .name = "SST49LF016C",
Urja Rannikko038a3122009-06-28 19:19:25 +00002210 .bustype = CHIP_BUSTYPE_FWH,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002211 .manufacture_id = SST_ID,
2212 .model_id = SST_49LF016C,
2213 .total_size = 2048,
2214 .page_size = 4 * 1024,
2215 .tested = TEST_OK_PREW,
2216 .probe = probe_49lfxxxc,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002217 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (sst49lfxxxc.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002218 .erase = erase_49lfxxxc,
2219 .write = write_49lfxxxc,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002220 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002221 },
2222
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002223 {
2224 .vendor = "SST",
2225 .name = "SST49LF020",
Mateusz Murawskie33890d2009-06-12 11:45:10 +00002226 .bustype = CHIP_BUSTYPE_LPC,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002227 .manufacture_id = SST_ID,
2228 .model_id = SST_49LF020,
2229 .total_size = 256,
2230 .page_size = 16 * 1024,
2231 .tested = TEST_OK_PR,
2232 .probe = probe_jedec,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00002233 .probe_timing = 1, /* 150 ns */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002234 .erase = erase_49lf040,
2235 .write = write_49lf040,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002236 .read = read_memmapped,
Sven Schnellec208dfb2009-01-07 12:35:09 +00002237 },
2238
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002239 {
2240 .vendor = "SST",
2241 .name = "SST49LF020A",
Mateusz Murawskie33890d2009-06-12 11:45:10 +00002242 .bustype = CHIP_BUSTYPE_LPC,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002243 .manufacture_id = SST_ID,
2244 .model_id = SST_49LF020A,
2245 .total_size = 256,
Carl-Daniel Hailfingerda654322009-07-23 01:44:38 +00002246 .page_size = 4 * 1024,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002247 .tested = TEST_UNTESTED,
2248 .probe = probe_jedec,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00002249 .probe_timing = 1, /* 150 ns */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002250 .erase = erase_49lf040,
2251 .write = write_49lf040,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002252 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002253 },
2254
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002255 {
2256 .vendor = "SST",
2257 .name = "SST49LF040",
Mateusz Murawskie33890d2009-06-12 11:45:10 +00002258 .bustype = CHIP_BUSTYPE_LPC,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002259 .manufacture_id = SST_ID,
2260 .model_id = SST_49LF040,
2261 .total_size = 512,
2262 .page_size = 4096,
2263 .tested = TEST_OK_PREW,
2264 .probe = probe_jedec,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00002265 .probe_timing = 1, /* 150 ns */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002266 .erase = erase_49lf040,
2267 .write = write_49lf040,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002268 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002269 },
2270
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002271 {
2272 .vendor = "SST",
2273 .name = "SST49LF040B",
Urja Rannikko038a3122009-06-28 19:19:25 +00002274 .bustype = CHIP_BUSTYPE_LPC, /* A/A Mux */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002275 .manufacture_id = SST_ID,
2276 .model_id = SST_49LF040B,
2277 .total_size = 512,
2278 .page_size = 64 * 1024,
2279 .tested = TEST_OK_PREW,
2280 .probe = probe_sst_fwhub,
Udu Ogahc04ee222009-09-05 01:31:32 +00002281 .probe_timing = 1, /* 150ns | routine is wrapper to probe_jedec (sst_fwhub.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002282 .erase = erase_sst_fwhub,
2283 .write = write_sst_fwhub,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002284 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002285 },
2286
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002287 {
2288 .vendor = "SST",
2289 .name = "SST49LF080A",
Urja Rannikko038a3122009-06-28 19:19:25 +00002290 .bustype = CHIP_BUSTYPE_LPC, /* A/A Mux */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002291 .manufacture_id = SST_ID,
Urja Rannikko038a3122009-06-28 19:19:25 +00002292 .model_id = SST_49LF080A,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002293 .total_size = 1024,
2294 .page_size = 4096,
2295 .tested = TEST_OK_PREW,
2296 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002297 .probe_timing = TIMING_FIXME,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002298 .erase = erase_49lf040,
2299 .write = write_49lf040,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002300 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002301 },
2302
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002303 {
2304 .vendor = "SST",
2305 .name = "SST49LF160C",
Urja Rannikko038a3122009-06-28 19:19:25 +00002306 .bustype = CHIP_BUSTYPE_LPC,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002307 .manufacture_id = SST_ID,
2308 .model_id = SST_49LF160C,
2309 .total_size = 2048,
2310 .page_size = 4 * 1024,
2311 .tested = TEST_OK_PREW,
2312 .probe = probe_49lfxxxc,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002313 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (sst49lfxxxc.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002314 .erase = erase_49lfxxxc,
2315 .write = write_49lfxxxc,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002316 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002317 },
2318
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002319 {
2320 .vendor = "ST",
2321 .name = "M25P05-A",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002322 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002323 .manufacture_id = ST_ID,
2324 .model_id = ST_M25P05A,
2325 .total_size = 64,
2326 .page_size = 256,
2327 .tested = TEST_UNTESTED,
2328 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00002329 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002330 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00002331 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002332 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00002333 },
2334
Carl-Daniel Hailfinger32961be2009-07-23 01:40:20 +00002335 /* The ST M25P05 is a bit of a problem. It has the same ID as the
2336 * ST M25P05-A in RES mode, but supports only 128 byte writes instead
2337 * of 256 byte writes. We rely heavily on the fact that probe_spi_res
2338 * only is successful if RDID does not work.
2339 */
2340 {
2341 .vendor = "ST",
2342 .name = "M25P05.RES",
2343 .bustype = CHIP_BUSTYPE_SPI,
2344 .manufacture_id = ST_ID,
2345 .model_id = ST_M25P05_RES,
2346 .total_size = 64,
2347 .page_size = 256,
2348 .tested = TEST_UNTESTED,
2349 .probe = probe_spi_res,
2350 .probe_timing = TIMING_ZERO,
2351 .erase = spi_chip_erase_c7,
2352 .write = spi_chip_write_1, /* 128 */
2353 .read = spi_chip_read,
2354 },
2355
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002356 {
2357 .vendor = "ST",
2358 .name = "M25P10-A",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002359 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002360 .manufacture_id = ST_ID,
2361 .model_id = ST_M25P10A,
2362 .total_size = 128,
2363 .page_size = 256,
2364 .tested = TEST_UNTESTED,
2365 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00002366 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002367 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00002368 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002369 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00002370 },
2371
Carl-Daniel Hailfinger32961be2009-07-23 01:40:20 +00002372 /* The ST M25P10 has the same problem as the M25P05. */
2373 {
2374 .vendor = "ST",
2375 .name = "M25P10.RES",
2376 .bustype = CHIP_BUSTYPE_SPI,
2377 .manufacture_id = ST_ID,
2378 .model_id = ST_M25P10_RES,
2379 .total_size = 128,
2380 .page_size = 256,
2381 .tested = TEST_UNTESTED,
2382 .probe = probe_spi_res,
2383 .probe_timing = TIMING_ZERO,
2384 .erase = spi_chip_erase_c7,
2385 .write = spi_chip_write_1, /* 128 */
2386 .read = spi_chip_read,
2387 },
2388
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002389 {
2390 .vendor = "ST",
2391 .name = "M25P20",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002392 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002393 .manufacture_id = ST_ID,
2394 .model_id = ST_M25P20,
2395 .total_size = 256,
2396 .page_size = 256,
2397 .tested = TEST_UNTESTED,
2398 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00002399 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002400 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00002401 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002402 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00002403 },
2404
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002405 {
2406 .vendor = "ST",
2407 .name = "M25P40",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002408 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002409 .manufacture_id = ST_ID,
2410 .model_id = ST_M25P40,
2411 .total_size = 512,
2412 .page_size = 256,
Uwe Hermann04d5dc42009-07-03 17:12:05 +00002413 .tested = TEST_OK_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002414 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00002415 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002416 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00002417 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002418 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00002419 },
2420
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002421 {
2422 .vendor = "ST",
2423 .name = "M25P40-old",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002424 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002425 .manufacture_id = ST_ID,
2426 .model_id = ST_M25P40_RES,
2427 .total_size = 512,
2428 .page_size = 256,
2429 .tested = TEST_UNTESTED,
2430 .probe = probe_spi_res,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00002431 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002432 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00002433 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002434 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00002435 },
2436
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002437 {
2438 .vendor = "ST",
2439 .name = "M25P80",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002440 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002441 .manufacture_id = ST_ID,
2442 .model_id = ST_M25P80,
2443 .total_size = 1024,
2444 .page_size = 256,
Carl-Daniel Hailfinger5190ec12009-06-22 10:09:07 +00002445 .tested = TEST_OK_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002446 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00002447 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002448 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00002449 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002450 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00002451 },
2452
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002453 {
2454 .vendor = "ST",
2455 .name = "M25P16",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002456 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002457 .manufacture_id = ST_ID,
2458 .model_id = ST_M25P16,
2459 .total_size = 2048,
2460 .page_size = 256,
2461 .tested = TEST_OK_PREW,
2462 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00002463 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002464 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00002465 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002466 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00002467 },
2468
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002469 {
2470 .vendor = "ST",
2471 .name = "M25P32",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002472 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002473 .manufacture_id = ST_ID,
2474 .model_id = ST_M25P32,
2475 .total_size = 4096,
2476 .page_size = 256,
2477 .tested = TEST_OK_PREW,
2478 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00002479 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002480 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00002481 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002482 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00002483 },
2484
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002485 {
2486 .vendor = "ST",
2487 .name = "M25P64",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002488 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002489 .manufacture_id = ST_ID,
2490 .model_id = ST_M25P64,
2491 .total_size = 8192,
2492 .page_size = 256,
2493 .tested = TEST_UNTESTED,
2494 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00002495 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002496 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00002497 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002498 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00002499 },
2500
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002501 {
2502 .vendor = "ST",
2503 .name = "M25P128",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002504 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002505 .manufacture_id = ST_ID,
2506 .model_id = ST_M25P128,
2507 .total_size = 16384,
2508 .page_size = 256,
2509 .tested = TEST_UNTESTED,
2510 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00002511 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002512 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00002513 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002514 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00002515 },
2516
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002517 {
2518 .vendor = "ST",
2519 .name = "M29F002B",
Urja Rannikko038a3122009-06-28 19:19:25 +00002520 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002521 .manufacture_id = ST_ID,
2522 .model_id = ST_M29F002B,
2523 .total_size = 256,
2524 .page_size = 64 * 1024,
2525 .tested = TEST_UNTESTED,
2526 .probe = probe_jedec,
Udu Ogahc04ee222009-09-05 01:31:32 +00002527 .probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */
Peter Stugeaf8ffac2009-01-26 06:42:02 +00002528 .erase = erase_m29f002,
2529 .write = write_m29f002b,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002530 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002531 },
2532
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002533 {
2534 .vendor = "ST",
2535 .name = "M29F002T/NT",
Urja Rannikko038a3122009-06-28 19:19:25 +00002536 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002537 .manufacture_id = ST_ID,
2538 .model_id = ST_M29F002T,
2539 .total_size = 256,
2540 .page_size = 64 * 1024,
Peter Stugeaf8ffac2009-01-26 06:42:02 +00002541 .tested = TEST_OK_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002542 .probe = probe_jedec,
Udu Ogahc04ee222009-09-05 01:31:32 +00002543 .probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */
Peter Stugeaf8ffac2009-01-26 06:42:02 +00002544 .erase = erase_m29f002,
2545 .write = write_m29f002t,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002546 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002547 },
2548
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002549 {
2550 .vendor = "ST",
2551 .name = "M29F040B",
Urja Rannikko038a3122009-06-28 19:19:25 +00002552 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002553 .manufacture_id = ST_ID,
2554 .model_id = ST_M29F040B,
2555 .total_size = 512,
2556 .page_size = 64 * 1024,
2557 .tested = TEST_OK_PREW,
2558 .probe = probe_29f040b,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002559 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (am29f040b.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002560 .erase = erase_29f040b,
2561 .write = write_29f040b,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002562 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002563 },
2564
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002565 {
2566 .vendor = "ST",
2567 .name = "M29F400BT",
Urja Rannikko038a3122009-06-28 19:19:25 +00002568 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002569 .manufacture_id = ST_ID,
2570 .model_id = ST_M29F400BT,
2571 .total_size = 512,
2572 .page_size = 64 * 1024,
2573 .tested = TEST_UNTESTED,
2574 .probe = probe_m29f400bt,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002575 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (m29f400bt.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002576 .erase = erase_m29f400bt,
2577 .write = write_coreboot_m29f400bt,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002578 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002579 },
2580
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002581 {
2582 .vendor = "ST",
2583 .name = "M29W010B",
Urja Rannikko038a3122009-06-28 19:19:25 +00002584 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002585 .manufacture_id = ST_ID,
2586 .model_id = ST_M29W010B,
2587 .total_size = 128,
2588 .page_size = 16 * 1024,
2589 .tested = TEST_UNTESTED,
2590 .probe = probe_jedec,
Udu Ogahc04ee222009-09-05 01:31:32 +00002591 .probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002592 .erase = erase_chip_jedec,
2593 .write = write_jedec,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002594 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002595 },
2596
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002597 {
2598 .vendor = "ST",
2599 .name = "M29W040B",
Urja Rannikko038a3122009-06-28 19:19:25 +00002600 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002601 .manufacture_id = ST_ID,
2602 .model_id = ST_M29W040B,
2603 .total_size = 512,
2604 .page_size = 64 * 1024,
2605 .tested = TEST_UNTESTED,
2606 .probe = probe_jedec,
Udu Ogahc04ee222009-09-05 01:31:32 +00002607 .probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002608 .erase = erase_chip_jedec,
2609 .write = write_jedec,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002610 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002611 },
2612
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002613 {
2614 .vendor = "ST",
2615 .name = "M50FLW040A",
Urja Rannikko038a3122009-06-28 19:19:25 +00002616 .bustype = CHIP_BUSTYPE_FWH|CHIP_BUSTYPE_LPC, /* A/A Mux */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002617 .manufacture_id = ST_ID,
2618 .model_id = ST_M50FLW040A,
2619 .total_size = 512,
2620 .page_size = 64 * 1024,
2621 .tested = TEST_UNTESTED,
2622 .probe = probe_stm50flw0x0x,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002623 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (stm50flw0x0x.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002624 .erase = erase_stm50flw0x0x,
2625 .write = write_stm50flw0x0x,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002626 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002627 },
2628
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002629 {
2630 .vendor = "ST",
2631 .name = "M50FLW040B",
Urja Rannikko038a3122009-06-28 19:19:25 +00002632 .bustype = CHIP_BUSTYPE_FWH|CHIP_BUSTYPE_LPC, /* A/A Mux */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002633 .manufacture_id = ST_ID,
2634 .model_id = ST_M50FLW040B,
2635 .total_size = 512,
2636 .page_size = 64 * 1024,
2637 .tested = TEST_UNTESTED,
2638 .probe = probe_stm50flw0x0x,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002639 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (stm50flw0x0x.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002640 .erase = erase_stm50flw0x0x,
2641 .write = write_stm50flw0x0x,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002642 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002643 },
2644
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002645 {
2646 .vendor = "ST",
2647 .name = "M50FLW080A",
Urja Rannikko038a3122009-06-28 19:19:25 +00002648 .bustype = CHIP_BUSTYPE_FWH|CHIP_BUSTYPE_LPC, /* A/A Mux */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002649 .manufacture_id = ST_ID,
2650 .model_id = ST_M50FLW080A,
2651 .total_size = 1024,
2652 .page_size = 64 * 1024,
2653 .tested = TEST_OK_PREW,
2654 .probe = probe_stm50flw0x0x,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002655 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (stm50flw0x0x.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002656 .erase = erase_stm50flw0x0x,
2657 .write = write_stm50flw0x0x,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002658 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002659 },
2660
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002661 {
2662 .vendor = "ST",
2663 .name = "M50FLW080B",
Urja Rannikko038a3122009-06-28 19:19:25 +00002664 .bustype = CHIP_BUSTYPE_FWH|CHIP_BUSTYPE_LPC, /* A/A Mux */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002665 .manufacture_id = ST_ID,
2666 .model_id = ST_M50FLW080B,
2667 .total_size = 1024,
2668 .page_size = 64 * 1024,
2669 .tested = TEST_UNTESTED,
2670 .probe = probe_stm50flw0x0x,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002671 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (stm50flw0x0x.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002672 .erase = erase_stm50flw0x0x,
2673 .write = write_stm50flw0x0x,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002674 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002675 },
2676
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002677 {
2678 .vendor = "ST",
2679 .name = "M50FW002",
Urja Rannikko038a3122009-06-28 19:19:25 +00002680 .bustype = CHIP_BUSTYPE_FWH, /* A/A Mux */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002681 .manufacture_id = ST_ID,
2682 .model_id = ST_M50FW002,
2683 .total_size = 256,
2684 .page_size = 64 * 1024,
2685 .tested = TEST_UNTESTED,
2686 .probe = probe_49lfxxxc,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002687 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (sst49lfxxxc.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002688 .erase = NULL,
2689 .write = NULL,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002690 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002691 },
2692
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002693 {
2694 .vendor = "ST",
2695 .name = "M50FW016",
Urja Rannikko038a3122009-06-28 19:19:25 +00002696 .bustype = CHIP_BUSTYPE_FWH, /* A/A Mux */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002697 .manufacture_id = ST_ID,
2698 .model_id = ST_M50FW016,
2699 .total_size = 2048,
2700 .page_size = 64 * 1024,
2701 .tested = TEST_UNTESTED,
2702 .probe = probe_82802ab,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002703 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (82802ab.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002704 .erase = erase_82802ab,
2705 .write = write_82802ab,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002706 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002707 },
2708
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002709 {
2710 .vendor = "ST",
2711 .name = "M50FW040",
Urja Rannikko038a3122009-06-28 19:19:25 +00002712 .bustype = CHIP_BUSTYPE_FWH, /* A/A Mux */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002713 .manufacture_id = ST_ID,
2714 .model_id = ST_M50FW040,
2715 .total_size = 512,
2716 .page_size = 64 * 1024,
2717 .tested = TEST_OK_PREW,
2718 .probe = probe_82802ab,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002719 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (82802ab.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002720 .erase = erase_82802ab,
2721 .write = write_82802ab,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002722 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002723 },
2724
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002725 {
2726 .vendor = "ST",
2727 .name = "M50FW080",
Urja Rannikko038a3122009-06-28 19:19:25 +00002728 .bustype = CHIP_BUSTYPE_FWH, /* A/A Mux */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002729 .manufacture_id = ST_ID,
2730 .model_id = ST_M50FW080,
2731 .total_size = 1024,
2732 .page_size = 64 * 1024,
Peter Stugea657e942009-01-24 23:01:08 +00002733 .tested = TEST_OK_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002734 .probe = probe_82802ab,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002735 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (82802ab.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002736 .erase = erase_82802ab,
2737 .write = write_82802ab,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002738 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002739 },
2740
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002741 {
2742 .vendor = "ST",
2743 .name = "M50LPW116",
Urja Rannikko038a3122009-06-28 19:19:25 +00002744 .bustype = CHIP_BUSTYPE_LPC, /* A/A Mux */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002745 .manufacture_id = ST_ID,
2746 .model_id = ST_M50LPW116,
2747 .total_size = 2048,
2748 .page_size = 64 * 1024,
2749 .tested = TEST_UNTESTED,
2750 .probe = probe_jedec,
Udu Ogahc04ee222009-09-05 01:31:32 +00002751 .probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002752 .erase = erase_chip_jedec,
2753 .write = write_jedec,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002754 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002755 },
2756
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002757 {
2758 .vendor = "SyncMOS",
2759 .name = "S29C31004T",
Urja Rannikko038a3122009-06-28 19:19:25 +00002760 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002761 .manufacture_id = SYNCMOS_ID,
2762 .model_id = S29C31004T,
2763 .total_size = 512,
2764 .page_size = 128,
2765 .tested = TEST_UNTESTED,
2766 .probe = probe_jedec,
Udu Ogahc04ee222009-09-05 01:31:32 +00002767 .probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002768 .erase = erase_chip_jedec,
2769 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002770 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002771 },
2772
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002773 {
2774 .vendor = "SyncMOS",
2775 .name = "S29C51001T",
Urja Rannikko038a3122009-06-28 19:19:25 +00002776 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002777 .manufacture_id = SYNCMOS_ID,
2778 .model_id = S29C51001T,
2779 .total_size = 128,
2780 .page_size = 128,
2781 .tested = TEST_UNTESTED,
2782 .probe = probe_jedec,
Udu Ogahc04ee222009-09-05 01:31:32 +00002783 .probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002784 .erase = erase_chip_jedec,
2785 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002786 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002787 },
2788
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002789 {
2790 .vendor = "SyncMOS",
2791 .name = "S29C51002T",
Urja Rannikko038a3122009-06-28 19:19:25 +00002792 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002793 .manufacture_id = SYNCMOS_ID,
2794 .model_id = S29C51002T,
2795 .total_size = 256,
2796 .page_size = 128,
2797 .tested = TEST_OK_PREW,
2798 .probe = probe_jedec,
Udu Ogahc04ee222009-09-05 01:31:32 +00002799 .probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002800 .erase = erase_chip_jedec,
2801 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002802 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002803 },
2804
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002805 {
2806 .vendor = "SyncMOS",
2807 .name = "S29C51004T",
Urja Rannikko038a3122009-06-28 19:19:25 +00002808 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002809 .manufacture_id = SYNCMOS_ID,
2810 .model_id = S29C51004T,
2811 .total_size = 512,
2812 .page_size = 128,
2813 .tested = TEST_UNTESTED,
2814 .probe = probe_jedec,
Udu Ogahc04ee222009-09-05 01:31:32 +00002815 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002816 .erase = erase_chip_jedec,
2817 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002818 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002819 },
2820
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002821 {
Uwe Hermanna106d152009-05-27 23:17:40 +00002822 .vendor = "TI",
Carl-Daniel Hailfinger09b4fb72009-05-26 21:26:23 +00002823 .name = "TMS29F002RB",
Urja Rannikko038a3122009-06-28 19:19:25 +00002824 .bustype = CHIP_BUSTYPE_PARALLEL,
Carl-Daniel Hailfinger09b4fb72009-05-26 21:26:23 +00002825 .manufacture_id = TI_OLD_ID,
2826 .model_id = TI_TMS29F002RB,
2827 .total_size = 256,
2828 .page_size = 16384, /* Non-uniform sectors */
2829 .tested = TEST_UNTESTED,
2830 .probe = probe_jedec,
Udu Ogahc04ee222009-09-05 01:31:32 +00002831 .probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */
Carl-Daniel Hailfinger09b4fb72009-05-26 21:26:23 +00002832 .erase = NULL,
2833 .write = NULL,
2834 .read = read_memmapped,
2835 },
2836
2837 {
Uwe Hermanna106d152009-05-27 23:17:40 +00002838 .vendor = "TI",
Carl-Daniel Hailfinger09b4fb72009-05-26 21:26:23 +00002839 .name = "TMS29F002RT",
Urja Rannikko038a3122009-06-28 19:19:25 +00002840 .bustype = CHIP_BUSTYPE_PARALLEL,
Carl-Daniel Hailfinger09b4fb72009-05-26 21:26:23 +00002841 .manufacture_id = TI_OLD_ID,
2842 .model_id = TI_TMS29F002RT,
2843 .total_size = 256,
2844 .page_size = 16384, /* Non-uniform sectors */
2845 .tested = TEST_UNTESTED,
2846 .probe = probe_jedec,
Udu Ogahc04ee222009-09-05 01:31:32 +00002847 .probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */
Carl-Daniel Hailfinger09b4fb72009-05-26 21:26:23 +00002848 .erase = NULL,
2849 .write = NULL,
2850 .read = read_memmapped,
2851 },
2852
2853 {
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002854 .vendor = "Winbond",
2855 .name = "W25x10",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002856 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002857 .manufacture_id = WINBOND_NEX_ID,
2858 .model_id = W_25X10,
2859 .total_size = 128,
2860 .page_size = 256,
2861 .tested = TEST_UNTESTED,
2862 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00002863 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002864 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00002865 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002866 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00002867 },
2868
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002869 {
2870 .vendor = "Winbond",
2871 .name = "W25x20",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002872 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002873 .manufacture_id = WINBOND_NEX_ID,
2874 .model_id = W_25X20,
2875 .total_size = 256,
2876 .page_size = 256,
2877 .tested = TEST_UNTESTED,
2878 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00002879 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002880 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00002881 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002882 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00002883 },
2884
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002885 {
2886 .vendor = "Winbond",
2887 .name = "W25x40",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002888 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002889 .manufacture_id = WINBOND_NEX_ID,
2890 .model_id = W_25X40,
2891 .total_size = 512,
2892 .page_size = 256,
2893 .tested = TEST_OK_PREW,
2894 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00002895 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002896 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00002897 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002898 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00002899 },
2900
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002901 {
2902 .vendor = "Winbond",
2903 .name = "W25x80",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002904 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002905 .manufacture_id = WINBOND_NEX_ID,
2906 .model_id = W_25X80,
2907 .total_size = 1024,
2908 .page_size = 256,
2909 .tested = TEST_OK_PREW,
2910 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00002911 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002912 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00002913 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002914 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00002915 },
2916
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002917 {
2918 .vendor = "Winbond",
Hector Martina721ae22009-07-11 19:39:11 +00002919 .name = "W25x16",
2920 .bustype = CHIP_BUSTYPE_SPI,
2921 .manufacture_id = WINBOND_NEX_ID,
2922 .model_id = W_25X16,
2923 .total_size = 2048,
2924 .page_size = 256,
2925 .tested = TEST_OK_PR,
2926 .probe = probe_spi_rdid,
2927 .probe_timing = TIMING_ZERO,
2928 .erase = spi_chip_erase_c7,
2929 .write = spi_chip_write_256,
2930 .read = spi_chip_read,
2931 },
2932
2933 {
2934 .vendor = "Winbond",
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002935 .name = "W29C011",
Urja Rannikko038a3122009-06-28 19:19:25 +00002936 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002937 .manufacture_id = WINBOND_ID,
2938 .model_id = W_29C011,
2939 .total_size = 128,
2940 .page_size = 128,
2941 .tested = TEST_OK_PREW,
2942 .probe = probe_jedec,
Udu Ogahc04ee222009-09-05 01:31:32 +00002943 .probe_timing = 10, /* used datasheet for the W29C011A */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002944 .erase = erase_chip_jedec,
2945 .write = write_jedec,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002946 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002947 },
2948
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002949 {
2950 .vendor = "Winbond",
2951 .name = "W29C020C",
Urja Rannikko161b8852009-06-05 08:47:37 +00002952 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002953 .manufacture_id = WINBOND_ID,
2954 .model_id = W_29C020C,
2955 .total_size = 256,
2956 .page_size = 128,
2957 .tested = TEST_OK_PREW,
2958 .probe = probe_jedec,
Mateusz Murawski8b2f46b2009-06-12 21:29:36 +00002959 .probe_timing = 10,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002960 .erase = erase_chip_jedec,
2961 .write = write_jedec,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002962 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002963 },
2964
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002965 {
2966 .vendor = "Winbond",
2967 .name = "W29C040P",
Urja Rannikko161b8852009-06-05 08:47:37 +00002968 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002969 .manufacture_id = WINBOND_ID,
2970 .model_id = W_29C040P,
2971 .total_size = 512,
2972 .page_size = 256,
2973 .tested = TEST_UNTESTED,
2974 .probe = probe_jedec,
Mateusz Murawski8b2f46b2009-06-12 21:29:36 +00002975 .probe_timing = 10,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002976 .erase = erase_chip_jedec,
2977 .write = write_jedec,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002978 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002979 },
2980
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002981 {
2982 .vendor = "Winbond",
2983 .name = "W29EE011",
Urja Rannikko038a3122009-06-28 19:19:25 +00002984 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002985 .manufacture_id = WINBOND_ID,
2986 .model_id = W_29C011,
2987 .total_size = 128,
2988 .page_size = 128,
2989 .tested = TEST_OK_PREW,
2990 .probe = probe_w29ee011,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002991 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (w29ee011.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002992 .erase = erase_chip_jedec,
2993 .write = write_jedec,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002994 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002995 },
2996
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002997 {
2998 .vendor = "Winbond",
2999 .name = "W39V040A",
Mateusz Murawski8b2f46b2009-06-12 21:29:36 +00003000 .bustype = CHIP_BUSTYPE_LPC,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003001 .manufacture_id = WINBOND_ID,
3002 .model_id = W_39V040A,
3003 .total_size = 512,
3004 .page_size = 64*1024,
Uwe Hermann690bcba2009-05-21 17:11:25 +00003005 .tested = TEST_OK_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003006 .probe = probe_jedec,
Mateusz Murawski8b2f46b2009-06-12 21:29:36 +00003007 .probe_timing = 10,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003008 .erase = erase_chip_jedec,
Uwe Hermann24f9fbe2009-05-12 14:06:04 +00003009 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00003010 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00003011 },
3012
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003013 {
3014 .vendor = "Winbond",
3015 .name = "W39V040B",
Mateusz Murawski8b2f46b2009-06-12 21:29:36 +00003016 .bustype = CHIP_BUSTYPE_LPC,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003017 .manufacture_id = WINBOND_ID,
3018 .model_id = W_39V040B,
3019 .total_size = 512,
3020 .page_size = 64*1024,
Luc Verhaegen8bfb59c2009-07-08 14:50:36 +00003021 .tested = TEST_OK_PR | TEST_BAD_ERASE | TEST_BAD_WRITE,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003022 .probe = probe_jedec,
Mateusz Murawski8b2f46b2009-06-12 21:29:36 +00003023 .probe_timing = 10,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003024 .erase = erase_chip_jedec,
Uwe Hermann24f9fbe2009-05-12 14:06:04 +00003025 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00003026 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00003027 },
3028
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003029 {
3030 .vendor = "Winbond",
3031 .name = "W39V040C",
Mateusz Murawski8b2f46b2009-06-12 21:29:36 +00003032 .bustype = CHIP_BUSTYPE_LPC,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003033 .manufacture_id = WINBOND_ID,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00003034 .model_id = W_39V040C,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003035 .total_size = 512,
3036 .page_size = 64*1024,
3037 .tested = TEST_OK_PREW,
3038 .probe = probe_w39v040c,
Maciej Pijankac6e11112009-06-03 14:46:22 +00003039 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (w39v040c.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003040 .erase = erase_w39v040c,
3041 .write = write_w39v040c,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00003042 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00003043 },
3044
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003045 {
3046 .vendor = "Winbond",
3047 .name = "W39V040FA",
Mateusz Murawski8b2f46b2009-06-12 21:29:36 +00003048 .bustype = CHIP_BUSTYPE_FWH,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003049 .manufacture_id = WINBOND_ID,
3050 .model_id = W_39V040FA,
3051 .total_size = 512,
3052 .page_size = 64*1024,
3053 .tested = TEST_OK_PREW,
3054 .probe = probe_jedec,
Mateusz Murawski8b2f46b2009-06-12 21:29:36 +00003055 .probe_timing = 10,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003056 .erase = erase_chip_jedec,
Uwe Hermann24f9fbe2009-05-12 14:06:04 +00003057 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00003058 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00003059 },
3060
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003061 {
3062 .vendor = "Winbond",
3063 .name = "W39V080A",
Mateusz Murawski8b2f46b2009-06-12 21:29:36 +00003064 .bustype = CHIP_BUSTYPE_LPC,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003065 .manufacture_id = WINBOND_ID,
3066 .model_id = W_39V080A,
3067 .total_size = 1024,
3068 .page_size = 64*1024,
3069 .tested = TEST_OK_PREW,
3070 .probe = probe_jedec,
Mateusz Murawski8b2f46b2009-06-12 21:29:36 +00003071 .probe_timing = 10,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003072 .erase = erase_chip_jedec,
Uwe Hermann24f9fbe2009-05-12 14:06:04 +00003073 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00003074 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00003075 },
3076
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003077 {
3078 .vendor = "Winbond",
3079 .name = "W49F002U",
Urja Rannikko038a3122009-06-28 19:19:25 +00003080 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003081 .manufacture_id = WINBOND_ID,
3082 .model_id = W_49F002U,
3083 .total_size = 256,
3084 .page_size = 128,
3085 .tested = TEST_OK_PREW,
3086 .probe = probe_jedec,
Udu Ogahc04ee222009-09-05 01:31:32 +00003087 .probe_timing = 10,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003088 .erase = erase_chip_jedec,
3089 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00003090 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00003091 },
3092
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003093 {
3094 .vendor = "Winbond",
3095 .name = "W49V002A",
Mateusz Murawski8b2f46b2009-06-12 21:29:36 +00003096 .bustype = CHIP_BUSTYPE_LPC,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003097 .manufacture_id = WINBOND_ID,
3098 .model_id = W_49V002A,
3099 .total_size = 256,
3100 .page_size = 128,
3101 .tested = TEST_OK_PREW,
3102 .probe = probe_jedec,
Mateusz Murawski8b2f46b2009-06-12 21:29:36 +00003103 .probe_timing = 10,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003104 .erase = erase_chip_jedec,
3105 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00003106 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00003107 },
3108
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003109 {
3110 .vendor = "Winbond",
3111 .name = "W49V002FA",
Mateusz Murawski8b2f46b2009-06-12 21:29:36 +00003112 .bustype = CHIP_BUSTYPE_FWH,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003113 .manufacture_id = WINBOND_ID,
3114 .model_id = W_49V002FA,
3115 .total_size = 256,
3116 .page_size = 128,
3117 .tested = TEST_UNTESTED,
3118 .probe = probe_jedec,
Udu Ogahc04ee222009-09-05 01:31:32 +00003119 .probe_timing = 10,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003120 .erase = erase_chip_jedec,
3121 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00003122 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00003123 },
3124
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003125 {
3126 .vendor = "Winbond",
3127 .name = "W39V080FA",
Mateusz Murawski8b2f46b2009-06-12 21:29:36 +00003128 .bustype = CHIP_BUSTYPE_FWH,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003129 .manufacture_id = WINBOND_ID,
3130 .model_id = W_39V080FA,
3131 .total_size = 1024,
3132 .page_size = 64*1024,
3133 .tested = TEST_OK_PREW,
3134 .probe = probe_winbond_fwhub,
Maciej Pijankac6e11112009-06-03 14:46:22 +00003135 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (w39v080fa.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003136 .erase = erase_winbond_fwhub,
3137 .write = write_winbond_fwhub,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00003138 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00003139 },
3140
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003141 {
3142 .vendor = "Winbond",
3143 .name = "W39V080FA (dual mode)",
Mateusz Murawski8b2f46b2009-06-12 21:29:36 +00003144 .bustype = CHIP_BUSTYPE_FWH,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003145 .manufacture_id = WINBOND_ID,
3146 .model_id = W_39V080FA_DM,
3147 .total_size = 512,
3148 .page_size = 64*1024,
3149 .tested = TEST_UNTESTED,
3150 .probe = probe_winbond_fwhub,
Maciej Pijankac6e11112009-06-03 14:46:22 +00003151 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (w39v080fa.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003152 .erase = erase_winbond_fwhub,
3153 .write = write_winbond_fwhub,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00003154 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00003155 },
3156
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003157 {
3158 .vendor = "Atmel",
3159 .name = "unknown Atmel SPI chip",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00003160 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003161 .manufacture_id = ATMEL_ID,
3162 .model_id = GENERIC_DEVICE_ID,
3163 .total_size = 0,
3164 .page_size = 256,
Carl-Daniel Hailfinger42882fd2009-04-22 13:33:43 +00003165 .tested = TEST_BAD_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003166 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00003167 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003168 .erase = NULL,
3169 .write = NULL,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00003170 .read = NULL,
FENG yu ningff692fb2008-12-08 18:15:10 +00003171 },
3172
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003173 {
3174 .vendor = "EON",
3175 .name = "unknown EON SPI chip",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00003176 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003177 .manufacture_id = EON_ID_NOPREFIX,
3178 .model_id = GENERIC_DEVICE_ID,
3179 .total_size = 0,
3180 .page_size = 256,
Carl-Daniel Hailfinger42882fd2009-04-22 13:33:43 +00003181 .tested = TEST_BAD_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003182 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00003183 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003184 .erase = NULL,
3185 .write = NULL,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00003186 .read = NULL,
FENG yu ningff692fb2008-12-08 18:15:10 +00003187 },
3188
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003189 {
3190 .vendor = "Macronix",
3191 .name = "unknown Macronix SPI chip",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00003192 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003193 .manufacture_id = MX_ID,
3194 .model_id = GENERIC_DEVICE_ID,
3195 .total_size = 0,
3196 .page_size = 256,
Carl-Daniel Hailfinger42882fd2009-04-22 13:33:43 +00003197 .tested = TEST_BAD_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003198 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00003199 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003200 .erase = NULL,
3201 .write = NULL,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00003202 .read = NULL,
FENG yu ningff692fb2008-12-08 18:15:10 +00003203 },
3204
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003205 {
3206 .vendor = "PMC",
3207 .name = "unknown PMC SPI chip",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00003208 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003209 .manufacture_id = PMC_ID,
3210 .model_id = GENERIC_DEVICE_ID,
3211 .total_size = 0,
3212 .page_size = 256,
Carl-Daniel Hailfinger42882fd2009-04-22 13:33:43 +00003213 .tested = TEST_BAD_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003214 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00003215 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003216 .erase = NULL,
3217 .write = NULL,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00003218 .read = NULL,
FENG yu ningff692fb2008-12-08 18:15:10 +00003219 },
3220
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003221 {
3222 .vendor = "SST",
3223 .name = "unknown SST SPI chip",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00003224 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003225 .manufacture_id = SST_ID,
3226 .model_id = GENERIC_DEVICE_ID,
3227 .total_size = 0,
3228 .page_size = 256,
Carl-Daniel Hailfinger42882fd2009-04-22 13:33:43 +00003229 .tested = TEST_BAD_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003230 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00003231 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003232 .erase = NULL,
3233 .write = NULL,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00003234 .read = NULL,
FENG yu ningff692fb2008-12-08 18:15:10 +00003235 },
3236
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003237 {
3238 .vendor = "ST",
3239 .name = "unknown ST SPI chip",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00003240 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003241 .manufacture_id = ST_ID,
3242 .model_id = GENERIC_DEVICE_ID,
3243 .total_size = 0,
3244 .page_size = 256,
Carl-Daniel Hailfinger42882fd2009-04-22 13:33:43 +00003245 .tested = TEST_BAD_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003246 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00003247 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003248 .erase = NULL,
3249 .write = NULL,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00003250 .read = NULL,
FENG yu ningff692fb2008-12-08 18:15:10 +00003251 },
Uwe Hermannfc425e82008-03-16 02:06:25 +00003252
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003253 { NULL }
Stephan Guilloux72cf5652009-04-21 01:46:07 +00003254};