blob: b14cec42dba6ed09c92d2551359c731de4898ae5 [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",
Maciej Pijankabc2bbd22009-06-02 16:45:59 +0000403 .name = "AT29C512",
404 .bustype = CHIP_BUSTYPE_NONSPI,
405 .manufacture_id = ATMEL_ID,
406 .model_id = AT_29C512,
407 .total_size = 64,
408 .page_size = 128,
409 .tested = TEST_OK_PREW,
410 .probe = probe_jedec,
411 .erase = erase_chip_jedec,
412 .write = write_jedec,
413 .read = read_memmapped,
414
415 },
416
417 {
418 .vendor = "Atmel",
Uwe Hermann8403ccb2009-05-16 21:39:19 +0000419 .name = "AT29C010A",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000420 .bustype = CHIP_BUSTYPE_NONSPI,
Uwe Hermann8403ccb2009-05-16 21:39:19 +0000421 .manufacture_id = ATMEL_ID,
422 .model_id = AT_29C010A,
423 .total_size = 128,
424 .page_size = 128,
425 .tested = TEST_OK_PRE,
426 .probe = probe_jedec,
427 .erase = erase_chip_jedec,
428 .write = write_jedec, /* FIXME */
429 .read = read_memmapped,
430 },
431
432 {
433 .vendor = "Atmel",
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000434 .name = "AT29C020",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000435 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000436 .manufacture_id = ATMEL_ID,
437 .model_id = AT_29C020,
438 .total_size = 256,
439 .page_size = 256,
440 .tested = TEST_OK_PREW,
441 .probe = probe_jedec,
442 .erase = erase_chip_jedec,
443 .write = write_jedec,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +0000444 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +0000445 },
446
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000447 {
448 .vendor = "Atmel",
449 .name = "AT29C040A",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000450 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000451 .manufacture_id = ATMEL_ID,
452 .model_id = AT_29C040A,
453 .total_size = 512,
454 .page_size = 256,
455 .tested = TEST_UNTESTED,
456 .probe = probe_jedec,
457 .erase = erase_chip_jedec,
458 .write = write_jedec,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +0000459 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +0000460 },
461
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000462 {
463 .vendor = "Atmel",
464 .name = "AT45CS1282",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000465 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000466 .manufacture_id = ATMEL_ID,
467 .model_id = AT_45CS1282,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000468 .total_size = 16896 /* No power of two sizes */,
469 .page_size = 1056 /* No power of two sizes */,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000470 .tested = TEST_BAD_READ,
471 .probe = probe_spi_rdid,
472 .erase = NULL,
473 .write = NULL /* Incompatible Page write */,
474 .read = NULL /* Incompatible read */,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000475 },
FENG yu ningff692fb2008-12-08 18:15:10 +0000476
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000477 {
478 .vendor = "Atmel",
479 .name = "AT45DB011D",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000480 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000481 .manufacture_id = ATMEL_ID,
482 .model_id = AT_45DB011D,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000483 .total_size = 128 /* Size can only be determined from status register */,
484 .page_size = 256 /* Size can only be determined from status register */,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000485 .tested = TEST_BAD_READ,
486 .probe = probe_spi_rdid,
487 .erase = NULL,
488 .write = NULL,
489 .read = NULL,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000490 },
FENG yu ningff692fb2008-12-08 18:15:10 +0000491
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000492 {
493 .vendor = "Atmel",
494 .name = "AT45DB021D",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000495 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000496 .manufacture_id = ATMEL_ID,
497 .model_id = AT_45DB021D,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000498 .total_size = 256 /* Size can only be determined from status register */,
499 .page_size = 256 /* Size can only be determined from status register */,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000500 .tested = TEST_BAD_READ,
501 .probe = probe_spi_rdid,
502 .erase = NULL,
503 .write = NULL,
504 .read = NULL,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000505 },
FENG yu ningff692fb2008-12-08 18:15:10 +0000506
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000507 {
508 .vendor = "Atmel",
509 .name = "AT45DB041D",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000510 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000511 .manufacture_id = ATMEL_ID,
512 .model_id = AT_45DB041D,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000513 .total_size = 512 /* Size can only be determined from status register */,
514 .page_size = 256 /* Size can only be determined from status register */,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000515 .tested = TEST_BAD_READ,
516 .probe = probe_spi_rdid,
517 .erase = NULL,
518 .write = NULL,
519 .read = NULL,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000520 },
FENG yu ningff692fb2008-12-08 18:15:10 +0000521
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000522 {
523 .vendor = "Atmel",
524 .name = "AT45DB081D",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000525 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000526 .manufacture_id = ATMEL_ID,
527 .model_id = AT_45DB081D,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000528 .total_size = 1024 /* Size can only be determined from status register */,
529 .page_size = 256 /* Size can only be determined from status register */,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000530 .tested = TEST_BAD_READ,
531 .probe = probe_spi_rdid,
532 .erase = NULL,
533 .write = NULL,
534 .read = NULL,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000535 },
FENG yu ningff692fb2008-12-08 18:15:10 +0000536
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000537 {
538 .vendor = "Atmel",
539 .name = "AT45DB161D",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000540 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000541 .manufacture_id = ATMEL_ID,
542 .model_id = AT_45DB161D,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000543 .total_size = 2048 /* Size can only be determined from status register */,
544 .page_size = 512 /* Size can only be determined from status register */,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000545 .tested = TEST_BAD_READ,
546 .probe = probe_spi_rdid,
547 .erase = NULL,
548 .write = NULL,
549 .read = NULL,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000550 },
FENG yu ningff692fb2008-12-08 18:15:10 +0000551
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000552 {
553 .vendor = "Atmel",
554 .name = "AT45DB321C",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000555 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000556 .manufacture_id = ATMEL_ID,
557 .model_id = AT_45DB321C,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000558 .total_size = 4224 /* No power of two sizes */,
559 .page_size = 528 /* No power of two sizes */,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000560 .tested = TEST_BAD_READ,
561 .probe = probe_spi_rdid,
562 .erase = NULL,
563 .write = NULL,
564 .read = NULL /* Incompatible read */,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000565 },
FENG yu ningff692fb2008-12-08 18:15:10 +0000566
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000567 {
568 .vendor = "Atmel",
569 .name = "AT45DB321D",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000570 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000571 .manufacture_id = ATMEL_ID,
572 .model_id = AT_45DB321D,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000573 .total_size = 4096 /* Size can only be determined from status register */,
574 .page_size = 512 /* Size can only be determined from status register */,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000575 .tested = TEST_BAD_READ,
576 .probe = probe_spi_rdid,
577 .erase = NULL,
578 .write = NULL,
579 .read = NULL,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000580 },
FENG yu ningff692fb2008-12-08 18:15:10 +0000581
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000582 {
583 .vendor = "Atmel",
584 .name = "AT45DB642D",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000585 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000586 .manufacture_id = ATMEL_ID,
587 .model_id = AT_45DB642D,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000588 .total_size = 8192 /* Size can only be determined from status register */,
589 .page_size = 1024 /* Size can only be determined from status register */,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000590 .tested = TEST_BAD_READ,
591 .probe = probe_spi_rdid,
592 .erase = NULL,
593 .write = NULL,
594 .read = NULL,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000595 },
FENG yu ningff692fb2008-12-08 18:15:10 +0000596
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000597 {
598 .vendor = "Atmel",
Uwe Hermannb4dcb712009-05-13 11:36:06 +0000599 .name = "AT49BV512",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000600 .bustype = CHIP_BUSTYPE_NONSPI,
Uwe Hermannb4dcb712009-05-13 11:36:06 +0000601 .manufacture_id = ATMEL_ID,
602 .model_id = AT_49BV512,
603 .total_size = 64,
604 .page_size = 64,
605 .tested = TEST_OK_PREW,
606 .probe = probe_jedec,
607 .erase = erase_chip_jedec,
608 .write = write_49f002,
609 .read = read_memmapped,
610 },
611
612 {
613 .vendor = "Atmel",
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000614 .name = "AT49F002(N)",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000615 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000616 .manufacture_id = ATMEL_ID,
617 .model_id = AT_49F002N,
618 .total_size = 256,
619 .page_size = 256,
620 .tested = TEST_UNTESTED,
621 .probe = probe_jedec,
622 .erase = erase_chip_jedec,
623 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +0000624 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +0000625 },
626
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000627 {
628 .vendor = "Atmel",
629 .name = "AT49F002(N)T",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000630 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000631 .manufacture_id = ATMEL_ID,
632 .model_id = AT_49F002NT,
633 .total_size = 256,
634 .page_size = 256,
635 .tested = TEST_OK_PREW,
636 .probe = probe_jedec,
637 .erase = erase_chip_jedec,
638 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +0000639 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +0000640 },
641
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000642 {
643 .vendor = "AMIC",
644 .name = "A25L40P",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000645 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000646 .manufacture_id = AMIC_ID,
647 .model_id = AMIC_A25L40P,
648 .total_size = 512,
649 .page_size = 256,
650 .tested = TEST_OK_PREW,
651 .probe = probe_spi_rdid4,
652 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +0000653 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000654 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000655 },
656
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000657 {
658 .vendor = "AMIC",
659 .name = "A29002B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000660 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000661 .manufacture_id = AMIC_ID_NOPREFIX,
662 .model_id = AMIC_A29002B,
663 .total_size = 256,
664 .page_size = 64 * 1024,
665 .tested = TEST_UNTESTED,
666 .probe = probe_29f002,
667 .erase = erase_29f002,
668 .write = write_29f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +0000669 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +0000670 },
671
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000672 {
673 .vendor = "AMIC",
674 .name = "A29002T",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000675 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000676 .manufacture_id = AMIC_ID_NOPREFIX,
677 .model_id = AMIC_A29002T,
678 .total_size = 256,
679 .page_size = 64 * 1024,
680 .tested = TEST_OK_PREW,
681 .probe = probe_29f002,
682 .erase = erase_29f002,
683 .write = write_29f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +0000684 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +0000685 },
686
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000687 {
688 .vendor = "AMIC",
689 .name = "A29040B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000690 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000691 .manufacture_id = AMIC_ID_NOPREFIX,
692 .model_id = AMIC_A29040B,
693 .total_size = 512,
694 .page_size = 64 * 1024,
695 .tested = TEST_OK_PR,
696 .probe = probe_29f040b,
697 .erase = erase_29f040b,
698 .write = write_29f040b,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +0000699 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +0000700 },
701
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000702 {
703 .vendor = "AMIC",
704 .name = "A49LF040A",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000705 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000706 .manufacture_id = AMIC_ID_NOPREFIX,
707 .model_id = AMIC_A49LF040A,
708 .total_size = 512,
709 .page_size = 64 * 1024,
710 .tested = TEST_OK_PREW,
711 .probe = probe_49fl00x,
712 .erase = erase_49fl00x,
713 .write = write_49fl00x,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +0000714 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +0000715 },
716
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000717 {
718 .vendor = "EMST",
719 .name = "F49B002UA",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000720 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000721 .manufacture_id = EMST_ID,
722 .model_id = EMST_F49B002UA,
723 .total_size = 256,
724 .page_size = 4096,
725 .tested = TEST_UNTESTED,
726 .probe = probe_jedec,
727 .erase = erase_chip_jedec,
728 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +0000729 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +0000730 },
731
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000732 {
733 .vendor = "EON",
734 .name = "EN29F002(A)(N)B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000735 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000736 .manufacture_id = EON_ID,
737 .model_id = EN_29F002B,
738 .total_size = 256,
739 .page_size = 256,
740 .tested = TEST_UNTESTED,
741 .probe = probe_jedec,
742 .erase = erase_chip_jedec,
743 .write = write_en29f002a,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +0000744 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +0000745 },
746
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000747 {
748 .vendor = "EON",
749 .name = "EN29F002(A)(N)T",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000750 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000751 .manufacture_id = EON_ID,
752 .model_id = EN_29F002T,
753 .total_size = 256,
754 .page_size = 256,
755 .tested = TEST_OK_PREW,
756 .probe = probe_jedec,
757 .erase = erase_chip_jedec,
758 .write = write_en29f002a,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +0000759 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +0000760 },
761
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000762 {
763 .vendor = "Fujitsu",
764 .name = "MBM29F004BC",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000765 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000766 .manufacture_id = FUJITSU_ID,
767 .model_id = MBM29F004BC,
768 .total_size = 512,
769 .page_size = 64 * 1024,
770 .tested = TEST_UNTESTED,
771 .probe = probe_jedec,
772 .erase = NULL,
773 .write = NULL,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +0000774 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +0000775 },
776
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000777 {
778 .vendor = "Fujitsu",
779 .name = "MBM29F004TC",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000780 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000781 .manufacture_id = FUJITSU_ID,
782 .model_id = MBM29F004TC,
783 .total_size = 512,
784 .page_size = 64 * 1024,
785 .tested = TEST_UNTESTED,
786 .probe = probe_jedec,
787 .erase = NULL,
788 .write = NULL,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +0000789 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +0000790 },
791
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000792 {
793 .vendor = "Fujitsu",
794 .name = "MBM29F400BC",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000795 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000796 .manufacture_id = FUJITSU_ID,
797 .model_id = MBM29F400BC,
798 .total_size = 512,
799 .page_size = 64 * 1024,
800 .tested = TEST_UNTESTED,
801 .probe = probe_m29f400bt,
802 .erase = erase_m29f400bt,
803 .write = write_coreboot_m29f400bt,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +0000804 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +0000805 },
806
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000807 {
808 .vendor = "Fujitsu",
809 .name = "MBM29F400TC",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000810 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000811 .manufacture_id = FUJITSU_ID,
812 .model_id = MBM29F400TC,
813 .total_size = 512,
814 .page_size = 64 * 1024,
815 .tested = TEST_UNTESTED,
816 .probe = probe_m29f400bt,
817 .erase = erase_m29f400bt,
818 .write = write_coreboot_m29f400bt,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +0000819 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +0000820 },
821
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000822 {
823 .vendor = "Intel",
Urja Rannikkoebd7b832009-05-29 12:55:31 +0000824 .name = "28F001BX-B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000825 .bustype = CHIP_BUSTYPE_NONSPI,
Urja Rannikkoebd7b832009-05-29 12:55:31 +0000826 .manufacture_id = INTEL_ID,
827 .model_id = P28F001BXB,
828 .total_size = 128,
829 .page_size = 128 * 1024, /* 8k + 2x4k + 112k */
830 .tested = TEST_BAD_ERASE|TEST_BAD_WRITE,
831 .probe = probe_jedec,
832 .erase = NULL,
833 .write = NULL,
834 .read = read_memmapped,
835 },
836
837 {
838 .vendor = "Intel",
839 .name = "28F001BX-T",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000840 .bustype = CHIP_BUSTYPE_NONSPI,
Urja Rannikkoebd7b832009-05-29 12:55:31 +0000841 .manufacture_id = INTEL_ID,
842 .model_id = P28F001BXT,
843 .total_size = 128,
844 .page_size = 128 * 1024, /* 112k + 2x4k + 8k */
845 .tested = TEST_OK_PR|TEST_BAD_ERASE|TEST_BAD_WRITE,
846 .probe = probe_jedec,
847 .erase = NULL,
848 .write = NULL,
849 .read = read_memmapped,
850 },
851
852 {
853 .vendor = "Intel",
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000854 .name = "82802AB",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000855 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000856 .manufacture_id = INTEL_ID,
857 .model_id = 173,
858 .total_size = 512,
859 .page_size = 64 * 1024,
860 .tested = TEST_OK_PREW,
861 .probe = probe_82802ab,
862 .erase = erase_82802ab,
863 .write = write_82802ab,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +0000864 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +0000865 },
866
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000867 {
868 .vendor = "Intel",
869 .name = "82802AC",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000870 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000871 .manufacture_id = INTEL_ID,
872 .model_id = 172,
873 .total_size = 1024,
874 .page_size = 64 * 1024,
875 .tested = TEST_OK_PREW,
876 .probe = probe_82802ab,
877 .erase = erase_82802ab,
878 .write = write_82802ab,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +0000879 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +0000880 },
881
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000882 {
883 .vendor = "Macronix",
884 .name = "MX25L512",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000885 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000886 .manufacture_id = MX_ID,
887 .model_id = MX_25L512,
888 .total_size = 64,
889 .page_size = 256,
890 .tested = TEST_UNTESTED,
891 .probe = probe_spi_rdid,
Stephan Guillouxfd315502009-04-20 22:54:13 +0000892 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +0000893 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000894 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000895 },
896
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000897 {
898 .vendor = "Macronix",
899 .name = "MX25L1005",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000900 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000901 .manufacture_id = MX_ID,
902 .model_id = MX_25L1005,
903 .total_size = 128,
904 .page_size = 256,
905 .tested = TEST_UNTESTED,
906 .probe = probe_spi_rdid,
Stephan Guillouxfd315502009-04-20 22:54:13 +0000907 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +0000908 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000909 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000910 },
911
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000912 {
913 .vendor = "Macronix",
914 .name = "MX25L2005",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000915 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000916 .manufacture_id = MX_ID,
917 .model_id = MX_25L2005,
918 .total_size = 256,
919 .page_size = 256,
920 .tested = TEST_UNTESTED,
921 .probe = probe_spi_rdid,
Stephan Guillouxfd315502009-04-20 22:54:13 +0000922 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +0000923 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000924 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000925 },
926
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000927 {
928 .vendor = "Macronix",
929 .name = "MX25L4005",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000930 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000931 .manufacture_id = MX_ID,
932 .model_id = MX_25L4005,
933 .total_size = 512,
934 .page_size = 256,
935 .tested = TEST_OK_PREW,
936 .probe = probe_spi_rdid,
Stephan Guillouxfd315502009-04-20 22:54:13 +0000937 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +0000938 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000939 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000940 },
941
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000942 {
943 .vendor = "Macronix",
944 .name = "MX25L8005",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000945 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000946 .manufacture_id = MX_ID,
947 .model_id = MX_25L8005,
948 .total_size = 1024,
949 .page_size = 256,
950 .tested = TEST_OK_PREW,
951 .probe = probe_spi_rdid,
Stephan Guillouxfd315502009-04-20 22:54:13 +0000952 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +0000953 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000954 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000955 },
956
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000957 {
958 .vendor = "Macronix",
959 .name = "MX25L1605",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000960 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000961 .manufacture_id = MX_ID,
962 .model_id = MX_25L1605,
963 .total_size = 2048,
964 .page_size = 256,
Peter Stugeddb94f72009-04-29 23:22:33 +0000965 .tested = TEST_OK_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000966 .probe = probe_spi_rdid,
Stephan Guillouxe39631c2009-04-19 23:24:26 +0000967 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +0000968 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000969 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000970 },
971
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000972 {
973 .vendor = "Macronix",
Stephan Guillouxf5c70902009-04-19 23:04:00 +0000974 .name = "MX25L1635D",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000975 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guillouxf5c70902009-04-19 23:04:00 +0000976 .manufacture_id = MX_ID,
977 .model_id = MX_25L1635D,
978 .total_size = 2048,
979 .page_size = 256,
980 .tested = TEST_UNTESTED,
981 .probe = probe_spi_rdid,
Stephan Guillouxe39631c2009-04-19 23:24:26 +0000982 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +0000983 .write = spi_chip_write_256,
Stephan Guillouxf5c70902009-04-19 23:04:00 +0000984 .read = spi_chip_read,
985 },
Stephan Guillouxfd315502009-04-20 22:54:13 +0000986
Stephan Guillouxf5c70902009-04-19 23:04:00 +0000987 {
988 .vendor = "Macronix",
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000989 .name = "MX25L3205",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000990 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000991 .manufacture_id = MX_ID,
992 .model_id = MX_25L3205,
993 .total_size = 4096,
994 .page_size = 256,
995 .tested = TEST_OK_PREW,
996 .probe = probe_spi_rdid,
Stephan Guillouxfd315502009-04-20 22:54:13 +0000997 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +0000998 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000999 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001000 },
1001
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001002 {
1003 .vendor = "Macronix",
Stephan Guilloux70ea9a32009-04-23 22:51:56 +00001004 .name = "MX25L3235D",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001005 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux70ea9a32009-04-23 22:51:56 +00001006 .manufacture_id = MX_ID,
1007 .model_id = MX_25L3235D,
1008 .total_size = 4096,
1009 .page_size = 256,
1010 .tested = TEST_UNTESTED,
1011 .probe = probe_spi_rdid,
1012 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001013 .write = spi_chip_write_256,
Stephan Guilloux70ea9a32009-04-23 22:51:56 +00001014 .read = spi_chip_read,
1015 },
1016
1017 {
1018 .vendor = "Macronix",
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001019 .name = "MX25L6405",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001020 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001021 .manufacture_id = MX_ID,
1022 .model_id = MX_25L6405,
1023 .total_size = 8192,
1024 .page_size = 256,
1025 .tested = TEST_UNTESTED,
1026 .probe = probe_spi_rdid,
Stephan Guillouxfd315502009-04-20 22:54:13 +00001027 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001028 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001029 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001030 },
1031
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001032 {
1033 .vendor = "Macronix",
Stephan Guilloux2f132fe2009-04-21 01:47:16 +00001034 .name = "MX25L12805",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001035 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux2f132fe2009-04-21 01:47:16 +00001036 .manufacture_id = MX_ID,
1037 .model_id = MX_25L12805,
1038 .total_size = 16384,
1039 .page_size = 256,
1040 .tested = TEST_UNTESTED,
1041 .probe = probe_spi_rdid,
1042 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001043 .write = spi_chip_write_256,
Stephan Guilloux2f132fe2009-04-21 01:47:16 +00001044 .read = spi_chip_read,
1045 },
1046
1047 {
1048 .vendor = "Macronix",
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001049 .name = "MX29F002B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001050 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001051 .manufacture_id = MX_ID,
1052 .model_id = MX_29F002B,
1053 .total_size = 256,
1054 .page_size = 64 * 1024,
1055 .tested = TEST_UNTESTED,
1056 .probe = probe_29f002,
1057 .erase = erase_29f002,
1058 .write = write_29f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001059 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001060 },
1061
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001062 {
1063 .vendor = "Macronix",
1064 .name = "MX29F002T",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001065 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001066 .manufacture_id = MX_ID,
1067 .model_id = MX_29F002T,
1068 .total_size = 256,
1069 .page_size = 64 * 1024,
Uwe Hermann66c580c2009-05-21 00:29:50 +00001070 .tested = TEST_OK_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001071 .probe = probe_29f002,
1072 .erase = erase_29f002,
1073 .write = write_29f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001074 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001075 },
1076
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001077 {
1078 .vendor = "Macronix",
1079 .name = "MX29LV040C",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001080 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001081 .manufacture_id = MX_ID,
1082 .model_id = MX_29LV040C,
1083 .total_size = 512,
1084 .page_size = 64 * 1024,
1085 .tested = TEST_OK_PR,
1086 .probe = probe_29f002,
1087 .erase = erase_29f002,
1088 .write = write_29f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001089 .read = read_memmapped,
Carl-Daniel Hailfinger7de86392008-12-10 10:32:05 +00001090 },
1091
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001092 {
1093 .vendor = "Numonyx",
1094 .name = "M25PE10",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001095 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001096 .manufacture_id = ST_ID,
1097 .model_id = 0x8011,
1098 .total_size = 128,
1099 .page_size = 256,
1100 .tested = TEST_UNTESTED,
1101 .probe = probe_spi_rdid,
1102 .erase = spi_chip_erase_d8,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001103 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001104 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001105 },
1106
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001107 {
1108 .vendor = "Numonyx",
1109 .name = "M25PE20",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001110 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001111 .manufacture_id = ST_ID,
1112 .model_id = 0x8012,
1113 .total_size = 256,
1114 .page_size = 256,
1115 .tested = TEST_UNTESTED,
1116 .probe = probe_spi_rdid,
1117 .erase = spi_chip_erase_d8,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001118 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001119 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001120 },
1121
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001122 {
1123 .vendor = "Numonyx",
1124 .name = "M25PE40",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001125 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001126 .manufacture_id = ST_ID,
1127 .model_id = 0x8013,
1128 .total_size = 256,
1129 .page_size = 256,
1130 .tested = TEST_UNTESTED,
1131 .probe = probe_spi_rdid,
1132 .erase = spi_chip_erase_d8,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001133 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001134 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001135 },
1136
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001137 {
1138 .vendor = "Numonyx",
1139 .name = "M25PE80",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001140 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001141 .manufacture_id = ST_ID,
1142 .model_id = 0x8014,
1143 .total_size = 1024,
1144 .page_size = 256,
1145 .tested = TEST_OK_PREW,
1146 .probe = probe_spi_rdid,
1147 .erase = spi_chip_erase_d8,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001148 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001149 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001150 },
1151
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001152 {
1153 .vendor = "Numonyx",
1154 .name = "M25PE16",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001155 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001156 .manufacture_id = ST_ID,
1157 .model_id = 0x8015,
1158 .total_size = 2048,
1159 .page_size = 256,
1160 .tested = TEST_UNTESTED,
1161 .probe = probe_spi_rdid,
1162 .erase = spi_chip_erase_d8,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001163 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001164 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001165 },
1166
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001167 {
1168 .vendor = "PMC",
1169 .name = "Pm25LV010",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001170 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001171 .manufacture_id = PMC_ID,
1172 .model_id = PMC_25LV010,
1173 .total_size = 128,
1174 .page_size = 256,
1175 .tested = TEST_UNTESTED,
1176 .probe = probe_spi_rdid,
1177 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001178 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001179 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001180 },
1181
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001182 {
1183 .vendor = "PMC",
1184 .name = "Pm25LV016B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001185 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001186 .manufacture_id = PMC_ID,
1187 .model_id = PMC_25LV016B,
1188 .total_size = 2048,
1189 .page_size = 256,
1190 .tested = TEST_UNTESTED,
1191 .probe = probe_spi_rdid,
1192 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001193 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001194 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001195 },
1196
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001197 {
1198 .vendor = "PMC",
1199 .name = "Pm25LV020",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001200 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001201 .manufacture_id = PMC_ID,
1202 .model_id = PMC_25LV020,
1203 .total_size = 256,
1204 .page_size = 256,
1205 .tested = TEST_UNTESTED,
1206 .probe = probe_spi_rdid,
1207 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001208 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001209 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001210 },
1211
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001212 {
1213 .vendor = "PMC",
1214 .name = "Pm25LV040",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001215 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001216 .manufacture_id = PMC_ID,
1217 .model_id = PMC_25LV040,
1218 .total_size = 512,
1219 .page_size = 256,
1220 .tested = TEST_UNTESTED,
1221 .probe = probe_spi_rdid,
1222 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001223 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001224 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001225 },
1226
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001227 {
1228 .vendor = "PMC",
1229 .name = "Pm25LV080B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001230 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001231 .manufacture_id = PMC_ID,
1232 .model_id = PMC_25LV080B,
1233 .total_size = 1024,
1234 .page_size = 256,
1235 .tested = TEST_UNTESTED,
1236 .probe = probe_spi_rdid,
1237 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001238 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001239 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001240 },
1241
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001242 {
1243 .vendor = "PMC",
1244 .name = "Pm25LV512",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001245 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001246 .manufacture_id = PMC_ID,
1247 .model_id = PMC_25LV512,
1248 .total_size = 64,
1249 .page_size = 256,
1250 .tested = TEST_UNTESTED,
1251 .probe = probe_spi_rdid,
1252 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001253 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001254 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001255 },
1256
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001257 {
1258 .vendor = "PMC",
Rudolf Marek50fdf3b2009-05-17 17:02:07 +00001259 .name = "Pm39LV010",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001260 .bustype = CHIP_BUSTYPE_NONSPI,
Rudolf Marek50fdf3b2009-05-17 17:02:07 +00001261 .manufacture_id = PMC_ID_NOPREFIX,
1262 .model_id = PMC_39F010,
1263 .total_size = 128,
1264 .page_size = 4096,
1265 .tested = TEST_OK_PREW,
1266 .probe = probe_jedec,
1267 .erase = erase_chip_jedec,
1268 .write = write_49f002,
1269 .read = read_memmapped,
1270 },
1271
1272 {
1273 .vendor = "PMC",
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001274 .name = "Pm49FL002",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001275 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001276 .manufacture_id = PMC_ID_NOPREFIX,
1277 .model_id = PMC_49FL002,
1278 .total_size = 256,
1279 .page_size = 16 * 1024,
1280 .tested = TEST_OK_PREW,
1281 .probe = probe_49fl00x,
1282 .erase = erase_49fl00x,
1283 .write = write_49fl00x,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001284 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001285 },
1286
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001287 {
1288 .vendor = "PMC",
1289 .name = "Pm49FL004",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001290 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001291 .manufacture_id = PMC_ID_NOPREFIX,
1292 .model_id = PMC_49FL004,
1293 .total_size = 512,
1294 .page_size = 64 * 1024,
1295 .tested = TEST_OK_PREW,
1296 .probe = probe_49fl00x,
1297 .erase = erase_49fl00x,
1298 .write = write_49fl00x,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001299 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001300 },
1301
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001302 {
1303 .vendor = "Sharp",
1304 .name = "LHF00L04",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001305 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001306 .manufacture_id = SHARP_ID,
1307 .model_id = SHARP_LHF00L04,
1308 .total_size = 1024,
1309 .page_size = 64 * 1024,
1310 .tested = TEST_UNTESTED,
1311 .probe = probe_lhf00l04,
1312 .erase = erase_lhf00l04,
1313 .write = write_lhf00l04,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001314 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001315 },
1316
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001317 {
1318 .vendor = "Spansion",
1319 .name = "S25FL016A",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001320 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001321 .manufacture_id = SPANSION_ID,
1322 .model_id = SPANSION_S25FL016A,
1323 .total_size = 2048,
1324 .page_size = 256,
1325 .tested = TEST_OK_PREW,
1326 .probe = probe_spi_rdid,
1327 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001328 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001329 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001330 },
1331
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001332 {
1333 .vendor = "SST",
1334 .name = "SST25VF016B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001335 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001336 .manufacture_id = SST_ID,
1337 .model_id = SST_25VF016B,
1338 .total_size = 2048,
1339 .page_size = 256,
1340 .tested = TEST_OK_PREW,
1341 .probe = probe_spi_rdid,
1342 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger93bb3752009-05-13 22:19:12 +00001343 .write = spi_chip_write_1,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001344 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001345 },
1346
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001347 {
1348 .vendor = "SST",
1349 .name = "SST25VF032B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001350 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001351 .manufacture_id = SST_ID,
1352 .model_id = SST_25VF032B,
1353 .total_size = 4096,
1354 .page_size = 256,
1355 .tested = TEST_OK_PREW,
1356 .probe = probe_spi_rdid,
1357 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger93bb3752009-05-13 22:19:12 +00001358 .write = spi_chip_write_1,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001359 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001360 },
1361
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001362 {
1363 .vendor = "SST",
1364 .name = "SST25VF040B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001365 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001366 .manufacture_id = SST_ID,
1367 .model_id = SST_25VF040B,
1368 .total_size = 512,
1369 .page_size = 256,
1370 .tested = TEST_UNTESTED,
1371 .probe = probe_spi_rdid,
1372 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger93bb3752009-05-13 22:19:12 +00001373 .write = spi_chip_write_1,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001374 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001375 },
1376
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001377 {
1378 .vendor = "SST",
Zheng Bao0677dff2009-02-25 08:07:33 +00001379 .name = "SST25VF040.REMS",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001380 .bustype = CHIP_BUSTYPE_SPI,
Zheng Bao0677dff2009-02-25 08:07:33 +00001381 .manufacture_id = 0xbf,
1382 .model_id = 0x44,
1383 .total_size = 512,
1384 .page_size = 64*1024,
1385 .tested = TEST_OK_PR,
1386 .probe = probe_spi_rems,
1387 .erase = spi_chip_erase_60,
Carl-Daniel Hailfinger93bb3752009-05-13 22:19:12 +00001388 .write = spi_chip_write_1,
Zheng Bao0677dff2009-02-25 08:07:33 +00001389 .read = spi_chip_read,
1390 },
1391
1392 {
1393 .vendor = "SST",
Peter Stugefd9217d2009-01-26 03:37:40 +00001394 .name = "SST25VF040B.REMS",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001395 .bustype = CHIP_BUSTYPE_SPI,
Peter Stugefd9217d2009-01-26 03:37:40 +00001396 .manufacture_id = 0xbf,
1397 .model_id = 0x8d,
1398 .total_size = 512,
1399 .page_size = 64*1024,
1400 .tested = TEST_OK_PR,
1401 .probe = probe_spi_rems,
1402 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger93bb3752009-05-13 22:19:12 +00001403 .write = spi_chip_write_1,
Peter Stugefd9217d2009-01-26 03:37:40 +00001404 .read = spi_chip_read,
1405 },
1406
1407 {
1408 .vendor = "SST",
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001409 .name = "SST25VF080B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001410 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001411 .manufacture_id = SST_ID,
1412 .model_id = SST_25VF080B,
1413 .total_size = 1024,
1414 .page_size = 256,
Peter Stugee612a112009-05-05 16:34:53 +00001415 .tested = TEST_OK_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001416 .probe = probe_spi_rdid,
1417 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001418 .write = spi_chip_write_1,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001419 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001420 },
1421
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001422 {
1423 .vendor = "SST",
1424 .name = "SST28SF040A",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001425 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001426 .manufacture_id = SST_ID,
1427 .model_id = SST_28SF040,
1428 .total_size = 512,
1429 .page_size = 256,
1430 .tested = TEST_UNTESTED,
1431 .probe = probe_28sf040,
1432 .erase = erase_28sf040,
1433 .write = write_28sf040,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001434 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001435 },
1436
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001437 {
1438 .vendor = "SST",
1439 .name = "SST29EE010",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001440 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001441 .manufacture_id = SST_ID,
1442 .model_id = SST_29EE010,
1443 .total_size = 128,
1444 .page_size = 128,
1445 .tested = TEST_OK_PREW,
1446 .probe = probe_jedec,
1447 .erase = erase_chip_jedec,
1448 .write = write_jedec,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001449 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001450 },
1451
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001452 {
1453 .vendor = "SST",
1454 .name = "SST29LE010",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001455 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001456 .manufacture_id = SST_ID,
1457 .model_id = SST_29LE010,
1458 .total_size = 128,
1459 .page_size = 128,
1460 .tested = TEST_UNTESTED,
1461 .probe = probe_jedec,
1462 .erase = erase_chip_jedec,
1463 .write = write_jedec,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001464 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001465 },
1466
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001467 {
1468 .vendor = "SST",
1469 .name = "SST29EE020A",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001470 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001471 .manufacture_id = SST_ID,
1472 .model_id = SST_29EE020A,
1473 .total_size = 256,
1474 .page_size = 128,
Peter Stugeb27d0a22009-02-22 21:07:28 +00001475 .tested = TEST_OK_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001476 .probe = probe_jedec,
1477 .erase = erase_chip_jedec,
1478 .write = write_jedec,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001479 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001480 },
1481
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001482 {
1483 .vendor = "SST",
1484 .name = "SST29LE020",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001485 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001486 .manufacture_id = SST_ID,
1487 .model_id = SST_29LE020,
1488 .total_size = 256,
1489 .page_size = 128,
1490 .tested = TEST_UNTESTED,
1491 .probe = probe_jedec,
1492 .erase = erase_chip_jedec,
1493 .write = write_jedec,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001494 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001495 },
1496
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001497 {
1498 .vendor = "SST",
1499 .name = "SST39SF010A",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001500 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001501 .manufacture_id = SST_ID,
1502 .model_id = SST_39SF010,
1503 .total_size = 128,
1504 .page_size = 4096,
1505 .tested = TEST_OK_PREW,
1506 .probe = probe_jedec,
1507 .erase = erase_chip_jedec,
Uwe Hermann24f9fbe2009-05-12 14:06:04 +00001508 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001509 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001510 },
1511
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001512 {
1513 .vendor = "SST",
1514 .name = "SST39SF020A",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001515 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001516 .manufacture_id = SST_ID,
1517 .model_id = SST_39SF020,
1518 .total_size = 256,
1519 .page_size = 4096,
1520 .tested = TEST_OK_PREW,
1521 .probe = probe_jedec,
1522 .erase = erase_chip_jedec,
Uwe Hermann24f9fbe2009-05-12 14:06:04 +00001523 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001524 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001525 },
1526
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001527 {
1528 .vendor = "SST",
1529 .name = "SST39SF040",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001530 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001531 .manufacture_id = SST_ID,
1532 .model_id = SST_39SF040,
1533 .total_size = 512,
1534 .page_size = 4096,
1535 .tested = TEST_OK_PREW,
1536 .probe = probe_jedec,
1537 .erase = erase_chip_jedec,
Uwe Hermann24f9fbe2009-05-12 14:06:04 +00001538 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001539 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001540 },
1541
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001542 {
1543 .vendor = "SST",
1544 .name = "SST39VF512",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001545 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001546 .manufacture_id = SST_ID,
1547 .model_id = SST_39VF512,
1548 .total_size = 64,
1549 .page_size = 4096,
Rudolf Mareke186da62009-05-17 18:24:24 +00001550 .tested = TEST_OK_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001551 .probe = probe_jedec,
1552 .erase = erase_chip_jedec,
Uwe Hermann24f9fbe2009-05-12 14:06:04 +00001553 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001554 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001555 },
1556
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001557 {
1558 .vendor = "SST",
1559 .name = "SST39VF010",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001560 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001561 .manufacture_id = SST_ID,
1562 .model_id = SST_39VF010,
1563 .total_size = 128,
1564 .page_size = 4096,
Rudolf Marek50fdf3b2009-05-17 17:02:07 +00001565 .tested = TEST_OK_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001566 .probe = probe_jedec,
1567 .erase = erase_chip_jedec,
Uwe Hermann24f9fbe2009-05-12 14:06:04 +00001568 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001569 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001570 },
1571
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001572 {
1573 .vendor = "SST",
1574 .name = "SST39VF020",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001575 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001576 .manufacture_id = SST_ID,
1577 .model_id = SST_39VF020,
1578 .total_size = 256,
1579 .page_size = 4096,
1580 .tested = TEST_OK_PREW,
1581 .probe = probe_jedec,
1582 .erase = erase_chip_jedec,
Uwe Hermann24f9fbe2009-05-12 14:06:04 +00001583 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001584 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001585 },
1586
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001587 {
1588 .vendor = "SST",
1589 .name = "SST39VF040",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001590 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001591 .manufacture_id = SST_ID,
1592 .model_id = SST_39VF040,
1593 .total_size = 512,
1594 .page_size = 4096,
1595 .tested = TEST_OK_PROBE,
1596 .probe = probe_jedec,
1597 .erase = erase_chip_jedec,
Uwe Hermann24f9fbe2009-05-12 14:06:04 +00001598 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001599 .read = read_memmapped,
Carl-Daniel Hailfinger90eff152008-12-08 23:51:45 +00001600 },
FENG yu ningff692fb2008-12-08 18:15:10 +00001601
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001602 {
1603 .vendor = "SST",
Peter Stuge8440cc02009-01-25 23:55:12 +00001604 .name = "SST39VF080",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001605 .bustype = CHIP_BUSTYPE_NONSPI,
Peter Stuge8440cc02009-01-25 23:55:12 +00001606 .manufacture_id = 0xbf,
1607 .model_id = 0xd8,
1608 .total_size = 1024,
1609 .page_size = 4096,
1610 .tested = TEST_UNTESTED,
1611 .probe = probe_jedec,
1612 .erase = erase_chip_jedec,
Uwe Hermann24f9fbe2009-05-12 14:06:04 +00001613 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001614 .read = read_memmapped,
Peter Stuge8440cc02009-01-25 23:55:12 +00001615 },
1616
1617 {
1618 .vendor = "SST",
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001619 .name = "SST49LF002A/B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001620 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001621 .manufacture_id = SST_ID,
1622 .model_id = SST_49LF002A,
1623 .total_size = 256,
1624 .page_size = 16 * 1024,
1625 .tested = TEST_OK_PREW,
1626 .probe = probe_sst_fwhub,
1627 .erase = erase_sst_fwhub,
1628 .write = write_sst_fwhub,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001629 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001630 },
1631
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001632 {
1633 .vendor = "SST",
1634 .name = "SST49LF003A/B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001635 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001636 .manufacture_id = SST_ID,
1637 .model_id = SST_49LF003A,
1638 .total_size = 384,
1639 .page_size = 64 * 1024,
1640 .tested = TEST_UNTESTED,
1641 .probe = probe_sst_fwhub,
1642 .erase = erase_sst_fwhub,
1643 .write = write_sst_fwhub,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001644 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001645 },
1646
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001647 {
1648 .vendor = "SST",
1649 .name = "SST49LF004A/B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001650 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001651 .manufacture_id = SST_ID,
1652 .model_id = SST_49LF004A,
1653 .total_size = 512,
1654 .page_size = 64 * 1024,
1655 .tested = TEST_OK_PREW,
1656 .probe = probe_sst_fwhub,
1657 .erase = erase_sst_fwhub,
1658 .write = write_sst_fwhub,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001659 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001660 },
1661
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001662 {
1663 .vendor = "SST",
1664 .name = "SST49LF004C",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001665 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001666 .manufacture_id = SST_ID,
1667 .model_id = SST_49LF004C,
1668 .total_size = 512,
1669 .page_size = 4 * 1024,
1670 .tested = TEST_UNTESTED,
1671 .probe = probe_49lfxxxc,
1672 .erase = erase_49lfxxxc,
1673 .write = write_49lfxxxc,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001674 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001675 },
1676
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001677 {
1678 .vendor = "SST",
1679 .name = "SST49LF008A",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001680 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001681 .manufacture_id = SST_ID,
1682 .model_id = SST_49LF008A,
1683 .total_size = 1024,
1684 .page_size = 64 * 1024,
1685 .tested = TEST_OK_PREW,
1686 .probe = probe_sst_fwhub,
1687 .erase = erase_sst_fwhub,
1688 .write = write_sst_fwhub,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001689 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001690 },
1691
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001692 {
1693 .vendor = "SST",
1694 .name = "SST49LF008C",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001695 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001696 .manufacture_id = SST_ID,
1697 .model_id = SST_49LF008C,
1698 .total_size = 1024,
1699 .page_size = 4 * 1024,
1700 .tested = TEST_UNTESTED,
1701 .probe = probe_49lfxxxc,
1702 .erase = erase_49lfxxxc,
1703 .write = write_49lfxxxc,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001704 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001705 },
1706
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001707 {
1708 .vendor = "SST",
1709 .name = "SST49LF016C",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001710 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001711 .manufacture_id = SST_ID,
1712 .model_id = SST_49LF016C,
1713 .total_size = 2048,
1714 .page_size = 4 * 1024,
1715 .tested = TEST_OK_PREW,
1716 .probe = probe_49lfxxxc,
1717 .erase = erase_49lfxxxc,
1718 .write = write_49lfxxxc,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001719 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001720 },
1721
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001722 {
1723 .vendor = "SST",
1724 .name = "SST49LF020",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001725 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001726 .manufacture_id = SST_ID,
1727 .model_id = SST_49LF020,
1728 .total_size = 256,
1729 .page_size = 16 * 1024,
1730 .tested = TEST_OK_PR,
1731 .probe = probe_jedec,
1732 .erase = erase_49lf040,
1733 .write = write_49lf040,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001734 .read = read_memmapped,
Sven Schnellec208dfb2009-01-07 12:35:09 +00001735 },
1736
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001737 {
1738 .vendor = "SST",
1739 .name = "SST49LF020A",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001740 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001741 .manufacture_id = SST_ID,
1742 .model_id = SST_49LF020A,
1743 .total_size = 256,
1744 .page_size = 16 * 1024,
1745 .tested = TEST_UNTESTED,
1746 .probe = probe_jedec,
1747 .erase = erase_49lf040,
1748 .write = write_49lf040,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001749 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001750 },
1751
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001752 {
1753 .vendor = "SST",
1754 .name = "SST49LF040",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001755 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001756 .manufacture_id = SST_ID,
1757 .model_id = SST_49LF040,
1758 .total_size = 512,
1759 .page_size = 4096,
1760 .tested = TEST_OK_PREW,
1761 .probe = probe_jedec,
1762 .erase = erase_49lf040,
1763 .write = write_49lf040,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001764 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001765 },
1766
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001767 {
1768 .vendor = "SST",
1769 .name = "SST49LF040B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001770 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001771 .manufacture_id = SST_ID,
1772 .model_id = SST_49LF040B,
1773 .total_size = 512,
1774 .page_size = 64 * 1024,
1775 .tested = TEST_OK_PREW,
1776 .probe = probe_sst_fwhub,
1777 .erase = erase_sst_fwhub,
1778 .write = write_sst_fwhub,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001779 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001780 },
1781
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001782 {
1783 .vendor = "SST",
1784 .name = "SST49LF080A",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001785 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001786 .manufacture_id = SST_ID,
1787 .model_id = SST_49LF080A,
1788 .total_size = 1024,
1789 .page_size = 4096,
1790 .tested = TEST_OK_PREW,
1791 .probe = probe_jedec,
1792 .erase = erase_49lf040,
1793 .write = write_49lf040,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001794 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001795 },
1796
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001797 {
1798 .vendor = "SST",
1799 .name = "SST49LF160C",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001800 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001801 .manufacture_id = SST_ID,
1802 .model_id = SST_49LF160C,
1803 .total_size = 2048,
1804 .page_size = 4 * 1024,
1805 .tested = TEST_OK_PREW,
1806 .probe = probe_49lfxxxc,
1807 .erase = erase_49lfxxxc,
1808 .write = write_49lfxxxc,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001809 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001810 },
1811
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001812 {
1813 .vendor = "ST",
1814 .name = "M25P05-A",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001815 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001816 .manufacture_id = ST_ID,
1817 .model_id = ST_M25P05A,
1818 .total_size = 64,
1819 .page_size = 256,
1820 .tested = TEST_UNTESTED,
1821 .probe = probe_spi_rdid,
1822 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001823 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001824 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001825 },
1826
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001827 {
1828 .vendor = "ST",
1829 .name = "M25P10-A",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001830 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001831 .manufacture_id = ST_ID,
1832 .model_id = ST_M25P10A,
1833 .total_size = 128,
1834 .page_size = 256,
1835 .tested = TEST_UNTESTED,
1836 .probe = probe_spi_rdid,
1837 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001838 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001839 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001840 },
1841
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001842 {
1843 .vendor = "ST",
1844 .name = "M25P20",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001845 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001846 .manufacture_id = ST_ID,
1847 .model_id = ST_M25P20,
1848 .total_size = 256,
1849 .page_size = 256,
1850 .tested = TEST_UNTESTED,
1851 .probe = probe_spi_rdid,
1852 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001853 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001854 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001855 },
1856
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001857 {
1858 .vendor = "ST",
1859 .name = "M25P40",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001860 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001861 .manufacture_id = ST_ID,
1862 .model_id = ST_M25P40,
1863 .total_size = 512,
1864 .page_size = 256,
1865 .tested = TEST_UNTESTED,
1866 .probe = probe_spi_rdid,
1867 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001868 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001869 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001870 },
1871
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001872 {
1873 .vendor = "ST",
1874 .name = "M25P40-old",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001875 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001876 .manufacture_id = ST_ID,
1877 .model_id = ST_M25P40_RES,
1878 .total_size = 512,
1879 .page_size = 256,
1880 .tested = TEST_UNTESTED,
1881 .probe = probe_spi_res,
1882 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001883 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001884 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001885 },
1886
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001887 {
1888 .vendor = "ST",
1889 .name = "M25P80",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001890 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001891 .manufacture_id = ST_ID,
1892 .model_id = ST_M25P80,
1893 .total_size = 1024,
1894 .page_size = 256,
1895 .tested = TEST_UNTESTED,
1896 .probe = probe_spi_rdid,
1897 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001898 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001899 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001900 },
1901
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001902 {
1903 .vendor = "ST",
1904 .name = "M25P16",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001905 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001906 .manufacture_id = ST_ID,
1907 .model_id = ST_M25P16,
1908 .total_size = 2048,
1909 .page_size = 256,
1910 .tested = TEST_OK_PREW,
1911 .probe = probe_spi_rdid,
1912 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001913 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001914 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001915 },
1916
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001917 {
1918 .vendor = "ST",
1919 .name = "M25P32",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001920 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001921 .manufacture_id = ST_ID,
1922 .model_id = ST_M25P32,
1923 .total_size = 4096,
1924 .page_size = 256,
1925 .tested = TEST_OK_PREW,
1926 .probe = probe_spi_rdid,
1927 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001928 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001929 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001930 },
1931
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001932 {
1933 .vendor = "ST",
1934 .name = "M25P64",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001935 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001936 .manufacture_id = ST_ID,
1937 .model_id = ST_M25P64,
1938 .total_size = 8192,
1939 .page_size = 256,
1940 .tested = TEST_UNTESTED,
1941 .probe = probe_spi_rdid,
1942 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001943 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001944 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001945 },
1946
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001947 {
1948 .vendor = "ST",
1949 .name = "M25P128",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001950 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001951 .manufacture_id = ST_ID,
1952 .model_id = ST_M25P128,
1953 .total_size = 16384,
1954 .page_size = 256,
1955 .tested = TEST_UNTESTED,
1956 .probe = probe_spi_rdid,
1957 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001958 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001959 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001960 },
1961
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001962 {
1963 .vendor = "ST",
1964 .name = "M29F002B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001965 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001966 .manufacture_id = ST_ID,
1967 .model_id = ST_M29F002B,
1968 .total_size = 256,
1969 .page_size = 64 * 1024,
1970 .tested = TEST_UNTESTED,
1971 .probe = probe_jedec,
Peter Stugeaf8ffac2009-01-26 06:42:02 +00001972 .erase = erase_m29f002,
1973 .write = write_m29f002b,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001974 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001975 },
1976
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001977 {
1978 .vendor = "ST",
1979 .name = "M29F002T/NT",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001980 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001981 .manufacture_id = ST_ID,
1982 .model_id = ST_M29F002T,
1983 .total_size = 256,
1984 .page_size = 64 * 1024,
Peter Stugeaf8ffac2009-01-26 06:42:02 +00001985 .tested = TEST_OK_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001986 .probe = probe_jedec,
Peter Stugeaf8ffac2009-01-26 06:42:02 +00001987 .erase = erase_m29f002,
1988 .write = write_m29f002t,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001989 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001990 },
1991
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001992 {
1993 .vendor = "ST",
1994 .name = "M29F040B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001995 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001996 .manufacture_id = ST_ID,
1997 .model_id = ST_M29F040B,
1998 .total_size = 512,
1999 .page_size = 64 * 1024,
2000 .tested = TEST_OK_PREW,
2001 .probe = probe_29f040b,
2002 .erase = erase_29f040b,
2003 .write = write_29f040b,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002004 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002005 },
2006
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002007 {
2008 .vendor = "ST",
2009 .name = "M29F400BT",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002010 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002011 .manufacture_id = ST_ID,
2012 .model_id = ST_M29F400BT,
2013 .total_size = 512,
2014 .page_size = 64 * 1024,
2015 .tested = TEST_UNTESTED,
2016 .probe = probe_m29f400bt,
2017 .erase = erase_m29f400bt,
2018 .write = write_coreboot_m29f400bt,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002019 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002020 },
2021
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002022 {
2023 .vendor = "ST",
2024 .name = "M29W010B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002025 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002026 .manufacture_id = ST_ID,
2027 .model_id = ST_M29W010B,
2028 .total_size = 128,
2029 .page_size = 16 * 1024,
2030 .tested = TEST_UNTESTED,
2031 .probe = probe_jedec,
2032 .erase = erase_chip_jedec,
2033 .write = write_jedec,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002034 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002035 },
2036
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002037 {
2038 .vendor = "ST",
2039 .name = "M29W040B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002040 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002041 .manufacture_id = ST_ID,
2042 .model_id = ST_M29W040B,
2043 .total_size = 512,
2044 .page_size = 64 * 1024,
2045 .tested = TEST_UNTESTED,
2046 .probe = probe_jedec,
2047 .erase = erase_chip_jedec,
2048 .write = write_jedec,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002049 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002050 },
2051
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002052 {
2053 .vendor = "ST",
2054 .name = "M50FLW040A",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002055 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002056 .manufacture_id = ST_ID,
2057 .model_id = ST_M50FLW040A,
2058 .total_size = 512,
2059 .page_size = 64 * 1024,
2060 .tested = TEST_UNTESTED,
2061 .probe = probe_stm50flw0x0x,
2062 .erase = erase_stm50flw0x0x,
2063 .write = write_stm50flw0x0x,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002064 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002065 },
2066
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002067 {
2068 .vendor = "ST",
2069 .name = "M50FLW040B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002070 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002071 .manufacture_id = ST_ID,
2072 .model_id = ST_M50FLW040B,
2073 .total_size = 512,
2074 .page_size = 64 * 1024,
2075 .tested = TEST_UNTESTED,
2076 .probe = probe_stm50flw0x0x,
2077 .erase = erase_stm50flw0x0x,
2078 .write = write_stm50flw0x0x,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002079 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002080 },
2081
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002082 {
2083 .vendor = "ST",
2084 .name = "M50FLW080A",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002085 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002086 .manufacture_id = ST_ID,
2087 .model_id = ST_M50FLW080A,
2088 .total_size = 1024,
2089 .page_size = 64 * 1024,
2090 .tested = TEST_OK_PREW,
2091 .probe = probe_stm50flw0x0x,
2092 .erase = erase_stm50flw0x0x,
2093 .write = write_stm50flw0x0x,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002094 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002095 },
2096
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002097 {
2098 .vendor = "ST",
2099 .name = "M50FLW080B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002100 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002101 .manufacture_id = ST_ID,
2102 .model_id = ST_M50FLW080B,
2103 .total_size = 1024,
2104 .page_size = 64 * 1024,
2105 .tested = TEST_UNTESTED,
2106 .probe = probe_stm50flw0x0x,
2107 .erase = erase_stm50flw0x0x,
2108 .write = write_stm50flw0x0x,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002109 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002110 },
2111
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002112 {
2113 .vendor = "ST",
2114 .name = "M50FW002",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002115 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002116 .manufacture_id = ST_ID,
2117 .model_id = ST_M50FW002,
2118 .total_size = 256,
2119 .page_size = 64 * 1024,
2120 .tested = TEST_UNTESTED,
2121 .probe = probe_49lfxxxc,
2122 .erase = NULL,
2123 .write = NULL,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002124 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002125 },
2126
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002127 {
2128 .vendor = "ST",
2129 .name = "M50FW016",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002130 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002131 .manufacture_id = ST_ID,
2132 .model_id = ST_M50FW016,
2133 .total_size = 2048,
2134 .page_size = 64 * 1024,
2135 .tested = TEST_UNTESTED,
2136 .probe = probe_82802ab,
2137 .erase = erase_82802ab,
2138 .write = write_82802ab,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002139 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002140 },
2141
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002142 {
2143 .vendor = "ST",
2144 .name = "M50FW040",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002145 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002146 .manufacture_id = ST_ID,
2147 .model_id = ST_M50FW040,
2148 .total_size = 512,
2149 .page_size = 64 * 1024,
2150 .tested = TEST_OK_PREW,
2151 .probe = probe_82802ab,
2152 .erase = erase_82802ab,
2153 .write = write_82802ab,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002154 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002155 },
2156
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002157 {
2158 .vendor = "ST",
2159 .name = "M50FW080",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002160 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002161 .manufacture_id = ST_ID,
2162 .model_id = ST_M50FW080,
2163 .total_size = 1024,
2164 .page_size = 64 * 1024,
Peter Stugea657e942009-01-24 23:01:08 +00002165 .tested = TEST_OK_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002166 .probe = probe_82802ab,
2167 .erase = erase_82802ab,
2168 .write = write_82802ab,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002169 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002170 },
2171
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002172 {
2173 .vendor = "ST",
2174 .name = "M50LPW116",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002175 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002176 .manufacture_id = ST_ID,
2177 .model_id = ST_M50LPW116,
2178 .total_size = 2048,
2179 .page_size = 64 * 1024,
2180 .tested = TEST_UNTESTED,
2181 .probe = probe_jedec,
2182 .erase = erase_chip_jedec,
2183 .write = write_jedec,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002184 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002185 },
2186
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002187 {
2188 .vendor = "SyncMOS",
2189 .name = "S29C31004T",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002190 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002191 .manufacture_id = SYNCMOS_ID,
2192 .model_id = S29C31004T,
2193 .total_size = 512,
2194 .page_size = 128,
2195 .tested = TEST_UNTESTED,
2196 .probe = probe_jedec,
2197 .erase = erase_chip_jedec,
2198 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002199 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002200 },
2201
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002202 {
2203 .vendor = "SyncMOS",
2204 .name = "S29C51001T",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002205 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002206 .manufacture_id = SYNCMOS_ID,
2207 .model_id = S29C51001T,
2208 .total_size = 128,
2209 .page_size = 128,
2210 .tested = TEST_UNTESTED,
2211 .probe = probe_jedec,
2212 .erase = erase_chip_jedec,
2213 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002214 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002215 },
2216
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002217 {
2218 .vendor = "SyncMOS",
2219 .name = "S29C51002T",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002220 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002221 .manufacture_id = SYNCMOS_ID,
2222 .model_id = S29C51002T,
2223 .total_size = 256,
2224 .page_size = 128,
2225 .tested = TEST_OK_PREW,
2226 .probe = probe_jedec,
2227 .erase = erase_chip_jedec,
2228 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002229 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002230 },
2231
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002232 {
2233 .vendor = "SyncMOS",
2234 .name = "S29C51004T",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002235 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002236 .manufacture_id = SYNCMOS_ID,
2237 .model_id = S29C51004T,
2238 .total_size = 512,
2239 .page_size = 128,
2240 .tested = TEST_UNTESTED,
2241 .probe = probe_jedec,
2242 .erase = erase_chip_jedec,
2243 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002244 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002245 },
2246
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002247 {
Uwe Hermanna106d152009-05-27 23:17:40 +00002248 .vendor = "TI",
Carl-Daniel Hailfinger09b4fb72009-05-26 21:26:23 +00002249 .name = "TMS29F002RB",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002250 .bustype = CHIP_BUSTYPE_NONSPI,
Carl-Daniel Hailfinger09b4fb72009-05-26 21:26:23 +00002251 .manufacture_id = TI_OLD_ID,
2252 .model_id = TI_TMS29F002RB,
2253 .total_size = 256,
2254 .page_size = 16384, /* Non-uniform sectors */
2255 .tested = TEST_UNTESTED,
2256 .probe = probe_jedec,
2257 .erase = NULL,
2258 .write = NULL,
2259 .read = read_memmapped,
2260 },
2261
2262 {
Uwe Hermanna106d152009-05-27 23:17:40 +00002263 .vendor = "TI",
Carl-Daniel Hailfinger09b4fb72009-05-26 21:26:23 +00002264 .name = "TMS29F002RT",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002265 .bustype = CHIP_BUSTYPE_NONSPI,
Carl-Daniel Hailfinger09b4fb72009-05-26 21:26:23 +00002266 .manufacture_id = TI_OLD_ID,
2267 .model_id = TI_TMS29F002RT,
2268 .total_size = 256,
2269 .page_size = 16384, /* Non-uniform sectors */
2270 .tested = TEST_UNTESTED,
2271 .probe = probe_jedec,
2272 .erase = NULL,
2273 .write = NULL,
2274 .read = read_memmapped,
2275 },
2276
2277 {
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002278 .vendor = "Winbond",
2279 .name = "W25x10",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002280 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002281 .manufacture_id = WINBOND_NEX_ID,
2282 .model_id = W_25X10,
2283 .total_size = 128,
2284 .page_size = 256,
2285 .tested = TEST_UNTESTED,
2286 .probe = probe_spi_rdid,
2287 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00002288 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002289 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00002290 },
2291
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002292 {
2293 .vendor = "Winbond",
2294 .name = "W25x20",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002295 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002296 .manufacture_id = WINBOND_NEX_ID,
2297 .model_id = W_25X20,
2298 .total_size = 256,
2299 .page_size = 256,
2300 .tested = TEST_UNTESTED,
2301 .probe = probe_spi_rdid,
2302 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00002303 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002304 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00002305 },
2306
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002307 {
2308 .vendor = "Winbond",
2309 .name = "W25x40",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002310 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002311 .manufacture_id = WINBOND_NEX_ID,
2312 .model_id = W_25X40,
2313 .total_size = 512,
2314 .page_size = 256,
2315 .tested = TEST_OK_PREW,
2316 .probe = probe_spi_rdid,
2317 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00002318 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002319 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00002320 },
2321
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002322 {
2323 .vendor = "Winbond",
2324 .name = "W25x80",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002325 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002326 .manufacture_id = WINBOND_NEX_ID,
2327 .model_id = W_25X80,
2328 .total_size = 1024,
2329 .page_size = 256,
2330 .tested = TEST_OK_PREW,
2331 .probe = probe_spi_rdid,
2332 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00002333 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002334 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00002335 },
2336
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002337 {
2338 .vendor = "Winbond",
2339 .name = "W29C011",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002340 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002341 .manufacture_id = WINBOND_ID,
2342 .model_id = W_29C011,
2343 .total_size = 128,
2344 .page_size = 128,
2345 .tested = TEST_OK_PREW,
2346 .probe = probe_jedec,
2347 .erase = erase_chip_jedec,
2348 .write = write_jedec,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002349 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002350 },
2351
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002352 {
2353 .vendor = "Winbond",
2354 .name = "W29C020C",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002355 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002356 .manufacture_id = WINBOND_ID,
2357 .model_id = W_29C020C,
2358 .total_size = 256,
2359 .page_size = 128,
2360 .tested = TEST_OK_PREW,
2361 .probe = probe_jedec,
2362 .erase = erase_chip_jedec,
2363 .write = write_jedec,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002364 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002365 },
2366
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002367 {
2368 .vendor = "Winbond",
2369 .name = "W29C040P",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002370 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002371 .manufacture_id = WINBOND_ID,
2372 .model_id = W_29C040P,
2373 .total_size = 512,
2374 .page_size = 256,
2375 .tested = TEST_UNTESTED,
2376 .probe = probe_jedec,
2377 .erase = erase_chip_jedec,
2378 .write = write_jedec,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002379 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002380 },
2381
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002382 {
2383 .vendor = "Winbond",
2384 .name = "W29EE011",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002385 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002386 .manufacture_id = WINBOND_ID,
2387 .model_id = W_29C011,
2388 .total_size = 128,
2389 .page_size = 128,
2390 .tested = TEST_OK_PREW,
2391 .probe = probe_w29ee011,
2392 .erase = erase_chip_jedec,
2393 .write = write_jedec,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002394 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002395 },
2396
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002397 {
2398 .vendor = "Winbond",
2399 .name = "W39V040A",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002400 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002401 .manufacture_id = WINBOND_ID,
2402 .model_id = W_39V040A,
2403 .total_size = 512,
2404 .page_size = 64*1024,
Uwe Hermann690bcba2009-05-21 17:11:25 +00002405 .tested = TEST_OK_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002406 .probe = probe_jedec,
2407 .erase = erase_chip_jedec,
Uwe Hermann24f9fbe2009-05-12 14:06:04 +00002408 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002409 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002410 },
2411
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002412 {
2413 .vendor = "Winbond",
2414 .name = "W39V040B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002415 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002416 .manufacture_id = WINBOND_ID,
2417 .model_id = W_39V040B,
2418 .total_size = 512,
2419 .page_size = 64*1024,
2420 .tested = TEST_OK_PREW,
2421 .probe = probe_jedec,
2422 .erase = erase_chip_jedec,
Uwe Hermann24f9fbe2009-05-12 14:06:04 +00002423 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002424 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002425 },
2426
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002427 {
2428 .vendor = "Winbond",
2429 .name = "W39V040C",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002430 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002431 .manufacture_id = WINBOND_ID,
2432 .model_id = 0x50,
2433 .total_size = 512,
2434 .page_size = 64*1024,
2435 .tested = TEST_OK_PREW,
2436 .probe = probe_w39v040c,
2437 .erase = erase_w39v040c,
2438 .write = write_w39v040c,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002439 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002440 },
2441
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002442 {
2443 .vendor = "Winbond",
2444 .name = "W39V040FA",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002445 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002446 .manufacture_id = WINBOND_ID,
2447 .model_id = W_39V040FA,
2448 .total_size = 512,
2449 .page_size = 64*1024,
2450 .tested = TEST_OK_PREW,
2451 .probe = probe_jedec,
2452 .erase = erase_chip_jedec,
Uwe Hermann24f9fbe2009-05-12 14:06:04 +00002453 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002454 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002455 },
2456
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002457 {
2458 .vendor = "Winbond",
2459 .name = "W39V080A",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002460 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002461 .manufacture_id = WINBOND_ID,
2462 .model_id = W_39V080A,
2463 .total_size = 1024,
2464 .page_size = 64*1024,
2465 .tested = TEST_OK_PREW,
2466 .probe = probe_jedec,
2467 .erase = erase_chip_jedec,
Uwe Hermann24f9fbe2009-05-12 14:06:04 +00002468 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002469 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002470 },
2471
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002472 {
2473 .vendor = "Winbond",
2474 .name = "W49F002U",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002475 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002476 .manufacture_id = WINBOND_ID,
2477 .model_id = W_49F002U,
2478 .total_size = 256,
2479 .page_size = 128,
2480 .tested = TEST_OK_PREW,
2481 .probe = probe_jedec,
2482 .erase = erase_chip_jedec,
2483 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002484 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002485 },
2486
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002487 {
2488 .vendor = "Winbond",
2489 .name = "W49V002A",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002490 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002491 .manufacture_id = WINBOND_ID,
2492 .model_id = W_49V002A,
2493 .total_size = 256,
2494 .page_size = 128,
2495 .tested = TEST_OK_PREW,
2496 .probe = probe_jedec,
2497 .erase = erase_chip_jedec,
2498 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002499 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002500 },
2501
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002502 {
2503 .vendor = "Winbond",
2504 .name = "W49V002FA",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002505 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002506 .manufacture_id = WINBOND_ID,
2507 .model_id = W_49V002FA,
2508 .total_size = 256,
2509 .page_size = 128,
2510 .tested = TEST_UNTESTED,
2511 .probe = probe_jedec,
2512 .erase = erase_chip_jedec,
2513 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002514 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002515 },
2516
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002517 {
2518 .vendor = "Winbond",
2519 .name = "W39V080FA",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002520 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002521 .manufacture_id = WINBOND_ID,
2522 .model_id = W_39V080FA,
2523 .total_size = 1024,
2524 .page_size = 64*1024,
2525 .tested = TEST_OK_PREW,
2526 .probe = probe_winbond_fwhub,
2527 .erase = erase_winbond_fwhub,
2528 .write = write_winbond_fwhub,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002529 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002530 },
2531
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002532 {
2533 .vendor = "Winbond",
2534 .name = "W39V080FA (dual mode)",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002535 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002536 .manufacture_id = WINBOND_ID,
2537 .model_id = W_39V080FA_DM,
2538 .total_size = 512,
2539 .page_size = 64*1024,
2540 .tested = TEST_UNTESTED,
2541 .probe = probe_winbond_fwhub,
2542 .erase = erase_winbond_fwhub,
2543 .write = write_winbond_fwhub,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002544 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002545 },
2546
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002547 {
2548 .vendor = "Atmel",
2549 .name = "unknown Atmel SPI chip",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002550 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002551 .manufacture_id = ATMEL_ID,
2552 .model_id = GENERIC_DEVICE_ID,
2553 .total_size = 0,
2554 .page_size = 256,
Carl-Daniel Hailfinger42882fd2009-04-22 13:33:43 +00002555 .tested = TEST_BAD_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002556 .probe = probe_spi_rdid,
2557 .erase = NULL,
2558 .write = NULL,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002559 .read = NULL,
FENG yu ningff692fb2008-12-08 18:15:10 +00002560 },
2561
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002562 {
2563 .vendor = "EON",
2564 .name = "unknown EON SPI chip",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002565 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002566 .manufacture_id = EON_ID_NOPREFIX,
2567 .model_id = GENERIC_DEVICE_ID,
2568 .total_size = 0,
2569 .page_size = 256,
Carl-Daniel Hailfinger42882fd2009-04-22 13:33:43 +00002570 .tested = TEST_BAD_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002571 .probe = probe_spi_rdid,
2572 .erase = NULL,
2573 .write = NULL,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002574 .read = NULL,
FENG yu ningff692fb2008-12-08 18:15:10 +00002575 },
2576
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002577 {
2578 .vendor = "Macronix",
2579 .name = "unknown Macronix SPI chip",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002580 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002581 .manufacture_id = MX_ID,
2582 .model_id = GENERIC_DEVICE_ID,
2583 .total_size = 0,
2584 .page_size = 256,
Carl-Daniel Hailfinger42882fd2009-04-22 13:33:43 +00002585 .tested = TEST_BAD_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002586 .probe = probe_spi_rdid,
2587 .erase = NULL,
2588 .write = NULL,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002589 .read = NULL,
FENG yu ningff692fb2008-12-08 18:15:10 +00002590 },
2591
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002592 {
2593 .vendor = "PMC",
2594 .name = "unknown PMC SPI chip",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002595 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002596 .manufacture_id = PMC_ID,
2597 .model_id = GENERIC_DEVICE_ID,
2598 .total_size = 0,
2599 .page_size = 256,
Carl-Daniel Hailfinger42882fd2009-04-22 13:33:43 +00002600 .tested = TEST_BAD_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002601 .probe = probe_spi_rdid,
2602 .erase = NULL,
2603 .write = NULL,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002604 .read = NULL,
FENG yu ningff692fb2008-12-08 18:15:10 +00002605 },
2606
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002607 {
2608 .vendor = "SST",
2609 .name = "unknown SST SPI chip",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002610 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002611 .manufacture_id = SST_ID,
2612 .model_id = GENERIC_DEVICE_ID,
2613 .total_size = 0,
2614 .page_size = 256,
Carl-Daniel Hailfinger42882fd2009-04-22 13:33:43 +00002615 .tested = TEST_BAD_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002616 .probe = probe_spi_rdid,
2617 .erase = NULL,
2618 .write = NULL,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002619 .read = NULL,
FENG yu ningff692fb2008-12-08 18:15:10 +00002620 },
2621
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002622 {
2623 .vendor = "ST",
2624 .name = "unknown ST SPI chip",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002625 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002626 .manufacture_id = ST_ID,
2627 .model_id = GENERIC_DEVICE_ID,
2628 .total_size = 0,
2629 .page_size = 256,
Carl-Daniel Hailfinger42882fd2009-04-22 13:33:43 +00002630 .tested = TEST_BAD_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002631 .probe = probe_spi_rdid,
2632 .erase = NULL,
2633 .write = NULL,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002634 .read = NULL,
FENG yu ningff692fb2008-12-08 18:15:10 +00002635 },
Uwe Hermannfc425e82008-03-16 02:06:25 +00002636
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002637 { NULL }
Stephan Guilloux72cf5652009-04-21 01:46:07 +00002638};