blob: 48378c8dc463b3f4d85fa72f9c9a9705fee3385d [file] [log] [blame]
Ollie Lho184a4042005-11-26 21:55:36 +00001/*
Uwe Hermannd1107642007-08-29 17:52:32 +00002 * This file is part of the flashrom project.
Ollie Lho184a4042005-11-26 21:55:36 +00003 *
Uwe Hermannd22a1d42007-09-09 20:21:05 +00004 * Copyright (C) 2000 Silicon Integrated System Corporation
5 * Copyright (C) 2004 Tyan Corp
Stefan Reinauer4c390c82008-07-02 13:33:09 +00006 * Copyright (C) 2005-2008 coresystems GmbH <stepan@openbios.org>
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +00007 * Copyright (C) 2006-2009 Carl-Daniel Hailfinger
Uwe Hermannd1107642007-08-29 17:52:32 +00008 *
Stefan Reinauerce532972007-05-23 17:20:56 +00009 * This program is free software; you can redistribute it and/or modify
10 * it under the terms of the GNU General Public License as published by
11 * the Free Software Foundation; either version 2 of the License, or
12 * (at your option) any later version.
Ollie Lho184a4042005-11-26 21:55:36 +000013 *
Stefan Reinauerce532972007-05-23 17:20:56 +000014 * This program is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 * GNU General Public License for more details.
Ollie Lho184a4042005-11-26 21:55:36 +000018 *
Stefan Reinauerce532972007-05-23 17:20:56 +000019 * You should have received a copy of the GNU General Public License
20 * along with this program; if not, write to the Free Software
Uwe Hermannd1107642007-08-29 17:52:32 +000021 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Ollie Lho184a4042005-11-26 21:55:36 +000022 */
23
24#include "flash.h"
Ollie Lho184a4042005-11-26 21:55:36 +000025
Uwe Hermannfc425e82008-03-16 02:06:25 +000026/**
Uwe Hermanna9720402009-05-21 15:55:46 +000027 * List of supported flash chips.
Uwe Hermannfc425e82008-03-16 02:06:25 +000028 *
29 * Please keep the list sorted by vendor name and chip name, so that
30 * the output of 'flashrom -L' is alphabetically sorted.
31 */
Ollie Lho184a4042005-11-26 21:55:36 +000032struct flashchip flashchips[] = {
Uwe Hermannfc425e82008-03-16 02:06:25 +000033
FENG yu ningff692fb2008-12-08 18:15:10 +000034 /* Vendor, Chip, Vendor ID, Chip ID,
Maciej Pijankac6e11112009-06-03 14:46:22 +000035 * Bus Type,
FENG yu ningff692fb2008-12-08 18:15:10 +000036 * Total size (kB), Page size (B),
37 * Test status,
Maciej Pijankac6e11112009-06-03 14:46:22 +000038 * Probe function, Probe function timing argument, Erase function, Write function, Read function
FENG yu ningff692fb2008-12-08 18:15:10 +000039 */
40
Stephan Guilloux5c5b5252009-01-08 03:40:17 +000041 {
42 .vendor = "AMD",
43 .name = "Am29F002(N)BB",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +000044 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +000045 .manufacture_id = AMD_ID,
46 .model_id = AM_29F002BB,
47 .total_size = 256,
48 .page_size = 256,
49 .tested = TEST_UNTESTED,
50 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +000051 .probe_timing = TIMING_FIXME,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +000052 .erase = erase_chip_jedec,
53 .write = write_en29f002a,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +000054 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +000055 },
56
Stephan Guilloux5c5b5252009-01-08 03:40:17 +000057 {
58 .vendor = "AMD",
59 .name = "Am29F002(N)BT",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +000060 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +000061 .manufacture_id = AMD_ID,
62 .model_id = AM_29F002BT,
63 .total_size = 256,
64 .page_size = 256,
65 .tested = TEST_OK_PREW,
66 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +000067 .probe_timing = TIMING_FIXME,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +000068 .erase = erase_chip_jedec,
69 .write = write_en29f002a,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +000070 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +000071 },
72
Stephan Guilloux5c5b5252009-01-08 03:40:17 +000073 {
74 .vendor = "AMD",
75 .name = "Am29F016D",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +000076 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +000077 .manufacture_id = AMD_ID,
78 .model_id = AM_29F016D,
79 .total_size = 2048,
80 .page_size = 64 * 1024,
81 .tested = TEST_UNTESTED,
82 .probe = probe_29f040b,
Maciej Pijankac6e11112009-06-03 14:46:22 +000083 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (am29f040b.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +000084 .erase = erase_29f040b,
85 .write = write_29f040b,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +000086 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +000087 },
88
Stephan Guilloux5c5b5252009-01-08 03:40:17 +000089 {
90 .vendor = "AMD",
91 .name = "Am29F040B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +000092 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +000093 .manufacture_id = AMD_ID,
94 .model_id = AM_29F040B,
95 .total_size = 512,
96 .page_size = 64 * 1024,
97 .tested = TEST_OK_PREW,
98 .probe = probe_29f040b,
Maciej Pijankac6e11112009-06-03 14:46:22 +000099 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (am29f040b.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000100 .erase = erase_29f040b,
101 .write = write_29f040b,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +0000102 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +0000103 },
104
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000105 {
106 .vendor = "AMD",
Peter Stuge8440cc02009-01-25 23:55:12 +0000107 .name = "Am29F080B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000108 .bustype = CHIP_BUSTYPE_NONSPI,
Mateusz Murawski5bae4382009-06-02 00:38:14 +0000109 .manufacture_id = AMD_ID,
110 .model_id = AM_29F080B,
Peter Stuge8440cc02009-01-25 23:55:12 +0000111 .total_size = 1024,
112 .page_size = 64 * 1024,
113 .tested = TEST_UNTESTED,
114 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +0000115 .probe_timing = TIMING_FIXME,
Peter Stuge8440cc02009-01-25 23:55:12 +0000116 .erase = erase_29f040b,
117 .write = write_29f040b,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +0000118 .read = read_memmapped,
Peter Stuge8440cc02009-01-25 23:55:12 +0000119 },
120
121 {
122 .vendor = "AMD",
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000123 .name = "Am29LV040B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000124 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000125 .manufacture_id = AMD_ID,
126 .model_id = AM_29LV040B,
127 .total_size = 512,
128 .page_size = 64 * 1024,
129 .tested = TEST_UNTESTED,
130 .probe = probe_29f040b,
Maciej Pijankac6e11112009-06-03 14:46:22 +0000131 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (am29f040b.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000132 .erase = erase_29f040b,
133 .write = write_29f040b,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +0000134 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +0000135 },
136
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000137 {
Peter Stuge8440cc02009-01-25 23:55:12 +0000138 .vendor = "AMD",
139 .name = "Am29LV081B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000140 .bustype = CHIP_BUSTYPE_NONSPI,
Mateusz Murawski5bae4382009-06-02 00:38:14 +0000141 .manufacture_id = AMD_ID,
142 .model_id = AM_29LV081B,
Peter Stuge8440cc02009-01-25 23:55:12 +0000143 .total_size = 1024,
144 .page_size = 64 * 1024,
145 .tested = TEST_UNTESTED,
146 .probe = probe_29f040b,
Maciej Pijankac6e11112009-06-03 14:46:22 +0000147 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (am29f040b.c) */
Peter Stuge8440cc02009-01-25 23:55:12 +0000148 .erase = erase_29f040b,
149 .write = write_29f040b,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +0000150 .read = read_memmapped,
Peter Stuge8440cc02009-01-25 23:55:12 +0000151 },
152
153 {
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000154 .vendor = "ASD",
155 .name = "AE49F2008",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000156 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000157 .manufacture_id = ASD_ID,
158 .model_id = ASD_AE49F2008,
159 .total_size = 256,
160 .page_size = 128,
161 .tested = TEST_UNTESTED,
162 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +0000163 .probe_timing = TIMING_FIXME,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000164 .erase = erase_chip_jedec,
165 .write = write_jedec,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +0000166 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +0000167 },
168
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000169 {
170 .vendor = "Atmel",
171 .name = "AT25DF021",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000172 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000173 .manufacture_id = ATMEL_ID,
174 .model_id = AT_25DF021,
175 .total_size = 256,
176 .page_size = 256,
177 .tested = TEST_UNTESTED,
178 .probe = probe_spi_rdid,
Carl-Daniel Hailfingerf8bc28f2009-01-08 16:53:13 +0000179 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +0000180 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000181 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000182 },
183
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000184 {
185 .vendor = "Atmel",
186 .name = "AT25DF041A",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000187 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000188 .manufacture_id = ATMEL_ID,
189 .model_id = AT_25DF041A,
190 .total_size = 512,
191 .page_size = 256,
192 .tested = TEST_UNTESTED,
193 .probe = probe_spi_rdid,
Carl-Daniel Hailfingerf8bc28f2009-01-08 16:53:13 +0000194 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +0000195 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000196 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000197 },
198
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000199 {
200 .vendor = "Atmel",
201 .name = "AT25DF081",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000202 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000203 .manufacture_id = ATMEL_ID,
204 .model_id = AT_25DF081,
205 .total_size = 1024,
206 .page_size = 256,
207 .tested = TEST_UNTESTED,
208 .probe = probe_spi_rdid,
Carl-Daniel Hailfingerf8bc28f2009-01-08 16:53:13 +0000209 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +0000210 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000211 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000212 },
213
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000214 {
215 .vendor = "Atmel",
216 .name = "AT25DF161",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000217 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000218 .manufacture_id = ATMEL_ID,
219 .model_id = AT_25DF161,
220 .total_size = 2048,
221 .page_size = 256,
222 .tested = TEST_UNTESTED,
223 .probe = probe_spi_rdid,
Carl-Daniel Hailfingerf8bc28f2009-01-08 16:53:13 +0000224 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +0000225 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000226 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000227 },
228
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000229 {
230 .vendor = "Atmel",
231 .name = "AT25DF321",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000232 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000233 .manufacture_id = ATMEL_ID,
234 .model_id = AT_25DF321,
235 .total_size = 4096,
236 .page_size = 256,
237 .tested = TEST_OK_PREW,
238 .probe = probe_spi_rdid,
Carl-Daniel Hailfingerf8bc28f2009-01-08 16:53:13 +0000239 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +0000240 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000241 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000242 },
243
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000244 {
245 .vendor = "Atmel",
246 .name = "AT25DF321A",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000247 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000248 .manufacture_id = ATMEL_ID,
249 .model_id = AT_25DF321A,
250 .total_size = 4096,
251 .page_size = 256,
252 .tested = TEST_UNTESTED,
253 .probe = probe_spi_rdid,
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 = "AT25DF641",
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_25DF641,
265 .total_size = 8192,
266 .page_size = 256,
267 .tested = TEST_UNTESTED,
268 .probe = probe_spi_rdid,
Carl-Daniel Hailfingerf8bc28f2009-01-08 16:53:13 +0000269 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +0000270 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000271 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000272 },
273
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000274 {
275 .vendor = "Atmel",
276 .name = "AT25F512B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000277 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000278 .manufacture_id = ATMEL_ID,
279 .model_id = AT_25F512B,
280 .total_size = 64,
281 .page_size = 256,
282 .tested = TEST_UNTESTED,
283 .probe = probe_spi_rdid,
Carl-Daniel Hailfingerf8bc28f2009-01-08 16:53:13 +0000284 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +0000285 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000286 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000287 },
288
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000289 {
290 .vendor = "Atmel",
291 .name = "AT25FS010",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000292 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000293 .manufacture_id = ATMEL_ID,
294 .model_id = AT_25FS010,
295 .total_size = 128,
296 .page_size = 256,
297 .tested = TEST_UNTESTED,
298 .probe = probe_spi_rdid,
Carl-Daniel Hailfingerf8bc28f2009-01-08 16:53:13 +0000299 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +0000300 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000301 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000302 },
303
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000304 {
305 .vendor = "Atmel",
306 .name = "AT25FS040",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000307 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000308 .manufacture_id = ATMEL_ID,
309 .model_id = AT_25FS040,
310 .total_size = 512,
311 .page_size = 256,
312 .tested = TEST_UNTESTED,
313 .probe = probe_spi_rdid,
Carl-Daniel Hailfingerf8bc28f2009-01-08 16:53:13 +0000314 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +0000315 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000316 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000317 },
318
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000319 {
320 .vendor = "Atmel",
321 .name = "AT26DF041",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000322 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000323 .manufacture_id = ATMEL_ID,
324 .model_id = AT_26DF041,
325 .total_size = 512,
326 .page_size = 256,
327 .tested = TEST_UNTESTED,
328 .probe = probe_spi_rdid,
329 .erase = NULL,
330 .write = NULL /* Incompatible Page write */,
331 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000332 },
333
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000334 {
335 .vendor = "Atmel",
336 .name = "AT26DF081A",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000337 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000338 .manufacture_id = ATMEL_ID,
339 .model_id = AT_26DF081A,
340 .total_size = 1024,
341 .page_size = 256,
342 .tested = TEST_UNTESTED,
343 .probe = probe_spi_rdid,
Carl-Daniel Hailfingerf8bc28f2009-01-08 16:53:13 +0000344 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +0000345 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000346 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000347 },
348
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000349 {
350 .vendor = "Atmel",
351 .name = "AT26DF161",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000352 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000353 .manufacture_id = ATMEL_ID,
354 .model_id = AT_26DF161,
355 .total_size = 2048,
356 .page_size = 256,
357 .tested = TEST_UNTESTED,
358 .probe = probe_spi_rdid,
Carl-Daniel Hailfingerf8bc28f2009-01-08 16:53:13 +0000359 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +0000360 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000361 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000362 },
363
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000364 {
365 .vendor = "Atmel",
366 .name = "AT26DF161A",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000367 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000368 .manufacture_id = ATMEL_ID,
369 .model_id = AT_26DF161A,
370 .total_size = 2048,
371 .page_size = 256,
372 .tested = TEST_UNTESTED,
373 .probe = probe_spi_rdid,
Carl-Daniel Hailfingerf8bc28f2009-01-08 16:53:13 +0000374 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +0000375 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000376 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000377 },
378
379 /*The AT26DF321 has the same ID as the AT25DF321. */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000380 /*{
381 .vendor = "Atmel",
382 .name = "AT26DF321",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000383 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000384 .manufacture_id = ATMEL_ID,
385 .model_id = AT_26DF321,
386 .total_size = 4096,
387 .page_size = 256,
388 .tested = TEST_UNTESTED,
389 .probe = probe_spi_rdid,
Carl-Daniel Hailfingerf8bc28f2009-01-08 16:53:13 +0000390 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +0000391 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000392 .read = spi_chip_read,
393 },*/
FENG yu ningff692fb2008-12-08 18:15:10 +0000394
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000395 {
396 .vendor = "Atmel",
397 .name = "AT26F004",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000398 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000399 .manufacture_id = ATMEL_ID,
400 .model_id = AT_26F004,
401 .total_size = 512,
402 .page_size = 256,
403 .tested = TEST_UNTESTED,
404 .probe = probe_spi_rdid,
Carl-Daniel Hailfingerf8bc28f2009-01-08 16:53:13 +0000405 .erase = spi_chip_erase_60_c7,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000406 .write = NULL /* Incompatible Page write */,
407 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000408 },
409
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000410 {
411 .vendor = "Atmel",
Maciej Pijankabc2bbd22009-06-02 16:45:59 +0000412 .name = "AT29C512",
413 .bustype = CHIP_BUSTYPE_NONSPI,
414 .manufacture_id = ATMEL_ID,
415 .model_id = AT_29C512,
416 .total_size = 64,
417 .page_size = 128,
418 .tested = TEST_OK_PREW,
Maciej Pijankac6e11112009-06-03 14:46:22 +0000419 .probe = probe_jedec,
420 .probe_timing = 10000, /* 10mS, Enter=Exec */
Maciej Pijankabc2bbd22009-06-02 16:45:59 +0000421 .erase = erase_chip_jedec,
422 .write = write_jedec,
423 .read = read_memmapped,
424
425 },
426
427 {
428 .vendor = "Atmel",
Uwe Hermann8403ccb2009-05-16 21:39:19 +0000429 .name = "AT29C010A",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000430 .bustype = CHIP_BUSTYPE_NONSPI,
Uwe Hermann8403ccb2009-05-16 21:39:19 +0000431 .manufacture_id = ATMEL_ID,
432 .model_id = AT_29C010A,
433 .total_size = 128,
434 .page_size = 128,
435 .tested = TEST_OK_PRE,
436 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +0000437 .probe_timing = 10000, /* 10mS, Enter=Exec */
Uwe Hermann8403ccb2009-05-16 21:39:19 +0000438 .erase = erase_chip_jedec,
439 .write = write_jedec, /* FIXME */
440 .read = read_memmapped,
441 },
442
443 {
444 .vendor = "Atmel",
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000445 .name = "AT29C020",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000446 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000447 .manufacture_id = ATMEL_ID,
448 .model_id = AT_29C020,
449 .total_size = 256,
450 .page_size = 256,
451 .tested = TEST_OK_PREW,
452 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +0000453 .probe_timing = TIMING_FIXME,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000454 .erase = erase_chip_jedec,
455 .write = write_jedec,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +0000456 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +0000457 },
458
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000459 {
460 .vendor = "Atmel",
461 .name = "AT29C040A",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000462 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000463 .manufacture_id = ATMEL_ID,
464 .model_id = AT_29C040A,
465 .total_size = 512,
466 .page_size = 256,
467 .tested = TEST_UNTESTED,
468 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +0000469 .probe_timing = TIMING_FIXME,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000470 .erase = erase_chip_jedec,
471 .write = write_jedec,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +0000472 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +0000473 },
474
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000475 {
476 .vendor = "Atmel",
477 .name = "AT45CS1282",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000478 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000479 .manufacture_id = ATMEL_ID,
480 .model_id = AT_45CS1282,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000481 .total_size = 16896 /* No power of two sizes */,
482 .page_size = 1056 /* No power of two sizes */,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000483 .tested = TEST_BAD_READ,
484 .probe = probe_spi_rdid,
485 .erase = NULL,
486 .write = NULL /* Incompatible Page write */,
487 .read = NULL /* Incompatible read */,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000488 },
FENG yu ningff692fb2008-12-08 18:15:10 +0000489
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000490 {
491 .vendor = "Atmel",
492 .name = "AT45DB011D",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000493 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000494 .manufacture_id = ATMEL_ID,
495 .model_id = AT_45DB011D,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000496 .total_size = 128 /* Size can only be determined from status register */,
497 .page_size = 256 /* Size can only be determined from status register */,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000498 .tested = TEST_BAD_READ,
499 .probe = probe_spi_rdid,
500 .erase = NULL,
501 .write = NULL,
502 .read = NULL,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000503 },
FENG yu ningff692fb2008-12-08 18:15:10 +0000504
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000505 {
506 .vendor = "Atmel",
507 .name = "AT45DB021D",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000508 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000509 .manufacture_id = ATMEL_ID,
510 .model_id = AT_45DB021D,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000511 .total_size = 256 /* Size can only be determined from status register */,
512 .page_size = 256 /* Size can only be determined from status register */,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000513 .tested = TEST_BAD_READ,
514 .probe = probe_spi_rdid,
515 .erase = NULL,
516 .write = NULL,
517 .read = NULL,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000518 },
FENG yu ningff692fb2008-12-08 18:15:10 +0000519
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000520 {
521 .vendor = "Atmel",
522 .name = "AT45DB041D",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000523 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000524 .manufacture_id = ATMEL_ID,
525 .model_id = AT_45DB041D,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000526 .total_size = 512 /* Size can only be determined from status register */,
527 .page_size = 256 /* Size can only be determined from status register */,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000528 .tested = TEST_BAD_READ,
529 .probe = probe_spi_rdid,
530 .erase = NULL,
531 .write = NULL,
532 .read = NULL,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000533 },
FENG yu ningff692fb2008-12-08 18:15:10 +0000534
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000535 {
536 .vendor = "Atmel",
537 .name = "AT45DB081D",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000538 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000539 .manufacture_id = ATMEL_ID,
540 .model_id = AT_45DB081D,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000541 .total_size = 1024 /* Size can only be determined from status register */,
542 .page_size = 256 /* Size can only be determined from status register */,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000543 .tested = TEST_BAD_READ,
544 .probe = probe_spi_rdid,
545 .erase = NULL,
546 .write = NULL,
547 .read = NULL,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000548 },
FENG yu ningff692fb2008-12-08 18:15:10 +0000549
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000550 {
551 .vendor = "Atmel",
552 .name = "AT45DB161D",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000553 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000554 .manufacture_id = ATMEL_ID,
555 .model_id = AT_45DB161D,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000556 .total_size = 2048 /* Size can only be determined from status register */,
557 .page_size = 512 /* Size can only be determined from status register */,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000558 .tested = TEST_BAD_READ,
559 .probe = probe_spi_rdid,
560 .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 = "AT45DB321C",
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_45DB321C,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000571 .total_size = 4224 /* No power of two sizes */,
572 .page_size = 528 /* No power of two sizes */,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000573 .tested = TEST_BAD_READ,
574 .probe = probe_spi_rdid,
575 .erase = NULL,
576 .write = NULL,
577 .read = NULL /* Incompatible read */,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000578 },
FENG yu ningff692fb2008-12-08 18:15:10 +0000579
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000580 {
581 .vendor = "Atmel",
582 .name = "AT45DB321D",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000583 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000584 .manufacture_id = ATMEL_ID,
585 .model_id = AT_45DB321D,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000586 .total_size = 4096 /* Size can only be determined from status register */,
587 .page_size = 512 /* Size can only be determined from status register */,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000588 .tested = TEST_BAD_READ,
589 .probe = probe_spi_rdid,
590 .erase = NULL,
591 .write = NULL,
592 .read = NULL,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000593 },
FENG yu ningff692fb2008-12-08 18:15:10 +0000594
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000595 {
596 .vendor = "Atmel",
597 .name = "AT45DB642D",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000598 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000599 .manufacture_id = ATMEL_ID,
600 .model_id = AT_45DB642D,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000601 .total_size = 8192 /* Size can only be determined from status register */,
602 .page_size = 1024 /* Size can only be determined from status register */,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000603 .tested = TEST_BAD_READ,
604 .probe = probe_spi_rdid,
605 .erase = NULL,
606 .write = NULL,
607 .read = NULL,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000608 },
FENG yu ningff692fb2008-12-08 18:15:10 +0000609
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000610 {
611 .vendor = "Atmel",
Uwe Hermannb4dcb712009-05-13 11:36:06 +0000612 .name = "AT49BV512",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000613 .bustype = CHIP_BUSTYPE_NONSPI,
Uwe Hermannb4dcb712009-05-13 11:36:06 +0000614 .manufacture_id = ATMEL_ID,
615 .model_id = AT_49BV512,
616 .total_size = 64,
617 .page_size = 64,
618 .tested = TEST_OK_PREW,
619 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +0000620 .probe_timing = TIMING_FIXME,
Uwe Hermannb4dcb712009-05-13 11:36:06 +0000621 .erase = erase_chip_jedec,
622 .write = write_49f002,
623 .read = read_memmapped,
624 },
625
626 {
627 .vendor = "Atmel",
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000628 .name = "AT49F002(N)",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000629 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000630 .manufacture_id = ATMEL_ID,
631 .model_id = AT_49F002N,
632 .total_size = 256,
633 .page_size = 256,
634 .tested = TEST_UNTESTED,
635 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +0000636 .probe_timing = TIMING_FIXME, /* doc1008.pdf dont says anything about probe timing */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000637 .erase = erase_chip_jedec,
638 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +0000639 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +0000640 },
641
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000642 {
643 .vendor = "Atmel",
644 .name = "AT49F002(N)T",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000645 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000646 .manufacture_id = ATMEL_ID,
647 .model_id = AT_49F002NT,
648 .total_size = 256,
649 .page_size = 256,
650 .tested = TEST_OK_PREW,
651 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +0000652 .probe_timing = TIMING_FIXME, /* doc1008.pdf dont says anything about probe timing */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000653 .erase = erase_chip_jedec,
654 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +0000655 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +0000656 },
657
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000658 {
659 .vendor = "AMIC",
660 .name = "A25L40P",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000661 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000662 .manufacture_id = AMIC_ID,
663 .model_id = AMIC_A25L40P,
664 .total_size = 512,
665 .page_size = 256,
666 .tested = TEST_OK_PREW,
667 .probe = probe_spi_rdid4,
668 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +0000669 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000670 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000671 },
672
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000673 {
674 .vendor = "AMIC",
675 .name = "A29002B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000676 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000677 .manufacture_id = AMIC_ID_NOPREFIX,
678 .model_id = AMIC_A29002B,
679 .total_size = 256,
680 .page_size = 64 * 1024,
681 .tested = TEST_UNTESTED,
682 .probe = probe_29f002,
Maciej Pijankac6e11112009-06-03 14:46:22 +0000683 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (mx29f002.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000684 .erase = erase_29f002,
685 .write = write_29f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +0000686 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +0000687 },
688
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000689 {
690 .vendor = "AMIC",
691 .name = "A29002T",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000692 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000693 .manufacture_id = AMIC_ID_NOPREFIX,
694 .model_id = AMIC_A29002T,
695 .total_size = 256,
696 .page_size = 64 * 1024,
697 .tested = TEST_OK_PREW,
698 .probe = probe_29f002,
Maciej Pijankac6e11112009-06-03 14:46:22 +0000699 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (mx29f002.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000700 .erase = erase_29f002,
701 .write = write_29f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +0000702 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +0000703 },
704
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000705 {
706 .vendor = "AMIC",
707 .name = "A29040B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000708 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000709 .manufacture_id = AMIC_ID_NOPREFIX,
710 .model_id = AMIC_A29040B,
711 .total_size = 512,
712 .page_size = 64 * 1024,
713 .tested = TEST_OK_PR,
714 .probe = probe_29f040b,
Maciej Pijankac6e11112009-06-03 14:46:22 +0000715 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (am29f040b.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000716 .erase = erase_29f040b,
717 .write = write_29f040b,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +0000718 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +0000719 },
720
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000721 {
722 .vendor = "AMIC",
723 .name = "A49LF040A",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000724 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000725 .manufacture_id = AMIC_ID_NOPREFIX,
726 .model_id = AMIC_A49LF040A,
727 .total_size = 512,
728 .page_size = 64 * 1024,
729 .tested = TEST_OK_PREW,
730 .probe = probe_49fl00x,
Maciej Pijankac6e11112009-06-03 14:46:22 +0000731 .probe_timing = TIMING_FIXME, /* routine is wrapper to probe_jedec (pm49fl00x.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000732 .erase = erase_49fl00x,
733 .write = write_49fl00x,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +0000734 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +0000735 },
736
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000737 {
738 .vendor = "EMST",
739 .name = "F49B002UA",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000740 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000741 .manufacture_id = EMST_ID,
742 .model_id = EMST_F49B002UA,
743 .total_size = 256,
744 .page_size = 4096,
745 .tested = TEST_UNTESTED,
746 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +0000747 .probe_timing = TIMING_FIXME,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000748 .erase = erase_chip_jedec,
749 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +0000750 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +0000751 },
752
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000753 {
754 .vendor = "EON",
755 .name = "EN29F002(A)(N)B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000756 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000757 .manufacture_id = EON_ID,
758 .model_id = EN_29F002B,
759 .total_size = 256,
760 .page_size = 256,
761 .tested = TEST_UNTESTED,
762 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +0000763 .probe_timing = TIMING_FIXME,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000764 .erase = erase_chip_jedec,
765 .write = write_en29f002a,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +0000766 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +0000767 },
768
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000769 {
770 .vendor = "EON",
771 .name = "EN29F002(A)(N)T",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000772 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000773 .manufacture_id = EON_ID,
774 .model_id = EN_29F002T,
775 .total_size = 256,
776 .page_size = 256,
777 .tested = TEST_OK_PREW,
778 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +0000779 .probe_timing = TIMING_FIXME,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000780 .erase = erase_chip_jedec,
781 .write = write_en29f002a,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +0000782 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +0000783 },
784
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000785 {
786 .vendor = "Fujitsu",
787 .name = "MBM29F004BC",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000788 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000789 .manufacture_id = FUJITSU_ID,
790 .model_id = MBM29F004BC,
791 .total_size = 512,
792 .page_size = 64 * 1024,
793 .tested = TEST_UNTESTED,
794 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +0000795 .probe_timing = TIMING_FIXME,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000796 .erase = NULL,
797 .write = NULL,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +0000798 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +0000799 },
800
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000801 {
802 .vendor = "Fujitsu",
803 .name = "MBM29F004TC",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000804 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000805 .manufacture_id = FUJITSU_ID,
806 .model_id = MBM29F004TC,
807 .total_size = 512,
808 .page_size = 64 * 1024,
809 .tested = TEST_UNTESTED,
810 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +0000811 .probe_timing = TIMING_FIXME,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000812 .erase = NULL,
813 .write = NULL,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +0000814 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +0000815 },
816
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000817 {
818 .vendor = "Fujitsu",
819 .name = "MBM29F400BC",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000820 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000821 .manufacture_id = FUJITSU_ID,
822 .model_id = MBM29F400BC,
823 .total_size = 512,
824 .page_size = 64 * 1024,
825 .tested = TEST_UNTESTED,
826 .probe = probe_m29f400bt,
Maciej Pijankac6e11112009-06-03 14:46:22 +0000827 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (m29f400bt.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000828 .erase = erase_m29f400bt,
829 .write = write_coreboot_m29f400bt,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +0000830 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +0000831 },
832
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000833 {
834 .vendor = "Fujitsu",
835 .name = "MBM29F400TC",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000836 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000837 .manufacture_id = FUJITSU_ID,
838 .model_id = MBM29F400TC,
839 .total_size = 512,
840 .page_size = 64 * 1024,
841 .tested = TEST_UNTESTED,
842 .probe = probe_m29f400bt,
Maciej Pijankac6e11112009-06-03 14:46:22 +0000843 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (m29f400bt.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000844 .erase = erase_m29f400bt,
845 .write = write_coreboot_m29f400bt,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +0000846 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +0000847 },
848
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000849 {
850 .vendor = "Intel",
Urja Rannikkoebd7b832009-05-29 12:55:31 +0000851 .name = "28F001BX-B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000852 .bustype = CHIP_BUSTYPE_NONSPI,
Urja Rannikkoebd7b832009-05-29 12:55:31 +0000853 .manufacture_id = INTEL_ID,
854 .model_id = P28F001BXB,
855 .total_size = 128,
856 .page_size = 128 * 1024, /* 8k + 2x4k + 112k */
857 .tested = TEST_BAD_ERASE|TEST_BAD_WRITE,
858 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +0000859 .probe_timing = TIMING_FIXME,
Urja Rannikkoebd7b832009-05-29 12:55:31 +0000860 .erase = NULL,
861 .write = NULL,
862 .read = read_memmapped,
863 },
864
865 {
866 .vendor = "Intel",
867 .name = "28F001BX-T",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000868 .bustype = CHIP_BUSTYPE_NONSPI,
Urja Rannikkoebd7b832009-05-29 12:55:31 +0000869 .manufacture_id = INTEL_ID,
870 .model_id = P28F001BXT,
871 .total_size = 128,
872 .page_size = 128 * 1024, /* 112k + 2x4k + 8k */
873 .tested = TEST_OK_PR|TEST_BAD_ERASE|TEST_BAD_WRITE,
874 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +0000875 .probe_timing = TIMING_FIXME,
Urja Rannikkoebd7b832009-05-29 12:55:31 +0000876 .erase = NULL,
877 .write = NULL,
878 .read = read_memmapped,
879 },
880
881 {
882 .vendor = "Intel",
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000883 .name = "82802AB",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000884 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000885 .manufacture_id = INTEL_ID,
886 .model_id = 173,
887 .total_size = 512,
888 .page_size = 64 * 1024,
889 .tested = TEST_OK_PREW,
890 .probe = probe_82802ab,
891 .erase = erase_82802ab,
892 .write = write_82802ab,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +0000893 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +0000894 },
895
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000896 {
897 .vendor = "Intel",
898 .name = "82802AC",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000899 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000900 .manufacture_id = INTEL_ID,
901 .model_id = 172,
902 .total_size = 1024,
903 .page_size = 64 * 1024,
904 .tested = TEST_OK_PREW,
905 .probe = probe_82802ab,
906 .erase = erase_82802ab,
907 .write = write_82802ab,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +0000908 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +0000909 },
910
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000911 {
912 .vendor = "Macronix",
913 .name = "MX25L512",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000914 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000915 .manufacture_id = MX_ID,
916 .model_id = MX_25L512,
917 .total_size = 64,
918 .page_size = 256,
919 .tested = TEST_UNTESTED,
920 .probe = probe_spi_rdid,
Stephan Guillouxfd315502009-04-20 22:54:13 +0000921 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +0000922 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000923 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000924 },
925
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000926 {
927 .vendor = "Macronix",
928 .name = "MX25L1005",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000929 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000930 .manufacture_id = MX_ID,
931 .model_id = MX_25L1005,
932 .total_size = 128,
933 .page_size = 256,
934 .tested = TEST_UNTESTED,
935 .probe = probe_spi_rdid,
Stephan Guillouxfd315502009-04-20 22:54:13 +0000936 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +0000937 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000938 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000939 },
940
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000941 {
942 .vendor = "Macronix",
943 .name = "MX25L2005",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000944 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000945 .manufacture_id = MX_ID,
946 .model_id = MX_25L2005,
947 .total_size = 256,
948 .page_size = 256,
949 .tested = TEST_UNTESTED,
950 .probe = probe_spi_rdid,
Stephan Guillouxfd315502009-04-20 22:54:13 +0000951 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +0000952 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000953 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000954 },
955
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000956 {
957 .vendor = "Macronix",
958 .name = "MX25L4005",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000959 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000960 .manufacture_id = MX_ID,
961 .model_id = MX_25L4005,
962 .total_size = 512,
963 .page_size = 256,
964 .tested = TEST_OK_PREW,
965 .probe = probe_spi_rdid,
Stephan Guillouxfd315502009-04-20 22:54:13 +0000966 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +0000967 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000968 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000969 },
970
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000971 {
972 .vendor = "Macronix",
973 .name = "MX25L8005",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000974 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000975 .manufacture_id = MX_ID,
976 .model_id = MX_25L8005,
977 .total_size = 1024,
978 .page_size = 256,
979 .tested = TEST_OK_PREW,
980 .probe = probe_spi_rdid,
Stephan Guillouxfd315502009-04-20 22:54:13 +0000981 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +0000982 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000983 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000984 },
985
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000986 {
987 .vendor = "Macronix",
988 .name = "MX25L1605",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000989 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000990 .manufacture_id = MX_ID,
991 .model_id = MX_25L1605,
992 .total_size = 2048,
993 .page_size = 256,
Peter Stugeddb94f72009-04-29 23:22:33 +0000994 .tested = TEST_OK_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000995 .probe = probe_spi_rdid,
Stephan Guillouxe39631c2009-04-19 23:24:26 +0000996 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +0000997 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000998 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000999 },
1000
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001001 {
1002 .vendor = "Macronix",
Stephan Guillouxf5c70902009-04-19 23:04:00 +00001003 .name = "MX25L1635D",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001004 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guillouxf5c70902009-04-19 23:04:00 +00001005 .manufacture_id = MX_ID,
1006 .model_id = MX_25L1635D,
1007 .total_size = 2048,
1008 .page_size = 256,
1009 .tested = TEST_UNTESTED,
1010 .probe = probe_spi_rdid,
Stephan Guillouxe39631c2009-04-19 23:24:26 +00001011 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001012 .write = spi_chip_write_256,
Stephan Guillouxf5c70902009-04-19 23:04:00 +00001013 .read = spi_chip_read,
1014 },
Stephan Guillouxfd315502009-04-20 22:54:13 +00001015
Stephan Guillouxf5c70902009-04-19 23:04:00 +00001016 {
1017 .vendor = "Macronix",
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001018 .name = "MX25L3205",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001019 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001020 .manufacture_id = MX_ID,
1021 .model_id = MX_25L3205,
1022 .total_size = 4096,
1023 .page_size = 256,
1024 .tested = TEST_OK_PREW,
1025 .probe = probe_spi_rdid,
Stephan Guillouxfd315502009-04-20 22:54:13 +00001026 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001027 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001028 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001029 },
1030
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001031 {
1032 .vendor = "Macronix",
Stephan Guilloux70ea9a32009-04-23 22:51:56 +00001033 .name = "MX25L3235D",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001034 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux70ea9a32009-04-23 22:51:56 +00001035 .manufacture_id = MX_ID,
1036 .model_id = MX_25L3235D,
1037 .total_size = 4096,
1038 .page_size = 256,
1039 .tested = TEST_UNTESTED,
1040 .probe = probe_spi_rdid,
1041 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001042 .write = spi_chip_write_256,
Stephan Guilloux70ea9a32009-04-23 22:51:56 +00001043 .read = spi_chip_read,
1044 },
1045
1046 {
1047 .vendor = "Macronix",
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001048 .name = "MX25L6405",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001049 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001050 .manufacture_id = MX_ID,
1051 .model_id = MX_25L6405,
1052 .total_size = 8192,
1053 .page_size = 256,
1054 .tested = TEST_UNTESTED,
1055 .probe = probe_spi_rdid,
Stephan Guillouxfd315502009-04-20 22:54:13 +00001056 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001057 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001058 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001059 },
1060
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001061 {
1062 .vendor = "Macronix",
Stephan Guilloux2f132fe2009-04-21 01:47:16 +00001063 .name = "MX25L12805",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001064 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux2f132fe2009-04-21 01:47:16 +00001065 .manufacture_id = MX_ID,
1066 .model_id = MX_25L12805,
1067 .total_size = 16384,
1068 .page_size = 256,
1069 .tested = TEST_UNTESTED,
1070 .probe = probe_spi_rdid,
1071 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001072 .write = spi_chip_write_256,
Stephan Guilloux2f132fe2009-04-21 01:47:16 +00001073 .read = spi_chip_read,
1074 },
1075
1076 {
1077 .vendor = "Macronix",
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001078 .name = "MX29F002B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001079 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001080 .manufacture_id = MX_ID,
1081 .model_id = MX_29F002B,
1082 .total_size = 256,
1083 .page_size = 64 * 1024,
1084 .tested = TEST_UNTESTED,
1085 .probe = probe_29f002,
Maciej Pijankac6e11112009-06-03 14:46:22 +00001086 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (mx29f002.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001087 .erase = erase_29f002,
1088 .write = write_29f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001089 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001090 },
1091
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001092 {
1093 .vendor = "Macronix",
1094 .name = "MX29F002T",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001095 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001096 .manufacture_id = MX_ID,
1097 .model_id = MX_29F002T,
1098 .total_size = 256,
1099 .page_size = 64 * 1024,
Uwe Hermann66c580c2009-05-21 00:29:50 +00001100 .tested = TEST_OK_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001101 .probe = probe_29f002,
Maciej Pijankac6e11112009-06-03 14:46:22 +00001102 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (mx29f002.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001103 .erase = erase_29f002,
1104 .write = write_29f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001105 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001106 },
1107
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001108 {
1109 .vendor = "Macronix",
1110 .name = "MX29LV040C",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001111 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001112 .manufacture_id = MX_ID,
1113 .model_id = MX_29LV040C,
1114 .total_size = 512,
1115 .page_size = 64 * 1024,
1116 .tested = TEST_OK_PR,
1117 .probe = probe_29f002,
Maciej Pijankac6e11112009-06-03 14:46:22 +00001118 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (mx29f002.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001119 .erase = erase_29f002,
1120 .write = write_29f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001121 .read = read_memmapped,
Carl-Daniel Hailfinger7de86392008-12-10 10:32:05 +00001122 },
1123
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001124 {
1125 .vendor = "Numonyx",
1126 .name = "M25PE10",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001127 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001128 .manufacture_id = ST_ID,
1129 .model_id = 0x8011,
1130 .total_size = 128,
1131 .page_size = 256,
1132 .tested = TEST_UNTESTED,
1133 .probe = probe_spi_rdid,
1134 .erase = spi_chip_erase_d8,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001135 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001136 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001137 },
1138
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001139 {
1140 .vendor = "Numonyx",
1141 .name = "M25PE20",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001142 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001143 .manufacture_id = ST_ID,
1144 .model_id = 0x8012,
1145 .total_size = 256,
1146 .page_size = 256,
1147 .tested = TEST_UNTESTED,
1148 .probe = probe_spi_rdid,
1149 .erase = spi_chip_erase_d8,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001150 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001151 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001152 },
1153
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001154 {
1155 .vendor = "Numonyx",
1156 .name = "M25PE40",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001157 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001158 .manufacture_id = ST_ID,
1159 .model_id = 0x8013,
1160 .total_size = 256,
1161 .page_size = 256,
1162 .tested = TEST_UNTESTED,
1163 .probe = probe_spi_rdid,
1164 .erase = spi_chip_erase_d8,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001165 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001166 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001167 },
1168
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001169 {
1170 .vendor = "Numonyx",
1171 .name = "M25PE80",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001172 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001173 .manufacture_id = ST_ID,
1174 .model_id = 0x8014,
1175 .total_size = 1024,
1176 .page_size = 256,
1177 .tested = TEST_OK_PREW,
1178 .probe = probe_spi_rdid,
1179 .erase = spi_chip_erase_d8,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001180 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001181 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001182 },
1183
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001184 {
1185 .vendor = "Numonyx",
1186 .name = "M25PE16",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001187 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001188 .manufacture_id = ST_ID,
1189 .model_id = 0x8015,
1190 .total_size = 2048,
1191 .page_size = 256,
1192 .tested = TEST_UNTESTED,
1193 .probe = probe_spi_rdid,
1194 .erase = spi_chip_erase_d8,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001195 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001196 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001197 },
1198
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001199 {
1200 .vendor = "PMC",
1201 .name = "Pm25LV010",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001202 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001203 .manufacture_id = PMC_ID,
1204 .model_id = PMC_25LV010,
1205 .total_size = 128,
1206 .page_size = 256,
1207 .tested = TEST_UNTESTED,
1208 .probe = probe_spi_rdid,
1209 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001210 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001211 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001212 },
1213
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001214 {
1215 .vendor = "PMC",
1216 .name = "Pm25LV016B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001217 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001218 .manufacture_id = PMC_ID,
1219 .model_id = PMC_25LV016B,
1220 .total_size = 2048,
1221 .page_size = 256,
1222 .tested = TEST_UNTESTED,
1223 .probe = probe_spi_rdid,
1224 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001225 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001226 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001227 },
1228
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001229 {
1230 .vendor = "PMC",
1231 .name = "Pm25LV020",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001232 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001233 .manufacture_id = PMC_ID,
1234 .model_id = PMC_25LV020,
1235 .total_size = 256,
1236 .page_size = 256,
1237 .tested = TEST_UNTESTED,
1238 .probe = probe_spi_rdid,
1239 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001240 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001241 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001242 },
1243
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001244 {
1245 .vendor = "PMC",
1246 .name = "Pm25LV040",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001247 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001248 .manufacture_id = PMC_ID,
1249 .model_id = PMC_25LV040,
1250 .total_size = 512,
1251 .page_size = 256,
1252 .tested = TEST_UNTESTED,
1253 .probe = probe_spi_rdid,
1254 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001255 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001256 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001257 },
1258
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001259 {
1260 .vendor = "PMC",
1261 .name = "Pm25LV080B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001262 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001263 .manufacture_id = PMC_ID,
1264 .model_id = PMC_25LV080B,
1265 .total_size = 1024,
1266 .page_size = 256,
1267 .tested = TEST_UNTESTED,
1268 .probe = probe_spi_rdid,
1269 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001270 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001271 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001272 },
1273
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001274 {
1275 .vendor = "PMC",
1276 .name = "Pm25LV512",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001277 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001278 .manufacture_id = PMC_ID,
1279 .model_id = PMC_25LV512,
1280 .total_size = 64,
1281 .page_size = 256,
1282 .tested = TEST_UNTESTED,
1283 .probe = probe_spi_rdid,
1284 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001285 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001286 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001287 },
1288
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001289 {
1290 .vendor = "PMC",
Rudolf Marek50fdf3b2009-05-17 17:02:07 +00001291 .name = "Pm39LV010",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001292 .bustype = CHIP_BUSTYPE_NONSPI,
Rudolf Marek50fdf3b2009-05-17 17:02:07 +00001293 .manufacture_id = PMC_ID_NOPREFIX,
1294 .model_id = PMC_39F010,
1295 .total_size = 128,
1296 .page_size = 4096,
1297 .tested = TEST_OK_PREW,
1298 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +00001299 .probe_timing = TIMING_FIXME,
Rudolf Marek50fdf3b2009-05-17 17:02:07 +00001300 .erase = erase_chip_jedec,
1301 .write = write_49f002,
1302 .read = read_memmapped,
1303 },
1304
1305 {
1306 .vendor = "PMC",
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001307 .name = "Pm49FL002",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001308 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001309 .manufacture_id = PMC_ID_NOPREFIX,
1310 .model_id = PMC_49FL002,
1311 .total_size = 256,
1312 .page_size = 16 * 1024,
1313 .tested = TEST_OK_PREW,
1314 .probe = probe_49fl00x,
Maciej Pijankac6e11112009-06-03 14:46:22 +00001315 .probe_timing = TIMING_FIXME, /* routine is wrapper to probe_jedec (pm49fl00x.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001316 .erase = erase_49fl00x,
1317 .write = write_49fl00x,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001318 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001319 },
1320
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001321 {
1322 .vendor = "PMC",
1323 .name = "Pm49FL004",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001324 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001325 .manufacture_id = PMC_ID_NOPREFIX,
1326 .model_id = PMC_49FL004,
1327 .total_size = 512,
1328 .page_size = 64 * 1024,
1329 .tested = TEST_OK_PREW,
1330 .probe = probe_49fl00x,
Maciej Pijankac6e11112009-06-03 14:46:22 +00001331 .probe_timing = TIMING_FIXME, /* routine is wrapper to probe_jedec (pm49fl00x.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001332 .erase = erase_49fl00x,
1333 .write = write_49fl00x,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001334 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001335 },
1336
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001337 {
1338 .vendor = "Sharp",
1339 .name = "LHF00L04",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001340 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001341 .manufacture_id = SHARP_ID,
1342 .model_id = SHARP_LHF00L04,
1343 .total_size = 1024,
1344 .page_size = 64 * 1024,
1345 .tested = TEST_UNTESTED,
1346 .probe = probe_lhf00l04,
Maciej Pijankac6e11112009-06-03 14:46:22 +00001347 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (sharplhf00l04.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001348 .erase = erase_lhf00l04,
1349 .write = write_lhf00l04,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001350 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001351 },
1352
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001353 {
1354 .vendor = "Spansion",
1355 .name = "S25FL016A",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001356 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001357 .manufacture_id = SPANSION_ID,
1358 .model_id = SPANSION_S25FL016A,
1359 .total_size = 2048,
1360 .page_size = 256,
1361 .tested = TEST_OK_PREW,
1362 .probe = probe_spi_rdid,
1363 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001364 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001365 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001366 },
1367
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001368 {
1369 .vendor = "SST",
1370 .name = "SST25VF016B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001371 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001372 .manufacture_id = SST_ID,
1373 .model_id = SST_25VF016B,
1374 .total_size = 2048,
1375 .page_size = 256,
1376 .tested = TEST_OK_PREW,
1377 .probe = probe_spi_rdid,
1378 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger93bb3752009-05-13 22:19:12 +00001379 .write = spi_chip_write_1,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001380 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001381 },
1382
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001383 {
1384 .vendor = "SST",
1385 .name = "SST25VF032B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001386 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001387 .manufacture_id = SST_ID,
1388 .model_id = SST_25VF032B,
1389 .total_size = 4096,
1390 .page_size = 256,
1391 .tested = TEST_OK_PREW,
1392 .probe = probe_spi_rdid,
1393 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger93bb3752009-05-13 22:19:12 +00001394 .write = spi_chip_write_1,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001395 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001396 },
1397
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001398 {
1399 .vendor = "SST",
1400 .name = "SST25VF040B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001401 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001402 .manufacture_id = SST_ID,
1403 .model_id = SST_25VF040B,
1404 .total_size = 512,
1405 .page_size = 256,
1406 .tested = TEST_UNTESTED,
1407 .probe = probe_spi_rdid,
1408 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger93bb3752009-05-13 22:19:12 +00001409 .write = spi_chip_write_1,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001410 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001411 },
1412
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001413 {
1414 .vendor = "SST",
Zheng Bao0677dff2009-02-25 08:07:33 +00001415 .name = "SST25VF040.REMS",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001416 .bustype = CHIP_BUSTYPE_SPI,
Zheng Bao0677dff2009-02-25 08:07:33 +00001417 .manufacture_id = 0xbf,
1418 .model_id = 0x44,
1419 .total_size = 512,
1420 .page_size = 64*1024,
1421 .tested = TEST_OK_PR,
1422 .probe = probe_spi_rems,
1423 .erase = spi_chip_erase_60,
Carl-Daniel Hailfinger93bb3752009-05-13 22:19:12 +00001424 .write = spi_chip_write_1,
Zheng Bao0677dff2009-02-25 08:07:33 +00001425 .read = spi_chip_read,
1426 },
1427
1428 {
1429 .vendor = "SST",
Peter Stugefd9217d2009-01-26 03:37:40 +00001430 .name = "SST25VF040B.REMS",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001431 .bustype = CHIP_BUSTYPE_SPI,
Peter Stugefd9217d2009-01-26 03:37:40 +00001432 .manufacture_id = 0xbf,
1433 .model_id = 0x8d,
1434 .total_size = 512,
1435 .page_size = 64*1024,
1436 .tested = TEST_OK_PR,
1437 .probe = probe_spi_rems,
1438 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger93bb3752009-05-13 22:19:12 +00001439 .write = spi_chip_write_1,
Peter Stugefd9217d2009-01-26 03:37:40 +00001440 .read = spi_chip_read,
1441 },
1442
1443 {
1444 .vendor = "SST",
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001445 .name = "SST25VF080B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001446 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001447 .manufacture_id = SST_ID,
1448 .model_id = SST_25VF080B,
1449 .total_size = 1024,
1450 .page_size = 256,
Peter Stugee612a112009-05-05 16:34:53 +00001451 .tested = TEST_OK_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001452 .probe = probe_spi_rdid,
1453 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001454 .write = spi_chip_write_1,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001455 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001456 },
1457
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001458 {
1459 .vendor = "SST",
1460 .name = "SST28SF040A",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001461 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001462 .manufacture_id = SST_ID,
1463 .model_id = SST_28SF040,
1464 .total_size = 512,
1465 .page_size = 256,
1466 .tested = TEST_UNTESTED,
1467 .probe = probe_28sf040,
Maciej Pijankac6e11112009-06-03 14:46:22 +00001468 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (sst28sf040.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001469 .erase = erase_28sf040,
1470 .write = write_28sf040,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001471 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001472 },
1473
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001474 {
1475 .vendor = "SST",
1476 .name = "SST29EE010",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001477 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001478 .manufacture_id = SST_ID,
1479 .model_id = SST_29EE010,
1480 .total_size = 128,
1481 .page_size = 128,
1482 .tested = TEST_OK_PREW,
1483 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +00001484 .probe_timing = TIMING_FIXME,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001485 .erase = erase_chip_jedec,
1486 .write = write_jedec,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001487 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001488 },
1489
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001490 {
1491 .vendor = "SST",
1492 .name = "SST29LE010",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001493 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001494 .manufacture_id = SST_ID,
1495 .model_id = SST_29LE010,
1496 .total_size = 128,
1497 .page_size = 128,
1498 .tested = TEST_UNTESTED,
1499 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +00001500 .probe_timing = TIMING_FIXME,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001501 .erase = erase_chip_jedec,
1502 .write = write_jedec,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001503 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001504 },
1505
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001506 {
1507 .vendor = "SST",
1508 .name = "SST29EE020A",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001509 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001510 .manufacture_id = SST_ID,
1511 .model_id = SST_29EE020A,
1512 .total_size = 256,
1513 .page_size = 128,
Peter Stugeb27d0a22009-02-22 21:07:28 +00001514 .tested = TEST_OK_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001515 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +00001516 .probe_timing = TIMING_FIXME,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001517 .erase = erase_chip_jedec,
1518 .write = write_jedec,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001519 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001520 },
1521
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001522 {
1523 .vendor = "SST",
1524 .name = "SST29LE020",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001525 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001526 .manufacture_id = SST_ID,
1527 .model_id = SST_29LE020,
1528 .total_size = 256,
1529 .page_size = 128,
1530 .tested = TEST_UNTESTED,
1531 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +00001532 .probe_timing = TIMING_FIXME,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001533 .erase = erase_chip_jedec,
1534 .write = write_jedec,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001535 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001536 },
1537
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001538 {
1539 .vendor = "SST",
1540 .name = "SST39SF010A",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001541 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001542 .manufacture_id = SST_ID,
1543 .model_id = SST_39SF010,
1544 .total_size = 128,
1545 .page_size = 4096,
1546 .tested = TEST_OK_PREW,
1547 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +00001548 .probe_timing = TIMING_FIXME,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001549 .erase = erase_chip_jedec,
Uwe Hermann24f9fbe2009-05-12 14:06:04 +00001550 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001551 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001552 },
1553
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001554 {
1555 .vendor = "SST",
1556 .name = "SST39SF020A",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001557 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001558 .manufacture_id = SST_ID,
1559 .model_id = SST_39SF020,
1560 .total_size = 256,
1561 .page_size = 4096,
1562 .tested = TEST_OK_PREW,
1563 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +00001564 .probe_timing = TIMING_FIXME,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001565 .erase = erase_chip_jedec,
Uwe Hermann24f9fbe2009-05-12 14:06:04 +00001566 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001567 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001568 },
1569
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001570 {
1571 .vendor = "SST",
1572 .name = "SST39SF040",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001573 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001574 .manufacture_id = SST_ID,
1575 .model_id = SST_39SF040,
1576 .total_size = 512,
1577 .page_size = 4096,
1578 .tested = TEST_OK_PREW,
1579 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +00001580 .probe_timing = TIMING_FIXME,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001581 .erase = erase_chip_jedec,
Uwe Hermann24f9fbe2009-05-12 14:06:04 +00001582 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001583 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001584 },
1585
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001586 {
1587 .vendor = "SST",
1588 .name = "SST39VF512",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001589 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001590 .manufacture_id = SST_ID,
1591 .model_id = SST_39VF512,
1592 .total_size = 64,
1593 .page_size = 4096,
Rudolf Mareke186da62009-05-17 18:24:24 +00001594 .tested = TEST_OK_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001595 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +00001596 .probe_timing = TIMING_FIXME,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001597 .erase = erase_chip_jedec,
Uwe Hermann24f9fbe2009-05-12 14:06:04 +00001598 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001599 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001600 },
1601
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001602 {
1603 .vendor = "SST",
1604 .name = "SST39VF010",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001605 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001606 .manufacture_id = SST_ID,
1607 .model_id = SST_39VF010,
1608 .total_size = 128,
1609 .page_size = 4096,
Rudolf Marek50fdf3b2009-05-17 17:02:07 +00001610 .tested = TEST_OK_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001611 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +00001612 .probe_timing = TIMING_FIXME,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001613 .erase = erase_chip_jedec,
Uwe Hermann24f9fbe2009-05-12 14:06:04 +00001614 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001615 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001616 },
1617
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001618 {
1619 .vendor = "SST",
1620 .name = "SST39VF020",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001621 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001622 .manufacture_id = SST_ID,
1623 .model_id = SST_39VF020,
1624 .total_size = 256,
1625 .page_size = 4096,
1626 .tested = TEST_OK_PREW,
1627 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +00001628 .probe_timing = TIMING_FIXME,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001629 .erase = erase_chip_jedec,
Uwe Hermann24f9fbe2009-05-12 14:06:04 +00001630 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001631 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001632 },
1633
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001634 {
1635 .vendor = "SST",
1636 .name = "SST39VF040",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001637 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001638 .manufacture_id = SST_ID,
1639 .model_id = SST_39VF040,
1640 .total_size = 512,
1641 .page_size = 4096,
1642 .tested = TEST_OK_PROBE,
1643 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +00001644 .probe_timing = TIMING_FIXME,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001645 .erase = erase_chip_jedec,
Uwe Hermann24f9fbe2009-05-12 14:06:04 +00001646 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001647 .read = read_memmapped,
Carl-Daniel Hailfinger90eff152008-12-08 23:51:45 +00001648 },
FENG yu ningff692fb2008-12-08 18:15:10 +00001649
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001650 {
1651 .vendor = "SST",
Peter Stuge8440cc02009-01-25 23:55:12 +00001652 .name = "SST39VF080",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001653 .bustype = CHIP_BUSTYPE_NONSPI,
Peter Stuge8440cc02009-01-25 23:55:12 +00001654 .manufacture_id = 0xbf,
1655 .model_id = 0xd8,
1656 .total_size = 1024,
1657 .page_size = 4096,
1658 .tested = TEST_UNTESTED,
1659 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +00001660 .probe_timing = TIMING_FIXME,
Peter Stuge8440cc02009-01-25 23:55:12 +00001661 .erase = erase_chip_jedec,
Uwe Hermann24f9fbe2009-05-12 14:06:04 +00001662 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001663 .read = read_memmapped,
Peter Stuge8440cc02009-01-25 23:55:12 +00001664 },
1665
1666 {
1667 .vendor = "SST",
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001668 .name = "SST49LF002A/B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001669 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001670 .manufacture_id = SST_ID,
1671 .model_id = SST_49LF002A,
1672 .total_size = 256,
1673 .page_size = 16 * 1024,
1674 .tested = TEST_OK_PREW,
1675 .probe = probe_sst_fwhub,
Maciej Pijankac6e11112009-06-03 14:46:22 +00001676 .probe_timing = TIMING_FIXME, /* routine is wrapper to probe_jedec (sst_fwhub.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001677 .erase = erase_sst_fwhub,
1678 .write = write_sst_fwhub,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001679 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001680 },
1681
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001682 {
1683 .vendor = "SST",
1684 .name = "SST49LF003A/B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001685 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001686 .manufacture_id = SST_ID,
1687 .model_id = SST_49LF003A,
1688 .total_size = 384,
1689 .page_size = 64 * 1024,
1690 .tested = TEST_UNTESTED,
1691 .probe = probe_sst_fwhub,
Maciej Pijankac6e11112009-06-03 14:46:22 +00001692 .probe_timing = TIMING_FIXME, /* routine is wrapper to probe_jedec (sst_fwhub.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001693 .erase = erase_sst_fwhub,
1694 .write = write_sst_fwhub,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001695 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001696 },
1697
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001698 {
1699 .vendor = "SST",
1700 .name = "SST49LF004A/B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001701 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001702 .manufacture_id = SST_ID,
1703 .model_id = SST_49LF004A,
1704 .total_size = 512,
1705 .page_size = 64 * 1024,
1706 .tested = TEST_OK_PREW,
1707 .probe = probe_sst_fwhub,
Maciej Pijankac6e11112009-06-03 14:46:22 +00001708 .probe_timing = TIMING_FIXME, /* routine is wrapper to probe_jedec (sst_fwhub.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001709 .erase = erase_sst_fwhub,
1710 .write = write_sst_fwhub,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001711 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001712 },
1713
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001714 {
1715 .vendor = "SST",
1716 .name = "SST49LF004C",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001717 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001718 .manufacture_id = SST_ID,
1719 .model_id = SST_49LF004C,
1720 .total_size = 512,
1721 .page_size = 4 * 1024,
1722 .tested = TEST_UNTESTED,
1723 .probe = probe_49lfxxxc,
Maciej Pijankac6e11112009-06-03 14:46:22 +00001724 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (sst49lfxxxc.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001725 .erase = erase_49lfxxxc,
1726 .write = write_49lfxxxc,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001727 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001728 },
1729
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001730 {
1731 .vendor = "SST",
1732 .name = "SST49LF008A",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001733 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001734 .manufacture_id = SST_ID,
1735 .model_id = SST_49LF008A,
1736 .total_size = 1024,
1737 .page_size = 64 * 1024,
1738 .tested = TEST_OK_PREW,
1739 .probe = probe_sst_fwhub,
Maciej Pijankac6e11112009-06-03 14:46:22 +00001740 .probe_timing = TIMING_FIXME, /* routine is wrapper to probe_jedec (sst_fwhub.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001741 .erase = erase_sst_fwhub,
1742 .write = write_sst_fwhub,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001743 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001744 },
1745
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001746 {
1747 .vendor = "SST",
1748 .name = "SST49LF008C",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001749 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001750 .manufacture_id = SST_ID,
1751 .model_id = SST_49LF008C,
1752 .total_size = 1024,
1753 .page_size = 4 * 1024,
1754 .tested = TEST_UNTESTED,
1755 .probe = probe_49lfxxxc,
Maciej Pijankac6e11112009-06-03 14:46:22 +00001756 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (sst49lfxxxc.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001757 .erase = erase_49lfxxxc,
1758 .write = write_49lfxxxc,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001759 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001760 },
1761
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001762 {
1763 .vendor = "SST",
1764 .name = "SST49LF016C",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001765 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001766 .manufacture_id = SST_ID,
1767 .model_id = SST_49LF016C,
1768 .total_size = 2048,
1769 .page_size = 4 * 1024,
1770 .tested = TEST_OK_PREW,
1771 .probe = probe_49lfxxxc,
Maciej Pijankac6e11112009-06-03 14:46:22 +00001772 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (sst49lfxxxc.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001773 .erase = erase_49lfxxxc,
1774 .write = write_49lfxxxc,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001775 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001776 },
1777
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001778 {
1779 .vendor = "SST",
1780 .name = "SST49LF020",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001781 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001782 .manufacture_id = SST_ID,
1783 .model_id = SST_49LF020,
1784 .total_size = 256,
1785 .page_size = 16 * 1024,
1786 .tested = TEST_OK_PR,
1787 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +00001788 .probe_timing = TIMING_FIXME,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001789 .erase = erase_49lf040,
1790 .write = write_49lf040,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001791 .read = read_memmapped,
Sven Schnellec208dfb2009-01-07 12:35:09 +00001792 },
1793
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001794 {
1795 .vendor = "SST",
1796 .name = "SST49LF020A",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001797 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001798 .manufacture_id = SST_ID,
1799 .model_id = SST_49LF020A,
1800 .total_size = 256,
1801 .page_size = 16 * 1024,
1802 .tested = TEST_UNTESTED,
1803 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +00001804 .probe_timing = TIMING_FIXME,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001805 .erase = erase_49lf040,
1806 .write = write_49lf040,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001807 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001808 },
1809
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001810 {
1811 .vendor = "SST",
1812 .name = "SST49LF040",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001813 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001814 .manufacture_id = SST_ID,
1815 .model_id = SST_49LF040,
1816 .total_size = 512,
1817 .page_size = 4096,
1818 .tested = TEST_OK_PREW,
1819 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +00001820 .probe_timing = TIMING_FIXME,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001821 .erase = erase_49lf040,
1822 .write = write_49lf040,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001823 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001824 },
1825
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001826 {
1827 .vendor = "SST",
1828 .name = "SST49LF040B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001829 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001830 .manufacture_id = SST_ID,
1831 .model_id = SST_49LF040B,
1832 .total_size = 512,
1833 .page_size = 64 * 1024,
1834 .tested = TEST_OK_PREW,
1835 .probe = probe_sst_fwhub,
Maciej Pijankac6e11112009-06-03 14:46:22 +00001836 .probe_timing = TIMING_FIXME, /* routine is wrapper to probe_jedec (sst_fwhub.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001837 .erase = erase_sst_fwhub,
1838 .write = write_sst_fwhub,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001839 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001840 },
1841
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001842 {
1843 .vendor = "SST",
1844 .name = "SST49LF080A",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001845 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001846 .manufacture_id = SST_ID,
1847 .model_id = SST_49LF080A,
1848 .total_size = 1024,
1849 .page_size = 4096,
1850 .tested = TEST_OK_PREW,
1851 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +00001852 .probe_timing = TIMING_FIXME,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001853 .erase = erase_49lf040,
1854 .write = write_49lf040,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001855 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001856 },
1857
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001858 {
1859 .vendor = "SST",
1860 .name = "SST49LF160C",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001861 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001862 .manufacture_id = SST_ID,
1863 .model_id = SST_49LF160C,
1864 .total_size = 2048,
1865 .page_size = 4 * 1024,
1866 .tested = TEST_OK_PREW,
1867 .probe = probe_49lfxxxc,
Maciej Pijankac6e11112009-06-03 14:46:22 +00001868 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (sst49lfxxxc.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001869 .erase = erase_49lfxxxc,
1870 .write = write_49lfxxxc,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001871 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001872 },
1873
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001874 {
1875 .vendor = "ST",
1876 .name = "M25P05-A",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001877 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001878 .manufacture_id = ST_ID,
1879 .model_id = ST_M25P05A,
1880 .total_size = 64,
1881 .page_size = 256,
1882 .tested = TEST_UNTESTED,
1883 .probe = probe_spi_rdid,
1884 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001885 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001886 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001887 },
1888
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001889 {
1890 .vendor = "ST",
1891 .name = "M25P10-A",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001892 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001893 .manufacture_id = ST_ID,
1894 .model_id = ST_M25P10A,
1895 .total_size = 128,
1896 .page_size = 256,
1897 .tested = TEST_UNTESTED,
1898 .probe = probe_spi_rdid,
1899 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001900 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001901 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001902 },
1903
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001904 {
1905 .vendor = "ST",
1906 .name = "M25P20",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001907 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001908 .manufacture_id = ST_ID,
1909 .model_id = ST_M25P20,
1910 .total_size = 256,
1911 .page_size = 256,
1912 .tested = TEST_UNTESTED,
1913 .probe = probe_spi_rdid,
1914 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001915 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001916 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001917 },
1918
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001919 {
1920 .vendor = "ST",
1921 .name = "M25P40",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001922 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001923 .manufacture_id = ST_ID,
1924 .model_id = ST_M25P40,
1925 .total_size = 512,
1926 .page_size = 256,
1927 .tested = TEST_UNTESTED,
1928 .probe = probe_spi_rdid,
1929 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001930 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001931 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001932 },
1933
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001934 {
1935 .vendor = "ST",
1936 .name = "M25P40-old",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001937 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001938 .manufacture_id = ST_ID,
1939 .model_id = ST_M25P40_RES,
1940 .total_size = 512,
1941 .page_size = 256,
1942 .tested = TEST_UNTESTED,
1943 .probe = probe_spi_res,
1944 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001945 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001946 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001947 },
1948
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001949 {
1950 .vendor = "ST",
1951 .name = "M25P80",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001952 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001953 .manufacture_id = ST_ID,
1954 .model_id = ST_M25P80,
1955 .total_size = 1024,
1956 .page_size = 256,
1957 .tested = TEST_UNTESTED,
1958 .probe = probe_spi_rdid,
1959 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001960 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001961 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001962 },
1963
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001964 {
1965 .vendor = "ST",
1966 .name = "M25P16",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001967 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001968 .manufacture_id = ST_ID,
1969 .model_id = ST_M25P16,
1970 .total_size = 2048,
1971 .page_size = 256,
1972 .tested = TEST_OK_PREW,
1973 .probe = probe_spi_rdid,
1974 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001975 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001976 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001977 },
1978
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001979 {
1980 .vendor = "ST",
1981 .name = "M25P32",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001982 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001983 .manufacture_id = ST_ID,
1984 .model_id = ST_M25P32,
1985 .total_size = 4096,
1986 .page_size = 256,
1987 .tested = TEST_OK_PREW,
1988 .probe = probe_spi_rdid,
1989 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001990 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001991 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001992 },
1993
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001994 {
1995 .vendor = "ST",
1996 .name = "M25P64",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001997 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001998 .manufacture_id = ST_ID,
1999 .model_id = ST_M25P64,
2000 .total_size = 8192,
2001 .page_size = 256,
2002 .tested = TEST_UNTESTED,
2003 .probe = probe_spi_rdid,
2004 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00002005 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002006 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00002007 },
2008
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002009 {
2010 .vendor = "ST",
2011 .name = "M25P128",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002012 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002013 .manufacture_id = ST_ID,
2014 .model_id = ST_M25P128,
2015 .total_size = 16384,
2016 .page_size = 256,
2017 .tested = TEST_UNTESTED,
2018 .probe = probe_spi_rdid,
2019 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00002020 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002021 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00002022 },
2023
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002024 {
2025 .vendor = "ST",
2026 .name = "M29F002B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002027 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002028 .manufacture_id = ST_ID,
2029 .model_id = ST_M29F002B,
2030 .total_size = 256,
2031 .page_size = 64 * 1024,
2032 .tested = TEST_UNTESTED,
2033 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002034 .probe_timing = TIMING_FIXME,
Peter Stugeaf8ffac2009-01-26 06:42:02 +00002035 .erase = erase_m29f002,
2036 .write = write_m29f002b,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002037 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002038 },
2039
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002040 {
2041 .vendor = "ST",
2042 .name = "M29F002T/NT",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002043 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002044 .manufacture_id = ST_ID,
2045 .model_id = ST_M29F002T,
2046 .total_size = 256,
2047 .page_size = 64 * 1024,
Peter Stugeaf8ffac2009-01-26 06:42:02 +00002048 .tested = TEST_OK_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002049 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002050 .probe_timing = TIMING_FIXME,
Peter Stugeaf8ffac2009-01-26 06:42:02 +00002051 .erase = erase_m29f002,
2052 .write = write_m29f002t,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002053 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002054 },
2055
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002056 {
2057 .vendor = "ST",
2058 .name = "M29F040B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002059 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002060 .manufacture_id = ST_ID,
2061 .model_id = ST_M29F040B,
2062 .total_size = 512,
2063 .page_size = 64 * 1024,
2064 .tested = TEST_OK_PREW,
2065 .probe = probe_29f040b,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002066 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (am29f040b.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002067 .erase = erase_29f040b,
2068 .write = write_29f040b,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002069 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002070 },
2071
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002072 {
2073 .vendor = "ST",
2074 .name = "M29F400BT",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002075 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002076 .manufacture_id = ST_ID,
2077 .model_id = ST_M29F400BT,
2078 .total_size = 512,
2079 .page_size = 64 * 1024,
2080 .tested = TEST_UNTESTED,
2081 .probe = probe_m29f400bt,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002082 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (m29f400bt.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002083 .erase = erase_m29f400bt,
2084 .write = write_coreboot_m29f400bt,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002085 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002086 },
2087
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002088 {
2089 .vendor = "ST",
2090 .name = "M29W010B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002091 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002092 .manufacture_id = ST_ID,
2093 .model_id = ST_M29W010B,
2094 .total_size = 128,
2095 .page_size = 16 * 1024,
2096 .tested = TEST_UNTESTED,
2097 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002098 .probe_timing = TIMING_FIXME,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002099 .erase = erase_chip_jedec,
2100 .write = write_jedec,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002101 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002102 },
2103
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002104 {
2105 .vendor = "ST",
2106 .name = "M29W040B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002107 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002108 .manufacture_id = ST_ID,
2109 .model_id = ST_M29W040B,
2110 .total_size = 512,
2111 .page_size = 64 * 1024,
2112 .tested = TEST_UNTESTED,
2113 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002114 .probe_timing = TIMING_FIXME,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002115 .erase = erase_chip_jedec,
2116 .write = write_jedec,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002117 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002118 },
2119
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002120 {
2121 .vendor = "ST",
2122 .name = "M50FLW040A",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002123 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002124 .manufacture_id = ST_ID,
2125 .model_id = ST_M50FLW040A,
2126 .total_size = 512,
2127 .page_size = 64 * 1024,
2128 .tested = TEST_UNTESTED,
2129 .probe = probe_stm50flw0x0x,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002130 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (stm50flw0x0x.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002131 .erase = erase_stm50flw0x0x,
2132 .write = write_stm50flw0x0x,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002133 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002134 },
2135
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002136 {
2137 .vendor = "ST",
2138 .name = "M50FLW040B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002139 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002140 .manufacture_id = ST_ID,
2141 .model_id = ST_M50FLW040B,
2142 .total_size = 512,
2143 .page_size = 64 * 1024,
2144 .tested = TEST_UNTESTED,
2145 .probe = probe_stm50flw0x0x,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002146 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (stm50flw0x0x.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002147 .erase = erase_stm50flw0x0x,
2148 .write = write_stm50flw0x0x,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002149 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002150 },
2151
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002152 {
2153 .vendor = "ST",
2154 .name = "M50FLW080A",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002155 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002156 .manufacture_id = ST_ID,
2157 .model_id = ST_M50FLW080A,
2158 .total_size = 1024,
2159 .page_size = 64 * 1024,
2160 .tested = TEST_OK_PREW,
2161 .probe = probe_stm50flw0x0x,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002162 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (stm50flw0x0x.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002163 .erase = erase_stm50flw0x0x,
2164 .write = write_stm50flw0x0x,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002165 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002166 },
2167
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002168 {
2169 .vendor = "ST",
2170 .name = "M50FLW080B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002171 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002172 .manufacture_id = ST_ID,
2173 .model_id = ST_M50FLW080B,
2174 .total_size = 1024,
2175 .page_size = 64 * 1024,
2176 .tested = TEST_UNTESTED,
2177 .probe = probe_stm50flw0x0x,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002178 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (stm50flw0x0x.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002179 .erase = erase_stm50flw0x0x,
2180 .write = write_stm50flw0x0x,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002181 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002182 },
2183
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002184 {
2185 .vendor = "ST",
2186 .name = "M50FW002",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002187 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002188 .manufacture_id = ST_ID,
2189 .model_id = ST_M50FW002,
2190 .total_size = 256,
2191 .page_size = 64 * 1024,
2192 .tested = TEST_UNTESTED,
2193 .probe = probe_49lfxxxc,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002194 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (sst49lfxxxc.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002195 .erase = NULL,
2196 .write = NULL,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002197 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002198 },
2199
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002200 {
2201 .vendor = "ST",
2202 .name = "M50FW016",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002203 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002204 .manufacture_id = ST_ID,
2205 .model_id = ST_M50FW016,
2206 .total_size = 2048,
2207 .page_size = 64 * 1024,
2208 .tested = TEST_UNTESTED,
2209 .probe = probe_82802ab,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002210 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (82802ab.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002211 .erase = erase_82802ab,
2212 .write = write_82802ab,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002213 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002214 },
2215
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002216 {
2217 .vendor = "ST",
2218 .name = "M50FW040",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002219 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002220 .manufacture_id = ST_ID,
2221 .model_id = ST_M50FW040,
2222 .total_size = 512,
2223 .page_size = 64 * 1024,
2224 .tested = TEST_OK_PREW,
2225 .probe = probe_82802ab,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002226 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (82802ab.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002227 .erase = erase_82802ab,
2228 .write = write_82802ab,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002229 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002230 },
2231
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002232 {
2233 .vendor = "ST",
2234 .name = "M50FW080",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002235 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002236 .manufacture_id = ST_ID,
2237 .model_id = ST_M50FW080,
2238 .total_size = 1024,
2239 .page_size = 64 * 1024,
Peter Stugea657e942009-01-24 23:01:08 +00002240 .tested = TEST_OK_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002241 .probe = probe_82802ab,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002242 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (82802ab.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002243 .erase = erase_82802ab,
2244 .write = write_82802ab,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002245 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002246 },
2247
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002248 {
2249 .vendor = "ST",
2250 .name = "M50LPW116",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002251 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002252 .manufacture_id = ST_ID,
2253 .model_id = ST_M50LPW116,
2254 .total_size = 2048,
2255 .page_size = 64 * 1024,
2256 .tested = TEST_UNTESTED,
2257 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002258 .probe_timing = TIMING_FIXME,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002259 .erase = erase_chip_jedec,
2260 .write = write_jedec,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002261 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002262 },
2263
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002264 {
2265 .vendor = "SyncMOS",
2266 .name = "S29C31004T",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002267 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002268 .manufacture_id = SYNCMOS_ID,
2269 .model_id = S29C31004T,
2270 .total_size = 512,
2271 .page_size = 128,
2272 .tested = TEST_UNTESTED,
2273 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002274 .probe_timing = TIMING_FIXME,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002275 .erase = erase_chip_jedec,
2276 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002277 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002278 },
2279
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002280 {
2281 .vendor = "SyncMOS",
2282 .name = "S29C51001T",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002283 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002284 .manufacture_id = SYNCMOS_ID,
2285 .model_id = S29C51001T,
2286 .total_size = 128,
2287 .page_size = 128,
2288 .tested = TEST_UNTESTED,
2289 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002290 .probe_timing = TIMING_FIXME,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002291 .erase = erase_chip_jedec,
2292 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002293 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002294 },
2295
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002296 {
2297 .vendor = "SyncMOS",
2298 .name = "S29C51002T",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002299 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002300 .manufacture_id = SYNCMOS_ID,
2301 .model_id = S29C51002T,
2302 .total_size = 256,
2303 .page_size = 128,
2304 .tested = TEST_OK_PREW,
2305 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002306 .probe_timing = TIMING_FIXME,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002307 .erase = erase_chip_jedec,
2308 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002309 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002310 },
2311
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002312 {
2313 .vendor = "SyncMOS",
2314 .name = "S29C51004T",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002315 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002316 .manufacture_id = SYNCMOS_ID,
2317 .model_id = S29C51004T,
2318 .total_size = 512,
2319 .page_size = 128,
2320 .tested = TEST_UNTESTED,
2321 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002322 .probe_timing = TIMING_FIXME,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002323 .erase = erase_chip_jedec,
2324 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002325 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002326 },
2327
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002328 {
Uwe Hermanna106d152009-05-27 23:17:40 +00002329 .vendor = "TI",
Carl-Daniel Hailfinger09b4fb72009-05-26 21:26:23 +00002330 .name = "TMS29F002RB",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002331 .bustype = CHIP_BUSTYPE_NONSPI,
Carl-Daniel Hailfinger09b4fb72009-05-26 21:26:23 +00002332 .manufacture_id = TI_OLD_ID,
2333 .model_id = TI_TMS29F002RB,
2334 .total_size = 256,
2335 .page_size = 16384, /* Non-uniform sectors */
2336 .tested = TEST_UNTESTED,
2337 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002338 .probe_timing = TIMING_FIXME,
Carl-Daniel Hailfinger09b4fb72009-05-26 21:26:23 +00002339 .erase = NULL,
2340 .write = NULL,
2341 .read = read_memmapped,
2342 },
2343
2344 {
Uwe Hermanna106d152009-05-27 23:17:40 +00002345 .vendor = "TI",
Carl-Daniel Hailfinger09b4fb72009-05-26 21:26:23 +00002346 .name = "TMS29F002RT",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002347 .bustype = CHIP_BUSTYPE_NONSPI,
Carl-Daniel Hailfinger09b4fb72009-05-26 21:26:23 +00002348 .manufacture_id = TI_OLD_ID,
2349 .model_id = TI_TMS29F002RT,
2350 .total_size = 256,
2351 .page_size = 16384, /* Non-uniform sectors */
2352 .tested = TEST_UNTESTED,
2353 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002354 .probe_timing = TIMING_FIXME,
Carl-Daniel Hailfinger09b4fb72009-05-26 21:26:23 +00002355 .erase = NULL,
2356 .write = NULL,
2357 .read = read_memmapped,
2358 },
2359
2360 {
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002361 .vendor = "Winbond",
2362 .name = "W25x10",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002363 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002364 .manufacture_id = WINBOND_NEX_ID,
2365 .model_id = W_25X10,
2366 .total_size = 128,
2367 .page_size = 256,
2368 .tested = TEST_UNTESTED,
2369 .probe = probe_spi_rdid,
2370 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00002371 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002372 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00002373 },
2374
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002375 {
2376 .vendor = "Winbond",
2377 .name = "W25x20",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002378 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002379 .manufacture_id = WINBOND_NEX_ID,
2380 .model_id = W_25X20,
2381 .total_size = 256,
2382 .page_size = 256,
2383 .tested = TEST_UNTESTED,
2384 .probe = probe_spi_rdid,
2385 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00002386 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002387 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00002388 },
2389
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002390 {
2391 .vendor = "Winbond",
2392 .name = "W25x40",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002393 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002394 .manufacture_id = WINBOND_NEX_ID,
2395 .model_id = W_25X40,
2396 .total_size = 512,
2397 .page_size = 256,
2398 .tested = TEST_OK_PREW,
2399 .probe = probe_spi_rdid,
2400 .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 = "Winbond",
2407 .name = "W25x80",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002408 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002409 .manufacture_id = WINBOND_NEX_ID,
2410 .model_id = W_25X80,
2411 .total_size = 1024,
2412 .page_size = 256,
2413 .tested = TEST_OK_PREW,
2414 .probe = probe_spi_rdid,
2415 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00002416 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002417 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00002418 },
2419
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002420 {
2421 .vendor = "Winbond",
2422 .name = "W29C011",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002423 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002424 .manufacture_id = WINBOND_ID,
2425 .model_id = W_29C011,
2426 .total_size = 128,
2427 .page_size = 128,
2428 .tested = TEST_OK_PREW,
2429 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002430 .probe_timing = TIMING_FIXME,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002431 .erase = erase_chip_jedec,
2432 .write = write_jedec,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002433 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002434 },
2435
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002436 {
2437 .vendor = "Winbond",
2438 .name = "W29C020C",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002439 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002440 .manufacture_id = WINBOND_ID,
2441 .model_id = W_29C020C,
2442 .total_size = 256,
2443 .page_size = 128,
2444 .tested = TEST_OK_PREW,
2445 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002446 .probe_timing = TIMING_FIXME,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002447 .erase = erase_chip_jedec,
2448 .write = write_jedec,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002449 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002450 },
2451
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002452 {
2453 .vendor = "Winbond",
2454 .name = "W29C040P",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002455 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002456 .manufacture_id = WINBOND_ID,
2457 .model_id = W_29C040P,
2458 .total_size = 512,
2459 .page_size = 256,
2460 .tested = TEST_UNTESTED,
2461 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002462 .probe_timing = TIMING_FIXME,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002463 .erase = erase_chip_jedec,
2464 .write = write_jedec,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002465 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002466 },
2467
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002468 {
2469 .vendor = "Winbond",
2470 .name = "W29EE011",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002471 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002472 .manufacture_id = WINBOND_ID,
2473 .model_id = W_29C011,
2474 .total_size = 128,
2475 .page_size = 128,
2476 .tested = TEST_OK_PREW,
2477 .probe = probe_w29ee011,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002478 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (w29ee011.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002479 .erase = erase_chip_jedec,
2480 .write = write_jedec,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002481 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002482 },
2483
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002484 {
2485 .vendor = "Winbond",
2486 .name = "W39V040A",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002487 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002488 .manufacture_id = WINBOND_ID,
2489 .model_id = W_39V040A,
2490 .total_size = 512,
2491 .page_size = 64*1024,
Uwe Hermann690bcba2009-05-21 17:11:25 +00002492 .tested = TEST_OK_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002493 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002494 .probe_timing = TIMING_FIXME,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002495 .erase = erase_chip_jedec,
Uwe Hermann24f9fbe2009-05-12 14:06:04 +00002496 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002497 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002498 },
2499
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002500 {
2501 .vendor = "Winbond",
2502 .name = "W39V040B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002503 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002504 .manufacture_id = WINBOND_ID,
2505 .model_id = W_39V040B,
2506 .total_size = 512,
2507 .page_size = 64*1024,
2508 .tested = TEST_OK_PREW,
2509 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002510 .probe_timing = TIMING_FIXME,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002511 .erase = erase_chip_jedec,
Uwe Hermann24f9fbe2009-05-12 14:06:04 +00002512 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002513 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002514 },
2515
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002516 {
2517 .vendor = "Winbond",
2518 .name = "W39V040C",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002519 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002520 .manufacture_id = WINBOND_ID,
2521 .model_id = 0x50,
2522 .total_size = 512,
2523 .page_size = 64*1024,
2524 .tested = TEST_OK_PREW,
2525 .probe = probe_w39v040c,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002526 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (w39v040c.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002527 .erase = erase_w39v040c,
2528 .write = write_w39v040c,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002529 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002530 },
2531
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002532 {
2533 .vendor = "Winbond",
2534 .name = "W39V040FA",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002535 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002536 .manufacture_id = WINBOND_ID,
2537 .model_id = W_39V040FA,
2538 .total_size = 512,
2539 .page_size = 64*1024,
2540 .tested = TEST_OK_PREW,
2541 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002542 .probe_timing = TIMING_FIXME,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002543 .erase = erase_chip_jedec,
Uwe Hermann24f9fbe2009-05-12 14:06:04 +00002544 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002545 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002546 },
2547
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002548 {
2549 .vendor = "Winbond",
2550 .name = "W39V080A",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002551 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002552 .manufacture_id = WINBOND_ID,
2553 .model_id = W_39V080A,
2554 .total_size = 1024,
2555 .page_size = 64*1024,
2556 .tested = TEST_OK_PREW,
2557 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002558 .probe_timing = TIMING_FIXME,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002559 .erase = erase_chip_jedec,
Uwe Hermann24f9fbe2009-05-12 14:06:04 +00002560 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002561 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002562 },
2563
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002564 {
2565 .vendor = "Winbond",
2566 .name = "W49F002U",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002567 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002568 .manufacture_id = WINBOND_ID,
2569 .model_id = W_49F002U,
2570 .total_size = 256,
2571 .page_size = 128,
2572 .tested = TEST_OK_PREW,
2573 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002574 .probe_timing = TIMING_FIXME,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002575 .erase = erase_chip_jedec,
2576 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002577 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002578 },
2579
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002580 {
2581 .vendor = "Winbond",
2582 .name = "W49V002A",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002583 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002584 .manufacture_id = WINBOND_ID,
2585 .model_id = W_49V002A,
2586 .total_size = 256,
2587 .page_size = 128,
2588 .tested = TEST_OK_PREW,
2589 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002590 .probe_timing = TIMING_FIXME,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002591 .erase = erase_chip_jedec,
2592 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002593 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002594 },
2595
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002596 {
2597 .vendor = "Winbond",
2598 .name = "W49V002FA",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002599 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002600 .manufacture_id = WINBOND_ID,
2601 .model_id = W_49V002FA,
2602 .total_size = 256,
2603 .page_size = 128,
2604 .tested = TEST_UNTESTED,
2605 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002606 .probe_timing = TIMING_FIXME,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002607 .erase = erase_chip_jedec,
2608 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002609 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002610 },
2611
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002612 {
2613 .vendor = "Winbond",
2614 .name = "W39V080FA",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002615 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002616 .manufacture_id = WINBOND_ID,
2617 .model_id = W_39V080FA,
2618 .total_size = 1024,
2619 .page_size = 64*1024,
2620 .tested = TEST_OK_PREW,
2621 .probe = probe_winbond_fwhub,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002622 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (w39v080fa.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002623 .erase = erase_winbond_fwhub,
2624 .write = write_winbond_fwhub,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002625 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002626 },
2627
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002628 {
2629 .vendor = "Winbond",
2630 .name = "W39V080FA (dual mode)",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002631 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002632 .manufacture_id = WINBOND_ID,
2633 .model_id = W_39V080FA_DM,
2634 .total_size = 512,
2635 .page_size = 64*1024,
2636 .tested = TEST_UNTESTED,
2637 .probe = probe_winbond_fwhub,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002638 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (w39v080fa.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002639 .erase = erase_winbond_fwhub,
2640 .write = write_winbond_fwhub,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002641 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002642 },
2643
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002644 {
2645 .vendor = "Atmel",
2646 .name = "unknown Atmel SPI chip",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002647 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002648 .manufacture_id = ATMEL_ID,
2649 .model_id = GENERIC_DEVICE_ID,
2650 .total_size = 0,
2651 .page_size = 256,
Carl-Daniel Hailfinger42882fd2009-04-22 13:33:43 +00002652 .tested = TEST_BAD_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002653 .probe = probe_spi_rdid,
2654 .erase = NULL,
2655 .write = NULL,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002656 .read = NULL,
FENG yu ningff692fb2008-12-08 18:15:10 +00002657 },
2658
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002659 {
2660 .vendor = "EON",
2661 .name = "unknown EON SPI chip",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002662 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002663 .manufacture_id = EON_ID_NOPREFIX,
2664 .model_id = GENERIC_DEVICE_ID,
2665 .total_size = 0,
2666 .page_size = 256,
Carl-Daniel Hailfinger42882fd2009-04-22 13:33:43 +00002667 .tested = TEST_BAD_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002668 .probe = probe_spi_rdid,
2669 .erase = NULL,
2670 .write = NULL,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002671 .read = NULL,
FENG yu ningff692fb2008-12-08 18:15:10 +00002672 },
2673
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002674 {
2675 .vendor = "Macronix",
2676 .name = "unknown Macronix SPI chip",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002677 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002678 .manufacture_id = MX_ID,
2679 .model_id = GENERIC_DEVICE_ID,
2680 .total_size = 0,
2681 .page_size = 256,
Carl-Daniel Hailfinger42882fd2009-04-22 13:33:43 +00002682 .tested = TEST_BAD_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002683 .probe = probe_spi_rdid,
2684 .erase = NULL,
2685 .write = NULL,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002686 .read = NULL,
FENG yu ningff692fb2008-12-08 18:15:10 +00002687 },
2688
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002689 {
2690 .vendor = "PMC",
2691 .name = "unknown PMC SPI chip",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002692 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002693 .manufacture_id = PMC_ID,
2694 .model_id = GENERIC_DEVICE_ID,
2695 .total_size = 0,
2696 .page_size = 256,
Carl-Daniel Hailfinger42882fd2009-04-22 13:33:43 +00002697 .tested = TEST_BAD_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002698 .probe = probe_spi_rdid,
2699 .erase = NULL,
2700 .write = NULL,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002701 .read = NULL,
FENG yu ningff692fb2008-12-08 18:15:10 +00002702 },
2703
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002704 {
2705 .vendor = "SST",
2706 .name = "unknown SST SPI chip",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002707 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002708 .manufacture_id = SST_ID,
2709 .model_id = GENERIC_DEVICE_ID,
2710 .total_size = 0,
2711 .page_size = 256,
Carl-Daniel Hailfinger42882fd2009-04-22 13:33:43 +00002712 .tested = TEST_BAD_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002713 .probe = probe_spi_rdid,
2714 .erase = NULL,
2715 .write = NULL,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002716 .read = NULL,
FENG yu ningff692fb2008-12-08 18:15:10 +00002717 },
2718
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002719 {
2720 .vendor = "ST",
2721 .name = "unknown ST SPI chip",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002722 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002723 .manufacture_id = ST_ID,
2724 .model_id = GENERIC_DEVICE_ID,
2725 .total_size = 0,
2726 .page_size = 256,
Carl-Daniel Hailfinger42882fd2009-04-22 13:33:43 +00002727 .tested = TEST_BAD_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002728 .probe = probe_spi_rdid,
2729 .erase = NULL,
2730 .write = NULL,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002731 .read = NULL,
FENG yu ningff692fb2008-12-08 18:15:10 +00002732 },
Uwe Hermannfc425e82008-03-16 02:06:25 +00002733
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002734 { NULL }
Stephan Guilloux72cf5652009-04-21 01:46:07 +00002735};