[flashrom] [PATCH 4/4] Complete probing rewrite.
Carl-Daniel Hailfinger
c-d.hailfinger.devel.2006 at gmx.net
Fri Jun 20 03:31:26 CEST 2014
Am 16.06.2014 02:50 schrieb Stefan Tauner:
> Some important facts:
> - AT45 prober issues a 0xD7 opcode (without address) unconditionally.
> - No prober weights yet - any chip matched by a single prober is
> presented to the user.
>
> Signed-off-by: Stefan Tauner <stefan.tauner at alumni.tuwien.ac.at>
> ---
> 82802ab.c | 49 +-
> Makefile | 2 +-
> at45db.c | 48 +-
> chipdrivers.h | 36 +-
> cli_classic.c | 132 ++-
> en29lv640b.c | 27 +-
> flash.h | 54 +-
> flashchips.c | 3624 +++++++++++++++++++++++++++++++++------------------------
> flashchips.h | 888 +++++++-------
I tried to verify your conversion of flashchips.c by doing it myself.
Our results differ, though. The differences need to be verified against
the code and the datasheets. I do believe my versions are correct and I
checked most of them against the current code and/or a datasheet, but I
might have made some mistakes.
The differences between your flashchips.c conversion and my conversion are:
probe_spi_at25f is len=2 in my tree, len=3 in yours
probe_82802ab for ATMEL_AT49LH002 is len=2 in my tree, len=3 in yours
probe_jedec for EON_EN29F010 is len=3 in my tree, len=2 in yours
probe_jedec for EON_EN29F002T is len=4 in my tree, len=2 in yours
probe_m29f400bt for FUJITSU_MBM29F400BC is len=2 in my tree, len=3 in yours
probe_m29f400bt for FUJITSU_MBM29F400TC is len=2 in my tree, len=3 in yours
probe_m29f400bt for FUJITSU_MBM29LV160BE is len=2 in my tree, len=3 in yours
probe_m29f400bt for FUJITSU_MBM29LV160TE is len=2 in my tree, len=3 in yours
probe_82802ab for INTEL_28F002T has len=2 in my tree, len=3 in yours
probe_82802ab_* always has len=3 in your tree, and I believe this to be
a systematic error
probe_spi_rems for
SST_SST25VF512A_REMS/SST_SST25VF010_REMS/SST_SST25VF020_REMS/SST_SST25VF040_REMS/SST_SST25VF040B_REMS
is len=2 in my tree, len=3 in yours
probe_jedec for
SST_SST29EE010/SST_SST29LE010/SST_SST29EE020A/SST_SST29LE020 is len=2 in
my tree; len=3 in yours
probe_m29f400bt for ST_M29F400BB is len=2 in my tree, len=3 in yours
probe_jedec for WINBOND_W29C010 has len=2 in my tree, len=3 in yours
probe_jedec for WINBOND_W29C020/WINBOND_W29C040 has len=2 in my tree,
len=3 in yours
This patch has almost the same layout in flashchips.c as your end result
of the probe conversion, the only differences (besides the stuff
mentioned above) are:
Your patch has a struct field .probers, mine doesn't have it to make
sure only flash.h and flashchips.c have to change at the first step
while having virtually identical layout for the new flashchips.c contents.
Your patch has killed probe_timing, mine doesn't yet, that one needs to
die and/or be moved for chips where it is relevant.
Your patch removes all those generic chips, mine doesn't yet, those
things are abominations and need to die.
Your patch treats the at45 chips as two models per hardware to handle
the different sector/page sizes (good thing, I unfortunately didn't get
around to that yet).
I have left feature_bits untouched.
Whitespace has changed for ca. 5 lines as well.
This patch compiles, and although flashchips.c almost looks like your
variant, it needs no code changes outside flashchips.c and flash.h. The
idea behind such a conversion was to decouple layout changes from
semantic changes and do that with copious amounts of anonymous structs.
I did _not_ do this to discredit your work, I simply wanted an easy way
to almost recreate your flashchips.c for verification while not having
to touch any code outside it.
By the way, I'd like to propose a slight change to your struct prober:
Make the individual members of struct probe_res non-nested members of
struct prober, i.e. this
{probe_jedec, {2, {AMD_ID, AMD_AM29F002BB} } },
becomes this
{probe_jedec, 2, {AMD_ID, AMD_AM29F002BB} },
IMHO the second variant looks better.
Signed-off-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006 at gmx.net>
Index: flashrom-proberewrite/flash.h
===================================================================
--- flashrom-proberewrite/flash.h (Revision 1822)
+++ flashrom-proberewrite/flash.h (Arbeitskopie)
@@ -150,14 +150,6 @@
enum chipbustype bustype;
- /*
- * With 32bit manufacture_id and model_id we can cover IDs up to
- * (including) the 4th bank of JEDEC JEP106W Standard Manufacturer's
- * Identification code.
- */
- uint32_t manufacture_id;
- uint32_t model_id;
-
/* Total chip size in kilobytes */
unsigned int total_size;
/* Chip page size in bytes */
@@ -172,8 +164,23 @@
enum test_state write;
} tested;
- int (*probe) (struct flashctx *flash);
+ struct {
+ int (*probe) (struct flashctx *flash);
+ struct {
+ uint8_t probe_res_len;
+ struct {
+ /*
+ * With 32bit manufacture_id and model_id we can cover IDs up to
+ * (including) the 4th bank of JEDEC JEP106W Standard Manufacturer's
+ * Identification code.
+ */
+ uint32_t manufacture_id;
+ uint32_t model_id;
+ };
+ };
+ };
+
/* Delay after "enter/exit ID mode" commands in microseconds.
* NB: negative values have special meanings, see TIMING_* below.
*/
Index: flashrom-proberewrite/flashchips.c
===================================================================
--- flashrom-proberewrite/flashchips.c (Revision 1822)
+++ flashrom-proberewrite/flashchips.c (Arbeitskopie)
@@ -25,6 +25,7 @@
#include "flash.h"
#include "flashchips.h"
#include "chipdrivers.h"
+#define FIXME 0
/**
* List of supported flash chips.
@@ -61,13 +62,11 @@
.vendor = "AMD",
.name = "Am29F010A/B",
.bustype = BUS_PARALLEL,
- .manufacture_id = AMD_ID,
- .model_id = AMD_AM29F010B, /* Same as Am29F010A */
.total_size = 128,
.page_size = 16 * 1024,
.feature_bits = FEATURE_ADDR_2AA | FEATURE_EITHER_RESET,
.tested = TEST_OK_PRE,
- .probe = probe_jedec,
+ {probe_jedec, {2, {AMD_ID, AMD_AM29F010B /* Same as Am29F010A */} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -88,13 +87,11 @@
.vendor = "AMD",
.name = "Am29F002(N)BB",
.bustype = BUS_PARALLEL,
- .manufacture_id = AMD_ID,
- .model_id = AMD_AM29F002BB,
.total_size = 256,
.page_size = 256,
.feature_bits = FEATURE_SHORT_RESET | FEATURE_ADDR_2AA,
.tested = TEST_UNTESTED,
- .probe = probe_jedec,
+ {probe_jedec, {2, {AMD_ID, AMD_AM29F002BB} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -120,13 +117,11 @@
.vendor = "AMD",
.name = "Am29F002(N)BT",
.bustype = BUS_PARALLEL,
- .manufacture_id = AMD_ID,
- .model_id = AMD_AM29F002BT,
.total_size = 256,
.page_size = 256,
.feature_bits = FEATURE_EITHER_RESET | FEATURE_ADDR_2AA,
.tested = TEST_UNTESTED,
- .probe = probe_jedec,
+ {probe_jedec, {2, {AMD_ID, AMD_AM29F002BT} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -152,13 +147,11 @@
.vendor = "AMD",
.name = "Am29F016D",
.bustype = BUS_PARALLEL,
- .manufacture_id = AMD_ID,
- .model_id = AMD_AM29F016D,
.total_size = 2 * 1024,
.page_size = 64 * 1024,
.feature_bits = FEATURE_ADDR_2AA | FEATURE_SHORT_RESET,
.tested = TEST_UNTESTED,
- .probe = probe_jedec,
+ {probe_jedec, {2, {AMD_ID, AMD_AM29F016D} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -179,13 +172,11 @@
.vendor = "AMD",
.name = "Am29F040B",
.bustype = BUS_PARALLEL,
- .manufacture_id = AMD_ID,
- .model_id = AMD_AM29F040B,
.total_size = 512,
.page_size = 64 * 1024,
.feature_bits = FEATURE_ADDR_2AA | FEATURE_SHORT_RESET,
.tested = TEST_UNTESTED,
- .probe = probe_jedec,
+ {probe_jedec, {2, {AMD_ID, AMD_AM29F040B} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -206,13 +197,11 @@
.vendor = "AMD",
.name = "Am29F080B",
.bustype = BUS_PARALLEL,
- .manufacture_id = AMD_ID,
- .model_id = AMD_AM29F080B,
.total_size = 1024,
.page_size = 64 * 1024,
.feature_bits = FEATURE_ADDR_2AA | FEATURE_SHORT_RESET,
.tested = TEST_UNTESTED,
- .probe = probe_jedec,
+ {probe_jedec, {2, {AMD_ID, AMD_AM29F080B} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -233,13 +222,11 @@
.vendor = "AMD",
.name = "Am29LV001BB",
.bustype = BUS_PARALLEL,
- .manufacture_id = AMD_ID,
- .model_id = AMD_AM29LV001BB,
.total_size = 128,
.page_size = 64 * 1024, /* unused */
.feature_bits = FEATURE_ADDR_2AA | FEATURE_SHORT_RESET,
.tested = TEST_OK_PREW,
- .probe = probe_jedec,
+ {probe_jedec, {2, {AMD_ID, AMD_AM29LV001BB} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -264,13 +251,11 @@
.vendor = "AMD",
.name = "Am29LV001BT",
.bustype = BUS_PARALLEL,
- .manufacture_id = AMD_ID,
- .model_id = AMD_AM29LV001BT,
.total_size = 128,
.page_size = 64 * 1024, /* unused */
.feature_bits = FEATURE_ADDR_2AA | FEATURE_SHORT_RESET,
.tested = TEST_UNTESTED,
- .probe = probe_jedec,
+ {probe_jedec, {2, {AMD_ID, AMD_AM29LV001BT} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -295,13 +280,11 @@
.vendor = "AMD",
.name = "Am29LV002BB",
.bustype = BUS_PARALLEL,
- .manufacture_id = AMD_ID,
- .model_id = AMD_AM29LV002BB,
.total_size = 256,
.page_size = 64 * 1024, /* unused */
.feature_bits = FEATURE_ADDR_2AA | FEATURE_SHORT_RESET,
.tested = TEST_UNTESTED,
- .probe = probe_jedec,
+ {probe_jedec, {2, {AMD_ID, AMD_AM29LV002BB} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -327,13 +310,11 @@
.vendor = "AMD",
.name = "Am29LV002BT",
.bustype = BUS_PARALLEL,
- .manufacture_id = AMD_ID,
- .model_id = AMD_AM29LV002BT,
.total_size = 256,
.page_size = 64 * 1024, /* unused */
.feature_bits = FEATURE_ADDR_2AA | FEATURE_SHORT_RESET,
.tested = TEST_UNTESTED,
- .probe = probe_jedec,
+ {probe_jedec, {2, {AMD_ID, AMD_AM29LV002BT} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -359,13 +340,11 @@
.vendor = "AMD",
.name = "Am29LV004BB",
.bustype = BUS_PARALLEL,
- .manufacture_id = AMD_ID,
- .model_id = AMD_AM29LV004BB,
.total_size = 512,
.page_size = 64 * 1024, /* unused */
.feature_bits = FEATURE_ADDR_2AA | FEATURE_SHORT_RESET,
.tested = TEST_UNTESTED,
- .probe = probe_jedec,
+ {probe_jedec, {2, {AMD_ID, AMD_AM29LV004BB} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -391,13 +370,11 @@
.vendor = "AMD",
.name = "Am29LV004BT",
.bustype = BUS_PARALLEL,
- .manufacture_id = AMD_ID,
- .model_id = AMD_AM29LV004BT,
.total_size = 512,
.page_size = 64 * 1024, /* unused */
.feature_bits = FEATURE_ADDR_2AA | FEATURE_SHORT_RESET,
.tested = TEST_UNTESTED,
- .probe = probe_jedec,
+ {probe_jedec, {2, {AMD_ID, AMD_AM29LV004BT} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -423,13 +400,11 @@
.vendor = "AMD",
.name = "Am29LV008BB",
.bustype = BUS_PARALLEL,
- .manufacture_id = AMD_ID,
- .model_id = AMD_AM29LV008BB,
.total_size = 1024,
.page_size = 64 * 1024, /* unused */
.feature_bits = FEATURE_ADDR_2AA | FEATURE_SHORT_RESET,
.tested = TEST_OK_PREW,
- .probe = probe_jedec,
+ {probe_jedec, {2, {AMD_ID, AMD_AM29LV008BB} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -455,13 +430,11 @@
.vendor = "AMD",
.name = "Am29LV008BT",
.bustype = BUS_PARALLEL,
- .manufacture_id = AMD_ID,
- .model_id = AMD_AM29LV008BT,
.total_size = 1024,
.page_size = 64 * 1024, /* unused */
.feature_bits = FEATURE_ADDR_2AA | FEATURE_SHORT_RESET,
.tested = TEST_UNTESTED,
- .probe = probe_jedec,
+ {probe_jedec, {2, {AMD_ID, AMD_AM29LV008BT} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -487,13 +460,11 @@
.vendor = "AMD",
.name = "Am29LV040B",
.bustype = BUS_PARALLEL,
- .manufacture_id = AMD_ID,
- .model_id = AMD_AM29LV040B,
.total_size = 512,
.page_size = 64 * 1024,
.feature_bits = FEATURE_ADDR_2AA | FEATURE_SHORT_RESET,
.tested = TEST_OK_PRE,
- .probe = probe_jedec,
+ {probe_jedec, {2, {AMD_ID, AMD_AM29LV040B} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -514,13 +485,11 @@
.vendor = "AMD",
.name = "Am29LV081B",
.bustype = BUS_PARALLEL,
- .manufacture_id = AMD_ID,
- .model_id = AMD_AM29LV080B,
.total_size = 1024,
.page_size = 64 * 1024,
.feature_bits = FEATURE_ADDR_2AA | FEATURE_SHORT_RESET, /* datasheet specifies address as don't care */
.tested = TEST_UNTESTED,
- .probe = probe_jedec,
+ {probe_jedec, {2, {AMD_ID, AMD_AM29LV080B} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -541,13 +510,11 @@
.vendor = "AMIC",
.name = "A25L05PT",
.bustype = BUS_SPI,
- .manufacture_id = AMIC_ID,
- .model_id = AMIC_A25L05PT,
.total_size = 64,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_UNTESTED,
- .probe = probe_spi_rdid4,
+ {probe_spi_rdid4, {4, {AMIC_ID, AMIC_A25L05PT} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -575,13 +542,11 @@
.vendor = "AMIC",
.name = "A25L05PU",
.bustype = BUS_SPI,
- .manufacture_id = AMIC_ID,
- .model_id = AMIC_A25L05PU,
.total_size = 64,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_UNTESTED,
- .probe = probe_spi_rdid4,
+ {probe_spi_rdid4, {4, {AMIC_ID, AMIC_A25L05PU} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -609,13 +574,11 @@
.vendor = "AMIC",
.name = "A25L10PT",
.bustype = BUS_SPI,
- .manufacture_id = AMIC_ID,
- .model_id = AMIC_A25L10PT,
.total_size = 128,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_UNTESTED,
- .probe = probe_spi_rdid4,
+ {probe_spi_rdid4, {4, {AMIC_ID, AMIC_A25L10PT} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -644,13 +607,11 @@
.vendor = "AMIC",
.name = "A25L10PU",
.bustype = BUS_SPI,
- .manufacture_id = AMIC_ID,
- .model_id = AMIC_A25L10PU,
.total_size = 128,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_UNTESTED,
- .probe = probe_spi_rdid4,
+ {probe_spi_rdid4, {4, {AMIC_ID, AMIC_A25L10PU} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -679,13 +640,11 @@
.vendor = "AMIC",
.name = "A25L20PT",
.bustype = BUS_SPI,
- .manufacture_id = AMIC_ID,
- .model_id = AMIC_A25L20PT,
.total_size = 256,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_UNTESTED,
- .probe = probe_spi_rdid4,
+ {probe_spi_rdid4, {4, {AMIC_ID, AMIC_A25L20PT} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -714,13 +673,11 @@
.vendor = "AMIC",
.name = "A25L20PU",
.bustype = BUS_SPI,
- .manufacture_id = AMIC_ID,
- .model_id = AMIC_A25L20PU,
.total_size = 256,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_UNTESTED,
- .probe = probe_spi_rdid4,
+ {probe_spi_rdid4, {4, {AMIC_ID, AMIC_A25L20PU} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -754,13 +711,11 @@
.vendor = "AMIC",
.name = "A25L40PT",
.bustype = BUS_SPI,
- .manufacture_id = AMIC_ID,
- .model_id = AMIC_A25L40PT,
.total_size = 512,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_OK_PR,
- .probe = probe_spi_rdid4,
+ {probe_spi_rdid4, {4, {AMIC_ID, AMIC_A25L40PT} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -789,13 +744,11 @@
.vendor = "AMIC",
.name = "A25L40PU",
.bustype = BUS_SPI,
- .manufacture_id = AMIC_ID,
- .model_id = AMIC_A25L40PU,
.total_size = 512,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_OK_PR,
- .probe = probe_spi_rdid4,
+ {probe_spi_rdid4, {4, {AMIC_ID, AMIC_A25L40PU} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -824,13 +777,11 @@
.vendor = "AMIC",
.name = "A25L80P",
.bustype = BUS_SPI,
- .manufacture_id = AMIC_ID,
- .model_id = AMIC_A25L80P,
.total_size = 1024,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_OK_PRE,
- .probe = probe_spi_rdid4,
+ {probe_spi_rdid4, {4, {AMIC_ID, AMIC_A25L80P} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -859,13 +810,11 @@
.vendor = "AMIC",
.name = "A25L16PT",
.bustype = BUS_SPI,
- .manufacture_id = AMIC_ID,
- .model_id = AMIC_A25L16PT,
.total_size = 2048,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_UNTESTED,
- .probe = probe_spi_rdid4,
+ {probe_spi_rdid4, {4, {AMIC_ID, AMIC_A25L16PT} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -897,13 +846,11 @@
.vendor = "AMIC",
.name = "A25L16PU",
.bustype = BUS_SPI,
- .manufacture_id = AMIC_ID,
- .model_id = AMIC_A25L16PU,
.total_size = 2048,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_OK_PR,
- .probe = probe_spi_rdid4,
+ {probe_spi_rdid4, {4, {AMIC_ID, AMIC_A25L16PU} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -935,13 +882,11 @@
.vendor = "AMIC",
.name = "A25L512",
.bustype = BUS_SPI,
- .manufacture_id = AMIC_ID_NOPREFIX,
- .model_id = AMIC_A25L512,
.total_size = 64,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_UNTESTED,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {AMIC_ID_NOPREFIX, AMIC_A25L512} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -967,13 +912,11 @@
.vendor = "AMIC",
.name = "A25L010",
.bustype = BUS_SPI,
- .manufacture_id = AMIC_ID_NOPREFIX,
- .model_id = AMIC_A25L010,
.total_size = 128,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_UNTESTED,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {AMIC_ID_NOPREFIX, AMIC_A25L010} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -999,13 +942,11 @@
.vendor = "AMIC",
.name = "A25L020",
.bustype = BUS_SPI,
- .manufacture_id = AMIC_ID_NOPREFIX,
- .model_id = AMIC_A25L020,
.total_size = 256,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_UNTESTED,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {AMIC_ID_NOPREFIX, AMIC_A25L020} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -1031,13 +972,11 @@
.vendor = "AMIC",
.name = "A25L040",
.bustype = BUS_SPI,
- .manufacture_id = AMIC_ID_NOPREFIX,
- .model_id = AMIC_A25L040,
.total_size = 512,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_UNTESTED,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {AMIC_ID_NOPREFIX, AMIC_A25L040} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -1063,13 +1002,11 @@
.vendor = "AMIC",
.name = "A25L080",
.bustype = BUS_SPI,
- .manufacture_id = AMIC_ID_NOPREFIX,
- .model_id = AMIC_A25L080,
.total_size = 1024,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_UNTESTED,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {AMIC_ID_NOPREFIX, AMIC_A25L080} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -1095,13 +1032,11 @@
.vendor = "AMIC",
.name = "A25L016",
.bustype = BUS_SPI,
- .manufacture_id = AMIC_ID_NOPREFIX,
- .model_id = AMIC_A25L016,
.total_size = 2048,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_UNTESTED,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {AMIC_ID_NOPREFIX, AMIC_A25L016} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -1127,14 +1062,12 @@
.vendor = "AMIC",
.name = "A25L032",
.bustype = BUS_SPI,
- .manufacture_id = AMIC_ID_NOPREFIX,
- .model_id = AMIC_A25L032,
.total_size = 4096,
.page_size = 256,
/* OTP: 64B total; read 0x4B, 0x48; write 0x42 */
.feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP,
.tested = TEST_OK_PREW,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {AMIC_ID_NOPREFIX, AMIC_A25L032} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -1166,15 +1099,13 @@
.vendor = "AMIC",
.name = "A25LQ16",
.bustype = BUS_SPI,
- .manufacture_id = AMIC_ID_NOPREFIX,
- .model_id = AMIC_A25LQ16,
.total_size = 2048,
.page_size = 256,
/* supports SFDP */
/* OTP: 64B total; read 0x4B, 0x48; write 0x42 */
.feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP,
.tested = TEST_UNTESTED,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {AMIC_ID_NOPREFIX, AMIC_A25LQ16} } },
.probe_timing = TIMING_ZERO,
.block_erasers = {
{
@@ -1205,15 +1136,13 @@
.vendor = "AMIC",
.name = "A25LQ032/A25LQ32A",
.bustype = BUS_SPI,
- .manufacture_id = AMIC_ID_NOPREFIX,
- .model_id = AMIC_A25LQ032,
.total_size = 4096,
.page_size = 256,
/* A25LQ32A supports SFDP */
/* OTP: 64B total; read 0x4B, 0x48; write 0x42 */
.feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP,
.tested = TEST_UNTESTED,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {AMIC_ID_NOPREFIX, AMIC_A25LQ032} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -1245,8 +1174,6 @@
.vendor = "AMIC",
.name = "A25LQ64",
.bustype = BUS_SPI,
- .manufacture_id = AMIC_ID_NOPREFIX,
- .model_id = AMIC_A25LQ032,
.total_size = 8192,
.page_size = 256,
/* supports SFDP */
@@ -1254,7 +1181,7 @@
/* QPI enable 0x35, disable 0xF5 */
.feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_QPI,
.tested = TEST_UNTESTED,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {AMIC_ID_NOPREFIX, AMIC_A25LQ032} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -1286,13 +1213,11 @@
.vendor = "AMIC",
.name = "A29002B",
.bustype = BUS_PARALLEL,
- .manufacture_id = AMIC_ID_NOPREFIX,
- .model_id = AMIC_A29002B,
.total_size = 256,
.page_size = 64 * 1024,
.feature_bits = FEATURE_ADDR_2AA | FEATURE_SHORT_RESET,
.tested = TEST_UNTESTED,
- .probe = probe_jedec,
+ {probe_jedec, {2, {AMIC_ID_NOPREFIX, AMIC_A29002B} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -1318,13 +1243,11 @@
.vendor = "AMIC",
.name = "A29002T",
.bustype = BUS_PARALLEL,
- .manufacture_id = AMIC_ID_NOPREFIX,
- .model_id = AMIC_A29002T,
.total_size = 256,
.page_size = 64 * 1024,
.feature_bits = FEATURE_ADDR_2AA | FEATURE_SHORT_RESET,
.tested = TEST_OK_PREW,
- .probe = probe_jedec,
+ {probe_jedec, {2, {AMIC_ID_NOPREFIX, AMIC_A29002T} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -1350,13 +1273,11 @@
.vendor = "AMIC",
.name = "A29040B",
.bustype = BUS_PARALLEL,
- .manufacture_id = AMIC_ID_NOPREFIX,
- .model_id = AMIC_A29040B,
.total_size = 512,
.page_size = 64 * 1024,
.feature_bits = FEATURE_ADDR_2AA | FEATURE_SHORT_RESET,
.tested = TEST_OK_PREW,
- .probe = probe_jedec,
+ {probe_jedec, {2, {AMIC_ID_NOPREFIX, AMIC_A29040B} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -1377,13 +1298,11 @@
.vendor = "AMIC",
.name = "A49LF040A",
.bustype = BUS_LPC,
- .manufacture_id = AMIC_ID_NOPREFIX,
- .model_id = AMIC_A49LF040A,
.total_size = 512,
.page_size = 64 * 1024,
.feature_bits = FEATURE_REGISTERMAP | FEATURE_EITHER_RESET,
.tested = TEST_OK_PREW,
- .probe = probe_jedec,
+ {probe_jedec, {2, {AMIC_ID_NOPREFIX, AMIC_A49LF040A} } },
.probe_timing = TIMING_ZERO, /* routine is wrapper to probe_jedec (pm49fl00x.c) */
.block_erasers =
{
@@ -1405,14 +1324,12 @@
.vendor = "Atmel",
.name = "AT25DF021",
.bustype = BUS_SPI,
- .manufacture_id = ATMEL_ID,
- .model_id = ATMEL_AT25DF021,
.total_size = 256,
.page_size = 256,
/* OTP: 128B total, 64B pre-programmed; read 0x77; write 0x9B */
.feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP,
.tested = TEST_UNTESTED,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {ATMEL_ID, ATMEL_AT25DF021} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -1444,13 +1361,11 @@
.vendor = "Atmel",
.name = "AT25DF041A",
.bustype = BUS_SPI,
- .manufacture_id = ATMEL_ID,
- .model_id = ATMEL_AT25DF041A,
.total_size = 512,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_UNTESTED,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {ATMEL_ID, ATMEL_AT25DF041A} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -1482,13 +1397,11 @@
.vendor = "Atmel",
.name = "AT25DF081",
.bustype = BUS_SPI,
- .manufacture_id = ATMEL_ID,
- .model_id = ATMEL_AT25DF081,
.total_size = 1024,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_UNTESTED,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {ATMEL_ID, ATMEL_AT25DF081} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -1520,13 +1433,11 @@
.vendor = "Atmel",
.name = "AT25DF081A",
.bustype = BUS_SPI,
- .manufacture_id = ATMEL_ID,
- .model_id = ATMEL_AT25DF081A,
.total_size = 1024,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_UNTESTED,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {ATMEL_ID, ATMEL_AT25DF081A} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -1558,13 +1469,11 @@
.vendor = "Atmel",
.name = "AT25DF161",
.bustype = BUS_SPI,
- .manufacture_id = ATMEL_ID,
- .model_id = ATMEL_AT25DF161,
.total_size = 2048,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_OK_PROBE,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {ATMEL_ID, ATMEL_AT25DF161} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -1596,13 +1505,11 @@
.vendor = "Atmel",
.name = "AT25DF321",
.bustype = BUS_SPI,
- .manufacture_id = ATMEL_ID,
- .model_id = ATMEL_AT25DF321,
.total_size = 4096,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_OK_PREW,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {ATMEL_ID, ATMEL_AT25DF321} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -1634,14 +1541,12 @@
.vendor = "Atmel",
.name = "AT25DF321A",
.bustype = BUS_SPI,
- .manufacture_id = ATMEL_ID,
- .model_id = ATMEL_AT25DF321A,
.total_size = 4096,
.page_size = 256,
/* OTP: 128B total, 64B pre-programmed; read 0x77; write 0x9B */
.feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP,
.tested = TEST_OK_PREW,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {ATMEL_ID, ATMEL_AT25DF321A} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -1673,13 +1578,11 @@
.vendor = "Atmel",
.name = "AT25DF641(A)",
.bustype = BUS_SPI,
- .manufacture_id = ATMEL_ID,
- .model_id = ATMEL_AT25DF641,
.total_size = 8192,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_OK_PREW,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {ATMEL_ID, ATMEL_AT25DF641} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -1711,14 +1614,12 @@
.vendor = "Atmel",
.name = "AT25DL081",
.bustype = BUS_SPI,
- .manufacture_id = ATMEL_ID,
- .model_id = ATMEL_AT25DF081,
.total_size = 1024,
.page_size = 256,
/* OTP: 128B total, 64B pre-programmed; read 0x77; write 0x9B */
.feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP,
.tested = TEST_UNTESTED,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {ATMEL_ID, ATMEL_AT25DF081} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -1750,14 +1651,12 @@
.vendor = "Atmel",
.name = "AT25DL161",
.bustype = BUS_SPI,
- .manufacture_id = ATMEL_ID,
- .model_id = ATMEL_AT25DL161,
.total_size = 2048,
.page_size = 256,
/* OTP: 128B total, 64B pre-programmed; read 0x77; write 0x9B */
.feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP,
.tested = TEST_UNTESTED,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {ATMEL_ID, ATMEL_AT25DL161} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -1789,14 +1688,12 @@
.vendor = "Atmel",
.name = "AT25DQ161",
.bustype = BUS_SPI,
- .manufacture_id = ATMEL_ID,
- .model_id = ATMEL_AT25DQ161,
.total_size = 2048,
.page_size = 256,
/* OTP: 128B total, 64B pre-programmed; read 0x77; write 0x9B */
.feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP,
.tested = TEST_UNTESTED,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {ATMEL_ID, ATMEL_AT25DQ161} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -1828,13 +1725,11 @@
.vendor = "Atmel",
.name = "AT25F512",
.bustype = BUS_SPI,
- .manufacture_id = ATMEL_ID,
- .model_id = ATMEL_AT25F512,
.total_size = 64,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_OK_PREW,
- .probe = probe_spi_at25f,
+ {probe_spi_at25f, {2, {ATMEL_ID, ATMEL_AT25F512} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -1857,13 +1752,11 @@
.vendor = "Atmel",
.name = "AT25F512A",
.bustype = BUS_SPI,
- .manufacture_id = ATMEL_ID,
- .model_id = ATMEL_AT25F512A,
.total_size = 64,
.page_size = 128,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_OK_PREW,
- .probe = probe_spi_at25f,
+ {probe_spi_at25f, {2, {ATMEL_ID, ATMEL_AT25F512A} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -1887,14 +1780,12 @@
.vendor = "Atmel",
.name = "AT25F512B",
.bustype = BUS_SPI,
- .manufacture_id = ATMEL_ID,
- .model_id = ATMEL_AT25F512B,
.total_size = 64,
.page_size = 256,
/* OTP: 128B total, 64B pre-programmed; read 0x77; write 0x9B */
.feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP,
.tested = TEST_UNTESTED,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {ATMEL_ID, ATMEL_AT25F512B} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -1931,13 +1822,11 @@
* All other properties seem to be the same.*/
.name = "AT25F1024(A)",
.bustype = BUS_SPI,
- .manufacture_id = ATMEL_ID,
- .model_id = ATMEL_AT25F1024,
.total_size = 128,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_OK_PREW,
- .probe = probe_spi_at25f,
+ {probe_spi_at25f, {2, {ATMEL_ID, ATMEL_AT25F1024} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -1960,13 +1849,11 @@
.vendor = "Atmel",
.name = "AT25F2048",
.bustype = BUS_SPI,
- .manufacture_id = ATMEL_ID,
- .model_id = ATMEL_AT25F2048,
.total_size = 256,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_UNTESTED,
- .probe = probe_spi_at25f,
+ {probe_spi_at25f, {2, {ATMEL_ID, ATMEL_AT25F2048} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -1989,13 +1876,11 @@
.vendor = "Atmel",
.name = "AT25F4096",
.bustype = BUS_SPI,
- .manufacture_id = ATMEL_ID,
- .model_id = ATMEL_AT25F4096,
.total_size = 512,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_UNTESTED,
- .probe = probe_spi_at25f,
+ {probe_spi_at25f, {2, {ATMEL_ID, ATMEL_AT25F4096} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -2019,13 +1904,11 @@
.vendor = "Atmel",
.name = "AT25FS010",
.bustype = BUS_SPI,
- .manufacture_id = ATMEL_ID,
- .model_id = ATMEL_AT25FS010,
.total_size = 128,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_OK_PREW,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {ATMEL_ID, ATMEL_AT25FS010} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -2060,13 +1943,11 @@
.vendor = "Atmel",
.name = "AT25FS040",
.bustype = BUS_SPI,
- .manufacture_id = ATMEL_ID,
- .model_id = ATMEL_AT25FS040,
.total_size = 512,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_UNTESTED,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {ATMEL_ID, ATMEL_AT25FS040} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -2098,13 +1979,11 @@
.vendor = "Atmel",
.name = "AT26DF041",
.bustype = BUS_SPI,
- .manufacture_id = ATMEL_ID,
- .model_id = ATMEL_AT26DF041,
.total_size = 512,
.page_size = 256,
/* does not support EWSR nor WREN and has no writable status register bits whatsoever */
.tested = TEST_OK_PREW,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {ATMEL_ID, ATMEL_AT26DF041} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -2130,13 +2009,11 @@
.vendor = "Atmel",
.name = "AT26DF081A",
.bustype = BUS_SPI,
- .manufacture_id = ATMEL_ID,
- .model_id = ATMEL_AT26DF081A,
.total_size = 1024,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_OK_PREW,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {ATMEL_ID, ATMEL_AT26DF081A} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -2168,13 +2045,11 @@
.vendor = "Atmel",
.name = "AT26DF161",
.bustype = BUS_SPI,
- .manufacture_id = ATMEL_ID,
- .model_id = ATMEL_AT26DF161,
.total_size = 2048,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_OK_PR,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {ATMEL_ID, ATMEL_AT26DF161} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -2206,13 +2081,11 @@
.vendor = "Atmel",
.name = "AT26DF161A",
.bustype = BUS_SPI,
- .manufacture_id = ATMEL_ID,
- .model_id = ATMEL_AT26DF161A,
.total_size = 2048,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_OK_PREW,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {ATMEL_ID, ATMEL_AT26DF161A} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -2245,13 +2118,11 @@
.vendor = "Atmel",
.name = "AT26DF321",
.bustype = BUS_SPI,
- .manufacture_id = ATMEL_ID,
- .model_id = ATMEL_AT26DF321,
.total_size = 4096,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_UNTESTED,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {ATMEL_ID, ATMEL_AT26DF321} } },
.probe_timing = TIMING_ZERO,
.printlock = spi_prettyprint_status_register_at26df081a,
.unlock = spi_disable_blockprotect,
@@ -2263,13 +2134,11 @@
.vendor = "Atmel",
.name = "AT26F004",
.bustype = BUS_SPI,
- .manufacture_id = ATMEL_ID,
- .model_id = ATMEL_AT26F004,
.total_size = 512,
.page_size = 256,
- .tested = {.probe = NT, .read = NT, .erase = NT, .write = BAD },
.feature_bits = FEATURE_WRSR_WREN,
- .probe = probe_spi_rdid,
+ .tested = {.probe = NT, .read = NT, .erase = NT, .write = BAD },
+ {probe_spi_rdid, {3, {ATMEL_ID, ATMEL_AT26F004} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -2300,13 +2169,11 @@
.vendor = "Atmel",
.name = "AT29C512",
.bustype = BUS_PARALLEL,
- .manufacture_id = ATMEL_ID,
- .model_id = ATMEL_AT29C512,
.total_size = 64,
.page_size = 128,
.feature_bits = FEATURE_LONG_RESET,
.tested = TEST_OK_PREW,
- .probe = probe_jedec,
+ {probe_jedec, {2, {ATMEL_ID, ATMEL_AT29C512} } },
.probe_timing = 10000, /* 10mS, Enter=Exec */
.block_erasers =
{
@@ -2324,13 +2191,11 @@
.vendor = "Atmel",
.name = "AT29C010A",
.bustype = BUS_PARALLEL,
- .manufacture_id = ATMEL_ID,
- .model_id = ATMEL_AT29C010A,
.total_size = 128,
.page_size = 128,
.feature_bits = FEATURE_LONG_RESET,
.tested = TEST_OK_PRE,
- .probe = probe_jedec,
+ {probe_jedec, {2, {ATMEL_ID, ATMEL_AT29C010A} } },
.probe_timing = 10000, /* 10mS, Enter=Exec */
.block_erasers =
{
@@ -2348,13 +2213,11 @@
.vendor = "Atmel",
.name = "AT29C020",
.bustype = BUS_PARALLEL,
- .manufacture_id = ATMEL_ID,
- .model_id = ATMEL_AT29C020,
.total_size = 256,
.page_size = 256,
.feature_bits = FEATURE_LONG_RESET,
.tested = TEST_OK_PREW,
- .probe = probe_jedec,
+ {probe_jedec, {2, {ATMEL_ID, ATMEL_AT29C020} } },
.probe_timing = 10000, /* 10ms */
.block_erasers =
{
@@ -2372,13 +2235,11 @@
.vendor = "Atmel",
.name = "AT29C040A",
.bustype = BUS_PARALLEL,
- .manufacture_id = ATMEL_ID,
- .model_id = ATMEL_AT29C040A,
.total_size = 512,
.page_size = 256,
.feature_bits = FEATURE_LONG_RESET,
.tested = TEST_UNTESTED,
- .probe = probe_jedec,
+ {probe_jedec, {2, {ATMEL_ID, ATMEL_AT29C040A} } },
.probe_timing = 10000, /* 10 ms */
.block_erasers =
{
@@ -2396,15 +2257,13 @@
.vendor = "Atmel",
.name = "AT45CS1282",
.bustype = BUS_SPI,
- .manufacture_id = ATMEL_ID,
- .model_id = ATMEL_AT45CS1282,
.total_size = 16896 /* No power of two sizes */,
.page_size = 1056 /* No power of two sizes */,
/* does not support EWSR nor WREN and has no writable status register bits whatsoever */
/* OTP: 128B total, 64B pre-programmed; read 0x77 (4 dummy bytes); write 0x9A (via buffer) */
.feature_bits = FEATURE_OTP,
.tested = TEST_UNTESTED,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {ATMEL_ID, ATMEL_AT45CS1282} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -2428,15 +2287,13 @@
.vendor = "Atmel",
.name = "AT45DB011D",
.bustype = BUS_SPI,
- .manufacture_id = ATMEL_ID,
- .model_id = ATMEL_AT45DB011D,
.total_size = 128 /* or 132, determined from status register */,
.page_size = 256 /* or 264, determined from status register */,
/* does not support EWSR nor WREN and has no writable status register bits whatsoever */
/* OTP: 128B total, 64B pre-programmed; read 0x77; write 0x9B */
.feature_bits = FEATURE_OTP,
.tested = TEST_UNTESTED,
- .probe = probe_spi_at45db,
+ {probe_spi_at45db, {FIXME, {ATMEL_ID, ATMEL_AT45DB011D} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -2470,15 +2327,13 @@
.vendor = "Atmel",
.name = "AT45DB021D",
.bustype = BUS_SPI,
- .manufacture_id = ATMEL_ID,
- .model_id = ATMEL_AT45DB021D,
.total_size = 256 /* or 264, determined from status register */,
.page_size = 256 /* or 264, determined from status register */,
/* does not support EWSR nor WREN and has no writable status register bits whatsoever */
/* OTP: 128B total, 64B pre-programmed; read 0x77; write 0x9B */
.feature_bits = FEATURE_OTP,
.tested = TEST_UNTESTED,
- .probe = probe_spi_at45db,
+ {probe_spi_at45db, {FIXME, {ATMEL_ID, ATMEL_AT45DB021D} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -2512,15 +2367,13 @@
.vendor = "Atmel",
.name = "AT45DB041D",
.bustype = BUS_SPI,
- .manufacture_id = ATMEL_ID,
- .model_id = ATMEL_AT45DB041D,
.total_size = 512 /* or 528, determined from status register */,
.page_size = 256 /* or 264, determined from status register */,
/* does not support EWSR nor WREN and has no writable status register bits whatsoever */
/* OTP: 128B total, 64B pre-programmed; read 0x77; write 0x9B */
.feature_bits = FEATURE_OTP,
.tested = TEST_OK_PREW,
- .probe = probe_spi_at45db,
+ {probe_spi_at45db, {FIXME, {ATMEL_ID, ATMEL_AT45DB041D} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -2554,15 +2407,13 @@
.vendor = "Atmel",
.name = "AT45DB081D",
.bustype = BUS_SPI,
- .manufacture_id = ATMEL_ID,
- .model_id = ATMEL_AT45DB081D,
.total_size = 1024 /* or 1056, determined from status register */,
.page_size = 256 /* or 264, determined from status register */,
/* does not support EWSR nor WREN and has no writable status register bits whatsoever */
/* OTP: 128B total, 64B pre-programmed; read 0x77; write 0x9B */
.feature_bits = FEATURE_OTP,
.tested = TEST_UNTESTED,
- .probe = probe_spi_at45db,
+ {probe_spi_at45db, {FIXME, {ATMEL_ID, ATMEL_AT45DB081D} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -2596,15 +2447,13 @@
.vendor = "Atmel",
.name = "AT45DB161D",
.bustype = BUS_SPI,
- .manufacture_id = ATMEL_ID,
- .model_id = ATMEL_AT45DB161D,
.total_size = 2048 /* or 2112, determined from status register */,
.page_size = 512 /* or 528, determined from status register */,
/* does not support EWSR nor WREN and has no writable status register bits whatsoever */
/* OTP: 128B total, 64B pre-programmed; read 0x77; write 0x9B */
.feature_bits = FEATURE_OTP,
.tested = TEST_OK_PREW,
- .probe = probe_spi_at45db,
+ {probe_spi_at45db, {FIXME, {ATMEL_ID, ATMEL_AT45DB161D} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -2638,15 +2487,13 @@
.vendor = "Atmel",
.name = "AT45DB321C",
.bustype = BUS_SPI,
- .manufacture_id = ATMEL_ID,
- .model_id = ATMEL_AT45DB321C,
.total_size = 4224 /* No power of two sizes */,
.page_size = 528 /* No power of two sizes */,
/* does not support EWSR nor WREN and has no writable status register bits whatsoever */
/* OTP: 128B total, 64B pre-programmed; read 0x77 (4 dummy bytes); write 0x9A (via buffer) */
.feature_bits = FEATURE_OTP,
.tested = TEST_UNTESTED,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {ATMEL_ID, ATMEL_AT45DB321C} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -2681,15 +2528,13 @@
.vendor = "Atmel",
.name = "AT45DB321D",
.bustype = BUS_SPI,
- .manufacture_id = ATMEL_ID,
- .model_id = ATMEL_AT45DB321D,
.total_size = 4096 /* or 4224, determined from status register */,
.page_size = 512 /* or 528, determined from status register */,
/* does not support EWSR nor WREN and has no writable status register bits whatsoever */
/* OTP: 128B total, 64B pre-programmed; read 0x77; write 0x9B */
.feature_bits = FEATURE_OTP,
.tested = TEST_UNTESTED,
- .probe = probe_spi_at45db,
+ {probe_spi_at45db, {FIXME, {ATMEL_ID, ATMEL_AT45DB321D} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -2723,15 +2568,13 @@
.vendor = "Atmel",
.name = "AT45DB321E",
.bustype = BUS_SPI,
- .manufacture_id = ATMEL_ID,
- .model_id = ATMEL_AT45DB321C,
.total_size = 4096 /* or 4224, determined from status register */,
.page_size = 512 /* or 528, determined from status register */,
/* does not support EWSR nor WREN and has no writable status register bits whatsoever */
/* OTP: 128B total, 64B pre-programmed; read 0x77; write 0x9B */
.feature_bits = FEATURE_OTP,
.tested = TEST_UNTESTED,
- .probe = probe_spi_at45db,
+ {probe_spi_at45db, {FIXME, {ATMEL_ID, ATMEL_AT45DB321C} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -2765,15 +2608,13 @@
.vendor = "Atmel",
.name = "AT45DB642D",
.bustype = BUS_SPI,
- .manufacture_id = ATMEL_ID,
- .model_id = ATMEL_AT45DB642D,
.total_size = 8192 /* or 8448, determined from status register */,
.page_size = 1024 /* or 1056, determined from status register */,
/* does not support EWSR nor WREN and has no writable status register bits whatsoever */
/* OTP: 128B total, 64B pre-programmed; read 0x77; write 0x9B */
.feature_bits = FEATURE_OTP,
.tested = TEST_UNTESTED,
- .probe = probe_spi_at45db,
+ {probe_spi_at45db, {FIXME, {ATMEL_ID, ATMEL_AT45DB642D} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -2807,13 +2648,11 @@
.vendor = "Atmel",
.name = "AT49BV512",
.bustype = BUS_PARALLEL,
- .manufacture_id = ATMEL_ID,
- .model_id = ATMEL_AT49BV512,
.total_size = 64,
.page_size = 64,
.feature_bits = FEATURE_EITHER_RESET,
.tested = TEST_OK_PREW,
- .probe = probe_jedec,
+ {probe_jedec, {2, {ATMEL_ID, ATMEL_AT49BV512} } },
.probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */
.block_erasers =
{
@@ -2831,13 +2670,11 @@
.vendor = "Atmel",
.name = "AT49F002(N)",
.bustype = BUS_PARALLEL,
- .manufacture_id = ATMEL_ID,
- .model_id = ATMEL_AT49F002N,
.total_size = 256,
.page_size = 256,
.feature_bits = FEATURE_EITHER_RESET,
.tested = TEST_UNTESTED,
- .probe = probe_jedec,
+ {probe_jedec, {2, {ATMEL_ID, ATMEL_AT49F002N} } },
.probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */
.block_erasers =
{
@@ -2863,13 +2700,11 @@
.vendor = "Atmel",
.name = "AT49F002(N)T",
.bustype = BUS_PARALLEL,
- .manufacture_id = ATMEL_ID,
- .model_id = ATMEL_AT49F002NT,
.total_size = 256,
.page_size = 256,
.feature_bits = FEATURE_EITHER_RESET,
.tested = TEST_OK_PR,
- .probe = probe_jedec,
+ {probe_jedec, {2, {ATMEL_ID, ATMEL_AT49F002NT} } },
.probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */
.block_erasers =
{
@@ -2895,13 +2730,11 @@
.vendor = "Atmel",
.name = "AT49(H)F010",
.bustype = BUS_PARALLEL,
- .manufacture_id = ATMEL_ID,
- .model_id = ATMEL_AT49F010,
.total_size = 128,
.page_size = 0, /* unused */
.feature_bits = FEATURE_EITHER_RESET,
.tested = TEST_OK_PREW,
- .probe = probe_jedec,
+ {probe_jedec, {2, {ATMEL_ID, ATMEL_AT49F010} } },
.probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */
.block_erasers =
{
@@ -2920,13 +2753,11 @@
.vendor = "Atmel",
.name = "AT49F020",
.bustype = BUS_PARALLEL,
- .manufacture_id = ATMEL_ID,
- .model_id = ATMEL_AT49F020,
.total_size = 256,
.page_size = 0, /* unused */
.feature_bits = FEATURE_EITHER_RESET,
.tested = TEST_OK_PRE,
- .probe = probe_jedec,
+ {probe_jedec, {2, {ATMEL_ID, ATMEL_AT49F020} } },
.probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */
.block_erasers =
{
@@ -2951,13 +2782,11 @@
.vendor = "Atmel",
.name = "AT49F040",
.bustype = BUS_PARALLEL,
- .manufacture_id = ATMEL_ID,
- .model_id = ATMEL_AT49F040,
.total_size = 512,
.page_size = 0, /* unused */
.feature_bits = FEATURE_EITHER_RESET,
.tested = TEST_UNTESTED,
- .probe = probe_jedec,
+ {probe_jedec, {2, {ATMEL_ID, ATMEL_AT49F040} } },
.probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */
.block_erasers =
{
@@ -2982,13 +2811,11 @@
.vendor = "Atmel",
.name = "AT49F080",
.bustype = BUS_PARALLEL,
- .manufacture_id = ATMEL_ID,
- .model_id = ATMEL_AT49F080,
.total_size = 1024,
.page_size = 0, /* unused */
.feature_bits = FEATURE_EITHER_RESET,
.tested = TEST_UNTESTED,
- .probe = probe_jedec,
+ {probe_jedec, {2, {ATMEL_ID, ATMEL_AT49F080} } },
.probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */
.block_erasers =
{
@@ -3014,13 +2841,11 @@
.vendor = "Atmel",
.name = "AT49F080T",
.bustype = BUS_PARALLEL,
- .manufacture_id = ATMEL_ID,
- .model_id = ATMEL_AT49F080T,
.total_size = 1024,
.page_size = 0, /* unused */
.feature_bits = FEATURE_EITHER_RESET,
.tested = TEST_UNTESTED,
- .probe = probe_jedec,
+ {probe_jedec, {2, {ATMEL_ID, ATMEL_AT49F080T} } },
.probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */
.block_erasers =
{
@@ -3045,13 +2870,11 @@
.vendor = "Atmel",
.name = "AT49LH002",
.bustype = BUS_LPC | BUS_FWH, /* A/A Mux */
- .manufacture_id = ATMEL_ID,
- .model_id = ATMEL_AT49LH002,
.total_size = 256,
.page_size = 0, /* unused */
.feature_bits = FEATURE_REGISTERMAP, /* TODO: LPC OK too? */
.tested = TEST_UNTESTED,
- .probe = probe_82802ab, /* TODO: 0xff cmd not documented? */
+ {probe_82802ab, {2, {ATMEL_ID, ATMEL_AT49LH002} } }, /* TODO: 0xff cmd not documented? */
.probe_timing = TIMING_FIXME,
.block_erasers =
{
@@ -3081,13 +2904,11 @@
.vendor = "Catalyst",
.name = "CAT28F512",
.bustype = BUS_PARALLEL,
- .manufacture_id = CATALYST_ID,
- .model_id = CATALYST_CAT28F512,
.total_size = 64,
.page_size = 0, /* unused */
.feature_bits = 0,
.tested = TEST_OK_PR,
- .probe = probe_jedec, /* FIXME! */
+ {probe_jedec, {2, {CATALYST_ID, CATALYST_CAT28F512} } }, /* FIXME! */
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -3105,13 +2926,11 @@
.vendor = "Bright",
.name = "BM29F040",
.bustype = BUS_PARALLEL,
- .manufacture_id = BRIGHT_ID,
- .model_id = BRIGHT_BM29F040,
.total_size = 512,
.page_size = 64 * 1024,
.feature_bits = FEATURE_EITHER_RESET,
.tested = TEST_OK_PR,
- .probe = probe_jedec,
+ {probe_jedec, {2, {BRIGHT_ID, BRIGHT_BM29F040} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -3132,13 +2951,11 @@
.vendor = "ESMT",
.name = "F49B002UA",
.bustype = BUS_PARALLEL,
- .manufacture_id = ESMT_ID,
- .model_id = ESMT_F49B002UA,
.total_size = 256,
.page_size = 4096,
.feature_bits = FEATURE_EITHER_RESET,
.tested = TEST_UNTESTED,
- .probe = probe_jedec,
+ {probe_jedec, {2, {ESMT_ID, ESMT_F49B002UA} } },
.probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */
.block_erasers =
{
@@ -3164,13 +2981,11 @@
.vendor = "ESMT",
.name = "F25L008A",
.bustype = BUS_SPI,
- .manufacture_id = ESMT_ID,
- .model_id = ESMT_F25L008A,
.total_size = 1024,
.page_size = 256,
.feature_bits = FEATURE_WRSR_EITHER,
.tested = TEST_OK_PREW,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {ESMT_ID, ESMT_F25L008A} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -3199,13 +3014,11 @@
.vendor = "ESMT",
.name = "F25L32PA",
.bustype = BUS_SPI,
- .manufacture_id = ESMT_ID,
- .model_id = ESMT_F25L32PA,
.total_size = 4096,
.page_size = 256,
.feature_bits = FEATURE_WRSR_EITHER | FEATURE_OTP,
.tested = TEST_UNTESTED,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {ESMT_ID, ESMT_F25L32PA} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -3234,13 +3047,11 @@
.vendor = "Eon",
.name = "EN25B05",
.bustype = BUS_SPI,
- .manufacture_id = EON_ID_NOPREFIX,
- .model_id = EON_EN25B05,
.total_size = 64,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_UNTESTED,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {EON_ID_NOPREFIX, EON_EN25B05} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -3268,13 +3079,11 @@
.vendor = "Eon",
.name = "EN25B05T",
.bustype = BUS_SPI,
- .manufacture_id = EON_ID_NOPREFIX,
- .model_id = EON_EN25B05,
.total_size = 64,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_UNTESTED,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {EON_ID_NOPREFIX, EON_EN25B05} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -3302,13 +3111,11 @@
.vendor = "Eon",
.name = "EN25B10",
.bustype = BUS_SPI,
- .manufacture_id = EON_ID_NOPREFIX,
- .model_id = EON_EN25B10,
.total_size = 128,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_UNTESTED,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {EON_ID_NOPREFIX, EON_EN25B10} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -3336,13 +3143,11 @@
.vendor = "Eon",
.name = "EN25B10T",
.bustype = BUS_SPI,
- .manufacture_id = EON_ID_NOPREFIX,
- .model_id = EON_EN25B10,
.total_size = 128,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_OK_PREW,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {EON_ID_NOPREFIX, EON_EN25B10} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -3370,13 +3175,11 @@
.vendor = "Eon",
.name = "EN25B20",
.bustype = BUS_SPI,
- .manufacture_id = EON_ID_NOPREFIX,
- .model_id = EON_EN25B20,
.total_size = 256,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_UNTESTED,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {EON_ID_NOPREFIX, EON_EN25B20} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -3405,13 +3208,11 @@
.vendor = "Eon",
.name = "EN25B20T",
.bustype = BUS_SPI,
- .manufacture_id = EON_ID_NOPREFIX,
- .model_id = EON_EN25B20,
.total_size = 256,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_UNTESTED,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {EON_ID_NOPREFIX, EON_EN25B20} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -3440,13 +3241,11 @@
.vendor = "Eon",
.name = "EN25B40",
.bustype = BUS_SPI,
- .manufacture_id = EON_ID_NOPREFIX,
- .model_id = EON_EN25B40,
.total_size = 512,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_UNTESTED,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {EON_ID_NOPREFIX, EON_EN25B40} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -3475,13 +3274,11 @@
.vendor = "Eon",
.name = "EN25B40T",
.bustype = BUS_SPI,
- .manufacture_id = EON_ID_NOPREFIX,
- .model_id = EON_EN25B40,
.total_size = 512,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_UNTESTED,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {EON_ID_NOPREFIX, EON_EN25B40} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -3510,13 +3307,11 @@
.vendor = "Eon",
.name = "EN25B80",
.bustype = BUS_SPI,
- .manufacture_id = EON_ID_NOPREFIX,
- .model_id = EON_EN25B80,
.total_size = 1024,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_UNTESTED,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {EON_ID_NOPREFIX, EON_EN25B80} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -3545,13 +3340,11 @@
.vendor = "Eon",
.name = "EN25B80T",
.bustype = BUS_SPI,
- .manufacture_id = EON_ID_NOPREFIX,
- .model_id = EON_EN25B80,
.total_size = 1024,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_UNTESTED,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {EON_ID_NOPREFIX, EON_EN25B80} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -3580,13 +3373,11 @@
.vendor = "Eon",
.name = "EN25B16",
.bustype = BUS_SPI,
- .manufacture_id = EON_ID_NOPREFIX,
- .model_id = EON_EN25B16,
.total_size = 2048,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_UNTESTED,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {EON_ID_NOPREFIX, EON_EN25B16} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -3615,13 +3406,11 @@
.vendor = "Eon",
.name = "EN25B16T",
.bustype = BUS_SPI,
- .manufacture_id = EON_ID_NOPREFIX,
- .model_id = EON_EN25B16,
.total_size = 2048,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_UNTESTED,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {EON_ID_NOPREFIX, EON_EN25B16} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -3650,13 +3439,11 @@
.vendor = "Eon",
.name = "EN25B32",
.bustype = BUS_SPI,
- .manufacture_id = EON_ID_NOPREFIX,
- .model_id = EON_EN25B32,
.total_size = 4096,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_UNTESTED,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {EON_ID_NOPREFIX, EON_EN25B32} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -3685,13 +3472,11 @@
.vendor = "Eon",
.name = "EN25B32T",
.bustype = BUS_SPI,
- .manufacture_id = EON_ID_NOPREFIX,
- .model_id = EON_EN25B32,
.total_size = 4096,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_UNTESTED,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {EON_ID_NOPREFIX, EON_EN25B32} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -3720,13 +3505,11 @@
.vendor = "Eon",
.name = "EN25B64",
.bustype = BUS_SPI,
- .manufacture_id = EON_ID_NOPREFIX,
- .model_id = EON_EN25B64,
.total_size = 8192,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_UNTESTED,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {EON_ID_NOPREFIX, EON_EN25B64} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -3755,13 +3538,11 @@
.vendor = "Eon",
.name = "EN25B64T",
.bustype = BUS_SPI,
- .manufacture_id = EON_ID_NOPREFIX,
- .model_id = EON_EN25B64,
.total_size = 8192,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_UNTESTED,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {EON_ID_NOPREFIX, EON_EN25B64} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -3790,13 +3571,11 @@
.vendor = "Eon",
.name = "EN25F05",
.bustype = BUS_SPI,
- .manufacture_id = EON_ID_NOPREFIX,
- .model_id = EON_EN25F05,
.total_size = 64,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_OK_PREW,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {EON_ID_NOPREFIX, EON_EN25F05} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -3828,13 +3607,11 @@
.vendor = "Eon",
.name = "EN25F10",
.bustype = BUS_SPI,
- .manufacture_id = EON_ID_NOPREFIX,
- .model_id = EON_EN25F10,
.total_size = 128,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_UNTESTED,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {EON_ID_NOPREFIX, EON_EN25F10} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -3866,13 +3643,11 @@
.vendor = "Eon",
.name = "EN25F20",
.bustype = BUS_SPI,
- .manufacture_id = EON_ID_NOPREFIX,
- .model_id = EON_EN25F20,
.total_size = 256,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_UNTESTED,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {EON_ID_NOPREFIX, EON_EN25F20} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -3904,13 +3679,11 @@
.vendor = "Eon",
.name = "EN25F40",
.bustype = BUS_SPI,
- .manufacture_id = EON_ID_NOPREFIX,
- .model_id = EON_EN25F40,
.total_size = 512,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_OK_PROBE,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {EON_ID_NOPREFIX, EON_EN25F40} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -3939,13 +3712,11 @@
.vendor = "Eon",
.name = "EN25F80",
.bustype = BUS_SPI,
- .manufacture_id = EON_ID_NOPREFIX,
- .model_id = EON_EN25F80,
.total_size = 1024,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_OK_PREW,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {EON_ID_NOPREFIX, EON_EN25F80} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -3974,13 +3745,11 @@
.vendor = "Eon",
.name = "EN25F16",
.bustype = BUS_SPI,
- .manufacture_id = EON_ID_NOPREFIX,
- .model_id = EON_EN25F16,
.total_size = 2048,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_OK_PREW,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {EON_ID_NOPREFIX, EON_EN25F16} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -4009,13 +3778,11 @@
.vendor = "Eon",
.name = "EN25F32",
.bustype = BUS_SPI,
- .manufacture_id = EON_ID_NOPREFIX,
- .model_id = EON_EN25F32,
.total_size = 4096,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_UNTESTED,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {EON_ID_NOPREFIX, EON_EN25F32} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -4044,13 +3811,11 @@
.vendor = "Eon",
.name = "EN25F64",
.bustype = BUS_SPI,
- .manufacture_id = EON_ID_NOPREFIX,
- .model_id = EON_EN25F64,
.total_size = 8192,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_OK_PREW,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {EON_ID_NOPREFIX, EON_EN25F64} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -4079,14 +3844,12 @@
.vendor = "Eon",
.name = "EN25Q40",
.bustype = BUS_SPI,
- .manufacture_id = EON_ID_NOPREFIX,
- .model_id = EON_EN25Q40,
.total_size = 512,
.page_size = 256,
/* OTP: 256B total; enter 0x3A */
.feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP,
.tested = TEST_UNTESTED,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {EON_ID_NOPREFIX, EON_EN25Q40} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -4115,14 +3878,12 @@
.vendor = "Eon",
.name = "EN25Q80(A)",
.bustype = BUS_SPI,
- .manufacture_id = EON_ID_NOPREFIX,
- .model_id = EON_EN25Q80,
.total_size = 1024,
.page_size = 256,
/* OTP: 256B total; enter 0x3A */
.feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP,
.tested = TEST_UNTESTED,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {EON_ID_NOPREFIX, EON_EN25Q80} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -4153,14 +3914,12 @@
.vendor = "Eon",
.name = "EN25Q16",
.bustype = BUS_SPI,
- .manufacture_id = EON_ID_NOPREFIX,
- .model_id = EON_EN25Q16,
.total_size = 2048,
.page_size = 256,
/* OTP: D16 512B/Q16 128B total; enter 0x3A */
.feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP,
.tested = TEST_UNTESTED,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {EON_ID_NOPREFIX, EON_EN25Q16} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -4193,14 +3952,12 @@
.vendor = "Eon",
.name = "EN25Q32(A/B)",
.bustype = BUS_SPI,
- .manufacture_id = EON_ID_NOPREFIX,
- .model_id = EON_EN25Q32,
.total_size = 4096,
.page_size = 256,
/* OTP: 512B total; enter 0x3A */
.feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP,
.tested = TEST_OK_PREW,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {EON_ID_NOPREFIX, EON_EN25Q32} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -4229,14 +3986,12 @@
.vendor = "Eon",
.name = "EN25Q64",
.bustype = BUS_SPI,
- .manufacture_id = EON_ID_NOPREFIX,
- .model_id = EON_EN25Q64,
.total_size = 8192,
.page_size = 256,
/* OTP: 512B total; enter 0x3A */
.feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP,
.tested = TEST_OK_PREW,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {EON_ID_NOPREFIX, EON_EN25Q64} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -4265,14 +4020,12 @@
.vendor = "Eon",
.name = "EN25Q128",
.bustype = BUS_SPI,
- .manufacture_id = EON_ID_NOPREFIX,
- .model_id = EON_EN25Q128,
.total_size = 16384,
.page_size = 256,
/* OTP: 512B total; enter 0x3A */
.feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP,
.tested = TEST_UNTESTED,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {EON_ID_NOPREFIX, EON_EN25Q128} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -4300,8 +4053,6 @@
.vendor = "Eon",
.name = "EN25QH16",
.bustype = BUS_SPI,
- .manufacture_id = EON_ID_NOPREFIX,
- .model_id = EON_EN25QH16,
.total_size = 2048,
.page_size = 256,
/* supports SFDP */
@@ -4309,7 +4060,7 @@
/* QPI enable 0x38, disable 0xFF */
.feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_QPI,
.tested = TEST_OK_PR,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {EON_ID_NOPREFIX, EON_EN25QH16} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -4338,8 +4089,6 @@
.vendor = "Eon",
.name = "EN25QH32",
.bustype = BUS_SPI,
- .manufacture_id = EON_ID_NOPREFIX,
- .model_id = EON_EN25QH32,
.total_size = 4096,
.page_size = 256,
/* supports SFDP */
@@ -4347,7 +4096,7 @@
/* QPI enable 0x38, disable 0xFF */
.feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_QPI,
.tested = TEST_UNTESTED,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {EON_ID_NOPREFIX, EON_EN25QH32} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -4376,8 +4125,6 @@
.vendor = "Eon",
.name = "EN25QH64",
.bustype = BUS_SPI,
- .manufacture_id = EON_ID_NOPREFIX,
- .model_id = EON_EN25QH64,
.total_size = 8192,
.page_size = 256,
/* supports SFDP */
@@ -4385,7 +4132,7 @@
/* QPI enable 0x38, disable 0xFF */
.feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_QPI,
.tested = TEST_OK_PR,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {EON_ID_NOPREFIX, EON_EN25QH64} } },
.probe_timing = TIMING_ZERO,
.block_erasers = {
{
@@ -4413,8 +4160,6 @@
.vendor = "Eon",
.name = "EN25QH128",
.bustype = BUS_SPI,
- .manufacture_id = EON_ID_NOPREFIX,
- .model_id = EON_EN25QH128,
.total_size = 16384,
.page_size = 256,
/* supports SFDP */
@@ -4422,7 +4167,7 @@
/* QPI enable 0x38, disable 0xFF */
.feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_QPI,
.tested = TEST_UNTESTED,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {EON_ID_NOPREFIX, EON_EN25QH128} } },
.probe_timing = TIMING_ZERO,
.block_erasers = {
{
@@ -4450,14 +4195,12 @@
.vendor = "Eon",
.name = "EN25S10",
.bustype = BUS_SPI,
- .manufacture_id = EON_ID_NOPREFIX,
- .model_id = EON_EN25S10,
.total_size = 128,
.page_size = 256,
/* OTP: 256B total; enter 0x3A */
.feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP,
.tested = TEST_UNTESTED,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {EON_ID_NOPREFIX, EON_EN25S10} } },
.probe_timing = TIMING_ZERO,
.block_erasers = {
{
@@ -4485,14 +4228,12 @@
.vendor = "Eon",
.name = "EN25S20",
.bustype = BUS_SPI,
- .manufacture_id = EON_ID_NOPREFIX,
- .model_id = EON_EN25S20,
.total_size = 256,
.page_size = 256,
/* OTP: 256B total; enter 0x3A */
.feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP,
.tested = TEST_UNTESTED,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {EON_ID_NOPREFIX, EON_EN25S20} } },
.probe_timing = TIMING_ZERO,
.block_erasers = {
{
@@ -4520,14 +4261,12 @@
.vendor = "Eon",
.name = "EN25S40",
.bustype = BUS_SPI,
- .manufacture_id = EON_ID_NOPREFIX,
- .model_id = EON_EN25S40,
.total_size = 512,
.page_size = 256,
/* OTP: 256B total; enter 0x3A */
.feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP,
.tested = TEST_UNTESTED,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {EON_ID_NOPREFIX, EON_EN25S40} } },
.probe_timing = TIMING_ZERO,
.block_erasers = {
{
@@ -4555,14 +4294,12 @@
.vendor = "Eon",
.name = "EN25S80",
.bustype = BUS_SPI,
- .manufacture_id = EON_ID_NOPREFIX,
- .model_id = EON_EN25S80,
.total_size = 1024,
.page_size = 256,
/* OTP: 256B total; enter 0x3A */
.feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP,
.tested = TEST_UNTESTED,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {EON_ID_NOPREFIX, EON_EN25S80} } },
.probe_timing = TIMING_ZERO,
.block_erasers = {
{
@@ -4590,14 +4327,12 @@
.vendor = "Eon",
.name = "EN25S16",
.bustype = BUS_SPI,
- .manufacture_id = EON_ID_NOPREFIX,
- .model_id = EON_EN25S16,
.total_size = 2048,
.page_size = 256,
/* OTP: 512B total; enter 0x3A */
.feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_QPI,
.tested = TEST_UNTESTED,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {EON_ID_NOPREFIX, EON_EN25S16} } },
.probe_timing = TIMING_ZERO,
.block_erasers = {
{
@@ -4628,14 +4363,12 @@
.vendor = "Eon",
.name = "EN25S32",
.bustype = BUS_SPI,
- .manufacture_id = EON_ID_NOPREFIX,
- .model_id = EON_EN25S32,
.total_size = 4096,
.page_size = 256,
/* OTP: 512B total; enter 0x3A */
.feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_QPI,
.tested = TEST_UNTESTED,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {EON_ID_NOPREFIX, EON_EN25S32} } },
.probe_timing = TIMING_ZERO,
.block_erasers = {
{
@@ -4666,14 +4399,12 @@
.vendor = "Eon",
.name = "EN25S64",
.bustype = BUS_SPI,
- .manufacture_id = EON_ID_NOPREFIX,
- .model_id = EON_EN25S64,
.total_size = 8192,
.page_size = 256,
/* OTP: 512B total; enter 0x3A */
.feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_QPI,
.tested = TEST_UNTESTED,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {EON_ID_NOPREFIX, EON_EN25S64} } },
.probe_timing = TIMING_ZERO,
.block_erasers = {
{
@@ -4701,13 +4432,11 @@
.vendor = "Eon",
.name = "EN29F010",
.bustype = BUS_PARALLEL,
- .manufacture_id = EON_ID,
- .model_id = EON_EN29F010,
.total_size = 128,
.page_size = 128,
.feature_bits = FEATURE_ADDR_2AA | FEATURE_EITHER_RESET,
.tested = TEST_OK_PRE,
- .probe = probe_jedec,
+ {probe_jedec, {3, {EON_ID, EON_EN29F010} } },
.probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */
.block_erasers =
{
@@ -4729,13 +4458,11 @@
.vendor = "Eon",
.name = "EN29F002(A)(N)B",
.bustype = BUS_PARALLEL,
- .manufacture_id = EON_ID,
- .model_id = EON_EN29F002B,
.total_size = 256,
.page_size = 256,
.feature_bits = FEATURE_ADDR_AAA | FEATURE_EITHER_RESET,
.tested = TEST_OK_PR,
- .probe = probe_jedec,
+ {probe_jedec, {4, {EON_ID, EON_EN29F002B} } },
.probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */
.block_erasers =
{
@@ -4761,13 +4488,11 @@
.vendor = "Eon",
.name = "EN29F002(A)(N)T",
.bustype = BUS_PARALLEL,
- .manufacture_id = EON_ID,
- .model_id = EON_EN29F002T,
.total_size = 256,
.page_size = 256,
.feature_bits = FEATURE_ADDR_AAA | FEATURE_EITHER_RESET,
.tested = TEST_OK_PREW,
- .probe = probe_jedec,
+ {probe_jedec, {4, {EON_ID, EON_EN29F002T} } },
.probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */
.block_erasers =
{
@@ -4793,13 +4518,11 @@
.vendor = "Eon",
.name = "EN29LV640B",
.bustype = BUS_PARALLEL,
- .manufacture_id = EON_ID,
- .model_id = EON_EN29LV640B,
.total_size = 8192,
.page_size = 8192,
.feature_bits = 0,
.tested = TEST_OK_PREW,
- .probe = probe_en29lv640b,
+ {probe_en29lv640b, {3, {EON_ID, EON_EN29LV640B} } },
.probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */
.block_erasers =
{
@@ -4823,13 +4546,11 @@
.vendor = "Fujitsu",
.name = "MBM29F004BC",
.bustype = BUS_PARALLEL,
- .manufacture_id = FUJITSU_ID,
- .model_id = FUJITSU_MBM29F004BC,
.total_size = 512,
.page_size = 64 * 1024,
.feature_bits = FEATURE_ADDR_2AA | FEATURE_EITHER_RESET,
.tested = TEST_UNTESTED,
- .probe = probe_jedec,
+ {probe_jedec, {2, {FUJITSU_ID, FUJITSU_MBM29F004BC} } },
.probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */
.block_erasers =
{
@@ -4855,13 +4576,11 @@
.vendor = "Fujitsu",
.name = "MBM29F004TC",
.bustype = BUS_PARALLEL,
- .manufacture_id = FUJITSU_ID,
- .model_id = FUJITSU_MBM29F004TC,
.total_size = 512,
.page_size = 64 * 1024,
.feature_bits = FEATURE_ADDR_2AA | FEATURE_EITHER_RESET,
.tested = TEST_UNTESTED,
- .probe = probe_jedec,
+ {probe_jedec, {2, {FUJITSU_ID, FUJITSU_MBM29F004TC} } },
.probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */
.block_erasers =
{
@@ -4888,13 +4607,11 @@
.vendor = "Fujitsu",
.name = "MBM29F400BC",
.bustype = BUS_PARALLEL,
- .manufacture_id = FUJITSU_ID,
- .model_id = FUJITSU_MBM29F400BC,
.total_size = 512,
.page_size = 64 * 1024,
.feature_bits = FEATURE_ADDR_SHIFTED | FEATURE_EITHER_RESET,
.tested = TEST_UNTESTED,
- .probe = probe_m29f400bt,
+ {probe_m29f400bt, {2, {FUJITSU_ID, FUJITSU_MBM29F400BC} } },
.probe_timing = TIMING_IGNORED, /* routine doesn't use probe_timing (m29f400bt.c) */
.block_erasers =
{
@@ -4920,13 +4637,11 @@
.vendor = "Fujitsu",
.name = "MBM29F400TC",
.bustype = BUS_PARALLEL,
- .manufacture_id = FUJITSU_ID,
- .model_id = FUJITSU_MBM29F400TC,
.total_size = 512,
.page_size = 64 * 1024,
.feature_bits = FEATURE_ADDR_SHIFTED | FEATURE_EITHER_RESET,
.tested = TEST_UNTESTED,
- .probe = probe_m29f400bt,
+ {probe_m29f400bt, {2, {FUJITSU_ID, FUJITSU_MBM29F400TC} } },
.probe_timing = TIMING_IGNORED, /* routine doesn't use probe_timing (m29f400bt.c) */
.block_erasers =
{
@@ -4952,13 +4667,11 @@
.vendor = "Fujitsu",
.name = "MBM29LV160BE",
.bustype = BUS_PARALLEL,
- .manufacture_id = FUJITSU_ID,
- .model_id = FUJITSU_MBM29LV160BE,
.total_size = 2 * 1024,
.page_size = 0,
.feature_bits = FEATURE_ADDR_SHIFTED | FEATURE_SHORT_RESET,
.tested = TEST_UNTESTED,
- .probe = probe_m29f400bt,
+ {probe_m29f400bt, {2, {FUJITSU_ID, FUJITSU_MBM29LV160BE} } },
.probe_timing = TIMING_IGNORED,
.block_erasers =
{
@@ -4984,13 +4697,11 @@
.vendor = "Fujitsu",
.name = "MBM29LV160TE",
.bustype = BUS_PARALLEL,
- .manufacture_id = FUJITSU_ID,
- .model_id = FUJITSU_MBM29LV160TE,
.total_size = 2 * 1024,
.page_size = 0,
.feature_bits = FEATURE_ADDR_SHIFTED | FEATURE_SHORT_RESET,
.tested = TEST_UNTESTED,
- .probe = probe_m29f400bt,
+ {probe_m29f400bt, {2, {FUJITSU_ID, FUJITSU_MBM29LV160TE} } },
.probe_timing = TIMING_IGNORED,
.block_erasers =
{
@@ -5016,14 +4727,12 @@
.vendor = "GigaDevice",
.name = "GD25LQ32",
.bustype = BUS_SPI,
- .manufacture_id = GIGADEVICE_ID,
- .model_id = GIGADEVICE_GD25LQ32,
.total_size = 4096,
.page_size = 256,
/* OTP: 1024B total, 256B reserved; read 0x48; write 0x42, erase 0x44 */
.feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP,
.tested = TEST_OK_PREW,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {GIGADEVICE_ID, GIGADEVICE_GD25LQ32} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -5055,13 +4764,11 @@
.vendor = "GigaDevice",
.name = "GD25Q512",
.bustype = BUS_SPI,
- .manufacture_id = GIGADEVICE_ID,
- .model_id = GIGADEVICE_GD25Q512,
.total_size = 64,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_UNTESTED,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {GIGADEVICE_ID, GIGADEVICE_GD25Q512} } },
.probe_timing = TIMING_ZERO,
.block_erasers = {
{
@@ -5089,13 +4796,11 @@
.vendor = "GigaDevice",
.name = "GD25Q10",
.bustype = BUS_SPI,
- .manufacture_id = GIGADEVICE_ID,
- .model_id = GIGADEVICE_GD25Q10,
.total_size = 128,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_UNTESTED,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {GIGADEVICE_ID, GIGADEVICE_GD25Q10} } },
.probe_timing = TIMING_ZERO,
.block_erasers = {
{
@@ -5126,13 +4831,11 @@
.vendor = "GigaDevice",
.name = "GD25Q20(B)",
.bustype = BUS_SPI,
- .manufacture_id = GIGADEVICE_ID,
- .model_id = GIGADEVICE_GD25Q20,
.total_size = 256,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_UNTESTED,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {GIGADEVICE_ID, GIGADEVICE_GD25Q20} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -5164,13 +4867,11 @@
.vendor = "GigaDevice",
.name = "GD25Q40(B)",
.bustype = BUS_SPI,
- .manufacture_id = GIGADEVICE_ID,
- .model_id = GIGADEVICE_GD25Q40,
.total_size = 512,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_UNTESTED,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {GIGADEVICE_ID, GIGADEVICE_GD25Q40} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -5202,14 +4903,12 @@
.vendor = "GigaDevice",
.name = "GD25Q80(B)",
.bustype = BUS_SPI,
- .manufacture_id = GIGADEVICE_ID,
- .model_id = GIGADEVICE_GD25Q80,
.total_size = 1024,
.page_size = 256,
/* OTP: 1024B total, 256B reserved; read 0x48; write 0x42, erase 0x44 (B version only) */
.feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP,
.tested = TEST_OK_PREW,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {GIGADEVICE_ID, GIGADEVICE_GD25Q80} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -5241,14 +4940,12 @@
.vendor = "GigaDevice",
.name = "GD25Q16(B)",
.bustype = BUS_SPI,
- .manufacture_id = GIGADEVICE_ID,
- .model_id = GIGADEVICE_GD25Q16,
.total_size = 2048,
.page_size = 256,
/* OTP: 1024B total, 256B reserved; read 0x48; write 0x42, erase 0x44 (B version only) */
.feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP,
.tested = TEST_UNTESTED,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {GIGADEVICE_ID, GIGADEVICE_GD25Q16} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -5280,14 +4977,12 @@
.vendor = "GigaDevice",
.name = "GD25Q32(B)",
.bustype = BUS_SPI,
- .manufacture_id = GIGADEVICE_ID,
- .model_id = GIGADEVICE_GD25Q32,
.total_size = 4096,
.page_size = 256,
/* OTP: 1024B total, 256B reserved; read 0x48; write 0x42, erase 0x44 */
.feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP,
.tested = TEST_OK_PREW,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {GIGADEVICE_ID, GIGADEVICE_GD25Q32} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -5319,14 +5014,12 @@
.vendor = "GigaDevice",
.name = "GD25Q64(B)",
.bustype = BUS_SPI,
- .manufacture_id = GIGADEVICE_ID,
- .model_id = GIGADEVICE_GD25Q64,
.total_size = 8192,
.page_size = 256,
/* OTP: 1024B total, 256B reserved; read 0x48; write 0x42, erase 0x44 */
.feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP,
.tested = TEST_OK_PREW,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {GIGADEVICE_ID, GIGADEVICE_GD25Q64} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -5358,14 +5051,12 @@
.vendor = "GigaDevice",
.name = "GD25Q128B",
.bustype = BUS_SPI,
- .manufacture_id = GIGADEVICE_ID,
- .model_id = GIGADEVICE_GD25Q128,
.total_size = 16384,
.page_size = 256,
/* OTP: 1024B total, 256B reserved; read 0x48; write 0x42, erase 0x44 */
.feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP,
.tested = TEST_UNTESTED,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {GIGADEVICE_ID, GIGADEVICE_GD25Q128} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -5397,14 +5088,12 @@
.vendor = "GigaDevice",
.name = "GD25T80",
.bustype = BUS_SPI,
- .manufacture_id = GIGADEVICE_ID,
- .model_id = GIGADEVICE_GD25T80,
.total_size = 1024,
.page_size = 256,
/* OTP: 256B total; enter 0x3A */
.feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP,
.tested = TEST_UNTESTED,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {GIGADEVICE_ID, GIGADEVICE_GD25T80} } },
.probe_timing = TIMING_ZERO,
.block_erasers = {
{
@@ -5435,13 +5124,11 @@
.vendor = "Hyundai",
.name = "HY29F002T",
.bustype = BUS_PARALLEL,
- .manufacture_id = HYUNDAI_ID,
- .model_id = HYUNDAI_HY29F002T,
.total_size = 256,
.page_size = 256 * 1024,
.feature_bits = FEATURE_EITHER_RESET, /* Some revisions may need FEATURE_ADDR_2AA */
.tested = TEST_OK_PRE,
- .probe = probe_jedec,
+ {probe_jedec, {2, {HYUNDAI_ID, HYUNDAI_HY29F002T} } },
.probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */
.block_erasers =
{
@@ -5467,13 +5154,11 @@
.vendor = "Hyundai",
.name = "HY29F002B",
.bustype = BUS_PARALLEL,
- .manufacture_id = HYUNDAI_ID,
- .model_id = HYUNDAI_HY29F002B,
.total_size = 256,
.page_size = 256 * 1024,
.feature_bits = FEATURE_EITHER_RESET, /* Some revisions may need FEATURE_ADDR_2AA */
.tested = TEST_UNTESTED,
- .probe = probe_jedec,
+ {probe_jedec, {2, {HYUNDAI_ID, HYUNDAI_HY29F002B} } },
.probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */
.block_erasers =
{
@@ -5499,13 +5184,11 @@
.vendor = "Hyundai",
.name = "HY29F040A",
.bustype = BUS_PARALLEL,
- .manufacture_id = HYUNDAI_ID,
- .model_id = HYUNDAI_HY29F040A,
.total_size = 512,
.page_size = 64 * 1024,
.feature_bits = FEATURE_ADDR_2AA | FEATURE_EITHER_RESET,
.tested = TEST_UNTESTED,
- .probe = probe_jedec,
+ {probe_jedec, {2, {HYUNDAI_ID, HYUNDAI_HY29F040A} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -5526,14 +5209,12 @@
.vendor = "Intel",
.name = "25F160S33B8",
.bustype = BUS_SPI,
- .manufacture_id = INTEL_ID,
- .model_id = INTEL_25F160S33B8,
.total_size = 2048,
.page_size = 256,
/* OTP: 506B total (2x 8B, 30x 16B, 1x 10B); read 0x4B; write 0x42 */
.feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP,
.tested = TEST_UNTESTED,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {INTEL_ID, INTEL_25F160S33B8} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -5565,14 +5246,12 @@
.vendor = "Intel",
.name = "25F160S33T8",
.bustype = BUS_SPI,
- .manufacture_id = INTEL_ID,
- .model_id = INTEL_25F160S33T8,
.total_size = 2048,
.page_size = 256,
/* OTP: 506B total (2x 8B, 30x 16B, 1x 10B); read 0x4B; write 0x42 */
.feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP,
.tested = TEST_UNTESTED,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {INTEL_ID, INTEL_25F160S33T8} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -5604,14 +5283,12 @@
.vendor = "Intel",
.name = "25F320S33B8",
.bustype = BUS_SPI,
- .manufacture_id = INTEL_ID,
- .model_id = INTEL_25F320S33B8,
.total_size = 4096,
.page_size = 256,
/* OTP: 506B total (2x 8B, 30x 16B, 1x 10B); read 0x4B; write 0x42 */
.feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP,
.tested = TEST_UNTESTED,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {INTEL_ID, INTEL_25F320S33B8} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -5643,14 +5320,12 @@
.vendor = "Intel",
.name = "25F320S33T8",
.bustype = BUS_SPI,
- .manufacture_id = INTEL_ID,
- .model_id = INTEL_25F320S33T8,
.total_size = 4096,
.page_size = 256,
/* OTP: 506B total (2x 8B, 30x 16B, 1x 10B); read 0x4B; write 0x42 */
.feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP,
.tested = TEST_UNTESTED,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {INTEL_ID, INTEL_25F320S33T8} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -5682,14 +5357,12 @@
.vendor = "Intel",
.name = "25F640S33B8",
.bustype = BUS_SPI,
- .manufacture_id = INTEL_ID,
- .model_id = INTEL_25F640S33B8,
.total_size = 8192,
.page_size = 256,
/* OTP: 506B total (2x 8B, 30x 16B, 1x 10B); read 0x4B; write 0x42 */
.feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP,
.tested = TEST_UNTESTED,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {INTEL_ID, INTEL_25F640S33B8} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -5721,14 +5394,12 @@
.vendor = "Intel",
.name = "25F640S33T8",
.bustype = BUS_SPI,
- .manufacture_id = INTEL_ID,
- .model_id = INTEL_25F640S33T8,
.total_size = 8192,
.page_size = 256,
/* OTP: 506B total (2x 8B, 30x 16B, 1x 10B); read 0x4B; write 0x42 */
.feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP,
.tested = TEST_UNTESTED,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {INTEL_ID, INTEL_25F640S33T8} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -5760,12 +5431,11 @@
.vendor = "Intel",
.name = "28F001BN/BX-B",
.bustype = BUS_PARALLEL,
- .manufacture_id = INTEL_ID,
- .model_id = INTEL_28F001B,
.total_size = 128,
.page_size = 128 * 1024, /* 8k + 2x4k + 112k */
+ .feature_bits = 0,
.tested = TEST_UNTESTED,
- .probe = probe_jedec,
+ {probe_jedec, {2, {INTEL_ID, INTEL_28F001B} } },
.probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */
.block_erasers =
{
@@ -5787,12 +5457,11 @@
.vendor = "Intel",
.name = "28F001BN/BX-T",
.bustype = BUS_PARALLEL,
- .manufacture_id = INTEL_ID,
- .model_id = INTEL_28F001T,
.total_size = 128,
.page_size = 128 * 1024, /* 112k + 2x4k + 8k */
+ .feature_bits = 0,
.tested = TEST_OK_PR,
- .probe = probe_jedec,
+ {probe_jedec, {2, {INTEL_ID, INTEL_28F001T} } },
.probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */
.block_erasers =
{
@@ -5814,12 +5483,11 @@
.vendor = "Intel",
.name = "28F002BC/BL/BV/BX-T",
.bustype = BUS_PARALLEL,
- .manufacture_id = INTEL_ID,
- .model_id = INTEL_28F002T,
.total_size = 256,
.page_size = 256 * 1024,
+ .feature_bits = 0,
.tested = TEST_OK_PRE,
- .probe = probe_82802ab,
+ {probe_82802ab, {2, {INTEL_ID, INTEL_28F002T} } },
.probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */
.block_erasers =
{
@@ -5841,12 +5509,11 @@
.vendor = "Intel",
.name = "28F008S3/S5/SC",
.bustype = BUS_PARALLEL,
- .manufacture_id = INTEL_ID,
- .model_id = INTEL_28F004S3,
.total_size = 512,
.page_size = 256,
+ .feature_bits = 0,
.tested = TEST_UNTESTED,
- .probe = probe_82802ab,
+ {probe_82802ab, {2, {INTEL_ID, INTEL_28F004S3} } },
.probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */
.block_erasers =
{
@@ -5864,12 +5531,11 @@
.vendor = "Intel",
.name = "28F004B5/BE/BV/BX-B",
.bustype = BUS_PARALLEL,
- .manufacture_id = INTEL_ID,
- .model_id = INTEL_28F004B,
.total_size = 512,
.page_size = 128 * 1024, /* maximal block size */
+ .feature_bits = 0,
.tested = TEST_UNTESTED,
- .probe = probe_82802ab,
+ {probe_82802ab, {2, {INTEL_ID, INTEL_28F004B} } },
.probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */
.block_erasers =
{
@@ -5891,12 +5557,11 @@
.vendor = "Intel",
.name = "28F004B5/BE/BV/BX-T",
.bustype = BUS_PARALLEL,
- .manufacture_id = INTEL_ID,
- .model_id = INTEL_28F004T,
.total_size = 512,
.page_size = 128 * 1024, /* maximal block size */
+ .feature_bits = 0,
.tested = TEST_UNTESTED,
- .probe = probe_82802ab,
+ {probe_82802ab, {2, {INTEL_ID, INTEL_28F004T} } },
.probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */
.block_erasers =
{
@@ -5918,13 +5583,11 @@
.vendor = "Intel",
.name = "28F400BV/BX/CE/CV-B",
.bustype = BUS_PARALLEL,
- .manufacture_id = INTEL_ID,
- .model_id = INTEL_28F400B,
.total_size = 512,
.page_size = 128 * 1024, /* maximal block size */
.feature_bits = FEATURE_ADDR_SHIFTED,
.tested = TEST_UNTESTED,
- .probe = probe_82802ab,
+ {probe_82802ab, {2, {INTEL_ID, INTEL_28F400B} } },
.probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */
.block_erasers =
{
@@ -5946,13 +5609,11 @@
.vendor = "Intel",
.name = "28F400BV/BX/CE/CV-T",
.bustype = BUS_PARALLEL,
- .manufacture_id = INTEL_ID,
- .model_id = INTEL_28F400T,
.total_size = 512,
.page_size = 128 * 1024, /* maximal block size */
.feature_bits = FEATURE_ADDR_SHIFTED,
.tested = TEST_UNTESTED,
- .probe = probe_82802ab,
+ {probe_82802ab, {2, {INTEL_ID, INTEL_28F400T} } },
.probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */
.block_erasers =
{
@@ -5974,13 +5635,11 @@
.vendor = "Intel",
.name = "82802AB",
.bustype = BUS_FWH,
- .manufacture_id = INTEL_ID,
- .model_id = INTEL_82802AB,
.total_size = 512,
.page_size = 64 * 1024,
.feature_bits = FEATURE_REGISTERMAP,
.tested = TEST_OK_PREW,
- .probe = probe_82802ab,
+ {probe_82802ab, {2, {INTEL_ID, INTEL_82802AB} } },
.probe_timing = TIMING_IGNORED, /* routine does not use probe_timing (82802ab.c) */
.block_erasers =
{
@@ -5999,13 +5658,11 @@
.vendor = "Intel",
.name = "82802AC",
.bustype = BUS_FWH,
- .manufacture_id = INTEL_ID,
- .model_id = INTEL_82802AC,
.total_size = 1024,
.page_size = 64 * 1024,
.feature_bits = FEATURE_REGISTERMAP,
.tested = TEST_OK_PR,
- .probe = probe_82802ab,
+ {probe_82802ab, {2, {INTEL_ID, INTEL_82802AC} } },
.probe_timing = TIMING_IGNORED, /* routine does not use probe_timing (82802ab.c) */
.block_erasers =
{
@@ -6024,12 +5681,11 @@
.vendor = "Macronix",
.name = "MX23L3254",
.bustype = BUS_SPI,
- .manufacture_id = MACRONIX_ID,
- .model_id = MACRONIX_MX23L3254,
.total_size = 4096,
.page_size = 256,
+ .feature_bits = 0,
.tested = {.probe = OK, .read = OK, .erase = NA, .write = NA},
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {MACRONIX_ID, MACRONIX_MX23L3254} } },
.probe_timing = TIMING_ZERO,
.write = NULL, /* MX23L3254 is a mask ROM, so it is read-only */
.read = spi_chip_read, /* Fast read (0x0B) supported */
@@ -6040,14 +5696,12 @@
.vendor = "Macronix",
.name = "MX25L512(E)/MX25V512(C)",
.bustype = BUS_SPI,
- .manufacture_id = MACRONIX_ID,
- .model_id = MACRONIX_MX25L512,
.total_size = 64,
.page_size = 256,
/* MX25L512E supports SFDP */
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_OK_PREW,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {MACRONIX_ID, MACRONIX_MX25L512} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -6079,14 +5733,12 @@
.vendor = "Macronix",
.name = "MX25L1005(C)/MX25L1006E",
.bustype = BUS_SPI,
- .manufacture_id = MACRONIX_ID,
- .model_id = MACRONIX_MX25L1005,
.total_size = 128,
.page_size = 256,
/* MX25L1006E supports SFDP */
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_OK_PREW,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {MACRONIX_ID, MACRONIX_MX25L1005} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -6115,13 +5767,11 @@
.vendor = "Macronix",
.name = "MX25L2005(C)",
.bustype = BUS_SPI,
- .manufacture_id = MACRONIX_ID,
- .model_id = MACRONIX_MX25L2005,
.total_size = 256,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_OK_PREW,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {MACRONIX_ID, MACRONIX_MX25L2005} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -6153,13 +5803,11 @@
.vendor = "Macronix",
.name = "MX25L4005(A/C)",
.bustype = BUS_SPI,
- .manufacture_id = MACRONIX_ID,
- .model_id = MACRONIX_MX25L4005,
.total_size = 512,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_OK_PREW,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {MACRONIX_ID, MACRONIX_MX25L4005} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -6191,13 +5839,11 @@
.vendor = "Macronix",
.name = "MX25L8005/MX25V8005",
.bustype = BUS_SPI,
- .manufacture_id = MACRONIX_ID,
- .model_id = MACRONIX_MX25L8005,
.total_size = 1024,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_OK_PREW,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {MACRONIX_ID, MACRONIX_MX25L8005} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -6229,13 +5875,11 @@
.vendor = "Macronix",
.name = "MX25L1605",
.bustype = BUS_SPI,
- .manufacture_id = MACRONIX_ID,
- .model_id = MACRONIX_MX25L1605,
.total_size = 2048,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_OK_PREW,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {MACRONIX_ID, MACRONIX_MX25L1605} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -6264,14 +5908,12 @@
.vendor = "Macronix",
.name = "MX25L1605A/MX25L1606E",
.bustype = BUS_SPI,
- .manufacture_id = MACRONIX_ID,
- .model_id = MACRONIX_MX25L1605,
.total_size = 2048,
.page_size = 256,
/* OTP: 64B total; enter 0xB1, exit 0xC1 (MX25L1606E only) */
.feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP,
.tested = TEST_OK_PREW,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {MACRONIX_ID, MACRONIX_MX25L1605} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -6303,13 +5945,11 @@
.vendor = "Macronix",
.name = "MX25L1605D/MX25L1608D/MX25L1673E",
.bustype = BUS_SPI,
- .manufacture_id = MACRONIX_ID,
- .model_id = MACRONIX_MX25L1605,
.total_size = 2048,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_OK_PREW,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {MACRONIX_ID, MACRONIX_MX25L1605} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -6338,14 +5978,12 @@
.vendor = "Macronix",
.name = "MX25L1635D",
.bustype = BUS_SPI,
- .manufacture_id = MACRONIX_ID,
- .model_id = MACRONIX_MX25L1635D,
.total_size = 2048,
.page_size = 256,
/* OTP: 64B total; enter 0xB1, exit 0xC1 */
.feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP,
.tested = TEST_UNTESTED,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {MACRONIX_ID, MACRONIX_MX25L1635D} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -6374,14 +6012,12 @@
.vendor = "Macronix",
.name = "MX25L1635E",
.bustype = BUS_SPI,
- .manufacture_id = MACRONIX_ID,
- .model_id = MACRONIX_MX25L1635E,
.total_size = 2048,
.page_size = 256,
/* OTP: 64B total; enter 0xB1, exit 0xC1 */
.feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP,
.tested = TEST_UNTESTED,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {MACRONIX_ID, MACRONIX_MX25L1635E} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -6410,13 +6046,11 @@
.vendor = "Macronix",
.name = "MX25L3205(A)",
.bustype = BUS_SPI,
- .manufacture_id = MACRONIX_ID,
- .model_id = MACRONIX_MX25L3205,
.total_size = 4096,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_OK_PREW,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {MACRONIX_ID, MACRONIX_MX25L3205} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -6445,14 +6079,12 @@
.vendor = "Macronix",
.name = "MX25L3205D/MX25L3208D",
.bustype = BUS_SPI,
- .manufacture_id = MACRONIX_ID,
- .model_id = MACRONIX_MX25L3205,
.total_size = 4096,
.page_size = 256,
/* OTP: 64B total; enter 0xB1, exit 0xC1 */
.feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP,
.tested = TEST_OK_PREW,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {MACRONIX_ID, MACRONIX_MX25L3205} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -6481,14 +6113,12 @@
.vendor = "Macronix",
.name = "MX25L3206E",
.bustype = BUS_SPI,
- .manufacture_id = MACRONIX_ID,
- .model_id = MACRONIX_MX25L3205,
.total_size = 4096,
.page_size = 256,
/* OTP: 64B total; enter 0xB1, exit 0xC1 */
.feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP,
.tested = TEST_OK_PREW,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {MACRONIX_ID, MACRONIX_MX25L3205} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -6520,14 +6150,12 @@
.vendor = "Macronix",
.name = "MX25L3273E",
.bustype = BUS_SPI,
- .manufacture_id = MACRONIX_ID,
- .model_id = MACRONIX_MX25L3205,
.total_size = 4096,
.page_size = 256,
/* OTP: 64B total; enter 0xB1, exit 0xC1 */
.feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP,
.tested = TEST_UNTESTED,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {MACRONIX_ID, MACRONIX_MX25L3205} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -6559,14 +6187,12 @@
.vendor = "Macronix",
.name = "MX25L3235D",
.bustype = BUS_SPI,
- .manufacture_id = MACRONIX_ID,
- .model_id = MACRONIX_MX25L3235D,
.total_size = 4096,
.page_size = 256,
/* OTP: 256B total; enter 0xB1, exit 0xC1 */
.feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP,
.tested = TEST_UNTESTED,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {MACRONIX_ID, MACRONIX_MX25L3235D} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -6595,14 +6221,12 @@
.vendor = "Macronix",
.name = "MX25L6405(D)",
.bustype = BUS_SPI,
- .manufacture_id = MACRONIX_ID,
- .model_id = MACRONIX_MX25L6405,
.total_size = 8192,
.page_size = 256,
/* MX25L6405D has 64B of OTP; enter 0xB1, exit 0xC1 */
.feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP,
.tested = TEST_OK_PREW,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {MACRONIX_ID, MACRONIX_MX25L6405} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -6631,14 +6255,12 @@
.vendor = "Macronix",
.name = "MX25L6406E/MX25L6436E",
.bustype = BUS_SPI,
- .manufacture_id = MACRONIX_ID,
- .model_id = MACRONIX_MX25L6405,
.total_size = 8192,
.page_size = 256,
/* OTP: 06E 64B/36E 512B total; enter 0xB1, exit 0xC1 */
.feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP,
.tested = TEST_OK_PREW,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {MACRONIX_ID, MACRONIX_MX25L6405} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -6667,15 +6289,13 @@
.vendor = "Macronix",
.name = "MX25L6445E/MX25L6473E",
.bustype = BUS_SPI,
- .manufacture_id = MACRONIX_ID,
- .model_id = MACRONIX_MX25L6405,
.total_size = 8192,
.page_size = 256,
/* supports SFDP */
/* OTP: 512B total; enter 0xB1, exit 0xC1 */
.feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP,
.tested = TEST_OK_PREW,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {MACRONIX_ID, MACRONIX_MX25L6405} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -6707,14 +6327,12 @@
.vendor = "Macronix",
.name = "MX25L12805(D)",
.bustype = BUS_SPI,
- .manufacture_id = MACRONIX_ID,
- .model_id = MACRONIX_MX25L12805,
.total_size = 16384,
.page_size = 256,
/* MX25L12805D has 64B of OTP; enter 0xB1, exit 0xC1 */
.feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP,
.tested = TEST_OK_PREW,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {MACRONIX_ID, MACRONIX_MX25L12805} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -6743,15 +6361,13 @@
.vendor = "Macronix",
.name = "MX25U1635E",
.bustype = BUS_SPI,
- .manufacture_id = MACRONIX_ID,
- .model_id = MACRONIX_MX25U1635E,
.total_size = 2048,
.page_size = 256,
/* OTP: 512B total; enter 0xB1, exit 0xC1 */
/* QPI enable 0x35, disable 0xF5 (0xFF et al. work too) */
.feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_QPI,
.tested = TEST_UNTESTED,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {MACRONIX_ID, MACRONIX_MX25U1635E} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -6784,8 +6400,6 @@
.vendor = "Macronix",
.name = "MX25U3235E/F",
.bustype = BUS_SPI,
- .manufacture_id = MACRONIX_ID,
- .model_id = MACRONIX_MX25U3235E,
.total_size = 4096,
.page_size = 256,
/* F model supports SFDP */
@@ -6793,7 +6407,7 @@
/* QPI enable 0x35, disable 0xF5 (0xFF et al. work too) */
.feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_QPI,
.tested = TEST_OK_PREW,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {MACRONIX_ID, MACRONIX_MX25U3235E} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -6826,8 +6440,6 @@
.vendor = "Macronix",
.name = "MX25U6435E/F",
.bustype = BUS_SPI,
- .manufacture_id = MACRONIX_ID,
- .model_id = MACRONIX_MX25U6435E,
.total_size = 8192,
.page_size = 256,
/* F model supports SFDP */
@@ -6835,7 +6447,7 @@
/* QPI enable 0x35, disable 0xF5 (0xFF et al. work too) */
.feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_QPI,
.tested = TEST_UNTESTED,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {MACRONIX_ID, MACRONIX_MX25U6435E} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -6868,13 +6480,11 @@
.vendor = "Macronix",
.name = "MX29F001B",
.bustype = BUS_PARALLEL,
- .manufacture_id = MACRONIX_ID,
- .model_id = MACRONIX_MX29F001B,
.total_size = 128,
.page_size = 32 * 1024,
.feature_bits = FEATURE_ADDR_2AA | FEATURE_SHORT_RESET,
.tested = TEST_UNTESTED,
- .probe = probe_jedec,
+ {probe_jedec, {2, {MACRONIX_ID, MACRONIX_MX29F001B} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -6901,13 +6511,11 @@
.vendor = "Macronix",
.name = "MX29F001T",
.bustype = BUS_PARALLEL,
- .manufacture_id = MACRONIX_ID,
- .model_id = MACRONIX_MX29F001T,
.total_size = 128,
.page_size = 32 * 1024,
.feature_bits = FEATURE_ADDR_2AA | FEATURE_SHORT_RESET,
.tested = TEST_OK_PREW,
- .probe = probe_jedec,
+ {probe_jedec, {2, {MACRONIX_ID, MACRONIX_MX29F001T} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -6934,13 +6542,11 @@
.vendor = "Macronix",
.name = "MX29F002(N)B",
.bustype = BUS_PARALLEL,
- .manufacture_id = MACRONIX_ID,
- .model_id = MACRONIX_MX29F002B,
.total_size = 256,
.page_size = 64 * 1024,
.feature_bits = FEATURE_ADDR_2AA | FEATURE_SHORT_RESET,
.tested = TEST_UNTESTED,
- .probe = probe_jedec,
+ {probe_jedec, {2, {MACRONIX_ID, MACRONIX_MX29F002B} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -6966,13 +6572,11 @@
.vendor = "Macronix",
.name = "MX29F002(N)T",
.bustype = BUS_PARALLEL,
- .manufacture_id = MACRONIX_ID,
- .model_id = MACRONIX_MX29F002T,
.total_size = 256,
.page_size = 64 * 1024,
.feature_bits = FEATURE_ADDR_2AA | FEATURE_SHORT_RESET,
.tested = TEST_OK_PREW,
- .probe = probe_jedec,
+ {probe_jedec, {2, {MACRONIX_ID, MACRONIX_MX29F002T} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -6998,13 +6602,11 @@
.vendor = "Macronix",
.name = "MX29F040",
.bustype = BUS_PARALLEL,
- .manufacture_id = MACRONIX_ID,
- .model_id = MACRONIX_MX29F040,
.total_size = 512,
.page_size = 64 * 1024,
.feature_bits = FEATURE_ADDR_2AA | FEATURE_SHORT_RESET,
.tested = TEST_UNTESTED,
- .probe = probe_jedec,
+ {probe_jedec, {2, {MACRONIX_ID, MACRONIX_MX29F040} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -7025,13 +6627,11 @@
.vendor = "Macronix",
.name = "MX29LV040",
.bustype = BUS_PARALLEL,
- .manufacture_id = MACRONIX_ID,
- .model_id = MACRONIX_MX29LV040,
.total_size = 512,
.page_size = 64 * 1024,
.feature_bits = FEATURE_ADDR_2AA | FEATURE_SHORT_RESET,
.tested = TEST_UNTESTED,
- .probe = probe_jedec,
+ {probe_jedec, {2, {MACRONIX_ID, MACRONIX_MX29LV040} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -7052,13 +6652,11 @@
.vendor = "Micron/Numonyx/ST",
.name = "M25P05-A",
.bustype = BUS_SPI,
- .manufacture_id = ST_ID,
- .model_id = ST_M25P05A,
.total_size = 64,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_OK_PREW,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {ST_ID, ST_M25P05A} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -7086,13 +6684,11 @@
.vendor = "Micron/Numonyx/ST",
.name = "M25P05",
.bustype = BUS_SPI,
- .manufacture_id = 0, /* Not used. */
- .model_id = ST_M25P05_RES,
.total_size = 64,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_UNTESTED,
- .probe = probe_spi_res1,
+ {probe_spi_res1, {1, {ST_M25P05_RES} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -7115,13 +6711,11 @@
.vendor = "Micron/Numonyx/ST",
.name = "M25P10-A",
.bustype = BUS_SPI,
- .manufacture_id = ST_ID,
- .model_id = ST_M25P10A,
.total_size = 128,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_OK_PRE,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {ST_ID, ST_M25P10A} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -7145,13 +6739,11 @@
.vendor = "Micron/Numonyx/ST",
.name = "M25P10",
.bustype = BUS_SPI,
- .manufacture_id = 0, /* Not used. */
- .model_id = ST_M25P10_RES,
.total_size = 128,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_UNTESTED,
- .probe = probe_spi_res1,
+ {probe_spi_res1, {1, {ST_M25P10_RES} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -7174,13 +6766,11 @@
.vendor = "Micron/Numonyx/ST", /* Numonyx */
.name = "M25P20",
.bustype = BUS_SPI,
- .manufacture_id = ST_ID,
- .model_id = ST_M25P20,
.total_size = 256,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_UNTESTED,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {ST_ID, ST_M25P20} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -7203,13 +6793,11 @@
.vendor = "Micron/Numonyx/ST",
.name = "M25P20-old",
.bustype = BUS_SPI,
- .manufacture_id = 0, /* Not used. */
- .model_id = ST_M25P20_RES,
.total_size = 256,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_OK_PREW,
- .probe = probe_spi_res1,
+ {probe_spi_res1, {1, {ST_M25P20_RES} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -7232,13 +6820,11 @@
.vendor = "Micron/Numonyx/ST", /* Numonyx */
.name = "M25P40",
.bustype = BUS_SPI,
- .manufacture_id = ST_ID,
- .model_id = ST_M25P40,
.total_size = 512,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_OK_PREW,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {ST_ID, ST_M25P40} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -7261,13 +6847,11 @@
.vendor = "Micron/Numonyx/ST",
.name = "M25P40-old",
.bustype = BUS_SPI,
- .manufacture_id = 0, /* Not used. */
- .model_id = ST_M25P40_RES,
.total_size = 512,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_UNTESTED,
- .probe = probe_spi_res1,
+ {probe_spi_res1, {1, {ST_M25P40_RES} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -7289,13 +6873,11 @@
.vendor = "Micron/Numonyx/ST",
.name = "M25P80",
.bustype = BUS_SPI,
- .manufacture_id = ST_ID,
- .model_id = ST_M25P80,
.total_size = 1024,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_OK_PREW,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {ST_ID, ST_M25P80} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -7318,13 +6900,11 @@
.vendor = "Micron/Numonyx/ST",
.name = "M25P16",
.bustype = BUS_SPI,
- .manufacture_id = ST_ID,
- .model_id = ST_M25P16,
.total_size = 2048,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_OK_PREW,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {ST_ID, ST_M25P16} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -7347,13 +6927,11 @@
.vendor = "Micron/Numonyx/ST",
.name = "M25P32",
.bustype = BUS_SPI,
- .manufacture_id = ST_ID,
- .model_id = ST_M25P32,
.total_size = 4096,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_OK_PREW,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {ST_ID, ST_M25P32} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -7376,13 +6954,11 @@
.vendor = "Micron/Numonyx/ST",
.name = "M25P64",
.bustype = BUS_SPI,
- .manufacture_id = ST_ID,
- .model_id = ST_M25P64,
.total_size = 8192,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_OK_PREW,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {ST_ID, ST_M25P64} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -7405,13 +6981,11 @@
.vendor = "Micron/Numonyx/ST",
.name = "M25P128",
.bustype = BUS_SPI,
- .manufacture_id = ST_ID,
- .model_id = ST_M25P128,
.total_size = 16384,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_OK_PREW,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {ST_ID, ST_M25P128} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -7434,13 +7008,11 @@
.vendor = "Micron/Numonyx/ST",
.name = "M25PE10",
.bustype = BUS_SPI,
- .manufacture_id = ST_ID,
- .model_id = ST_M25PE10,
.total_size = 128,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_UNTESTED,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {ST_ID, ST_M25PE10} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -7466,13 +7038,11 @@
.vendor = "Micron/Numonyx/ST",
.name = "M25PE20",
.bustype = BUS_SPI,
- .manufacture_id = ST_ID,
- .model_id = ST_M25PE20,
.total_size = 256,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_UNTESTED,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {ST_ID, ST_M25PE20} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -7498,13 +7068,11 @@
.vendor = "Micron/Numonyx/ST",
.name = "M25PE40",
.bustype = BUS_SPI,
- .manufacture_id = ST_ID,
- .model_id = ST_M25PE40,
.total_size = 512,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_UNTESTED,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {ST_ID, ST_M25PE40} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -7530,13 +7098,11 @@
.vendor = "Micron/Numonyx/ST",
.name = "M25PE80",
.bustype = BUS_SPI,
- .manufacture_id = ST_ID,
- .model_id = ST_M25PE80,
.total_size = 1024,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_OK_PREW,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {ST_ID, ST_M25PE80} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -7562,13 +7128,11 @@
.vendor = "Micron/Numonyx/ST",
.name = "M25PE16",
.bustype = BUS_SPI,
- .manufacture_id = ST_ID,
- .model_id = ST_M25PE16,
.total_size = 2048,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_UNTESTED,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {ST_ID, ST_M25PE16} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -7594,14 +7158,12 @@
.vendor = "Micron/Numonyx/ST",
.name = "M25PX80",
.bustype = BUS_SPI,
- .manufacture_id = ST_ID,
- .model_id = ST_M25PX80,
.total_size = 1024,
.page_size = 256,
/* OTP: 64B total; read 0x4B, write 0x42 */
.feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP,
.tested = TEST_OK_PREW,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {ST_ID, ST_M25PX80} } },
.probe_timing = TIMING_ZERO,
.block_erasers = {
{
@@ -7626,14 +7188,12 @@
.vendor = "Micron/Numonyx/ST",
.name = "M25PX16",
.bustype = BUS_SPI,
- .manufacture_id = ST_ID,
- .model_id = ST_M25PX16,
.total_size = 2048,
.page_size = 256,
/* OTP: 64B total; read 0x4B; write 0x42 */
.feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP,
.tested = TEST_OK_PREW,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {ST_ID, ST_M25PX16} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -7659,14 +7219,12 @@
.vendor = "Micron/Numonyx/ST",
.name = "M25PX32",
.bustype = BUS_SPI,
- .manufacture_id = ST_ID,
- .model_id = ST_M25PX32,
.total_size = 4096,
.page_size = 256,
/* OTP: 64B total; read 0x4B; write 0x42 */
.feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP,
.tested = TEST_OK_PRE,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {ST_ID, ST_M25PX32} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -7692,14 +7250,12 @@
.vendor = "Micron/Numonyx/ST",
.name = "M25PX64",
.bustype = BUS_SPI,
- .manufacture_id = ST_ID,
- .model_id = ST_M25PX64,
.total_size = 8192,
.page_size = 256,
/* OTP: 64B total; read 0x4B; write 0x42 */
.feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP,
.tested = TEST_OK_PREW,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {ST_ID, ST_M25PX64} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -7725,12 +7281,11 @@
.vendor = "Micron/Numonyx/ST",
.name = "M45PE10",
.bustype = BUS_SPI,
- .manufacture_id = ST_ID,
- .model_id = ST_M45PE10,
.total_size = 128,
.page_size = 256,
+ .feature_bits = 0,
.tested = TEST_UNTESTED,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {ST_ID, ST_M45PE10} } },
.probe_timing = TIMING_ZERO,
.block_erasers = {
{
@@ -7752,12 +7307,11 @@
.vendor = "Micron/Numonyx/ST",
.name = "M45PE20",
.bustype = BUS_SPI,
- .manufacture_id = ST_ID,
- .model_id = ST_M45PE20,
.total_size = 256,
.page_size = 256,
+ .feature_bits = 0,
.tested = TEST_UNTESTED,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {ST_ID, ST_M45PE20} } },
.probe_timing = TIMING_ZERO,
.block_erasers = {
{
@@ -7779,12 +7333,11 @@
.vendor = "Micron/Numonyx/ST",
.name = "M45PE40",
.bustype = BUS_SPI,
- .manufacture_id = ST_ID,
- .model_id = ST_M45PE40,
.total_size = 512,
.page_size = 256,
+ .feature_bits = 0,
.tested = TEST_UNTESTED,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {ST_ID, ST_M45PE40} } },
.probe_timing = TIMING_ZERO,
.block_erasers = {
{
@@ -7806,12 +7359,11 @@
.vendor = "Micron/Numonyx/ST",
.name = "M45PE80",
.bustype = BUS_SPI,
- .manufacture_id = ST_ID,
- .model_id = ST_M45PE80,
.total_size = 1024,
.page_size = 256,
+ .feature_bits = 0,
.tested = TEST_UNTESTED,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {ST_ID, ST_M45PE80} } },
.probe_timing = TIMING_ZERO,
.block_erasers = {
{
@@ -7833,12 +7385,11 @@
.vendor = "Micron/Numonyx/ST",
.name = "M45PE16",
.bustype = BUS_SPI,
- .manufacture_id = ST_ID,
- .model_id = ST_M45PE16,
.total_size = 2048,
.page_size = 256,
+ .feature_bits = 0,
.tested = TEST_UNTESTED,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {ST_ID, ST_M45PE16} } },
.probe_timing = TIMING_ZERO,
.block_erasers = {
{
@@ -7860,15 +7411,13 @@
.vendor = "Micron/Numonyx/ST",
.name = "N25Q016",
.bustype = BUS_SPI,
- .manufacture_id = ST_ID,
- .model_id = ST_N25Q016__1E,
.total_size = 2048,
.page_size = 256,
/* supports SFDP */
/* OTP: 64B total; read 0x4B, write 0x42 */
.feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP,
.tested = TEST_UNTESTED,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {ST_ID, ST_N25Q016__1E} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -7897,15 +7446,13 @@
.vendor = "Micron/Numonyx/ST",
.name = "N25Q032..1E",
.bustype = BUS_SPI,
- .manufacture_id = ST_ID,
- .model_id = ST_N25Q032__1E,
.total_size = 4096,
.page_size = 256,
/* supports SFDP */
/* OTP: 64B total; read 0x4B, write 0x42 */
.feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP,
.tested = TEST_UNTESTED,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {ST_ID, ST_N25Q032__1E} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -7931,15 +7478,13 @@
.vendor = "Micron/Numonyx/ST",
.name = "N25Q032..3E",
.bustype = BUS_SPI,
- .manufacture_id = ST_ID,
- .model_id = ST_N25Q032__3E,
.total_size = 4096,
.page_size = 256,
/* supports SFDP */
/* OTP: 64B total; read 0x4B, write 0x42 */
.feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP,
.tested = TEST_OK_PREW,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {ST_ID, ST_N25Q032__3E} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -7965,15 +7510,13 @@
.vendor = "Micron/Numonyx/ST",
.name = "N25Q064..1E", /* ..1E = 1.8V, uniform 64KB/4KB blocks/sectors */
.bustype = BUS_SPI,
- .manufacture_id = ST_ID,
- .model_id = ST_N25Q064__1E,
.total_size = 8192,
.page_size = 256,
/* supports SFDP */
/* OTP: 64B total; read 0x4B, write 0x42 */
.feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP,
.tested = TEST_OK_PREW,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {ST_ID, ST_N25Q064__1E} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -7999,15 +7542,13 @@
.vendor = "Micron/Numonyx/ST",
.name = "N25Q064..3E", /* ..3E = 3V, uniform 64KB/4KB blocks/sectors */
.bustype = BUS_SPI,
- .manufacture_id = ST_ID,
- .model_id = ST_N25Q064__3E,
.total_size = 8192,
.page_size = 256,
/* supports SFDP */
/* OTP: 64B total; read 0x4B, write 0x42 */
.feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP,
.tested = TEST_OK_PREW,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {ST_ID, ST_N25Q064__3E} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -8033,15 +7574,13 @@
.vendor = "Micron/Numonyx/ST",
.name = "N25Q128..1E", /* ..1E = 1.8V, uniform 64KB/4KB blocks/sectors */
.bustype = BUS_SPI,
- .manufacture_id = ST_ID,
- .model_id = ST_N25Q128__1E,
.total_size = 16384,
.page_size = 256,
/* supports SFDP */
/* OTP: 64B total; read 0x4B, write 0x42 */
.feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP,
.tested = TEST_UNTESTED,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {ST_ID, ST_N25Q128__1E} } },
.probe_timing = TIMING_ZERO,
.block_erasers = {
{
@@ -8066,15 +7605,13 @@
.vendor = "Micron/Numonyx/ST",
.name = "N25Q128..3E", /* ..3E = 3V, uniform 64KB/4KB blocks/sectors */
.bustype = BUS_SPI,
- .manufacture_id = ST_ID,
- .model_id = ST_N25Q128__3E,
.total_size = 16384,
.page_size = 256,
/* supports SFDP */
/* OTP: 64B total; read 0x4B, write 0x42 */
.feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP,
.tested = TEST_OK_PREW,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {ST_ID, ST_N25Q128__3E} } },
.probe_timing = TIMING_ZERO,
.block_erasers = {
{
@@ -8099,13 +7636,11 @@
.vendor = "MoselVitelic",
.name = "V29C51000B",
.bustype = BUS_PARALLEL,
- .manufacture_id = SYNCMOS_MVC_ID,
- .model_id = MVC_V29C51000B,
.total_size = 64,
.page_size = 512,
.feature_bits = FEATURE_EITHER_RESET,
.tested = TEST_UNTESTED,
- .probe = probe_jedec,
+ {probe_jedec, {2, {SYNCMOS_MVC_ID, MVC_V29C51000B} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -8126,13 +7661,11 @@
.vendor = "MoselVitelic",
.name = "V29C51000T",
.bustype = BUS_PARALLEL,
- .manufacture_id = SYNCMOS_MVC_ID,
- .model_id = MVC_V29C51000T,
.total_size = 64,
.page_size = 512,
.feature_bits = FEATURE_EITHER_RESET,
.tested = TEST_UNTESTED,
- .probe = probe_jedec,
+ {probe_jedec, {2, {SYNCMOS_MVC_ID, MVC_V29C51000T} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -8153,13 +7686,11 @@
.vendor = "MoselVitelic",
.name = "V29C51400B",
.bustype = BUS_PARALLEL,
- .manufacture_id = SYNCMOS_MVC_ID,
- .model_id = MVC_V29C51400B,
.total_size = 512,
.page_size = 1024,
.feature_bits = FEATURE_EITHER_RESET,
.tested = TEST_UNTESTED,
- .probe = probe_jedec,
+ {probe_jedec, {2, {SYNCMOS_MVC_ID, MVC_V29C51400B} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -8180,13 +7711,11 @@
.vendor = "MoselVitelic",
.name = "V29C51400T",
.bustype = BUS_PARALLEL,
- .manufacture_id = SYNCMOS_MVC_ID,
- .model_id = MVC_V29C51400T,
.total_size = 512,
.page_size = 1024,
.feature_bits = FEATURE_EITHER_RESET,
.tested = TEST_UNTESTED,
- .probe = probe_jedec,
+ {probe_jedec, {2, {SYNCMOS_MVC_ID, MVC_V29C51400T} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -8207,13 +7736,11 @@
.vendor = "MoselVitelic",
.name = "V29LC51000",
.bustype = BUS_PARALLEL,
- .manufacture_id = SYNCMOS_MVC_ID,
- .model_id = MVC_V29LC51000,
.total_size = 64,
.page_size = 512,
.feature_bits = FEATURE_EITHER_RESET,
.tested = TEST_UNTESTED,
- .probe = probe_jedec,
+ {probe_jedec, {2, {SYNCMOS_MVC_ID, MVC_V29LC51000} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -8234,13 +7761,11 @@
.vendor = "MoselVitelic",
.name = "V29LC51001",
.bustype = BUS_PARALLEL,
- .manufacture_id = SYNCMOS_MVC_ID,
- .model_id = MVC_V29LC51001,
.total_size = 128,
.page_size = 512,
.feature_bits = FEATURE_EITHER_RESET,
.tested = TEST_UNTESTED,
- .probe = probe_jedec,
+ {probe_jedec, {2, {SYNCMOS_MVC_ID, MVC_V29LC51001} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -8261,13 +7786,11 @@
.vendor = "MoselVitelic",
.name = "V29LC51002",
.bustype = BUS_PARALLEL,
- .manufacture_id = SYNCMOS_MVC_ID,
- .model_id = MVC_V29LC51002,
.total_size = 256,
.page_size = 512,
.feature_bits = FEATURE_EITHER_RESET,
.tested = TEST_UNTESTED,
- .probe = probe_jedec,
+ {probe_jedec, {2, {SYNCMOS_MVC_ID, MVC_V29LC51002} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -8288,13 +7811,11 @@
.vendor = "Nantronics",
.name = "N25S10",
.bustype = BUS_SPI,
- .manufacture_id = NANTRONICS_ID_NOPREFIX,
- .model_id = NANTRONICS_N25S10,
.total_size = 128,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_UNTESTED,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {NANTRONICS_ID_NOPREFIX, NANTRONICS_N25S10} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -8329,13 +7850,11 @@
.vendor = "Nantronics",
.name = "N25S20",
.bustype = BUS_SPI,
- .manufacture_id = NANTRONICS_ID_NOPREFIX,
- .model_id = NANTRONICS_N25S20,
.total_size = 256,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_UNTESTED,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {NANTRONICS_ID_NOPREFIX, NANTRONICS_N25S20} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -8370,13 +7889,11 @@
.vendor = "Nantronics",
.name = "N25S40",
.bustype = BUS_SPI,
- .manufacture_id = NANTRONICS_ID_NOPREFIX,
- .model_id = NANTRONICS_N25S40,
.total_size = 512,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_UNTESTED,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {NANTRONICS_ID_NOPREFIX, NANTRONICS_N25S40} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -8411,13 +7928,11 @@
.vendor = "Nantronics",
.name = "N25S80",
.bustype = BUS_SPI,
- .manufacture_id = NANTRONICS_ID_NOPREFIX,
- .model_id = NANTRONICS_N25S80,
.total_size = 1024,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_UNTESTED,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {NANTRONICS_ID_NOPREFIX, NANTRONICS_N25S80} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -8449,13 +7964,11 @@
.vendor = "Nantronics",
.name = "N25S16",
.bustype = BUS_SPI,
- .manufacture_id = NANTRONICS_ID_NOPREFIX,
- .model_id = NANTRONICS_N25S16,
.total_size = 2048,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_UNTESTED,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {NANTRONICS_ID_NOPREFIX, NANTRONICS_N25S16} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -8484,13 +7997,11 @@
.vendor = "PMC",
.name = "Pm25LD256C",
.bustype = BUS_SPI,
- .manufacture_id = PMC_ID,
- .model_id = PMC_PM25LD256C,
.total_size = 32,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_UNTESTED,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {PMC_ID, PMC_PM25LD256C} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -8521,13 +8032,11 @@
.vendor = "PMC",
.name = "Pm25LD512(C)",
.bustype = BUS_SPI,
- .manufacture_id = PMC_ID,
- .model_id = PMC_PM25LD512,
.total_size = 64,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_OK_PREW,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {PMC_ID, PMC_PM25LD512} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -8559,13 +8068,11 @@
.vendor = "PMC",
.name = "Pm25LD010(C)",
.bustype = BUS_SPI,
- .manufacture_id = PMC_ID,
- .model_id = PMC_PM25LD010,
.total_size = 128,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_OK_PREW,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {PMC_ID, PMC_PM25LD010} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -8597,13 +8104,11 @@
.vendor = "PMC",
.name = "Pm25LD020(C)",
.bustype = BUS_SPI,
- .manufacture_id = PMC_ID,
- .model_id = PMC_PM25LD020,
.total_size = 256,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_UNTESTED,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {PMC_ID, PMC_PM25LD020} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -8635,13 +8140,11 @@
.vendor = "PMC",
.name = "Pm25LD040(C)",
.bustype = BUS_SPI,
- .manufacture_id = PMC_ID,
- .model_id = PMC_PM25LV040,
.total_size = 512,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_UNTESTED,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {PMC_ID, PMC_PM25LV040} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -8673,13 +8176,11 @@
.vendor = "PMC",
.name = "Pm25LV512(A)",
.bustype = BUS_SPI,
- .manufacture_id = PMC_ID_NOPREFIX,
- .model_id = PMC_PM25LV512,
.total_size = 64,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_UNTESTED,
- .probe = probe_spi_res2, /* The continuation code is transferred as the 3rd byte m( */
+ {probe_spi_res2, {2, {PMC_ID_NOPREFIX, PMC_PM25LV512} } }, /* The continuation code is transferred as the 3rd byte m( */
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -8705,13 +8206,11 @@
.vendor = "PMC",
.name = "Pm25LV010",
.bustype = BUS_SPI,
- .manufacture_id = PMC_ID_NOPREFIX,
- .model_id = PMC_PM25LV010,
.total_size = 128,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_OK_PREW,
- .probe = probe_spi_res2, /* The continuation code is transferred as the 3rd byte m( */
+ {probe_spi_res2, {2, {PMC_ID_NOPREFIX, PMC_PM25LV010} } }, /* The continuation code is transferred as the 3rd byte m( */
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -8737,13 +8236,11 @@
.vendor = "PMC",
.name = "Pm25LV010A",
.bustype = BUS_SPI,
- .manufacture_id = PMC_ID,
- .model_id = PMC_PM25LV010,
.total_size = 128,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_OK_PREW,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {PMC_ID, PMC_PM25LV010} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -8769,13 +8266,11 @@
.vendor = "PMC",
.name = "Pm25LV020",
.bustype = BUS_SPI,
- .manufacture_id = PMC_ID,
- .model_id = PMC_PM25LV020,
.total_size = 256,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_UNTESTED,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {PMC_ID, PMC_PM25LV020} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -8801,13 +8296,11 @@
.vendor = "PMC",
.name = "Pm25LV040",
.bustype = BUS_SPI,
- .manufacture_id = PMC_ID,
- .model_id = PMC_PM25LV040,
.total_size = 512,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_OK_PREW,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {PMC_ID, PMC_PM25LV040} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -8833,13 +8326,11 @@
.vendor = "PMC",
.name = "Pm25LV080B",
.bustype = BUS_SPI,
- .manufacture_id = PMC_ID,
- .model_id = PMC_PM25LV080B,
.total_size = 1024,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_UNTESTED,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {PMC_ID, PMC_PM25LV080B} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -8871,13 +8362,11 @@
.vendor = "PMC",
.name = "Pm25LV016B",
.bustype = BUS_SPI,
- .manufacture_id = PMC_ID,
- .model_id = PMC_PM25LV016B,
.total_size = 2048,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_UNTESTED,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {PMC_ID, PMC_PM25LV016B} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -8909,13 +8398,11 @@
.vendor = "PMC",
.name = "Pm29F002T",
.bustype = BUS_PARALLEL,
- .manufacture_id = PMC_ID_NOPREFIX,
- .model_id = PMC_PM29F002T,
.total_size = 256,
.page_size = 8 * 1024,
.feature_bits = FEATURE_ADDR_2AA | FEATURE_EITHER_RESET,
.tested = TEST_OK_PREW,
- .probe = probe_jedec,
+ {probe_jedec, {2, {PMC_ID_NOPREFIX, PMC_PM29F002T} } },
.probe_timing = TIMING_FIXME,
.block_erasers =
{
@@ -8941,13 +8428,11 @@
.vendor = "PMC",
.name = "Pm29F002B",
.bustype = BUS_PARALLEL,
- .manufacture_id = PMC_ID_NOPREFIX,
- .model_id = PMC_PM29F002B,
.total_size = 256,
.page_size = 8 * 1024,
.feature_bits = FEATURE_ADDR_2AA | FEATURE_EITHER_RESET,
.tested = TEST_UNTESTED,
- .probe = probe_jedec,
+ {probe_jedec, {2, {PMC_ID_NOPREFIX, PMC_PM29F002B} } },
.probe_timing = TIMING_FIXME,
.block_erasers =
{
@@ -8973,13 +8458,11 @@
.vendor = "PMC",
.name = "Pm39LV010",
.bustype = BUS_PARALLEL,
- .manufacture_id = PMC_ID_NOPREFIX,
- .model_id = PMC_PM39F010, /* Pm39LV010 and Pm39F010 have identical IDs but different voltage */
.total_size = 128,
.page_size = 4096,
.feature_bits = FEATURE_ADDR_2AA | FEATURE_EITHER_RESET,
.tested = TEST_OK_PREW,
- .probe = probe_jedec,
+ {probe_jedec, {2, {PMC_ID_NOPREFIX, PMC_PM39F010 /* Pm39LV010 and Pm39F010 have identical IDs but different voltage */} } },
.probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */
.block_erasers =
{
@@ -9003,13 +8486,11 @@
.vendor = "PMC",
.name = "Pm39LV020",
.bustype = BUS_PARALLEL,
- .manufacture_id = PMC_ID_NOPREFIX,
- .model_id = PMC_PM39LV020,
.total_size = 256,
.page_size = 4096,
.feature_bits = FEATURE_ADDR_2AA | FEATURE_EITHER_RESET,
.tested = TEST_UNTESTED,
- .probe = probe_jedec,
+ {probe_jedec, {2, {PMC_ID_NOPREFIX, PMC_PM39LV020} } },
.probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */
.block_erasers =
{
@@ -9033,13 +8514,11 @@
.vendor = "PMC",
.name = "Pm39LV040",
.bustype = BUS_PARALLEL,
- .manufacture_id = PMC_ID_NOPREFIX,
- .model_id = PMC_PM39LV040,
.total_size = 512,
.page_size = 4096,
.feature_bits = FEATURE_ADDR_2AA | FEATURE_EITHER_RESET,
.tested = TEST_OK_PR,
- .probe = probe_jedec,
+ {probe_jedec, {2, {PMC_ID_NOPREFIX, PMC_PM39LV040} } },
.probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */
.block_erasers =
{
@@ -9063,13 +8542,11 @@
.vendor = "PMC",
.name = "Pm39LV512",
.bustype = BUS_PARALLEL,
- .manufacture_id = PMC_ID_NOPREFIX,
- .model_id = PMC_PM39LV512,
.total_size = 64,
.page_size = 4096,
.feature_bits = FEATURE_ADDR_2AA | FEATURE_EITHER_RESET,
.tested = TEST_OK_PREW,
- .probe = probe_jedec,
+ {probe_jedec, {2, {PMC_ID_NOPREFIX, PMC_PM39LV512} } },
.probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */
.block_erasers =
{
@@ -9093,13 +8570,11 @@
.vendor = "PMC",
.name = "Pm49FL002",
.bustype = BUS_LPC | BUS_FWH, /* A/A Mux */
- .manufacture_id = PMC_ID_NOPREFIX,
- .model_id = PMC_PM49FL002,
.total_size = 256,
.page_size = 16 * 1024,
.feature_bits = FEATURE_REGISTERMAP | FEATURE_EITHER_RESET,
.tested = TEST_OK_PREW,
- .probe = probe_jedec,
+ {probe_jedec, {2, {PMC_ID_NOPREFIX, PMC_PM49FL002} } },
.probe_timing = TIMING_ZERO, /* routine is wrapper to probe_jedec (pm49fl00x.c) */
.block_erasers =
{
@@ -9124,13 +8599,11 @@
.vendor = "PMC",
.name = "Pm49FL004",
.bustype = BUS_LPC | BUS_FWH, /* A/A Mux */
- .manufacture_id = PMC_ID_NOPREFIX,
- .model_id = PMC_PM49FL004,
.total_size = 512,
.page_size = 64 * 1024,
.feature_bits = FEATURE_REGISTERMAP | FEATURE_EITHER_RESET,
.tested = TEST_OK_PREW,
- .probe = probe_jedec,
+ {probe_jedec, {2, {PMC_ID_NOPREFIX, PMC_PM49FL004} } },
.probe_timing = TIMING_ZERO, /* routine is wrapper to probe_jedec (pm49fl00x.c) */
.block_erasers =
{
@@ -9155,13 +8628,11 @@
.vendor = "Sanyo",
.name = "LE25FW106",
.bustype = BUS_SPI,
- .manufacture_id = SANYO_ID,
- .model_id = SANYO_LE25FW106,
.total_size = 128,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_OK_PREW,
- .probe = probe_spi_res2,
+ {probe_spi_res2, {2, {SANYO_ID, SANYO_LE25FW106} } },
.probe_timing = TIMING_ZERO,
.block_erasers = {
{
@@ -9186,13 +8657,11 @@
.vendor = "Sanyo",
.name = "LE25FW406A",
.bustype = BUS_SPI,
- .manufacture_id = SANYO_ID,
- .model_id = SANYO_LE25FW406A,
.total_size = 512,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_OK_PREW,
- .probe = probe_spi_res2,
+ {probe_spi_res2, {2, {SANYO_ID, SANYO_LE25FW406A} } },
.probe_timing = TIMING_ZERO,
.block_erasers = {
{
@@ -9217,13 +8686,11 @@
.vendor = "Sanyo",
.name = "LE25FU406B",
.bustype = BUS_SPI,
- .manufacture_id = SANYO_ID,
- .model_id = SANYO_LE25FU406B,
.total_size = 512,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_OK_PREW,
- .probe = probe_spi_res2,
+ {probe_spi_res2, {2, {SANYO_ID, SANYO_LE25FU406B} } },
.probe_timing = TIMING_ZERO,
.block_erasers = {
{
@@ -9248,12 +8715,11 @@
.vendor = "Sanyo",
.name = "LE25FW203A",
.bustype = BUS_SPI,
- .manufacture_id = SANYO_ID,
- .model_id = SANYO_LE25FW203A,
.total_size = 256,
.page_size = 256,
+ .feature_bits = 0,
.tested = TEST_UNTESTED,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {SANYO_ID, SANYO_LE25FW203A} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -9279,12 +8745,11 @@
.vendor = "Sanyo",
.name = "LE25FW403A",
.bustype = BUS_SPI,
- .manufacture_id = SANYO_ID,
- .model_id = SANYO_LE25FW403A,
.total_size = 512,
.page_size = 256,
+ .feature_bits = 0,
.tested = TEST_UNTESTED,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {SANYO_ID, SANYO_LE25FW403A} } },
.probe_timing = TIMING_ZERO,
.block_erasers = {
{
@@ -9309,13 +8774,11 @@
.vendor = "Sanyo",
.name = "LE25FW418A",
.bustype = BUS_SPI,
- .manufacture_id = SANYO_ID,
- .model_id = SANYO_LE25FW418A,
.total_size = 512,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_UNTESTED,
- .probe = probe_spi_res2,
+ {probe_spi_res2, {2, {SANYO_ID, SANYO_LE25FW418A} } },
.probe_timing = TIMING_ZERO,
.block_erasers = {
{
@@ -9340,13 +8803,11 @@
.vendor = "Sanyo",
.name = "LE25FW806",
.bustype = BUS_SPI,
- .manufacture_id = SANYO_ID,
- .model_id = SANYO_LE25FW806,
.total_size = 1024,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_UNTESTED,
- .probe = probe_spi_res2,
+ {probe_spi_res2, {2, {SANYO_ID, SANYO_LE25FW806} } },
.probe_timing = TIMING_ZERO,
.block_erasers = {
{
@@ -9374,13 +8835,11 @@
.vendor = "Sanyo",
.name = "LE25FW808",
.bustype = BUS_SPI,
- .manufacture_id = SANYO_ID,
- .model_id = SANYO_LE25FW808,
.total_size = 1024,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_UNTESTED,
- .probe = probe_spi_res2,
+ {probe_spi_res2, {2, {SANYO_ID, SANYO_LE25FW808} } },
.probe_timing = TIMING_ZERO,
.block_erasers = {
{
@@ -9405,12 +8864,11 @@
.vendor = "Sharp",
.name = "LH28F008BJT-BTLZ1",
.bustype = BUS_PARALLEL,
- .manufacture_id = SHARP_ID,
- .model_id = SHARP_LH28F008BJ__PB,
.total_size = 1024,
.page_size = 64 * 1024,
+ .feature_bits = 0,
.tested = TEST_OK_PREW,
- .probe = probe_82802ab,
+ {probe_82802ab, {2, {SHARP_ID, SHARP_LH28F008BJ__PB} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -9435,13 +8893,11 @@
.vendor = "Sharp",
.name = "LHF00L04",
.bustype = BUS_FWH, /* A/A Mux */
- .manufacture_id = SHARP_ID,
- .model_id = SHARP_LHF00L04,
.total_size = 1024,
.page_size = 64 * 1024,
.feature_bits = FEATURE_EITHER_RESET | FEATURE_REGISTERMAP,
.tested = TEST_UNTESTED,
- .probe = probe_82802ab,
+ {probe_82802ab, {2, {SHARP_ID, SHARP_LHF00L04} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -9468,13 +8924,11 @@
.vendor = "Spansion",
.name = "S25FL004A",
.bustype = BUS_SPI,
- .manufacture_id = SPANSION_ID,
- .model_id = SPANSION_S25FL004A,
.total_size = 512,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_UNTESTED,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {SPANSION_ID, SPANSION_S25FL004A} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -9497,13 +8951,11 @@
.vendor = "Spansion",
.name = "S25FL008A",
.bustype = BUS_SPI,
- .manufacture_id = SPANSION_ID,
- .model_id = SPANSION_S25FL008A,
.total_size = 1024,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_OK_PRE,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {SPANSION_ID, SPANSION_S25FL008A} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -9526,13 +8978,11 @@
.vendor = "Spansion",
.name = "S25FL016A",
.bustype = BUS_SPI,
- .manufacture_id = SPANSION_ID,
- .model_id = SPANSION_S25FL016A,
.total_size = 2048,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_OK_PR,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {SPANSION_ID, SPANSION_S25FL016A} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -9555,13 +9005,11 @@
.vendor = "Spansion",
.name = "S25FL032A/P",
.bustype = BUS_SPI,
- .manufacture_id = SPANSION_ID,
- .model_id = SPANSION_S25FL032A,
.total_size = 4096,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_OK_PREW,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {SPANSION_ID, SPANSION_S25FL032A} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -9584,13 +9032,11 @@
.vendor = "Spansion",
.name = "S25FL064A/P",
.bustype = BUS_SPI,
- .manufacture_id = SPANSION_ID,
- .model_id = SPANSION_S25FL064A,
.total_size = 8192,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_OK_PREW,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {SPANSION_ID, SPANSION_S25FL064A} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -9613,13 +9059,11 @@
.vendor = "Spansion",
.name = "S25FL204K",
.bustype = BUS_SPI,
- .manufacture_id = SPANSION_ID,
- .model_id = SPANSION_S25FL204,
.total_size = 512,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_UNTESTED,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {SPANSION_ID, SPANSION_S25FL204} } },
.probe_timing = TIMING_ZERO,
.block_erasers = {
{
@@ -9647,13 +9091,11 @@
.vendor = "Spansion",
.name = "S25FL208K",
.bustype = BUS_SPI,
- .manufacture_id = SPANSION_ID,
- .model_id = SPANSION_S25FL208,
.total_size = 1024,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_UNTESTED,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {SPANSION_ID, SPANSION_S25FL208} } },
.probe_timing = TIMING_ZERO,
.block_erasers = {
{
@@ -9681,14 +9123,12 @@
.vendor = "Spansion",
.name = "S25FL116K/S25FL216K",
.bustype = BUS_SPI,
- .manufacture_id = SPANSION_ID,
- .model_id = SPANSION_S25FL216,
.total_size = 2048,
.page_size = 256,
/* OTP: 1024B total, 256B reserved; read 0x48; write 0x42, erase 0x44 (S25FL116K only) */
.feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP,
.tested = TEST_UNTESTED,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {SPANSION_ID, SPANSION_S25FL216} } },
.probe_timing = TIMING_ZERO,
.block_erasers = {
{
@@ -9716,14 +9156,12 @@
.vendor = "Spansion",
.name = "S25FL132K",
.bustype = BUS_SPI,
- .manufacture_id = SPANSION_ID,
- .model_id = SPANSION_S25FL132K,
.total_size = 4096,
.page_size = 256,
/* OTP: 768B total, 256B reserved; read 0x48; write 0x42, erase 0x44 */
.feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP,
.tested = TEST_UNTESTED,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {SPANSION_ID, SPANSION_S25FL132K} } },
.probe_timing = TIMING_ZERO,
.block_erasers = {
{
@@ -9751,14 +9189,12 @@
.vendor = "Spansion",
.name = "S25FL164K",
.bustype = BUS_SPI,
- .manufacture_id = SPANSION_ID,
- .model_id = SPANSION_S25FL164K,
.total_size = 8192,
.page_size = 256,
/* OTP: 1024B total, 256B reserved; read 0x48; write 0x42, erase 0x44 */
.feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP,
.tested = TEST_OK_PREW,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {SPANSION_ID, SPANSION_S25FL164K} } },
.probe_timing = TIMING_ZERO,
.block_erasers = {
{
@@ -9786,15 +9222,13 @@
.vendor = "Spansion",
.name = "S25FL128S......0", /* uniform 256kB sectors */
.bustype = BUS_SPI,
- .manufacture_id = SPANSION_ID,
- .model_id = SPANSION_S25FL128,
.total_size = 16384,
.page_size = 256,
/* supports 4B addressing */
/* OTP: 1024B total, 32B reserved; read 0x4B; write 0x42 */
.feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP,
.tested = TEST_UNTESTED,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {SPANSION_ID, SPANSION_S25FL128} } },
.probe_timing = TIMING_ZERO,
.block_erasers = {
{
@@ -9822,13 +9256,11 @@
.vendor = "SST",
.name = "SST25LF020A",
.bustype = BUS_SPI,
- .manufacture_id = SST_ID,
- .model_id = SST_SST25VF020_REMS,
.total_size = 256,
.page_size = 256,
.feature_bits = FEATURE_WRSR_EWSR,
.tested = TEST_OK_PREW,
- .probe = probe_spi_rems,
+ {probe_spi_rems, {2, {SST_ID, SST_SST25VF020_REMS} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -9854,13 +9286,11 @@
.vendor = "SST",
.name = "SST25LF040A",
.bustype = BUS_SPI,
- .manufacture_id = SST_ID,
- .model_id = SST_SST25VF040_REMS,
.total_size = 512,
.page_size = 256,
.feature_bits = FEATURE_WRSR_EWSR,
.tested = TEST_OK_PREW,
- .probe = probe_spi_res2,
+ {probe_spi_res2, {2, {SST_ID, SST_SST25VF040_REMS} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -9886,13 +9316,11 @@
.vendor = "SST",
.name = "SST25LF080(A)",
.bustype = BUS_SPI,
- .manufacture_id = SST_ID,
- .model_id = SST_SST25VF080_REMS,
.total_size = 1024,
.page_size = 256,
.feature_bits = FEATURE_WRSR_EITHER,
.tested = TEST_UNTESTED,
- .probe = probe_spi_res2,
+ {probe_spi_res2, {2, {SST_ID, SST_SST25VF080_REMS} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -9918,13 +9346,11 @@
.vendor = "SST",
.name = "SST25VF512A",
.bustype = BUS_SPI,
- .manufacture_id = SST_ID,
- .model_id = SST_SST25VF512A_REMS,
.total_size = 64,
.page_size = 256,
.feature_bits = FEATURE_WRSR_EWSR,
.tested = TEST_OK_PREW,
- .probe = probe_spi_rems,
+ {probe_spi_rems, {2, {SST_ID, SST_SST25VF512A_REMS} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -9956,13 +9382,11 @@
.vendor = "SST",
.name = "SST25VF010",
.bustype = BUS_SPI,
- .manufacture_id = SST_ID,
- .model_id = SST_SST25VF010_REMS,
.total_size = 128,
.page_size = 256,
.feature_bits = FEATURE_WRSR_EWSR,
.tested = TEST_OK_PREW,
- .probe = probe_spi_rems,
+ {probe_spi_rems, {2, {SST_ID, SST_SST25VF010_REMS} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -9994,13 +9418,11 @@
.vendor = "SST",
.name = "SST25VF020",
.bustype = BUS_SPI,
- .manufacture_id = SST_ID,
- .model_id = SST_SST25VF020_REMS,
.total_size = 256,
.page_size = 256,
.feature_bits = FEATURE_WRSR_EWSR,
.tested = TEST_UNTESTED,
- .probe = probe_spi_rems,
+ {probe_spi_rems, {2, {SST_ID, SST_SST25VF020_REMS} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -10026,13 +9448,11 @@
.vendor = "SST",
.name = "SST25VF020B",
.bustype = BUS_SPI,
- .manufacture_id = SST_ID,
- .model_id = SST_SST25VF020B,
.total_size = 256,
.page_size = 256,
.feature_bits = FEATURE_WRSR_EWSR,
.tested = TEST_OK_PREW,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {SST_ID, SST_SST25VF020B} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -10064,13 +9484,11 @@
.vendor = "SST",
.name = "SST25VF040",
.bustype = BUS_SPI,
- .manufacture_id = SST_ID,
- .model_id = SST_SST25VF040_REMS,
.total_size = 512,
.page_size = 256,
.feature_bits = FEATURE_WRSR_EWSR,
.tested = TEST_OK_PR,
- .probe = probe_spi_rems,
+ {probe_spi_rems, {2, {SST_ID, SST_SST25VF040_REMS} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -10096,13 +9514,11 @@
.vendor = "SST",
.name = "SST25VF040B",
.bustype = BUS_SPI,
- .manufacture_id = SST_ID,
- .model_id = SST_SST25VF040B,
.total_size = 512,
.page_size = 256,
.feature_bits = FEATURE_WRSR_EWSR,
.tested = TEST_OK_PREW,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {SST_ID, SST_SST25VF040B} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -10134,13 +9550,11 @@
.vendor = "SST",
.name = "SST25VF040B.REMS",
.bustype = BUS_SPI,
- .manufacture_id = SST_ID,
- .model_id = SST_SST25VF040B_REMS,
.total_size = 512,
.page_size = 256,
.feature_bits = FEATURE_WRSR_EWSR,
.tested = TEST_OK_PREW,
- .probe = probe_spi_rems,
+ {probe_spi_rems, {2, {SST_ID, SST_SST25VF040B_REMS} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -10172,13 +9586,11 @@
.vendor = "SST",
.name = "SST25VF080B",
.bustype = BUS_SPI,
- .manufacture_id = SST_ID,
- .model_id = SST_SST25VF080B,
.total_size = 1024,
.page_size = 256,
.feature_bits = FEATURE_WRSR_EWSR,
.tested = TEST_OK_PREW,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {SST_ID, SST_SST25VF080B} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -10210,13 +9622,11 @@
.vendor = "SST",
.name = "SST25VF016B",
.bustype = BUS_SPI,
- .manufacture_id = SST_ID,
- .model_id = SST_SST25VF016B,
.total_size = 2048,
.page_size = 256,
.feature_bits = FEATURE_WRSR_EITHER,
.tested = TEST_OK_PREW,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {SST_ID, SST_SST25VF016B} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -10248,13 +9658,11 @@
.vendor = "SST",
.name = "SST25VF032B",
.bustype = BUS_SPI,
- .manufacture_id = SST_ID,
- .model_id = SST_SST25VF032B,
.total_size = 4096,
.page_size = 256,
.feature_bits = FEATURE_WRSR_EWSR,
.tested = TEST_OK_PREW,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {SST_ID, SST_SST25VF032B} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -10286,13 +9694,11 @@
.vendor = "SST",
.name = "SST25VF064C",
.bustype = BUS_SPI,
- .manufacture_id = SST_ID,
- .model_id = SST_SST25VF064C,
.total_size = 8192,
.page_size = 256,
.feature_bits = FEATURE_WRSR_EWSR,
.tested = TEST_OK_PREW,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {SST_ID, SST_SST25VF064C} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -10324,13 +9730,11 @@
.vendor = "SST",
.name = "SST25WF512",
.bustype = BUS_SPI,
- .manufacture_id = SST_ID,
- .model_id = SST_SST25WF512,
.total_size = 64,
.page_size = 256,
.feature_bits = FEATURE_WRSR_EITHER,
.tested = TEST_UNTESTED,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {SST_ID, SST_SST25WF512} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -10359,13 +9763,11 @@
.vendor = "SST",
.name = "SST25WF010",
.bustype = BUS_SPI,
- .manufacture_id = SST_ID,
- .model_id = SST_SST25WF010,
.total_size = 128,
.page_size = 256,
.feature_bits = FEATURE_WRSR_EITHER,
.tested = TEST_UNTESTED,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {SST_ID, SST_SST25WF010} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -10394,13 +9796,11 @@
.vendor = "SST",
.name = "SST25WF020",
.bustype = BUS_SPI,
- .manufacture_id = SST_ID,
- .model_id = SST_SST25WF020,
.total_size = 256,
.page_size = 256,
.feature_bits = FEATURE_WRSR_EITHER,
.tested = TEST_UNTESTED,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {SST_ID, SST_SST25WF020} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -10432,13 +9832,11 @@
.vendor = "SST",
.name = "SST25WF040",
.bustype = BUS_SPI,
- .manufacture_id = SST_ID,
- .model_id = SST_SST25WF040,
.total_size = 512,
.page_size = 256,
.feature_bits = FEATURE_WRSR_EITHER,
.tested = TEST_UNTESTED,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {SST_ID, SST_SST25WF040} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -10470,13 +9868,11 @@
.vendor = "SST",
.name = "SST25WF080",
.bustype = BUS_SPI,
- .manufacture_id = SST_ID,
- .model_id = SST_SST25WF080,
.total_size = 1024,
.page_size = 256,
.feature_bits = FEATURE_WRSR_EITHER,
.tested = TEST_OK_PREW,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {SST_ID, SST_SST25WF080} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -10508,13 +9904,11 @@
.vendor = "SST",
.name = "SST28SF040A",
.bustype = BUS_PARALLEL,
- .manufacture_id = SST_ID,
- .model_id = SST_SST28SF040,
.total_size = 512,
.page_size = 256,
.feature_bits = 0,
.tested = TEST_UNTESTED,
- .probe = probe_82802ab,
+ {probe_82802ab, {2, {SST_ID, SST_SST28SF040} } },
.probe_timing = TIMING_IGNORED, /* routine doesn't use probe_timing (sst28sf040.c) */
.block_erasers =
{
@@ -10536,13 +9930,11 @@
.vendor = "SST",
.name = "SST29EE010",
.bustype = BUS_PARALLEL,
- .manufacture_id = SST_ID,
- .model_id = SST_SST29EE010,
.total_size = 128,
.page_size = 128,
.feature_bits = FEATURE_LONG_RESET,
.tested = TEST_OK_PR,
- .probe = probe_jedec,
+ {probe_jedec, {2, {SST_ID, SST_SST29EE010} } },
.probe_timing = 10,
.block_erasers =
{
@@ -10560,13 +9952,11 @@
.vendor = "SST",
.name = "SST29LE010",
.bustype = BUS_PARALLEL,
- .manufacture_id = SST_ID,
- .model_id = SST_SST29LE010,
.total_size = 128,
.page_size = 128,
.feature_bits = FEATURE_LONG_RESET,
.tested = TEST_UNTESTED,
- .probe = probe_jedec,
+ {probe_jedec, {2, {SST_ID, SST_SST29LE010} } },
.probe_timing = 10,
.block_erasers =
{
@@ -10584,13 +9974,11 @@
.vendor = "SST",
.name = "SST29EE020A",
.bustype = BUS_PARALLEL,
- .manufacture_id = SST_ID,
- .model_id = SST_SST29EE020A,
.total_size = 256,
.page_size = 128,
.feature_bits = FEATURE_LONG_RESET,
.tested = TEST_OK_PRE,
- .probe = probe_jedec,
+ {probe_jedec, {2, {SST_ID, SST_SST29EE020A} } },
.probe_timing = 10,
.block_erasers =
{
@@ -10608,13 +9996,11 @@
.vendor = "SST",
.name = "SST29LE020",
.bustype = BUS_PARALLEL,
- .manufacture_id = SST_ID,
- .model_id = SST_SST29LE020,
.total_size = 256,
.page_size = 128,
.feature_bits = FEATURE_LONG_RESET,
.tested = TEST_OK_PRE,
- .probe = probe_jedec,
+ {probe_jedec, {2, {SST_ID, SST_SST29LE020} } },
.probe_timing = 10,
.block_erasers =
{
@@ -10632,13 +10018,11 @@
.vendor = "SST",
.name = "SST39SF512",
.bustype = BUS_PARALLEL,
- .manufacture_id = SST_ID,
- .model_id = SST_SST39SF512,
.total_size = 64,
.page_size = 4096,
.feature_bits = FEATURE_EITHER_RESET,
.tested = TEST_OK_PREW,
- .probe = probe_jedec,
+ {probe_jedec, {2, {SST_ID, SST_SST39SF512} } },
.probe_timing = 1, /* 150 ns */
.block_erasers =
{
@@ -10659,13 +10043,11 @@
.vendor = "SST",
.name = "SST39SF010A",
.bustype = BUS_PARALLEL,
- .manufacture_id = SST_ID,
- .model_id = SST_SST39SF010,
.total_size = 128,
.page_size = 4096,
.feature_bits = FEATURE_EITHER_RESET,
.tested = TEST_OK_PREW,
- .probe = probe_jedec,
+ {probe_jedec, {2, {SST_ID, SST_SST39SF010} } },
.probe_timing = 1, /* 150 ns */
.block_erasers =
{
@@ -10686,13 +10068,11 @@
.vendor = "SST",
.name = "SST39SF020A",
.bustype = BUS_PARALLEL,
- .manufacture_id = SST_ID,
- .model_id = SST_SST39SF020,
.total_size = 256,
.page_size = 4096,
.feature_bits = FEATURE_EITHER_RESET,
.tested = TEST_OK_PREW,
- .probe = probe_jedec,
+ {probe_jedec, {2, {SST_ID, SST_SST39SF020} } },
.probe_timing = 1, /* 150 ns */
.block_erasers =
{
@@ -10713,13 +10093,11 @@
.vendor = "SST",
.name = "SST39SF040",
.bustype = BUS_PARALLEL,
- .manufacture_id = SST_ID,
- .model_id = SST_SST39SF040,
.total_size = 512,
.page_size = 4096,
.feature_bits = FEATURE_EITHER_RESET,
.tested = TEST_OK_PREW,
- .probe = probe_jedec,
+ {probe_jedec, {2, {SST_ID, SST_SST39SF040} } },
.probe_timing = 1, /* 150 ns */
.block_erasers =
{
@@ -10740,13 +10118,11 @@
.vendor = "SST",
.name = "SST39VF512",
.bustype = BUS_PARALLEL,
- .manufacture_id = SST_ID,
- .model_id = SST_SST39VF512,
.total_size = 64,
.page_size = 4096,
.feature_bits = FEATURE_EITHER_RESET,
.tested = TEST_OK_PREW,
- .probe = probe_jedec,
+ {probe_jedec, {2, {SST_ID, SST_SST39VF512} } },
.probe_timing = 1, /* 150 ns */
.block_erasers =
{
@@ -10767,13 +10143,11 @@
.vendor = "SST",
.name = "SST39VF010",
.bustype = BUS_PARALLEL,
- .manufacture_id = SST_ID,
- .model_id = SST_SST39VF010,
.total_size = 128,
.page_size = 4096,
.feature_bits = FEATURE_EITHER_RESET,
.tested = TEST_OK_PREW,
- .probe = probe_jedec,
+ {probe_jedec, {2, {SST_ID, SST_SST39VF010} } },
.probe_timing = 1, /* 150 ns */
.block_erasers =
{
@@ -10794,13 +10168,11 @@
.vendor = "SST",
.name = "SST39VF020",
.bustype = BUS_PARALLEL,
- .manufacture_id = SST_ID,
- .model_id = SST_SST39VF020,
.total_size = 256,
.page_size = 4096,
.feature_bits = FEATURE_EITHER_RESET,
.tested = TEST_UNTESTED,
- .probe = probe_jedec,
+ {probe_jedec, {2, {SST_ID, SST_SST39VF020} } },
.probe_timing = 1, /* 150 ns */
.block_erasers =
{
@@ -10821,13 +10193,11 @@
.vendor = "SST",
.name = "SST39VF040",
.bustype = BUS_PARALLEL,
- .manufacture_id = SST_ID,
- .model_id = SST_SST39VF040,
.total_size = 512,
.page_size = 4096,
.feature_bits = FEATURE_EITHER_RESET,
.tested = TEST_UNTESTED,
- .probe = probe_jedec,
+ {probe_jedec, {2, {SST_ID, SST_SST39VF040} } },
.probe_timing = 1, /* 150 ns */
.block_erasers =
{
@@ -10848,13 +10218,11 @@
.vendor = "SST",
.name = "SST39VF080",
.bustype = BUS_PARALLEL,
- .manufacture_id = SST_ID,
- .model_id = SST_SST39VF080,
.total_size = 1024,
.page_size = 4096,
.feature_bits = FEATURE_EITHER_RESET,
.tested = TEST_UNTESTED,
- .probe = probe_jedec,
+ {probe_jedec, {2, {SST_ID, SST_SST39VF080} } },
.probe_timing = 1, /* 150 ns */
.block_erasers =
{
@@ -10878,13 +10246,11 @@
.vendor = "SST",
.name = "SST49LF002A/B",
.bustype = BUS_FWH, /* A/A Mux */
- .manufacture_id = SST_ID,
- .model_id = SST_SST49LF002A,
.total_size = 256,
.page_size = 16 * 1024,
.feature_bits = FEATURE_REGISTERMAP | FEATURE_EITHER_RESET,
.tested = TEST_OK_PREW,
- .probe = probe_jedec,
+ {probe_jedec, {2, {SST_ID, SST_SST49LF002A} } },
.probe_timing = 1, /* 150 ns */
.block_erasers =
{
@@ -10910,13 +10276,11 @@
.vendor = "SST",
.name = "SST49LF003A/B",
.bustype = BUS_FWH, /* A/A Mux */
- .manufacture_id = SST_ID,
- .model_id = SST_SST49LF003A,
.total_size = 384,
.page_size = 64 * 1024,
.feature_bits = FEATURE_REGISTERMAP | FEATURE_EITHER_RESET,
.tested = TEST_OK_PREW,
- .probe = probe_jedec,
+ {probe_jedec, {2, {SST_ID, SST_SST49LF003A} } },
.probe_timing = 1, /* 150 ns */
.block_erasers =
{
@@ -10945,13 +10309,11 @@
.vendor = "SST",
.name = "SST49LF004A/B",
.bustype = BUS_FWH, /* A/A Mux */
- .manufacture_id = SST_ID,
- .model_id = SST_SST49LF004A,
.total_size = 512,
.page_size = 64 * 1024,
.feature_bits = FEATURE_REGISTERMAP | FEATURE_EITHER_RESET,
.tested = TEST_OK_PREW,
- .probe = probe_jedec,
+ {probe_jedec, {2, {SST_ID, SST_SST49LF004A} } },
.probe_timing = 1, /* 150 ns */
.block_erasers =
{
@@ -10977,13 +10339,11 @@
.vendor = "SST",
.name = "SST49LF004C",
.bustype = BUS_FWH,
- .manufacture_id = SST_ID,
- .model_id = SST_SST49LF004C,
.total_size = 512,
.page_size = 4 * 1024,
.feature_bits = FEATURE_REGISTERMAP,
.tested = TEST_UNTESTED,
- .probe = probe_82802ab,
+ {probe_82802ab, {2, {SST_ID, SST_SST49LF004C} } },
.probe_timing = TIMING_IGNORED, /* routine doesn't use probe_timing (sst49lfxxxc.c) */
.block_erasers =
{
@@ -11010,13 +10370,11 @@
.vendor = "SST",
.name = "SST49LF008A",
.bustype = BUS_FWH, /* A/A Mux */
- .manufacture_id = SST_ID,
- .model_id = SST_SST49LF008A,
.total_size = 1024,
.page_size = 64 * 1024,
.feature_bits = FEATURE_REGISTERMAP | FEATURE_EITHER_RESET,
.tested = TEST_OK_PREW,
- .probe = probe_jedec,
+ {probe_jedec, {2, {SST_ID, SST_SST49LF008A} } },
.probe_timing = 1, /* 150 ns */
.block_erasers =
{
@@ -11042,13 +10400,11 @@
.vendor = "SST",
.name = "SST49LF008C",
.bustype = BUS_FWH,
- .manufacture_id = SST_ID,
- .model_id = SST_SST49LF008C,
.total_size = 1024,
.page_size = 4 * 1024,
.feature_bits = FEATURE_REGISTERMAP,
.tested = TEST_UNTESTED,
- .probe = probe_82802ab,
+ {probe_82802ab, {2, {SST_ID, SST_SST49LF008C} } },
.probe_timing = TIMING_IGNORED, /* routine doesn't use probe_timing (sst49lfxxxc.c) */
.block_erasers =
{
@@ -11075,13 +10431,11 @@
.vendor = "SST",
.name = "SST49LF016C",
.bustype = BUS_FWH,
- .manufacture_id = SST_ID,
- .model_id = SST_SST49LF016C,
.total_size = 2048,
.page_size = 4 * 1024,
.feature_bits = FEATURE_REGISTERMAP,
.tested = TEST_OK_PREW,
- .probe = probe_82802ab,
+ {probe_82802ab, {2, {SST_ID, SST_SST49LF016C} } },
.probe_timing = TIMING_IGNORED, /* routine doesn't use probe_timing (sst49lfxxxc.c) */
.block_erasers =
{
@@ -11108,13 +10462,11 @@
.vendor = "SST",
.name = "SST49LF020",
.bustype = BUS_LPC,
- .manufacture_id = SST_ID,
- .model_id = SST_SST49LF020,
.total_size = 256,
.page_size = 16 * 1024,
.feature_bits = FEATURE_EITHER_RESET,
.tested = TEST_OK_PREW,
- .probe = probe_jedec,
+ {probe_jedec, {2, {SST_ID, SST_SST49LF020} } },
.probe_timing = 1, /* 150 ns */
.block_erasers =
{
@@ -11138,13 +10490,11 @@
.vendor = "SST",
.name = "SST49LF020A",
.bustype = BUS_LPC,
- .manufacture_id = SST_ID,
- .model_id = SST_SST49LF020A,
.total_size = 256,
.page_size = 4 * 1024,
.feature_bits = FEATURE_EITHER_RESET,
.tested = TEST_OK_PRE,
- .probe = probe_jedec,
+ {probe_jedec, {2, {SST_ID, SST_SST49LF020A} } },
.probe_timing = 1, /* 150 ns */
.block_erasers =
{
@@ -11168,13 +10518,11 @@
.vendor = "SST",
.name = "SST49LF040",
.bustype = BUS_LPC,
- .manufacture_id = SST_ID,
- .model_id = SST_SST49LF040,
.total_size = 512,
.page_size = 4096,
.feature_bits = FEATURE_EITHER_RESET,
.tested = TEST_OK_PREW,
- .probe = probe_jedec,
+ {probe_jedec, {2, {SST_ID, SST_SST49LF040} } },
.probe_timing = 1, /* 150 ns */
.block_erasers =
{
@@ -11198,13 +10546,11 @@
.vendor = "SST",
.name = "SST49LF040B",
.bustype = BUS_LPC, /* A/A Mux */
- .manufacture_id = SST_ID,
- .model_id = SST_SST49LF040B,
.total_size = 512,
.page_size = 64 * 1024,
.feature_bits = FEATURE_EITHER_RESET | FEATURE_REGISTERMAP,
.tested = TEST_OK_PREW,
- .probe = probe_jedec,
+ {probe_jedec, {2, {SST_ID, SST_SST49LF040B} } },
.probe_timing = 1, /* 150ns */
.block_erasers =
{
@@ -11229,13 +10575,11 @@
.vendor = "SST",
.name = "SST49LF080A",
.bustype = BUS_LPC, /* A/A Mux */
- .manufacture_id = SST_ID,
- .model_id = SST_SST49LF080A,
.total_size = 1024,
.page_size = 4096,
.feature_bits = FEATURE_EITHER_RESET,
.tested = TEST_OK_PREW,
- .probe = probe_jedec,
+ {probe_jedec, {2, {SST_ID, SST_SST49LF080A} } },
.probe_timing = TIMING_FIXME,
.block_erasers =
{
@@ -11259,13 +10603,11 @@
.vendor = "SST",
.name = "SST49LF160C",
.bustype = BUS_LPC,
- .manufacture_id = SST_ID,
- .model_id = SST_SST49LF160C,
.total_size = 2048,
.page_size = 4 * 1024,
.feature_bits = FEATURE_REGISTERMAP,
.tested = TEST_OK_PRE,
- .probe = probe_82802ab,
+ {probe_82802ab, {2, {SST_ID, SST_SST49LF160C} } },
.probe_timing = TIMING_IGNORED, /* routine doesn't use probe_timing (sst49lfxxxc.c) */
.block_erasers =
{
@@ -11292,13 +10634,11 @@
.vendor = "ST",
.name = "M29F002B",
.bustype = BUS_PARALLEL,
- .manufacture_id = ST_ID,
- .model_id = ST_M29F002B,
.total_size = 256,
.page_size = 64 * 1024,
.feature_bits = FEATURE_ADDR_AAA | FEATURE_EITHER_RESET,
.tested = TEST_UNTESTED,
- .probe = probe_jedec,
+ {probe_jedec, {2, {ST_ID, ST_M29F002B} } },
.probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */
.block_erasers =
{
@@ -11324,13 +10664,11 @@
.vendor = "ST",
.name = "M29F002T/NT",
.bustype = BUS_PARALLEL,
- .manufacture_id = ST_ID,
- .model_id = ST_M29F002T,
.total_size = 256,
.page_size = 64 * 1024,
.feature_bits = FEATURE_ADDR_AAA | FEATURE_EITHER_RESET,
.tested = TEST_OK_PREW,
- .probe = probe_jedec,
+ {probe_jedec, {2, {ST_ID, ST_M29F002T} } },
.probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */
.block_erasers =
{
@@ -11356,13 +10694,11 @@
.vendor = "ST",
.name = "M29F040B",
.bustype = BUS_PARALLEL,
- .manufacture_id = ST_ID,
- .model_id = ST_M29F040B,
.total_size = 512,
.page_size = 64 * 1024,
.feature_bits = FEATURE_ADDR_2AA | FEATURE_EITHER_RESET,
.tested = TEST_UNTESTED,
- .probe = probe_jedec,
+ {probe_jedec, {2, {ST_ID, ST_M29F040B} } },
.probe_timing = TIMING_ZERO, /* datasheet specifies no timing */
.block_erasers =
{
@@ -11384,13 +10720,11 @@
.vendor = "ST",
.name = "M29F400BB",
.bustype = BUS_PARALLEL,
- .manufacture_id = ST_ID,
- .model_id = ST_M29F400BB,
.total_size = 512,
.page_size = 64 * 1024,
.feature_bits = FEATURE_ADDR_SHIFTED | FEATURE_EITHER_RESET,
.tested = TEST_UNTESTED,
- .probe = probe_m29f400bt,
+ {probe_m29f400bt, {2, {ST_ID, ST_M29F400BB} } },
.probe_timing = TIMING_IGNORED, /* routine doesn't use probe_timing (m29f400bt.c) */
.block_erasers =
{
@@ -11416,13 +10750,11 @@
.vendor = "ST",
.name = "M29F400BT",
.bustype = BUS_PARALLEL,
- .manufacture_id = ST_ID,
- .model_id = ST_M29F400BT,
.total_size = 512,
.page_size = 64 * 1024,
.feature_bits = FEATURE_ADDR_SHIFTED | FEATURE_EITHER_RESET,
.tested = TEST_UNTESTED,
- .probe = probe_m29f400bt,
+ {probe_m29f400bt, {2, {ST_ID, ST_M29F400BT} } },
.probe_timing = TIMING_IGNORED, /* routine doesn't use probe_timing (m29f400bt.c) */
.block_erasers =
{
@@ -11448,13 +10780,11 @@
.vendor = "ST",
.name = "M29W010B",
.bustype = BUS_PARALLEL,
- .manufacture_id = ST_ID,
- .model_id = ST_M29W010B,
.total_size = 128,
.page_size = 16 * 1024,
.feature_bits = FEATURE_ADDR_2AA | FEATURE_EITHER_RESET,
.tested = TEST_UNTESTED,
- .probe = probe_jedec,
+ {probe_jedec, {2, {ST_ID, ST_M29W010B} } },
.probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */
.block_erasers =
{
@@ -11475,13 +10805,11 @@
.vendor = "ST",
.name = "M29W040B",
.bustype = BUS_PARALLEL,
- .manufacture_id = ST_ID,
- .model_id = ST_M29W040B,
.total_size = 512,
.page_size = 64 * 1024,
.feature_bits = FEATURE_ADDR_2AA | FEATURE_EITHER_RESET,
.tested = TEST_UNTESTED,
- .probe = probe_jedec,
+ {probe_jedec, {2, {ST_ID, ST_M29W040B} } },
.probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */
.block_erasers =
{
@@ -11502,13 +10830,11 @@
.vendor = "ST",
.name = "M29W512B",
.bustype = BUS_PARALLEL,
- .manufacture_id = ST_ID,
- .model_id = ST_M29W512B,
.total_size = 64,
.page_size = 64 * 1024,
.feature_bits = FEATURE_ADDR_2AA | FEATURE_EITHER_RESET,
.tested = TEST_OK_PREW,
- .probe = probe_jedec,
+ {probe_jedec, {2, {ST_ID, ST_M29W512B} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -11526,13 +10852,11 @@
.vendor = "ST",
.name = "M50FLW040A",
.bustype = BUS_FWH | BUS_LPC, /* A/A Mux */
- .manufacture_id = ST_ID,
- .model_id = ST_M50FLW040A,
.total_size = 512,
.page_size = 0,
.feature_bits = FEATURE_REGISTERMAP,
.tested = TEST_UNTESTED,
- .probe = probe_82802ab,
+ {probe_82802ab, {2, {ST_ID, ST_M50FLW040A} } },
.probe_timing = TIMING_FIXME,
.block_erasers =
{
@@ -11559,13 +10883,11 @@
.vendor = "ST",
.name = "M50FLW040B",
.bustype = BUS_FWH | BUS_LPC, /* A/A Mux */
- .manufacture_id = ST_ID,
- .model_id = ST_M50FLW040B,
.total_size = 512,
.page_size = 0,
.feature_bits = FEATURE_REGISTERMAP,
.tested = TEST_UNTESTED,
- .probe = probe_82802ab,
+ {probe_82802ab, {2, {ST_ID, ST_M50FLW040B} } },
.probe_timing = TIMING_FIXME,
.block_erasers =
{
@@ -11592,13 +10914,11 @@
.vendor = "ST",
.name = "M50FLW080A",
.bustype = BUS_FWH | BUS_LPC, /* A/A Mux */
- .manufacture_id = ST_ID,
- .model_id = ST_M50FLW080A,
.total_size = 1024,
.page_size = 0,
.feature_bits = FEATURE_REGISTERMAP,
.tested = TEST_OK_PRE,
- .probe = probe_82802ab,
+ {probe_82802ab, {2, {ST_ID, ST_M50FLW080A} } },
.probe_timing = TIMING_FIXME,
.block_erasers =
{
@@ -11625,13 +10945,11 @@
.vendor = "ST",
.name = "M50FLW080B",
.bustype = BUS_FWH | BUS_LPC, /* A/A Mux */
- .manufacture_id = ST_ID,
- .model_id = ST_M50FLW080B,
.total_size = 1024,
.page_size = 0,
.feature_bits = FEATURE_REGISTERMAP,
.tested = TEST_UNTESTED,
- .probe = probe_82802ab,
+ {probe_82802ab, {2, {ST_ID, ST_M50FLW080B} } },
.probe_timing = TIMING_FIXME,
.block_erasers =
{
@@ -11658,13 +10976,11 @@
.vendor = "ST",
.name = "M50FW002",
.bustype = BUS_FWH, /* A/A Mux */
- .manufacture_id = ST_ID,
- .model_id = ST_M50FW002,
.total_size = 256,
.page_size = 0,
.feature_bits = FEATURE_REGISTERMAP,
.tested = TEST_UNTESTED,
- .probe = probe_82802ab,
+ {probe_82802ab, {2, {ST_ID, ST_M50FW002} } },
.probe_timing = TIMING_IGNORED, /* routine doesn't use probe_timing (sst49lfxxxc.c) */
.block_erasers =
{
@@ -11688,13 +11004,11 @@
.vendor = "ST",
.name = "M50FW016",
.bustype = BUS_FWH, /* A/A Mux */
- .manufacture_id = ST_ID,
- .model_id = ST_M50FW016,
.total_size = 2048,
.page_size = 0,
.feature_bits = FEATURE_REGISTERMAP,
.tested = TEST_UNTESTED,
- .probe = probe_82802ab,
+ {probe_82802ab, {2, {ST_ID, ST_M50FW016} } },
.probe_timing = TIMING_IGNORED, /* routine doesn't use probe_timing (82802ab.c) */
.block_erasers =
{
@@ -11713,13 +11027,11 @@
.vendor = "ST",
.name = "M50FW040",
.bustype = BUS_FWH, /* A/A Mux */
- .manufacture_id = ST_ID,
- .model_id = ST_M50FW040,
.total_size = 512,
.page_size = 0,
.feature_bits = FEATURE_REGISTERMAP,
.tested = TEST_OK_PR,
- .probe = probe_82802ab,
+ {probe_82802ab, {2, {ST_ID, ST_M50FW040} } },
.probe_timing = TIMING_IGNORED, /* routine doesn't use probe_timing (82802ab.c) */
.block_erasers =
{
@@ -11738,13 +11050,11 @@
.vendor = "ST",
.name = "M50FW080",
.bustype = BUS_FWH, /* A/A Mux */
- .manufacture_id = ST_ID,
- .model_id = ST_M50FW080,
.total_size = 1024,
.page_size = 0,
.feature_bits = FEATURE_REGISTERMAP,
.tested = TEST_OK_PREW,
- .probe = probe_82802ab,
+ {probe_82802ab, {2, {ST_ID, ST_M50FW080} } },
.probe_timing = TIMING_IGNORED, /* routine doesn't use probe_timing (82802ab.c) */
.block_erasers =
{
@@ -11763,13 +11073,11 @@
.vendor = "ST",
.name = "M50LPW080",
.bustype = BUS_LPC, /* A/A Mux */
- .manufacture_id = ST_ID,
- .model_id = ST_M50LPW080,
.total_size = 1024,
.page_size = 0,
.feature_bits = FEATURE_REGISTERMAP,
.tested = TEST_UNTESTED,
- .probe = probe_82802ab,
+ {probe_82802ab, {2, {ST_ID, ST_M50LPW080} } },
.probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */
.block_erasers =
{
@@ -11788,13 +11096,11 @@
.vendor = "ST",
.name = "M50LPW116",
.bustype = BUS_LPC, /* A/A Mux */
- .manufacture_id = ST_ID,
- .model_id = ST_M50LPW116,
.total_size = 2048,
.page_size = 0,
.feature_bits = FEATURE_REGISTERMAP,
.tested = TEST_UNTESTED,
- .probe = probe_82802ab,
+ {probe_82802ab, {2, {ST_ID, ST_M50LPW116} } },
.probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */
.block_erasers =
{
@@ -11819,13 +11125,11 @@
.vendor = "SyncMOS/MoselVitelic",
.name = "{F,S,V}29C51001B",
.bustype = BUS_PARALLEL,
- .manufacture_id = SYNCMOS_MVC_ID,
- .model_id = SM_MVC_29C51001B,
.total_size = 128,
.page_size = 512,
.feature_bits = FEATURE_EITHER_RESET,
.tested = TEST_UNTESTED,
- .probe = probe_jedec,
+ {probe_jedec, {2, {SYNCMOS_MVC_ID, SM_MVC_29C51001B} } },
.probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */
.block_erasers =
{
@@ -11846,13 +11150,11 @@
.vendor = "SyncMOS/MoselVitelic",
.name = "{F,S,V}29C51001T",
.bustype = BUS_PARALLEL,
- .manufacture_id = SYNCMOS_MVC_ID,
- .model_id = SM_MVC_29C51001T,
.total_size = 128,
.page_size = 512,
.feature_bits = FEATURE_EITHER_RESET,
.tested = TEST_UNTESTED,
- .probe = probe_jedec,
+ {probe_jedec, {2, {SYNCMOS_MVC_ID, SM_MVC_29C51001T} } },
.probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */
.block_erasers =
{
@@ -11873,13 +11175,11 @@
.vendor = "SyncMOS/MoselVitelic",
.name = "{F,S,V}29C51002B",
.bustype = BUS_PARALLEL,
- .manufacture_id = SYNCMOS_MVC_ID,
- .model_id = SM_MVC_29C51002B,
.total_size = 256,
.page_size = 512,
.feature_bits = FEATURE_EITHER_RESET,
.tested = TEST_UNTESTED,
- .probe = probe_jedec,
+ {probe_jedec, {2, {SYNCMOS_MVC_ID, SM_MVC_29C51002B} } },
.probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */
.block_erasers =
{
@@ -11899,13 +11199,11 @@
.vendor = "SyncMOS/MoselVitelic",
.name = "{F,S,V}29C51002T",
.bustype = BUS_PARALLEL,
- .manufacture_id = SYNCMOS_MVC_ID,
- .model_id = SM_MVC_29C51002T,
.total_size = 256,
.page_size = 512,
.feature_bits = FEATURE_EITHER_RESET,
.tested = TEST_OK_PREW,
- .probe = probe_jedec,
+ {probe_jedec, {2, {SYNCMOS_MVC_ID, SM_MVC_29C51002T} } },
.probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */
.block_erasers =
{
@@ -11925,13 +11223,11 @@
.vendor = "SyncMOS/MoselVitelic",
.name = "{F,S,V}29C51004B",
.bustype = BUS_PARALLEL,
- .manufacture_id = SYNCMOS_MVC_ID,
- .model_id = SM_MVC_29C51004B,
.total_size = 512,
.page_size = 1024,
.feature_bits = FEATURE_EITHER_RESET,
.tested = TEST_UNTESTED,
- .probe = probe_jedec,
+ {probe_jedec, {2, {SYNCMOS_MVC_ID, SM_MVC_29C51004B} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -11952,13 +11248,11 @@
.vendor = "SyncMOS/MoselVitelic",
.name = "{F,S,V}29C51004T",
.bustype = BUS_PARALLEL,
- .manufacture_id = SYNCMOS_MVC_ID,
- .model_id = SM_MVC_29C51004T,
.total_size = 512,
.page_size = 1024,
.feature_bits = FEATURE_EITHER_RESET,
.tested = TEST_UNTESTED,
- .probe = probe_jedec,
+ {probe_jedec, {2, {SYNCMOS_MVC_ID, SM_MVC_29C51004T} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -11979,13 +11273,11 @@
.vendor = "SyncMOS/MoselVitelic",
.name = "{S,V}29C31004B",
.bustype = BUS_PARALLEL,
- .manufacture_id = SYNCMOS_MVC_ID,
- .model_id = SM_MVC_29C31004B,
.total_size = 512,
.page_size = 1024,
.feature_bits = FEATURE_EITHER_RESET,
.tested = TEST_UNTESTED,
- .probe = probe_jedec,
+ {probe_jedec, {2, {SYNCMOS_MVC_ID, SM_MVC_29C31004B} } },
.probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */
.block_erasers =
{
@@ -12006,13 +11298,11 @@
.vendor = "SyncMOS/MoselVitelic",
.name = "{S,V}29C31004T",
.bustype = BUS_PARALLEL,
- .manufacture_id = SYNCMOS_MVC_ID,
- .model_id = SM_MVC_29C31004T,
.total_size = 512,
.page_size = 1024,
.feature_bits = FEATURE_EITHER_RESET,
.tested = TEST_UNTESTED,
- .probe = probe_jedec,
+ {probe_jedec, {2, {SYNCMOS_MVC_ID, SM_MVC_29C31004T} } },
.probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */
.block_erasers =
{
@@ -12033,13 +11323,11 @@
.vendor = "TI",
.name = "TMS29F002RB",
.bustype = BUS_PARALLEL,
- .manufacture_id = TI_OLD_ID,
- .model_id = TI_TMS29F002RB,
.total_size = 256,
.page_size = 16384, /* Non-uniform sectors */
.feature_bits = FEATURE_ADDR_2AA | FEATURE_EITHER_RESET,
.tested = TEST_UNTESTED,
- .probe = probe_jedec,
+ {probe_jedec, {2, {TI_OLD_ID, TI_TMS29F002RB} } },
.probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */
.block_erasers =
{
@@ -12065,13 +11353,11 @@
.vendor = "TI",
.name = "TMS29F002RT",
.bustype = BUS_PARALLEL,
- .manufacture_id = TI_OLD_ID,
- .model_id = TI_TMS29F002RT,
.total_size = 256,
.page_size = 16384, /* Non-uniform sectors */
.feature_bits = FEATURE_ADDR_2AA | FEATURE_EITHER_RESET,
.tested = TEST_UNTESTED,
- .probe = probe_jedec,
+ {probe_jedec, {2, {TI_OLD_ID, TI_TMS29F002RT} } },
.probe_timing = TIMING_ZERO, /* Datasheet has no timing info specified */
.block_erasers =
{
@@ -12097,15 +11383,13 @@
.vendor = "Winbond",
.name = "W25Q80.V",
.bustype = BUS_SPI,
- .manufacture_id = WINBOND_NEX_ID,
- .model_id = WINBOND_NEX_W25Q80_V,
.total_size = 1024,
.page_size = 256,
/* supports SFDP */
/* OTP: 1024B total, 256B reserved; read 0x48; write 0x42, erase 0x44, read ID 0x4B */
.feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP,
.tested = TEST_OK_PREW,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {WINBOND_NEX_ID, WINBOND_NEX_W25Q80_V} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -12137,15 +11421,13 @@
.vendor = "Winbond",
.name = "W25Q16.V",
.bustype = BUS_SPI,
- .manufacture_id = WINBOND_NEX_ID,
- .model_id = WINBOND_NEX_W25Q16_V,
.total_size = 2048,
.page_size = 256,
/* supports SFDP */
/* OTP: 1024B total, 256B reserved; read 0x48; write 0x42, erase 0x44, read ID 0x4B */
.feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP,
.tested = TEST_OK_PREW,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {WINBOND_NEX_ID, WINBOND_NEX_W25Q16_V} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -12177,15 +11459,13 @@
.vendor = "Winbond",
.name = "W25Q32.V",
.bustype = BUS_SPI,
- .manufacture_id = WINBOND_NEX_ID,
- .model_id = WINBOND_NEX_W25Q32_V,
.total_size = 4096,
.page_size = 256,
/* supports SFDP */
/* OTP: 1024B total, 256B reserved; read 0x48; write 0x42, erase 0x44, read ID 0x4B */
.feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP,
.tested = TEST_OK_PREW,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {WINBOND_NEX_ID, WINBOND_NEX_W25Q32_V} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -12217,15 +11497,13 @@
.vendor = "Winbond",
.name = "W25Q64.V",
.bustype = BUS_SPI,
- .manufacture_id = WINBOND_NEX_ID,
- .model_id = WINBOND_NEX_W25Q64_V,
.total_size = 8192,
.page_size = 256,
/* supports SFDP */
/* OTP: 1024B total, 256B reserved; read 0x48; write 0x42, erase 0x44, read ID 0x4B */
.feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP,
.tested = TEST_OK_PREW,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {WINBOND_NEX_ID, WINBOND_NEX_W25Q64_V} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -12257,15 +11535,13 @@
.vendor = "Winbond",
.name = "W25Q128.V",
.bustype = BUS_SPI,
- .manufacture_id = WINBOND_NEX_ID,
- .model_id = WINBOND_NEX_W25Q128_V,
.total_size = 16384,
.page_size = 256,
/* supports SFDP */
/* OTP: 1024B total, 256B reserved; read 0x48; write 0x42, erase 0x44, read ID 0x4B */
.feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP,
.tested = TEST_OK_PREW,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {WINBOND_NEX_ID, WINBOND_NEX_W25Q128_V} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -12297,14 +11573,12 @@
.vendor = "Winbond",
.name = "W25Q20.W",
.bustype = BUS_SPI,
- .manufacture_id = WINBOND_NEX_ID,
- .model_id = WINBOND_NEX_W25Q20_W,
.total_size = 256,
.page_size = 256,
/* OTP: 256B total; read 0x48; write 0x42, erase 0x44, read ID 0x4B */
.feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP,
.tested = TEST_UNTESTED,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {WINBOND_NEX_ID, WINBOND_NEX_W25Q20_W} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -12336,14 +11610,12 @@
.vendor = "Winbond",
.name = "W25Q40.W",
.bustype = BUS_SPI,
- .manufacture_id = WINBOND_NEX_ID,
- .model_id = WINBOND_NEX_W25Q40_W,
.total_size = 512,
.page_size = 256,
/* OTP: 256B total; read 0x48; write 0x42, erase 0x44, read ID 0x4B */
.feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP,
.tested = TEST_UNTESTED,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {WINBOND_NEX_ID, WINBOND_NEX_W25Q40_W} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -12375,14 +11647,12 @@
.vendor = "Winbond",
.name = "W25Q80.W",
.bustype = BUS_SPI,
- .manufacture_id = WINBOND_NEX_ID,
- .model_id = WINBOND_NEX_W25Q80_W,
.total_size = 1024,
.page_size = 256,
/* OTP: 256B total; read 0x48; write 0x42, erase 0x44, read ID 0x4B */
.feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP,
.tested = TEST_UNTESTED,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {WINBOND_NEX_ID, WINBOND_NEX_W25Q80_W} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -12414,15 +11684,13 @@
.vendor = "Winbond",
.name = "W25Q16.W",
.bustype = BUS_SPI,
- .manufacture_id = WINBOND_NEX_ID,
- .model_id = WINBOND_NEX_W25Q16_W,
.total_size = 2048,
.page_size = 256,
/* OTP: 256B total; read 0x48; write 0x42, erase 0x44, read ID 0x4B */
/* QPI enable 0x38, disable 0xFF */
.feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_QPI,
.tested = TEST_UNTESTED,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {WINBOND_NEX_ID, WINBOND_NEX_W25Q16_W} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -12454,15 +11722,13 @@
.vendor = "Winbond",
.name = "W25Q32.W",
.bustype = BUS_SPI,
- .manufacture_id = WINBOND_NEX_ID,
- .model_id = WINBOND_NEX_W25Q32_W,
.total_size = 4096,
.page_size = 256,
/* OTP: 256B total; read 0x48; write 0x42, erase 0x44, read ID 0x4B */
/* QPI enable 0x38, disable 0xFF */
.feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_QPI,
.tested = TEST_OK_PREW,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {WINBOND_NEX_ID, WINBOND_NEX_W25Q32_W} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -12494,15 +11760,13 @@
.vendor = "Winbond",
.name = "W25Q64.W",
.bustype = BUS_SPI,
- .manufacture_id = WINBOND_NEX_ID,
- .model_id = WINBOND_NEX_W25Q64_W,
.total_size = 8192,
.page_size = 256,
/* OTP: 256B total; read 0x48; write 0x42, erase 0x44, read ID 0x4B */
/* QPI enable 0x38, disable 0xFF */
.feature_bits = FEATURE_WRSR_WREN | FEATURE_OTP | FEATURE_QPI,
.tested = TEST_OK_PREW,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {WINBOND_NEX_ID, WINBOND_NEX_W25Q64_W} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -12534,13 +11798,11 @@
.vendor = "Winbond",
.name = "W25X10",
.bustype = BUS_SPI,
- .manufacture_id = WINBOND_NEX_ID,
- .model_id = WINBOND_NEX_W25X10,
.total_size = 128,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_OK_PREW,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {WINBOND_NEX_ID, WINBOND_NEX_W25X10} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -12566,13 +11828,11 @@
.vendor = "Winbond",
.name = "W25X20",
.bustype = BUS_SPI,
- .manufacture_id = WINBOND_NEX_ID,
- .model_id = WINBOND_NEX_W25X20,
.total_size = 256,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_OK_PREW,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {WINBOND_NEX_ID, WINBOND_NEX_W25X20} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -12598,13 +11858,11 @@
.vendor = "Winbond",
.name = "W25X40",
.bustype = BUS_SPI,
- .manufacture_id = WINBOND_NEX_ID,
- .model_id = WINBOND_NEX_W25X40,
.total_size = 512,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_OK_PREW,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {WINBOND_NEX_ID, WINBOND_NEX_W25X40} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -12630,13 +11888,11 @@
.vendor = "Winbond",
.name = "W25X80",
.bustype = BUS_SPI,
- .manufacture_id = WINBOND_NEX_ID,
- .model_id = WINBOND_NEX_W25X80,
.total_size = 1024,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_OK_PREW,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {WINBOND_NEX_ID, WINBOND_NEX_W25X80} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -12662,13 +11918,11 @@
.vendor = "Winbond",
.name = "W25X16",
.bustype = BUS_SPI,
- .manufacture_id = WINBOND_NEX_ID,
- .model_id = WINBOND_NEX_W25X16,
.total_size = 2048,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_OK_PREW,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {WINBOND_NEX_ID, WINBOND_NEX_W25X16} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -12700,13 +11954,11 @@
.vendor = "Winbond",
.name = "W25X32",
.bustype = BUS_SPI,
- .manufacture_id = WINBOND_NEX_ID,
- .model_id = WINBOND_NEX_W25X32,
.total_size = 4096,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_OK_PREW,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {WINBOND_NEX_ID, WINBOND_NEX_W25X32} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -12738,13 +11990,11 @@
.vendor = "Winbond",
.name = "W25X64",
.bustype = BUS_SPI,
- .manufacture_id = WINBOND_NEX_ID,
- .model_id = WINBOND_NEX_W25X64,
.total_size = 8192,
.page_size = 256,
.feature_bits = FEATURE_WRSR_WREN,
.tested = TEST_OK_PROBE,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {WINBOND_NEX_ID, WINBOND_NEX_W25X64} } },
.probe_timing = TIMING_ZERO,
.block_erasers =
{
@@ -12776,13 +12026,11 @@
.vendor = "Winbond",
.name = "W29C010(M)/W29C011A/W29EE011/W29EE012-old",
.bustype = BUS_PARALLEL,
- .manufacture_id = WINBOND_ID,
- .model_id = WINBOND_W29C010,
.total_size = 128,
.page_size = 128,
.feature_bits = FEATURE_LONG_RESET,
.tested = TEST_OK_PREW,
- .probe = probe_w29ee011,
+ {probe_w29ee011, {2, {WINBOND_ID, WINBOND_W29C010} } },
.probe_timing = TIMING_IGNORED, /* routine doesn't use probe_timing (w29ee011.c) */
.block_erasers =
{
@@ -12799,13 +12047,11 @@
.vendor = "Winbond",
.name = "W29C010(M)/W29C011A/W29EE011/W29EE012",
.bustype = BUS_PARALLEL,
- .manufacture_id = WINBOND_ID,
- .model_id = WINBOND_W29C010,
.total_size = 128,
.page_size = 128,
.feature_bits = FEATURE_LONG_RESET,
.tested = TEST_OK_PREW,
- .probe = probe_jedec,
+ {probe_jedec, {2, {WINBOND_ID, WINBOND_W29C010} } },
.probe_timing = 10, /* used datasheet for the W29C011A */
.block_erasers =
{
@@ -12822,13 +12068,11 @@
.vendor = "Winbond",
.name = "W29C020(C)/W29C022",
.bustype = BUS_PARALLEL,
- .manufacture_id = WINBOND_ID,
- .model_id = WINBOND_W29C020,
.total_size = 256,
.page_size = 128,
.feature_bits = FEATURE_LONG_RESET,
.tested = TEST_OK_PREW,
- .probe = probe_jedec,
+ {probe_jedec, {2, {WINBOND_ID, WINBOND_W29C020} } },
.probe_timing = 10,
.block_erasers =
{
@@ -12846,13 +12090,11 @@
.vendor = "Winbond",
.name = "W29C040/P",
.bustype = BUS_PARALLEL,
- .manufacture_id = WINBOND_ID,
- .model_id = WINBOND_W29C040,
.total_size = 512,
.page_size = 256,
.feature_bits = FEATURE_LONG_RESET,
.tested = TEST_UNTESTED,
- .probe = probe_jedec,
+ {probe_jedec, {2, {WINBOND_ID, WINBOND_W29C040} } },
.probe_timing = 10,
.block_erasers =
{
@@ -12870,13 +12112,11 @@
.vendor = "Winbond",
.name = "W39F010",
.bustype = BUS_PARALLEL,
- .manufacture_id = WINBOND_ID,
- .model_id = WINBOND_W39F010,
.total_size = 128,
.page_size = 4 * 1024,
.feature_bits = FEATURE_EITHER_RESET,
.tested = TEST_OK_PREW,
- .probe = probe_jedec,
+ {probe_jedec, {2, {WINBOND_ID, WINBOND_W39F010} } },
.probe_timing = 10,
.block_erasers =
{
@@ -12898,13 +12138,11 @@
.vendor = "Winbond",
.name = "W39L010",
.bustype = BUS_PARALLEL,
- .manufacture_id = WINBOND_ID,
- .model_id = WINBOND_W39L010,
.total_size = 128,
.page_size = 4 * 1024,
.feature_bits = FEATURE_EITHER_RESET,
.tested = TEST_UNTESTED,
- .probe = probe_jedec,
+ {probe_jedec, {2, {WINBOND_ID, WINBOND_W39L010} } },
.probe_timing = 10,
.block_erasers =
{
@@ -12926,13 +12164,11 @@
.vendor = "Winbond",
.name = "W39L020",
.bustype = BUS_PARALLEL,
- .manufacture_id = WINBOND_ID,
- .model_id = WINBOND_W39L020,
.total_size = 256,
.page_size = 4 * 1024,
.feature_bits = FEATURE_EITHER_RESET,
.tested = TEST_UNTESTED,
- .probe = probe_jedec,
+ {probe_jedec, {2, {WINBOND_ID, WINBOND_W39L020} } },
.probe_timing = 10,
.block_erasers =
{
@@ -12957,13 +12193,11 @@
.vendor = "Winbond",
.name = "W39L040",
.bustype = BUS_PARALLEL,
- .manufacture_id = WINBOND_ID,
- .model_id = WINBOND_W39L040,
.total_size = 512,
.page_size = 64 * 1024,
.feature_bits = FEATURE_EITHER_RESET,
.tested = TEST_OK_PR,
- .probe = probe_jedec,
+ {probe_jedec, {2, {WINBOND_ID, WINBOND_W39L040} } },
.probe_timing = 10,
.block_erasers =
{
@@ -12988,13 +12222,11 @@
.vendor = "Winbond",
.name = "W39V040A",
.bustype = BUS_LPC,
- .manufacture_id = WINBOND_ID,
- .model_id = WINBOND_W39V040A,
.total_size = 512,
.page_size = 64 * 1024,
.feature_bits = FEATURE_EITHER_RESET,
.tested = TEST_OK_PREW,
- .probe = probe_jedec,
+ {probe_jedec, {2, {WINBOND_ID, WINBOND_W39V040A} } },
.probe_timing = 10,
.block_erasers =
{
@@ -13016,13 +12248,11 @@
.vendor = "Winbond",
.name = "W39V040B",
.bustype = BUS_LPC,
- .manufacture_id = WINBOND_ID,
- .model_id = WINBOND_W39V040B,
.total_size = 512,
.page_size = 64 * 1024,
.feature_bits = FEATURE_EITHER_RESET,
.tested = TEST_OK_PREW,
- .probe = probe_jedec,
+ {probe_jedec, {2, {WINBOND_ID, WINBOND_W39V040B} } },
.probe_timing = 10,
.block_erasers =
{
@@ -13044,13 +12274,11 @@
.vendor = "Winbond",
.name = "W39V040C",
.bustype = BUS_LPC,
- .manufacture_id = WINBOND_ID,
- .model_id = WINBOND_W39V040C,
.total_size = 512,
.page_size = 64 * 1024,
.feature_bits = FEATURE_EITHER_RESET,
.tested = TEST_OK_PREW,
- .probe = probe_jedec,
+ {probe_jedec, {2, {WINBOND_ID, WINBOND_W39V040C} } },
.probe_timing = 10,
.block_erasers =
{
@@ -13072,13 +12300,11 @@
.vendor = "Winbond",
.name = "W39V040FA",
.bustype = BUS_FWH,
- .manufacture_id = WINBOND_ID,
- .model_id = WINBOND_W39V040FA,
.total_size = 512,
.page_size = 64 * 1024,
.feature_bits = FEATURE_REGISTERMAP | FEATURE_EITHER_RESET,
.tested = TEST_OK_PREW,
- .probe = probe_jedec,
+ {probe_jedec, {2, {WINBOND_ID, WINBOND_W39V040FA} } },
.probe_timing = 10,
.block_erasers =
{
@@ -13104,13 +12330,11 @@
.vendor = "Winbond",
.name = "W39V040FB",
.bustype = BUS_FWH,
- .manufacture_id = WINBOND_ID,
- .model_id = WINBOND_W39V040B,
.total_size = 512,
.page_size = 64 * 1024,
.feature_bits = FEATURE_REGISTERMAP | FEATURE_EITHER_RESET,
.tested = TEST_OK_PREW,
- .probe = probe_jedec,
+ {probe_jedec, {2, {WINBOND_ID, WINBOND_W39V040B} } },
.probe_timing = 10,
.block_erasers =
{
@@ -13133,13 +12357,11 @@
.vendor = "Winbond",
.name = "W39V040FC",
.bustype = BUS_FWH,
- .manufacture_id = WINBOND_ID,
- .model_id = WINBOND_W39V040C,
.total_size = 512,
.page_size = 64 * 1024,
.feature_bits = FEATURE_REGISTERMAP | FEATURE_EITHER_RESET,
.tested = TEST_OK_PREW,
- .probe = probe_jedec,
+ {probe_jedec, {2, {WINBOND_ID, WINBOND_W39V040C} } },
.probe_timing = 10,
.block_erasers =
{
@@ -13161,13 +12383,11 @@
.vendor = "Winbond",
.name = "W39V080A",
.bustype = BUS_LPC,
- .manufacture_id = WINBOND_ID,
- .model_id = WINBOND_W39V080A,
.total_size = 1024,
.page_size = 64 * 1024,
.feature_bits = FEATURE_EITHER_RESET,
.tested = TEST_OK_PREW,
- .probe = probe_jedec,
+ {probe_jedec, {2, {WINBOND_ID, WINBOND_W39V080A} } },
.probe_timing = 10,
.block_erasers =
{
@@ -13189,13 +12409,11 @@
.vendor = "Winbond",
.name = "W49F002U/N",
.bustype = BUS_PARALLEL,
- .manufacture_id = WINBOND_ID,
- .model_id = WINBOND_W49F002U,
.total_size = 256,
.page_size = 128,
.feature_bits = FEATURE_EITHER_RESET,
.tested = TEST_OK_PREW,
- .probe = probe_jedec,
+ {probe_jedec, {2, {WINBOND_ID, WINBOND_W49F002U} } },
.probe_timing = 10,
.block_erasers =
{
@@ -13221,13 +12439,11 @@
.vendor = "Winbond",
.name = "W49F020",
.bustype = BUS_PARALLEL,
- .manufacture_id = WINBOND_ID,
- .model_id = WINBOND_W49F020,
.total_size = 256,
.page_size = 128,
.feature_bits = FEATURE_EITHER_RESET,
.tested = TEST_OK_PROBE,
- .probe = probe_jedec,
+ {probe_jedec, {2, {WINBOND_ID, WINBOND_W49F020} } },
.probe_timing = 10,
.block_erasers =
{
@@ -13245,13 +12461,11 @@
.vendor = "Winbond",
.name = "W49V002A",
.bustype = BUS_LPC,
- .manufacture_id = WINBOND_ID,
- .model_id = WINBOND_W49V002A,
.total_size = 256,
.page_size = 128,
.feature_bits = FEATURE_EITHER_RESET,
.tested = TEST_OK_PREW,
- .probe = probe_jedec,
+ {probe_jedec, {2, {WINBOND_ID, WINBOND_W49V002A} } },
.probe_timing = 10,
.block_erasers =
{
@@ -13277,13 +12491,11 @@
.vendor = "Winbond",
.name = "W49V002FA",
.bustype = BUS_FWH,
- .manufacture_id = WINBOND_ID,
- .model_id = WINBOND_W49V002FA,
.total_size = 256,
.page_size = 128,
.feature_bits = FEATURE_EITHER_RESET,
.tested = TEST_OK_PREW,
- .probe = probe_jedec,
+ {probe_jedec, {2, {WINBOND_ID, WINBOND_W49V002FA} } },
.probe_timing = 10,
.block_erasers =
{
@@ -13309,13 +12521,11 @@
.vendor = "Winbond",
.name = "W39V080FA",
.bustype = BUS_FWH,
- .manufacture_id = WINBOND_ID,
- .model_id = WINBOND_W39V080FA,
.total_size = 1024,
.page_size = 64 * 1024,
.feature_bits = FEATURE_REGISTERMAP | FEATURE_EITHER_RESET,
.tested = TEST_OK_PREW,
- .probe = probe_jedec,
+ {probe_jedec, {2, {WINBOND_ID, WINBOND_W39V080FA} } },
.probe_timing = 10,
.block_erasers =
{
@@ -13338,13 +12548,11 @@
.vendor = "Winbond",
.name = "W39V080FA (dual mode)",
.bustype = BUS_FWH,
- .manufacture_id = WINBOND_ID,
- .model_id = WINBOND_W39V080FA_DM,
.total_size = 512,
.page_size = 64 * 1024,
.feature_bits = FEATURE_REGISTERMAP | FEATURE_EITHER_RESET,
.tested = TEST_UNTESTED,
- .probe = probe_jedec,
+ {probe_jedec, {2, {WINBOND_ID, WINBOND_W39V080FA_DM} } },
.probe_timing = 10,
.block_erasers =
{
@@ -13366,13 +12574,11 @@
.vendor = "Unknown",
.name = "SFDP-capable chip",
.bustype = BUS_SPI,
- .manufacture_id = GENERIC_MANUF_ID,
- .model_id = SFDP_DEVICE_ID,
/* We present our own "report this" text hence we do not
* want the default "This flash part has status UNTESTED..."
* text to be printed. */
.tested = TEST_OK_PREW,
- .probe = probe_spi_sfdp,
+ {probe_spi_sfdp, {FIXME, {GENERIC_MANUF_ID, SFDP_DEVICE_ID} } },
.unlock = spi_disable_blockprotect, /* is this safe? */
.read = spi_chip_read,
/* FIXME: some vendor extensions define this */
@@ -13389,13 +12595,11 @@
.vendor = "Programmer",
.name = "Opaque flash chip",
.bustype = BUS_PROG,
- .manufacture_id = PROGMANUF_ID,
- .model_id = PROGDEV_ID,
.total_size = 0,
.page_size = 256,
/* probe is assumed to work, rest will be filled in by probe */
.tested = TEST_OK_PROBE,
- .probe = probe_opaque,
+ {probe_opaque, {FIXME, {PROGMANUF_ID, PROGDEV_ID} } },
/* eraseblock sizes will be set by the probing function */
.block_erasers =
{
@@ -13411,12 +12615,11 @@
.vendor = "AMIC",
.name = "unknown AMIC SPI chip",
.bustype = BUS_SPI,
- .manufacture_id = AMIC_ID,
- .model_id = GENERIC_DEVICE_ID,
.total_size = 0,
.page_size = 256,
+ .feature_bits = 0,
.tested = TEST_BAD_PREW,
- .probe = probe_spi_rdid4,
+ {probe_spi_rdid4, {4, {AMIC_ID, GENERIC_DEVICE_ID} } },
.probe_timing = TIMING_ZERO,
.write = NULL,
.read = NULL,
@@ -13426,12 +12629,11 @@
.vendor = "Atmel",
.name = "unknown Atmel SPI chip",
.bustype = BUS_SPI,
- .manufacture_id = ATMEL_ID,
- .model_id = GENERIC_DEVICE_ID,
.total_size = 0,
.page_size = 256,
+ .feature_bits = 0,
.tested = TEST_BAD_PREW,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {ATMEL_ID, GENERIC_DEVICE_ID} } },
.probe_timing = TIMING_ZERO,
.write = NULL,
.read = NULL,
@@ -13441,12 +12643,11 @@
.vendor = "Eon",
.name = "unknown Eon SPI chip",
.bustype = BUS_SPI,
- .manufacture_id = EON_ID_NOPREFIX,
- .model_id = GENERIC_DEVICE_ID,
.total_size = 0,
.page_size = 256,
+ .feature_bits = 0,
.tested = TEST_BAD_PREW,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {EON_ID_NOPREFIX, GENERIC_DEVICE_ID} } },
.probe_timing = TIMING_ZERO,
.write = NULL,
.read = NULL,
@@ -13456,12 +12657,11 @@
.vendor = "Macronix",
.name = "unknown Macronix SPI chip",
.bustype = BUS_SPI,
- .manufacture_id = MACRONIX_ID,
- .model_id = GENERIC_DEVICE_ID,
.total_size = 0,
.page_size = 256,
+ .feature_bits = 0,
.tested = TEST_BAD_PREW,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {MACRONIX_ID, GENERIC_DEVICE_ID} } },
.probe_timing = TIMING_ZERO,
.write = NULL,
.read = NULL,
@@ -13471,12 +12671,11 @@
.vendor = "PMC",
.name = "unknown PMC SPI chip",
.bustype = BUS_SPI,
- .manufacture_id = PMC_ID,
- .model_id = GENERIC_DEVICE_ID,
.total_size = 0,
.page_size = 256,
+ .feature_bits = 0,
.tested = TEST_BAD_PREW,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {PMC_ID, GENERIC_DEVICE_ID} } },
.probe_timing = TIMING_ZERO,
.write = NULL,
.read = NULL,
@@ -13486,12 +12685,11 @@
.vendor = "SST",
.name = "unknown SST SPI chip",
.bustype = BUS_SPI,
- .manufacture_id = SST_ID,
- .model_id = GENERIC_DEVICE_ID,
.total_size = 0,
.page_size = 256,
+ .feature_bits = 0,
.tested = TEST_BAD_PREW,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {SST_ID, GENERIC_DEVICE_ID} } },
.probe_timing = TIMING_ZERO,
.write = NULL,
.read = NULL,
@@ -13501,12 +12699,11 @@
.vendor = "ST",
.name = "unknown ST SPI chip",
.bustype = BUS_SPI,
- .manufacture_id = ST_ID,
- .model_id = GENERIC_DEVICE_ID,
.total_size = 0,
.page_size = 256,
+ .feature_bits = 0,
.tested = TEST_BAD_PREW,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {ST_ID, GENERIC_DEVICE_ID} } },
.probe_timing = TIMING_ZERO,
.write = NULL,
.read = NULL,
@@ -13516,12 +12713,11 @@
.vendor = "Sanyo",
.name = "unknown Sanyo SPI chip",
.bustype = BUS_SPI,
- .manufacture_id = SANYO_ID,
- .model_id = GENERIC_DEVICE_ID,
.total_size = 0,
.page_size = 256,
+ .feature_bits = 0,
.tested = TEST_BAD_PREW,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {SANYO_ID, GENERIC_DEVICE_ID} } },
.probe_timing = TIMING_ZERO,
.write = NULL,
.read = NULL,
@@ -13531,12 +12727,11 @@
.vendor = "Winbond",
.name = "unknown Winbond (ex Nexcom) SPI chip",
.bustype = BUS_SPI,
- .manufacture_id = WINBOND_NEX_ID,
- .model_id = GENERIC_DEVICE_ID,
.total_size = 0,
.page_size = 256,
+ .feature_bits = 0,
.tested = TEST_BAD_PREW,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {WINBOND_NEX_ID, GENERIC_DEVICE_ID} } },
.probe_timing = TIMING_ZERO,
.write = NULL,
.read = NULL,
@@ -13546,12 +12741,11 @@
.vendor = "Generic",
.name = "unknown SPI chip (RDID)",
.bustype = BUS_SPI,
- .manufacture_id = GENERIC_MANUF_ID,
- .model_id = GENERIC_DEVICE_ID,
.total_size = 0,
.page_size = 256,
+ .feature_bits = 0,
.tested = TEST_BAD_PREW,
- .probe = probe_spi_rdid,
+ {probe_spi_rdid, {3, {GENERIC_MANUF_ID, GENERIC_DEVICE_ID} } },
.write = NULL,
},
@@ -13559,12 +12753,11 @@
.vendor = "Generic",
.name = "unknown SPI chip (REMS)",
.bustype = BUS_SPI,
- .manufacture_id = GENERIC_MANUF_ID,
- .model_id = GENERIC_DEVICE_ID,
.total_size = 0,
.page_size = 256,
+ .feature_bits = 0,
.tested = TEST_BAD_PREW,
- .probe = probe_spi_rems,
+ {probe_spi_rems, {2, {GENERIC_MANUF_ID, GENERIC_DEVICE_ID} } },
.write = NULL,
},
--
http://www.hailfinger.org/
More information about the flashrom
mailing list