blob: ccd7a2102979e70bd01bb897a06372a762f376fb [file] [log] [blame]
Ollie Lho184a4042005-11-26 21:55:36 +00001/*
Uwe Hermannd1107642007-08-29 17:52:32 +00002 * This file is part of the flashrom project.
Ollie Lho184a4042005-11-26 21:55:36 +00003 *
Uwe Hermannd22a1d42007-09-09 20:21:05 +00004 * Copyright (C) 2000 Silicon Integrated System Corporation
5 * Copyright (C) 2004 Tyan Corp
Stefan Reinauer4c390c82008-07-02 13:33:09 +00006 * Copyright (C) 2005-2008 coresystems GmbH <stepan@openbios.org>
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +00007 * Copyright (C) 2006-2009 Carl-Daniel Hailfinger
Uwe Hermannd1107642007-08-29 17:52:32 +00008 *
Stefan Reinauerce532972007-05-23 17:20:56 +00009 * This program is free software; you can redistribute it and/or modify
10 * it under the terms of the GNU General Public License as published by
11 * the Free Software Foundation; either version 2 of the License, or
12 * (at your option) any later version.
Ollie Lho184a4042005-11-26 21:55:36 +000013 *
Stefan Reinauerce532972007-05-23 17:20:56 +000014 * This program is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 * GNU General Public License for more details.
Ollie Lho184a4042005-11-26 21:55:36 +000018 *
Stefan Reinauerce532972007-05-23 17:20:56 +000019 * You should have received a copy of the GNU General Public License
20 * along with this program; if not, write to the Free Software
Uwe Hermannd1107642007-08-29 17:52:32 +000021 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Ollie Lho184a4042005-11-26 21:55:36 +000022 */
23
24#include "flash.h"
Ollie Lho184a4042005-11-26 21:55:36 +000025
Uwe Hermannfc425e82008-03-16 02:06:25 +000026/**
Uwe Hermanna9720402009-05-21 15:55:46 +000027 * List of supported flash chips.
Uwe Hermannfc425e82008-03-16 02:06:25 +000028 *
29 * Please keep the list sorted by vendor name and chip name, so that
30 * the output of 'flashrom -L' is alphabetically sorted.
31 */
Ollie Lho184a4042005-11-26 21:55:36 +000032struct flashchip flashchips[] = {
Uwe Hermannfc425e82008-03-16 02:06:25 +000033
FENG yu ningff692fb2008-12-08 18:15:10 +000034 /* Vendor, Chip, Vendor ID, Chip ID,
Maciej Pijankac6e11112009-06-03 14:46:22 +000035 * Bus Type,
FENG yu ningff692fb2008-12-08 18:15:10 +000036 * Total size (kB), Page size (B),
37 * Test status,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +000038 * Probe function, Probe function timing, Erase function, Write function, Read function
FENG yu ningff692fb2008-12-08 18:15:10 +000039 */
40
Stephan Guilloux5c5b5252009-01-08 03:40:17 +000041 {
42 .vendor = "AMD",
43 .name = "Am29F002(N)BB",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +000044 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +000045 .manufacture_id = AMD_ID,
46 .model_id = AM_29F002BB,
47 .total_size = 256,
48 .page_size = 256,
49 .tested = TEST_UNTESTED,
50 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +000051 .probe_timing = TIMING_FIXME,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +000052 .erase = erase_chip_jedec,
53 .write = write_en29f002a,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +000054 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +000055 },
56
Stephan Guilloux5c5b5252009-01-08 03:40:17 +000057 {
58 .vendor = "AMD",
59 .name = "Am29F002(N)BT",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +000060 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +000061 .manufacture_id = AMD_ID,
62 .model_id = AM_29F002BT,
63 .total_size = 256,
64 .page_size = 256,
65 .tested = TEST_OK_PREW,
66 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +000067 .probe_timing = TIMING_FIXME,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +000068 .erase = erase_chip_jedec,
69 .write = write_en29f002a,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +000070 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +000071 },
72
Stephan Guilloux5c5b5252009-01-08 03:40:17 +000073 {
74 .vendor = "AMD",
75 .name = "Am29F016D",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +000076 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +000077 .manufacture_id = AMD_ID,
78 .model_id = AM_29F016D,
79 .total_size = 2048,
80 .page_size = 64 * 1024,
81 .tested = TEST_UNTESTED,
82 .probe = probe_29f040b,
Maciej Pijankac6e11112009-06-03 14:46:22 +000083 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (am29f040b.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +000084 .erase = erase_29f040b,
85 .write = write_29f040b,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +000086 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +000087 },
88
Stephan Guilloux5c5b5252009-01-08 03:40:17 +000089 {
90 .vendor = "AMD",
91 .name = "Am29F040B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +000092 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +000093 .manufacture_id = AMD_ID,
94 .model_id = AM_29F040B,
95 .total_size = 512,
96 .page_size = 64 * 1024,
97 .tested = TEST_OK_PREW,
98 .probe = probe_29f040b,
Maciej Pijankac6e11112009-06-03 14:46:22 +000099 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (am29f040b.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000100 .erase = erase_29f040b,
101 .write = write_29f040b,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +0000102 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +0000103 },
104
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000105 {
106 .vendor = "AMD",
Peter Stuge8440cc02009-01-25 23:55:12 +0000107 .name = "Am29F080B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000108 .bustype = CHIP_BUSTYPE_NONSPI,
Mateusz Murawski5bae4382009-06-02 00:38:14 +0000109 .manufacture_id = AMD_ID,
110 .model_id = AM_29F080B,
Peter Stuge8440cc02009-01-25 23:55:12 +0000111 .total_size = 1024,
112 .page_size = 64 * 1024,
113 .tested = TEST_UNTESTED,
114 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +0000115 .probe_timing = TIMING_FIXME,
Peter Stuge8440cc02009-01-25 23:55:12 +0000116 .erase = erase_29f040b,
117 .write = write_29f040b,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +0000118 .read = read_memmapped,
Peter Stuge8440cc02009-01-25 23:55:12 +0000119 },
120
121 {
122 .vendor = "AMD",
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000123 .name = "Am29LV040B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000124 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000125 .manufacture_id = AMD_ID,
126 .model_id = AM_29LV040B,
127 .total_size = 512,
128 .page_size = 64 * 1024,
129 .tested = TEST_UNTESTED,
130 .probe = probe_29f040b,
Maciej Pijankac6e11112009-06-03 14:46:22 +0000131 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (am29f040b.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000132 .erase = erase_29f040b,
133 .write = write_29f040b,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +0000134 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +0000135 },
136
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000137 {
Peter Stuge8440cc02009-01-25 23:55:12 +0000138 .vendor = "AMD",
139 .name = "Am29LV081B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000140 .bustype = CHIP_BUSTYPE_NONSPI,
Mateusz Murawski5bae4382009-06-02 00:38:14 +0000141 .manufacture_id = AMD_ID,
142 .model_id = AM_29LV081B,
Peter Stuge8440cc02009-01-25 23:55:12 +0000143 .total_size = 1024,
144 .page_size = 64 * 1024,
145 .tested = TEST_UNTESTED,
146 .probe = probe_29f040b,
Maciej Pijankac6e11112009-06-03 14:46:22 +0000147 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (am29f040b.c) */
Peter Stuge8440cc02009-01-25 23:55:12 +0000148 .erase = erase_29f040b,
149 .write = write_29f040b,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +0000150 .read = read_memmapped,
Peter Stuge8440cc02009-01-25 23:55:12 +0000151 },
152
153 {
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000154 .vendor = "ASD",
155 .name = "AE49F2008",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000156 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000157 .manufacture_id = ASD_ID,
158 .model_id = ASD_AE49F2008,
159 .total_size = 256,
160 .page_size = 128,
161 .tested = TEST_UNTESTED,
162 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +0000163 .probe_timing = TIMING_FIXME,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000164 .erase = erase_chip_jedec,
165 .write = write_jedec,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +0000166 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +0000167 },
168
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000169 {
170 .vendor = "Atmel",
171 .name = "AT25DF021",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000172 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000173 .manufacture_id = ATMEL_ID,
174 .model_id = AT_25DF021,
175 .total_size = 256,
176 .page_size = 256,
177 .tested = TEST_UNTESTED,
178 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +0000179 .probe_timing = TIMING_ZERO,
Carl-Daniel Hailfingerf8bc28f2009-01-08 16:53:13 +0000180 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +0000181 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000182 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000183 },
184
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000185 {
186 .vendor = "Atmel",
187 .name = "AT25DF041A",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000188 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000189 .manufacture_id = ATMEL_ID,
190 .model_id = AT_25DF041A,
191 .total_size = 512,
192 .page_size = 256,
193 .tested = TEST_UNTESTED,
194 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +0000195 .probe_timing = TIMING_ZERO,
Carl-Daniel Hailfingerf8bc28f2009-01-08 16:53:13 +0000196 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +0000197 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000198 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000199 },
200
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000201 {
202 .vendor = "Atmel",
203 .name = "AT25DF081",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000204 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000205 .manufacture_id = ATMEL_ID,
206 .model_id = AT_25DF081,
207 .total_size = 1024,
208 .page_size = 256,
209 .tested = TEST_UNTESTED,
210 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +0000211 .probe_timing = TIMING_ZERO,
Carl-Daniel Hailfingerf8bc28f2009-01-08 16:53:13 +0000212 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +0000213 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000214 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000215 },
216
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000217 {
218 .vendor = "Atmel",
219 .name = "AT25DF161",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000220 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000221 .manufacture_id = ATMEL_ID,
222 .model_id = AT_25DF161,
223 .total_size = 2048,
224 .page_size = 256,
225 .tested = TEST_UNTESTED,
226 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +0000227 .probe_timing = TIMING_ZERO,
Carl-Daniel Hailfingerf8bc28f2009-01-08 16:53:13 +0000228 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +0000229 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000230 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000231 },
232
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000233 {
234 .vendor = "Atmel",
235 .name = "AT25DF321",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000236 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000237 .manufacture_id = ATMEL_ID,
238 .model_id = AT_25DF321,
239 .total_size = 4096,
240 .page_size = 256,
241 .tested = TEST_OK_PREW,
242 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +0000243 .probe_timing = TIMING_ZERO,
Carl-Daniel Hailfingerf8bc28f2009-01-08 16:53:13 +0000244 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +0000245 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000246 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000247 },
248
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000249 {
250 .vendor = "Atmel",
251 .name = "AT25DF321A",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000252 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000253 .manufacture_id = ATMEL_ID,
254 .model_id = AT_25DF321A,
255 .total_size = 4096,
256 .page_size = 256,
257 .tested = TEST_UNTESTED,
258 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +0000259 .probe_timing = TIMING_ZERO,
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 = "AT25DF641",
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_25DF641,
271 .total_size = 8192,
272 .page_size = 256,
273 .tested = TEST_UNTESTED,
274 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +0000275 .probe_timing = TIMING_ZERO,
Carl-Daniel Hailfingerf8bc28f2009-01-08 16:53:13 +0000276 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +0000277 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000278 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000279 },
280
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000281 {
282 .vendor = "Atmel",
283 .name = "AT25F512B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000284 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000285 .manufacture_id = ATMEL_ID,
286 .model_id = AT_25F512B,
287 .total_size = 64,
288 .page_size = 256,
289 .tested = TEST_UNTESTED,
290 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +0000291 .probe_timing = TIMING_ZERO,
Carl-Daniel Hailfingerf8bc28f2009-01-08 16:53:13 +0000292 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +0000293 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000294 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000295 },
296
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000297 {
298 .vendor = "Atmel",
299 .name = "AT25FS010",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000300 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000301 .manufacture_id = ATMEL_ID,
302 .model_id = AT_25FS010,
303 .total_size = 128,
304 .page_size = 256,
305 .tested = TEST_UNTESTED,
306 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +0000307 .probe_timing = TIMING_ZERO,
Carl-Daniel Hailfingerf8bc28f2009-01-08 16:53:13 +0000308 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +0000309 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000310 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000311 },
312
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000313 {
314 .vendor = "Atmel",
315 .name = "AT25FS040",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000316 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000317 .manufacture_id = ATMEL_ID,
318 .model_id = AT_25FS040,
319 .total_size = 512,
320 .page_size = 256,
321 .tested = TEST_UNTESTED,
322 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +0000323 .probe_timing = TIMING_ZERO,
Carl-Daniel Hailfingerf8bc28f2009-01-08 16:53:13 +0000324 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +0000325 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000326 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000327 },
328
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000329 {
330 .vendor = "Atmel",
331 .name = "AT26DF041",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000332 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000333 .manufacture_id = ATMEL_ID,
334 .model_id = AT_26DF041,
335 .total_size = 512,
336 .page_size = 256,
337 .tested = TEST_UNTESTED,
338 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +0000339 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000340 .erase = NULL,
341 .write = NULL /* Incompatible Page write */,
342 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000343 },
344
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000345 {
346 .vendor = "Atmel",
347 .name = "AT26DF081A",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000348 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000349 .manufacture_id = ATMEL_ID,
350 .model_id = AT_26DF081A,
351 .total_size = 1024,
352 .page_size = 256,
353 .tested = TEST_UNTESTED,
354 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +0000355 .probe_timing = TIMING_ZERO,
Carl-Daniel Hailfingerf8bc28f2009-01-08 16:53:13 +0000356 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +0000357 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000358 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000359 },
360
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000361 {
362 .vendor = "Atmel",
363 .name = "AT26DF161",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000364 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000365 .manufacture_id = ATMEL_ID,
366 .model_id = AT_26DF161,
367 .total_size = 2048,
368 .page_size = 256,
369 .tested = TEST_UNTESTED,
370 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +0000371 .probe_timing = TIMING_ZERO,
Carl-Daniel Hailfingerf8bc28f2009-01-08 16:53:13 +0000372 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +0000373 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000374 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000375 },
376
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000377 {
378 .vendor = "Atmel",
379 .name = "AT26DF161A",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000380 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000381 .manufacture_id = ATMEL_ID,
382 .model_id = AT_26DF161A,
383 .total_size = 2048,
384 .page_size = 256,
385 .tested = TEST_UNTESTED,
386 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +0000387 .probe_timing = TIMING_ZERO,
Carl-Daniel Hailfingerf8bc28f2009-01-08 16:53:13 +0000388 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +0000389 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000390 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000391 },
392
393 /*The AT26DF321 has the same ID as the AT25DF321. */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000394 /*{
395 .vendor = "Atmel",
396 .name = "AT26DF321",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000397 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000398 .manufacture_id = ATMEL_ID,
399 .model_id = AT_26DF321,
400 .total_size = 4096,
401 .page_size = 256,
402 .tested = TEST_UNTESTED,
403 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +0000404 .probe_timing = TIMING_ZERO,
Carl-Daniel Hailfingerf8bc28f2009-01-08 16:53:13 +0000405 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +0000406 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000407 .read = spi_chip_read,
408 },*/
FENG yu ningff692fb2008-12-08 18:15:10 +0000409
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000410 {
411 .vendor = "Atmel",
412 .name = "AT26F004",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000413 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000414 .manufacture_id = ATMEL_ID,
415 .model_id = AT_26F004,
416 .total_size = 512,
417 .page_size = 256,
418 .tested = TEST_UNTESTED,
419 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +0000420 .probe_timing = TIMING_ZERO,
Carl-Daniel Hailfingerf8bc28f2009-01-08 16:53:13 +0000421 .erase = spi_chip_erase_60_c7,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000422 .write = NULL /* Incompatible Page write */,
423 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000424 },
425
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000426 {
427 .vendor = "Atmel",
Maciej Pijankabc2bbd22009-06-02 16:45:59 +0000428 .name = "AT29C512",
429 .bustype = CHIP_BUSTYPE_NONSPI,
430 .manufacture_id = ATMEL_ID,
431 .model_id = AT_29C512,
432 .total_size = 64,
433 .page_size = 128,
434 .tested = TEST_OK_PREW,
Maciej Pijankac6e11112009-06-03 14:46:22 +0000435 .probe = probe_jedec,
436 .probe_timing = 10000, /* 10mS, Enter=Exec */
Maciej Pijankabc2bbd22009-06-02 16:45:59 +0000437 .erase = erase_chip_jedec,
438 .write = write_jedec,
439 .read = read_memmapped,
440
441 },
442
443 {
444 .vendor = "Atmel",
Uwe Hermann8403ccb2009-05-16 21:39:19 +0000445 .name = "AT29C010A",
Urja Rannikko161b8852009-06-05 08:47:37 +0000446 .bustype = CHIP_BUSTYPE_PARALLEL,
Uwe Hermann8403ccb2009-05-16 21:39:19 +0000447 .manufacture_id = ATMEL_ID,
448 .model_id = AT_29C010A,
449 .total_size = 128,
450 .page_size = 128,
451 .tested = TEST_OK_PRE,
452 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +0000453 .probe_timing = 10000, /* 10mS, Enter=Exec */
Uwe Hermann8403ccb2009-05-16 21:39:19 +0000454 .erase = erase_chip_jedec,
455 .write = write_jedec, /* FIXME */
456 .read = read_memmapped,
457 },
458
459 {
460 .vendor = "Atmel",
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000461 .name = "AT29C020",
Urja Rannikko161b8852009-06-05 08:47:37 +0000462 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000463 .manufacture_id = ATMEL_ID,
464 .model_id = AT_29C020,
465 .total_size = 256,
466 .page_size = 256,
467 .tested = TEST_OK_PREW,
468 .probe = probe_jedec,
Mateusz Murawski8b2f46b2009-06-12 21:29:36 +0000469 .probe_timing = 10000, /* 10ms */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000470 .erase = erase_chip_jedec,
471 .write = write_jedec,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +0000472 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +0000473 },
474
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000475 {
476 .vendor = "Atmel",
477 .name = "AT29C040A",
Urja Rannikko161b8852009-06-05 08:47:37 +0000478 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000479 .manufacture_id = ATMEL_ID,
480 .model_id = AT_29C040A,
481 .total_size = 512,
482 .page_size = 256,
483 .tested = TEST_UNTESTED,
484 .probe = probe_jedec,
Mateusz Murawski8b2f46b2009-06-12 21:29:36 +0000485 .probe_timing = 10000, /* 10 ms */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000486 .erase = erase_chip_jedec,
487 .write = write_jedec,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +0000488 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +0000489 },
490
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000491 {
492 .vendor = "Atmel",
493 .name = "AT45CS1282",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000494 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000495 .manufacture_id = ATMEL_ID,
496 .model_id = AT_45CS1282,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000497 .total_size = 16896 /* No power of two sizes */,
498 .page_size = 1056 /* No power of two sizes */,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000499 .tested = TEST_BAD_READ,
500 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +0000501 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000502 .erase = NULL,
503 .write = NULL /* Incompatible Page write */,
504 .read = NULL /* Incompatible read */,
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 = "AT45DB011D",
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_45DB011D,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000513 .total_size = 128 /* 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,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +0000517 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000518 .erase = NULL,
519 .write = NULL,
520 .read = NULL,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000521 },
FENG yu ningff692fb2008-12-08 18:15:10 +0000522
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000523 {
524 .vendor = "Atmel",
525 .name = "AT45DB021D",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000526 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000527 .manufacture_id = ATMEL_ID,
528 .model_id = AT_45DB021D,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000529 .total_size = 256 /* Size can only be determined from status register */,
530 .page_size = 256 /* Size can only be determined from status register */,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000531 .tested = TEST_BAD_READ,
532 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +0000533 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000534 .erase = NULL,
535 .write = NULL,
536 .read = NULL,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000537 },
FENG yu ningff692fb2008-12-08 18:15:10 +0000538
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000539 {
540 .vendor = "Atmel",
541 .name = "AT45DB041D",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000542 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000543 .manufacture_id = ATMEL_ID,
544 .model_id = AT_45DB041D,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000545 .total_size = 512 /* Size can only be determined from status register */,
546 .page_size = 256 /* Size can only be determined from status register */,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000547 .tested = TEST_BAD_READ,
548 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +0000549 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000550 .erase = NULL,
551 .write = NULL,
552 .read = NULL,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000553 },
FENG yu ningff692fb2008-12-08 18:15:10 +0000554
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000555 {
556 .vendor = "Atmel",
557 .name = "AT45DB081D",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000558 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000559 .manufacture_id = ATMEL_ID,
560 .model_id = AT_45DB081D,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000561 .total_size = 1024 /* Size can only be determined from status register */,
562 .page_size = 256 /* Size can only be determined from status register */,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000563 .tested = TEST_BAD_READ,
564 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +0000565 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000566 .erase = NULL,
567 .write = NULL,
568 .read = NULL,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000569 },
FENG yu ningff692fb2008-12-08 18:15:10 +0000570
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000571 {
572 .vendor = "Atmel",
573 .name = "AT45DB161D",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000574 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000575 .manufacture_id = ATMEL_ID,
576 .model_id = AT_45DB161D,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000577 .total_size = 2048 /* Size can only be determined from status register */,
578 .page_size = 512 /* Size can only be determined from status register */,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000579 .tested = TEST_BAD_READ,
580 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +0000581 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000582 .erase = NULL,
583 .write = NULL,
584 .read = NULL,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000585 },
FENG yu ningff692fb2008-12-08 18:15:10 +0000586
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000587 {
588 .vendor = "Atmel",
589 .name = "AT45DB321C",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000590 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000591 .manufacture_id = ATMEL_ID,
592 .model_id = AT_45DB321C,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000593 .total_size = 4224 /* No power of two sizes */,
594 .page_size = 528 /* No power of two sizes */,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000595 .tested = TEST_BAD_READ,
596 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +0000597 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000598 .erase = NULL,
599 .write = NULL,
600 .read = NULL /* Incompatible read */,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000601 },
FENG yu ningff692fb2008-12-08 18:15:10 +0000602
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000603 {
604 .vendor = "Atmel",
605 .name = "AT45DB321D",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000606 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000607 .manufacture_id = ATMEL_ID,
608 .model_id = AT_45DB321D,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000609 .total_size = 4096 /* Size can only be determined from status register */,
610 .page_size = 512 /* Size can only be determined from status register */,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000611 .tested = TEST_BAD_READ,
612 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +0000613 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000614 .erase = NULL,
615 .write = NULL,
616 .read = NULL,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000617 },
FENG yu ningff692fb2008-12-08 18:15:10 +0000618
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000619 {
620 .vendor = "Atmel",
621 .name = "AT45DB642D",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000622 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000623 .manufacture_id = ATMEL_ID,
624 .model_id = AT_45DB642D,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000625 .total_size = 8192 /* Size can only be determined from status register */,
626 .page_size = 1024 /* Size can only be determined from status register */,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000627 .tested = TEST_BAD_READ,
628 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +0000629 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000630 .erase = NULL,
631 .write = NULL,
632 .read = NULL,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000633 },
FENG yu ningff692fb2008-12-08 18:15:10 +0000634
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000635 {
636 .vendor = "Atmel",
Uwe Hermannb4dcb712009-05-13 11:36:06 +0000637 .name = "AT49BV512",
Urja Rannikko161b8852009-06-05 08:47:37 +0000638 .bustype = CHIP_BUSTYPE_PARALLEL,
Uwe Hermannb4dcb712009-05-13 11:36:06 +0000639 .manufacture_id = ATMEL_ID,
640 .model_id = AT_49BV512,
641 .total_size = 64,
642 .page_size = 64,
643 .tested = TEST_OK_PREW,
644 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +0000645 .probe_timing = TIMING_FIXME,
Uwe Hermannb4dcb712009-05-13 11:36:06 +0000646 .erase = erase_chip_jedec,
647 .write = write_49f002,
648 .read = read_memmapped,
649 },
650
651 {
652 .vendor = "Atmel",
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000653 .name = "AT49F002(N)",
Urja Rannikko161b8852009-06-05 08:47:37 +0000654 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000655 .manufacture_id = ATMEL_ID,
656 .model_id = AT_49F002N,
657 .total_size = 256,
658 .page_size = 256,
659 .tested = TEST_UNTESTED,
660 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +0000661 .probe_timing = TIMING_FIXME, /* doc1008.pdf dont says anything about probe timing */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000662 .erase = erase_chip_jedec,
663 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +0000664 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +0000665 },
666
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000667 {
668 .vendor = "Atmel",
669 .name = "AT49F002(N)T",
Urja Rannikko161b8852009-06-05 08:47:37 +0000670 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000671 .manufacture_id = ATMEL_ID,
672 .model_id = AT_49F002NT,
673 .total_size = 256,
674 .page_size = 256,
675 .tested = TEST_OK_PREW,
676 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +0000677 .probe_timing = TIMING_FIXME, /* doc1008.pdf dont says anything about probe timing */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000678 .erase = erase_chip_jedec,
679 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +0000680 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +0000681 },
682
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000683 {
684 .vendor = "AMIC",
685 .name = "A25L40P",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000686 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000687 .manufacture_id = AMIC_ID,
688 .model_id = AMIC_A25L40P,
689 .total_size = 512,
690 .page_size = 256,
691 .tested = TEST_OK_PREW,
692 .probe = probe_spi_rdid4,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +0000693 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000694 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +0000695 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000696 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000697 },
698
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000699 {
700 .vendor = "AMIC",
701 .name = "A29002B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000702 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000703 .manufacture_id = AMIC_ID_NOPREFIX,
704 .model_id = AMIC_A29002B,
705 .total_size = 256,
706 .page_size = 64 * 1024,
707 .tested = TEST_UNTESTED,
708 .probe = probe_29f002,
Maciej Pijankac6e11112009-06-03 14:46:22 +0000709 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (mx29f002.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000710 .erase = erase_29f002,
711 .write = write_29f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +0000712 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +0000713 },
714
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000715 {
716 .vendor = "AMIC",
717 .name = "A29002T",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000718 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000719 .manufacture_id = AMIC_ID_NOPREFIX,
720 .model_id = AMIC_A29002T,
721 .total_size = 256,
722 .page_size = 64 * 1024,
723 .tested = TEST_OK_PREW,
724 .probe = probe_29f002,
Maciej Pijankac6e11112009-06-03 14:46:22 +0000725 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (mx29f002.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000726 .erase = erase_29f002,
727 .write = write_29f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +0000728 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +0000729 },
730
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000731 {
732 .vendor = "AMIC",
733 .name = "A29040B",
Urja Rannikko161b8852009-06-05 08:47:37 +0000734 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000735 .manufacture_id = AMIC_ID_NOPREFIX,
736 .model_id = AMIC_A29040B,
737 .total_size = 512,
738 .page_size = 64 * 1024,
739 .tested = TEST_OK_PR,
740 .probe = probe_29f040b,
Maciej Pijankac6e11112009-06-03 14:46:22 +0000741 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (am29f040b.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000742 .erase = erase_29f040b,
743 .write = write_29f040b,
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 = "AMIC",
749 .name = "A49LF040A",
Urja Rannikko161b8852009-06-05 08:47:37 +0000750 .bustype = CHIP_BUSTYPE_LPC,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000751 .manufacture_id = AMIC_ID_NOPREFIX,
752 .model_id = AMIC_A49LF040A,
753 .total_size = 512,
754 .page_size = 64 * 1024,
755 .tested = TEST_OK_PREW,
756 .probe = probe_49fl00x,
Maciej Pijankac6e11112009-06-03 14:46:22 +0000757 .probe_timing = TIMING_FIXME, /* routine is wrapper to probe_jedec (pm49fl00x.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000758 .erase = erase_49fl00x,
759 .write = write_49fl00x,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +0000760 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +0000761 },
762
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000763 {
764 .vendor = "EMST",
765 .name = "F49B002UA",
Urja Rannikko161b8852009-06-05 08:47:37 +0000766 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000767 .manufacture_id = EMST_ID,
768 .model_id = EMST_F49B002UA,
769 .total_size = 256,
770 .page_size = 4096,
771 .tested = TEST_UNTESTED,
772 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +0000773 .probe_timing = TIMING_FIXME,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000774 .erase = erase_chip_jedec,
775 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +0000776 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +0000777 },
778
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000779 {
Carl-Daniel Hailfinger80243c92009-06-05 20:53:07 +0000780 .vendor = "Eon",
781 .name = "EN25B05",
782 .bustype = CHIP_BUSTYPE_SPI,
783 .manufacture_id = EON_ID,
784 .model_id = EN_25B05,
785 .total_size = 64,
786 .page_size = 256,
787 .tested = TEST_UNTESTED,
788 .probe = probe_spi_rdid,
789 .probe_timing = TIMING_ZERO,
790 .erase = spi_chip_erase_c7,
791 .write = spi_chip_write_256,
792 .read = spi_chip_read,
793 },
794
795 {
796 .vendor = "Eon",
797 .name = "EN25B10",
798 .bustype = CHIP_BUSTYPE_SPI,
799 .manufacture_id = EON_ID,
800 .model_id = EN_25B10,
801 .total_size = 128,
802 .page_size = 256,
803 .tested = TEST_UNTESTED,
804 .probe = probe_spi_rdid,
805 .probe_timing = TIMING_ZERO,
806 .erase = spi_chip_erase_c7,
807 .write = spi_chip_write_256,
808 .read = spi_chip_read,
809 },
810
811 {
812 .vendor = "Eon",
813 .name = "EN25B20",
814 .bustype = CHIP_BUSTYPE_SPI,
815 .manufacture_id = EON_ID,
816 .model_id = EN_25B20,
817 .total_size = 256,
818 .page_size = 256,
819 .tested = TEST_UNTESTED,
820 .probe = probe_spi_rdid,
821 .probe_timing = TIMING_ZERO,
822 .erase = spi_chip_erase_c7,
823 .write = spi_chip_write_256,
824 .read = spi_chip_read,
825 },
826
827 {
828 .vendor = "Eon",
829 .name = "EN25B40",
830 .bustype = CHIP_BUSTYPE_SPI,
831 .manufacture_id = EON_ID,
832 .model_id = EN_25B40,
833 .total_size = 512,
834 .page_size = 256,
835 .tested = TEST_UNTESTED,
836 .probe = probe_spi_rdid,
837 .probe_timing = TIMING_ZERO,
838 .erase = spi_chip_erase_c7,
839 .write = spi_chip_write_256,
840 .read = spi_chip_read,
841 },
842
843 {
844 .vendor = "Eon",
845 .name = "EN25B80",
846 .bustype = CHIP_BUSTYPE_SPI,
847 .manufacture_id = EON_ID,
848 .model_id = EN_25B80,
849 .total_size = 1024,
850 .page_size = 256,
851 .tested = TEST_UNTESTED,
852 .probe = probe_spi_rdid,
853 .probe_timing = TIMING_ZERO,
854 .erase = spi_chip_erase_c7,
855 .write = spi_chip_write_256,
856 .read = spi_chip_read,
857 },
858
859 {
860 .vendor = "Eon",
861 .name = "EN25B16",
862 .bustype = CHIP_BUSTYPE_SPI,
863 .manufacture_id = EON_ID,
864 .model_id = EN_25B16,
865 .total_size = 2048,
866 .page_size = 256,
867 .tested = TEST_UNTESTED,
868 .probe = probe_spi_rdid,
869 .probe_timing = TIMING_ZERO,
870 .erase = spi_chip_erase_c7,
871 .write = spi_chip_write_256,
872 .read = spi_chip_read,
873 },
874
875 {
876 .vendor = "Eon",
877 .name = "EN25B32",
878 .bustype = CHIP_BUSTYPE_SPI,
879 .manufacture_id = EON_ID,
880 .model_id = EN_25B32,
881 .total_size = 4096,
882 .page_size = 256,
883 .tested = TEST_UNTESTED,
884 .probe = probe_spi_rdid,
885 .probe_timing = TIMING_ZERO,
886 .erase = spi_chip_erase_c7,
887 .write = spi_chip_write_256,
888 .read = spi_chip_read,
889 },
890
891 {
892 .vendor = "Eon",
893 .name = "EN25B64",
894 .bustype = CHIP_BUSTYPE_SPI,
895 .manufacture_id = EON_ID,
896 .model_id = EN_25B64,
897 .total_size = 8192,
898 .page_size = 256,
899 .tested = TEST_UNTESTED,
900 .probe = probe_spi_rdid,
901 .probe_timing = TIMING_ZERO,
902 .erase = spi_chip_erase_c7,
903 .write = spi_chip_write_256,
904 .read = spi_chip_read,
905 },
906
907 {
908 .vendor = "Eon",
909 .name = "EN25F40",
910 .bustype = CHIP_BUSTYPE_SPI,
911 .manufacture_id = EON_ID,
912 .model_id = EN_25F40,
913 .total_size = 512,
914 .page_size = 256,
915 .tested = TEST_UNTESTED,
916 .probe = probe_spi_rdid,
917 .probe_timing = TIMING_ZERO,
918 .erase = spi_chip_erase_60_c7,
919 .write = spi_chip_write_256,
920 .read = spi_chip_read,
921 },
922
923 {
924 .vendor = "Eon",
925 .name = "EN25F80",
926 .bustype = CHIP_BUSTYPE_SPI,
927 .manufacture_id = EON_ID,
928 .model_id = EN_25F80,
929 .total_size = 1024,
930 .page_size = 256,
931 .tested = TEST_UNTESTED,
932 .probe = probe_spi_rdid,
933 .probe_timing = TIMING_ZERO,
934 .erase = spi_chip_erase_60_c7,
935 .write = spi_chip_write_256,
936 .read = spi_chip_read,
937 },
938
939 {
940 .vendor = "Eon",
941 .name = "EN25F16",
942 .bustype = CHIP_BUSTYPE_SPI,
943 .manufacture_id = EON_ID,
944 .model_id = EN_25F16,
945 .total_size = 2048,
946 .page_size = 256,
947 .tested = TEST_UNTESTED,
948 .probe = probe_spi_rdid,
949 .probe_timing = TIMING_ZERO,
950 .erase = spi_chip_erase_60_c7,
951 .write = spi_chip_write_256,
952 .read = spi_chip_read,
953 },
954
955 {
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000956 .vendor = "EON",
957 .name = "EN29F002(A)(N)B",
Urja Rannikko161b8852009-06-05 08:47:37 +0000958 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000959 .manufacture_id = EON_ID,
960 .model_id = EN_29F002B,
961 .total_size = 256,
962 .page_size = 256,
963 .tested = TEST_UNTESTED,
964 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +0000965 .probe_timing = TIMING_FIXME,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000966 .erase = erase_chip_jedec,
967 .write = write_en29f002a,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +0000968 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +0000969 },
970
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000971 {
972 .vendor = "EON",
973 .name = "EN29F002(A)(N)T",
Urja Rannikko161b8852009-06-05 08:47:37 +0000974 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000975 .manufacture_id = EON_ID,
976 .model_id = EN_29F002T,
977 .total_size = 256,
978 .page_size = 256,
979 .tested = TEST_OK_PREW,
980 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +0000981 .probe_timing = TIMING_FIXME,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000982 .erase = erase_chip_jedec,
983 .write = write_en29f002a,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +0000984 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +0000985 },
986
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000987 {
988 .vendor = "Fujitsu",
989 .name = "MBM29F004BC",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000990 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000991 .manufacture_id = FUJITSU_ID,
992 .model_id = MBM29F004BC,
993 .total_size = 512,
994 .page_size = 64 * 1024,
995 .tested = TEST_UNTESTED,
996 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +0000997 .probe_timing = TIMING_FIXME,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000998 .erase = NULL,
999 .write = NULL,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001000 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001001 },
1002
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001003 {
1004 .vendor = "Fujitsu",
1005 .name = "MBM29F004TC",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001006 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001007 .manufacture_id = FUJITSU_ID,
1008 .model_id = MBM29F004TC,
1009 .total_size = 512,
1010 .page_size = 64 * 1024,
1011 .tested = TEST_UNTESTED,
1012 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +00001013 .probe_timing = TIMING_FIXME,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001014 .erase = NULL,
1015 .write = NULL,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001016 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001017 },
1018
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001019 {
1020 .vendor = "Fujitsu",
1021 .name = "MBM29F400BC",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001022 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001023 .manufacture_id = FUJITSU_ID,
1024 .model_id = MBM29F400BC,
1025 .total_size = 512,
1026 .page_size = 64 * 1024,
1027 .tested = TEST_UNTESTED,
1028 .probe = probe_m29f400bt,
Maciej Pijankac6e11112009-06-03 14:46:22 +00001029 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (m29f400bt.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001030 .erase = erase_m29f400bt,
1031 .write = write_coreboot_m29f400bt,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001032 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001033 },
1034
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001035 {
1036 .vendor = "Fujitsu",
1037 .name = "MBM29F400TC",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001038 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001039 .manufacture_id = FUJITSU_ID,
1040 .model_id = MBM29F400TC,
1041 .total_size = 512,
1042 .page_size = 64 * 1024,
1043 .tested = TEST_UNTESTED,
1044 .probe = probe_m29f400bt,
Maciej Pijankac6e11112009-06-03 14:46:22 +00001045 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (m29f400bt.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001046 .erase = erase_m29f400bt,
1047 .write = write_coreboot_m29f400bt,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001048 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001049 },
1050
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001051 {
1052 .vendor = "Intel",
Urja Rannikkoebd7b832009-05-29 12:55:31 +00001053 .name = "28F001BX-B",
Urja Rannikko161b8852009-06-05 08:47:37 +00001054 .bustype = CHIP_BUSTYPE_PARALLEL,
Urja Rannikkoebd7b832009-05-29 12:55:31 +00001055 .manufacture_id = INTEL_ID,
1056 .model_id = P28F001BXB,
1057 .total_size = 128,
1058 .page_size = 128 * 1024, /* 8k + 2x4k + 112k */
1059 .tested = TEST_BAD_ERASE|TEST_BAD_WRITE,
1060 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +00001061 .probe_timing = TIMING_FIXME,
Urja Rannikkoebd7b832009-05-29 12:55:31 +00001062 .erase = NULL,
1063 .write = NULL,
1064 .read = read_memmapped,
1065 },
1066
1067 {
1068 .vendor = "Intel",
1069 .name = "28F001BX-T",
Urja Rannikko161b8852009-06-05 08:47:37 +00001070 .bustype = CHIP_BUSTYPE_PARALLEL,
Urja Rannikkoebd7b832009-05-29 12:55:31 +00001071 .manufacture_id = INTEL_ID,
1072 .model_id = P28F001BXT,
1073 .total_size = 128,
1074 .page_size = 128 * 1024, /* 112k + 2x4k + 8k */
1075 .tested = TEST_OK_PR|TEST_BAD_ERASE|TEST_BAD_WRITE,
1076 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +00001077 .probe_timing = TIMING_FIXME,
Urja Rannikkoebd7b832009-05-29 12:55:31 +00001078 .erase = NULL,
1079 .write = NULL,
1080 .read = read_memmapped,
1081 },
1082
1083 {
1084 .vendor = "Intel",
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001085 .name = "82802AB",
Mateusz Murawskie33890d2009-06-12 11:45:10 +00001086 .bustype = CHIP_BUSTYPE_FWH,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001087 .manufacture_id = INTEL_ID,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00001088 .model_id = I_82802AB,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001089 .total_size = 512,
1090 .page_size = 64 * 1024,
1091 .tested = TEST_OK_PREW,
1092 .probe = probe_82802ab,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001093 .probe_timing = TIMING_IGNORED, /* routine does not use probe_timing (82802ab.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001094 .erase = erase_82802ab,
1095 .write = write_82802ab,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001096 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001097 },
1098
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001099 {
1100 .vendor = "Intel",
1101 .name = "82802AC",
Mateusz Murawskie33890d2009-06-12 11:45:10 +00001102 .bustype = CHIP_BUSTYPE_FWH,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001103 .manufacture_id = INTEL_ID,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00001104 .model_id = I_82802AC,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001105 .total_size = 1024,
1106 .page_size = 64 * 1024,
1107 .tested = TEST_OK_PREW,
1108 .probe = probe_82802ab,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001109 .probe_timing = TIMING_IGNORED, /* routine does not use probe_timing (82802ab.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001110 .erase = erase_82802ab,
1111 .write = write_82802ab,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001112 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001113 },
1114
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001115 {
1116 .vendor = "Macronix",
1117 .name = "MX25L512",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001118 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001119 .manufacture_id = MX_ID,
1120 .model_id = MX_25L512,
1121 .total_size = 64,
1122 .page_size = 256,
1123 .tested = TEST_UNTESTED,
1124 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001125 .probe_timing = TIMING_ZERO,
Stephan Guillouxfd315502009-04-20 22:54:13 +00001126 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001127 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001128 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001129 },
1130
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001131 {
1132 .vendor = "Macronix",
1133 .name = "MX25L1005",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001134 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001135 .manufacture_id = MX_ID,
1136 .model_id = MX_25L1005,
1137 .total_size = 128,
1138 .page_size = 256,
1139 .tested = TEST_UNTESTED,
1140 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001141 .probe_timing = TIMING_ZERO,
Stephan Guillouxfd315502009-04-20 22:54:13 +00001142 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001143 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001144 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001145 },
1146
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001147 {
1148 .vendor = "Macronix",
1149 .name = "MX25L2005",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001150 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001151 .manufacture_id = MX_ID,
1152 .model_id = MX_25L2005,
1153 .total_size = 256,
1154 .page_size = 256,
1155 .tested = TEST_UNTESTED,
1156 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001157 .probe_timing = TIMING_ZERO,
Stephan Guillouxfd315502009-04-20 22:54:13 +00001158 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001159 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001160 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001161 },
1162
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001163 {
1164 .vendor = "Macronix",
1165 .name = "MX25L4005",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001166 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001167 .manufacture_id = MX_ID,
1168 .model_id = MX_25L4005,
1169 .total_size = 512,
1170 .page_size = 256,
1171 .tested = TEST_OK_PREW,
1172 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001173 .probe_timing = TIMING_ZERO,
Stephan Guillouxfd315502009-04-20 22:54:13 +00001174 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001175 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001176 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001177 },
1178
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001179 {
1180 .vendor = "Macronix",
1181 .name = "MX25L8005",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001182 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001183 .manufacture_id = MX_ID,
1184 .model_id = MX_25L8005,
1185 .total_size = 1024,
1186 .page_size = 256,
1187 .tested = TEST_OK_PREW,
1188 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001189 .probe_timing = TIMING_ZERO,
Stephan Guillouxfd315502009-04-20 22:54:13 +00001190 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001191 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001192 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001193 },
1194
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001195 {
1196 .vendor = "Macronix",
1197 .name = "MX25L1605",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001198 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001199 .manufacture_id = MX_ID,
1200 .model_id = MX_25L1605,
1201 .total_size = 2048,
1202 .page_size = 256,
Peter Stugeddb94f72009-04-29 23:22:33 +00001203 .tested = TEST_OK_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001204 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001205 .probe_timing = TIMING_ZERO,
Stephan Guillouxe39631c2009-04-19 23:24:26 +00001206 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001207 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001208 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001209 },
1210
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001211 {
1212 .vendor = "Macronix",
Stephan Guillouxf5c70902009-04-19 23:04:00 +00001213 .name = "MX25L1635D",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001214 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guillouxf5c70902009-04-19 23:04:00 +00001215 .manufacture_id = MX_ID,
1216 .model_id = MX_25L1635D,
1217 .total_size = 2048,
1218 .page_size = 256,
1219 .tested = TEST_UNTESTED,
1220 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001221 .probe_timing = TIMING_ZERO,
Stephan Guillouxe39631c2009-04-19 23:24:26 +00001222 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001223 .write = spi_chip_write_256,
Stephan Guillouxf5c70902009-04-19 23:04:00 +00001224 .read = spi_chip_read,
1225 },
Stephan Guillouxfd315502009-04-20 22:54:13 +00001226
Stephan Guillouxf5c70902009-04-19 23:04:00 +00001227 {
1228 .vendor = "Macronix",
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001229 .name = "MX25L3205",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001230 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001231 .manufacture_id = MX_ID,
1232 .model_id = MX_25L3205,
1233 .total_size = 4096,
1234 .page_size = 256,
1235 .tested = TEST_OK_PREW,
1236 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001237 .probe_timing = TIMING_ZERO,
Stephan Guillouxfd315502009-04-20 22:54:13 +00001238 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001239 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001240 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001241 },
1242
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001243 {
1244 .vendor = "Macronix",
Stephan Guilloux70ea9a32009-04-23 22:51:56 +00001245 .name = "MX25L3235D",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001246 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux70ea9a32009-04-23 22:51:56 +00001247 .manufacture_id = MX_ID,
1248 .model_id = MX_25L3235D,
1249 .total_size = 4096,
1250 .page_size = 256,
1251 .tested = TEST_UNTESTED,
1252 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001253 .probe_timing = TIMING_ZERO,
Stephan Guilloux70ea9a32009-04-23 22:51:56 +00001254 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001255 .write = spi_chip_write_256,
Stephan Guilloux70ea9a32009-04-23 22:51:56 +00001256 .read = spi_chip_read,
1257 },
1258
1259 {
1260 .vendor = "Macronix",
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001261 .name = "MX25L6405",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001262 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001263 .manufacture_id = MX_ID,
1264 .model_id = MX_25L6405,
1265 .total_size = 8192,
1266 .page_size = 256,
1267 .tested = TEST_UNTESTED,
1268 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001269 .probe_timing = TIMING_ZERO,
Stephan Guillouxfd315502009-04-20 22:54:13 +00001270 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001271 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001272 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001273 },
1274
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001275 {
1276 .vendor = "Macronix",
Stephan Guilloux2f132fe2009-04-21 01:47:16 +00001277 .name = "MX25L12805",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001278 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux2f132fe2009-04-21 01:47:16 +00001279 .manufacture_id = MX_ID,
1280 .model_id = MX_25L12805,
1281 .total_size = 16384,
1282 .page_size = 256,
1283 .tested = TEST_UNTESTED,
1284 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001285 .probe_timing = TIMING_ZERO,
Stephan Guilloux2f132fe2009-04-21 01:47:16 +00001286 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001287 .write = spi_chip_write_256,
Stephan Guilloux2f132fe2009-04-21 01:47:16 +00001288 .read = spi_chip_read,
1289 },
1290
1291 {
1292 .vendor = "Macronix",
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001293 .name = "MX29F002B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001294 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001295 .manufacture_id = MX_ID,
1296 .model_id = MX_29F002B,
1297 .total_size = 256,
1298 .page_size = 64 * 1024,
1299 .tested = TEST_UNTESTED,
1300 .probe = probe_29f002,
Maciej Pijankac6e11112009-06-03 14:46:22 +00001301 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (mx29f002.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001302 .erase = erase_29f002,
1303 .write = write_29f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001304 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001305 },
1306
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001307 {
1308 .vendor = "Macronix",
1309 .name = "MX29F002T",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001310 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001311 .manufacture_id = MX_ID,
1312 .model_id = MX_29F002T,
1313 .total_size = 256,
1314 .page_size = 64 * 1024,
Uwe Hermann66c580c2009-05-21 00:29:50 +00001315 .tested = TEST_OK_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001316 .probe = probe_29f002,
Maciej Pijankac6e11112009-06-03 14:46:22 +00001317 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (mx29f002.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001318 .erase = erase_29f002,
1319 .write = write_29f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001320 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001321 },
1322
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001323 {
1324 .vendor = "Macronix",
1325 .name = "MX29LV040C",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001326 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001327 .manufacture_id = MX_ID,
1328 .model_id = MX_29LV040C,
1329 .total_size = 512,
1330 .page_size = 64 * 1024,
1331 .tested = TEST_OK_PR,
1332 .probe = probe_29f002,
Maciej Pijankac6e11112009-06-03 14:46:22 +00001333 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (mx29f002.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001334 .erase = erase_29f002,
1335 .write = write_29f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001336 .read = read_memmapped,
Carl-Daniel Hailfinger7de86392008-12-10 10:32:05 +00001337 },
1338
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001339 {
1340 .vendor = "Numonyx",
1341 .name = "M25PE10",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001342 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001343 .manufacture_id = ST_ID,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00001344 .model_id = ST_M25PE10,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001345 .total_size = 128,
1346 .page_size = 256,
1347 .tested = TEST_UNTESTED,
1348 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001349 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001350 .erase = spi_chip_erase_d8,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001351 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001352 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001353 },
1354
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001355 {
1356 .vendor = "Numonyx",
1357 .name = "M25PE20",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001358 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001359 .manufacture_id = ST_ID,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00001360 .model_id = ST_M25PE20,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001361 .total_size = 256,
1362 .page_size = 256,
1363 .tested = TEST_UNTESTED,
1364 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001365 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001366 .erase = spi_chip_erase_d8,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001367 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001368 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001369 },
1370
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001371 {
1372 .vendor = "Numonyx",
1373 .name = "M25PE40",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001374 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001375 .manufacture_id = ST_ID,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00001376 .model_id = ST_M25PE40,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001377 .total_size = 256,
1378 .page_size = 256,
1379 .tested = TEST_UNTESTED,
1380 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001381 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001382 .erase = spi_chip_erase_d8,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001383 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001384 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001385 },
1386
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001387 {
1388 .vendor = "Numonyx",
1389 .name = "M25PE80",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001390 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001391 .manufacture_id = ST_ID,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00001392 .model_id = ST_M25PE80,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001393 .total_size = 1024,
1394 .page_size = 256,
1395 .tested = TEST_OK_PREW,
1396 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001397 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001398 .erase = spi_chip_erase_d8,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001399 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001400 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001401 },
1402
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001403 {
1404 .vendor = "Numonyx",
1405 .name = "M25PE16",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001406 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001407 .manufacture_id = ST_ID,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00001408 .model_id = ST_M25PE16,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001409 .total_size = 2048,
1410 .page_size = 256,
1411 .tested = TEST_UNTESTED,
1412 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001413 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001414 .erase = spi_chip_erase_d8,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001415 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001416 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001417 },
1418
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001419 {
1420 .vendor = "PMC",
1421 .name = "Pm25LV010",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001422 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001423 .manufacture_id = PMC_ID,
1424 .model_id = PMC_25LV010,
1425 .total_size = 128,
1426 .page_size = 256,
1427 .tested = TEST_UNTESTED,
1428 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001429 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001430 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001431 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001432 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001433 },
1434
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001435 {
1436 .vendor = "PMC",
1437 .name = "Pm25LV016B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001438 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001439 .manufacture_id = PMC_ID,
1440 .model_id = PMC_25LV016B,
1441 .total_size = 2048,
1442 .page_size = 256,
1443 .tested = TEST_UNTESTED,
1444 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001445 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001446 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001447 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001448 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001449 },
1450
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001451 {
1452 .vendor = "PMC",
1453 .name = "Pm25LV020",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001454 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001455 .manufacture_id = PMC_ID,
1456 .model_id = PMC_25LV020,
1457 .total_size = 256,
1458 .page_size = 256,
1459 .tested = TEST_UNTESTED,
1460 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001461 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001462 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001463 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001464 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001465 },
1466
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001467 {
1468 .vendor = "PMC",
1469 .name = "Pm25LV040",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001470 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001471 .manufacture_id = PMC_ID,
1472 .model_id = PMC_25LV040,
1473 .total_size = 512,
1474 .page_size = 256,
1475 .tested = TEST_UNTESTED,
1476 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001477 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001478 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001479 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001480 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001481 },
1482
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001483 {
1484 .vendor = "PMC",
1485 .name = "Pm25LV080B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001486 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001487 .manufacture_id = PMC_ID,
1488 .model_id = PMC_25LV080B,
1489 .total_size = 1024,
1490 .page_size = 256,
1491 .tested = TEST_UNTESTED,
1492 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001493 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001494 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001495 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001496 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001497 },
1498
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001499 {
1500 .vendor = "PMC",
1501 .name = "Pm25LV512",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001502 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001503 .manufacture_id = PMC_ID,
1504 .model_id = PMC_25LV512,
1505 .total_size = 64,
1506 .page_size = 256,
1507 .tested = TEST_UNTESTED,
1508 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001509 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001510 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001511 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001512 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001513 },
1514
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001515 {
1516 .vendor = "PMC",
Rudolf Marek50fdf3b2009-05-17 17:02:07 +00001517 .name = "Pm39LV010",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001518 .bustype = CHIP_BUSTYPE_NONSPI,
Rudolf Marek50fdf3b2009-05-17 17:02:07 +00001519 .manufacture_id = PMC_ID_NOPREFIX,
1520 .model_id = PMC_39F010,
1521 .total_size = 128,
1522 .page_size = 4096,
1523 .tested = TEST_OK_PREW,
1524 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +00001525 .probe_timing = TIMING_FIXME,
Rudolf Marek50fdf3b2009-05-17 17:02:07 +00001526 .erase = erase_chip_jedec,
1527 .write = write_49f002,
1528 .read = read_memmapped,
1529 },
1530
1531 {
1532 .vendor = "PMC",
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001533 .name = "Pm49FL002",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001534 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001535 .manufacture_id = PMC_ID_NOPREFIX,
1536 .model_id = PMC_49FL002,
1537 .total_size = 256,
1538 .page_size = 16 * 1024,
1539 .tested = TEST_OK_PREW,
1540 .probe = probe_49fl00x,
Maciej Pijankac6e11112009-06-03 14:46:22 +00001541 .probe_timing = TIMING_FIXME, /* routine is wrapper to probe_jedec (pm49fl00x.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001542 .erase = erase_49fl00x,
1543 .write = write_49fl00x,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001544 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001545 },
1546
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001547 {
1548 .vendor = "PMC",
1549 .name = "Pm49FL004",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001550 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001551 .manufacture_id = PMC_ID_NOPREFIX,
1552 .model_id = PMC_49FL004,
1553 .total_size = 512,
1554 .page_size = 64 * 1024,
1555 .tested = TEST_OK_PREW,
1556 .probe = probe_49fl00x,
Maciej Pijankac6e11112009-06-03 14:46:22 +00001557 .probe_timing = TIMING_FIXME, /* routine is wrapper to probe_jedec (pm49fl00x.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001558 .erase = erase_49fl00x,
1559 .write = write_49fl00x,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001560 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001561 },
1562
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001563 {
1564 .vendor = "Sharp",
1565 .name = "LHF00L04",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001566 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001567 .manufacture_id = SHARP_ID,
1568 .model_id = SHARP_LHF00L04,
1569 .total_size = 1024,
1570 .page_size = 64 * 1024,
1571 .tested = TEST_UNTESTED,
1572 .probe = probe_lhf00l04,
Maciej Pijankac6e11112009-06-03 14:46:22 +00001573 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (sharplhf00l04.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001574 .erase = erase_lhf00l04,
1575 .write = write_lhf00l04,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001576 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001577 },
1578
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001579 {
1580 .vendor = "Spansion",
1581 .name = "S25FL016A",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001582 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001583 .manufacture_id = SPANSION_ID,
1584 .model_id = SPANSION_S25FL016A,
1585 .total_size = 2048,
1586 .page_size = 256,
1587 .tested = TEST_OK_PREW,
1588 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001589 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001590 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001591 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001592 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001593 },
1594
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001595 {
1596 .vendor = "SST",
1597 .name = "SST25VF016B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001598 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001599 .manufacture_id = SST_ID,
1600 .model_id = SST_25VF016B,
1601 .total_size = 2048,
1602 .page_size = 256,
1603 .tested = TEST_OK_PREW,
1604 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001605 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001606 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger93bb3752009-05-13 22:19:12 +00001607 .write = spi_chip_write_1,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001608 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001609 },
1610
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001611 {
1612 .vendor = "SST",
1613 .name = "SST25VF032B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001614 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001615 .manufacture_id = SST_ID,
1616 .model_id = SST_25VF032B,
1617 .total_size = 4096,
1618 .page_size = 256,
1619 .tested = TEST_OK_PREW,
1620 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001621 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001622 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger93bb3752009-05-13 22:19:12 +00001623 .write = spi_chip_write_1,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001624 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001625 },
1626
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001627 {
1628 .vendor = "SST",
1629 .name = "SST25VF040B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001630 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001631 .manufacture_id = SST_ID,
1632 .model_id = SST_25VF040B,
1633 .total_size = 512,
1634 .page_size = 256,
1635 .tested = TEST_UNTESTED,
1636 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001637 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001638 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger93bb3752009-05-13 22:19:12 +00001639 .write = spi_chip_write_1,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001640 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001641 },
1642
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001643 {
1644 .vendor = "SST",
Zheng Bao0677dff2009-02-25 08:07:33 +00001645 .name = "SST25VF040.REMS",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001646 .bustype = CHIP_BUSTYPE_SPI,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00001647 .manufacture_id = SST_ID,
1648 .model_id = SST_25VF040_REMS,
Zheng Bao0677dff2009-02-25 08:07:33 +00001649 .total_size = 512,
1650 .page_size = 64*1024,
1651 .tested = TEST_OK_PR,
1652 .probe = probe_spi_rems,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001653 .probe_timing = TIMING_ZERO,
Zheng Bao0677dff2009-02-25 08:07:33 +00001654 .erase = spi_chip_erase_60,
Carl-Daniel Hailfinger93bb3752009-05-13 22:19:12 +00001655 .write = spi_chip_write_1,
Zheng Bao0677dff2009-02-25 08:07:33 +00001656 .read = spi_chip_read,
1657 },
1658
1659 {
1660 .vendor = "SST",
Peter Stugefd9217d2009-01-26 03:37:40 +00001661 .name = "SST25VF040B.REMS",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001662 .bustype = CHIP_BUSTYPE_SPI,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00001663 .manufacture_id = SST_ID,
1664 .model_id = SST_25VF040B_REMS,
Peter Stugefd9217d2009-01-26 03:37:40 +00001665 .total_size = 512,
1666 .page_size = 64*1024,
1667 .tested = TEST_OK_PR,
1668 .probe = probe_spi_rems,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001669 .probe_timing = TIMING_ZERO,
Peter Stugefd9217d2009-01-26 03:37:40 +00001670 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger93bb3752009-05-13 22:19:12 +00001671 .write = spi_chip_write_1,
Peter Stugefd9217d2009-01-26 03:37:40 +00001672 .read = spi_chip_read,
1673 },
1674
1675 {
1676 .vendor = "SST",
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001677 .name = "SST25VF080B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001678 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001679 .manufacture_id = SST_ID,
1680 .model_id = SST_25VF080B,
1681 .total_size = 1024,
1682 .page_size = 256,
Peter Stugee612a112009-05-05 16:34:53 +00001683 .tested = TEST_OK_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001684 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001685 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001686 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001687 .write = spi_chip_write_1,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001688 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001689 },
1690
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001691 {
1692 .vendor = "SST",
1693 .name = "SST28SF040A",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001694 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001695 .manufacture_id = SST_ID,
1696 .model_id = SST_28SF040,
1697 .total_size = 512,
1698 .page_size = 256,
1699 .tested = TEST_UNTESTED,
1700 .probe = probe_28sf040,
Maciej Pijankac6e11112009-06-03 14:46:22 +00001701 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (sst28sf040.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001702 .erase = erase_28sf040,
1703 .write = write_28sf040,
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 = "SST29EE010",
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_29EE010,
1713 .total_size = 128,
1714 .page_size = 128,
1715 .tested = TEST_OK_PREW,
1716 .probe = probe_jedec,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00001717 .probe_timing = 10,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001718 .erase = erase_chip_jedec,
1719 .write = write_jedec,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001720 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001721 },
1722
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001723 {
1724 .vendor = "SST",
1725 .name = "SST29LE010",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001726 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001727 .manufacture_id = SST_ID,
1728 .model_id = SST_29LE010,
1729 .total_size = 128,
1730 .page_size = 128,
1731 .tested = TEST_UNTESTED,
1732 .probe = probe_jedec,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00001733 .probe_timing = 10,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001734 .erase = erase_chip_jedec,
1735 .write = write_jedec,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001736 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001737 },
1738
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001739 {
1740 .vendor = "SST",
1741 .name = "SST29EE020A",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001742 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001743 .manufacture_id = SST_ID,
1744 .model_id = SST_29EE020A,
1745 .total_size = 256,
1746 .page_size = 128,
Peter Stugeb27d0a22009-02-22 21:07:28 +00001747 .tested = TEST_OK_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001748 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +00001749 .probe_timing = TIMING_FIXME,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001750 .erase = erase_chip_jedec,
1751 .write = write_jedec,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001752 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001753 },
1754
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001755 {
1756 .vendor = "SST",
1757 .name = "SST29LE020",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001758 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001759 .manufacture_id = SST_ID,
1760 .model_id = SST_29LE020,
1761 .total_size = 256,
1762 .page_size = 128,
1763 .tested = TEST_UNTESTED,
1764 .probe = probe_jedec,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00001765 .probe_timing = 10,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001766 .erase = erase_chip_jedec,
1767 .write = write_jedec,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001768 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001769 },
1770
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001771 {
1772 .vendor = "SST",
1773 .name = "SST39SF010A",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001774 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001775 .manufacture_id = SST_ID,
1776 .model_id = SST_39SF010,
1777 .total_size = 128,
1778 .page_size = 4096,
1779 .tested = TEST_OK_PREW,
1780 .probe = probe_jedec,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00001781 .probe_timing = 1, /* 150 ns */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001782 .erase = erase_chip_jedec,
Uwe Hermann24f9fbe2009-05-12 14:06:04 +00001783 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001784 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001785 },
1786
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001787 {
1788 .vendor = "SST",
1789 .name = "SST39SF020A",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001790 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001791 .manufacture_id = SST_ID,
1792 .model_id = SST_39SF020,
1793 .total_size = 256,
1794 .page_size = 4096,
1795 .tested = TEST_OK_PREW,
1796 .probe = probe_jedec,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00001797 .probe_timing = 1, /* 150 ns */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001798 .erase = erase_chip_jedec,
Uwe Hermann24f9fbe2009-05-12 14:06:04 +00001799 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001800 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001801 },
1802
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001803 {
1804 .vendor = "SST",
1805 .name = "SST39SF040",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001806 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001807 .manufacture_id = SST_ID,
1808 .model_id = SST_39SF040,
1809 .total_size = 512,
1810 .page_size = 4096,
1811 .tested = TEST_OK_PREW,
1812 .probe = probe_jedec,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00001813 .probe_timing = 1, /* 150 ns */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001814 .erase = erase_chip_jedec,
Uwe Hermann24f9fbe2009-05-12 14:06:04 +00001815 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001816 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001817 },
1818
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001819 {
1820 .vendor = "SST",
1821 .name = "SST39VF512",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001822 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001823 .manufacture_id = SST_ID,
1824 .model_id = SST_39VF512,
1825 .total_size = 64,
1826 .page_size = 4096,
Rudolf Mareke186da62009-05-17 18:24:24 +00001827 .tested = TEST_OK_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001828 .probe = probe_jedec,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00001829 .probe_timing = 1, /* 150 ns*/
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001830 .erase = erase_chip_jedec,
Uwe Hermann24f9fbe2009-05-12 14:06:04 +00001831 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001832 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001833 },
1834
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001835 {
1836 .vendor = "SST",
1837 .name = "SST39VF010",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001838 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001839 .manufacture_id = SST_ID,
1840 .model_id = SST_39VF010,
1841 .total_size = 128,
1842 .page_size = 4096,
Rudolf Marek50fdf3b2009-05-17 17:02:07 +00001843 .tested = TEST_OK_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001844 .probe = probe_jedec,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00001845 .probe_timing = 1, /* 150 ns */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001846 .erase = erase_chip_jedec,
Uwe Hermann24f9fbe2009-05-12 14:06:04 +00001847 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001848 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001849 },
1850
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001851 {
1852 .vendor = "SST",
1853 .name = "SST39VF020",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001854 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001855 .manufacture_id = SST_ID,
1856 .model_id = SST_39VF020,
1857 .total_size = 256,
1858 .page_size = 4096,
1859 .tested = TEST_OK_PREW,
1860 .probe = probe_jedec,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00001861 .probe_timing = 1, /* 150 ns */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001862 .erase = erase_chip_jedec,
Uwe Hermann24f9fbe2009-05-12 14:06:04 +00001863 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001864 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001865 },
1866
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001867 {
1868 .vendor = "SST",
1869 .name = "SST39VF040",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001870 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001871 .manufacture_id = SST_ID,
1872 .model_id = SST_39VF040,
1873 .total_size = 512,
1874 .page_size = 4096,
1875 .tested = TEST_OK_PROBE,
1876 .probe = probe_jedec,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00001877 .probe_timing = 1, /* 150 ns */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001878 .erase = erase_chip_jedec,
Uwe Hermann24f9fbe2009-05-12 14:06:04 +00001879 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001880 .read = read_memmapped,
Carl-Daniel Hailfinger90eff152008-12-08 23:51:45 +00001881 },
FENG yu ningff692fb2008-12-08 18:15:10 +00001882
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001883 {
1884 .vendor = "SST",
Peter Stuge8440cc02009-01-25 23:55:12 +00001885 .name = "SST39VF080",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001886 .bustype = CHIP_BUSTYPE_NONSPI,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00001887 .manufacture_id = SST_ID,
1888 .model_id = SST_39VF080,
Peter Stuge8440cc02009-01-25 23:55:12 +00001889 .total_size = 1024,
1890 .page_size = 4096,
1891 .tested = TEST_UNTESTED,
1892 .probe = probe_jedec,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00001893 .probe_timing = 1, /* 150 ns */
Peter Stuge8440cc02009-01-25 23:55:12 +00001894 .erase = erase_chip_jedec,
Uwe Hermann24f9fbe2009-05-12 14:06:04 +00001895 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001896 .read = read_memmapped,
Peter Stuge8440cc02009-01-25 23:55:12 +00001897 },
1898
1899 {
1900 .vendor = "SST",
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001901 .name = "SST49LF002A/B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001902 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001903 .manufacture_id = SST_ID,
1904 .model_id = SST_49LF002A,
1905 .total_size = 256,
1906 .page_size = 16 * 1024,
1907 .tested = TEST_OK_PREW,
1908 .probe = probe_sst_fwhub,
Maciej Pijankac6e11112009-06-03 14:46:22 +00001909 .probe_timing = TIMING_FIXME, /* routine is wrapper to probe_jedec (sst_fwhub.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001910 .erase = erase_sst_fwhub,
1911 .write = write_sst_fwhub,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001912 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001913 },
1914
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001915 {
1916 .vendor = "SST",
1917 .name = "SST49LF003A/B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001918 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001919 .manufacture_id = SST_ID,
1920 .model_id = SST_49LF003A,
1921 .total_size = 384,
1922 .page_size = 64 * 1024,
1923 .tested = TEST_UNTESTED,
1924 .probe = probe_sst_fwhub,
Maciej Pijankac6e11112009-06-03 14:46:22 +00001925 .probe_timing = TIMING_FIXME, /* routine is wrapper to probe_jedec (sst_fwhub.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001926 .erase = erase_sst_fwhub,
1927 .write = write_sst_fwhub,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001928 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001929 },
1930
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001931 {
1932 .vendor = "SST",
1933 .name = "SST49LF004A/B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001934 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001935 .manufacture_id = SST_ID,
1936 .model_id = SST_49LF004A,
1937 .total_size = 512,
1938 .page_size = 64 * 1024,
1939 .tested = TEST_OK_PREW,
1940 .probe = probe_sst_fwhub,
Maciej Pijankac6e11112009-06-03 14:46:22 +00001941 .probe_timing = TIMING_FIXME, /* routine is wrapper to probe_jedec (sst_fwhub.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001942 .erase = erase_sst_fwhub,
1943 .write = write_sst_fwhub,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001944 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001945 },
1946
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001947 {
1948 .vendor = "SST",
1949 .name = "SST49LF004C",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001950 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001951 .manufacture_id = SST_ID,
1952 .model_id = SST_49LF004C,
1953 .total_size = 512,
1954 .page_size = 4 * 1024,
1955 .tested = TEST_UNTESTED,
1956 .probe = probe_49lfxxxc,
Maciej Pijankac6e11112009-06-03 14:46:22 +00001957 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (sst49lfxxxc.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001958 .erase = erase_49lfxxxc,
1959 .write = write_49lfxxxc,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001960 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001961 },
1962
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001963 {
1964 .vendor = "SST",
1965 .name = "SST49LF008A",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001966 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001967 .manufacture_id = SST_ID,
1968 .model_id = SST_49LF008A,
1969 .total_size = 1024,
1970 .page_size = 64 * 1024,
1971 .tested = TEST_OK_PREW,
1972 .probe = probe_sst_fwhub,
Maciej Pijankac6e11112009-06-03 14:46:22 +00001973 .probe_timing = TIMING_FIXME, /* routine is wrapper to probe_jedec (sst_fwhub.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001974 .erase = erase_sst_fwhub,
1975 .write = write_sst_fwhub,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001976 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001977 },
1978
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001979 {
1980 .vendor = "SST",
1981 .name = "SST49LF008C",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001982 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001983 .manufacture_id = SST_ID,
1984 .model_id = SST_49LF008C,
1985 .total_size = 1024,
1986 .page_size = 4 * 1024,
1987 .tested = TEST_UNTESTED,
1988 .probe = probe_49lfxxxc,
Maciej Pijankac6e11112009-06-03 14:46:22 +00001989 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (sst49lfxxxc.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001990 .erase = erase_49lfxxxc,
1991 .write = write_49lfxxxc,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001992 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001993 },
1994
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001995 {
1996 .vendor = "SST",
1997 .name = "SST49LF016C",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001998 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001999 .manufacture_id = SST_ID,
2000 .model_id = SST_49LF016C,
2001 .total_size = 2048,
2002 .page_size = 4 * 1024,
2003 .tested = TEST_OK_PREW,
2004 .probe = probe_49lfxxxc,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002005 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (sst49lfxxxc.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002006 .erase = erase_49lfxxxc,
2007 .write = write_49lfxxxc,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002008 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002009 },
2010
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002011 {
2012 .vendor = "SST",
2013 .name = "SST49LF020",
Mateusz Murawskie33890d2009-06-12 11:45:10 +00002014 .bustype = CHIP_BUSTYPE_LPC,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002015 .manufacture_id = SST_ID,
2016 .model_id = SST_49LF020,
2017 .total_size = 256,
2018 .page_size = 16 * 1024,
2019 .tested = TEST_OK_PR,
2020 .probe = probe_jedec,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00002021 .probe_timing = 1, /* 150 ns */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002022 .erase = erase_49lf040,
2023 .write = write_49lf040,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002024 .read = read_memmapped,
Sven Schnellec208dfb2009-01-07 12:35:09 +00002025 },
2026
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002027 {
2028 .vendor = "SST",
2029 .name = "SST49LF020A",
Mateusz Murawskie33890d2009-06-12 11:45:10 +00002030 .bustype = CHIP_BUSTYPE_LPC,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002031 .manufacture_id = SST_ID,
2032 .model_id = SST_49LF020A,
2033 .total_size = 256,
2034 .page_size = 16 * 1024,
2035 .tested = TEST_UNTESTED,
2036 .probe = probe_jedec,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00002037 .probe_timing = 1, /* 150 ns */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002038 .erase = erase_49lf040,
2039 .write = write_49lf040,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002040 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002041 },
2042
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002043 {
2044 .vendor = "SST",
2045 .name = "SST49LF040",
Mateusz Murawskie33890d2009-06-12 11:45:10 +00002046 .bustype = CHIP_BUSTYPE_LPC,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002047 .manufacture_id = SST_ID,
2048 .model_id = SST_49LF040,
2049 .total_size = 512,
2050 .page_size = 4096,
2051 .tested = TEST_OK_PREW,
2052 .probe = probe_jedec,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00002053 .probe_timing = 1, /* 150 ns */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002054 .erase = erase_49lf040,
2055 .write = write_49lf040,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002056 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002057 },
2058
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002059 {
2060 .vendor = "SST",
2061 .name = "SST49LF040B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002062 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002063 .manufacture_id = SST_ID,
2064 .model_id = SST_49LF040B,
2065 .total_size = 512,
2066 .page_size = 64 * 1024,
2067 .tested = TEST_OK_PREW,
2068 .probe = probe_sst_fwhub,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002069 .probe_timing = TIMING_FIXME, /* routine is wrapper to probe_jedec (sst_fwhub.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002070 .erase = erase_sst_fwhub,
2071 .write = write_sst_fwhub,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002072 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002073 },
2074
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002075 {
2076 .vendor = "SST",
2077 .name = "SST49LF080A",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002078 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002079 .manufacture_id = SST_ID,
2080 .model_id = SST_49LF080A,
2081 .total_size = 1024,
2082 .page_size = 4096,
2083 .tested = TEST_OK_PREW,
2084 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002085 .probe_timing = TIMING_FIXME,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002086 .erase = erase_49lf040,
2087 .write = write_49lf040,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002088 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002089 },
2090
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002091 {
2092 .vendor = "SST",
2093 .name = "SST49LF160C",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002094 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002095 .manufacture_id = SST_ID,
2096 .model_id = SST_49LF160C,
2097 .total_size = 2048,
2098 .page_size = 4 * 1024,
2099 .tested = TEST_OK_PREW,
2100 .probe = probe_49lfxxxc,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002101 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (sst49lfxxxc.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002102 .erase = erase_49lfxxxc,
2103 .write = write_49lfxxxc,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002104 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002105 },
2106
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002107 {
2108 .vendor = "ST",
2109 .name = "M25P05-A",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002110 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002111 .manufacture_id = ST_ID,
2112 .model_id = ST_M25P05A,
2113 .total_size = 64,
2114 .page_size = 256,
2115 .tested = TEST_UNTESTED,
2116 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00002117 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002118 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00002119 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002120 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00002121 },
2122
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002123 {
2124 .vendor = "ST",
2125 .name = "M25P10-A",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002126 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002127 .manufacture_id = ST_ID,
2128 .model_id = ST_M25P10A,
2129 .total_size = 128,
2130 .page_size = 256,
2131 .tested = TEST_UNTESTED,
2132 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00002133 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002134 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00002135 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002136 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00002137 },
2138
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002139 {
2140 .vendor = "ST",
2141 .name = "M25P20",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002142 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002143 .manufacture_id = ST_ID,
2144 .model_id = ST_M25P20,
2145 .total_size = 256,
2146 .page_size = 256,
2147 .tested = TEST_UNTESTED,
2148 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00002149 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002150 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00002151 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002152 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00002153 },
2154
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002155 {
2156 .vendor = "ST",
2157 .name = "M25P40",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002158 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002159 .manufacture_id = ST_ID,
2160 .model_id = ST_M25P40,
2161 .total_size = 512,
2162 .page_size = 256,
2163 .tested = TEST_UNTESTED,
2164 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00002165 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002166 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00002167 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002168 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00002169 },
2170
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002171 {
2172 .vendor = "ST",
2173 .name = "M25P40-old",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002174 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002175 .manufacture_id = ST_ID,
2176 .model_id = ST_M25P40_RES,
2177 .total_size = 512,
2178 .page_size = 256,
2179 .tested = TEST_UNTESTED,
2180 .probe = probe_spi_res,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00002181 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002182 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00002183 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002184 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00002185 },
2186
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002187 {
2188 .vendor = "ST",
2189 .name = "M25P80",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002190 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002191 .manufacture_id = ST_ID,
2192 .model_id = ST_M25P80,
2193 .total_size = 1024,
2194 .page_size = 256,
2195 .tested = TEST_UNTESTED,
2196 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00002197 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002198 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00002199 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002200 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00002201 },
2202
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002203 {
2204 .vendor = "ST",
2205 .name = "M25P16",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002206 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002207 .manufacture_id = ST_ID,
2208 .model_id = ST_M25P16,
2209 .total_size = 2048,
2210 .page_size = 256,
2211 .tested = TEST_OK_PREW,
2212 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00002213 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002214 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00002215 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002216 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00002217 },
2218
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002219 {
2220 .vendor = "ST",
2221 .name = "M25P32",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002222 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002223 .manufacture_id = ST_ID,
2224 .model_id = ST_M25P32,
2225 .total_size = 4096,
2226 .page_size = 256,
2227 .tested = TEST_OK_PREW,
2228 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00002229 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002230 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00002231 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002232 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00002233 },
2234
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002235 {
2236 .vendor = "ST",
2237 .name = "M25P64",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002238 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002239 .manufacture_id = ST_ID,
2240 .model_id = ST_M25P64,
2241 .total_size = 8192,
2242 .page_size = 256,
2243 .tested = TEST_UNTESTED,
2244 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00002245 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002246 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00002247 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002248 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00002249 },
2250
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002251 {
2252 .vendor = "ST",
2253 .name = "M25P128",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002254 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002255 .manufacture_id = ST_ID,
2256 .model_id = ST_M25P128,
2257 .total_size = 16384,
2258 .page_size = 256,
2259 .tested = TEST_UNTESTED,
2260 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00002261 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002262 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00002263 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002264 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00002265 },
2266
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002267 {
2268 .vendor = "ST",
2269 .name = "M29F002B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002270 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002271 .manufacture_id = ST_ID,
2272 .model_id = ST_M29F002B,
2273 .total_size = 256,
2274 .page_size = 64 * 1024,
2275 .tested = TEST_UNTESTED,
2276 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002277 .probe_timing = TIMING_FIXME,
Peter Stugeaf8ffac2009-01-26 06:42:02 +00002278 .erase = erase_m29f002,
2279 .write = write_m29f002b,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002280 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002281 },
2282
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002283 {
2284 .vendor = "ST",
2285 .name = "M29F002T/NT",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002286 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002287 .manufacture_id = ST_ID,
2288 .model_id = ST_M29F002T,
2289 .total_size = 256,
2290 .page_size = 64 * 1024,
Peter Stugeaf8ffac2009-01-26 06:42:02 +00002291 .tested = TEST_OK_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002292 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002293 .probe_timing = TIMING_FIXME,
Peter Stugeaf8ffac2009-01-26 06:42:02 +00002294 .erase = erase_m29f002,
2295 .write = write_m29f002t,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002296 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002297 },
2298
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002299 {
2300 .vendor = "ST",
2301 .name = "M29F040B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002302 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002303 .manufacture_id = ST_ID,
2304 .model_id = ST_M29F040B,
2305 .total_size = 512,
2306 .page_size = 64 * 1024,
2307 .tested = TEST_OK_PREW,
2308 .probe = probe_29f040b,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002309 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (am29f040b.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002310 .erase = erase_29f040b,
2311 .write = write_29f040b,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002312 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002313 },
2314
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002315 {
2316 .vendor = "ST",
2317 .name = "M29F400BT",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002318 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002319 .manufacture_id = ST_ID,
2320 .model_id = ST_M29F400BT,
2321 .total_size = 512,
2322 .page_size = 64 * 1024,
2323 .tested = TEST_UNTESTED,
2324 .probe = probe_m29f400bt,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002325 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (m29f400bt.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002326 .erase = erase_m29f400bt,
2327 .write = write_coreboot_m29f400bt,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002328 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002329 },
2330
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002331 {
2332 .vendor = "ST",
2333 .name = "M29W010B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002334 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002335 .manufacture_id = ST_ID,
2336 .model_id = ST_M29W010B,
2337 .total_size = 128,
2338 .page_size = 16 * 1024,
2339 .tested = TEST_UNTESTED,
2340 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002341 .probe_timing = TIMING_FIXME,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002342 .erase = erase_chip_jedec,
2343 .write = write_jedec,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002344 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002345 },
2346
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002347 {
2348 .vendor = "ST",
2349 .name = "M29W040B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002350 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002351 .manufacture_id = ST_ID,
2352 .model_id = ST_M29W040B,
2353 .total_size = 512,
2354 .page_size = 64 * 1024,
2355 .tested = TEST_UNTESTED,
2356 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002357 .probe_timing = TIMING_FIXME,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002358 .erase = erase_chip_jedec,
2359 .write = write_jedec,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002360 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002361 },
2362
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002363 {
2364 .vendor = "ST",
2365 .name = "M50FLW040A",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002366 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002367 .manufacture_id = ST_ID,
2368 .model_id = ST_M50FLW040A,
2369 .total_size = 512,
2370 .page_size = 64 * 1024,
2371 .tested = TEST_UNTESTED,
2372 .probe = probe_stm50flw0x0x,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002373 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (stm50flw0x0x.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002374 .erase = erase_stm50flw0x0x,
2375 .write = write_stm50flw0x0x,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002376 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002377 },
2378
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002379 {
2380 .vendor = "ST",
2381 .name = "M50FLW040B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002382 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002383 .manufacture_id = ST_ID,
2384 .model_id = ST_M50FLW040B,
2385 .total_size = 512,
2386 .page_size = 64 * 1024,
2387 .tested = TEST_UNTESTED,
2388 .probe = probe_stm50flw0x0x,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002389 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (stm50flw0x0x.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002390 .erase = erase_stm50flw0x0x,
2391 .write = write_stm50flw0x0x,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002392 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002393 },
2394
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002395 {
2396 .vendor = "ST",
2397 .name = "M50FLW080A",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002398 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002399 .manufacture_id = ST_ID,
2400 .model_id = ST_M50FLW080A,
2401 .total_size = 1024,
2402 .page_size = 64 * 1024,
2403 .tested = TEST_OK_PREW,
2404 .probe = probe_stm50flw0x0x,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002405 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (stm50flw0x0x.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002406 .erase = erase_stm50flw0x0x,
2407 .write = write_stm50flw0x0x,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002408 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002409 },
2410
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002411 {
2412 .vendor = "ST",
2413 .name = "M50FLW080B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002414 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002415 .manufacture_id = ST_ID,
2416 .model_id = ST_M50FLW080B,
2417 .total_size = 1024,
2418 .page_size = 64 * 1024,
2419 .tested = TEST_UNTESTED,
2420 .probe = probe_stm50flw0x0x,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002421 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (stm50flw0x0x.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002422 .erase = erase_stm50flw0x0x,
2423 .write = write_stm50flw0x0x,
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 = "ST",
2429 .name = "M50FW002",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002430 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002431 .manufacture_id = ST_ID,
2432 .model_id = ST_M50FW002,
2433 .total_size = 256,
2434 .page_size = 64 * 1024,
2435 .tested = TEST_UNTESTED,
2436 .probe = probe_49lfxxxc,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002437 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (sst49lfxxxc.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002438 .erase = NULL,
2439 .write = NULL,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002440 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002441 },
2442
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002443 {
2444 .vendor = "ST",
2445 .name = "M50FW016",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002446 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002447 .manufacture_id = ST_ID,
2448 .model_id = ST_M50FW016,
2449 .total_size = 2048,
2450 .page_size = 64 * 1024,
2451 .tested = TEST_UNTESTED,
2452 .probe = probe_82802ab,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002453 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (82802ab.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002454 .erase = erase_82802ab,
2455 .write = write_82802ab,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002456 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002457 },
2458
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002459 {
2460 .vendor = "ST",
2461 .name = "M50FW040",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002462 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002463 .manufacture_id = ST_ID,
2464 .model_id = ST_M50FW040,
2465 .total_size = 512,
2466 .page_size = 64 * 1024,
2467 .tested = TEST_OK_PREW,
2468 .probe = probe_82802ab,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002469 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (82802ab.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002470 .erase = erase_82802ab,
2471 .write = write_82802ab,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002472 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002473 },
2474
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002475 {
2476 .vendor = "ST",
2477 .name = "M50FW080",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002478 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002479 .manufacture_id = ST_ID,
2480 .model_id = ST_M50FW080,
2481 .total_size = 1024,
2482 .page_size = 64 * 1024,
Peter Stugea657e942009-01-24 23:01:08 +00002483 .tested = TEST_OK_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002484 .probe = probe_82802ab,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002485 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (82802ab.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002486 .erase = erase_82802ab,
2487 .write = write_82802ab,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002488 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002489 },
2490
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002491 {
2492 .vendor = "ST",
2493 .name = "M50LPW116",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002494 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002495 .manufacture_id = ST_ID,
2496 .model_id = ST_M50LPW116,
2497 .total_size = 2048,
2498 .page_size = 64 * 1024,
2499 .tested = TEST_UNTESTED,
2500 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002501 .probe_timing = TIMING_FIXME,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002502 .erase = erase_chip_jedec,
2503 .write = write_jedec,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002504 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002505 },
2506
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002507 {
2508 .vendor = "SyncMOS",
2509 .name = "S29C31004T",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002510 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002511 .manufacture_id = SYNCMOS_ID,
2512 .model_id = S29C31004T,
2513 .total_size = 512,
2514 .page_size = 128,
2515 .tested = TEST_UNTESTED,
2516 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002517 .probe_timing = TIMING_FIXME,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002518 .erase = erase_chip_jedec,
2519 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002520 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002521 },
2522
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002523 {
2524 .vendor = "SyncMOS",
2525 .name = "S29C51001T",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002526 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002527 .manufacture_id = SYNCMOS_ID,
2528 .model_id = S29C51001T,
2529 .total_size = 128,
2530 .page_size = 128,
2531 .tested = TEST_UNTESTED,
2532 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002533 .probe_timing = TIMING_FIXME,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002534 .erase = erase_chip_jedec,
2535 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002536 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002537 },
2538
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002539 {
2540 .vendor = "SyncMOS",
2541 .name = "S29C51002T",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002542 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002543 .manufacture_id = SYNCMOS_ID,
2544 .model_id = S29C51002T,
2545 .total_size = 256,
2546 .page_size = 128,
2547 .tested = TEST_OK_PREW,
2548 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002549 .probe_timing = TIMING_FIXME,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002550 .erase = erase_chip_jedec,
2551 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002552 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002553 },
2554
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002555 {
2556 .vendor = "SyncMOS",
2557 .name = "S29C51004T",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002558 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002559 .manufacture_id = SYNCMOS_ID,
2560 .model_id = S29C51004T,
2561 .total_size = 512,
2562 .page_size = 128,
2563 .tested = TEST_UNTESTED,
2564 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002565 .probe_timing = TIMING_FIXME,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002566 .erase = erase_chip_jedec,
2567 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002568 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002569 },
2570
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002571 {
Uwe Hermanna106d152009-05-27 23:17:40 +00002572 .vendor = "TI",
Carl-Daniel Hailfinger09b4fb72009-05-26 21:26:23 +00002573 .name = "TMS29F002RB",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002574 .bustype = CHIP_BUSTYPE_NONSPI,
Carl-Daniel Hailfinger09b4fb72009-05-26 21:26:23 +00002575 .manufacture_id = TI_OLD_ID,
2576 .model_id = TI_TMS29F002RB,
2577 .total_size = 256,
2578 .page_size = 16384, /* Non-uniform sectors */
2579 .tested = TEST_UNTESTED,
2580 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002581 .probe_timing = TIMING_FIXME,
Carl-Daniel Hailfinger09b4fb72009-05-26 21:26:23 +00002582 .erase = NULL,
2583 .write = NULL,
2584 .read = read_memmapped,
2585 },
2586
2587 {
Uwe Hermanna106d152009-05-27 23:17:40 +00002588 .vendor = "TI",
Carl-Daniel Hailfinger09b4fb72009-05-26 21:26:23 +00002589 .name = "TMS29F002RT",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002590 .bustype = CHIP_BUSTYPE_NONSPI,
Carl-Daniel Hailfinger09b4fb72009-05-26 21:26:23 +00002591 .manufacture_id = TI_OLD_ID,
2592 .model_id = TI_TMS29F002RT,
2593 .total_size = 256,
2594 .page_size = 16384, /* Non-uniform sectors */
2595 .tested = TEST_UNTESTED,
2596 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002597 .probe_timing = TIMING_FIXME,
Carl-Daniel Hailfinger09b4fb72009-05-26 21:26:23 +00002598 .erase = NULL,
2599 .write = NULL,
2600 .read = read_memmapped,
2601 },
2602
2603 {
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002604 .vendor = "Winbond",
2605 .name = "W25x10",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002606 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002607 .manufacture_id = WINBOND_NEX_ID,
2608 .model_id = W_25X10,
2609 .total_size = 128,
2610 .page_size = 256,
2611 .tested = TEST_UNTESTED,
2612 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00002613 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002614 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00002615 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002616 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00002617 },
2618
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002619 {
2620 .vendor = "Winbond",
2621 .name = "W25x20",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002622 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002623 .manufacture_id = WINBOND_NEX_ID,
2624 .model_id = W_25X20,
2625 .total_size = 256,
2626 .page_size = 256,
2627 .tested = TEST_UNTESTED,
2628 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00002629 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002630 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00002631 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002632 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00002633 },
2634
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002635 {
2636 .vendor = "Winbond",
2637 .name = "W25x40",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002638 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002639 .manufacture_id = WINBOND_NEX_ID,
2640 .model_id = W_25X40,
2641 .total_size = 512,
2642 .page_size = 256,
2643 .tested = TEST_OK_PREW,
2644 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00002645 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002646 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00002647 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002648 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00002649 },
2650
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002651 {
2652 .vendor = "Winbond",
2653 .name = "W25x80",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002654 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002655 .manufacture_id = WINBOND_NEX_ID,
2656 .model_id = W_25X80,
2657 .total_size = 1024,
2658 .page_size = 256,
2659 .tested = TEST_OK_PREW,
2660 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00002661 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002662 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00002663 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002664 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00002665 },
2666
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002667 {
2668 .vendor = "Winbond",
2669 .name = "W29C011",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002670 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002671 .manufacture_id = WINBOND_ID,
2672 .model_id = W_29C011,
2673 .total_size = 128,
2674 .page_size = 128,
2675 .tested = TEST_OK_PREW,
2676 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002677 .probe_timing = TIMING_FIXME,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002678 .erase = erase_chip_jedec,
2679 .write = write_jedec,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002680 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002681 },
2682
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002683 {
2684 .vendor = "Winbond",
2685 .name = "W29C020C",
Urja Rannikko161b8852009-06-05 08:47:37 +00002686 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002687 .manufacture_id = WINBOND_ID,
2688 .model_id = W_29C020C,
2689 .total_size = 256,
2690 .page_size = 128,
2691 .tested = TEST_OK_PREW,
2692 .probe = probe_jedec,
Mateusz Murawski8b2f46b2009-06-12 21:29:36 +00002693 .probe_timing = 10,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002694 .erase = erase_chip_jedec,
2695 .write = write_jedec,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002696 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002697 },
2698
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002699 {
2700 .vendor = "Winbond",
2701 .name = "W29C040P",
Urja Rannikko161b8852009-06-05 08:47:37 +00002702 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002703 .manufacture_id = WINBOND_ID,
2704 .model_id = W_29C040P,
2705 .total_size = 512,
2706 .page_size = 256,
2707 .tested = TEST_UNTESTED,
2708 .probe = probe_jedec,
Mateusz Murawski8b2f46b2009-06-12 21:29:36 +00002709 .probe_timing = 10,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002710 .erase = erase_chip_jedec,
2711 .write = write_jedec,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002712 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002713 },
2714
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002715 {
2716 .vendor = "Winbond",
2717 .name = "W29EE011",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002718 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002719 .manufacture_id = WINBOND_ID,
2720 .model_id = W_29C011,
2721 .total_size = 128,
2722 .page_size = 128,
2723 .tested = TEST_OK_PREW,
2724 .probe = probe_w29ee011,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002725 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (w29ee011.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002726 .erase = erase_chip_jedec,
2727 .write = write_jedec,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002728 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002729 },
2730
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002731 {
2732 .vendor = "Winbond",
2733 .name = "W39V040A",
Mateusz Murawski8b2f46b2009-06-12 21:29:36 +00002734 .bustype = CHIP_BUSTYPE_LPC,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002735 .manufacture_id = WINBOND_ID,
2736 .model_id = W_39V040A,
2737 .total_size = 512,
2738 .page_size = 64*1024,
Uwe Hermann690bcba2009-05-21 17:11:25 +00002739 .tested = TEST_OK_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002740 .probe = probe_jedec,
Mateusz Murawski8b2f46b2009-06-12 21:29:36 +00002741 .probe_timing = 10,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002742 .erase = erase_chip_jedec,
Uwe Hermann24f9fbe2009-05-12 14:06:04 +00002743 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002744 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002745 },
2746
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002747 {
2748 .vendor = "Winbond",
2749 .name = "W39V040B",
Mateusz Murawski8b2f46b2009-06-12 21:29:36 +00002750 .bustype = CHIP_BUSTYPE_LPC,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002751 .manufacture_id = WINBOND_ID,
2752 .model_id = W_39V040B,
2753 .total_size = 512,
2754 .page_size = 64*1024,
2755 .tested = TEST_OK_PREW,
2756 .probe = probe_jedec,
Mateusz Murawski8b2f46b2009-06-12 21:29:36 +00002757 .probe_timing = 10,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002758 .erase = erase_chip_jedec,
Uwe Hermann24f9fbe2009-05-12 14:06:04 +00002759 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002760 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002761 },
2762
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002763 {
2764 .vendor = "Winbond",
2765 .name = "W39V040C",
Mateusz Murawski8b2f46b2009-06-12 21:29:36 +00002766 .bustype = CHIP_BUSTYPE_LPC,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002767 .manufacture_id = WINBOND_ID,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00002768 .model_id = W_39V040C,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002769 .total_size = 512,
2770 .page_size = 64*1024,
2771 .tested = TEST_OK_PREW,
2772 .probe = probe_w39v040c,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002773 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (w39v040c.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002774 .erase = erase_w39v040c,
2775 .write = write_w39v040c,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002776 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002777 },
2778
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002779 {
2780 .vendor = "Winbond",
2781 .name = "W39V040FA",
Mateusz Murawski8b2f46b2009-06-12 21:29:36 +00002782 .bustype = CHIP_BUSTYPE_FWH,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002783 .manufacture_id = WINBOND_ID,
2784 .model_id = W_39V040FA,
2785 .total_size = 512,
2786 .page_size = 64*1024,
2787 .tested = TEST_OK_PREW,
2788 .probe = probe_jedec,
Mateusz Murawski8b2f46b2009-06-12 21:29:36 +00002789 .probe_timing = 10,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002790 .erase = erase_chip_jedec,
Uwe Hermann24f9fbe2009-05-12 14:06:04 +00002791 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002792 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002793 },
2794
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002795 {
2796 .vendor = "Winbond",
2797 .name = "W39V080A",
Mateusz Murawski8b2f46b2009-06-12 21:29:36 +00002798 .bustype = CHIP_BUSTYPE_LPC,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002799 .manufacture_id = WINBOND_ID,
2800 .model_id = W_39V080A,
2801 .total_size = 1024,
2802 .page_size = 64*1024,
2803 .tested = TEST_OK_PREW,
2804 .probe = probe_jedec,
Mateusz Murawski8b2f46b2009-06-12 21:29:36 +00002805 .probe_timing = 10,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002806 .erase = erase_chip_jedec,
Uwe Hermann24f9fbe2009-05-12 14:06:04 +00002807 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002808 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002809 },
2810
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002811 {
2812 .vendor = "Winbond",
2813 .name = "W49F002U",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002814 .bustype = CHIP_BUSTYPE_NONSPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002815 .manufacture_id = WINBOND_ID,
2816 .model_id = W_49F002U,
2817 .total_size = 256,
2818 .page_size = 128,
2819 .tested = TEST_OK_PREW,
2820 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002821 .probe_timing = TIMING_FIXME,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002822 .erase = erase_chip_jedec,
2823 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002824 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002825 },
2826
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002827 {
2828 .vendor = "Winbond",
2829 .name = "W49V002A",
Mateusz Murawski8b2f46b2009-06-12 21:29:36 +00002830 .bustype = CHIP_BUSTYPE_LPC,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002831 .manufacture_id = WINBOND_ID,
2832 .model_id = W_49V002A,
2833 .total_size = 256,
2834 .page_size = 128,
2835 .tested = TEST_OK_PREW,
2836 .probe = probe_jedec,
Mateusz Murawski8b2f46b2009-06-12 21:29:36 +00002837 .probe_timing = 10,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002838 .erase = erase_chip_jedec,
2839 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002840 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002841 },
2842
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002843 {
2844 .vendor = "Winbond",
2845 .name = "W49V002FA",
Mateusz Murawski8b2f46b2009-06-12 21:29:36 +00002846 .bustype = CHIP_BUSTYPE_FWH,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002847 .manufacture_id = WINBOND_ID,
2848 .model_id = W_49V002FA,
2849 .total_size = 256,
2850 .page_size = 128,
2851 .tested = TEST_UNTESTED,
2852 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002853 .probe_timing = TIMING_FIXME,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002854 .erase = erase_chip_jedec,
2855 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002856 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002857 },
2858
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002859 {
2860 .vendor = "Winbond",
2861 .name = "W39V080FA",
Mateusz Murawski8b2f46b2009-06-12 21:29:36 +00002862 .bustype = CHIP_BUSTYPE_FWH,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002863 .manufacture_id = WINBOND_ID,
2864 .model_id = W_39V080FA,
2865 .total_size = 1024,
2866 .page_size = 64*1024,
2867 .tested = TEST_OK_PREW,
2868 .probe = probe_winbond_fwhub,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002869 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (w39v080fa.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002870 .erase = erase_winbond_fwhub,
2871 .write = write_winbond_fwhub,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002872 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002873 },
2874
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002875 {
2876 .vendor = "Winbond",
2877 .name = "W39V080FA (dual mode)",
Mateusz Murawski8b2f46b2009-06-12 21:29:36 +00002878 .bustype = CHIP_BUSTYPE_FWH,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002879 .manufacture_id = WINBOND_ID,
2880 .model_id = W_39V080FA_DM,
2881 .total_size = 512,
2882 .page_size = 64*1024,
2883 .tested = TEST_UNTESTED,
2884 .probe = probe_winbond_fwhub,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002885 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (w39v080fa.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002886 .erase = erase_winbond_fwhub,
2887 .write = write_winbond_fwhub,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002888 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002889 },
2890
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002891 {
2892 .vendor = "Atmel",
2893 .name = "unknown Atmel SPI chip",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002894 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002895 .manufacture_id = ATMEL_ID,
2896 .model_id = GENERIC_DEVICE_ID,
2897 .total_size = 0,
2898 .page_size = 256,
Carl-Daniel Hailfinger42882fd2009-04-22 13:33:43 +00002899 .tested = TEST_BAD_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002900 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00002901 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002902 .erase = NULL,
2903 .write = NULL,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002904 .read = NULL,
FENG yu ningff692fb2008-12-08 18:15:10 +00002905 },
2906
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002907 {
2908 .vendor = "EON",
2909 .name = "unknown EON SPI chip",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002910 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002911 .manufacture_id = EON_ID_NOPREFIX,
2912 .model_id = GENERIC_DEVICE_ID,
2913 .total_size = 0,
2914 .page_size = 256,
Carl-Daniel Hailfinger42882fd2009-04-22 13:33:43 +00002915 .tested = TEST_BAD_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002916 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00002917 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002918 .erase = NULL,
2919 .write = NULL,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002920 .read = NULL,
FENG yu ningff692fb2008-12-08 18:15:10 +00002921 },
2922
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002923 {
2924 .vendor = "Macronix",
2925 .name = "unknown Macronix SPI chip",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002926 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002927 .manufacture_id = MX_ID,
2928 .model_id = GENERIC_DEVICE_ID,
2929 .total_size = 0,
2930 .page_size = 256,
Carl-Daniel Hailfinger42882fd2009-04-22 13:33:43 +00002931 .tested = TEST_BAD_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002932 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00002933 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002934 .erase = NULL,
2935 .write = NULL,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002936 .read = NULL,
FENG yu ningff692fb2008-12-08 18:15:10 +00002937 },
2938
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002939 {
2940 .vendor = "PMC",
2941 .name = "unknown PMC SPI chip",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002942 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002943 .manufacture_id = PMC_ID,
2944 .model_id = GENERIC_DEVICE_ID,
2945 .total_size = 0,
2946 .page_size = 256,
Carl-Daniel Hailfinger42882fd2009-04-22 13:33:43 +00002947 .tested = TEST_BAD_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002948 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00002949 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002950 .erase = NULL,
2951 .write = NULL,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002952 .read = NULL,
FENG yu ningff692fb2008-12-08 18:15:10 +00002953 },
2954
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002955 {
2956 .vendor = "SST",
2957 .name = "unknown SST SPI chip",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002958 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002959 .manufacture_id = SST_ID,
2960 .model_id = GENERIC_DEVICE_ID,
2961 .total_size = 0,
2962 .page_size = 256,
Carl-Daniel Hailfinger42882fd2009-04-22 13:33:43 +00002963 .tested = TEST_BAD_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002964 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00002965 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002966 .erase = NULL,
2967 .write = NULL,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002968 .read = NULL,
FENG yu ningff692fb2008-12-08 18:15:10 +00002969 },
2970
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002971 {
2972 .vendor = "ST",
2973 .name = "unknown ST SPI chip",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002974 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002975 .manufacture_id = ST_ID,
2976 .model_id = GENERIC_DEVICE_ID,
2977 .total_size = 0,
2978 .page_size = 256,
Carl-Daniel Hailfinger42882fd2009-04-22 13:33:43 +00002979 .tested = TEST_BAD_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002980 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00002981 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002982 .erase = NULL,
2983 .write = NULL,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002984 .read = NULL,
FENG yu ningff692fb2008-12-08 18:15:10 +00002985 },
Uwe Hermannfc425e82008-03-16 02:06:25 +00002986
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002987 { NULL }
Stephan Guilloux72cf5652009-04-21 01:46:07 +00002988};