blob: f211539b448eef50709d24116acaa53f03ec130d [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,
35 * Total size (kB), Page size (B),
36 * Test status,
37 * Probe function, Erase function, Write function, Read function
38 */
39
Stephan Guilloux5c5b5252009-01-08 03:40:17 +000040 {
41 .vendor = "AMD",
42 .name = "Am29F002(N)BB",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +000043 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +000044 .manufacture_id = AMD_ID,
45 .model_id = AM_29F002BB,
46 .total_size = 256,
47 .page_size = 256,
48 .tested = TEST_UNTESTED,
49 .probe = probe_jedec,
50 .erase = erase_chip_jedec,
51 .write = write_en29f002a,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +000052 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +000053 },
54
Stephan Guilloux5c5b5252009-01-08 03:40:17 +000055 {
56 .vendor = "AMD",
57 .name = "Am29F002(N)BT",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +000058 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +000059 .manufacture_id = AMD_ID,
60 .model_id = AM_29F002BT,
61 .total_size = 256,
62 .page_size = 256,
63 .tested = TEST_OK_PREW,
64 .probe = probe_jedec,
65 .erase = erase_chip_jedec,
66 .write = write_en29f002a,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +000067 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +000068 },
69
Stephan Guilloux5c5b5252009-01-08 03:40:17 +000070 {
71 .vendor = "AMD",
72 .name = "Am29F016D",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +000073 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +000074 .manufacture_id = AMD_ID,
75 .model_id = AM_29F016D,
76 .total_size = 2048,
77 .page_size = 64 * 1024,
78 .tested = TEST_UNTESTED,
79 .probe = probe_29f040b,
80 .erase = erase_29f040b,
81 .write = write_29f040b,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +000082 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +000083 },
84
Stephan Guilloux5c5b5252009-01-08 03:40:17 +000085 {
86 .vendor = "AMD",
87 .name = "Am29F040B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +000088 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +000089 .manufacture_id = AMD_ID,
90 .model_id = AM_29F040B,
91 .total_size = 512,
92 .page_size = 64 * 1024,
93 .tested = TEST_OK_PREW,
94 .probe = probe_29f040b,
95 .erase = erase_29f040b,
96 .write = write_29f040b,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +000097 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +000098 },
99
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000100 {
101 .vendor = "AMD",
Peter Stuge8440cc02009-01-25 23:55:12 +0000102 .name = "Am29F080B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000103 .bustype = CHIP_BUSTYPE_NONSPI,
Mateusz Murawski5bae4382009-06-02 00:38:14 +0000104 .manufacture_id = AMD_ID,
105 .model_id = AM_29F080B,
Peter Stuge8440cc02009-01-25 23:55:12 +0000106 .total_size = 1024,
107 .page_size = 64 * 1024,
108 .tested = TEST_UNTESTED,
109 .probe = probe_jedec,
110 .erase = erase_29f040b,
111 .write = write_29f040b,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +0000112 .read = read_memmapped,
Peter Stuge8440cc02009-01-25 23:55:12 +0000113 },
114
115 {
116 .vendor = "AMD",
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000117 .name = "Am29LV040B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000118 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000119 .manufacture_id = AMD_ID,
120 .model_id = AM_29LV040B,
121 .total_size = 512,
122 .page_size = 64 * 1024,
123 .tested = TEST_UNTESTED,
124 .probe = probe_29f040b,
125 .erase = erase_29f040b,
126 .write = write_29f040b,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +0000127 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +0000128 },
129
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000130 {
Peter Stuge8440cc02009-01-25 23:55:12 +0000131 .vendor = "AMD",
132 .name = "Am29LV081B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000133 .bustype = CHIP_BUSTYPE_NONSPI,
Mateusz Murawski5bae4382009-06-02 00:38:14 +0000134 .manufacture_id = AMD_ID,
135 .model_id = AM_29LV081B,
Peter Stuge8440cc02009-01-25 23:55:12 +0000136 .total_size = 1024,
137 .page_size = 64 * 1024,
138 .tested = TEST_UNTESTED,
139 .probe = probe_29f040b,
140 .erase = erase_29f040b,
141 .write = write_29f040b,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +0000142 .read = read_memmapped,
Peter Stuge8440cc02009-01-25 23:55:12 +0000143 },
144
145 {
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000146 .vendor = "ASD",
147 .name = "AE49F2008",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000148 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000149 .manufacture_id = ASD_ID,
150 .model_id = ASD_AE49F2008,
151 .total_size = 256,
152 .page_size = 128,
153 .tested = TEST_UNTESTED,
154 .probe = probe_jedec,
155 .erase = erase_chip_jedec,
156 .write = write_jedec,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +0000157 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +0000158 },
159
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000160 {
161 .vendor = "Atmel",
162 .name = "AT25DF021",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000163 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000164 .manufacture_id = ATMEL_ID,
165 .model_id = AT_25DF021,
166 .total_size = 256,
167 .page_size = 256,
168 .tested = TEST_UNTESTED,
169 .probe = probe_spi_rdid,
Carl-Daniel Hailfingerf8bc28f2009-01-08 16:53:13 +0000170 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +0000171 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000172 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000173 },
174
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000175 {
176 .vendor = "Atmel",
177 .name = "AT25DF041A",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000178 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000179 .manufacture_id = ATMEL_ID,
180 .model_id = AT_25DF041A,
181 .total_size = 512,
182 .page_size = 256,
183 .tested = TEST_UNTESTED,
184 .probe = probe_spi_rdid,
Carl-Daniel Hailfingerf8bc28f2009-01-08 16:53:13 +0000185 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +0000186 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000187 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000188 },
189
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000190 {
191 .vendor = "Atmel",
192 .name = "AT25DF081",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000193 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000194 .manufacture_id = ATMEL_ID,
195 .model_id = AT_25DF081,
196 .total_size = 1024,
197 .page_size = 256,
198 .tested = TEST_UNTESTED,
199 .probe = probe_spi_rdid,
Carl-Daniel Hailfingerf8bc28f2009-01-08 16:53:13 +0000200 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +0000201 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000202 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000203 },
204
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000205 {
206 .vendor = "Atmel",
207 .name = "AT25DF161",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000208 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000209 .manufacture_id = ATMEL_ID,
210 .model_id = AT_25DF161,
211 .total_size = 2048,
212 .page_size = 256,
213 .tested = TEST_UNTESTED,
214 .probe = probe_spi_rdid,
Carl-Daniel Hailfingerf8bc28f2009-01-08 16:53:13 +0000215 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +0000216 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000217 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000218 },
219
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000220 {
221 .vendor = "Atmel",
222 .name = "AT25DF321",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000223 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000224 .manufacture_id = ATMEL_ID,
225 .model_id = AT_25DF321,
226 .total_size = 4096,
227 .page_size = 256,
228 .tested = TEST_OK_PREW,
229 .probe = probe_spi_rdid,
Carl-Daniel Hailfingerf8bc28f2009-01-08 16:53:13 +0000230 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +0000231 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000232 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000233 },
234
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000235 {
236 .vendor = "Atmel",
237 .name = "AT25DF321A",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000238 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000239 .manufacture_id = ATMEL_ID,
240 .model_id = AT_25DF321A,
241 .total_size = 4096,
242 .page_size = 256,
243 .tested = TEST_UNTESTED,
244 .probe = probe_spi_rdid,
Carl-Daniel Hailfingerf8bc28f2009-01-08 16:53:13 +0000245 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +0000246 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000247 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000248 },
249
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000250 {
251 .vendor = "Atmel",
252 .name = "AT25DF641",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000253 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000254 .manufacture_id = ATMEL_ID,
255 .model_id = AT_25DF641,
256 .total_size = 8192,
257 .page_size = 256,
258 .tested = TEST_UNTESTED,
259 .probe = probe_spi_rdid,
Carl-Daniel Hailfingerf8bc28f2009-01-08 16:53:13 +0000260 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +0000261 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000262 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000263 },
264
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000265 {
266 .vendor = "Atmel",
267 .name = "AT25F512B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000268 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000269 .manufacture_id = ATMEL_ID,
270 .model_id = AT_25F512B,
271 .total_size = 64,
272 .page_size = 256,
273 .tested = TEST_UNTESTED,
274 .probe = probe_spi_rdid,
Carl-Daniel Hailfingerf8bc28f2009-01-08 16:53:13 +0000275 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +0000276 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000277 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000278 },
279
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000280 {
281 .vendor = "Atmel",
282 .name = "AT25FS010",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000283 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000284 .manufacture_id = ATMEL_ID,
285 .model_id = AT_25FS010,
286 .total_size = 128,
287 .page_size = 256,
288 .tested = TEST_UNTESTED,
289 .probe = probe_spi_rdid,
Carl-Daniel Hailfingerf8bc28f2009-01-08 16:53:13 +0000290 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +0000291 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000292 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000293 },
294
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000295 {
296 .vendor = "Atmel",
297 .name = "AT25FS040",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000298 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000299 .manufacture_id = ATMEL_ID,
300 .model_id = AT_25FS040,
301 .total_size = 512,
302 .page_size = 256,
303 .tested = TEST_UNTESTED,
304 .probe = probe_spi_rdid,
Carl-Daniel Hailfingerf8bc28f2009-01-08 16:53:13 +0000305 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +0000306 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000307 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000308 },
309
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000310 {
311 .vendor = "Atmel",
312 .name = "AT26DF041",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000313 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000314 .manufacture_id = ATMEL_ID,
315 .model_id = AT_26DF041,
316 .total_size = 512,
317 .page_size = 256,
318 .tested = TEST_UNTESTED,
319 .probe = probe_spi_rdid,
320 .erase = NULL,
321 .write = NULL /* Incompatible Page write */,
322 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000323 },
324
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000325 {
326 .vendor = "Atmel",
327 .name = "AT26DF081A",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000328 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000329 .manufacture_id = ATMEL_ID,
330 .model_id = AT_26DF081A,
331 .total_size = 1024,
332 .page_size = 256,
333 .tested = TEST_UNTESTED,
334 .probe = probe_spi_rdid,
Carl-Daniel Hailfingerf8bc28f2009-01-08 16:53:13 +0000335 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +0000336 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000337 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000338 },
339
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000340 {
341 .vendor = "Atmel",
342 .name = "AT26DF161",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000343 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000344 .manufacture_id = ATMEL_ID,
345 .model_id = AT_26DF161,
346 .total_size = 2048,
347 .page_size = 256,
348 .tested = TEST_UNTESTED,
349 .probe = probe_spi_rdid,
Carl-Daniel Hailfingerf8bc28f2009-01-08 16:53:13 +0000350 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +0000351 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000352 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000353 },
354
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000355 {
356 .vendor = "Atmel",
357 .name = "AT26DF161A",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000358 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000359 .manufacture_id = ATMEL_ID,
360 .model_id = AT_26DF161A,
361 .total_size = 2048,
362 .page_size = 256,
363 .tested = TEST_UNTESTED,
364 .probe = probe_spi_rdid,
Carl-Daniel Hailfingerf8bc28f2009-01-08 16:53:13 +0000365 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +0000366 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000367 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000368 },
369
370 /*The AT26DF321 has the same ID as the AT25DF321. */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000371 /*{
372 .vendor = "Atmel",
373 .name = "AT26DF321",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000374 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000375 .manufacture_id = ATMEL_ID,
376 .model_id = AT_26DF321,
377 .total_size = 4096,
378 .page_size = 256,
379 .tested = TEST_UNTESTED,
380 .probe = probe_spi_rdid,
Carl-Daniel Hailfingerf8bc28f2009-01-08 16:53:13 +0000381 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +0000382 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000383 .read = spi_chip_read,
384 },*/
FENG yu ningff692fb2008-12-08 18:15:10 +0000385
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000386 {
387 .vendor = "Atmel",
388 .name = "AT26F004",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000389 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000390 .manufacture_id = ATMEL_ID,
391 .model_id = AT_26F004,
392 .total_size = 512,
393 .page_size = 256,
394 .tested = TEST_UNTESTED,
395 .probe = probe_spi_rdid,
Carl-Daniel Hailfingerf8bc28f2009-01-08 16:53:13 +0000396 .erase = spi_chip_erase_60_c7,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000397 .write = NULL /* Incompatible Page write */,
398 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000399 },
400
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000401 {
402 .vendor = "Atmel",
Uwe Hermann8403ccb2009-05-16 21:39:19 +0000403 .name = "AT29C010A",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000404 .bustype = CHIP_BUSTYPE_NONSPI,
Uwe Hermann8403ccb2009-05-16 21:39:19 +0000405 .manufacture_id = ATMEL_ID,
406 .model_id = AT_29C010A,
407 .total_size = 128,
408 .page_size = 128,
409 .tested = TEST_OK_PRE,
410 .probe = probe_jedec,
411 .erase = erase_chip_jedec,
412 .write = write_jedec, /* FIXME */
413 .read = read_memmapped,
414 },
415
416 {
417 .vendor = "Atmel",
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000418 .name = "AT29C020",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000419 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000420 .manufacture_id = ATMEL_ID,
421 .model_id = AT_29C020,
422 .total_size = 256,
423 .page_size = 256,
424 .tested = TEST_OK_PREW,
425 .probe = probe_jedec,
426 .erase = erase_chip_jedec,
427 .write = write_jedec,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +0000428 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +0000429 },
430
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000431 {
432 .vendor = "Atmel",
433 .name = "AT29C040A",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000434 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000435 .manufacture_id = ATMEL_ID,
436 .model_id = AT_29C040A,
437 .total_size = 512,
438 .page_size = 256,
439 .tested = TEST_UNTESTED,
440 .probe = probe_jedec,
441 .erase = erase_chip_jedec,
442 .write = write_jedec,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +0000443 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +0000444 },
445
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000446 {
447 .vendor = "Atmel",
448 .name = "AT45CS1282",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000449 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000450 .manufacture_id = ATMEL_ID,
451 .model_id = AT_45CS1282,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000452 .total_size = 16896 /* No power of two sizes */,
453 .page_size = 1056 /* No power of two sizes */,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000454 .tested = TEST_BAD_READ,
455 .probe = probe_spi_rdid,
456 .erase = NULL,
457 .write = NULL /* Incompatible Page write */,
458 .read = NULL /* Incompatible read */,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000459 },
FENG yu ningff692fb2008-12-08 18:15:10 +0000460
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000461 {
462 .vendor = "Atmel",
463 .name = "AT45DB011D",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000464 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000465 .manufacture_id = ATMEL_ID,
466 .model_id = AT_45DB011D,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000467 .total_size = 128 /* Size can only be determined from status register */,
468 .page_size = 256 /* Size can only be determined from status register */,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000469 .tested = TEST_BAD_READ,
470 .probe = probe_spi_rdid,
471 .erase = NULL,
472 .write = NULL,
473 .read = NULL,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000474 },
FENG yu ningff692fb2008-12-08 18:15:10 +0000475
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000476 {
477 .vendor = "Atmel",
478 .name = "AT45DB021D",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000479 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000480 .manufacture_id = ATMEL_ID,
481 .model_id = AT_45DB021D,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000482 .total_size = 256 /* Size can only be determined from status register */,
483 .page_size = 256 /* Size can only be determined from status register */,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000484 .tested = TEST_BAD_READ,
485 .probe = probe_spi_rdid,
486 .erase = NULL,
487 .write = NULL,
488 .read = NULL,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000489 },
FENG yu ningff692fb2008-12-08 18:15:10 +0000490
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000491 {
492 .vendor = "Atmel",
493 .name = "AT45DB041D",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000494 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000495 .manufacture_id = ATMEL_ID,
496 .model_id = AT_45DB041D,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000497 .total_size = 512 /* Size can only be determined from status register */,
498 .page_size = 256 /* Size can only be determined from status register */,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000499 .tested = TEST_BAD_READ,
500 .probe = probe_spi_rdid,
501 .erase = NULL,
502 .write = NULL,
503 .read = NULL,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000504 },
FENG yu ningff692fb2008-12-08 18:15:10 +0000505
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000506 {
507 .vendor = "Atmel",
508 .name = "AT45DB081D",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000509 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000510 .manufacture_id = ATMEL_ID,
511 .model_id = AT_45DB081D,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000512 .total_size = 1024 /* Size can only be determined from status register */,
513 .page_size = 256 /* Size can only be determined from status register */,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000514 .tested = TEST_BAD_READ,
515 .probe = probe_spi_rdid,
516 .erase = NULL,
517 .write = NULL,
518 .read = NULL,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000519 },
FENG yu ningff692fb2008-12-08 18:15:10 +0000520
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000521 {
522 .vendor = "Atmel",
523 .name = "AT45DB161D",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000524 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000525 .manufacture_id = ATMEL_ID,
526 .model_id = AT_45DB161D,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000527 .total_size = 2048 /* Size can only be determined from status register */,
528 .page_size = 512 /* Size can only be determined from status register */,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000529 .tested = TEST_BAD_READ,
530 .probe = probe_spi_rdid,
531 .erase = NULL,
532 .write = NULL,
533 .read = NULL,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000534 },
FENG yu ningff692fb2008-12-08 18:15:10 +0000535
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000536 {
537 .vendor = "Atmel",
538 .name = "AT45DB321C",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000539 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000540 .manufacture_id = ATMEL_ID,
541 .model_id = AT_45DB321C,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000542 .total_size = 4224 /* No power of two sizes */,
543 .page_size = 528 /* No power of two sizes */,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000544 .tested = TEST_BAD_READ,
545 .probe = probe_spi_rdid,
546 .erase = NULL,
547 .write = NULL,
548 .read = NULL /* Incompatible read */,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000549 },
FENG yu ningff692fb2008-12-08 18:15:10 +0000550
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000551 {
552 .vendor = "Atmel",
553 .name = "AT45DB321D",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000554 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000555 .manufacture_id = ATMEL_ID,
556 .model_id = AT_45DB321D,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000557 .total_size = 4096 /* Size can only be determined from status register */,
558 .page_size = 512 /* Size can only be determined from status register */,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000559 .tested = TEST_BAD_READ,
560 .probe = probe_spi_rdid,
561 .erase = NULL,
562 .write = NULL,
563 .read = NULL,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000564 },
FENG yu ningff692fb2008-12-08 18:15:10 +0000565
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000566 {
567 .vendor = "Atmel",
568 .name = "AT45DB642D",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000569 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000570 .manufacture_id = ATMEL_ID,
571 .model_id = AT_45DB642D,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000572 .total_size = 8192 /* Size can only be determined from status register */,
573 .page_size = 1024 /* Size can only be determined from status register */,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000574 .tested = TEST_BAD_READ,
575 .probe = probe_spi_rdid,
576 .erase = NULL,
577 .write = NULL,
578 .read = NULL,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000579 },
FENG yu ningff692fb2008-12-08 18:15:10 +0000580
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000581 {
582 .vendor = "Atmel",
Uwe Hermannb4dcb712009-05-13 11:36:06 +0000583 .name = "AT49BV512",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000584 .bustype = CHIP_BUSTYPE_NONSPI,
Uwe Hermannb4dcb712009-05-13 11:36:06 +0000585 .manufacture_id = ATMEL_ID,
586 .model_id = AT_49BV512,
587 .total_size = 64,
588 .page_size = 64,
589 .tested = TEST_OK_PREW,
590 .probe = probe_jedec,
591 .erase = erase_chip_jedec,
592 .write = write_49f002,
593 .read = read_memmapped,
594 },
595
596 {
597 .vendor = "Atmel",
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000598 .name = "AT49F002(N)",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000599 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000600 .manufacture_id = ATMEL_ID,
601 .model_id = AT_49F002N,
602 .total_size = 256,
603 .page_size = 256,
604 .tested = TEST_UNTESTED,
605 .probe = probe_jedec,
606 .erase = erase_chip_jedec,
607 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +0000608 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +0000609 },
610
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000611 {
612 .vendor = "Atmel",
613 .name = "AT49F002(N)T",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000614 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000615 .manufacture_id = ATMEL_ID,
616 .model_id = AT_49F002NT,
617 .total_size = 256,
618 .page_size = 256,
619 .tested = TEST_OK_PREW,
620 .probe = probe_jedec,
621 .erase = erase_chip_jedec,
622 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +0000623 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +0000624 },
625
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000626 {
627 .vendor = "AMIC",
628 .name = "A25L40P",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000629 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000630 .manufacture_id = AMIC_ID,
631 .model_id = AMIC_A25L40P,
632 .total_size = 512,
633 .page_size = 256,
634 .tested = TEST_OK_PREW,
635 .probe = probe_spi_rdid4,
636 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +0000637 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000638 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000639 },
640
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000641 {
642 .vendor = "AMIC",
643 .name = "A29002B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000644 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000645 .manufacture_id = AMIC_ID_NOPREFIX,
646 .model_id = AMIC_A29002B,
647 .total_size = 256,
648 .page_size = 64 * 1024,
649 .tested = TEST_UNTESTED,
650 .probe = probe_29f002,
651 .erase = erase_29f002,
652 .write = write_29f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +0000653 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +0000654 },
655
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000656 {
657 .vendor = "AMIC",
658 .name = "A29002T",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000659 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000660 .manufacture_id = AMIC_ID_NOPREFIX,
661 .model_id = AMIC_A29002T,
662 .total_size = 256,
663 .page_size = 64 * 1024,
664 .tested = TEST_OK_PREW,
665 .probe = probe_29f002,
666 .erase = erase_29f002,
667 .write = write_29f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +0000668 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +0000669 },
670
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000671 {
672 .vendor = "AMIC",
673 .name = "A29040B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000674 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000675 .manufacture_id = AMIC_ID_NOPREFIX,
676 .model_id = AMIC_A29040B,
677 .total_size = 512,
678 .page_size = 64 * 1024,
679 .tested = TEST_OK_PR,
680 .probe = probe_29f040b,
681 .erase = erase_29f040b,
682 .write = write_29f040b,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +0000683 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +0000684 },
685
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000686 {
687 .vendor = "AMIC",
688 .name = "A49LF040A",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000689 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000690 .manufacture_id = AMIC_ID_NOPREFIX,
691 .model_id = AMIC_A49LF040A,
692 .total_size = 512,
693 .page_size = 64 * 1024,
694 .tested = TEST_OK_PREW,
695 .probe = probe_49fl00x,
696 .erase = erase_49fl00x,
697 .write = write_49fl00x,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +0000698 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +0000699 },
700
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000701 {
702 .vendor = "EMST",
703 .name = "F49B002UA",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000704 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000705 .manufacture_id = EMST_ID,
706 .model_id = EMST_F49B002UA,
707 .total_size = 256,
708 .page_size = 4096,
709 .tested = TEST_UNTESTED,
710 .probe = probe_jedec,
711 .erase = erase_chip_jedec,
712 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +0000713 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +0000714 },
715
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000716 {
717 .vendor = "EON",
718 .name = "EN29F002(A)(N)B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000719 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000720 .manufacture_id = EON_ID,
721 .model_id = EN_29F002B,
722 .total_size = 256,
723 .page_size = 256,
724 .tested = TEST_UNTESTED,
725 .probe = probe_jedec,
726 .erase = erase_chip_jedec,
727 .write = write_en29f002a,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +0000728 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +0000729 },
730
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000731 {
732 .vendor = "EON",
733 .name = "EN29F002(A)(N)T",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000734 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000735 .manufacture_id = EON_ID,
736 .model_id = EN_29F002T,
737 .total_size = 256,
738 .page_size = 256,
739 .tested = TEST_OK_PREW,
740 .probe = probe_jedec,
741 .erase = erase_chip_jedec,
742 .write = write_en29f002a,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +0000743 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +0000744 },
745
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000746 {
747 .vendor = "Fujitsu",
748 .name = "MBM29F004BC",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000749 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000750 .manufacture_id = FUJITSU_ID,
751 .model_id = MBM29F004BC,
752 .total_size = 512,
753 .page_size = 64 * 1024,
754 .tested = TEST_UNTESTED,
755 .probe = probe_jedec,
756 .erase = NULL,
757 .write = NULL,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +0000758 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +0000759 },
760
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000761 {
762 .vendor = "Fujitsu",
763 .name = "MBM29F004TC",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000764 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000765 .manufacture_id = FUJITSU_ID,
766 .model_id = MBM29F004TC,
767 .total_size = 512,
768 .page_size = 64 * 1024,
769 .tested = TEST_UNTESTED,
770 .probe = probe_jedec,
771 .erase = NULL,
772 .write = NULL,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +0000773 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +0000774 },
775
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000776 {
777 .vendor = "Fujitsu",
778 .name = "MBM29F400BC",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000779 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000780 .manufacture_id = FUJITSU_ID,
781 .model_id = MBM29F400BC,
782 .total_size = 512,
783 .page_size = 64 * 1024,
784 .tested = TEST_UNTESTED,
785 .probe = probe_m29f400bt,
786 .erase = erase_m29f400bt,
787 .write = write_coreboot_m29f400bt,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +0000788 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +0000789 },
790
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000791 {
792 .vendor = "Fujitsu",
793 .name = "MBM29F400TC",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000794 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000795 .manufacture_id = FUJITSU_ID,
796 .model_id = MBM29F400TC,
797 .total_size = 512,
798 .page_size = 64 * 1024,
799 .tested = TEST_UNTESTED,
800 .probe = probe_m29f400bt,
801 .erase = erase_m29f400bt,
802 .write = write_coreboot_m29f400bt,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +0000803 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +0000804 },
805
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000806 {
807 .vendor = "Intel",
Urja Rannikkoebd7b832009-05-29 12:55:31 +0000808 .name = "28F001BX-B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000809 .bustype = CHIP_BUSTYPE_NONSPI,
Urja Rannikkoebd7b832009-05-29 12:55:31 +0000810 .manufacture_id = INTEL_ID,
811 .model_id = P28F001BXB,
812 .total_size = 128,
813 .page_size = 128 * 1024, /* 8k + 2x4k + 112k */
814 .tested = TEST_BAD_ERASE|TEST_BAD_WRITE,
815 .probe = probe_jedec,
816 .erase = NULL,
817 .write = NULL,
818 .read = read_memmapped,
819 },
820
821 {
822 .vendor = "Intel",
823 .name = "28F001BX-T",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000824 .bustype = CHIP_BUSTYPE_NONSPI,
Urja Rannikkoebd7b832009-05-29 12:55:31 +0000825 .manufacture_id = INTEL_ID,
826 .model_id = P28F001BXT,
827 .total_size = 128,
828 .page_size = 128 * 1024, /* 112k + 2x4k + 8k */
829 .tested = TEST_OK_PR|TEST_BAD_ERASE|TEST_BAD_WRITE,
830 .probe = probe_jedec,
831 .erase = NULL,
832 .write = NULL,
833 .read = read_memmapped,
834 },
835
836 {
837 .vendor = "Intel",
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000838 .name = "82802AB",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000839 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000840 .manufacture_id = INTEL_ID,
841 .model_id = 173,
842 .total_size = 512,
843 .page_size = 64 * 1024,
844 .tested = TEST_OK_PREW,
845 .probe = probe_82802ab,
846 .erase = erase_82802ab,
847 .write = write_82802ab,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +0000848 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +0000849 },
850
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000851 {
852 .vendor = "Intel",
853 .name = "82802AC",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000854 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000855 .manufacture_id = INTEL_ID,
856 .model_id = 172,
857 .total_size = 1024,
858 .page_size = 64 * 1024,
859 .tested = TEST_OK_PREW,
860 .probe = probe_82802ab,
861 .erase = erase_82802ab,
862 .write = write_82802ab,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +0000863 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +0000864 },
865
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000866 {
867 .vendor = "Macronix",
868 .name = "MX25L512",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000869 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000870 .manufacture_id = MX_ID,
871 .model_id = MX_25L512,
872 .total_size = 64,
873 .page_size = 256,
874 .tested = TEST_UNTESTED,
875 .probe = probe_spi_rdid,
Stephan Guillouxfd315502009-04-20 22:54:13 +0000876 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +0000877 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000878 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000879 },
880
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000881 {
882 .vendor = "Macronix",
883 .name = "MX25L1005",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000884 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000885 .manufacture_id = MX_ID,
886 .model_id = MX_25L1005,
887 .total_size = 128,
888 .page_size = 256,
889 .tested = TEST_UNTESTED,
890 .probe = probe_spi_rdid,
Stephan Guillouxfd315502009-04-20 22:54:13 +0000891 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +0000892 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000893 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000894 },
895
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000896 {
897 .vendor = "Macronix",
898 .name = "MX25L2005",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000899 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000900 .manufacture_id = MX_ID,
901 .model_id = MX_25L2005,
902 .total_size = 256,
903 .page_size = 256,
904 .tested = TEST_UNTESTED,
905 .probe = probe_spi_rdid,
Stephan Guillouxfd315502009-04-20 22:54:13 +0000906 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +0000907 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000908 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000909 },
910
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000911 {
912 .vendor = "Macronix",
913 .name = "MX25L4005",
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_25L4005,
917 .total_size = 512,
918 .page_size = 256,
919 .tested = TEST_OK_PREW,
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 = "MX25L8005",
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_25L8005,
932 .total_size = 1024,
933 .page_size = 256,
934 .tested = TEST_OK_PREW,
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 = "MX25L1605",
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_25L1605,
947 .total_size = 2048,
948 .page_size = 256,
Peter Stugeddb94f72009-04-29 23:22:33 +0000949 .tested = TEST_OK_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000950 .probe = probe_spi_rdid,
Stephan Guillouxe39631c2009-04-19 23:24:26 +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",
Stephan Guillouxf5c70902009-04-19 23:04:00 +0000958 .name = "MX25L1635D",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000959 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guillouxf5c70902009-04-19 23:04:00 +0000960 .manufacture_id = MX_ID,
961 .model_id = MX_25L1635D,
962 .total_size = 2048,
963 .page_size = 256,
964 .tested = TEST_UNTESTED,
965 .probe = probe_spi_rdid,
Stephan Guillouxe39631c2009-04-19 23:24:26 +0000966 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +0000967 .write = spi_chip_write_256,
Stephan Guillouxf5c70902009-04-19 23:04:00 +0000968 .read = spi_chip_read,
969 },
Stephan Guillouxfd315502009-04-20 22:54:13 +0000970
Stephan Guillouxf5c70902009-04-19 23:04:00 +0000971 {
972 .vendor = "Macronix",
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000973 .name = "MX25L3205",
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_25L3205,
977 .total_size = 4096,
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",
Stephan Guilloux70ea9a32009-04-23 22:51:56 +0000988 .name = "MX25L3235D",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000989 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux70ea9a32009-04-23 22:51:56 +0000990 .manufacture_id = MX_ID,
991 .model_id = MX_25L3235D,
992 .total_size = 4096,
993 .page_size = 256,
994 .tested = TEST_UNTESTED,
995 .probe = probe_spi_rdid,
996 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +0000997 .write = spi_chip_write_256,
Stephan Guilloux70ea9a32009-04-23 22:51:56 +0000998 .read = spi_chip_read,
999 },
1000
1001 {
1002 .vendor = "Macronix",
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001003 .name = "MX25L6405",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001004 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001005 .manufacture_id = MX_ID,
1006 .model_id = MX_25L6405,
1007 .total_size = 8192,
1008 .page_size = 256,
1009 .tested = TEST_UNTESTED,
1010 .probe = probe_spi_rdid,
Stephan Guillouxfd315502009-04-20 22:54:13 +00001011 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001012 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001013 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001014 },
1015
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001016 {
1017 .vendor = "Macronix",
Stephan Guilloux2f132fe2009-04-21 01:47:16 +00001018 .name = "MX25L12805",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001019 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux2f132fe2009-04-21 01:47:16 +00001020 .manufacture_id = MX_ID,
1021 .model_id = MX_25L12805,
1022 .total_size = 16384,
1023 .page_size = 256,
1024 .tested = TEST_UNTESTED,
1025 .probe = probe_spi_rdid,
1026 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001027 .write = spi_chip_write_256,
Stephan Guilloux2f132fe2009-04-21 01:47:16 +00001028 .read = spi_chip_read,
1029 },
1030
1031 {
1032 .vendor = "Macronix",
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001033 .name = "MX29F002B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001034 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001035 .manufacture_id = MX_ID,
1036 .model_id = MX_29F002B,
1037 .total_size = 256,
1038 .page_size = 64 * 1024,
1039 .tested = TEST_UNTESTED,
1040 .probe = probe_29f002,
1041 .erase = erase_29f002,
1042 .write = write_29f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001043 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001044 },
1045
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001046 {
1047 .vendor = "Macronix",
1048 .name = "MX29F002T",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001049 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001050 .manufacture_id = MX_ID,
1051 .model_id = MX_29F002T,
1052 .total_size = 256,
1053 .page_size = 64 * 1024,
Uwe Hermann66c580c2009-05-21 00:29:50 +00001054 .tested = TEST_OK_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001055 .probe = probe_29f002,
1056 .erase = erase_29f002,
1057 .write = write_29f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001058 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001059 },
1060
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001061 {
1062 .vendor = "Macronix",
1063 .name = "MX29LV040C",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001064 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001065 .manufacture_id = MX_ID,
1066 .model_id = MX_29LV040C,
1067 .total_size = 512,
1068 .page_size = 64 * 1024,
1069 .tested = TEST_OK_PR,
1070 .probe = probe_29f002,
1071 .erase = erase_29f002,
1072 .write = write_29f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001073 .read = read_memmapped,
Carl-Daniel Hailfinger7de86392008-12-10 10:32:05 +00001074 },
1075
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001076 {
1077 .vendor = "Numonyx",
1078 .name = "M25PE10",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001079 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001080 .manufacture_id = ST_ID,
1081 .model_id = 0x8011,
1082 .total_size = 128,
1083 .page_size = 256,
1084 .tested = TEST_UNTESTED,
1085 .probe = probe_spi_rdid,
1086 .erase = spi_chip_erase_d8,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001087 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001088 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001089 },
1090
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001091 {
1092 .vendor = "Numonyx",
1093 .name = "M25PE20",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001094 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001095 .manufacture_id = ST_ID,
1096 .model_id = 0x8012,
1097 .total_size = 256,
1098 .page_size = 256,
1099 .tested = TEST_UNTESTED,
1100 .probe = probe_spi_rdid,
1101 .erase = spi_chip_erase_d8,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001102 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001103 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001104 },
1105
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001106 {
1107 .vendor = "Numonyx",
1108 .name = "M25PE40",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001109 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001110 .manufacture_id = ST_ID,
1111 .model_id = 0x8013,
1112 .total_size = 256,
1113 .page_size = 256,
1114 .tested = TEST_UNTESTED,
1115 .probe = probe_spi_rdid,
1116 .erase = spi_chip_erase_d8,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001117 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001118 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001119 },
1120
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001121 {
1122 .vendor = "Numonyx",
1123 .name = "M25PE80",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001124 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001125 .manufacture_id = ST_ID,
1126 .model_id = 0x8014,
1127 .total_size = 1024,
1128 .page_size = 256,
1129 .tested = TEST_OK_PREW,
1130 .probe = probe_spi_rdid,
1131 .erase = spi_chip_erase_d8,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001132 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001133 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001134 },
1135
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001136 {
1137 .vendor = "Numonyx",
1138 .name = "M25PE16",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001139 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001140 .manufacture_id = ST_ID,
1141 .model_id = 0x8015,
1142 .total_size = 2048,
1143 .page_size = 256,
1144 .tested = TEST_UNTESTED,
1145 .probe = probe_spi_rdid,
1146 .erase = spi_chip_erase_d8,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001147 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001148 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001149 },
1150
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001151 {
1152 .vendor = "PMC",
1153 .name = "Pm25LV010",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001154 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001155 .manufacture_id = PMC_ID,
1156 .model_id = PMC_25LV010,
1157 .total_size = 128,
1158 .page_size = 256,
1159 .tested = TEST_UNTESTED,
1160 .probe = probe_spi_rdid,
1161 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001162 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001163 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001164 },
1165
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001166 {
1167 .vendor = "PMC",
1168 .name = "Pm25LV016B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001169 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001170 .manufacture_id = PMC_ID,
1171 .model_id = PMC_25LV016B,
1172 .total_size = 2048,
1173 .page_size = 256,
1174 .tested = TEST_UNTESTED,
1175 .probe = probe_spi_rdid,
1176 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001177 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001178 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001179 },
1180
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001181 {
1182 .vendor = "PMC",
1183 .name = "Pm25LV020",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001184 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001185 .manufacture_id = PMC_ID,
1186 .model_id = PMC_25LV020,
1187 .total_size = 256,
1188 .page_size = 256,
1189 .tested = TEST_UNTESTED,
1190 .probe = probe_spi_rdid,
1191 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001192 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001193 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001194 },
1195
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001196 {
1197 .vendor = "PMC",
1198 .name = "Pm25LV040",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001199 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001200 .manufacture_id = PMC_ID,
1201 .model_id = PMC_25LV040,
1202 .total_size = 512,
1203 .page_size = 256,
1204 .tested = TEST_UNTESTED,
1205 .probe = probe_spi_rdid,
1206 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001207 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001208 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001209 },
1210
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001211 {
1212 .vendor = "PMC",
1213 .name = "Pm25LV080B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001214 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001215 .manufacture_id = PMC_ID,
1216 .model_id = PMC_25LV080B,
1217 .total_size = 1024,
1218 .page_size = 256,
1219 .tested = TEST_UNTESTED,
1220 .probe = probe_spi_rdid,
1221 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001222 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001223 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001224 },
1225
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001226 {
1227 .vendor = "PMC",
1228 .name = "Pm25LV512",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001229 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001230 .manufacture_id = PMC_ID,
1231 .model_id = PMC_25LV512,
1232 .total_size = 64,
1233 .page_size = 256,
1234 .tested = TEST_UNTESTED,
1235 .probe = probe_spi_rdid,
1236 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001237 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001238 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001239 },
1240
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001241 {
1242 .vendor = "PMC",
Rudolf Marek50fdf3b2009-05-17 17:02:07 +00001243 .name = "Pm39LV010",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001244 .bustype = CHIP_BUSTYPE_NONSPI,
Rudolf Marek50fdf3b2009-05-17 17:02:07 +00001245 .manufacture_id = PMC_ID_NOPREFIX,
1246 .model_id = PMC_39F010,
1247 .total_size = 128,
1248 .page_size = 4096,
1249 .tested = TEST_OK_PREW,
1250 .probe = probe_jedec,
1251 .erase = erase_chip_jedec,
1252 .write = write_49f002,
1253 .read = read_memmapped,
1254 },
1255
1256 {
1257 .vendor = "PMC",
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001258 .name = "Pm49FL002",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001259 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001260 .manufacture_id = PMC_ID_NOPREFIX,
1261 .model_id = PMC_49FL002,
1262 .total_size = 256,
1263 .page_size = 16 * 1024,
1264 .tested = TEST_OK_PREW,
1265 .probe = probe_49fl00x,
1266 .erase = erase_49fl00x,
1267 .write = write_49fl00x,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001268 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001269 },
1270
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001271 {
1272 .vendor = "PMC",
1273 .name = "Pm49FL004",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001274 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001275 .manufacture_id = PMC_ID_NOPREFIX,
1276 .model_id = PMC_49FL004,
1277 .total_size = 512,
1278 .page_size = 64 * 1024,
1279 .tested = TEST_OK_PREW,
1280 .probe = probe_49fl00x,
1281 .erase = erase_49fl00x,
1282 .write = write_49fl00x,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001283 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001284 },
1285
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001286 {
1287 .vendor = "Sharp",
1288 .name = "LHF00L04",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001289 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001290 .manufacture_id = SHARP_ID,
1291 .model_id = SHARP_LHF00L04,
1292 .total_size = 1024,
1293 .page_size = 64 * 1024,
1294 .tested = TEST_UNTESTED,
1295 .probe = probe_lhf00l04,
1296 .erase = erase_lhf00l04,
1297 .write = write_lhf00l04,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001298 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001299 },
1300
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001301 {
1302 .vendor = "Spansion",
1303 .name = "S25FL016A",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001304 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001305 .manufacture_id = SPANSION_ID,
1306 .model_id = SPANSION_S25FL016A,
1307 .total_size = 2048,
1308 .page_size = 256,
1309 .tested = TEST_OK_PREW,
1310 .probe = probe_spi_rdid,
1311 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001312 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001313 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001314 },
1315
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001316 {
1317 .vendor = "SST",
1318 .name = "SST25VF016B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001319 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001320 .manufacture_id = SST_ID,
1321 .model_id = SST_25VF016B,
1322 .total_size = 2048,
1323 .page_size = 256,
1324 .tested = TEST_OK_PREW,
1325 .probe = probe_spi_rdid,
1326 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger93bb3752009-05-13 22:19:12 +00001327 .write = spi_chip_write_1,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001328 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001329 },
1330
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001331 {
1332 .vendor = "SST",
1333 .name = "SST25VF032B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001334 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001335 .manufacture_id = SST_ID,
1336 .model_id = SST_25VF032B,
1337 .total_size = 4096,
1338 .page_size = 256,
1339 .tested = TEST_OK_PREW,
1340 .probe = probe_spi_rdid,
1341 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger93bb3752009-05-13 22:19:12 +00001342 .write = spi_chip_write_1,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001343 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001344 },
1345
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001346 {
1347 .vendor = "SST",
1348 .name = "SST25VF040B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001349 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001350 .manufacture_id = SST_ID,
1351 .model_id = SST_25VF040B,
1352 .total_size = 512,
1353 .page_size = 256,
1354 .tested = TEST_UNTESTED,
1355 .probe = probe_spi_rdid,
1356 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger93bb3752009-05-13 22:19:12 +00001357 .write = spi_chip_write_1,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001358 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001359 },
1360
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001361 {
1362 .vendor = "SST",
Zheng Bao0677dff2009-02-25 08:07:33 +00001363 .name = "SST25VF040.REMS",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001364 .bustype = CHIP_BUSTYPE_SPI,
Zheng Bao0677dff2009-02-25 08:07:33 +00001365 .manufacture_id = 0xbf,
1366 .model_id = 0x44,
1367 .total_size = 512,
1368 .page_size = 64*1024,
1369 .tested = TEST_OK_PR,
1370 .probe = probe_spi_rems,
1371 .erase = spi_chip_erase_60,
Carl-Daniel Hailfinger93bb3752009-05-13 22:19:12 +00001372 .write = spi_chip_write_1,
Zheng Bao0677dff2009-02-25 08:07:33 +00001373 .read = spi_chip_read,
1374 },
1375
1376 {
1377 .vendor = "SST",
Peter Stugefd9217d2009-01-26 03:37:40 +00001378 .name = "SST25VF040B.REMS",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001379 .bustype = CHIP_BUSTYPE_SPI,
Peter Stugefd9217d2009-01-26 03:37:40 +00001380 .manufacture_id = 0xbf,
1381 .model_id = 0x8d,
1382 .total_size = 512,
1383 .page_size = 64*1024,
1384 .tested = TEST_OK_PR,
1385 .probe = probe_spi_rems,
1386 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger93bb3752009-05-13 22:19:12 +00001387 .write = spi_chip_write_1,
Peter Stugefd9217d2009-01-26 03:37:40 +00001388 .read = spi_chip_read,
1389 },
1390
1391 {
1392 .vendor = "SST",
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001393 .name = "SST25VF080B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001394 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001395 .manufacture_id = SST_ID,
1396 .model_id = SST_25VF080B,
1397 .total_size = 1024,
1398 .page_size = 256,
Peter Stugee612a112009-05-05 16:34:53 +00001399 .tested = TEST_OK_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001400 .probe = probe_spi_rdid,
1401 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001402 .write = spi_chip_write_1,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001403 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001404 },
1405
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001406 {
1407 .vendor = "SST",
1408 .name = "SST28SF040A",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001409 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001410 .manufacture_id = SST_ID,
1411 .model_id = SST_28SF040,
1412 .total_size = 512,
1413 .page_size = 256,
1414 .tested = TEST_UNTESTED,
1415 .probe = probe_28sf040,
1416 .erase = erase_28sf040,
1417 .write = write_28sf040,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001418 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001419 },
1420
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001421 {
1422 .vendor = "SST",
1423 .name = "SST29EE010",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001424 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001425 .manufacture_id = SST_ID,
1426 .model_id = SST_29EE010,
1427 .total_size = 128,
1428 .page_size = 128,
1429 .tested = TEST_OK_PREW,
1430 .probe = probe_jedec,
1431 .erase = erase_chip_jedec,
1432 .write = write_jedec,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001433 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001434 },
1435
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001436 {
1437 .vendor = "SST",
1438 .name = "SST29LE010",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001439 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001440 .manufacture_id = SST_ID,
1441 .model_id = SST_29LE010,
1442 .total_size = 128,
1443 .page_size = 128,
1444 .tested = TEST_UNTESTED,
1445 .probe = probe_jedec,
1446 .erase = erase_chip_jedec,
1447 .write = write_jedec,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001448 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001449 },
1450
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001451 {
1452 .vendor = "SST",
1453 .name = "SST29EE020A",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001454 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001455 .manufacture_id = SST_ID,
1456 .model_id = SST_29EE020A,
1457 .total_size = 256,
1458 .page_size = 128,
Peter Stugeb27d0a22009-02-22 21:07:28 +00001459 .tested = TEST_OK_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001460 .probe = probe_jedec,
1461 .erase = erase_chip_jedec,
1462 .write = write_jedec,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001463 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001464 },
1465
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001466 {
1467 .vendor = "SST",
1468 .name = "SST29LE020",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001469 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001470 .manufacture_id = SST_ID,
1471 .model_id = SST_29LE020,
1472 .total_size = 256,
1473 .page_size = 128,
1474 .tested = TEST_UNTESTED,
1475 .probe = probe_jedec,
1476 .erase = erase_chip_jedec,
1477 .write = write_jedec,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001478 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001479 },
1480
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001481 {
1482 .vendor = "SST",
1483 .name = "SST39SF010A",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001484 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001485 .manufacture_id = SST_ID,
1486 .model_id = SST_39SF010,
1487 .total_size = 128,
1488 .page_size = 4096,
1489 .tested = TEST_OK_PREW,
1490 .probe = probe_jedec,
1491 .erase = erase_chip_jedec,
Uwe Hermann24f9fbe2009-05-12 14:06:04 +00001492 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001493 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001494 },
1495
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001496 {
1497 .vendor = "SST",
1498 .name = "SST39SF020A",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001499 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001500 .manufacture_id = SST_ID,
1501 .model_id = SST_39SF020,
1502 .total_size = 256,
1503 .page_size = 4096,
1504 .tested = TEST_OK_PREW,
1505 .probe = probe_jedec,
1506 .erase = erase_chip_jedec,
Uwe Hermann24f9fbe2009-05-12 14:06:04 +00001507 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001508 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001509 },
1510
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001511 {
1512 .vendor = "SST",
1513 .name = "SST39SF040",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001514 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001515 .manufacture_id = SST_ID,
1516 .model_id = SST_39SF040,
1517 .total_size = 512,
1518 .page_size = 4096,
1519 .tested = TEST_OK_PREW,
1520 .probe = probe_jedec,
1521 .erase = erase_chip_jedec,
Uwe Hermann24f9fbe2009-05-12 14:06:04 +00001522 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001523 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001524 },
1525
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001526 {
1527 .vendor = "SST",
1528 .name = "SST39VF512",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001529 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001530 .manufacture_id = SST_ID,
1531 .model_id = SST_39VF512,
1532 .total_size = 64,
1533 .page_size = 4096,
Rudolf Mareke186da62009-05-17 18:24:24 +00001534 .tested = TEST_OK_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001535 .probe = probe_jedec,
1536 .erase = erase_chip_jedec,
Uwe Hermann24f9fbe2009-05-12 14:06:04 +00001537 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001538 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001539 },
1540
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001541 {
1542 .vendor = "SST",
1543 .name = "SST39VF010",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001544 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001545 .manufacture_id = SST_ID,
1546 .model_id = SST_39VF010,
1547 .total_size = 128,
1548 .page_size = 4096,
Rudolf Marek50fdf3b2009-05-17 17:02:07 +00001549 .tested = TEST_OK_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001550 .probe = probe_jedec,
1551 .erase = erase_chip_jedec,
Uwe Hermann24f9fbe2009-05-12 14:06:04 +00001552 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001553 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001554 },
1555
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001556 {
1557 .vendor = "SST",
1558 .name = "SST39VF020",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001559 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001560 .manufacture_id = SST_ID,
1561 .model_id = SST_39VF020,
1562 .total_size = 256,
1563 .page_size = 4096,
1564 .tested = TEST_OK_PREW,
1565 .probe = probe_jedec,
1566 .erase = erase_chip_jedec,
Uwe Hermann24f9fbe2009-05-12 14:06:04 +00001567 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001568 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001569 },
1570
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001571 {
1572 .vendor = "SST",
1573 .name = "SST39VF040",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001574 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001575 .manufacture_id = SST_ID,
1576 .model_id = SST_39VF040,
1577 .total_size = 512,
1578 .page_size = 4096,
1579 .tested = TEST_OK_PROBE,
1580 .probe = probe_jedec,
1581 .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,
Carl-Daniel Hailfinger90eff152008-12-08 23:51:45 +00001584 },
FENG yu ningff692fb2008-12-08 18:15:10 +00001585
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001586 {
1587 .vendor = "SST",
Peter Stuge8440cc02009-01-25 23:55:12 +00001588 .name = "SST39VF080",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001589 .bustype = CHIP_BUSTYPE_NONSPI,
Peter Stuge8440cc02009-01-25 23:55:12 +00001590 .manufacture_id = 0xbf,
1591 .model_id = 0xd8,
1592 .total_size = 1024,
1593 .page_size = 4096,
1594 .tested = TEST_UNTESTED,
1595 .probe = probe_jedec,
1596 .erase = erase_chip_jedec,
Uwe Hermann24f9fbe2009-05-12 14:06:04 +00001597 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001598 .read = read_memmapped,
Peter Stuge8440cc02009-01-25 23:55:12 +00001599 },
1600
1601 {
1602 .vendor = "SST",
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001603 .name = "SST49LF002A/B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001604 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001605 .manufacture_id = SST_ID,
1606 .model_id = SST_49LF002A,
1607 .total_size = 256,
1608 .page_size = 16 * 1024,
1609 .tested = TEST_OK_PREW,
1610 .probe = probe_sst_fwhub,
1611 .erase = erase_sst_fwhub,
1612 .write = write_sst_fwhub,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001613 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001614 },
1615
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001616 {
1617 .vendor = "SST",
1618 .name = "SST49LF003A/B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001619 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001620 .manufacture_id = SST_ID,
1621 .model_id = SST_49LF003A,
1622 .total_size = 384,
1623 .page_size = 64 * 1024,
1624 .tested = TEST_UNTESTED,
1625 .probe = probe_sst_fwhub,
1626 .erase = erase_sst_fwhub,
1627 .write = write_sst_fwhub,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001628 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001629 },
1630
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001631 {
1632 .vendor = "SST",
1633 .name = "SST49LF004A/B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001634 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001635 .manufacture_id = SST_ID,
1636 .model_id = SST_49LF004A,
1637 .total_size = 512,
1638 .page_size = 64 * 1024,
1639 .tested = TEST_OK_PREW,
1640 .probe = probe_sst_fwhub,
1641 .erase = erase_sst_fwhub,
1642 .write = write_sst_fwhub,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001643 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001644 },
1645
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001646 {
1647 .vendor = "SST",
1648 .name = "SST49LF004C",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001649 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001650 .manufacture_id = SST_ID,
1651 .model_id = SST_49LF004C,
1652 .total_size = 512,
1653 .page_size = 4 * 1024,
1654 .tested = TEST_UNTESTED,
1655 .probe = probe_49lfxxxc,
1656 .erase = erase_49lfxxxc,
1657 .write = write_49lfxxxc,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001658 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001659 },
1660
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001661 {
1662 .vendor = "SST",
1663 .name = "SST49LF008A",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001664 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001665 .manufacture_id = SST_ID,
1666 .model_id = SST_49LF008A,
1667 .total_size = 1024,
1668 .page_size = 64 * 1024,
1669 .tested = TEST_OK_PREW,
1670 .probe = probe_sst_fwhub,
1671 .erase = erase_sst_fwhub,
1672 .write = write_sst_fwhub,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001673 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001674 },
1675
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001676 {
1677 .vendor = "SST",
1678 .name = "SST49LF008C",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001679 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001680 .manufacture_id = SST_ID,
1681 .model_id = SST_49LF008C,
1682 .total_size = 1024,
1683 .page_size = 4 * 1024,
1684 .tested = TEST_UNTESTED,
1685 .probe = probe_49lfxxxc,
1686 .erase = erase_49lfxxxc,
1687 .write = write_49lfxxxc,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001688 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001689 },
1690
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001691 {
1692 .vendor = "SST",
1693 .name = "SST49LF016C",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001694 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001695 .manufacture_id = SST_ID,
1696 .model_id = SST_49LF016C,
1697 .total_size = 2048,
1698 .page_size = 4 * 1024,
1699 .tested = TEST_OK_PREW,
1700 .probe = probe_49lfxxxc,
1701 .erase = erase_49lfxxxc,
1702 .write = write_49lfxxxc,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001703 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001704 },
1705
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001706 {
1707 .vendor = "SST",
1708 .name = "SST49LF020",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001709 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001710 .manufacture_id = SST_ID,
1711 .model_id = SST_49LF020,
1712 .total_size = 256,
1713 .page_size = 16 * 1024,
1714 .tested = TEST_OK_PR,
1715 .probe = probe_jedec,
1716 .erase = erase_49lf040,
1717 .write = write_49lf040,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001718 .read = read_memmapped,
Sven Schnellec208dfb2009-01-07 12:35:09 +00001719 },
1720
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001721 {
1722 .vendor = "SST",
1723 .name = "SST49LF020A",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001724 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001725 .manufacture_id = SST_ID,
1726 .model_id = SST_49LF020A,
1727 .total_size = 256,
1728 .page_size = 16 * 1024,
1729 .tested = TEST_UNTESTED,
1730 .probe = probe_jedec,
1731 .erase = erase_49lf040,
1732 .write = write_49lf040,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001733 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001734 },
1735
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001736 {
1737 .vendor = "SST",
1738 .name = "SST49LF040",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001739 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001740 .manufacture_id = SST_ID,
1741 .model_id = SST_49LF040,
1742 .total_size = 512,
1743 .page_size = 4096,
1744 .tested = TEST_OK_PREW,
1745 .probe = probe_jedec,
1746 .erase = erase_49lf040,
1747 .write = write_49lf040,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001748 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001749 },
1750
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001751 {
1752 .vendor = "SST",
1753 .name = "SST49LF040B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001754 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001755 .manufacture_id = SST_ID,
1756 .model_id = SST_49LF040B,
1757 .total_size = 512,
1758 .page_size = 64 * 1024,
1759 .tested = TEST_OK_PREW,
1760 .probe = probe_sst_fwhub,
1761 .erase = erase_sst_fwhub,
1762 .write = write_sst_fwhub,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001763 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001764 },
1765
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001766 {
1767 .vendor = "SST",
1768 .name = "SST49LF080A",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001769 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001770 .manufacture_id = SST_ID,
1771 .model_id = SST_49LF080A,
1772 .total_size = 1024,
1773 .page_size = 4096,
1774 .tested = TEST_OK_PREW,
1775 .probe = probe_jedec,
1776 .erase = erase_49lf040,
1777 .write = write_49lf040,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001778 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001779 },
1780
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001781 {
1782 .vendor = "SST",
1783 .name = "SST49LF160C",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001784 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001785 .manufacture_id = SST_ID,
1786 .model_id = SST_49LF160C,
1787 .total_size = 2048,
1788 .page_size = 4 * 1024,
1789 .tested = TEST_OK_PREW,
1790 .probe = probe_49lfxxxc,
1791 .erase = erase_49lfxxxc,
1792 .write = write_49lfxxxc,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001793 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001794 },
1795
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001796 {
1797 .vendor = "ST",
1798 .name = "M25P05-A",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001799 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001800 .manufacture_id = ST_ID,
1801 .model_id = ST_M25P05A,
1802 .total_size = 64,
1803 .page_size = 256,
1804 .tested = TEST_UNTESTED,
1805 .probe = probe_spi_rdid,
1806 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001807 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001808 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001809 },
1810
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001811 {
1812 .vendor = "ST",
1813 .name = "M25P10-A",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001814 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001815 .manufacture_id = ST_ID,
1816 .model_id = ST_M25P10A,
1817 .total_size = 128,
1818 .page_size = 256,
1819 .tested = TEST_UNTESTED,
1820 .probe = probe_spi_rdid,
1821 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001822 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001823 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001824 },
1825
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001826 {
1827 .vendor = "ST",
1828 .name = "M25P20",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001829 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001830 .manufacture_id = ST_ID,
1831 .model_id = ST_M25P20,
1832 .total_size = 256,
1833 .page_size = 256,
1834 .tested = TEST_UNTESTED,
1835 .probe = probe_spi_rdid,
1836 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001837 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001838 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001839 },
1840
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001841 {
1842 .vendor = "ST",
1843 .name = "M25P40",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001844 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001845 .manufacture_id = ST_ID,
1846 .model_id = ST_M25P40,
1847 .total_size = 512,
1848 .page_size = 256,
1849 .tested = TEST_UNTESTED,
1850 .probe = probe_spi_rdid,
1851 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001852 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001853 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001854 },
1855
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001856 {
1857 .vendor = "ST",
1858 .name = "M25P40-old",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001859 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001860 .manufacture_id = ST_ID,
1861 .model_id = ST_M25P40_RES,
1862 .total_size = 512,
1863 .page_size = 256,
1864 .tested = TEST_UNTESTED,
1865 .probe = probe_spi_res,
1866 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001867 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001868 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001869 },
1870
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001871 {
1872 .vendor = "ST",
1873 .name = "M25P80",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001874 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001875 .manufacture_id = ST_ID,
1876 .model_id = ST_M25P80,
1877 .total_size = 1024,
1878 .page_size = 256,
1879 .tested = TEST_UNTESTED,
1880 .probe = probe_spi_rdid,
1881 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001882 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001883 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001884 },
1885
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001886 {
1887 .vendor = "ST",
1888 .name = "M25P16",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001889 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001890 .manufacture_id = ST_ID,
1891 .model_id = ST_M25P16,
1892 .total_size = 2048,
1893 .page_size = 256,
1894 .tested = TEST_OK_PREW,
1895 .probe = probe_spi_rdid,
1896 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001897 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001898 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001899 },
1900
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001901 {
1902 .vendor = "ST",
1903 .name = "M25P32",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001904 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001905 .manufacture_id = ST_ID,
1906 .model_id = ST_M25P32,
1907 .total_size = 4096,
1908 .page_size = 256,
1909 .tested = TEST_OK_PREW,
1910 .probe = probe_spi_rdid,
1911 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001912 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001913 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001914 },
1915
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001916 {
1917 .vendor = "ST",
1918 .name = "M25P64",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001919 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001920 .manufacture_id = ST_ID,
1921 .model_id = ST_M25P64,
1922 .total_size = 8192,
1923 .page_size = 256,
1924 .tested = TEST_UNTESTED,
1925 .probe = probe_spi_rdid,
1926 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001927 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001928 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001929 },
1930
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001931 {
1932 .vendor = "ST",
1933 .name = "M25P128",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001934 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001935 .manufacture_id = ST_ID,
1936 .model_id = ST_M25P128,
1937 .total_size = 16384,
1938 .page_size = 256,
1939 .tested = TEST_UNTESTED,
1940 .probe = probe_spi_rdid,
1941 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001942 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001943 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001944 },
1945
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001946 {
1947 .vendor = "ST",
1948 .name = "M29F002B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001949 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001950 .manufacture_id = ST_ID,
1951 .model_id = ST_M29F002B,
1952 .total_size = 256,
1953 .page_size = 64 * 1024,
1954 .tested = TEST_UNTESTED,
1955 .probe = probe_jedec,
Peter Stugeaf8ffac2009-01-26 06:42:02 +00001956 .erase = erase_m29f002,
1957 .write = write_m29f002b,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001958 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001959 },
1960
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001961 {
1962 .vendor = "ST",
1963 .name = "M29F002T/NT",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001964 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001965 .manufacture_id = ST_ID,
1966 .model_id = ST_M29F002T,
1967 .total_size = 256,
1968 .page_size = 64 * 1024,
Peter Stugeaf8ffac2009-01-26 06:42:02 +00001969 .tested = TEST_OK_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001970 .probe = probe_jedec,
Peter Stugeaf8ffac2009-01-26 06:42:02 +00001971 .erase = erase_m29f002,
1972 .write = write_m29f002t,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001973 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001974 },
1975
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001976 {
1977 .vendor = "ST",
1978 .name = "M29F040B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001979 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001980 .manufacture_id = ST_ID,
1981 .model_id = ST_M29F040B,
1982 .total_size = 512,
1983 .page_size = 64 * 1024,
1984 .tested = TEST_OK_PREW,
1985 .probe = probe_29f040b,
1986 .erase = erase_29f040b,
1987 .write = write_29f040b,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001988 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001989 },
1990
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001991 {
1992 .vendor = "ST",
1993 .name = "M29F400BT",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001994 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001995 .manufacture_id = ST_ID,
1996 .model_id = ST_M29F400BT,
1997 .total_size = 512,
1998 .page_size = 64 * 1024,
1999 .tested = TEST_UNTESTED,
2000 .probe = probe_m29f400bt,
2001 .erase = erase_m29f400bt,
2002 .write = write_coreboot_m29f400bt,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002003 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002004 },
2005
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002006 {
2007 .vendor = "ST",
2008 .name = "M29W010B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002009 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002010 .manufacture_id = ST_ID,
2011 .model_id = ST_M29W010B,
2012 .total_size = 128,
2013 .page_size = 16 * 1024,
2014 .tested = TEST_UNTESTED,
2015 .probe = probe_jedec,
2016 .erase = erase_chip_jedec,
2017 .write = write_jedec,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002018 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002019 },
2020
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002021 {
2022 .vendor = "ST",
2023 .name = "M29W040B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002024 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002025 .manufacture_id = ST_ID,
2026 .model_id = ST_M29W040B,
2027 .total_size = 512,
2028 .page_size = 64 * 1024,
2029 .tested = TEST_UNTESTED,
2030 .probe = probe_jedec,
2031 .erase = erase_chip_jedec,
2032 .write = write_jedec,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002033 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002034 },
2035
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002036 {
2037 .vendor = "ST",
2038 .name = "M50FLW040A",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002039 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002040 .manufacture_id = ST_ID,
2041 .model_id = ST_M50FLW040A,
2042 .total_size = 512,
2043 .page_size = 64 * 1024,
2044 .tested = TEST_UNTESTED,
2045 .probe = probe_stm50flw0x0x,
2046 .erase = erase_stm50flw0x0x,
2047 .write = write_stm50flw0x0x,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002048 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002049 },
2050
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002051 {
2052 .vendor = "ST",
2053 .name = "M50FLW040B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002054 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002055 .manufacture_id = ST_ID,
2056 .model_id = ST_M50FLW040B,
2057 .total_size = 512,
2058 .page_size = 64 * 1024,
2059 .tested = TEST_UNTESTED,
2060 .probe = probe_stm50flw0x0x,
2061 .erase = erase_stm50flw0x0x,
2062 .write = write_stm50flw0x0x,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002063 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002064 },
2065
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002066 {
2067 .vendor = "ST",
2068 .name = "M50FLW080A",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002069 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002070 .manufacture_id = ST_ID,
2071 .model_id = ST_M50FLW080A,
2072 .total_size = 1024,
2073 .page_size = 64 * 1024,
2074 .tested = TEST_OK_PREW,
2075 .probe = probe_stm50flw0x0x,
2076 .erase = erase_stm50flw0x0x,
2077 .write = write_stm50flw0x0x,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002078 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002079 },
2080
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002081 {
2082 .vendor = "ST",
2083 .name = "M50FLW080B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002084 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002085 .manufacture_id = ST_ID,
2086 .model_id = ST_M50FLW080B,
2087 .total_size = 1024,
2088 .page_size = 64 * 1024,
2089 .tested = TEST_UNTESTED,
2090 .probe = probe_stm50flw0x0x,
2091 .erase = erase_stm50flw0x0x,
2092 .write = write_stm50flw0x0x,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002093 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002094 },
2095
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002096 {
2097 .vendor = "ST",
2098 .name = "M50FW002",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002099 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002100 .manufacture_id = ST_ID,
2101 .model_id = ST_M50FW002,
2102 .total_size = 256,
2103 .page_size = 64 * 1024,
2104 .tested = TEST_UNTESTED,
2105 .probe = probe_49lfxxxc,
2106 .erase = NULL,
2107 .write = NULL,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002108 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002109 },
2110
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002111 {
2112 .vendor = "ST",
2113 .name = "M50FW016",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002114 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002115 .manufacture_id = ST_ID,
2116 .model_id = ST_M50FW016,
2117 .total_size = 2048,
2118 .page_size = 64 * 1024,
2119 .tested = TEST_UNTESTED,
2120 .probe = probe_82802ab,
2121 .erase = erase_82802ab,
2122 .write = write_82802ab,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002123 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002124 },
2125
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002126 {
2127 .vendor = "ST",
2128 .name = "M50FW040",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002129 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002130 .manufacture_id = ST_ID,
2131 .model_id = ST_M50FW040,
2132 .total_size = 512,
2133 .page_size = 64 * 1024,
2134 .tested = TEST_OK_PREW,
2135 .probe = probe_82802ab,
2136 .erase = erase_82802ab,
2137 .write = write_82802ab,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002138 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002139 },
2140
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002141 {
2142 .vendor = "ST",
2143 .name = "M50FW080",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002144 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002145 .manufacture_id = ST_ID,
2146 .model_id = ST_M50FW080,
2147 .total_size = 1024,
2148 .page_size = 64 * 1024,
Peter Stugea657e942009-01-24 23:01:08 +00002149 .tested = TEST_OK_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002150 .probe = probe_82802ab,
2151 .erase = erase_82802ab,
2152 .write = write_82802ab,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002153 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002154 },
2155
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002156 {
2157 .vendor = "ST",
2158 .name = "M50LPW116",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002159 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002160 .manufacture_id = ST_ID,
2161 .model_id = ST_M50LPW116,
2162 .total_size = 2048,
2163 .page_size = 64 * 1024,
2164 .tested = TEST_UNTESTED,
2165 .probe = probe_jedec,
2166 .erase = erase_chip_jedec,
2167 .write = write_jedec,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002168 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002169 },
2170
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002171 {
2172 .vendor = "SyncMOS",
2173 .name = "S29C31004T",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002174 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002175 .manufacture_id = SYNCMOS_ID,
2176 .model_id = S29C31004T,
2177 .total_size = 512,
2178 .page_size = 128,
2179 .tested = TEST_UNTESTED,
2180 .probe = probe_jedec,
2181 .erase = erase_chip_jedec,
2182 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002183 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002184 },
2185
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002186 {
2187 .vendor = "SyncMOS",
2188 .name = "S29C51001T",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002189 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002190 .manufacture_id = SYNCMOS_ID,
2191 .model_id = S29C51001T,
2192 .total_size = 128,
2193 .page_size = 128,
2194 .tested = TEST_UNTESTED,
2195 .probe = probe_jedec,
2196 .erase = erase_chip_jedec,
2197 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002198 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002199 },
2200
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002201 {
2202 .vendor = "SyncMOS",
2203 .name = "S29C51002T",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002204 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002205 .manufacture_id = SYNCMOS_ID,
2206 .model_id = S29C51002T,
2207 .total_size = 256,
2208 .page_size = 128,
2209 .tested = TEST_OK_PREW,
2210 .probe = probe_jedec,
2211 .erase = erase_chip_jedec,
2212 .write = write_49f002,
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 = "SyncMOS",
2218 .name = "S29C51004T",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002219 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002220 .manufacture_id = SYNCMOS_ID,
2221 .model_id = S29C51004T,
2222 .total_size = 512,
2223 .page_size = 128,
2224 .tested = TEST_UNTESTED,
2225 .probe = probe_jedec,
2226 .erase = erase_chip_jedec,
2227 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002228 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002229 },
2230
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002231 {
Uwe Hermanna106d152009-05-27 23:17:40 +00002232 .vendor = "TI",
Carl-Daniel Hailfinger09b4fb72009-05-26 21:26:23 +00002233 .name = "TMS29F002RB",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002234 .bustype = CHIP_BUSTYPE_NONSPI,
Carl-Daniel Hailfinger09b4fb72009-05-26 21:26:23 +00002235 .manufacture_id = TI_OLD_ID,
2236 .model_id = TI_TMS29F002RB,
2237 .total_size = 256,
2238 .page_size = 16384, /* Non-uniform sectors */
2239 .tested = TEST_UNTESTED,
2240 .probe = probe_jedec,
2241 .erase = NULL,
2242 .write = NULL,
2243 .read = read_memmapped,
2244 },
2245
2246 {
Uwe Hermanna106d152009-05-27 23:17:40 +00002247 .vendor = "TI",
Carl-Daniel Hailfinger09b4fb72009-05-26 21:26:23 +00002248 .name = "TMS29F002RT",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002249 .bustype = CHIP_BUSTYPE_NONSPI,
Carl-Daniel Hailfinger09b4fb72009-05-26 21:26:23 +00002250 .manufacture_id = TI_OLD_ID,
2251 .model_id = TI_TMS29F002RT,
2252 .total_size = 256,
2253 .page_size = 16384, /* Non-uniform sectors */
2254 .tested = TEST_UNTESTED,
2255 .probe = probe_jedec,
2256 .erase = NULL,
2257 .write = NULL,
2258 .read = read_memmapped,
2259 },
2260
2261 {
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002262 .vendor = "Winbond",
2263 .name = "W25x10",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002264 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002265 .manufacture_id = WINBOND_NEX_ID,
2266 .model_id = W_25X10,
2267 .total_size = 128,
2268 .page_size = 256,
2269 .tested = TEST_UNTESTED,
2270 .probe = probe_spi_rdid,
2271 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00002272 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002273 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00002274 },
2275
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002276 {
2277 .vendor = "Winbond",
2278 .name = "W25x20",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002279 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002280 .manufacture_id = WINBOND_NEX_ID,
2281 .model_id = W_25X20,
2282 .total_size = 256,
2283 .page_size = 256,
2284 .tested = TEST_UNTESTED,
2285 .probe = probe_spi_rdid,
2286 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00002287 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002288 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00002289 },
2290
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002291 {
2292 .vendor = "Winbond",
2293 .name = "W25x40",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002294 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002295 .manufacture_id = WINBOND_NEX_ID,
2296 .model_id = W_25X40,
2297 .total_size = 512,
2298 .page_size = 256,
2299 .tested = TEST_OK_PREW,
2300 .probe = probe_spi_rdid,
2301 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00002302 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002303 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00002304 },
2305
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002306 {
2307 .vendor = "Winbond",
2308 .name = "W25x80",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002309 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002310 .manufacture_id = WINBOND_NEX_ID,
2311 .model_id = W_25X80,
2312 .total_size = 1024,
2313 .page_size = 256,
2314 .tested = TEST_OK_PREW,
2315 .probe = probe_spi_rdid,
2316 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00002317 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002318 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00002319 },
2320
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002321 {
2322 .vendor = "Winbond",
2323 .name = "W29C011",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002324 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002325 .manufacture_id = WINBOND_ID,
2326 .model_id = W_29C011,
2327 .total_size = 128,
2328 .page_size = 128,
2329 .tested = TEST_OK_PREW,
2330 .probe = probe_jedec,
2331 .erase = erase_chip_jedec,
2332 .write = write_jedec,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002333 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002334 },
2335
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002336 {
2337 .vendor = "Winbond",
2338 .name = "W29C020C",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002339 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002340 .manufacture_id = WINBOND_ID,
2341 .model_id = W_29C020C,
2342 .total_size = 256,
2343 .page_size = 128,
2344 .tested = TEST_OK_PREW,
2345 .probe = probe_jedec,
2346 .erase = erase_chip_jedec,
2347 .write = write_jedec,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002348 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002349 },
2350
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002351 {
2352 .vendor = "Winbond",
2353 .name = "W29C040P",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002354 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002355 .manufacture_id = WINBOND_ID,
2356 .model_id = W_29C040P,
2357 .total_size = 512,
2358 .page_size = 256,
2359 .tested = TEST_UNTESTED,
2360 .probe = probe_jedec,
2361 .erase = erase_chip_jedec,
2362 .write = write_jedec,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002363 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002364 },
2365
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002366 {
2367 .vendor = "Winbond",
2368 .name = "W29EE011",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002369 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002370 .manufacture_id = WINBOND_ID,
2371 .model_id = W_29C011,
2372 .total_size = 128,
2373 .page_size = 128,
2374 .tested = TEST_OK_PREW,
2375 .probe = probe_w29ee011,
2376 .erase = erase_chip_jedec,
2377 .write = write_jedec,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002378 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002379 },
2380
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002381 {
2382 .vendor = "Winbond",
2383 .name = "W39V040A",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002384 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002385 .manufacture_id = WINBOND_ID,
2386 .model_id = W_39V040A,
2387 .total_size = 512,
2388 .page_size = 64*1024,
Uwe Hermann690bcba2009-05-21 17:11:25 +00002389 .tested = TEST_OK_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002390 .probe = probe_jedec,
2391 .erase = erase_chip_jedec,
Uwe Hermann24f9fbe2009-05-12 14:06:04 +00002392 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002393 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002394 },
2395
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002396 {
2397 .vendor = "Winbond",
2398 .name = "W39V040B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002399 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002400 .manufacture_id = WINBOND_ID,
2401 .model_id = W_39V040B,
2402 .total_size = 512,
2403 .page_size = 64*1024,
2404 .tested = TEST_OK_PREW,
2405 .probe = probe_jedec,
2406 .erase = erase_chip_jedec,
Uwe Hermann24f9fbe2009-05-12 14:06:04 +00002407 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002408 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002409 },
2410
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002411 {
2412 .vendor = "Winbond",
2413 .name = "W39V040C",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002414 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002415 .manufacture_id = WINBOND_ID,
2416 .model_id = 0x50,
2417 .total_size = 512,
2418 .page_size = 64*1024,
2419 .tested = TEST_OK_PREW,
2420 .probe = probe_w39v040c,
2421 .erase = erase_w39v040c,
2422 .write = write_w39v040c,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002423 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002424 },
2425
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002426 {
2427 .vendor = "Winbond",
2428 .name = "W39V040FA",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002429 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002430 .manufacture_id = WINBOND_ID,
2431 .model_id = W_39V040FA,
2432 .total_size = 512,
2433 .page_size = 64*1024,
2434 .tested = TEST_OK_PREW,
2435 .probe = probe_jedec,
2436 .erase = erase_chip_jedec,
Uwe Hermann24f9fbe2009-05-12 14:06:04 +00002437 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002438 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002439 },
2440
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002441 {
2442 .vendor = "Winbond",
2443 .name = "W39V080A",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002444 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002445 .manufacture_id = WINBOND_ID,
2446 .model_id = W_39V080A,
2447 .total_size = 1024,
2448 .page_size = 64*1024,
2449 .tested = TEST_OK_PREW,
2450 .probe = probe_jedec,
2451 .erase = erase_chip_jedec,
Uwe Hermann24f9fbe2009-05-12 14:06:04 +00002452 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002453 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002454 },
2455
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002456 {
2457 .vendor = "Winbond",
2458 .name = "W49F002U",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002459 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002460 .manufacture_id = WINBOND_ID,
2461 .model_id = W_49F002U,
2462 .total_size = 256,
2463 .page_size = 128,
2464 .tested = TEST_OK_PREW,
2465 .probe = probe_jedec,
2466 .erase = erase_chip_jedec,
2467 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002468 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002469 },
2470
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002471 {
2472 .vendor = "Winbond",
2473 .name = "W49V002A",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002474 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002475 .manufacture_id = WINBOND_ID,
2476 .model_id = W_49V002A,
2477 .total_size = 256,
2478 .page_size = 128,
2479 .tested = TEST_OK_PREW,
2480 .probe = probe_jedec,
2481 .erase = erase_chip_jedec,
2482 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002483 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002484 },
2485
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002486 {
2487 .vendor = "Winbond",
2488 .name = "W49V002FA",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002489 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002490 .manufacture_id = WINBOND_ID,
2491 .model_id = W_49V002FA,
2492 .total_size = 256,
2493 .page_size = 128,
2494 .tested = TEST_UNTESTED,
2495 .probe = probe_jedec,
2496 .erase = erase_chip_jedec,
2497 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002498 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002499 },
2500
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002501 {
2502 .vendor = "Winbond",
2503 .name = "W39V080FA",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002504 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002505 .manufacture_id = WINBOND_ID,
2506 .model_id = W_39V080FA,
2507 .total_size = 1024,
2508 .page_size = 64*1024,
2509 .tested = TEST_OK_PREW,
2510 .probe = probe_winbond_fwhub,
2511 .erase = erase_winbond_fwhub,
2512 .write = write_winbond_fwhub,
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 = "W39V080FA (dual mode)",
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 = W_39V080FA_DM,
2522 .total_size = 512,
2523 .page_size = 64*1024,
2524 .tested = TEST_UNTESTED,
2525 .probe = probe_winbond_fwhub,
2526 .erase = erase_winbond_fwhub,
2527 .write = write_winbond_fwhub,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002528 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002529 },
2530
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002531 {
2532 .vendor = "Atmel",
2533 .name = "unknown Atmel SPI chip",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002534 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002535 .manufacture_id = ATMEL_ID,
2536 .model_id = GENERIC_DEVICE_ID,
2537 .total_size = 0,
2538 .page_size = 256,
Carl-Daniel Hailfinger42882fd2009-04-22 13:33:43 +00002539 .tested = TEST_BAD_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002540 .probe = probe_spi_rdid,
2541 .erase = NULL,
2542 .write = NULL,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002543 .read = NULL,
FENG yu ningff692fb2008-12-08 18:15:10 +00002544 },
2545
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002546 {
2547 .vendor = "EON",
2548 .name = "unknown EON SPI chip",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002549 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002550 .manufacture_id = EON_ID_NOPREFIX,
2551 .model_id = GENERIC_DEVICE_ID,
2552 .total_size = 0,
2553 .page_size = 256,
Carl-Daniel Hailfinger42882fd2009-04-22 13:33:43 +00002554 .tested = TEST_BAD_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002555 .probe = probe_spi_rdid,
2556 .erase = NULL,
2557 .write = NULL,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002558 .read = NULL,
FENG yu ningff692fb2008-12-08 18:15:10 +00002559 },
2560
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002561 {
2562 .vendor = "Macronix",
2563 .name = "unknown Macronix SPI chip",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002564 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002565 .manufacture_id = MX_ID,
2566 .model_id = GENERIC_DEVICE_ID,
2567 .total_size = 0,
2568 .page_size = 256,
Carl-Daniel Hailfinger42882fd2009-04-22 13:33:43 +00002569 .tested = TEST_BAD_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002570 .probe = probe_spi_rdid,
2571 .erase = NULL,
2572 .write = NULL,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002573 .read = NULL,
FENG yu ningff692fb2008-12-08 18:15:10 +00002574 },
2575
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002576 {
2577 .vendor = "PMC",
2578 .name = "unknown PMC SPI chip",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002579 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002580 .manufacture_id = PMC_ID,
2581 .model_id = GENERIC_DEVICE_ID,
2582 .total_size = 0,
2583 .page_size = 256,
Carl-Daniel Hailfinger42882fd2009-04-22 13:33:43 +00002584 .tested = TEST_BAD_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002585 .probe = probe_spi_rdid,
2586 .erase = NULL,
2587 .write = NULL,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002588 .read = NULL,
FENG yu ningff692fb2008-12-08 18:15:10 +00002589 },
2590
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002591 {
2592 .vendor = "SST",
2593 .name = "unknown SST SPI chip",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002594 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002595 .manufacture_id = SST_ID,
2596 .model_id = GENERIC_DEVICE_ID,
2597 .total_size = 0,
2598 .page_size = 256,
Carl-Daniel Hailfinger42882fd2009-04-22 13:33:43 +00002599 .tested = TEST_BAD_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002600 .probe = probe_spi_rdid,
2601 .erase = NULL,
2602 .write = NULL,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002603 .read = NULL,
FENG yu ningff692fb2008-12-08 18:15:10 +00002604 },
2605
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002606 {
2607 .vendor = "ST",
2608 .name = "unknown ST SPI chip",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002609 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002610 .manufacture_id = ST_ID,
2611 .model_id = GENERIC_DEVICE_ID,
2612 .total_size = 0,
2613 .page_size = 256,
Carl-Daniel Hailfinger42882fd2009-04-22 13:33:43 +00002614 .tested = TEST_BAD_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002615 .probe = probe_spi_rdid,
2616 .erase = NULL,
2617 .write = NULL,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002618 .read = NULL,
FENG yu ningff692fb2008-12-08 18:15:10 +00002619 },
Uwe Hermannfc425e82008-03-16 02:06:25 +00002620
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002621 { NULL }
Stephan Guilloux72cf5652009-04-21 01:46:07 +00002622};