blob: ac27c90548ac1940da9619f3b2cae5db6c04f9d2 [file] [log] [blame]
Ollie Lho184a4042005-11-26 21:55:36 +00001/*
Uwe Hermannd1107642007-08-29 17:52:32 +00002 * This file is part of the flashrom project.
Ollie Lho184a4042005-11-26 21:55:36 +00003 *
Uwe Hermannd22a1d42007-09-09 20:21:05 +00004 * Copyright (C) 2000 Silicon Integrated System Corporation
5 * Copyright (C) 2004 Tyan Corp
Stefan Reinauer4c390c82008-07-02 13:33:09 +00006 * Copyright (C) 2005-2008 coresystems GmbH <stepan@openbios.org>
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +00007 * Copyright (C) 2006-2009 Carl-Daniel Hailfinger
Uwe Hermannd1107642007-08-29 17:52:32 +00008 *
Stefan Reinauerce532972007-05-23 17:20:56 +00009 * This program is free software; you can redistribute it and/or modify
10 * it under the terms of the GNU General Public License as published by
11 * the Free Software Foundation; either version 2 of the License, or
12 * (at your option) any later version.
Ollie Lho184a4042005-11-26 21:55:36 +000013 *
Stefan Reinauerce532972007-05-23 17:20:56 +000014 * This program is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 * GNU General Public License for more details.
Ollie Lho184a4042005-11-26 21:55:36 +000018 *
Stefan Reinauerce532972007-05-23 17:20:56 +000019 * You should have received a copy of the GNU General Public License
20 * along with this program; if not, write to the Free Software
Uwe Hermannd1107642007-08-29 17:52:32 +000021 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Ollie Lho184a4042005-11-26 21:55:36 +000022 */
23
24#include "flash.h"
Carl-Daniel Hailfinger08454642009-06-15 14:14:48 +000025#include "flashchips.h"
Ollie Lho184a4042005-11-26 21:55:36 +000026
Uwe Hermannfc425e82008-03-16 02:06:25 +000027/**
Uwe Hermanna9720402009-05-21 15:55:46 +000028 * List of supported flash chips.
Uwe Hermannfc425e82008-03-16 02:06:25 +000029 *
30 * Please keep the list sorted by vendor name and chip name, so that
31 * the output of 'flashrom -L' is alphabetically sorted.
32 */
Ollie Lho184a4042005-11-26 21:55:36 +000033struct flashchip flashchips[] = {
Uwe Hermannfc425e82008-03-16 02:06:25 +000034
Carl-Daniel Hailfinger21eedec2009-07-23 12:42:01 +000035 /*
36 * .vendor = Vendor name
37 * .name = Chip name
38 * .bustype = Supported flash bus types (Parallel, LPC...)
39 * .manufacture_id = Manufacturer chip ID
40 * .model_id = Model chip ID
41 * .total_size = Total size in (binary) kbytes
42 * .page_size = Page or eraseblock(?) size in bytes
43 * .tested = Test status
44 * .probe = Probe function
45 * .probe_timing = Probe function delay
46 * .erase = Chip erase function
Carl-Daniel Hailfinger40107122009-10-01 13:15:01 +000047 * .block_erasers[] = Array of erase layouts and erase functions
48 * {
49 * .eraseblocks[] = Array of { blocksize, blockcount }
50 * .block_erase = Block erase function
51 * }
Carl-Daniel Hailfinger21eedec2009-07-23 12:42:01 +000052 * .write = Chip write function
53 * .read = Chip read function
FENG yu ningff692fb2008-12-08 18:15:10 +000054 */
55
Stephan Guilloux5c5b5252009-01-08 03:40:17 +000056 {
57 .vendor = "AMD",
Uwe Hermanna8b37272009-06-19 15:54:39 +000058 .name = "Am29F010A/B",
59 .bustype = CHIP_BUSTYPE_PARALLEL,
60 .manufacture_id = AMD_ID,
61 .model_id = AM_29F010B, /* Same as Am29F010A */
62 .total_size = 128,
63 .page_size = 16 * 1024,
64 .tested = TEST_OK_PREW,
65 .probe = probe_29f040b,
Udu Ogahc04ee222009-09-05 01:31:32 +000066 .probe_timing = TIMING_ZERO,
Uwe Hermanna8b37272009-06-19 15:54:39 +000067 .erase = erase_29f040b,
68 .write = write_pm29f002,
69 .read = read_memmapped,
70 },
71
72 {
73 .vendor = "AMD",
Stephan Guilloux5c5b5252009-01-08 03:40:17 +000074 .name = "Am29F002(N)BB",
Urja Rannikko038a3122009-06-28 19:19:25 +000075 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +000076 .manufacture_id = AMD_ID,
77 .model_id = AM_29F002BB,
78 .total_size = 256,
79 .page_size = 256,
80 .tested = TEST_UNTESTED,
81 .probe = probe_jedec,
Udu Ogahc04ee222009-09-05 01:31:32 +000082 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +000083 .erase = erase_chip_jedec,
84 .write = write_en29f002a,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +000085 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +000086 },
87
Stephan Guilloux5c5b5252009-01-08 03:40:17 +000088 {
89 .vendor = "AMD",
90 .name = "Am29F002(N)BT",
Urja Rannikko038a3122009-06-28 19:19:25 +000091 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +000092 .manufacture_id = AMD_ID,
93 .model_id = AM_29F002BT,
94 .total_size = 256,
95 .page_size = 256,
96 .tested = TEST_OK_PREW,
97 .probe = probe_jedec,
Udu Ogahc04ee222009-09-05 01:31:32 +000098 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +000099 .erase = erase_chip_jedec,
100 .write = write_en29f002a,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +0000101 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +0000102 },
103
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000104 {
105 .vendor = "AMD",
106 .name = "Am29F016D",
Urja Rannikko038a3122009-06-28 19:19:25 +0000107 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000108 .manufacture_id = AMD_ID,
109 .model_id = AM_29F016D,
110 .total_size = 2048,
111 .page_size = 64 * 1024,
112 .tested = TEST_UNTESTED,
113 .probe = probe_29f040b,
Maciej Pijankac6e11112009-06-03 14:46:22 +0000114 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (am29f040b.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000115 .erase = erase_29f040b,
116 .write = write_29f040b,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +0000117 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +0000118 },
119
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000120 {
121 .vendor = "AMD",
122 .name = "Am29F040B",
Urja Rannikko038a3122009-06-28 19:19:25 +0000123 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000124 .manufacture_id = AMD_ID,
125 .model_id = AM_29F040B,
126 .total_size = 512,
127 .page_size = 64 * 1024,
128 .tested = TEST_OK_PREW,
129 .probe = probe_29f040b,
Maciej Pijankac6e11112009-06-03 14:46:22 +0000130 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (am29f040b.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000131 .erase = erase_29f040b,
132 .write = write_29f040b,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +0000133 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +0000134 },
135
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000136 {
137 .vendor = "AMD",
Peter Stuge8440cc02009-01-25 23:55:12 +0000138 .name = "Am29F080B",
Urja Rannikko038a3122009-06-28 19:19:25 +0000139 .bustype = CHIP_BUSTYPE_PARALLEL,
Mateusz Murawski5bae4382009-06-02 00:38:14 +0000140 .manufacture_id = AMD_ID,
141 .model_id = AM_29F080B,
Peter Stuge8440cc02009-01-25 23:55:12 +0000142 .total_size = 1024,
143 .page_size = 64 * 1024,
144 .tested = TEST_UNTESTED,
145 .probe = probe_jedec,
Udu Ogahc04ee222009-09-05 01:31:32 +0000146 .probe_timing = TIMING_ZERO,
Peter Stuge8440cc02009-01-25 23:55:12 +0000147 .erase = erase_29f040b,
148 .write = write_29f040b,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +0000149 .read = read_memmapped,
Peter Stuge8440cc02009-01-25 23:55:12 +0000150 },
151
152 {
153 .vendor = "AMD",
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000154 .name = "Am29LV040B",
Urja Rannikko038a3122009-06-28 19:19:25 +0000155 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000156 .manufacture_id = AMD_ID,
157 .model_id = AM_29LV040B,
158 .total_size = 512,
159 .page_size = 64 * 1024,
160 .tested = TEST_UNTESTED,
161 .probe = probe_29f040b,
Maciej Pijankac6e11112009-06-03 14:46:22 +0000162 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (am29f040b.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000163 .erase = erase_29f040b,
164 .write = write_29f040b,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +0000165 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +0000166 },
167
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000168 {
Peter Stuge8440cc02009-01-25 23:55:12 +0000169 .vendor = "AMD",
170 .name = "Am29LV081B",
Urja Rannikko038a3122009-06-28 19:19:25 +0000171 .bustype = CHIP_BUSTYPE_PARALLEL,
Mateusz Murawski5bae4382009-06-02 00:38:14 +0000172 .manufacture_id = AMD_ID,
Carl-Daniel Hailfinger6d5d2532009-08-10 10:14:23 +0000173 .model_id = AM_29LV080B,
Peter Stuge8440cc02009-01-25 23:55:12 +0000174 .total_size = 1024,
175 .page_size = 64 * 1024,
176 .tested = TEST_UNTESTED,
177 .probe = probe_29f040b,
Maciej Pijankac6e11112009-06-03 14:46:22 +0000178 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (am29f040b.c) */
Peter Stuge8440cc02009-01-25 23:55:12 +0000179 .erase = erase_29f040b,
180 .write = write_29f040b,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +0000181 .read = read_memmapped,
Peter Stuge8440cc02009-01-25 23:55:12 +0000182 },
183
184 {
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000185 .vendor = "ASD",
186 .name = "AE49F2008",
Urja Rannikko038a3122009-06-28 19:19:25 +0000187 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000188 .manufacture_id = ASD_ID,
189 .model_id = ASD_AE49F2008,
190 .total_size = 256,
191 .page_size = 128,
192 .tested = TEST_UNTESTED,
193 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +0000194 .probe_timing = TIMING_FIXME,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000195 .erase = erase_chip_jedec,
196 .write = write_jedec,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +0000197 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +0000198 },
199
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000200 {
201 .vendor = "Atmel",
202 .name = "AT25DF021",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000203 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000204 .manufacture_id = ATMEL_ID,
205 .model_id = AT_25DF021,
206 .total_size = 256,
207 .page_size = 256,
208 .tested = TEST_UNTESTED,
209 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +0000210 .probe_timing = TIMING_ZERO,
Carl-Daniel Hailfingerf8bc28f2009-01-08 16:53:13 +0000211 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +0000212 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000213 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000214 },
215
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000216 {
217 .vendor = "Atmel",
218 .name = "AT25DF041A",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000219 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000220 .manufacture_id = ATMEL_ID,
221 .model_id = AT_25DF041A,
222 .total_size = 512,
223 .page_size = 256,
224 .tested = TEST_UNTESTED,
225 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +0000226 .probe_timing = TIMING_ZERO,
Carl-Daniel Hailfingerf8bc28f2009-01-08 16:53:13 +0000227 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +0000228 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000229 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000230 },
231
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000232 {
233 .vendor = "Atmel",
234 .name = "AT25DF081",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000235 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000236 .manufacture_id = ATMEL_ID,
237 .model_id = AT_25DF081,
238 .total_size = 1024,
239 .page_size = 256,
240 .tested = TEST_UNTESTED,
241 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +0000242 .probe_timing = TIMING_ZERO,
Carl-Daniel Hailfingerf8bc28f2009-01-08 16:53:13 +0000243 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +0000244 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000245 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000246 },
247
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000248 {
249 .vendor = "Atmel",
250 .name = "AT25DF161",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000251 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000252 .manufacture_id = ATMEL_ID,
253 .model_id = AT_25DF161,
254 .total_size = 2048,
255 .page_size = 256,
256 .tested = TEST_UNTESTED,
257 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +0000258 .probe_timing = TIMING_ZERO,
Carl-Daniel Hailfingerf8bc28f2009-01-08 16:53:13 +0000259 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +0000260 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000261 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000262 },
263
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000264 {
265 .vendor = "Atmel",
266 .name = "AT25DF321",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000267 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000268 .manufacture_id = ATMEL_ID,
269 .model_id = AT_25DF321,
270 .total_size = 4096,
271 .page_size = 256,
272 .tested = TEST_OK_PREW,
273 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +0000274 .probe_timing = TIMING_ZERO,
Carl-Daniel Hailfingerf8bc28f2009-01-08 16:53:13 +0000275 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +0000276 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000277 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000278 },
279
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000280 {
281 .vendor = "Atmel",
282 .name = "AT25DF321A",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000283 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000284 .manufacture_id = ATMEL_ID,
285 .model_id = AT_25DF321A,
286 .total_size = 4096,
287 .page_size = 256,
288 .tested = TEST_UNTESTED,
289 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +0000290 .probe_timing = TIMING_ZERO,
Carl-Daniel Hailfingerf8bc28f2009-01-08 16:53:13 +0000291 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +0000292 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000293 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000294 },
295
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000296 {
297 .vendor = "Atmel",
298 .name = "AT25DF641",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000299 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000300 .manufacture_id = ATMEL_ID,
301 .model_id = AT_25DF641,
302 .total_size = 8192,
303 .page_size = 256,
304 .tested = TEST_UNTESTED,
305 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +0000306 .probe_timing = TIMING_ZERO,
Carl-Daniel Hailfingerf8bc28f2009-01-08 16:53:13 +0000307 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +0000308 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000309 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000310 },
311
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000312 {
313 .vendor = "Atmel",
314 .name = "AT25F512B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000315 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000316 .manufacture_id = ATMEL_ID,
317 .model_id = AT_25F512B,
318 .total_size = 64,
319 .page_size = 256,
320 .tested = TEST_UNTESTED,
321 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +0000322 .probe_timing = TIMING_ZERO,
Carl-Daniel Hailfingerf8bc28f2009-01-08 16:53:13 +0000323 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +0000324 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000325 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000326 },
327
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000328 {
329 .vendor = "Atmel",
330 .name = "AT25FS010",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000331 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000332 .manufacture_id = ATMEL_ID,
333 .model_id = AT_25FS010,
334 .total_size = 128,
335 .page_size = 256,
336 .tested = TEST_UNTESTED,
337 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +0000338 .probe_timing = TIMING_ZERO,
Carl-Daniel Hailfingerf8bc28f2009-01-08 16:53:13 +0000339 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +0000340 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000341 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000342 },
343
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000344 {
345 .vendor = "Atmel",
346 .name = "AT25FS040",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000347 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000348 .manufacture_id = ATMEL_ID,
349 .model_id = AT_25FS040,
350 .total_size = 512,
351 .page_size = 256,
352 .tested = TEST_UNTESTED,
353 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +0000354 .probe_timing = TIMING_ZERO,
Carl-Daniel Hailfingerf8bc28f2009-01-08 16:53:13 +0000355 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +0000356 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000357 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000358 },
359
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000360 {
361 .vendor = "Atmel",
362 .name = "AT26DF041",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000363 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000364 .manufacture_id = ATMEL_ID,
365 .model_id = AT_26DF041,
366 .total_size = 512,
367 .page_size = 256,
368 .tested = TEST_UNTESTED,
369 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +0000370 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000371 .erase = NULL,
372 .write = NULL /* Incompatible Page write */,
373 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000374 },
375
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000376 {
377 .vendor = "Atmel",
378 .name = "AT26DF081A",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000379 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000380 .manufacture_id = ATMEL_ID,
381 .model_id = AT_26DF081A,
382 .total_size = 1024,
383 .page_size = 256,
384 .tested = TEST_UNTESTED,
385 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +0000386 .probe_timing = TIMING_ZERO,
Carl-Daniel Hailfingerf8bc28f2009-01-08 16:53:13 +0000387 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +0000388 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000389 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000390 },
391
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000392 {
393 .vendor = "Atmel",
394 .name = "AT26DF161",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000395 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000396 .manufacture_id = ATMEL_ID,
397 .model_id = AT_26DF161,
398 .total_size = 2048,
399 .page_size = 256,
400 .tested = TEST_UNTESTED,
401 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +0000402 .probe_timing = TIMING_ZERO,
Carl-Daniel Hailfingerf8bc28f2009-01-08 16:53:13 +0000403 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +0000404 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000405 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000406 },
407
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000408 {
409 .vendor = "Atmel",
410 .name = "AT26DF161A",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000411 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000412 .manufacture_id = ATMEL_ID,
413 .model_id = AT_26DF161A,
414 .total_size = 2048,
415 .page_size = 256,
416 .tested = TEST_UNTESTED,
417 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +0000418 .probe_timing = TIMING_ZERO,
Carl-Daniel Hailfingerf8bc28f2009-01-08 16:53:13 +0000419 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +0000420 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000421 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000422 },
423
424 /*The AT26DF321 has the same ID as the AT25DF321. */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000425 /*{
426 .vendor = "Atmel",
427 .name = "AT26DF321",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000428 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000429 .manufacture_id = ATMEL_ID,
430 .model_id = AT_26DF321,
431 .total_size = 4096,
432 .page_size = 256,
433 .tested = TEST_UNTESTED,
434 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +0000435 .probe_timing = TIMING_ZERO,
Carl-Daniel Hailfingerf8bc28f2009-01-08 16:53:13 +0000436 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +0000437 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000438 .read = spi_chip_read,
439 },*/
FENG yu ningff692fb2008-12-08 18:15:10 +0000440
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000441 {
442 .vendor = "Atmel",
443 .name = "AT26F004",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000444 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000445 .manufacture_id = ATMEL_ID,
446 .model_id = AT_26F004,
447 .total_size = 512,
448 .page_size = 256,
449 .tested = TEST_UNTESTED,
450 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +0000451 .probe_timing = TIMING_ZERO,
Carl-Daniel Hailfingerf8bc28f2009-01-08 16:53:13 +0000452 .erase = spi_chip_erase_60_c7,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000453 .write = NULL /* Incompatible Page write */,
454 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000455 },
456
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000457 {
458 .vendor = "Atmel",
Maciej Pijankabc2bbd22009-06-02 16:45:59 +0000459 .name = "AT29C512",
Urja Rannikko038a3122009-06-28 19:19:25 +0000460 .bustype = CHIP_BUSTYPE_PARALLEL,
Maciej Pijankabc2bbd22009-06-02 16:45:59 +0000461 .manufacture_id = ATMEL_ID,
462 .model_id = AT_29C512,
463 .total_size = 64,
464 .page_size = 128,
465 .tested = TEST_OK_PREW,
Maciej Pijankac6e11112009-06-03 14:46:22 +0000466 .probe = probe_jedec,
467 .probe_timing = 10000, /* 10mS, Enter=Exec */
Maciej Pijankabc2bbd22009-06-02 16:45:59 +0000468 .erase = erase_chip_jedec,
469 .write = write_jedec,
470 .read = read_memmapped,
471
472 },
473
474 {
475 .vendor = "Atmel",
Uwe Hermann8403ccb2009-05-16 21:39:19 +0000476 .name = "AT29C010A",
Urja Rannikko161b8852009-06-05 08:47:37 +0000477 .bustype = CHIP_BUSTYPE_PARALLEL,
Uwe Hermann8403ccb2009-05-16 21:39:19 +0000478 .manufacture_id = ATMEL_ID,
479 .model_id = AT_29C010A,
480 .total_size = 128,
481 .page_size = 128,
482 .tested = TEST_OK_PRE,
483 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +0000484 .probe_timing = 10000, /* 10mS, Enter=Exec */
Uwe Hermann8403ccb2009-05-16 21:39:19 +0000485 .erase = erase_chip_jedec,
486 .write = write_jedec, /* FIXME */
487 .read = read_memmapped,
488 },
489
490 {
491 .vendor = "Atmel",
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000492 .name = "AT29C020",
Urja Rannikko161b8852009-06-05 08:47:37 +0000493 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000494 .manufacture_id = ATMEL_ID,
495 .model_id = AT_29C020,
496 .total_size = 256,
497 .page_size = 256,
498 .tested = TEST_OK_PREW,
499 .probe = probe_jedec,
Mateusz Murawski8b2f46b2009-06-12 21:29:36 +0000500 .probe_timing = 10000, /* 10ms */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000501 .erase = erase_chip_jedec,
502 .write = write_jedec,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +0000503 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +0000504 },
505
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000506 {
507 .vendor = "Atmel",
508 .name = "AT29C040A",
Urja Rannikko161b8852009-06-05 08:47:37 +0000509 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000510 .manufacture_id = ATMEL_ID,
511 .model_id = AT_29C040A,
512 .total_size = 512,
513 .page_size = 256,
514 .tested = TEST_UNTESTED,
515 .probe = probe_jedec,
Mateusz Murawski8b2f46b2009-06-12 21:29:36 +0000516 .probe_timing = 10000, /* 10 ms */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000517 .erase = erase_chip_jedec,
518 .write = write_jedec,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +0000519 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +0000520 },
521
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000522 {
523 .vendor = "Atmel",
524 .name = "AT45CS1282",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000525 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000526 .manufacture_id = ATMEL_ID,
527 .model_id = AT_45CS1282,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000528 .total_size = 16896 /* No power of two sizes */,
529 .page_size = 1056 /* No power of two sizes */,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000530 .tested = TEST_BAD_READ,
531 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +0000532 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000533 .erase = NULL,
534 .write = NULL /* Incompatible Page write */,
535 .read = NULL /* Incompatible read */,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000536 },
FENG yu ningff692fb2008-12-08 18:15:10 +0000537
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000538 {
539 .vendor = "Atmel",
540 .name = "AT45DB011D",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000541 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000542 .manufacture_id = ATMEL_ID,
543 .model_id = AT_45DB011D,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000544 .total_size = 128 /* Size can only be determined from status register */,
545 .page_size = 256 /* Size can only be determined from status register */,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000546 .tested = TEST_BAD_READ,
547 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +0000548 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000549 .erase = NULL,
550 .write = NULL,
551 .read = NULL,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000552 },
FENG yu ningff692fb2008-12-08 18:15:10 +0000553
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000554 {
555 .vendor = "Atmel",
556 .name = "AT45DB021D",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000557 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000558 .manufacture_id = ATMEL_ID,
559 .model_id = AT_45DB021D,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000560 .total_size = 256 /* Size can only be determined from status register */,
561 .page_size = 256 /* Size can only be determined from status register */,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000562 .tested = TEST_BAD_READ,
563 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +0000564 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000565 .erase = NULL,
566 .write = NULL,
567 .read = NULL,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000568 },
FENG yu ningff692fb2008-12-08 18:15:10 +0000569
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000570 {
571 .vendor = "Atmel",
572 .name = "AT45DB041D",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000573 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000574 .manufacture_id = ATMEL_ID,
575 .model_id = AT_45DB041D,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000576 .total_size = 512 /* Size can only be determined from status register */,
577 .page_size = 256 /* Size can only be determined from status register */,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000578 .tested = TEST_BAD_READ,
579 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +0000580 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000581 .erase = NULL,
582 .write = NULL,
583 .read = NULL,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000584 },
FENG yu ningff692fb2008-12-08 18:15:10 +0000585
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000586 {
587 .vendor = "Atmel",
588 .name = "AT45DB081D",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000589 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000590 .manufacture_id = ATMEL_ID,
591 .model_id = AT_45DB081D,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000592 .total_size = 1024 /* Size can only be determined from status register */,
593 .page_size = 256 /* Size can only be determined from status register */,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000594 .tested = TEST_BAD_READ,
595 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +0000596 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000597 .erase = NULL,
598 .write = NULL,
599 .read = NULL,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000600 },
FENG yu ningff692fb2008-12-08 18:15:10 +0000601
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000602 {
603 .vendor = "Atmel",
604 .name = "AT45DB161D",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000605 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000606 .manufacture_id = ATMEL_ID,
607 .model_id = AT_45DB161D,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000608 .total_size = 2048 /* Size can only be determined from status register */,
609 .page_size = 512 /* Size can only be determined from status register */,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000610 .tested = TEST_BAD_READ,
611 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +0000612 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000613 .erase = NULL,
614 .write = NULL,
615 .read = NULL,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000616 },
FENG yu ningff692fb2008-12-08 18:15:10 +0000617
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000618 {
619 .vendor = "Atmel",
620 .name = "AT45DB321C",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000621 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000622 .manufacture_id = ATMEL_ID,
623 .model_id = AT_45DB321C,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000624 .total_size = 4224 /* No power of two sizes */,
625 .page_size = 528 /* No power of two sizes */,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000626 .tested = TEST_BAD_READ,
627 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +0000628 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000629 .erase = NULL,
630 .write = NULL,
631 .read = NULL /* Incompatible read */,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000632 },
FENG yu ningff692fb2008-12-08 18:15:10 +0000633
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000634 {
635 .vendor = "Atmel",
636 .name = "AT45DB321D",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000637 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000638 .manufacture_id = ATMEL_ID,
639 .model_id = AT_45DB321D,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000640 .total_size = 4096 /* Size can only be determined from status register */,
641 .page_size = 512 /* Size can only be determined from status register */,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000642 .tested = TEST_BAD_READ,
643 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +0000644 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000645 .erase = NULL,
646 .write = NULL,
647 .read = NULL,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000648 },
FENG yu ningff692fb2008-12-08 18:15:10 +0000649
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000650 {
651 .vendor = "Atmel",
652 .name = "AT45DB642D",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000653 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000654 .manufacture_id = ATMEL_ID,
655 .model_id = AT_45DB642D,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000656 .total_size = 8192 /* Size can only be determined from status register */,
657 .page_size = 1024 /* Size can only be determined from status register */,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000658 .tested = TEST_BAD_READ,
659 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +0000660 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000661 .erase = NULL,
662 .write = NULL,
663 .read = NULL,
Carl-Daniel Hailfinger66afb362009-03-19 12:18:13 +0000664 },
FENG yu ningff692fb2008-12-08 18:15:10 +0000665
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000666 {
667 .vendor = "Atmel",
Uwe Hermannb4dcb712009-05-13 11:36:06 +0000668 .name = "AT49BV512",
Urja Rannikko161b8852009-06-05 08:47:37 +0000669 .bustype = CHIP_BUSTYPE_PARALLEL,
Uwe Hermannb4dcb712009-05-13 11:36:06 +0000670 .manufacture_id = ATMEL_ID,
671 .model_id = AT_49BV512,
672 .total_size = 64,
673 .page_size = 64,
674 .tested = TEST_OK_PREW,
675 .probe = probe_jedec,
Udu Ogahc04ee222009-09-05 01:31:32 +0000676 .probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */
Uwe Hermannb4dcb712009-05-13 11:36:06 +0000677 .erase = erase_chip_jedec,
678 .write = write_49f002,
679 .read = read_memmapped,
680 },
681
682 {
683 .vendor = "Atmel",
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000684 .name = "AT49F002(N)",
Urja Rannikko161b8852009-06-05 08:47:37 +0000685 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000686 .manufacture_id = ATMEL_ID,
687 .model_id = AT_49F002N,
688 .total_size = 256,
689 .page_size = 256,
690 .tested = TEST_UNTESTED,
691 .probe = probe_jedec,
Udu Ogahc04ee222009-09-05 01:31:32 +0000692 .probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000693 .erase = erase_chip_jedec,
694 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +0000695 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +0000696 },
697
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000698 {
699 .vendor = "Atmel",
700 .name = "AT49F002(N)T",
Urja Rannikko161b8852009-06-05 08:47:37 +0000701 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000702 .manufacture_id = ATMEL_ID,
703 .model_id = AT_49F002NT,
704 .total_size = 256,
705 .page_size = 256,
706 .tested = TEST_OK_PREW,
707 .probe = probe_jedec,
Udu Ogahc04ee222009-09-05 01:31:32 +0000708 .probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000709 .erase = erase_chip_jedec,
710 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +0000711 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +0000712 },
713
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000714 {
715 .vendor = "AMIC",
716 .name = "A25L40P",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +0000717 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000718 .manufacture_id = AMIC_ID,
719 .model_id = AMIC_A25L40P,
720 .total_size = 512,
721 .page_size = 256,
722 .tested = TEST_OK_PREW,
723 .probe = probe_spi_rdid4,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +0000724 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000725 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +0000726 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000727 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +0000728 },
729
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000730 {
731 .vendor = "AMIC",
732 .name = "A29002B",
Urja Rannikko038a3122009-06-28 19:19:25 +0000733 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000734 .manufacture_id = AMIC_ID_NOPREFIX,
735 .model_id = AMIC_A29002B,
736 .total_size = 256,
737 .page_size = 64 * 1024,
738 .tested = TEST_UNTESTED,
739 .probe = probe_29f002,
Maciej Pijankac6e11112009-06-03 14:46:22 +0000740 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (mx29f002.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000741 .erase = erase_29f002,
742 .write = write_29f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +0000743 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +0000744 },
745
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000746 {
747 .vendor = "AMIC",
748 .name = "A29002T",
Urja Rannikko038a3122009-06-28 19:19:25 +0000749 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000750 .manufacture_id = AMIC_ID_NOPREFIX,
751 .model_id = AMIC_A29002T,
752 .total_size = 256,
753 .page_size = 64 * 1024,
754 .tested = TEST_OK_PREW,
755 .probe = probe_29f002,
Maciej Pijankac6e11112009-06-03 14:46:22 +0000756 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (mx29f002.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000757 .erase = erase_29f002,
758 .write = write_29f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +0000759 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +0000760 },
761
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000762 {
763 .vendor = "AMIC",
764 .name = "A29040B",
Urja Rannikko161b8852009-06-05 08:47:37 +0000765 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000766 .manufacture_id = AMIC_ID_NOPREFIX,
767 .model_id = AMIC_A29040B,
768 .total_size = 512,
769 .page_size = 64 * 1024,
770 .tested = TEST_OK_PR,
771 .probe = probe_29f040b,
Maciej Pijankac6e11112009-06-03 14:46:22 +0000772 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (am29f040b.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000773 .erase = erase_29f040b,
774 .write = write_29f040b,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +0000775 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +0000776 },
777
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000778 {
779 .vendor = "AMIC",
780 .name = "A49LF040A",
Urja Rannikko161b8852009-06-05 08:47:37 +0000781 .bustype = CHIP_BUSTYPE_LPC,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000782 .manufacture_id = AMIC_ID_NOPREFIX,
783 .model_id = AMIC_A49LF040A,
784 .total_size = 512,
785 .page_size = 64 * 1024,
786 .tested = TEST_OK_PREW,
787 .probe = probe_49fl00x,
Udu Ogahc04ee222009-09-05 01:31:32 +0000788 .probe_timing = TIMING_ZERO, /* routine is wrapper to probe_jedec (pm49fl00x.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000789 .erase = erase_49fl00x,
790 .write = write_49fl00x,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +0000791 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +0000792 },
793
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000794 {
795 .vendor = "EMST",
796 .name = "F49B002UA",
Urja Rannikko161b8852009-06-05 08:47:37 +0000797 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000798 .manufacture_id = EMST_ID,
799 .model_id = EMST_F49B002UA,
800 .total_size = 256,
801 .page_size = 4096,
802 .tested = TEST_UNTESTED,
803 .probe = probe_jedec,
Udu Ogahc04ee222009-09-05 01:31:32 +0000804 .probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000805 .erase = erase_chip_jedec,
806 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +0000807 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +0000808 },
809
Stephan Guilloux5c5b5252009-01-08 03:40:17 +0000810 {
Carl-Daniel Hailfinger80243c92009-06-05 20:53:07 +0000811 .vendor = "Eon",
812 .name = "EN25B05",
813 .bustype = CHIP_BUSTYPE_SPI,
Carl-Daniel Hailfingera0a6ae92009-06-15 12:10:57 +0000814 .manufacture_id = EON_ID_NOPREFIX,
Carl-Daniel Hailfinger80243c92009-06-05 20:53:07 +0000815 .model_id = EN_25B05,
816 .total_size = 64,
817 .page_size = 256,
818 .tested = TEST_UNTESTED,
819 .probe = probe_spi_rdid,
820 .probe_timing = TIMING_ZERO,
821 .erase = spi_chip_erase_c7,
822 .write = spi_chip_write_256,
823 .read = spi_chip_read,
824 },
825
826 {
827 .vendor = "Eon",
828 .name = "EN25B10",
829 .bustype = CHIP_BUSTYPE_SPI,
Carl-Daniel Hailfingera0a6ae92009-06-15 12:10:57 +0000830 .manufacture_id = EON_ID_NOPREFIX,
Carl-Daniel Hailfinger80243c92009-06-05 20:53:07 +0000831 .model_id = EN_25B10,
832 .total_size = 128,
833 .page_size = 256,
834 .tested = TEST_UNTESTED,
835 .probe = probe_spi_rdid,
836 .probe_timing = TIMING_ZERO,
837 .erase = spi_chip_erase_c7,
838 .write = spi_chip_write_256,
839 .read = spi_chip_read,
840 },
841
842 {
843 .vendor = "Eon",
844 .name = "EN25B20",
845 .bustype = CHIP_BUSTYPE_SPI,
Carl-Daniel Hailfingera0a6ae92009-06-15 12:10:57 +0000846 .manufacture_id = EON_ID_NOPREFIX,
Carl-Daniel Hailfinger80243c92009-06-05 20:53:07 +0000847 .model_id = EN_25B20,
848 .total_size = 256,
849 .page_size = 256,
850 .tested = TEST_UNTESTED,
851 .probe = probe_spi_rdid,
852 .probe_timing = TIMING_ZERO,
853 .erase = spi_chip_erase_c7,
854 .write = spi_chip_write_256,
855 .read = spi_chip_read,
856 },
857
858 {
859 .vendor = "Eon",
860 .name = "EN25B40",
861 .bustype = CHIP_BUSTYPE_SPI,
Carl-Daniel Hailfingera0a6ae92009-06-15 12:10:57 +0000862 .manufacture_id = EON_ID_NOPREFIX,
Carl-Daniel Hailfinger80243c92009-06-05 20:53:07 +0000863 .model_id = EN_25B40,
864 .total_size = 512,
865 .page_size = 256,
866 .tested = TEST_UNTESTED,
867 .probe = probe_spi_rdid,
868 .probe_timing = TIMING_ZERO,
869 .erase = spi_chip_erase_c7,
870 .write = spi_chip_write_256,
871 .read = spi_chip_read,
872 },
873
874 {
875 .vendor = "Eon",
876 .name = "EN25B80",
877 .bustype = CHIP_BUSTYPE_SPI,
Carl-Daniel Hailfingera0a6ae92009-06-15 12:10:57 +0000878 .manufacture_id = EON_ID_NOPREFIX,
Carl-Daniel Hailfinger80243c92009-06-05 20:53:07 +0000879 .model_id = EN_25B80,
880 .total_size = 1024,
881 .page_size = 256,
882 .tested = TEST_UNTESTED,
883 .probe = probe_spi_rdid,
884 .probe_timing = TIMING_ZERO,
885 .erase = spi_chip_erase_c7,
886 .write = spi_chip_write_256,
887 .read = spi_chip_read,
888 },
889
890 {
891 .vendor = "Eon",
892 .name = "EN25B16",
893 .bustype = CHIP_BUSTYPE_SPI,
Carl-Daniel Hailfingera0a6ae92009-06-15 12:10:57 +0000894 .manufacture_id = EON_ID_NOPREFIX,
Carl-Daniel Hailfinger80243c92009-06-05 20:53:07 +0000895 .model_id = EN_25B16,
896 .total_size = 2048,
897 .page_size = 256,
898 .tested = TEST_UNTESTED,
899 .probe = probe_spi_rdid,
900 .probe_timing = TIMING_ZERO,
901 .erase = spi_chip_erase_c7,
902 .write = spi_chip_write_256,
903 .read = spi_chip_read,
904 },
905
906 {
907 .vendor = "Eon",
908 .name = "EN25B32",
909 .bustype = CHIP_BUSTYPE_SPI,
Carl-Daniel Hailfingera0a6ae92009-06-15 12:10:57 +0000910 .manufacture_id = EON_ID_NOPREFIX,
Carl-Daniel Hailfinger80243c92009-06-05 20:53:07 +0000911 .model_id = EN_25B32,
912 .total_size = 4096,
913 .page_size = 256,
914 .tested = TEST_UNTESTED,
915 .probe = probe_spi_rdid,
916 .probe_timing = TIMING_ZERO,
917 .erase = spi_chip_erase_c7,
918 .write = spi_chip_write_256,
919 .read = spi_chip_read,
920 },
921
922 {
923 .vendor = "Eon",
924 .name = "EN25B64",
925 .bustype = CHIP_BUSTYPE_SPI,
Carl-Daniel Hailfingera0a6ae92009-06-15 12:10:57 +0000926 .manufacture_id = EON_ID_NOPREFIX,
Carl-Daniel Hailfinger80243c92009-06-05 20:53:07 +0000927 .model_id = EN_25B64,
928 .total_size = 8192,
929 .page_size = 256,
930 .tested = TEST_UNTESTED,
931 .probe = probe_spi_rdid,
932 .probe_timing = TIMING_ZERO,
933 .erase = spi_chip_erase_c7,
934 .write = spi_chip_write_256,
935 .read = spi_chip_read,
936 },
937
938 {
939 .vendor = "Eon",
Carl-Daniel Hailfingera0a6ae92009-06-15 12:10:57 +0000940 .name = "EN25D16",
941 .bustype = CHIP_BUSTYPE_SPI,
942 .manufacture_id = EON_ID_NOPREFIX,
943 .model_id = EN_25D16,
944 .total_size = 2048,
945 .page_size = 256,
946 .tested = TEST_UNTESTED,
947 .probe = probe_spi_rdid,
948 .probe_timing = TIMING_ZERO,
949 .erase = spi_chip_erase_60_c7,
950 .write = spi_chip_write_256,
951 .read = spi_chip_read,
952 },
953
954 {
955 .vendor = "Eon",
956 .name = "EN25F05",
957 .bustype = CHIP_BUSTYPE_SPI,
958 .manufacture_id = EON_ID_NOPREFIX,
959 .model_id = EN_25F05,
960 .total_size = 64,
961 .page_size = 256,
962 .tested = TEST_UNTESTED,
963 .probe = probe_spi_rdid,
964 .probe_timing = TIMING_ZERO,
965 .erase = spi_chip_erase_60_c7,
966 .write = spi_chip_write_256,
967 .read = spi_chip_read,
968 },
969
970 {
971 .vendor = "Eon",
972 .name = "EN25F10",
973 .bustype = CHIP_BUSTYPE_SPI,
974 .manufacture_id = EON_ID_NOPREFIX,
975 .model_id = EN_25F10,
976 .total_size = 128,
977 .page_size = 256,
978 .tested = TEST_UNTESTED,
979 .probe = probe_spi_rdid,
980 .probe_timing = TIMING_ZERO,
981 .erase = spi_chip_erase_60_c7,
982 .write = spi_chip_write_256,
983 .read = spi_chip_read,
984 },
985
986 {
987 .vendor = "Eon",
988 .name = "EN25F20",
989 .bustype = CHIP_BUSTYPE_SPI,
990 .manufacture_id = EON_ID_NOPREFIX,
991 .model_id = EN_25F20,
992 .total_size = 256,
993 .page_size = 256,
994 .tested = TEST_UNTESTED,
995 .probe = probe_spi_rdid,
996 .probe_timing = TIMING_ZERO,
997 .erase = spi_chip_erase_60_c7,
998 .write = spi_chip_write_256,
999 .read = spi_chip_read,
1000 },
1001
1002 {
1003 .vendor = "Eon",
Carl-Daniel Hailfinger80243c92009-06-05 20:53:07 +00001004 .name = "EN25F40",
1005 .bustype = CHIP_BUSTYPE_SPI,
Carl-Daniel Hailfingera0a6ae92009-06-15 12:10:57 +00001006 .manufacture_id = EON_ID_NOPREFIX,
Carl-Daniel Hailfinger80243c92009-06-05 20:53:07 +00001007 .model_id = EN_25F40,
1008 .total_size = 512,
1009 .page_size = 256,
Carl-Daniel Hailfingerfaaa2b22009-06-22 10:06:28 +00001010 .tested = TEST_OK_PROBE,
Carl-Daniel Hailfinger80243c92009-06-05 20:53:07 +00001011 .probe = probe_spi_rdid,
1012 .probe_timing = TIMING_ZERO,
1013 .erase = spi_chip_erase_60_c7,
1014 .write = spi_chip_write_256,
1015 .read = spi_chip_read,
1016 },
1017
1018 {
1019 .vendor = "Eon",
1020 .name = "EN25F80",
1021 .bustype = CHIP_BUSTYPE_SPI,
Carl-Daniel Hailfingera0a6ae92009-06-15 12:10:57 +00001022 .manufacture_id = EON_ID_NOPREFIX,
Carl-Daniel Hailfinger80243c92009-06-05 20:53:07 +00001023 .model_id = EN_25F80,
1024 .total_size = 1024,
1025 .page_size = 256,
1026 .tested = TEST_UNTESTED,
1027 .probe = probe_spi_rdid,
1028 .probe_timing = TIMING_ZERO,
1029 .erase = spi_chip_erase_60_c7,
1030 .write = spi_chip_write_256,
1031 .read = spi_chip_read,
1032 },
1033
1034 {
1035 .vendor = "Eon",
1036 .name = "EN25F16",
1037 .bustype = CHIP_BUSTYPE_SPI,
Carl-Daniel Hailfingera0a6ae92009-06-15 12:10:57 +00001038 .manufacture_id = EON_ID_NOPREFIX,
Carl-Daniel Hailfinger80243c92009-06-05 20:53:07 +00001039 .model_id = EN_25F16,
1040 .total_size = 2048,
1041 .page_size = 256,
1042 .tested = TEST_UNTESTED,
1043 .probe = probe_spi_rdid,
1044 .probe_timing = TIMING_ZERO,
1045 .erase = spi_chip_erase_60_c7,
1046 .write = spi_chip_write_256,
1047 .read = spi_chip_read,
1048 },
1049
1050 {
Carl-Daniel Hailfingera0a6ae92009-06-15 12:10:57 +00001051 .vendor = "Eon",
1052 .name = "EN25F32",
1053 .bustype = CHIP_BUSTYPE_SPI,
1054 .manufacture_id = EON_ID_NOPREFIX,
1055 .model_id = EN_25F32,
1056 .total_size = 4096,
1057 .page_size = 256,
1058 .tested = TEST_UNTESTED,
1059 .probe = probe_spi_rdid,
1060 .probe_timing = TIMING_ZERO,
1061 .erase = spi_chip_erase_60_c7,
1062 .write = spi_chip_write_256,
1063 .read = spi_chip_read,
1064 },
1065
1066 {
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001067 .vendor = "EON",
1068 .name = "EN29F002(A)(N)B",
Urja Rannikko161b8852009-06-05 08:47:37 +00001069 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001070 .manufacture_id = EON_ID,
1071 .model_id = EN_29F002B,
1072 .total_size = 256,
1073 .page_size = 256,
1074 .tested = TEST_UNTESTED,
1075 .probe = probe_jedec,
Udu Ogahc04ee222009-09-05 01:31:32 +00001076 .probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001077 .erase = erase_chip_jedec,
1078 .write = write_en29f002a,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001079 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001080 },
1081
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001082 {
1083 .vendor = "EON",
1084 .name = "EN29F002(A)(N)T",
Urja Rannikko161b8852009-06-05 08:47:37 +00001085 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001086 .manufacture_id = EON_ID,
1087 .model_id = EN_29F002T,
1088 .total_size = 256,
1089 .page_size = 256,
1090 .tested = TEST_OK_PREW,
1091 .probe = probe_jedec,
Udu Ogahc04ee222009-09-05 01:31:32 +00001092 .probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001093 .erase = erase_chip_jedec,
1094 .write = write_en29f002a,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001095 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001096 },
1097
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001098 {
1099 .vendor = "Fujitsu",
1100 .name = "MBM29F004BC",
Urja Rannikko038a3122009-06-28 19:19:25 +00001101 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001102 .manufacture_id = FUJITSU_ID,
1103 .model_id = MBM29F004BC,
1104 .total_size = 512,
1105 .page_size = 64 * 1024,
1106 .tested = TEST_UNTESTED,
1107 .probe = probe_jedec,
Udu Ogahc04ee222009-09-05 01:31:32 +00001108 .probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001109 .erase = NULL,
1110 .write = NULL,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001111 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001112 },
1113
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001114 {
1115 .vendor = "Fujitsu",
1116 .name = "MBM29F004TC",
Urja Rannikko038a3122009-06-28 19:19:25 +00001117 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001118 .manufacture_id = FUJITSU_ID,
1119 .model_id = MBM29F004TC,
1120 .total_size = 512,
1121 .page_size = 64 * 1024,
1122 .tested = TEST_UNTESTED,
1123 .probe = probe_jedec,
Udu Ogahc04ee222009-09-05 01:31:32 +00001124 .probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001125 .erase = NULL,
1126 .write = NULL,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001127 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001128 },
1129
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001130 {
1131 .vendor = "Fujitsu",
1132 .name = "MBM29F400BC",
Urja Rannikko038a3122009-06-28 19:19:25 +00001133 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001134 .manufacture_id = FUJITSU_ID,
1135 .model_id = MBM29F400BC,
1136 .total_size = 512,
1137 .page_size = 64 * 1024,
1138 .tested = TEST_UNTESTED,
1139 .probe = probe_m29f400bt,
Maciej Pijankac6e11112009-06-03 14:46:22 +00001140 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (m29f400bt.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001141 .erase = erase_m29f400bt,
1142 .write = write_coreboot_m29f400bt,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001143 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001144 },
1145
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001146 {
1147 .vendor = "Fujitsu",
1148 .name = "MBM29F400TC",
Urja Rannikko038a3122009-06-28 19:19:25 +00001149 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001150 .manufacture_id = FUJITSU_ID,
1151 .model_id = MBM29F400TC,
1152 .total_size = 512,
1153 .page_size = 64 * 1024,
1154 .tested = TEST_UNTESTED,
1155 .probe = probe_m29f400bt,
Maciej Pijankac6e11112009-06-03 14:46:22 +00001156 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (m29f400bt.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001157 .erase = erase_m29f400bt,
1158 .write = write_coreboot_m29f400bt,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001159 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001160 },
1161
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001162 {
1163 .vendor = "Intel",
Urja Rannikkoebd7b832009-05-29 12:55:31 +00001164 .name = "28F001BX-B",
Urja Rannikko161b8852009-06-05 08:47:37 +00001165 .bustype = CHIP_BUSTYPE_PARALLEL,
Urja Rannikkoebd7b832009-05-29 12:55:31 +00001166 .manufacture_id = INTEL_ID,
1167 .model_id = P28F001BXB,
1168 .total_size = 128,
1169 .page_size = 128 * 1024, /* 8k + 2x4k + 112k */
1170 .tested = TEST_BAD_ERASE|TEST_BAD_WRITE,
1171 .probe = probe_jedec,
Udu Ogahc04ee222009-09-05 01:31:32 +00001172 .probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */
Urja Rannikkoebd7b832009-05-29 12:55:31 +00001173 .erase = NULL,
1174 .write = NULL,
1175 .read = read_memmapped,
1176 },
1177
1178 {
1179 .vendor = "Intel",
1180 .name = "28F001BX-T",
Urja Rannikko161b8852009-06-05 08:47:37 +00001181 .bustype = CHIP_BUSTYPE_PARALLEL,
Urja Rannikkoebd7b832009-05-29 12:55:31 +00001182 .manufacture_id = INTEL_ID,
1183 .model_id = P28F001BXT,
1184 .total_size = 128,
1185 .page_size = 128 * 1024, /* 112k + 2x4k + 8k */
1186 .tested = TEST_OK_PR|TEST_BAD_ERASE|TEST_BAD_WRITE,
1187 .probe = probe_jedec,
Udu Ogahc04ee222009-09-05 01:31:32 +00001188 .probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */
Urja Rannikkoebd7b832009-05-29 12:55:31 +00001189 .erase = NULL,
1190 .write = NULL,
1191 .read = read_memmapped,
1192 },
1193
1194 {
1195 .vendor = "Intel",
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001196 .name = "82802AB",
Mateusz Murawskie33890d2009-06-12 11:45:10 +00001197 .bustype = CHIP_BUSTYPE_FWH,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001198 .manufacture_id = INTEL_ID,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00001199 .model_id = I_82802AB,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001200 .total_size = 512,
1201 .page_size = 64 * 1024,
1202 .tested = TEST_OK_PREW,
1203 .probe = probe_82802ab,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001204 .probe_timing = TIMING_IGNORED, /* routine does not use probe_timing (82802ab.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001205 .erase = erase_82802ab,
1206 .write = write_82802ab,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001207 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001208 },
1209
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001210 {
1211 .vendor = "Intel",
1212 .name = "82802AC",
Mateusz Murawskie33890d2009-06-12 11:45:10 +00001213 .bustype = CHIP_BUSTYPE_FWH,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001214 .manufacture_id = INTEL_ID,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00001215 .model_id = I_82802AC,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001216 .total_size = 1024,
1217 .page_size = 64 * 1024,
1218 .tested = TEST_OK_PREW,
1219 .probe = probe_82802ab,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001220 .probe_timing = TIMING_IGNORED, /* routine does not use probe_timing (82802ab.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001221 .erase = erase_82802ab,
1222 .write = write_82802ab,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001223 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001224 },
1225
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001226 {
1227 .vendor = "Macronix",
1228 .name = "MX25L512",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001229 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001230 .manufacture_id = MX_ID,
1231 .model_id = MX_25L512,
1232 .total_size = 64,
1233 .page_size = 256,
1234 .tested = TEST_UNTESTED,
1235 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001236 .probe_timing = TIMING_ZERO,
Carl-Daniel Hailfingerf38431a2009-09-05 02:30:58 +00001237 .erase = NULL,
1238 .block_erasers =
1239 {
1240 {
1241 .eraseblocks = { {4 * 1024, 16} },
1242 .block_erase = spi_block_erase_20,
Carl-Daniel Hailfinger40107122009-10-01 13:15:01 +00001243 }, {
Carl-Daniel Hailfingerf38431a2009-09-05 02:30:58 +00001244 .eraseblocks = { {64 * 1024, 1} },
1245 .block_erase = spi_block_erase_52,
Carl-Daniel Hailfinger40107122009-10-01 13:15:01 +00001246 }, {
Carl-Daniel Hailfingerf38431a2009-09-05 02:30:58 +00001247 .eraseblocks = { {64 * 1024, 1} },
1248 .block_erase = spi_block_erase_d8,
Carl-Daniel Hailfinger40107122009-10-01 13:15:01 +00001249 }, {
Carl-Daniel Hailfingerf38431a2009-09-05 02:30:58 +00001250 .eraseblocks = { {64 * 1024, 1} },
1251 .block_erase = spi_block_erase_60,
Carl-Daniel Hailfinger40107122009-10-01 13:15:01 +00001252 }, {
Carl-Daniel Hailfingerf38431a2009-09-05 02:30:58 +00001253 .eraseblocks = { {64 * 1024, 1} },
1254 .block_erase = spi_block_erase_c7,
1255 },
1256 },
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001257 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001258 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001259 },
1260
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001261 {
1262 .vendor = "Macronix",
1263 .name = "MX25L1005",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001264 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001265 .manufacture_id = MX_ID,
1266 .model_id = MX_25L1005,
1267 .total_size = 128,
1268 .page_size = 256,
1269 .tested = TEST_UNTESTED,
1270 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001271 .probe_timing = TIMING_ZERO,
Carl-Daniel Hailfingerf38431a2009-09-05 02:30:58 +00001272 .erase = NULL,
1273 .block_erasers =
1274 {
1275 {
1276 .eraseblocks = { {4 * 1024, 32} },
1277 .block_erase = spi_block_erase_20,
Carl-Daniel Hailfinger40107122009-10-01 13:15:01 +00001278 }, {
Carl-Daniel Hailfingerf38431a2009-09-05 02:30:58 +00001279 .eraseblocks = { {64 * 1024, 2} },
1280 .block_erase = spi_block_erase_d8,
Carl-Daniel Hailfinger40107122009-10-01 13:15:01 +00001281 }, {
Carl-Daniel Hailfingerf38431a2009-09-05 02:30:58 +00001282 .eraseblocks = { {128 * 1024, 1} },
1283 .block_erase = spi_block_erase_60,
Carl-Daniel Hailfinger40107122009-10-01 13:15:01 +00001284 }, {
Carl-Daniel Hailfingerf38431a2009-09-05 02:30:58 +00001285 .eraseblocks = { {128 * 1024, 1} },
1286 .block_erase = spi_block_erase_c7,
1287 },
1288 },
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001289 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001290 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001291 },
1292
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001293 {
1294 .vendor = "Macronix",
1295 .name = "MX25L2005",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001296 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001297 .manufacture_id = MX_ID,
1298 .model_id = MX_25L2005,
1299 .total_size = 256,
1300 .page_size = 256,
1301 .tested = TEST_UNTESTED,
1302 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001303 .probe_timing = TIMING_ZERO,
Carl-Daniel Hailfinger40107122009-10-01 13:15:01 +00001304 .erase = NULL,
1305 .block_erasers =
1306 {
1307 {
1308 .eraseblocks = { {4 * 1024, 64} },
1309 .block_erase = spi_block_erase_20,
1310 }, {
1311 .eraseblocks = { {64 * 1024, 4} },
1312 .block_erase = spi_block_erase_52,
1313 }, {
1314 .eraseblocks = { {64 * 1024, 4} },
1315 .block_erase = spi_block_erase_d8,
1316 }, {
1317 .eraseblocks = { {256 * 1024, 1} },
1318 .block_erase = spi_block_erase_60,
1319 }, {
1320 .eraseblocks = { {256 * 1024, 1} },
1321 .block_erase = spi_block_erase_c7,
1322 },
1323 },
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001324 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001325 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001326 },
1327
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001328 {
1329 .vendor = "Macronix",
1330 .name = "MX25L4005",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001331 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001332 .manufacture_id = MX_ID,
1333 .model_id = MX_25L4005,
1334 .total_size = 512,
1335 .page_size = 256,
Carl-Daniel Hailfinger40107122009-10-01 13:15:01 +00001336 .tested = TEST_OK_PRW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001337 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001338 .probe_timing = TIMING_ZERO,
Carl-Daniel Hailfinger40107122009-10-01 13:15:01 +00001339 .erase = NULL,
1340 .block_erasers =
1341 {
1342 {
1343 .eraseblocks = { {4 * 1024, 128} },
1344 .block_erase = spi_block_erase_20,
1345 }, {
1346 .eraseblocks = { {64 * 1024, 8} },
1347 .block_erase = spi_block_erase_52,
1348 }, {
1349 .eraseblocks = { {64 * 1024, 8} },
1350 .block_erase = spi_block_erase_d8,
1351 }, {
1352 .eraseblocks = { {512 * 1024, 1} },
1353 .block_erase = spi_block_erase_60,
1354 }, {
1355 .eraseblocks = { {512 * 1024, 1} },
1356 .block_erase = spi_block_erase_c7,
1357 },
1358 },
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001359 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001360 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001361 },
1362
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001363 {
1364 .vendor = "Macronix",
1365 .name = "MX25L8005",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001366 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001367 .manufacture_id = MX_ID,
1368 .model_id = MX_25L8005,
1369 .total_size = 1024,
1370 .page_size = 256,
Carl-Daniel Hailfinger40107122009-10-01 13:15:01 +00001371 .tested = TEST_OK_PRW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001372 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001373 .probe_timing = TIMING_ZERO,
Carl-Daniel Hailfinger40107122009-10-01 13:15:01 +00001374 .erase = NULL,
1375 .block_erasers =
1376 {
1377 {
1378 .eraseblocks = { {4 * 1024, 256} },
1379 .block_erase = spi_block_erase_20,
1380 }, {
1381 .eraseblocks = { {64 * 1024, 16} },
1382 .block_erase = spi_block_erase_52,
1383 }, {
1384 .eraseblocks = { {64 * 1024, 16} },
1385 .block_erase = spi_block_erase_d8,
1386 }, {
1387 .eraseblocks = { {1024 * 1024, 1} },
1388 .block_erase = spi_block_erase_60,
1389 }, {
1390 .eraseblocks = { {1024 * 1024, 1} },
1391 .block_erase = spi_block_erase_c7,
1392 },
1393 },
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001394 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001395 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001396 },
1397
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001398 {
1399 .vendor = "Macronix",
1400 .name = "MX25L1605",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001401 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001402 .manufacture_id = MX_ID,
1403 .model_id = MX_25L1605,
1404 .total_size = 2048,
1405 .page_size = 256,
Carl-Daniel Hailfinger40107122009-10-01 13:15:01 +00001406 .tested = TEST_OK_PRW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001407 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001408 .probe_timing = TIMING_ZERO,
Carl-Daniel Hailfinger40107122009-10-01 13:15:01 +00001409 .erase = NULL,
1410 .block_erasers =
1411 {
1412 {
1413 .eraseblocks = { {4 * 1024, 512} },
1414 .block_erase = spi_block_erase_20, /* This erase function has 64k blocksize for eLiteFlash */
1415 }, {
1416 .eraseblocks = { {64 * 1024, 32} }, /* Not supported in MX25L1605 (eLiteFlash) and MX25L1605D */
1417 .block_erase = spi_block_erase_52,
1418 }, {
1419 .eraseblocks = { {64 * 1024, 32} },
1420 .block_erase = spi_block_erase_d8,
1421 }, {
1422 .eraseblocks = { {2 * 1024 * 1024, 1} },
1423 .block_erase = spi_block_erase_60,
1424 }, {
1425 .eraseblocks = { {2 * 1024 * 1024, 1} },
1426 .block_erase = spi_block_erase_c7,
1427 },
1428 },
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001429 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001430 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001431 },
1432
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001433 {
1434 .vendor = "Macronix",
Stephan Guillouxf5c70902009-04-19 23:04:00 +00001435 .name = "MX25L1635D",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001436 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guillouxf5c70902009-04-19 23:04:00 +00001437 .manufacture_id = MX_ID,
1438 .model_id = MX_25L1635D,
1439 .total_size = 2048,
1440 .page_size = 256,
1441 .tested = TEST_UNTESTED,
1442 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001443 .probe_timing = TIMING_ZERO,
Stephan Guillouxe39631c2009-04-19 23:24:26 +00001444 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001445 .write = spi_chip_write_256,
Stephan Guillouxf5c70902009-04-19 23:04:00 +00001446 .read = spi_chip_read,
1447 },
Stephan Guillouxfd315502009-04-20 22:54:13 +00001448
Stephan Guillouxf5c70902009-04-19 23:04:00 +00001449 {
1450 .vendor = "Macronix",
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001451 .name = "MX25L3205",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001452 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001453 .manufacture_id = MX_ID,
1454 .model_id = MX_25L3205,
1455 .total_size = 4096,
1456 .page_size = 256,
1457 .tested = TEST_OK_PREW,
1458 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001459 .probe_timing = TIMING_ZERO,
Stephan Guillouxfd315502009-04-20 22:54:13 +00001460 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001461 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001462 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001463 },
1464
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001465 {
1466 .vendor = "Macronix",
Stephan Guilloux70ea9a32009-04-23 22:51:56 +00001467 .name = "MX25L3235D",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001468 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux70ea9a32009-04-23 22:51:56 +00001469 .manufacture_id = MX_ID,
1470 .model_id = MX_25L3235D,
1471 .total_size = 4096,
1472 .page_size = 256,
1473 .tested = TEST_UNTESTED,
1474 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001475 .probe_timing = TIMING_ZERO,
Stephan Guilloux70ea9a32009-04-23 22:51:56 +00001476 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001477 .write = spi_chip_write_256,
Stephan Guilloux70ea9a32009-04-23 22:51:56 +00001478 .read = spi_chip_read,
1479 },
1480
1481 {
1482 .vendor = "Macronix",
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001483 .name = "MX25L6405",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001484 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001485 .manufacture_id = MX_ID,
1486 .model_id = MX_25L6405,
1487 .total_size = 8192,
1488 .page_size = 256,
Carl-Daniel Hailfinger452b3e32009-06-22 11:14:43 +00001489 .tested = TEST_OK_PROBE,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001490 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001491 .probe_timing = TIMING_ZERO,
Stephan Guillouxfd315502009-04-20 22:54:13 +00001492 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001493 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001494 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001495 },
1496
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001497 {
1498 .vendor = "Macronix",
Stephan Guilloux2f132fe2009-04-21 01:47:16 +00001499 .name = "MX25L12805",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001500 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux2f132fe2009-04-21 01:47:16 +00001501 .manufacture_id = MX_ID,
1502 .model_id = MX_25L12805,
1503 .total_size = 16384,
1504 .page_size = 256,
1505 .tested = TEST_UNTESTED,
1506 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001507 .probe_timing = TIMING_ZERO,
Stephan Guilloux2f132fe2009-04-21 01:47:16 +00001508 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001509 .write = spi_chip_write_256,
Stephan Guilloux2f132fe2009-04-21 01:47:16 +00001510 .read = spi_chip_read,
1511 },
1512
1513 {
1514 .vendor = "Macronix",
Mark Panajotovic502a9132009-08-24 01:42:24 +00001515 .name = "MX29F001B",
1516 .bustype = CHIP_BUSTYPE_PARALLEL,
1517 .manufacture_id = MX_ID,
1518 .model_id = MX_29F001B,
1519 .total_size = 128,
1520 .page_size = 32 * 1024,
Uwe Hermannb08ee5c2009-09-09 00:58:19 +00001521 .tested = TEST_OK_PREW,
Mark Panajotovic502a9132009-08-24 01:42:24 +00001522 .probe = probe_29f002,
1523 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (mx29f002.c) */
1524 .erase = erase_29f002,
1525 .write = write_29f002,
1526 .read = read_memmapped,
1527 },
1528
1529 {
1530 .vendor = "Macronix",
1531 .name = "MX29F001T",
1532 .bustype = CHIP_BUSTYPE_PARALLEL,
1533 .manufacture_id = MX_ID,
1534 .model_id = MX_29F001T,
1535 .total_size = 128,
1536 .page_size = 32 * 1024,
1537 .tested = TEST_OK_PREW,
1538 .probe = probe_29f002,
1539 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (mx29f002.c) */
1540 .erase = erase_29f002,
1541 .write = write_29f002,
1542 .read = read_memmapped,
1543 },
1544
1545 {
1546 .vendor = "Macronix",
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001547 .name = "MX29F002B",
Urja Rannikko038a3122009-06-28 19:19:25 +00001548 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001549 .manufacture_id = MX_ID,
1550 .model_id = MX_29F002B,
1551 .total_size = 256,
1552 .page_size = 64 * 1024,
1553 .tested = TEST_UNTESTED,
1554 .probe = probe_29f002,
Maciej Pijankac6e11112009-06-03 14:46:22 +00001555 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (mx29f002.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001556 .erase = erase_29f002,
1557 .write = write_29f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001558 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001559 },
1560
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001561 {
1562 .vendor = "Macronix",
1563 .name = "MX29F002T",
Urja Rannikko038a3122009-06-28 19:19:25 +00001564 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001565 .manufacture_id = MX_ID,
1566 .model_id = MX_29F002T,
1567 .total_size = 256,
1568 .page_size = 64 * 1024,
Uwe Hermann66c580c2009-05-21 00:29:50 +00001569 .tested = TEST_OK_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001570 .probe = probe_29f002,
Maciej Pijankac6e11112009-06-03 14:46:22 +00001571 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (mx29f002.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001572 .erase = erase_29f002,
1573 .write = write_29f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001574 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001575 },
1576
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001577 {
1578 .vendor = "Macronix",
Carl-Daniel Hailfinger350a0c32009-07-24 13:59:27 +00001579 .name = "MX29LV040",
Urja Rannikko038a3122009-06-28 19:19:25 +00001580 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001581 .manufacture_id = MX_ID,
Carl-Daniel Hailfinger350a0c32009-07-24 13:59:27 +00001582 .model_id = MX_29LV040,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001583 .total_size = 512,
1584 .page_size = 64 * 1024,
1585 .tested = TEST_OK_PR,
1586 .probe = probe_29f002,
Maciej Pijankac6e11112009-06-03 14:46:22 +00001587 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (mx29f002.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001588 .erase = erase_29f002,
1589 .write = write_29f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001590 .read = read_memmapped,
Carl-Daniel Hailfinger7de86392008-12-10 10:32:05 +00001591 },
1592
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001593 {
1594 .vendor = "Numonyx",
1595 .name = "M25PE10",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001596 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001597 .manufacture_id = ST_ID,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00001598 .model_id = ST_M25PE10,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001599 .total_size = 128,
1600 .page_size = 256,
1601 .tested = TEST_UNTESTED,
1602 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001603 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001604 .erase = spi_chip_erase_d8,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001605 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001606 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001607 },
1608
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001609 {
1610 .vendor = "Numonyx",
1611 .name = "M25PE20",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001612 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001613 .manufacture_id = ST_ID,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00001614 .model_id = ST_M25PE20,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001615 .total_size = 256,
1616 .page_size = 256,
1617 .tested = TEST_UNTESTED,
1618 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001619 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001620 .erase = spi_chip_erase_d8,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001621 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001622 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001623 },
1624
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001625 {
1626 .vendor = "Numonyx",
1627 .name = "M25PE40",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001628 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001629 .manufacture_id = ST_ID,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00001630 .model_id = ST_M25PE40,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001631 .total_size = 256,
1632 .page_size = 256,
1633 .tested = TEST_UNTESTED,
1634 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001635 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001636 .erase = spi_chip_erase_d8,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001637 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001638 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001639 },
1640
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001641 {
1642 .vendor = "Numonyx",
1643 .name = "M25PE80",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001644 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001645 .manufacture_id = ST_ID,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00001646 .model_id = ST_M25PE80,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001647 .total_size = 1024,
1648 .page_size = 256,
1649 .tested = TEST_OK_PREW,
1650 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001651 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001652 .erase = spi_chip_erase_d8,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001653 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001654 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001655 },
1656
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001657 {
1658 .vendor = "Numonyx",
1659 .name = "M25PE16",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001660 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001661 .manufacture_id = ST_ID,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00001662 .model_id = ST_M25PE16,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001663 .total_size = 2048,
1664 .page_size = 256,
1665 .tested = TEST_UNTESTED,
1666 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001667 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001668 .erase = spi_chip_erase_d8,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001669 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001670 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001671 },
1672
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001673 {
1674 .vendor = "PMC",
1675 .name = "Pm25LV010",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001676 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001677 .manufacture_id = PMC_ID,
1678 .model_id = PMC_25LV010,
1679 .total_size = 128,
1680 .page_size = 256,
1681 .tested = TEST_UNTESTED,
1682 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001683 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001684 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001685 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001686 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001687 },
1688
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001689 {
1690 .vendor = "PMC",
1691 .name = "Pm25LV016B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001692 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001693 .manufacture_id = PMC_ID,
1694 .model_id = PMC_25LV016B,
1695 .total_size = 2048,
1696 .page_size = 256,
1697 .tested = TEST_UNTESTED,
1698 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001699 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001700 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001701 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001702 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001703 },
1704
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001705 {
1706 .vendor = "PMC",
1707 .name = "Pm25LV020",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001708 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001709 .manufacture_id = PMC_ID,
1710 .model_id = PMC_25LV020,
1711 .total_size = 256,
1712 .page_size = 256,
1713 .tested = TEST_UNTESTED,
1714 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001715 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001716 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001717 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001718 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001719 },
1720
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001721 {
1722 .vendor = "PMC",
1723 .name = "Pm25LV040",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001724 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001725 .manufacture_id = PMC_ID,
1726 .model_id = PMC_25LV040,
1727 .total_size = 512,
1728 .page_size = 256,
1729 .tested = TEST_UNTESTED,
1730 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001731 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001732 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001733 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001734 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001735 },
1736
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001737 {
1738 .vendor = "PMC",
1739 .name = "Pm25LV080B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001740 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001741 .manufacture_id = PMC_ID,
1742 .model_id = PMC_25LV080B,
1743 .total_size = 1024,
1744 .page_size = 256,
1745 .tested = TEST_UNTESTED,
1746 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001747 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001748 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001749 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001750 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001751 },
1752
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001753 {
1754 .vendor = "PMC",
1755 .name = "Pm25LV512",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001756 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001757 .manufacture_id = PMC_ID,
1758 .model_id = PMC_25LV512,
1759 .total_size = 64,
1760 .page_size = 256,
1761 .tested = TEST_UNTESTED,
1762 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001763 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001764 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001765 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001766 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001767 },
1768
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001769 {
1770 .vendor = "PMC",
Uwe Hermannf983d9f2009-06-14 21:53:26 +00001771 .name = "Pm29F0002T",
1772 .bustype = CHIP_BUSTYPE_PARALLEL,
1773 .manufacture_id = PMC_ID_NOPREFIX,
1774 .model_id = PMC_29F002T,
1775 .total_size = 256,
1776 .page_size = 8192,
1777 .tested = TEST_OK_PREW,
1778 .probe = probe_29f040b,
1779 .probe_timing = TIMING_FIXME,
1780 .erase = erase_29f040b,
1781 .write = write_pm29f002,
1782 .read = read_memmapped,
1783 },
1784
1785 {
1786 .vendor = "PMC",
1787 .name = "Pm29F0002B",
1788 .bustype = CHIP_BUSTYPE_PARALLEL,
1789 .manufacture_id = PMC_ID_NOPREFIX,
1790 .model_id = PMC_29F002B,
1791 .total_size = 256,
1792 .page_size = 8192,
1793 .tested = TEST_UNTESTED,
1794 .probe = probe_29f040b,
1795 .probe_timing = TIMING_FIXME,
1796 .erase = erase_29f040b,
1797 .write = write_pm29f002,
1798 .read = read_memmapped,
1799 },
1800
1801 {
1802 .vendor = "PMC",
Rudolf Marek50fdf3b2009-05-17 17:02:07 +00001803 .name = "Pm39LV010",
Urja Rannikko038a3122009-06-28 19:19:25 +00001804 .bustype = CHIP_BUSTYPE_PARALLEL,
Rudolf Marek50fdf3b2009-05-17 17:02:07 +00001805 .manufacture_id = PMC_ID_NOPREFIX,
1806 .model_id = PMC_39F010,
1807 .total_size = 128,
1808 .page_size = 4096,
1809 .tested = TEST_OK_PREW,
1810 .probe = probe_jedec,
Udu Ogahc04ee222009-09-05 01:31:32 +00001811 .probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */
Rudolf Marek50fdf3b2009-05-17 17:02:07 +00001812 .erase = erase_chip_jedec,
1813 .write = write_49f002,
1814 .read = read_memmapped,
1815 },
1816
1817 {
1818 .vendor = "PMC",
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001819 .name = "Pm49FL002",
Urja Rannikko038a3122009-06-28 19:19:25 +00001820 .bustype = CHIP_BUSTYPE_LPC|CHIP_BUSTYPE_FWH, /* A/A Mux*/
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001821 .manufacture_id = PMC_ID_NOPREFIX,
1822 .model_id = PMC_49FL002,
1823 .total_size = 256,
1824 .page_size = 16 * 1024,
1825 .tested = TEST_OK_PREW,
1826 .probe = probe_49fl00x,
Udu Ogahc04ee222009-09-05 01:31:32 +00001827 .probe_timing = TIMING_ZERO, /* routine is wrapper to probe_jedec (pm49fl00x.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001828 .erase = erase_49fl00x,
1829 .write = write_49fl00x,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001830 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001831 },
1832
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001833 {
1834 .vendor = "PMC",
1835 .name = "Pm49FL004",
Urja Rannikko038a3122009-06-28 19:19:25 +00001836 .bustype = CHIP_BUSTYPE_LPC|CHIP_BUSTYPE_FWH, /* A/A Mux*/
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001837 .manufacture_id = PMC_ID_NOPREFIX,
1838 .model_id = PMC_49FL004,
1839 .total_size = 512,
1840 .page_size = 64 * 1024,
1841 .tested = TEST_OK_PREW,
1842 .probe = probe_49fl00x,
Udu Ogahc04ee222009-09-05 01:31:32 +00001843 .probe_timing = TIMING_ZERO, /* routine is wrapper to probe_jedec (pm49fl00x.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001844 .erase = erase_49fl00x,
1845 .write = write_49fl00x,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001846 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001847 },
1848
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001849 {
1850 .vendor = "Sharp",
1851 .name = "LHF00L04",
Urja Rannikko038a3122009-06-28 19:19:25 +00001852 .bustype = CHIP_BUSTYPE_FWH, /* A/A Mux */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001853 .manufacture_id = SHARP_ID,
1854 .model_id = SHARP_LHF00L04,
1855 .total_size = 1024,
1856 .page_size = 64 * 1024,
1857 .tested = TEST_UNTESTED,
1858 .probe = probe_lhf00l04,
Maciej Pijankac6e11112009-06-03 14:46:22 +00001859 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (sharplhf00l04.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001860 .erase = erase_lhf00l04,
1861 .write = write_lhf00l04,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001862 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001863 },
1864
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001865 {
1866 .vendor = "Spansion",
1867 .name = "S25FL016A",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001868 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001869 .manufacture_id = SPANSION_ID,
1870 .model_id = SPANSION_S25FL016A,
1871 .total_size = 2048,
1872 .page_size = 256,
1873 .tested = TEST_OK_PREW,
1874 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001875 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001876 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001877 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001878 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001879 },
1880
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001881 {
1882 .vendor = "SST",
1883 .name = "SST25VF016B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001884 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001885 .manufacture_id = SST_ID,
1886 .model_id = SST_25VF016B,
1887 .total_size = 2048,
1888 .page_size = 256,
1889 .tested = TEST_OK_PREW,
1890 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001891 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001892 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger93bb3752009-05-13 22:19:12 +00001893 .write = spi_chip_write_1,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001894 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001895 },
1896
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001897 {
1898 .vendor = "SST",
1899 .name = "SST25VF032B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001900 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001901 .manufacture_id = SST_ID,
1902 .model_id = SST_25VF032B,
1903 .total_size = 4096,
1904 .page_size = 256,
1905 .tested = TEST_OK_PREW,
1906 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001907 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001908 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger93bb3752009-05-13 22:19:12 +00001909 .write = spi_chip_write_1,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001910 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001911 },
1912
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001913 {
1914 .vendor = "SST",
1915 .name = "SST25VF040B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001916 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001917 .manufacture_id = SST_ID,
1918 .model_id = SST_25VF040B,
1919 .total_size = 512,
1920 .page_size = 256,
1921 .tested = TEST_UNTESTED,
1922 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001923 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001924 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger93bb3752009-05-13 22:19:12 +00001925 .write = spi_chip_write_1,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001926 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001927 },
1928
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001929 {
1930 .vendor = "SST",
Zheng Bao0677dff2009-02-25 08:07:33 +00001931 .name = "SST25VF040.REMS",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001932 .bustype = CHIP_BUSTYPE_SPI,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00001933 .manufacture_id = SST_ID,
1934 .model_id = SST_25VF040_REMS,
Zheng Bao0677dff2009-02-25 08:07:33 +00001935 .total_size = 512,
1936 .page_size = 64*1024,
1937 .tested = TEST_OK_PR,
1938 .probe = probe_spi_rems,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001939 .probe_timing = TIMING_ZERO,
Zheng Bao0677dff2009-02-25 08:07:33 +00001940 .erase = spi_chip_erase_60,
Carl-Daniel Hailfinger93bb3752009-05-13 22:19:12 +00001941 .write = spi_chip_write_1,
Zheng Bao0677dff2009-02-25 08:07:33 +00001942 .read = spi_chip_read,
1943 },
1944
1945 {
1946 .vendor = "SST",
Peter Stugefd9217d2009-01-26 03:37:40 +00001947 .name = "SST25VF040B.REMS",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001948 .bustype = CHIP_BUSTYPE_SPI,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00001949 .manufacture_id = SST_ID,
1950 .model_id = SST_25VF040B_REMS,
Peter Stugefd9217d2009-01-26 03:37:40 +00001951 .total_size = 512,
1952 .page_size = 64*1024,
1953 .tested = TEST_OK_PR,
1954 .probe = probe_spi_rems,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001955 .probe_timing = TIMING_ZERO,
Peter Stugefd9217d2009-01-26 03:37:40 +00001956 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger93bb3752009-05-13 22:19:12 +00001957 .write = spi_chip_write_1,
Peter Stugefd9217d2009-01-26 03:37:40 +00001958 .read = spi_chip_read,
1959 },
1960
1961 {
1962 .vendor = "SST",
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001963 .name = "SST25VF080B",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00001964 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001965 .manufacture_id = SST_ID,
1966 .model_id = SST_25VF080B,
1967 .total_size = 1024,
1968 .page_size = 256,
Peter Stugee612a112009-05-05 16:34:53 +00001969 .tested = TEST_OK_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001970 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00001971 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001972 .erase = spi_chip_erase_60_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00001973 .write = spi_chip_write_1,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001974 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00001975 },
1976
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001977 {
1978 .vendor = "SST",
1979 .name = "SST28SF040A",
Urja Rannikko038a3122009-06-28 19:19:25 +00001980 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001981 .manufacture_id = SST_ID,
1982 .model_id = SST_28SF040,
1983 .total_size = 512,
1984 .page_size = 256,
1985 .tested = TEST_UNTESTED,
1986 .probe = probe_28sf040,
Maciej Pijankac6e11112009-06-03 14:46:22 +00001987 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (sst28sf040.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001988 .erase = erase_28sf040,
1989 .write = write_28sf040,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00001990 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00001991 },
1992
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001993 {
1994 .vendor = "SST",
1995 .name = "SST29EE010",
Urja Rannikko038a3122009-06-28 19:19:25 +00001996 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00001997 .manufacture_id = SST_ID,
1998 .model_id = SST_29EE010,
1999 .total_size = 128,
2000 .page_size = 128,
2001 .tested = TEST_OK_PREW,
2002 .probe = probe_jedec,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00002003 .probe_timing = 10,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002004 .erase = erase_chip_jedec,
2005 .write = write_jedec,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002006 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002007 },
2008
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002009 {
2010 .vendor = "SST",
2011 .name = "SST29LE010",
Urja Rannikko038a3122009-06-28 19:19:25 +00002012 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002013 .manufacture_id = SST_ID,
2014 .model_id = SST_29LE010,
2015 .total_size = 128,
2016 .page_size = 128,
2017 .tested = TEST_UNTESTED,
2018 .probe = probe_jedec,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00002019 .probe_timing = 10,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002020 .erase = erase_chip_jedec,
2021 .write = write_jedec,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002022 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002023 },
2024
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002025 {
2026 .vendor = "SST",
2027 .name = "SST29EE020A",
Urja Rannikko038a3122009-06-28 19:19:25 +00002028 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002029 .manufacture_id = SST_ID,
2030 .model_id = SST_29EE020A,
2031 .total_size = 256,
2032 .page_size = 128,
Peter Stugeb27d0a22009-02-22 21:07:28 +00002033 .tested = TEST_OK_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002034 .probe = probe_jedec,
Udu Ogahc04ee222009-09-05 01:31:32 +00002035 .probe_timing = 10,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002036 .erase = erase_chip_jedec,
2037 .write = write_jedec,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002038 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002039 },
2040
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002041 {
2042 .vendor = "SST",
2043 .name = "SST29LE020",
Urja Rannikko038a3122009-06-28 19:19:25 +00002044 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002045 .manufacture_id = SST_ID,
2046 .model_id = SST_29LE020,
2047 .total_size = 256,
2048 .page_size = 128,
2049 .tested = TEST_UNTESTED,
2050 .probe = probe_jedec,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00002051 .probe_timing = 10,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002052 .erase = erase_chip_jedec,
2053 .write = write_jedec,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002054 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002055 },
2056
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002057 {
2058 .vendor = "SST",
2059 .name = "SST39SF010A",
Urja Rannikko038a3122009-06-28 19:19:25 +00002060 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002061 .manufacture_id = SST_ID,
2062 .model_id = SST_39SF010,
2063 .total_size = 128,
2064 .page_size = 4096,
2065 .tested = TEST_OK_PREW,
2066 .probe = probe_jedec,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00002067 .probe_timing = 1, /* 150 ns */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002068 .erase = erase_chip_jedec,
Uwe Hermann24f9fbe2009-05-12 14:06:04 +00002069 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002070 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002071 },
2072
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002073 {
2074 .vendor = "SST",
2075 .name = "SST39SF020A",
Urja Rannikko038a3122009-06-28 19:19:25 +00002076 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002077 .manufacture_id = SST_ID,
2078 .model_id = SST_39SF020,
2079 .total_size = 256,
2080 .page_size = 4096,
2081 .tested = TEST_OK_PREW,
2082 .probe = probe_jedec,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00002083 .probe_timing = 1, /* 150 ns */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002084 .erase = erase_chip_jedec,
Uwe Hermann24f9fbe2009-05-12 14:06:04 +00002085 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002086 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002087 },
2088
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002089 {
2090 .vendor = "SST",
2091 .name = "SST39SF040",
Urja Rannikko038a3122009-06-28 19:19:25 +00002092 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002093 .manufacture_id = SST_ID,
2094 .model_id = SST_39SF040,
2095 .total_size = 512,
2096 .page_size = 4096,
2097 .tested = TEST_OK_PREW,
2098 .probe = probe_jedec,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00002099 .probe_timing = 1, /* 150 ns */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002100 .erase = erase_chip_jedec,
Uwe Hermann24f9fbe2009-05-12 14:06:04 +00002101 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002102 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002103 },
2104
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002105 {
2106 .vendor = "SST",
2107 .name = "SST39VF512",
Urja Rannikko038a3122009-06-28 19:19:25 +00002108 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002109 .manufacture_id = SST_ID,
2110 .model_id = SST_39VF512,
2111 .total_size = 64,
2112 .page_size = 4096,
Rudolf Mareke186da62009-05-17 18:24:24 +00002113 .tested = TEST_OK_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002114 .probe = probe_jedec,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00002115 .probe_timing = 1, /* 150 ns*/
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002116 .erase = erase_chip_jedec,
Uwe Hermann24f9fbe2009-05-12 14:06:04 +00002117 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002118 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002119 },
2120
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002121 {
2122 .vendor = "SST",
2123 .name = "SST39VF010",
Urja Rannikko038a3122009-06-28 19:19:25 +00002124 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002125 .manufacture_id = SST_ID,
2126 .model_id = SST_39VF010,
2127 .total_size = 128,
2128 .page_size = 4096,
Rudolf Marek50fdf3b2009-05-17 17:02:07 +00002129 .tested = TEST_OK_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002130 .probe = probe_jedec,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00002131 .probe_timing = 1, /* 150 ns */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002132 .erase = erase_chip_jedec,
Uwe Hermann24f9fbe2009-05-12 14:06:04 +00002133 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002134 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002135 },
2136
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002137 {
2138 .vendor = "SST",
2139 .name = "SST39VF020",
Urja Rannikko038a3122009-06-28 19:19:25 +00002140 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002141 .manufacture_id = SST_ID,
2142 .model_id = SST_39VF020,
2143 .total_size = 256,
2144 .page_size = 4096,
2145 .tested = TEST_OK_PREW,
2146 .probe = probe_jedec,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00002147 .probe_timing = 1, /* 150 ns */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002148 .erase = erase_chip_jedec,
Uwe Hermann24f9fbe2009-05-12 14:06:04 +00002149 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002150 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002151 },
2152
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002153 {
2154 .vendor = "SST",
2155 .name = "SST39VF040",
Urja Rannikko038a3122009-06-28 19:19:25 +00002156 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002157 .manufacture_id = SST_ID,
2158 .model_id = SST_39VF040,
2159 .total_size = 512,
2160 .page_size = 4096,
2161 .tested = TEST_OK_PROBE,
2162 .probe = probe_jedec,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00002163 .probe_timing = 1, /* 150 ns */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002164 .erase = erase_chip_jedec,
Uwe Hermann24f9fbe2009-05-12 14:06:04 +00002165 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002166 .read = read_memmapped,
Carl-Daniel Hailfinger90eff152008-12-08 23:51:45 +00002167 },
FENG yu ningff692fb2008-12-08 18:15:10 +00002168
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002169 {
2170 .vendor = "SST",
Peter Stuge8440cc02009-01-25 23:55:12 +00002171 .name = "SST39VF080",
Urja Rannikko038a3122009-06-28 19:19:25 +00002172 .bustype = CHIP_BUSTYPE_PARALLEL,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00002173 .manufacture_id = SST_ID,
2174 .model_id = SST_39VF080,
Peter Stuge8440cc02009-01-25 23:55:12 +00002175 .total_size = 1024,
2176 .page_size = 4096,
2177 .tested = TEST_UNTESTED,
2178 .probe = probe_jedec,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00002179 .probe_timing = 1, /* 150 ns */
Peter Stuge8440cc02009-01-25 23:55:12 +00002180 .erase = erase_chip_jedec,
Uwe Hermann24f9fbe2009-05-12 14:06:04 +00002181 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002182 .read = read_memmapped,
Peter Stuge8440cc02009-01-25 23:55:12 +00002183 },
2184
2185 {
2186 .vendor = "SST",
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002187 .name = "SST49LF002A/B",
Urja Rannikko038a3122009-06-28 19:19:25 +00002188 .bustype = CHIP_BUSTYPE_FWH, /* A/A Mux */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002189 .manufacture_id = SST_ID,
2190 .model_id = SST_49LF002A,
2191 .total_size = 256,
2192 .page_size = 16 * 1024,
2193 .tested = TEST_OK_PREW,
2194 .probe = probe_sst_fwhub,
Udu Ogahc04ee222009-09-05 01:31:32 +00002195 .probe_timing = 1, /* 150 ns | routine is wrapper to probe_jedec (sst_fwhub.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002196 .erase = erase_sst_fwhub,
2197 .write = write_sst_fwhub,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002198 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002199 },
2200
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002201 {
2202 .vendor = "SST",
2203 .name = "SST49LF003A/B",
Urja Rannikko038a3122009-06-28 19:19:25 +00002204 .bustype = CHIP_BUSTYPE_FWH, /* A/A Mux */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002205 .manufacture_id = SST_ID,
2206 .model_id = SST_49LF003A,
2207 .total_size = 384,
2208 .page_size = 64 * 1024,
Peter Lemenkov45835c42009-09-25 01:09:18 +00002209 .tested = TEST_OK_PR,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002210 .probe = probe_sst_fwhub,
Udu Ogahc04ee222009-09-05 01:31:32 +00002211 .probe_timing = 1, /* 150 ns | routine is wrapper to probe_jedec (sst_fwhub.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002212 .erase = erase_sst_fwhub,
2213 .write = write_sst_fwhub,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002214 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002215 },
2216
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002217 {
Carl-Daniel Hailfingera06287c2009-09-23 22:01:33 +00002218 /* Contrary to the data sheet, TBL# on the SST49LF004B affects the top 128kB (instead of 64kB)
2219 * and is only honored for 64k block erase, but not 4k sector erase.
2220 */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002221 .vendor = "SST",
2222 .name = "SST49LF004A/B",
Urja Rannikko038a3122009-06-28 19:19:25 +00002223 .bustype = CHIP_BUSTYPE_FWH, /* A/A Mux */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002224 .manufacture_id = SST_ID,
2225 .model_id = SST_49LF004A,
2226 .total_size = 512,
2227 .page_size = 64 * 1024,
2228 .tested = TEST_OK_PREW,
2229 .probe = probe_sst_fwhub,
Udu Ogahc04ee222009-09-05 01:31:32 +00002230 .probe_timing = 1, /* 150 ns | routine is wrapper to probe_jedec (sst_fwhub.c) */
Carl-Daniel Hailfingera06287c2009-09-23 22:01:33 +00002231 .erase = NULL,
2232 .block_erasers =
2233 {
2234 {
2235 .eraseblocks = { {4 * 1024, 128} },
2236 .block_erase = erase_sector_jedec, /* missing unlock */
2237 }, {
2238 .eraseblocks = { {64 * 1024, 8} },
Carl-Daniel Hailfinger11c9e682009-11-06 18:09:42 +00002239 .block_erase = erase_sst_fwhub_block, /* same as erase_block_jedec, but with unlock */
Carl-Daniel Hailfingera06287c2009-09-23 22:01:33 +00002240 }, {
2241 .eraseblocks = { {512 * 1024, 1} },
2242 .block_erase = NULL, /* AA 55 80 AA 55 10, only in PP mode */
2243 },
2244 },
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002245 .write = write_sst_fwhub,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002246 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002247 },
2248
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002249 {
2250 .vendor = "SST",
2251 .name = "SST49LF004C",
Urja Rannikko038a3122009-06-28 19:19:25 +00002252 .bustype = CHIP_BUSTYPE_FWH,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002253 .manufacture_id = SST_ID,
2254 .model_id = SST_49LF004C,
2255 .total_size = 512,
2256 .page_size = 4 * 1024,
2257 .tested = TEST_UNTESTED,
2258 .probe = probe_49lfxxxc,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002259 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (sst49lfxxxc.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002260 .erase = erase_49lfxxxc,
2261 .write = write_49lfxxxc,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002262 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002263 },
2264
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002265 {
2266 .vendor = "SST",
2267 .name = "SST49LF008A",
Urja Rannikko038a3122009-06-28 19:19:25 +00002268 .bustype = CHIP_BUSTYPE_FWH, /* A/A Mux */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002269 .manufacture_id = SST_ID,
2270 .model_id = SST_49LF008A,
2271 .total_size = 1024,
2272 .page_size = 64 * 1024,
2273 .tested = TEST_OK_PREW,
2274 .probe = probe_sst_fwhub,
Udu Ogahc04ee222009-09-05 01:31:32 +00002275 .probe_timing = 1, /* 150 ns | routine is wrapper to probe_jedec (sst_fwhub.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002276 .erase = erase_sst_fwhub,
2277 .write = write_sst_fwhub,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002278 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002279 },
2280
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002281 {
2282 .vendor = "SST",
2283 .name = "SST49LF008C",
Urja Rannikko038a3122009-06-28 19:19:25 +00002284 .bustype = CHIP_BUSTYPE_FWH,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002285 .manufacture_id = SST_ID,
2286 .model_id = SST_49LF008C,
2287 .total_size = 1024,
2288 .page_size = 4 * 1024,
2289 .tested = TEST_UNTESTED,
2290 .probe = probe_49lfxxxc,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002291 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (sst49lfxxxc.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002292 .erase = erase_49lfxxxc,
2293 .write = write_49lfxxxc,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002294 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002295 },
2296
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002297 {
2298 .vendor = "SST",
2299 .name = "SST49LF016C",
Urja Rannikko038a3122009-06-28 19:19:25 +00002300 .bustype = CHIP_BUSTYPE_FWH,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002301 .manufacture_id = SST_ID,
2302 .model_id = SST_49LF016C,
2303 .total_size = 2048,
2304 .page_size = 4 * 1024,
2305 .tested = TEST_OK_PREW,
2306 .probe = probe_49lfxxxc,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002307 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (sst49lfxxxc.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002308 .erase = erase_49lfxxxc,
2309 .write = write_49lfxxxc,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002310 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002311 },
2312
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002313 {
2314 .vendor = "SST",
2315 .name = "SST49LF020",
Mateusz Murawskie33890d2009-06-12 11:45:10 +00002316 .bustype = CHIP_BUSTYPE_LPC,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002317 .manufacture_id = SST_ID,
2318 .model_id = SST_49LF020,
2319 .total_size = 256,
2320 .page_size = 16 * 1024,
2321 .tested = TEST_OK_PR,
2322 .probe = probe_jedec,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00002323 .probe_timing = 1, /* 150 ns */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002324 .erase = erase_49lf040,
2325 .write = write_49lf040,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002326 .read = read_memmapped,
Sven Schnellec208dfb2009-01-07 12:35:09 +00002327 },
2328
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002329 {
2330 .vendor = "SST",
2331 .name = "SST49LF020A",
Mateusz Murawskie33890d2009-06-12 11:45:10 +00002332 .bustype = CHIP_BUSTYPE_LPC,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002333 .manufacture_id = SST_ID,
2334 .model_id = SST_49LF020A,
2335 .total_size = 256,
Carl-Daniel Hailfingerda654322009-07-23 01:44:38 +00002336 .page_size = 4 * 1024,
Nils Jacobsc0252682009-09-23 21:58:34 +00002337 .tested = TEST_OK_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002338 .probe = probe_jedec,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00002339 .probe_timing = 1, /* 150 ns */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002340 .erase = erase_49lf040,
2341 .write = write_49lf040,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002342 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002343 },
2344
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002345 {
2346 .vendor = "SST",
2347 .name = "SST49LF040",
Mateusz Murawskie33890d2009-06-12 11:45:10 +00002348 .bustype = CHIP_BUSTYPE_LPC,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002349 .manufacture_id = SST_ID,
2350 .model_id = SST_49LF040,
2351 .total_size = 512,
2352 .page_size = 4096,
2353 .tested = TEST_OK_PREW,
2354 .probe = probe_jedec,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00002355 .probe_timing = 1, /* 150 ns */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002356 .erase = erase_49lf040,
2357 .write = write_49lf040,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002358 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002359 },
2360
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002361 {
2362 .vendor = "SST",
2363 .name = "SST49LF040B",
Urja Rannikko038a3122009-06-28 19:19:25 +00002364 .bustype = CHIP_BUSTYPE_LPC, /* A/A Mux */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002365 .manufacture_id = SST_ID,
2366 .model_id = SST_49LF040B,
2367 .total_size = 512,
2368 .page_size = 64 * 1024,
2369 .tested = TEST_OK_PREW,
2370 .probe = probe_sst_fwhub,
Udu Ogahc04ee222009-09-05 01:31:32 +00002371 .probe_timing = 1, /* 150ns | routine is wrapper to probe_jedec (sst_fwhub.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002372 .erase = erase_sst_fwhub,
2373 .write = write_sst_fwhub,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002374 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002375 },
2376
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002377 {
2378 .vendor = "SST",
2379 .name = "SST49LF080A",
Urja Rannikko038a3122009-06-28 19:19:25 +00002380 .bustype = CHIP_BUSTYPE_LPC, /* A/A Mux */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002381 .manufacture_id = SST_ID,
Urja Rannikko038a3122009-06-28 19:19:25 +00002382 .model_id = SST_49LF080A,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002383 .total_size = 1024,
2384 .page_size = 4096,
2385 .tested = TEST_OK_PREW,
2386 .probe = probe_jedec,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002387 .probe_timing = TIMING_FIXME,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002388 .erase = erase_49lf040,
2389 .write = write_49lf040,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002390 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002391 },
2392
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002393 {
2394 .vendor = "SST",
2395 .name = "SST49LF160C",
Urja Rannikko038a3122009-06-28 19:19:25 +00002396 .bustype = CHIP_BUSTYPE_LPC,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002397 .manufacture_id = SST_ID,
2398 .model_id = SST_49LF160C,
2399 .total_size = 2048,
2400 .page_size = 4 * 1024,
2401 .tested = TEST_OK_PREW,
2402 .probe = probe_49lfxxxc,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002403 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (sst49lfxxxc.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002404 .erase = erase_49lfxxxc,
2405 .write = write_49lfxxxc,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002406 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002407 },
2408
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002409 {
2410 .vendor = "ST",
2411 .name = "M25P05-A",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002412 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002413 .manufacture_id = ST_ID,
2414 .model_id = ST_M25P05A,
2415 .total_size = 64,
2416 .page_size = 256,
2417 .tested = TEST_UNTESTED,
2418 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00002419 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002420 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00002421 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002422 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00002423 },
2424
Carl-Daniel Hailfinger32961be2009-07-23 01:40:20 +00002425 /* The ST M25P05 is a bit of a problem. It has the same ID as the
2426 * ST M25P05-A in RES mode, but supports only 128 byte writes instead
2427 * of 256 byte writes. We rely heavily on the fact that probe_spi_res
2428 * only is successful if RDID does not work.
2429 */
2430 {
2431 .vendor = "ST",
2432 .name = "M25P05.RES",
2433 .bustype = CHIP_BUSTYPE_SPI,
2434 .manufacture_id = ST_ID,
2435 .model_id = ST_M25P05_RES,
2436 .total_size = 64,
2437 .page_size = 256,
2438 .tested = TEST_UNTESTED,
2439 .probe = probe_spi_res,
2440 .probe_timing = TIMING_ZERO,
2441 .erase = spi_chip_erase_c7,
2442 .write = spi_chip_write_1, /* 128 */
2443 .read = spi_chip_read,
2444 },
2445
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002446 {
2447 .vendor = "ST",
2448 .name = "M25P10-A",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002449 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002450 .manufacture_id = ST_ID,
2451 .model_id = ST_M25P10A,
2452 .total_size = 128,
2453 .page_size = 256,
2454 .tested = TEST_UNTESTED,
2455 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00002456 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002457 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00002458 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002459 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00002460 },
2461
Carl-Daniel Hailfinger32961be2009-07-23 01:40:20 +00002462 /* The ST M25P10 has the same problem as the M25P05. */
2463 {
2464 .vendor = "ST",
2465 .name = "M25P10.RES",
2466 .bustype = CHIP_BUSTYPE_SPI,
2467 .manufacture_id = ST_ID,
2468 .model_id = ST_M25P10_RES,
2469 .total_size = 128,
2470 .page_size = 256,
2471 .tested = TEST_UNTESTED,
2472 .probe = probe_spi_res,
2473 .probe_timing = TIMING_ZERO,
2474 .erase = spi_chip_erase_c7,
2475 .write = spi_chip_write_1, /* 128 */
2476 .read = spi_chip_read,
2477 },
2478
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002479 {
2480 .vendor = "ST",
2481 .name = "M25P20",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002482 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002483 .manufacture_id = ST_ID,
2484 .model_id = ST_M25P20,
2485 .total_size = 256,
2486 .page_size = 256,
2487 .tested = TEST_UNTESTED,
2488 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00002489 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002490 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00002491 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002492 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00002493 },
2494
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002495 {
2496 .vendor = "ST",
2497 .name = "M25P40",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002498 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002499 .manufacture_id = ST_ID,
2500 .model_id = ST_M25P40,
2501 .total_size = 512,
2502 .page_size = 256,
Uwe Hermann04d5dc42009-07-03 17:12:05 +00002503 .tested = TEST_OK_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002504 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00002505 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002506 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00002507 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002508 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00002509 },
2510
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002511 {
2512 .vendor = "ST",
2513 .name = "M25P40-old",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002514 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002515 .manufacture_id = ST_ID,
2516 .model_id = ST_M25P40_RES,
2517 .total_size = 512,
2518 .page_size = 256,
2519 .tested = TEST_UNTESTED,
2520 .probe = probe_spi_res,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00002521 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002522 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00002523 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002524 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00002525 },
2526
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002527 {
2528 .vendor = "ST",
2529 .name = "M25P80",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002530 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002531 .manufacture_id = ST_ID,
2532 .model_id = ST_M25P80,
2533 .total_size = 1024,
2534 .page_size = 256,
Carl-Daniel Hailfinger5190ec12009-06-22 10:09:07 +00002535 .tested = TEST_OK_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002536 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00002537 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002538 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00002539 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002540 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00002541 },
2542
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002543 {
2544 .vendor = "ST",
2545 .name = "M25P16",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002546 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002547 .manufacture_id = ST_ID,
2548 .model_id = ST_M25P16,
2549 .total_size = 2048,
2550 .page_size = 256,
2551 .tested = TEST_OK_PREW,
2552 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00002553 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002554 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00002555 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002556 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00002557 },
2558
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002559 {
2560 .vendor = "ST",
2561 .name = "M25P32",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002562 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002563 .manufacture_id = ST_ID,
2564 .model_id = ST_M25P32,
2565 .total_size = 4096,
2566 .page_size = 256,
2567 .tested = TEST_OK_PREW,
2568 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00002569 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002570 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00002571 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002572 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00002573 },
2574
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002575 {
2576 .vendor = "ST",
2577 .name = "M25P64",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002578 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002579 .manufacture_id = ST_ID,
2580 .model_id = ST_M25P64,
2581 .total_size = 8192,
2582 .page_size = 256,
2583 .tested = TEST_UNTESTED,
2584 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00002585 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002586 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00002587 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002588 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00002589 },
2590
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002591 {
2592 .vendor = "ST",
2593 .name = "M25P128",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002594 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002595 .manufacture_id = ST_ID,
2596 .model_id = ST_M25P128,
2597 .total_size = 16384,
2598 .page_size = 256,
2599 .tested = TEST_UNTESTED,
2600 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00002601 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002602 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00002603 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002604 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00002605 },
2606
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002607 {
2608 .vendor = "ST",
2609 .name = "M29F002B",
Urja Rannikko038a3122009-06-28 19:19:25 +00002610 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002611 .manufacture_id = ST_ID,
2612 .model_id = ST_M29F002B,
2613 .total_size = 256,
2614 .page_size = 64 * 1024,
2615 .tested = TEST_UNTESTED,
2616 .probe = probe_jedec,
Udu Ogahc04ee222009-09-05 01:31:32 +00002617 .probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */
Peter Stugeaf8ffac2009-01-26 06:42:02 +00002618 .erase = erase_m29f002,
2619 .write = write_m29f002b,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002620 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002621 },
2622
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002623 {
2624 .vendor = "ST",
2625 .name = "M29F002T/NT",
Urja Rannikko038a3122009-06-28 19:19:25 +00002626 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002627 .manufacture_id = ST_ID,
2628 .model_id = ST_M29F002T,
2629 .total_size = 256,
2630 .page_size = 64 * 1024,
Peter Stugeaf8ffac2009-01-26 06:42:02 +00002631 .tested = TEST_OK_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002632 .probe = probe_jedec,
Udu Ogahc04ee222009-09-05 01:31:32 +00002633 .probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */
Peter Stugeaf8ffac2009-01-26 06:42:02 +00002634 .erase = erase_m29f002,
2635 .write = write_m29f002t,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002636 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002637 },
2638
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002639 {
2640 .vendor = "ST",
2641 .name = "M29F040B",
Urja Rannikko038a3122009-06-28 19:19:25 +00002642 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002643 .manufacture_id = ST_ID,
2644 .model_id = ST_M29F040B,
2645 .total_size = 512,
2646 .page_size = 64 * 1024,
2647 .tested = TEST_OK_PREW,
2648 .probe = probe_29f040b,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002649 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (am29f040b.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002650 .erase = erase_29f040b,
2651 .write = write_29f040b,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002652 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002653 },
2654
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002655 {
2656 .vendor = "ST",
2657 .name = "M29F400BT",
Urja Rannikko038a3122009-06-28 19:19:25 +00002658 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002659 .manufacture_id = ST_ID,
2660 .model_id = ST_M29F400BT,
2661 .total_size = 512,
2662 .page_size = 64 * 1024,
2663 .tested = TEST_UNTESTED,
2664 .probe = probe_m29f400bt,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002665 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (m29f400bt.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002666 .erase = erase_m29f400bt,
2667 .write = write_coreboot_m29f400bt,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002668 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002669 },
2670
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002671 {
2672 .vendor = "ST",
2673 .name = "M29W010B",
Urja Rannikko038a3122009-06-28 19:19:25 +00002674 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002675 .manufacture_id = ST_ID,
2676 .model_id = ST_M29W010B,
2677 .total_size = 128,
2678 .page_size = 16 * 1024,
2679 .tested = TEST_UNTESTED,
2680 .probe = probe_jedec,
Udu Ogahc04ee222009-09-05 01:31:32 +00002681 .probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002682 .erase = erase_chip_jedec,
2683 .write = write_jedec,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002684 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002685 },
2686
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002687 {
2688 .vendor = "ST",
2689 .name = "M29W040B",
Urja Rannikko038a3122009-06-28 19:19:25 +00002690 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002691 .manufacture_id = ST_ID,
2692 .model_id = ST_M29W040B,
2693 .total_size = 512,
2694 .page_size = 64 * 1024,
2695 .tested = TEST_UNTESTED,
2696 .probe = probe_jedec,
Udu Ogahc04ee222009-09-05 01:31:32 +00002697 .probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002698 .erase = erase_chip_jedec,
2699 .write = write_jedec,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002700 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002701 },
2702
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002703 {
2704 .vendor = "ST",
2705 .name = "M50FLW040A",
Urja Rannikko038a3122009-06-28 19:19:25 +00002706 .bustype = CHIP_BUSTYPE_FWH|CHIP_BUSTYPE_LPC, /* A/A Mux */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002707 .manufacture_id = ST_ID,
2708 .model_id = ST_M50FLW040A,
2709 .total_size = 512,
2710 .page_size = 64 * 1024,
2711 .tested = TEST_UNTESTED,
2712 .probe = probe_stm50flw0x0x,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002713 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (stm50flw0x0x.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002714 .erase = erase_stm50flw0x0x,
2715 .write = write_stm50flw0x0x,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002716 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002717 },
2718
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002719 {
2720 .vendor = "ST",
2721 .name = "M50FLW040B",
Urja Rannikko038a3122009-06-28 19:19:25 +00002722 .bustype = CHIP_BUSTYPE_FWH|CHIP_BUSTYPE_LPC, /* A/A Mux */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002723 .manufacture_id = ST_ID,
2724 .model_id = ST_M50FLW040B,
2725 .total_size = 512,
2726 .page_size = 64 * 1024,
2727 .tested = TEST_UNTESTED,
2728 .probe = probe_stm50flw0x0x,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002729 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (stm50flw0x0x.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002730 .erase = erase_stm50flw0x0x,
2731 .write = write_stm50flw0x0x,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002732 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002733 },
2734
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002735 {
2736 .vendor = "ST",
2737 .name = "M50FLW080A",
Urja Rannikko038a3122009-06-28 19:19:25 +00002738 .bustype = CHIP_BUSTYPE_FWH|CHIP_BUSTYPE_LPC, /* A/A Mux */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002739 .manufacture_id = ST_ID,
2740 .model_id = ST_M50FLW080A,
2741 .total_size = 1024,
2742 .page_size = 64 * 1024,
2743 .tested = TEST_OK_PREW,
2744 .probe = probe_stm50flw0x0x,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002745 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (stm50flw0x0x.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002746 .erase = erase_stm50flw0x0x,
2747 .write = write_stm50flw0x0x,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002748 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002749 },
2750
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002751 {
2752 .vendor = "ST",
2753 .name = "M50FLW080B",
Urja Rannikko038a3122009-06-28 19:19:25 +00002754 .bustype = CHIP_BUSTYPE_FWH|CHIP_BUSTYPE_LPC, /* A/A Mux */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002755 .manufacture_id = ST_ID,
2756 .model_id = ST_M50FLW080B,
2757 .total_size = 1024,
2758 .page_size = 64 * 1024,
2759 .tested = TEST_UNTESTED,
2760 .probe = probe_stm50flw0x0x,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002761 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (stm50flw0x0x.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002762 .erase = erase_stm50flw0x0x,
2763 .write = write_stm50flw0x0x,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002764 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002765 },
2766
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002767 {
2768 .vendor = "ST",
2769 .name = "M50FW002",
Urja Rannikko038a3122009-06-28 19:19:25 +00002770 .bustype = CHIP_BUSTYPE_FWH, /* A/A Mux */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002771 .manufacture_id = ST_ID,
2772 .model_id = ST_M50FW002,
2773 .total_size = 256,
2774 .page_size = 64 * 1024,
2775 .tested = TEST_UNTESTED,
2776 .probe = probe_49lfxxxc,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002777 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (sst49lfxxxc.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002778 .erase = NULL,
2779 .write = NULL,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002780 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002781 },
2782
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002783 {
2784 .vendor = "ST",
2785 .name = "M50FW016",
Urja Rannikko038a3122009-06-28 19:19:25 +00002786 .bustype = CHIP_BUSTYPE_FWH, /* A/A Mux */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002787 .manufacture_id = ST_ID,
2788 .model_id = ST_M50FW016,
2789 .total_size = 2048,
2790 .page_size = 64 * 1024,
2791 .tested = TEST_UNTESTED,
2792 .probe = probe_82802ab,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002793 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (82802ab.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002794 .erase = erase_82802ab,
2795 .write = write_82802ab,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002796 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002797 },
2798
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002799 {
2800 .vendor = "ST",
2801 .name = "M50FW040",
Urja Rannikko038a3122009-06-28 19:19:25 +00002802 .bustype = CHIP_BUSTYPE_FWH, /* A/A Mux */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002803 .manufacture_id = ST_ID,
2804 .model_id = ST_M50FW040,
2805 .total_size = 512,
2806 .page_size = 64 * 1024,
2807 .tested = TEST_OK_PREW,
2808 .probe = probe_82802ab,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002809 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (82802ab.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002810 .erase = erase_82802ab,
2811 .write = write_82802ab,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002812 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002813 },
2814
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002815 {
2816 .vendor = "ST",
2817 .name = "M50FW080",
Urja Rannikko038a3122009-06-28 19:19:25 +00002818 .bustype = CHIP_BUSTYPE_FWH, /* A/A Mux */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002819 .manufacture_id = ST_ID,
2820 .model_id = ST_M50FW080,
2821 .total_size = 1024,
2822 .page_size = 64 * 1024,
Peter Stugea657e942009-01-24 23:01:08 +00002823 .tested = TEST_OK_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002824 .probe = probe_82802ab,
Maciej Pijankac6e11112009-06-03 14:46:22 +00002825 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (82802ab.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002826 .erase = erase_82802ab,
2827 .write = write_82802ab,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002828 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002829 },
2830
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002831 {
2832 .vendor = "ST",
2833 .name = "M50LPW116",
Urja Rannikko038a3122009-06-28 19:19:25 +00002834 .bustype = CHIP_BUSTYPE_LPC, /* A/A Mux */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002835 .manufacture_id = ST_ID,
2836 .model_id = ST_M50LPW116,
2837 .total_size = 2048,
2838 .page_size = 64 * 1024,
2839 .tested = TEST_UNTESTED,
2840 .probe = probe_jedec,
Udu Ogahc04ee222009-09-05 01:31:32 +00002841 .probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002842 .erase = erase_chip_jedec,
2843 .write = write_jedec,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002844 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002845 },
2846
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002847 {
2848 .vendor = "SyncMOS",
2849 .name = "S29C31004T",
Urja Rannikko038a3122009-06-28 19:19:25 +00002850 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002851 .manufacture_id = SYNCMOS_ID,
2852 .model_id = S29C31004T,
2853 .total_size = 512,
2854 .page_size = 128,
2855 .tested = TEST_UNTESTED,
2856 .probe = probe_jedec,
Udu Ogahc04ee222009-09-05 01:31:32 +00002857 .probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002858 .erase = erase_chip_jedec,
2859 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002860 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002861 },
2862
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002863 {
2864 .vendor = "SyncMOS",
2865 .name = "S29C51001T",
Urja Rannikko038a3122009-06-28 19:19:25 +00002866 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002867 .manufacture_id = SYNCMOS_ID,
2868 .model_id = S29C51001T,
2869 .total_size = 128,
2870 .page_size = 128,
2871 .tested = TEST_UNTESTED,
2872 .probe = probe_jedec,
Udu Ogahc04ee222009-09-05 01:31:32 +00002873 .probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002874 .erase = erase_chip_jedec,
2875 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002876 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002877 },
2878
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002879 {
2880 .vendor = "SyncMOS",
2881 .name = "S29C51002T",
Urja Rannikko038a3122009-06-28 19:19:25 +00002882 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002883 .manufacture_id = SYNCMOS_ID,
2884 .model_id = S29C51002T,
2885 .total_size = 256,
2886 .page_size = 128,
2887 .tested = TEST_OK_PREW,
2888 .probe = probe_jedec,
Udu Ogahc04ee222009-09-05 01:31:32 +00002889 .probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002890 .erase = erase_chip_jedec,
2891 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002892 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002893 },
2894
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002895 {
2896 .vendor = "SyncMOS",
2897 .name = "S29C51004T",
Urja Rannikko038a3122009-06-28 19:19:25 +00002898 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002899 .manufacture_id = SYNCMOS_ID,
2900 .model_id = S29C51004T,
2901 .total_size = 512,
2902 .page_size = 128,
2903 .tested = TEST_UNTESTED,
2904 .probe = probe_jedec,
Udu Ogahc04ee222009-09-05 01:31:32 +00002905 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002906 .erase = erase_chip_jedec,
2907 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00002908 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00002909 },
2910
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002911 {
Uwe Hermanna106d152009-05-27 23:17:40 +00002912 .vendor = "TI",
Carl-Daniel Hailfinger09b4fb72009-05-26 21:26:23 +00002913 .name = "TMS29F002RB",
Urja Rannikko038a3122009-06-28 19:19:25 +00002914 .bustype = CHIP_BUSTYPE_PARALLEL,
Carl-Daniel Hailfinger09b4fb72009-05-26 21:26:23 +00002915 .manufacture_id = TI_OLD_ID,
2916 .model_id = TI_TMS29F002RB,
2917 .total_size = 256,
2918 .page_size = 16384, /* Non-uniform sectors */
2919 .tested = TEST_UNTESTED,
2920 .probe = probe_jedec,
Udu Ogahc04ee222009-09-05 01:31:32 +00002921 .probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */
Carl-Daniel Hailfinger09b4fb72009-05-26 21:26:23 +00002922 .erase = NULL,
2923 .write = NULL,
2924 .read = read_memmapped,
2925 },
2926
2927 {
Uwe Hermanna106d152009-05-27 23:17:40 +00002928 .vendor = "TI",
Carl-Daniel Hailfinger09b4fb72009-05-26 21:26:23 +00002929 .name = "TMS29F002RT",
Urja Rannikko038a3122009-06-28 19:19:25 +00002930 .bustype = CHIP_BUSTYPE_PARALLEL,
Carl-Daniel Hailfinger09b4fb72009-05-26 21:26:23 +00002931 .manufacture_id = TI_OLD_ID,
2932 .model_id = TI_TMS29F002RT,
2933 .total_size = 256,
2934 .page_size = 16384, /* Non-uniform sectors */
2935 .tested = TEST_UNTESTED,
2936 .probe = probe_jedec,
Udu Ogahc04ee222009-09-05 01:31:32 +00002937 .probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */
Carl-Daniel Hailfinger09b4fb72009-05-26 21:26:23 +00002938 .erase = NULL,
2939 .write = NULL,
2940 .read = read_memmapped,
2941 },
2942
2943 {
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002944 .vendor = "Winbond",
2945 .name = "W25x10",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002946 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002947 .manufacture_id = WINBOND_NEX_ID,
2948 .model_id = W_25X10,
2949 .total_size = 128,
2950 .page_size = 256,
2951 .tested = TEST_UNTESTED,
2952 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00002953 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002954 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00002955 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002956 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00002957 },
2958
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002959 {
2960 .vendor = "Winbond",
2961 .name = "W25x20",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002962 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002963 .manufacture_id = WINBOND_NEX_ID,
2964 .model_id = W_25X20,
2965 .total_size = 256,
2966 .page_size = 256,
2967 .tested = TEST_UNTESTED,
2968 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00002969 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002970 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00002971 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002972 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00002973 },
2974
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002975 {
2976 .vendor = "Winbond",
2977 .name = "W25x40",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002978 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002979 .manufacture_id = WINBOND_NEX_ID,
2980 .model_id = W_25X40,
2981 .total_size = 512,
2982 .page_size = 256,
2983 .tested = TEST_OK_PREW,
2984 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00002985 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002986 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00002987 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002988 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00002989 },
2990
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002991 {
2992 .vendor = "Winbond",
2993 .name = "W25x80",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00002994 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00002995 .manufacture_id = WINBOND_NEX_ID,
2996 .model_id = W_25X80,
2997 .total_size = 1024,
2998 .page_size = 256,
2999 .tested = TEST_OK_PREW,
3000 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00003001 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003002 .erase = spi_chip_erase_c7,
Carl-Daniel Hailfinger8d497012009-05-09 02:34:18 +00003003 .write = spi_chip_write_256,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003004 .read = spi_chip_read,
FENG yu ningff692fb2008-12-08 18:15:10 +00003005 },
3006
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003007 {
3008 .vendor = "Winbond",
Hector Martina721ae22009-07-11 19:39:11 +00003009 .name = "W25x16",
3010 .bustype = CHIP_BUSTYPE_SPI,
3011 .manufacture_id = WINBOND_NEX_ID,
3012 .model_id = W_25X16,
3013 .total_size = 2048,
3014 .page_size = 256,
3015 .tested = TEST_OK_PR,
3016 .probe = probe_spi_rdid,
3017 .probe_timing = TIMING_ZERO,
3018 .erase = spi_chip_erase_c7,
3019 .write = spi_chip_write_256,
3020 .read = spi_chip_read,
3021 },
3022
3023 {
3024 .vendor = "Winbond",
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003025 .name = "W29C011",
Urja Rannikko038a3122009-06-28 19:19:25 +00003026 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003027 .manufacture_id = WINBOND_ID,
3028 .model_id = W_29C011,
3029 .total_size = 128,
3030 .page_size = 128,
3031 .tested = TEST_OK_PREW,
3032 .probe = probe_jedec,
Udu Ogahc04ee222009-09-05 01:31:32 +00003033 .probe_timing = 10, /* used datasheet for the W29C011A */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003034 .erase = erase_chip_jedec,
3035 .write = write_jedec,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00003036 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00003037 },
3038
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003039 {
3040 .vendor = "Winbond",
3041 .name = "W29C020C",
Urja Rannikko161b8852009-06-05 08:47:37 +00003042 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003043 .manufacture_id = WINBOND_ID,
3044 .model_id = W_29C020C,
3045 .total_size = 256,
3046 .page_size = 128,
3047 .tested = TEST_OK_PREW,
3048 .probe = probe_jedec,
Mateusz Murawski8b2f46b2009-06-12 21:29:36 +00003049 .probe_timing = 10,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003050 .erase = erase_chip_jedec,
3051 .write = write_jedec,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00003052 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00003053 },
3054
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003055 {
3056 .vendor = "Winbond",
3057 .name = "W29C040P",
Urja Rannikko161b8852009-06-05 08:47:37 +00003058 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003059 .manufacture_id = WINBOND_ID,
3060 .model_id = W_29C040P,
3061 .total_size = 512,
3062 .page_size = 256,
3063 .tested = TEST_UNTESTED,
3064 .probe = probe_jedec,
Mateusz Murawski8b2f46b2009-06-12 21:29:36 +00003065 .probe_timing = 10,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003066 .erase = erase_chip_jedec,
3067 .write = write_jedec,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00003068 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00003069 },
3070
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003071 {
3072 .vendor = "Winbond",
3073 .name = "W29EE011",
Urja Rannikko038a3122009-06-28 19:19:25 +00003074 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003075 .manufacture_id = WINBOND_ID,
3076 .model_id = W_29C011,
3077 .total_size = 128,
3078 .page_size = 128,
3079 .tested = TEST_OK_PREW,
3080 .probe = probe_w29ee011,
Maciej Pijankac6e11112009-06-03 14:46:22 +00003081 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (w29ee011.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003082 .erase = erase_chip_jedec,
3083 .write = write_jedec,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00003084 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00003085 },
3086
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003087 {
3088 .vendor = "Winbond",
3089 .name = "W39V040A",
Mateusz Murawski8b2f46b2009-06-12 21:29:36 +00003090 .bustype = CHIP_BUSTYPE_LPC,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003091 .manufacture_id = WINBOND_ID,
3092 .model_id = W_39V040A,
3093 .total_size = 512,
3094 .page_size = 64*1024,
Uwe Hermann690bcba2009-05-21 17:11:25 +00003095 .tested = TEST_OK_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003096 .probe = probe_jedec,
Mateusz Murawski8b2f46b2009-06-12 21:29:36 +00003097 .probe_timing = 10,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003098 .erase = erase_chip_jedec,
Uwe Hermann24f9fbe2009-05-12 14:06:04 +00003099 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00003100 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00003101 },
3102
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003103 {
3104 .vendor = "Winbond",
3105 .name = "W39V040B",
Mateusz Murawski8b2f46b2009-06-12 21:29:36 +00003106 .bustype = CHIP_BUSTYPE_LPC,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003107 .manufacture_id = WINBOND_ID,
3108 .model_id = W_39V040B,
3109 .total_size = 512,
3110 .page_size = 64*1024,
Luc Verhaegen8bfb59c2009-07-08 14:50:36 +00003111 .tested = TEST_OK_PR | TEST_BAD_ERASE | TEST_BAD_WRITE,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003112 .probe = probe_jedec,
Mateusz Murawski8b2f46b2009-06-12 21:29:36 +00003113 .probe_timing = 10,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003114 .erase = erase_chip_jedec,
Uwe Hermann24f9fbe2009-05-12 14:06:04 +00003115 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00003116 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00003117 },
3118
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003119 {
3120 .vendor = "Winbond",
3121 .name = "W39V040C",
Mateusz Murawski8b2f46b2009-06-12 21:29:36 +00003122 .bustype = CHIP_BUSTYPE_LPC,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003123 .manufacture_id = WINBOND_ID,
Mateusz Murawskie33890d2009-06-12 11:45:10 +00003124 .model_id = W_39V040C,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003125 .total_size = 512,
3126 .page_size = 64*1024,
3127 .tested = TEST_OK_PREW,
3128 .probe = probe_w39v040c,
Maciej Pijankac6e11112009-06-03 14:46:22 +00003129 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (w39v040c.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003130 .erase = erase_w39v040c,
3131 .write = write_w39v040c,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00003132 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00003133 },
3134
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003135 {
3136 .vendor = "Winbond",
3137 .name = "W39V040FA",
Mateusz Murawski8b2f46b2009-06-12 21:29:36 +00003138 .bustype = CHIP_BUSTYPE_FWH,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003139 .manufacture_id = WINBOND_ID,
3140 .model_id = W_39V040FA,
3141 .total_size = 512,
3142 .page_size = 64*1024,
3143 .tested = TEST_OK_PREW,
3144 .probe = probe_jedec,
Mateusz Murawski8b2f46b2009-06-12 21:29:36 +00003145 .probe_timing = 10,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003146 .erase = erase_chip_jedec,
Uwe Hermann24f9fbe2009-05-12 14:06:04 +00003147 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00003148 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00003149 },
3150
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003151 {
3152 .vendor = "Winbond",
3153 .name = "W39V080A",
Mateusz Murawski8b2f46b2009-06-12 21:29:36 +00003154 .bustype = CHIP_BUSTYPE_LPC,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003155 .manufacture_id = WINBOND_ID,
3156 .model_id = W_39V080A,
3157 .total_size = 1024,
3158 .page_size = 64*1024,
3159 .tested = TEST_OK_PREW,
3160 .probe = probe_jedec,
Mateusz Murawski8b2f46b2009-06-12 21:29:36 +00003161 .probe_timing = 10,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003162 .erase = erase_chip_jedec,
Uwe Hermann24f9fbe2009-05-12 14:06:04 +00003163 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00003164 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00003165 },
3166
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003167 {
3168 .vendor = "Winbond",
3169 .name = "W49F002U",
Urja Rannikko038a3122009-06-28 19:19:25 +00003170 .bustype = CHIP_BUSTYPE_PARALLEL,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003171 .manufacture_id = WINBOND_ID,
3172 .model_id = W_49F002U,
3173 .total_size = 256,
3174 .page_size = 128,
3175 .tested = TEST_OK_PREW,
3176 .probe = probe_jedec,
Udu Ogahc04ee222009-09-05 01:31:32 +00003177 .probe_timing = 10,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003178 .erase = erase_chip_jedec,
3179 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00003180 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00003181 },
3182
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003183 {
3184 .vendor = "Winbond",
3185 .name = "W49V002A",
Mateusz Murawski8b2f46b2009-06-12 21:29:36 +00003186 .bustype = CHIP_BUSTYPE_LPC,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003187 .manufacture_id = WINBOND_ID,
3188 .model_id = W_49V002A,
3189 .total_size = 256,
3190 .page_size = 128,
3191 .tested = TEST_OK_PREW,
3192 .probe = probe_jedec,
Mateusz Murawski8b2f46b2009-06-12 21:29:36 +00003193 .probe_timing = 10,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003194 .erase = erase_chip_jedec,
3195 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00003196 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00003197 },
3198
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003199 {
3200 .vendor = "Winbond",
3201 .name = "W49V002FA",
Mateusz Murawski8b2f46b2009-06-12 21:29:36 +00003202 .bustype = CHIP_BUSTYPE_FWH,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003203 .manufacture_id = WINBOND_ID,
3204 .model_id = W_49V002FA,
3205 .total_size = 256,
3206 .page_size = 128,
3207 .tested = TEST_UNTESTED,
3208 .probe = probe_jedec,
Udu Ogahc04ee222009-09-05 01:31:32 +00003209 .probe_timing = 10,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003210 .erase = erase_chip_jedec,
3211 .write = write_49f002,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00003212 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00003213 },
3214
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003215 {
3216 .vendor = "Winbond",
3217 .name = "W39V080FA",
Mateusz Murawski8b2f46b2009-06-12 21:29:36 +00003218 .bustype = CHIP_BUSTYPE_FWH,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003219 .manufacture_id = WINBOND_ID,
3220 .model_id = W_39V080FA,
3221 .total_size = 1024,
3222 .page_size = 64*1024,
3223 .tested = TEST_OK_PREW,
3224 .probe = probe_winbond_fwhub,
Maciej Pijankac6e11112009-06-03 14:46:22 +00003225 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (w39v080fa.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003226 .erase = erase_winbond_fwhub,
3227 .write = write_winbond_fwhub,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00003228 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00003229 },
3230
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003231 {
3232 .vendor = "Winbond",
3233 .name = "W39V080FA (dual mode)",
Mateusz Murawski8b2f46b2009-06-12 21:29:36 +00003234 .bustype = CHIP_BUSTYPE_FWH,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003235 .manufacture_id = WINBOND_ID,
3236 .model_id = W_39V080FA_DM,
3237 .total_size = 512,
3238 .page_size = 64*1024,
3239 .tested = TEST_UNTESTED,
3240 .probe = probe_winbond_fwhub,
Maciej Pijankac6e11112009-06-03 14:46:22 +00003241 .probe_timing = TIMING_IGNORED, /* routine don't use probe_timing (w39v080fa.c) */
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003242 .erase = erase_winbond_fwhub,
3243 .write = write_winbond_fwhub,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00003244 .read = read_memmapped,
FENG yu ningff692fb2008-12-08 18:15:10 +00003245 },
3246
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003247 {
3248 .vendor = "Atmel",
3249 .name = "unknown Atmel SPI chip",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00003250 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003251 .manufacture_id = ATMEL_ID,
3252 .model_id = GENERIC_DEVICE_ID,
3253 .total_size = 0,
3254 .page_size = 256,
Carl-Daniel Hailfinger42882fd2009-04-22 13:33:43 +00003255 .tested = TEST_BAD_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003256 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00003257 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003258 .erase = NULL,
3259 .write = NULL,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00003260 .read = NULL,
FENG yu ningff692fb2008-12-08 18:15:10 +00003261 },
3262
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003263 {
3264 .vendor = "EON",
3265 .name = "unknown EON SPI chip",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00003266 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003267 .manufacture_id = EON_ID_NOPREFIX,
3268 .model_id = GENERIC_DEVICE_ID,
3269 .total_size = 0,
3270 .page_size = 256,
Carl-Daniel Hailfinger42882fd2009-04-22 13:33:43 +00003271 .tested = TEST_BAD_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003272 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00003273 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003274 .erase = NULL,
3275 .write = NULL,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00003276 .read = NULL,
FENG yu ningff692fb2008-12-08 18:15:10 +00003277 },
3278
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003279 {
3280 .vendor = "Macronix",
3281 .name = "unknown Macronix SPI chip",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00003282 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003283 .manufacture_id = MX_ID,
3284 .model_id = GENERIC_DEVICE_ID,
3285 .total_size = 0,
3286 .page_size = 256,
Carl-Daniel Hailfinger42882fd2009-04-22 13:33:43 +00003287 .tested = TEST_BAD_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003288 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00003289 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003290 .erase = NULL,
3291 .write = NULL,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00003292 .read = NULL,
FENG yu ningff692fb2008-12-08 18:15:10 +00003293 },
3294
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003295 {
3296 .vendor = "PMC",
3297 .name = "unknown PMC SPI chip",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00003298 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003299 .manufacture_id = PMC_ID,
3300 .model_id = GENERIC_DEVICE_ID,
3301 .total_size = 0,
3302 .page_size = 256,
Carl-Daniel Hailfinger42882fd2009-04-22 13:33:43 +00003303 .tested = TEST_BAD_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003304 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00003305 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003306 .erase = NULL,
3307 .write = NULL,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00003308 .read = NULL,
FENG yu ningff692fb2008-12-08 18:15:10 +00003309 },
3310
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003311 {
3312 .vendor = "SST",
3313 .name = "unknown SST SPI chip",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00003314 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003315 .manufacture_id = SST_ID,
3316 .model_id = GENERIC_DEVICE_ID,
3317 .total_size = 0,
3318 .page_size = 256,
Carl-Daniel Hailfinger42882fd2009-04-22 13:33:43 +00003319 .tested = TEST_BAD_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003320 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00003321 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003322 .erase = NULL,
3323 .write = NULL,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00003324 .read = NULL,
FENG yu ningff692fb2008-12-08 18:15:10 +00003325 },
3326
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003327 {
3328 .vendor = "ST",
3329 .name = "unknown ST SPI chip",
Carl-Daniel Hailfinger1dfe0ff2009-05-31 17:57:34 +00003330 .bustype = CHIP_BUSTYPE_SPI,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003331 .manufacture_id = ST_ID,
3332 .model_id = GENERIC_DEVICE_ID,
3333 .total_size = 0,
3334 .page_size = 256,
Carl-Daniel Hailfinger42882fd2009-04-22 13:33:43 +00003335 .tested = TEST_BAD_PREW,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003336 .probe = probe_spi_rdid,
Carl-Daniel Hailfinger2bc020b2009-06-05 13:46:17 +00003337 .probe_timing = TIMING_ZERO,
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003338 .erase = NULL,
3339 .write = NULL,
Carl-Daniel Hailfinger03b4e712009-05-08 12:49:03 +00003340 .read = NULL,
FENG yu ningff692fb2008-12-08 18:15:10 +00003341 },
Uwe Hermannfc425e82008-03-16 02:06:25 +00003342
Stephan Guilloux5c5b5252009-01-08 03:40:17 +00003343 { NULL }
Stephan Guilloux72cf5652009-04-21 01:46:07 +00003344};