2 * This file is part of the flashrom project.
4 * Copyright (C) 2000 Silicon Integrated System Corporation
5 * Copyright (C) 2004 Tyan Corp
6 * Copyright (C) 2005-2008 coresystems GmbH <stepan@openbios.org>
8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License as published by
10 * the Free Software Foundation; either version 2 of the License, or
11 * (at your option) any later version.
13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU General Public License for more details.
18 * You should have received a copy of the GNU General Public License
19 * along with this program; if not, write to the Free Software
20 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
26 * List of supported flash ROM chips.
28 * Please keep the list sorted by vendor name and chip name, so that
29 * the output of 'flashrom -L' is alphabetically sorted.
31 struct flashchip flashchips[] = {
33 /* Vendor, Chip, Vendor ID, Chip ID,
34 * Total size (kB), Page size (B),
36 * Probe function, Erase function, Write function, Read function
41 .name = "Am29F002(N)BB",
42 .manufacture_id = AMD_ID,
43 .model_id = AM_29F002BB,
46 .tested = TEST_UNTESTED,
48 .erase = erase_chip_jedec,
49 .write = write_en29f002a,
54 .name = "Am29F002(N)BT",
55 .manufacture_id = AMD_ID,
56 .model_id = AM_29F002BT,
59 .tested = TEST_OK_PREW,
61 .erase = erase_chip_jedec,
62 .write = write_en29f002a,
68 .manufacture_id = AMD_ID,
69 .model_id = AM_29F016D,
71 .page_size = 64 * 1024,
72 .tested = TEST_UNTESTED,
73 .probe = probe_29f040b,
74 .erase = erase_29f040b,
75 .write = write_29f040b,
81 .manufacture_id = AMD_ID,
82 .model_id = AM_29F040B,
84 .page_size = 64 * 1024,
85 .tested = TEST_OK_PREW,
86 .probe = probe_29f040b,
87 .erase = erase_29f040b,
88 .write = write_29f040b,
94 .manufacture_id = 0x01,
97 .page_size = 64 * 1024,
98 .tested = TEST_UNTESTED,
100 .erase = erase_29f040b,
101 .write = write_29f040b,
106 .name = "Am29LV040B",
107 .manufacture_id = AMD_ID,
108 .model_id = AM_29LV040B,
110 .page_size = 64 * 1024,
111 .tested = TEST_UNTESTED,
112 .probe = probe_29f040b,
113 .erase = erase_29f040b,
114 .write = write_29f040b,
119 .name = "Am29LV081B",
120 .manufacture_id = 0x01,
123 .page_size = 64 * 1024,
124 .tested = TEST_UNTESTED,
125 .probe = probe_29f040b,
126 .erase = erase_29f040b,
127 .write = write_29f040b,
133 .manufacture_id = ASD_ID,
134 .model_id = ASD_AE49F2008,
137 .tested = TEST_UNTESTED,
138 .probe = probe_jedec,
139 .erase = erase_chip_jedec,
140 .write = write_jedec,
146 .manufacture_id = ATMEL_ID,
147 .model_id = AT_25DF021,
150 .tested = TEST_UNTESTED,
151 .probe = probe_spi_rdid,
152 .erase = spi_chip_erase_60_c7,
153 .write = spi_chip_write,
154 .read = spi_chip_read,
159 .name = "AT25DF041A",
160 .manufacture_id = ATMEL_ID,
161 .model_id = AT_25DF041A,
164 .tested = TEST_UNTESTED,
165 .probe = probe_spi_rdid,
166 .erase = spi_chip_erase_60_c7,
167 .write = spi_chip_write,
168 .read = spi_chip_read,
174 .manufacture_id = ATMEL_ID,
175 .model_id = AT_25DF081,
178 .tested = TEST_UNTESTED,
179 .probe = probe_spi_rdid,
180 .erase = spi_chip_erase_60_c7,
181 .write = spi_chip_write,
182 .read = spi_chip_read,
188 .manufacture_id = ATMEL_ID,
189 .model_id = AT_25DF161,
192 .tested = TEST_UNTESTED,
193 .probe = probe_spi_rdid,
194 .erase = spi_chip_erase_60_c7,
195 .write = spi_chip_write,
196 .read = spi_chip_read,
202 .manufacture_id = ATMEL_ID,
203 .model_id = AT_25DF321,
206 .tested = TEST_OK_PREW,
207 .probe = probe_spi_rdid,
208 .erase = spi_chip_erase_60_c7,
209 .write = spi_chip_write,
210 .read = spi_chip_read,
215 .name = "AT25DF321A",
216 .manufacture_id = ATMEL_ID,
217 .model_id = AT_25DF321A,
220 .tested = TEST_UNTESTED,
221 .probe = probe_spi_rdid,
222 .erase = spi_chip_erase_60_c7,
223 .write = spi_chip_write,
224 .read = spi_chip_read,
230 .manufacture_id = ATMEL_ID,
231 .model_id = AT_25DF641,
234 .tested = TEST_UNTESTED,
235 .probe = probe_spi_rdid,
236 .erase = spi_chip_erase_60_c7,
237 .write = spi_chip_write,
238 .read = spi_chip_read,
244 .manufacture_id = ATMEL_ID,
245 .model_id = AT_25F512B,
248 .tested = TEST_UNTESTED,
249 .probe = probe_spi_rdid,
250 .erase = spi_chip_erase_60_c7,
251 .write = spi_chip_write,
252 .read = spi_chip_read,
258 .manufacture_id = ATMEL_ID,
259 .model_id = AT_25FS010,
262 .tested = TEST_UNTESTED,
263 .probe = probe_spi_rdid,
264 .erase = spi_chip_erase_60_c7,
265 .write = spi_chip_write,
266 .read = spi_chip_read,
272 .manufacture_id = ATMEL_ID,
273 .model_id = AT_25FS040,
276 .tested = TEST_UNTESTED,
277 .probe = probe_spi_rdid,
278 .erase = spi_chip_erase_60_c7,
279 .write = spi_chip_write,
280 .read = spi_chip_read,
286 .manufacture_id = ATMEL_ID,
287 .model_id = AT_26DF041,
290 .tested = TEST_UNTESTED,
291 .probe = probe_spi_rdid,
293 .write = NULL /* Incompatible Page write */,
294 .read = spi_chip_read,
299 .name = "AT26DF081A",
300 .manufacture_id = ATMEL_ID,
301 .model_id = AT_26DF081A,
304 .tested = TEST_UNTESTED,
305 .probe = probe_spi_rdid,
306 .erase = spi_chip_erase_60_c7,
307 .write = spi_chip_write,
308 .read = spi_chip_read,
314 .manufacture_id = ATMEL_ID,
315 .model_id = AT_26DF161,
318 .tested = TEST_UNTESTED,
319 .probe = probe_spi_rdid,
320 .erase = spi_chip_erase_60_c7,
321 .write = spi_chip_write,
322 .read = spi_chip_read,
327 .name = "AT26DF161A",
328 .manufacture_id = ATMEL_ID,
329 .model_id = AT_26DF161A,
332 .tested = TEST_UNTESTED,
333 .probe = probe_spi_rdid,
334 .erase = spi_chip_erase_60_c7,
335 .write = spi_chip_write,
336 .read = spi_chip_read,
339 /*The AT26DF321 has the same ID as the AT25DF321. */
343 .manufacture_id = ATMEL_ID,
344 .model_id = AT_26DF321,
347 .tested = TEST_UNTESTED,
348 .probe = probe_spi_rdid,
349 .erase = spi_chip_erase_60_c7,
350 .write = spi_chip_write,
351 .read = spi_chip_read,
357 .manufacture_id = ATMEL_ID,
358 .model_id = AT_26F004,
361 .tested = TEST_UNTESTED,
362 .probe = probe_spi_rdid,
363 .erase = spi_chip_erase_60_c7,
364 .write = NULL /* Incompatible Page write */,
365 .read = spi_chip_read,
371 .manufacture_id = ATMEL_ID,
372 .model_id = AT_29C020,
375 .tested = TEST_OK_PREW,
376 .probe = probe_jedec,
377 .erase = erase_chip_jedec,
378 .write = write_jedec,
384 .manufacture_id = ATMEL_ID,
385 .model_id = AT_29C040A,
388 .tested = TEST_UNTESTED,
389 .probe = probe_jedec,
390 .erase = erase_chip_jedec,
391 .write = write_jedec,
396 .name = "AT45CS1282",
397 .manufacture_id = ATMEL_ID,
398 .model_id = AT_45CS1282,
399 .total_size = 16896/*!*/,
400 .page_size = 1056/*!*/,
401 .tested = TEST_BAD_READ,
402 .probe = probe_spi_rdid,
404 .write = NULL /* Incompatible Page write */,
405 .read = NULL /* Incompatible read */,
406 }, /* No power of two sizes */
410 .name = "AT45DB011D",
411 .manufacture_id = ATMEL_ID,
412 .model_id = AT_45DB011D,
413 .total_size = 128/*!*/,
414 .page_size = 256/*!*/,
415 .tested = TEST_BAD_READ,
416 .probe = probe_spi_rdid,
420 }, /* Size can only be determined from status register */
424 .name = "AT45DB021D",
425 .manufacture_id = ATMEL_ID,
426 .model_id = AT_45DB021D,
427 .total_size = 256/*!*/,
428 .page_size = 256/*!*/,
429 .tested = TEST_BAD_READ,
430 .probe = probe_spi_rdid,
434 }, /* Size can only be determined from status register */
438 .name = "AT45DB041D",
439 .manufacture_id = ATMEL_ID,
440 .model_id = AT_45DB041D,
441 .total_size = 512/*!*/,
442 .page_size = 256/*!*/,
443 .tested = TEST_BAD_READ,
444 .probe = probe_spi_rdid,
448 }, /* Size can only be determined from status register */
452 .name = "AT45DB081D",
453 .manufacture_id = ATMEL_ID,
454 .model_id = AT_45DB081D,
455 .total_size = 1024/*!*/,
456 .page_size = 256/*!*/,
457 .tested = TEST_BAD_READ,
458 .probe = probe_spi_rdid,
462 }, /* Size can only be determined from status register */
466 .name = "AT45DB161D",
467 .manufacture_id = ATMEL_ID,
468 .model_id = AT_45DB161D,
469 .total_size = 2048/*!*/,
470 .page_size = 512/*!*/,
471 .tested = TEST_BAD_READ,
472 .probe = probe_spi_rdid,
476 }, /* Size can only be determined from status register */
480 .name = "AT45DB321C",
481 .manufacture_id = ATMEL_ID,
482 .model_id = AT_45DB321C,
483 .total_size = 4224/*!*/,
484 .page_size = 528/*!*/,
485 .tested = TEST_BAD_READ,
486 .probe = probe_spi_rdid,
489 .read = NULL /* Incompatible read */,
490 }, /* No power of two sizes */
494 .name = "AT45DB321D",
495 .manufacture_id = ATMEL_ID,
496 .model_id = AT_45DB321D,
497 .total_size = 4096/*!*/,
498 .page_size = 512/*!*/,
499 .tested = TEST_BAD_READ,
500 .probe = probe_spi_rdid,
504 }, /* Size can only be determined from status register */
508 .name = "AT45DB642D",
509 .manufacture_id = ATMEL_ID,
510 .model_id = AT_45DB642D,
511 .total_size = 8192/*!*/,
512 .page_size = 1024/*!*/,
513 .tested = TEST_BAD_READ,
514 .probe = probe_spi_rdid,
518 }, /* Size can only be determined from status register */
522 .name = "AT49F002(N)",
523 .manufacture_id = ATMEL_ID,
524 .model_id = AT_49F002N,
527 .tested = TEST_UNTESTED,
528 .probe = probe_jedec,
529 .erase = erase_chip_jedec,
530 .write = write_49f002,
535 .name = "AT49F002(N)T",
536 .manufacture_id = ATMEL_ID,
537 .model_id = AT_49F002NT,
540 .tested = TEST_OK_PREW,
541 .probe = probe_jedec,
542 .erase = erase_chip_jedec,
543 .write = write_49f002,
549 .manufacture_id = AMIC_ID,
550 .model_id = AMIC_A25L40P,
553 .tested = TEST_OK_PREW,
554 .probe = probe_spi_rdid4,
555 .erase = spi_chip_erase_c7,
556 .write = spi_chip_write,
557 .read = spi_chip_read,
563 .manufacture_id = AMIC_ID_NOPREFIX,
564 .model_id = AMIC_A29002B,
566 .page_size = 64 * 1024,
567 .tested = TEST_UNTESTED,
568 .probe = probe_29f002,
569 .erase = erase_29f002,
570 .write = write_29f002,
576 .manufacture_id = AMIC_ID_NOPREFIX,
577 .model_id = AMIC_A29002T,
579 .page_size = 64 * 1024,
580 .tested = TEST_OK_PREW,
581 .probe = probe_29f002,
582 .erase = erase_29f002,
583 .write = write_29f002,
589 .manufacture_id = AMIC_ID_NOPREFIX,
590 .model_id = AMIC_A29040B,
592 .page_size = 64 * 1024,
593 .tested = TEST_OK_PR,
594 .probe = probe_29f040b,
595 .erase = erase_29f040b,
596 .write = write_29f040b,
602 .manufacture_id = AMIC_ID_NOPREFIX,
603 .model_id = AMIC_A49LF040A,
605 .page_size = 64 * 1024,
606 .tested = TEST_OK_PREW,
607 .probe = probe_49fl00x,
608 .erase = erase_49fl00x,
609 .write = write_49fl00x,
615 .manufacture_id = EMST_ID,
616 .model_id = EMST_F49B002UA,
619 .tested = TEST_UNTESTED,
620 .probe = probe_jedec,
621 .erase = erase_chip_jedec,
622 .write = write_49f002,
627 .name = "EN29F002(A)(N)B",
628 .manufacture_id = EON_ID,
629 .model_id = EN_29F002B,
632 .tested = TEST_UNTESTED,
633 .probe = probe_jedec,
634 .erase = erase_chip_jedec,
635 .write = write_en29f002a,
640 .name = "EN29F002(A)(N)T",
641 .manufacture_id = EON_ID,
642 .model_id = EN_29F002T,
645 .tested = TEST_OK_PREW,
646 .probe = probe_jedec,
647 .erase = erase_chip_jedec,
648 .write = write_en29f002a,
653 .name = "MBM29F004BC",
654 .manufacture_id = FUJITSU_ID,
655 .model_id = MBM29F004BC,
657 .page_size = 64 * 1024,
658 .tested = TEST_UNTESTED,
659 .probe = probe_jedec,
666 .name = "MBM29F004TC",
667 .manufacture_id = FUJITSU_ID,
668 .model_id = MBM29F004TC,
670 .page_size = 64 * 1024,
671 .tested = TEST_UNTESTED,
672 .probe = probe_jedec,
679 .name = "MBM29F400BC",
680 .manufacture_id = FUJITSU_ID,
681 .model_id = MBM29F400BC,
683 .page_size = 64 * 1024,
684 .tested = TEST_UNTESTED,
685 .probe = probe_m29f400bt,
686 .erase = erase_m29f400bt,
687 .write = write_coreboot_m29f400bt,
692 .name = "MBM29F400TC",
693 .manufacture_id = FUJITSU_ID,
694 .model_id = MBM29F400TC,
696 .page_size = 64 * 1024,
697 .tested = TEST_UNTESTED,
698 .probe = probe_m29f400bt,
699 .erase = erase_m29f400bt,
700 .write = write_coreboot_m29f400bt,
706 .manufacture_id = INTEL_ID,
709 .page_size = 64 * 1024,
710 .tested = TEST_OK_PREW,
711 .probe = probe_82802ab,
712 .erase = erase_82802ab,
713 .write = write_82802ab,
719 .manufacture_id = INTEL_ID,
722 .page_size = 64 * 1024,
723 .tested = TEST_OK_PREW,
724 .probe = probe_82802ab,
725 .erase = erase_82802ab,
726 .write = write_82802ab,
730 .vendor = "Macronix",
732 .manufacture_id = MX_ID,
733 .model_id = MX_25L512,
736 .tested = TEST_UNTESTED,
737 .probe = probe_spi_rdid,
738 .erase = spi_chip_erase_c7,
739 .write = spi_chip_write,
740 .read = spi_chip_read,
744 .vendor = "Macronix",
746 .manufacture_id = MX_ID,
747 .model_id = MX_25L1005,
750 .tested = TEST_UNTESTED,
751 .probe = probe_spi_rdid,
752 .erase = spi_chip_erase_c7,
753 .write = spi_chip_write,
754 .read = spi_chip_read,
758 .vendor = "Macronix",
760 .manufacture_id = MX_ID,
761 .model_id = MX_25L2005,
764 .tested = TEST_UNTESTED,
765 .probe = probe_spi_rdid,
766 .erase = spi_chip_erase_c7,
767 .write = spi_chip_write,
768 .read = spi_chip_read,
772 .vendor = "Macronix",
774 .manufacture_id = MX_ID,
775 .model_id = MX_25L4005,
778 .tested = TEST_OK_PREW,
779 .probe = probe_spi_rdid,
780 .erase = spi_chip_erase_c7,
781 .write = spi_chip_write,
782 .read = spi_chip_read,
786 .vendor = "Macronix",
788 .manufacture_id = MX_ID,
789 .model_id = MX_25L8005,
792 .tested = TEST_OK_PREW,
793 .probe = probe_spi_rdid,
794 .erase = spi_chip_erase_c7,
795 .write = spi_chip_write,
796 .read = spi_chip_read,
800 .vendor = "Macronix",
802 .manufacture_id = MX_ID,
803 .model_id = MX_25L1605,
806 .tested = TEST_UNTESTED,
807 .probe = probe_spi_rdid,
808 .erase = spi_chip_erase_c7,
809 .write = spi_chip_write,
810 .read = spi_chip_read,
814 .vendor = "Macronix",
816 .manufacture_id = MX_ID,
817 .model_id = MX_25L3205,
820 .tested = TEST_OK_PREW,
821 .probe = probe_spi_rdid,
822 .erase = spi_chip_erase_c7,
823 .write = spi_chip_write,
824 .read = spi_chip_read,
828 .vendor = "Macronix",
830 .manufacture_id = MX_ID,
831 .model_id = MX_25L6405,
834 .tested = TEST_UNTESTED,
835 .probe = probe_spi_rdid,
836 .erase = spi_chip_erase_c7,
837 .write = spi_chip_write,
838 .read = spi_chip_read,
842 .vendor = "Macronix",
844 .manufacture_id = MX_ID,
845 .model_id = MX_29F002B,
847 .page_size = 64 * 1024,
848 .tested = TEST_UNTESTED,
849 .probe = probe_29f002,
850 .erase = erase_29f002,
851 .write = write_29f002,
855 .vendor = "Macronix",
857 .manufacture_id = MX_ID,
858 .model_id = MX_29F002T,
860 .page_size = 64 * 1024,
861 .tested = TEST_UNTESTED,
862 .probe = probe_29f002,
863 .erase = erase_29f002,
864 .write = write_29f002,
868 .vendor = "Macronix",
869 .name = "MX29LV040C",
870 .manufacture_id = MX_ID,
871 .model_id = MX_29LV040C,
873 .page_size = 64 * 1024,
874 .tested = TEST_OK_PR,
875 .probe = probe_29f002,
876 .erase = erase_29f002,
877 .write = write_29f002,
883 .manufacture_id = ST_ID,
887 .tested = TEST_UNTESTED,
888 .probe = probe_spi_rdid,
889 .erase = spi_chip_erase_d8,
890 .write = spi_chip_write,
891 .read = spi_chip_read,
897 .manufacture_id = ST_ID,
901 .tested = TEST_UNTESTED,
902 .probe = probe_spi_rdid,
903 .erase = spi_chip_erase_d8,
904 .write = spi_chip_write,
905 .read = spi_chip_read,
911 .manufacture_id = ST_ID,
915 .tested = TEST_UNTESTED,
916 .probe = probe_spi_rdid,
917 .erase = spi_chip_erase_d8,
918 .write = spi_chip_write,
919 .read = spi_chip_read,
925 .manufacture_id = ST_ID,
929 .tested = TEST_OK_PREW,
930 .probe = probe_spi_rdid,
931 .erase = spi_chip_erase_d8,
932 .write = spi_chip_write,
933 .read = spi_chip_read,
939 .manufacture_id = ST_ID,
943 .tested = TEST_UNTESTED,
944 .probe = probe_spi_rdid,
945 .erase = spi_chip_erase_d8,
946 .write = spi_chip_write,
947 .read = spi_chip_read,
953 .manufacture_id = PMC_ID,
954 .model_id = PMC_25LV010,
957 .tested = TEST_UNTESTED,
958 .probe = probe_spi_rdid,
959 .erase = spi_chip_erase_c7,
960 .write = spi_chip_write,
961 .read = spi_chip_read,
966 .name = "Pm25LV016B",
967 .manufacture_id = PMC_ID,
968 .model_id = PMC_25LV016B,
971 .tested = TEST_UNTESTED,
972 .probe = probe_spi_rdid,
973 .erase = spi_chip_erase_c7,
974 .write = spi_chip_write,
975 .read = spi_chip_read,
981 .manufacture_id = PMC_ID,
982 .model_id = PMC_25LV020,
985 .tested = TEST_UNTESTED,
986 .probe = probe_spi_rdid,
987 .erase = spi_chip_erase_c7,
988 .write = spi_chip_write,
989 .read = spi_chip_read,
995 .manufacture_id = PMC_ID,
996 .model_id = PMC_25LV040,
999 .tested = TEST_UNTESTED,
1000 .probe = probe_spi_rdid,
1001 .erase = spi_chip_erase_c7,
1002 .write = spi_chip_write,
1003 .read = spi_chip_read,
1008 .name = "Pm25LV080B",
1009 .manufacture_id = PMC_ID,
1010 .model_id = PMC_25LV080B,
1013 .tested = TEST_UNTESTED,
1014 .probe = probe_spi_rdid,
1015 .erase = spi_chip_erase_c7,
1016 .write = spi_chip_write,
1017 .read = spi_chip_read,
1022 .name = "Pm25LV512",
1023 .manufacture_id = PMC_ID,
1024 .model_id = PMC_25LV512,
1027 .tested = TEST_UNTESTED,
1028 .probe = probe_spi_rdid,
1029 .erase = spi_chip_erase_c7,
1030 .write = spi_chip_write,
1031 .read = spi_chip_read,
1036 .name = "Pm49FL002",
1037 .manufacture_id = PMC_ID_NOPREFIX,
1038 .model_id = PMC_49FL002,
1040 .page_size = 16 * 1024,
1041 .tested = TEST_OK_PREW,
1042 .probe = probe_49fl00x,
1043 .erase = erase_49fl00x,
1044 .write = write_49fl00x,
1049 .name = "Pm49FL004",
1050 .manufacture_id = PMC_ID_NOPREFIX,
1051 .model_id = PMC_49FL004,
1053 .page_size = 64 * 1024,
1054 .tested = TEST_OK_PREW,
1055 .probe = probe_49fl00x,
1056 .erase = erase_49fl00x,
1057 .write = write_49fl00x,
1063 .manufacture_id = SHARP_ID,
1064 .model_id = SHARP_LHF00L04,
1066 .page_size = 64 * 1024,
1067 .tested = TEST_UNTESTED,
1068 .probe = probe_lhf00l04,
1069 .erase = erase_lhf00l04,
1070 .write = write_lhf00l04,
1074 .vendor = "Spansion",
1075 .name = "S25FL016A",
1076 .manufacture_id = SPANSION_ID,
1077 .model_id = SPANSION_S25FL016A,
1080 .tested = TEST_OK_PREW,
1081 .probe = probe_spi_rdid,
1082 .erase = spi_chip_erase_c7,
1083 .write = spi_chip_write,
1084 .read = spi_chip_read,
1089 .name = "SST25VF016B",
1090 .manufacture_id = SST_ID,
1091 .model_id = SST_25VF016B,
1094 .tested = TEST_OK_PREW,
1095 .probe = probe_spi_rdid,
1096 .erase = spi_chip_erase_c7,
1097 .write = spi_chip_write,
1098 .read = spi_chip_read,
1103 .name = "SST25VF032B",
1104 .manufacture_id = SST_ID,
1105 .model_id = SST_25VF032B,
1108 .tested = TEST_OK_PREW,
1109 .probe = probe_spi_rdid,
1110 .erase = spi_chip_erase_c7,
1111 .write = spi_chip_write,
1112 .read = spi_chip_read,
1117 .name = "SST25VF040B",
1118 .manufacture_id = SST_ID,
1119 .model_id = SST_25VF040B,
1122 .tested = TEST_UNTESTED,
1123 .probe = probe_spi_rdid,
1124 .erase = spi_chip_erase_c7,
1125 .write = spi_chip_write,
1126 .read = spi_chip_read,
1131 .name = "SST25VF040B.REMS",
1132 .manufacture_id = 0xbf,
1135 .page_size = 64*1024,
1136 .tested = TEST_OK_PR,
1137 .probe = probe_spi_rems,
1138 .erase = spi_chip_erase_c7,
1139 .write = spi_aai_write,
1140 .read = spi_chip_read,
1145 .name = "SST25VF080B",
1146 .manufacture_id = SST_ID,
1147 .model_id = SST_25VF080B,
1150 .tested = TEST_OK_PROBE,
1151 .probe = probe_spi_rdid,
1152 .erase = spi_chip_erase_60_c7,
1153 .write = spi_chip_write,
1154 .read = spi_chip_read,
1159 .name = "SST28SF040A",
1160 .manufacture_id = SST_ID,
1161 .model_id = SST_28SF040,
1164 .tested = TEST_UNTESTED,
1165 .probe = probe_28sf040,
1166 .erase = erase_28sf040,
1167 .write = write_28sf040,
1172 .name = "SST29EE010",
1173 .manufacture_id = SST_ID,
1174 .model_id = SST_29EE010,
1177 .tested = TEST_OK_PREW,
1178 .probe = probe_jedec,
1179 .erase = erase_chip_jedec,
1180 .write = write_jedec,
1185 .name = "SST29LE010",
1186 .manufacture_id = SST_ID,
1187 .model_id = SST_29LE010,
1190 .tested = TEST_UNTESTED,
1191 .probe = probe_jedec,
1192 .erase = erase_chip_jedec,
1193 .write = write_jedec,
1198 .name = "SST29EE020A",
1199 .manufacture_id = SST_ID,
1200 .model_id = SST_29EE020A,
1203 .tested = TEST_UNTESTED,
1204 .probe = probe_jedec,
1205 .erase = erase_chip_jedec,
1206 .write = write_jedec,
1211 .name = "SST29LE020",
1212 .manufacture_id = SST_ID,
1213 .model_id = SST_29LE020,
1216 .tested = TEST_UNTESTED,
1217 .probe = probe_jedec,
1218 .erase = erase_chip_jedec,
1219 .write = write_jedec,
1224 .name = "SST39SF010A",
1225 .manufacture_id = SST_ID,
1226 .model_id = SST_39SF010,
1229 .tested = TEST_OK_PREW,
1230 .probe = probe_jedec,
1231 .erase = erase_chip_jedec,
1232 .write = write_39sf020,
1237 .name = "SST39SF020A",
1238 .manufacture_id = SST_ID,
1239 .model_id = SST_39SF020,
1242 .tested = TEST_OK_PREW,
1243 .probe = probe_jedec,
1244 .erase = erase_chip_jedec,
1245 .write = write_39sf020,
1250 .name = "SST39SF040",
1251 .manufacture_id = SST_ID,
1252 .model_id = SST_39SF040,
1255 .tested = TEST_OK_PREW,
1256 .probe = probe_jedec,
1257 .erase = erase_chip_jedec,
1258 .write = write_39sf020,
1263 .name = "SST39VF512",
1264 .manufacture_id = SST_ID,
1265 .model_id = SST_39VF512,
1268 .tested = TEST_UNTESTED,
1269 .probe = probe_jedec,
1270 .erase = erase_chip_jedec,
1271 .write = write_39sf020,
1276 .name = "SST39VF010",
1277 .manufacture_id = SST_ID,
1278 .model_id = SST_39VF010,
1281 .tested = TEST_UNTESTED,
1282 .probe = probe_jedec,
1283 .erase = erase_chip_jedec,
1284 .write = write_39sf020,
1289 .name = "SST39VF020",
1290 .manufacture_id = SST_ID,
1291 .model_id = SST_39VF020,
1294 .tested = TEST_OK_PREW,
1295 .probe = probe_jedec,
1296 .erase = erase_chip_jedec,
1297 .write = write_39sf020,
1302 .name = "SST39VF040",
1303 .manufacture_id = SST_ID,
1304 .model_id = SST_39VF040,
1307 .tested = TEST_OK_PROBE,
1308 .probe = probe_jedec,
1309 .erase = erase_chip_jedec,
1310 .write = write_39sf020,
1315 .name = "SST39VF080",
1316 .manufacture_id = 0xbf,
1320 .tested = TEST_UNTESTED,
1321 .probe = probe_jedec,
1322 .erase = erase_chip_jedec,
1323 .write = write_39sf020,
1328 .name = "SST49LF002A/B",
1329 .manufacture_id = SST_ID,
1330 .model_id = SST_49LF002A,
1332 .page_size = 16 * 1024,
1333 .tested = TEST_OK_PREW,
1334 .probe = probe_sst_fwhub,
1335 .erase = erase_sst_fwhub,
1336 .write = write_sst_fwhub,
1341 .name = "SST49LF003A/B",
1342 .manufacture_id = SST_ID,
1343 .model_id = SST_49LF003A,
1345 .page_size = 64 * 1024,
1346 .tested = TEST_UNTESTED,
1347 .probe = probe_sst_fwhub,
1348 .erase = erase_sst_fwhub,
1349 .write = write_sst_fwhub,
1354 .name = "SST49LF004A/B",
1355 .manufacture_id = SST_ID,
1356 .model_id = SST_49LF004A,
1358 .page_size = 64 * 1024,
1359 .tested = TEST_OK_PREW,
1360 .probe = probe_sst_fwhub,
1361 .erase = erase_sst_fwhub,
1362 .write = write_sst_fwhub,
1367 .name = "SST49LF004C",
1368 .manufacture_id = SST_ID,
1369 .model_id = SST_49LF004C,
1371 .page_size = 4 * 1024,
1372 .tested = TEST_UNTESTED,
1373 .probe = probe_49lfxxxc,
1374 .erase = erase_49lfxxxc,
1375 .write = write_49lfxxxc,
1380 .name = "SST49LF008A",
1381 .manufacture_id = SST_ID,
1382 .model_id = SST_49LF008A,
1384 .page_size = 64 * 1024,
1385 .tested = TEST_OK_PREW,
1386 .probe = probe_sst_fwhub,
1387 .erase = erase_sst_fwhub,
1388 .write = write_sst_fwhub,
1393 .name = "SST49LF008C",
1394 .manufacture_id = SST_ID,
1395 .model_id = SST_49LF008C,
1397 .page_size = 4 * 1024,
1398 .tested = TEST_UNTESTED,
1399 .probe = probe_49lfxxxc,
1400 .erase = erase_49lfxxxc,
1401 .write = write_49lfxxxc,
1406 .name = "SST49LF016C",
1407 .manufacture_id = SST_ID,
1408 .model_id = SST_49LF016C,
1410 .page_size = 4 * 1024,
1411 .tested = TEST_OK_PREW,
1412 .probe = probe_49lfxxxc,
1413 .erase = erase_49lfxxxc,
1414 .write = write_49lfxxxc,
1419 .name = "SST49LF020",
1420 .manufacture_id = SST_ID,
1421 .model_id = SST_49LF020,
1423 .page_size = 16 * 1024,
1424 .tested = TEST_OK_PR,
1425 .probe = probe_jedec,
1426 .erase = erase_49lf040,
1427 .write = write_49lf040,
1432 .name = "SST49LF020A",
1433 .manufacture_id = SST_ID,
1434 .model_id = SST_49LF020A,
1436 .page_size = 16 * 1024,
1437 .tested = TEST_UNTESTED,
1438 .probe = probe_jedec,
1439 .erase = erase_49lf040,
1440 .write = write_49lf040,
1445 .name = "SST49LF040",
1446 .manufacture_id = SST_ID,
1447 .model_id = SST_49LF040,
1450 .tested = TEST_OK_PREW,
1451 .probe = probe_jedec,
1452 .erase = erase_49lf040,
1453 .write = write_49lf040,
1458 .name = "SST49LF040B",
1459 .manufacture_id = SST_ID,
1460 .model_id = SST_49LF040B,
1462 .page_size = 64 * 1024,
1463 .tested = TEST_OK_PREW,
1464 .probe = probe_sst_fwhub,
1465 .erase = erase_sst_fwhub,
1466 .write = write_sst_fwhub,
1471 .name = "SST49LF080A",
1472 .manufacture_id = SST_ID,
1473 .model_id = SST_49LF080A,
1476 .tested = TEST_OK_PREW,
1477 .probe = probe_jedec,
1478 .erase = erase_49lf040,
1479 .write = write_49lf040,
1484 .name = "SST49LF160C",
1485 .manufacture_id = SST_ID,
1486 .model_id = SST_49LF160C,
1488 .page_size = 4 * 1024,
1489 .tested = TEST_OK_PREW,
1490 .probe = probe_49lfxxxc,
1491 .erase = erase_49lfxxxc,
1492 .write = write_49lfxxxc,
1498 .manufacture_id = ST_ID,
1499 .model_id = ST_M25P05A,
1502 .tested = TEST_UNTESTED,
1503 .probe = probe_spi_rdid,
1504 .erase = spi_chip_erase_c7,
1505 .write = spi_chip_write,
1506 .read = spi_chip_read,
1512 .manufacture_id = ST_ID,
1513 .model_id = ST_M25P10A,
1516 .tested = TEST_UNTESTED,
1517 .probe = probe_spi_rdid,
1518 .erase = spi_chip_erase_c7,
1519 .write = spi_chip_write,
1520 .read = spi_chip_read,
1526 .manufacture_id = ST_ID,
1527 .model_id = ST_M25P20,
1530 .tested = TEST_UNTESTED,
1531 .probe = probe_spi_rdid,
1532 .erase = spi_chip_erase_c7,
1533 .write = spi_chip_write,
1534 .read = spi_chip_read,
1540 .manufacture_id = ST_ID,
1541 .model_id = ST_M25P40,
1544 .tested = TEST_UNTESTED,
1545 .probe = probe_spi_rdid,
1546 .erase = spi_chip_erase_c7,
1547 .write = spi_chip_write,
1548 .read = spi_chip_read,
1553 .name = "M25P40-old",
1554 .manufacture_id = ST_ID,
1555 .model_id = ST_M25P40_RES,
1558 .tested = TEST_UNTESTED,
1559 .probe = probe_spi_res,
1560 .erase = spi_chip_erase_c7,
1561 .write = spi_chip_write,
1562 .read = spi_chip_read,
1568 .manufacture_id = ST_ID,
1569 .model_id = ST_M25P80,
1572 .tested = TEST_UNTESTED,
1573 .probe = probe_spi_rdid,
1574 .erase = spi_chip_erase_c7,
1575 .write = spi_chip_write,
1576 .read = spi_chip_read,
1582 .manufacture_id = ST_ID,
1583 .model_id = ST_M25P16,
1586 .tested = TEST_OK_PREW,
1587 .probe = probe_spi_rdid,
1588 .erase = spi_chip_erase_c7,
1589 .write = spi_chip_write,
1590 .read = spi_chip_read,
1596 .manufacture_id = ST_ID,
1597 .model_id = ST_M25P32,
1600 .tested = TEST_OK_PREW,
1601 .probe = probe_spi_rdid,
1602 .erase = spi_chip_erase_c7,
1603 .write = spi_chip_write,
1604 .read = spi_chip_read,
1610 .manufacture_id = ST_ID,
1611 .model_id = ST_M25P64,
1614 .tested = TEST_UNTESTED,
1615 .probe = probe_spi_rdid,
1616 .erase = spi_chip_erase_c7,
1617 .write = spi_chip_write,
1618 .read = spi_chip_read,
1624 .manufacture_id = ST_ID,
1625 .model_id = ST_M25P128,
1626 .total_size = 16384,
1628 .tested = TEST_UNTESTED,
1629 .probe = probe_spi_rdid,
1630 .erase = spi_chip_erase_c7,
1631 .write = spi_chip_write,
1632 .read = spi_chip_read,
1638 .manufacture_id = ST_ID,
1639 .model_id = ST_M29F002B,
1641 .page_size = 64 * 1024,
1642 .tested = TEST_UNTESTED,
1643 .probe = probe_jedec,
1644 .erase = erase_m29f002,
1645 .write = write_m29f002b,
1650 .name = "M29F002T/NT",
1651 .manufacture_id = ST_ID,
1652 .model_id = ST_M29F002T,
1654 .page_size = 64 * 1024,
1655 .tested = TEST_OK_PREW,
1656 .probe = probe_jedec,
1657 .erase = erase_m29f002,
1658 .write = write_m29f002t,
1664 .manufacture_id = ST_ID,
1665 .model_id = ST_M29F040B,
1667 .page_size = 64 * 1024,
1668 .tested = TEST_OK_PREW,
1669 .probe = probe_29f040b,
1670 .erase = erase_29f040b,
1671 .write = write_29f040b,
1676 .name = "M29F400BT",
1677 .manufacture_id = ST_ID,
1678 .model_id = ST_M29F400BT,
1680 .page_size = 64 * 1024,
1681 .tested = TEST_UNTESTED,
1682 .probe = probe_m29f400bt,
1683 .erase = erase_m29f400bt,
1684 .write = write_coreboot_m29f400bt,
1690 .manufacture_id = ST_ID,
1691 .model_id = ST_M29W010B,
1693 .page_size = 16 * 1024,
1694 .tested = TEST_UNTESTED,
1695 .probe = probe_jedec,
1696 .erase = erase_chip_jedec,
1697 .write = write_jedec,
1703 .manufacture_id = ST_ID,
1704 .model_id = ST_M29W040B,
1706 .page_size = 64 * 1024,
1707 .tested = TEST_UNTESTED,
1708 .probe = probe_jedec,
1709 .erase = erase_chip_jedec,
1710 .write = write_jedec,
1715 .name = "M50FLW040A",
1716 .manufacture_id = ST_ID,
1717 .model_id = ST_M50FLW040A,
1719 .page_size = 64 * 1024,
1720 .tested = TEST_UNTESTED,
1721 .probe = probe_stm50flw0x0x,
1722 .erase = erase_stm50flw0x0x,
1723 .write = write_stm50flw0x0x,
1728 .name = "M50FLW040B",
1729 .manufacture_id = ST_ID,
1730 .model_id = ST_M50FLW040B,
1732 .page_size = 64 * 1024,
1733 .tested = TEST_UNTESTED,
1734 .probe = probe_stm50flw0x0x,
1735 .erase = erase_stm50flw0x0x,
1736 .write = write_stm50flw0x0x,
1741 .name = "M50FLW080A",
1742 .manufacture_id = ST_ID,
1743 .model_id = ST_M50FLW080A,
1745 .page_size = 64 * 1024,
1746 .tested = TEST_OK_PREW,
1747 .probe = probe_stm50flw0x0x,
1748 .erase = erase_stm50flw0x0x,
1749 .write = write_stm50flw0x0x,
1754 .name = "M50FLW080B",
1755 .manufacture_id = ST_ID,
1756 .model_id = ST_M50FLW080B,
1758 .page_size = 64 * 1024,
1759 .tested = TEST_UNTESTED,
1760 .probe = probe_stm50flw0x0x,
1761 .erase = erase_stm50flw0x0x,
1762 .write = write_stm50flw0x0x,
1768 .manufacture_id = ST_ID,
1769 .model_id = ST_M50FW002,
1771 .page_size = 64 * 1024,
1772 .tested = TEST_UNTESTED,
1773 .probe = probe_49lfxxxc,
1781 .manufacture_id = ST_ID,
1782 .model_id = ST_M50FW016,
1784 .page_size = 64 * 1024,
1785 .tested = TEST_UNTESTED,
1786 .probe = probe_82802ab,
1787 .erase = erase_82802ab,
1788 .write = write_82802ab,
1794 .manufacture_id = ST_ID,
1795 .model_id = ST_M50FW040,
1797 .page_size = 64 * 1024,
1798 .tested = TEST_OK_PREW,
1799 .probe = probe_82802ab,
1800 .erase = erase_82802ab,
1801 .write = write_82802ab,
1807 .manufacture_id = ST_ID,
1808 .model_id = ST_M50FW080,
1810 .page_size = 64 * 1024,
1811 .tested = TEST_OK_PREW,
1812 .probe = probe_82802ab,
1813 .erase = erase_82802ab,
1814 .write = write_82802ab,
1819 .name = "M50LPW116",
1820 .manufacture_id = ST_ID,
1821 .model_id = ST_M50LPW116,
1823 .page_size = 64 * 1024,
1824 .tested = TEST_UNTESTED,
1825 .probe = probe_jedec,
1826 .erase = erase_chip_jedec,
1827 .write = write_jedec,
1831 .vendor = "SyncMOS",
1832 .name = "S29C31004T",
1833 .manufacture_id = SYNCMOS_ID,
1834 .model_id = S29C31004T,
1837 .tested = TEST_UNTESTED,
1838 .probe = probe_jedec,
1839 .erase = erase_chip_jedec,
1840 .write = write_49f002,
1844 .vendor = "SyncMOS",
1845 .name = "S29C51001T",
1846 .manufacture_id = SYNCMOS_ID,
1847 .model_id = S29C51001T,
1850 .tested = TEST_UNTESTED,
1851 .probe = probe_jedec,
1852 .erase = erase_chip_jedec,
1853 .write = write_49f002,
1857 .vendor = "SyncMOS",
1858 .name = "S29C51002T",
1859 .manufacture_id = SYNCMOS_ID,
1860 .model_id = S29C51002T,
1863 .tested = TEST_OK_PREW,
1864 .probe = probe_jedec,
1865 .erase = erase_chip_jedec,
1866 .write = write_49f002,
1870 .vendor = "SyncMOS",
1871 .name = "S29C51004T",
1872 .manufacture_id = SYNCMOS_ID,
1873 .model_id = S29C51004T,
1876 .tested = TEST_UNTESTED,
1877 .probe = probe_jedec,
1878 .erase = erase_chip_jedec,
1879 .write = write_49f002,
1883 .vendor = "Winbond",
1885 .manufacture_id = WINBOND_NEX_ID,
1886 .model_id = W_25X10,
1889 .tested = TEST_UNTESTED,
1890 .probe = probe_spi_rdid,
1891 .erase = spi_chip_erase_c7,
1892 .write = spi_chip_write,
1893 .read = spi_chip_read,
1897 .vendor = "Winbond",
1899 .manufacture_id = WINBOND_NEX_ID,
1900 .model_id = W_25X20,
1903 .tested = TEST_UNTESTED,
1904 .probe = probe_spi_rdid,
1905 .erase = spi_chip_erase_c7,
1906 .write = spi_chip_write,
1907 .read = spi_chip_read,
1911 .vendor = "Winbond",
1913 .manufacture_id = WINBOND_NEX_ID,
1914 .model_id = W_25X40,
1917 .tested = TEST_OK_PREW,
1918 .probe = probe_spi_rdid,
1919 .erase = spi_chip_erase_c7,
1920 .write = spi_chip_write,
1921 .read = spi_chip_read,
1925 .vendor = "Winbond",
1927 .manufacture_id = WINBOND_NEX_ID,
1928 .model_id = W_25X80,
1931 .tested = TEST_OK_PREW,
1932 .probe = probe_spi_rdid,
1933 .erase = spi_chip_erase_c7,
1934 .write = spi_chip_write,
1935 .read = spi_chip_read,
1939 .vendor = "Winbond",
1941 .manufacture_id = WINBOND_ID,
1942 .model_id = W_29C011,
1945 .tested = TEST_OK_PREW,
1946 .probe = probe_jedec,
1947 .erase = erase_chip_jedec,
1948 .write = write_jedec,
1952 .vendor = "Winbond",
1954 .manufacture_id = WINBOND_ID,
1955 .model_id = W_29C020C,
1958 .tested = TEST_OK_PREW,
1959 .probe = probe_jedec,
1960 .erase = erase_chip_jedec,
1961 .write = write_jedec,
1965 .vendor = "Winbond",
1967 .manufacture_id = WINBOND_ID,
1968 .model_id = W_29C040P,
1971 .tested = TEST_UNTESTED,
1972 .probe = probe_jedec,
1973 .erase = erase_chip_jedec,
1974 .write = write_jedec,
1978 .vendor = "Winbond",
1980 .manufacture_id = WINBOND_ID,
1981 .model_id = W_29C011,
1984 .tested = TEST_OK_PREW,
1985 .probe = probe_w29ee011,
1986 .erase = erase_chip_jedec,
1987 .write = write_jedec,
1991 .vendor = "Winbond",
1993 .manufacture_id = WINBOND_ID,
1994 .model_id = W_39V040A,
1996 .page_size = 64*1024,
1997 .tested = TEST_UNTESTED,
1998 .probe = probe_jedec,
1999 .erase = erase_chip_jedec,
2000 .write = write_39sf020,
2004 .vendor = "Winbond",
2006 .manufacture_id = WINBOND_ID,
2007 .model_id = W_39V040B,
2009 .page_size = 64*1024,
2010 .tested = TEST_OK_PREW,
2011 .probe = probe_jedec,
2012 .erase = erase_chip_jedec,
2013 .write = write_39sf020,
2017 .vendor = "Winbond",
2019 .manufacture_id = WINBOND_ID,
2022 .page_size = 64*1024,
2023 .tested = TEST_OK_PREW,
2024 .probe = probe_w39v040c,
2025 .erase = erase_w39v040c,
2026 .write = write_w39v040c,
2030 .vendor = "Winbond",
2031 .name = "W39V040FA",
2032 .manufacture_id = WINBOND_ID,
2033 .model_id = W_39V040FA,
2035 .page_size = 64*1024,
2036 .tested = TEST_OK_PREW,
2037 .probe = probe_jedec,
2038 .erase = erase_chip_jedec,
2039 .write = write_39sf020,
2043 .vendor = "Winbond",
2045 .manufacture_id = WINBOND_ID,
2046 .model_id = W_39V080A,
2048 .page_size = 64*1024,
2049 .tested = TEST_OK_PREW,
2050 .probe = probe_jedec,
2051 .erase = erase_chip_jedec,
2052 .write = write_39sf020,
2056 .vendor = "Winbond",
2058 .manufacture_id = WINBOND_ID,
2059 .model_id = W_49F002U,
2062 .tested = TEST_OK_PREW,
2063 .probe = probe_jedec,
2064 .erase = erase_chip_jedec,
2065 .write = write_49f002,
2069 .vendor = "Winbond",
2071 .manufacture_id = WINBOND_ID,
2072 .model_id = W_49V002A,
2075 .tested = TEST_OK_PREW,
2076 .probe = probe_jedec,
2077 .erase = erase_chip_jedec,
2078 .write = write_49f002,
2082 .vendor = "Winbond",
2083 .name = "W49V002FA",
2084 .manufacture_id = WINBOND_ID,
2085 .model_id = W_49V002FA,
2088 .tested = TEST_UNTESTED,
2089 .probe = probe_jedec,
2090 .erase = erase_chip_jedec,
2091 .write = write_49f002,
2095 .vendor = "Winbond",
2096 .name = "W39V080FA",
2097 .manufacture_id = WINBOND_ID,
2098 .model_id = W_39V080FA,
2100 .page_size = 64*1024,
2101 .tested = TEST_OK_PREW,
2102 .probe = probe_winbond_fwhub,
2103 .erase = erase_winbond_fwhub,
2104 .write = write_winbond_fwhub,
2108 .vendor = "Winbond",
2109 .name = "W39V080FA (dual mode)",
2110 .manufacture_id = WINBOND_ID,
2111 .model_id = W_39V080FA_DM,
2113 .page_size = 64*1024,
2114 .tested = TEST_UNTESTED,
2115 .probe = probe_winbond_fwhub,
2116 .erase = erase_winbond_fwhub,
2117 .write = write_winbond_fwhub,
2122 .name = "unknown Atmel SPI chip",
2123 .manufacture_id = ATMEL_ID,
2124 .model_id = GENERIC_DEVICE_ID,
2127 .tested = TEST_UNTESTED,
2128 .probe = probe_spi_rdid,
2135 .name = "unknown EON SPI chip",
2136 .manufacture_id = EON_ID_NOPREFIX,
2137 .model_id = GENERIC_DEVICE_ID,
2140 .tested = TEST_UNTESTED,
2141 .probe = probe_spi_rdid,
2147 .vendor = "Macronix",
2148 .name = "unknown Macronix SPI chip",
2149 .manufacture_id = MX_ID,
2150 .model_id = GENERIC_DEVICE_ID,
2153 .tested = TEST_UNTESTED,
2154 .probe = probe_spi_rdid,
2161 .name = "unknown PMC SPI chip",
2162 .manufacture_id = PMC_ID,
2163 .model_id = GENERIC_DEVICE_ID,
2166 .tested = TEST_UNTESTED,
2167 .probe = probe_spi_rdid,
2174 .name = "unknown SST SPI chip",
2175 .manufacture_id = SST_ID,
2176 .model_id = GENERIC_DEVICE_ID,
2179 .tested = TEST_UNTESTED,
2180 .probe = probe_spi_rdid,
2187 .name = "unknown ST SPI chip",
2188 .manufacture_id = ST_ID,
2189 .model_id = GENERIC_DEVICE_ID,
2192 .tested = TEST_UNTESTED,
2193 .probe = probe_spi_rdid,