<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
  <title></title>
</head>
<body bgcolor="#ffffff" text="#000000">
Corey Osgood a écrit :
<blockquote
 cite="mid:dd3c80060812141014q353c7747s1aa21503f7642c49@mail.gmail.com"
 type="cite">On Sun, Dec 14, 2008 at 12:53 PM, Stephan GUILLOUX <span
 dir="ltr"><<a moz-do-not-send="true"
 href="mailto:stephan.guilloux@free.fr">stephan.guilloux@free.fr</a>></span>
wrote:<br>
  <div class="gmail_quote">
  <blockquote class="gmail_quote"
 style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
  Hello all,<br>
    <br>
Using flashrom for some times, I find that flashchips array becomes
difficult to read.<br>
To be able to read a single entry, in this array, you need to expand
your editor window<br>
to its maximum size and reduce the font size. Any new field in this
array will result<br>
in a nightmare to read and for support.<br>
    <br>
My suggestion for this, is to detail each line with field names, like
with the extract<br>
below :<br>
[...]<br>
  {<br>
      .vendor        = "AMD",<br>
      .name        = "Am29F016D",<br>
      .manufacture_id    = AMD_ID,<br>
      .model_id    = AM_29F016D,<br>
      .total_size    = 2048,<br>
      .page_size    = 64 * 1024,<br>
      .tested        = TEST_UNTESTED,<br>
      .probe        = probe_29f040b,<br>
      .erase        = erase_29f040b,<br>
      .write        = write_29f040b,<br>
  },<br>
[...]</blockquote>
  <div><br>
Good idea, but someone already had it ;) Take a look at a fresh
checkout of flashrom, not quite the same but very similar.<br>
  </div>
  </div>
</blockquote>
I know. This patch is based on this work too.<br>
But still difficult to parse to add/remove any field.<br>
<br>
<blockquote
 cite="mid:dd3c80060812141014q353c7747s1aa21503f7642c49@mail.gmail.com"
 type="cite">
  <div class="gmail_quote">
  <div><br>
-Corey<br>
  <br>
  <br>
  </div>
  <blockquote class="gmail_quote"
 style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">This
kind of syntax makes flashchips.c rather longer in term of lines, but
keeps it<br>
readable, and easily parsable with an external shell/tool...<br>
    <br>
Any comment ?<br>
    <br>
Also in attachement.<br>
    <br>
  Stephan.<br>
    <br>
Signed-off-by: Stephan Guilloux <mailto:<a moz-do-not-send="true"
 href="mailto:stephan.guilloux@free.fr" target="_blank">stephan.guilloux@free.fr</a>><br>
    <br>
Index: coreboot-v2/util/flashrom/flashchips.c<br>
===================================================================<br>
--- coreboot-v2/util/flashrom/flashchips.c    (révision 3813)<br>
+++ coreboot-v2/util/flashrom/flashchips.c    (copie de travail)<br>
@@ -36,124 +36,278 @@<br>
    * Probe function, Erase function, Write function, Read function<br>
    */<br>
    <br>
-    {"AMD", "Am29F002(N)BB", AMD_ID, AM_29F002BB,<br>
-     256, 256,<br>
-     TEST_UNTESTED,<br>
-     probe_jedec, erase_chip_jedec, write_en29f002a<br>
+    {<br>
+        .vendor        = "AMD",<br>
+        .name        = "Am29F002(N)BB",<br>
+        .manufacture_id    = AMD_ID,<br>
+        .model_id    = AM_29F002BB,<br>
+        .total_size    = 256,<br>
+        .page_size    = 256,<br>
+        .tested        = TEST_UNTESTED,<br>
+        .probe        = probe_jedec,<br>
+        .erase        = erase_chip_jedec,<br>
+        .write        = write_en29f002a,<br>
   },<br>
    <br>
-    {"AMD", "Am29F002(N)BT", AMD_ID, AM_29F002BT,<br>
-     256, 256,<br>
-     TEST_OK_PREW,<br>
-     probe_jedec, erase_chip_jedec, write_en29f002a<br>
+    {<br>
+        .vendor        = "AMD",<br>
+        .name        = "Am29F002(N)BT",<br>
+        .manufacture_id    = AMD_ID,<br>
+        .model_id    = AM_29F002BT,<br>
+        .total_size    = 256,<br>
+        .page_size    = 256,<br>
+        .tested        = TEST_OK_PREW,<br>
+        .probe        = probe_jedec,<br>
+        .erase        = erase_chip_jedec,<br>
+        .write        = write_en29f002a,<br>
   },<br>
    <br>
-    {"AMD", "Am29F016D", AMD_ID, AM_29F016D,<br>
-     2048, 64 * 1024,<br>
-     TEST_UNTESTED,<br>
-     probe_29f040b, erase_29f040b, write_29f040b<br>
+    {<br>
+        .vendor        = "AMD",<br>
+        .name        = "Am29F016D",<br>
+        .manufacture_id    = AMD_ID,<br>
+        .model_id    = AM_29F016D,<br>
+        .total_size    = 2048,<br>
+        .page_size    = 64 * 1024,<br>
+        .tested        = TEST_UNTESTED,<br>
+        .probe        = probe_29f040b,<br>
+        .erase        = erase_29f040b,<br>
+        .write        = write_29f040b,<br>
   },<br>
    <br>
-    {"AMD", "Am29F040B", AMD_ID, AM_29F040B,<br>
-     512, 64 * 1024,<br>
-     TEST_OK_PREW,<br>
-     probe_29f040b, erase_29f040b, write_29f040b<br>
+    {<br>
+        .vendor        = "AMD",<br>
+        .name        = "Am29F040B",<br>
+        .manufacture_id    = AMD_ID,<br>
+        .model_id    = AM_29F040B,<br>
+        .total_size    = 512,<br>
+        .page_size    = 64 * 1024,<br>
+        .tested        = TEST_OK_PREW,<br>
+        .probe        = probe_29f040b,<br>
+        .erase        = erase_29f040b,<br>
+        .write        = write_29f040b,<br>
   },<br>
    <br>
-    {"AMD", "Am29LV040B", AMD_ID, AM_29LV040B,<br>
-     512, 64 * 1024,<br>
-     TEST_UNTESTED,<br>
-     probe_29f040b, erase_29f040b, write_29f040b<br>
+    {<br>
+        .vendor        = "AMD",<br>
+        .name        = "Am29LV040B",<br>
+        .manufacture_id    = AMD_ID,<br>
+        .model_id    = AM_29LV040B,<br>
+        .total_size    = 512,<br>
+        .page_size    = 64 * 1024,<br>
+        .tested        = TEST_UNTESTED,<br>
+        .probe        = probe_29f040b,<br>
+        .erase        = erase_29f040b,<br>
+        .write        = write_29f040b,<br>
   },<br>
    <br>
-    {"ASD", "AE49F2008", ASD_ID, ASD_AE49F2008,<br>
-     256, 128,<br>
-     TEST_UNTESTED,<br>
-     probe_jedec, erase_chip_jedec, write_jedec<br>
+    {<br>
+        .vendor        = "ASD",<br>
+        .name        = "AE49F2008",<br>
+        .manufacture_id    = ASD_ID,<br>
+        .model_id    = ASD_AE49F2008,<br>
+        .total_size    = 256,<br>
+        .page_size    = 128,<br>
+        .tested        = TEST_UNTESTED,<br>
+        .probe        = probe_jedec,<br>
+        .erase        = erase_chip_jedec,<br>
+        .write        = write_jedec,<br>
   },<br>
    <br>
-    {"Atmel", "AT25DF021", ATMEL_ID, AT_25DF021,<br>
-     256, 256,<br>
-     TEST_UNTESTED,<br>
-     probe_spi_rdid, NULL, NULL, spi_chip_read<br>
+    {<br>
+        .vendor        = "Atmel",<br>
+        .name        = "AT25DF021",<br>
+        .manufacture_id    = ATMEL_ID,<br>
+        .model_id    = AT_25DF021,<br>
+        .total_size    = 256,<br>
+        .page_size    = 256,<br>
+        .tested        = TEST_UNTESTED,<br>
+        .probe        = probe_spi_rdid,<br>
+        .erase        = NULL,<br>
+        .write        = NULL,<br>
+        .read        = spi_chip_read,<br>
   },<br>
    <br>
-    {"Atmel", "AT25DF041A", ATMEL_ID, AT_25DF041A,<br>
-     512, 256,<br>
-     TEST_UNTESTED,<br>
-     probe_spi_rdid, NULL, NULL, spi_chip_read<br>
+    {<br>
+        .vendor        = "Atmel",<br>
+        .name        = "AT25DF041A",<br>
+        .manufacture_id    = ATMEL_ID,<br>
+        .model_id    = AT_25DF041A,<br>
+        .total_size    = 512,<br>
+        .page_size    = 256,<br>
+        .tested        = TEST_UNTESTED,<br>
+        .probe        = probe_spi_rdid,<br>
+        .erase        = NULL,<br>
+        .write        = NULL,<br>
+        .read        = spi_chip_read,<br>
   },<br>
    <br>
-    {"Atmel", "AT25DF081", ATMEL_ID, AT_25DF081,<br>
-     1024, 256,<br>
-     TEST_UNTESTED,<br>
-     probe_spi_rdid, NULL, NULL, spi_chip_read<br>
+    {<br>
+        .vendor        = "Atmel",<br>
+        .name        = "AT25DF081",<br>
+        .manufacture_id    = ATMEL_ID,<br>
+        .model_id    = AT_25DF081,<br>
+        .total_size    = 1024,<br>
+        .page_size    = 256,<br>
+        .tested        = TEST_UNTESTED,<br>
+        .probe        = probe_spi_rdid,<br>
+        .erase        = NULL,<br>
+        .write        = NULL,<br>
+        .read        = spi_chip_read,<br>
   },<br>
    <br>
-    {"Atmel", "AT25DF161", ATMEL_ID, AT_25DF161,<br>
-     2048, 256,<br>
-     TEST_UNTESTED,<br>
-     probe_spi_rdid, NULL, NULL, spi_chip_read<br>
+    {<br>
+        .vendor        = "Atmel",<br>
+        .name        = "AT25DF161",<br>
+        .manufacture_id    = ATMEL_ID,<br>
+        .model_id    = AT_25DF161,<br>
+        .total_size    = 2048,<br>
+        .page_size    = 256,<br>
+        .tested        = TEST_UNTESTED,<br>
+        .probe        = probe_spi_rdid,<br>
+        .erase        = NULL,<br>
+        .write        = NULL,<br>
+        .read        = spi_chip_read,<br>
   },<br>
    <br>
-    {"Atmel", "AT25DF321", ATMEL_ID, AT_25DF321,<br>
-     4096, 256,<br>
-     TEST_OK_PREW,<br>
-     probe_spi_rdid, spi_chip_erase_c7, spi_chip_write, spi_chip_read<br>
+    {<br>
+        .vendor        = "Atmel",<br>
+        .name        = "AT25DF321",<br>
+        .manufacture_id    = ATMEL_ID,<br>
+        .model_id    = AT_25DF321,<br>
+        .total_size    = 4096,<br>
+        .page_size    = 256,<br>
+        .tested        = TEST_OK_PREW,<br>
+        .probe        = probe_spi_rdid,<br>
+        .erase        = spi_chip_erase_c7,<br>
+        .write        = spi_chip_write,<br>
+        .read        = spi_chip_read,<br>
   },<br>
    <br>
-    {"Atmel", "AT25DF321A", ATMEL_ID, AT_25DF321A,<br>
-     4096, 256,<br>
-     TEST_UNTESTED,<br>
-     probe_spi_rdid, NULL, NULL, spi_chip_read<br>
+    {<br>
+        .vendor        = "Atmel",<br>
+        .name        = "AT25DF321A",<br>
+        .manufacture_id    = ATMEL_ID,<br>
+        .model_id    = AT_25DF321A,<br>
+        .total_size    = 4096,<br>
+        .page_size    = 256,<br>
+        .tested        = TEST_UNTESTED,<br>
+        .probe        = probe_spi_rdid,<br>
+        .erase        = NULL,<br>
+        .write        = NULL,<br>
+        .read        = spi_chip_read,<br>
   },<br>
    <br>
-    {"Atmel", "AT25DF641", ATMEL_ID, AT_25DF641,<br>
-     8192, 256,<br>
-     TEST_UNTESTED,<br>
-     probe_spi_rdid, NULL, NULL, spi_chip_read<br>
+    {<br>
+        .vendor        = "Atmel",<br>
+        .name        = "AT25DF641",<br>
+        .manufacture_id    = ATMEL_ID,<br>
+        .model_id    = AT_25DF641,<br>
+        .total_size    = 8192,<br>
+        .page_size    = 256,<br>
+        .tested        = TEST_UNTESTED,<br>
+        .probe        = probe_spi_rdid,<br>
+        .erase        = NULL,<br>
+        .write        = NULL,<br>
+        .read        = spi_chip_read,<br>
   },<br>
    <br>
-    {"Atmel", "AT25F512B", ATMEL_ID, AT_25F512B,<br>
-     64, 256,<br>
-     TEST_UNTESTED,<br>
-     probe_spi_rdid, NULL, NULL, spi_chip_read<br>
+    {<br>
+        .vendor        = "Atmel",<br>
+        .name        = "AT25F512B",<br>
+        .manufacture_id    = ATMEL_ID,<br>
+        .model_id    = AT_25F512B,<br>
+        .total_size    = 64,<br>
+        .page_size    = 256,<br>
+        .tested        = TEST_UNTESTED,<br>
+        .probe        = probe_spi_rdid,<br>
+        .erase        = NULL,<br>
+        .write        = NULL,<br>
+        .read        = spi_chip_read,<br>
   },<br>
    <br>
-    {"Atmel", "AT25FS010", ATMEL_ID, AT_25FS010,<br>
-     128, 256,<br>
-     TEST_UNTESTED,<br>
-     probe_spi_rdid, NULL, NULL, spi_chip_read<br>
+    {<br>
+        .vendor        = "Atmel",<br>
+        .name        = "AT25FS010",<br>
+        .manufacture_id    = ATMEL_ID,<br>
+        .model_id    = AT_25FS010,<br>
+        .total_size    = 128,<br>
+        .page_size    = 256,<br>
+        .tested        = TEST_UNTESTED,<br>
+        .probe        = probe_spi_rdid,<br>
+        .erase        = NULL,<br>
+        .write        = NULL,<br>
+        .read        = spi_chip_read,<br>
   },<br>
    <br>
-    {"Atmel", "AT25FS040", ATMEL_ID, AT_25FS040,<br>
-     512, 256,<br>
-     TEST_UNTESTED,<br>
-     probe_spi_rdid, NULL, NULL, spi_chip_read<br>
+    {<br>
+        .vendor        = "Atmel",<br>
+        .name        = "AT25FS040",<br>
+        .manufacture_id    = ATMEL_ID,<br>
+        .model_id    = AT_25FS040,<br>
+        .total_size    = 512,<br>
+        .page_size    = 256,<br>
+        .tested        = TEST_UNTESTED,<br>
+        .probe        = probe_spi_rdid,<br>
+        .erase        = NULL,<br>
+        .write        = NULL,<br>
+        .read        = spi_chip_read,<br>
   },<br>
    <br>
-    {"Atmel", "AT26DF041", ATMEL_ID, AT_26DF041,<br>
-     512, 256,<br>
-     TEST_UNTESTED,<br>
-     probe_spi_rdid, NULL, NULL /* Incompatible Page write
*/,spi_chip_read<br>
+    {<br>
+        .vendor        = "Atmel",<br>
+        .name        = "AT26DF041",<br>
+        .manufacture_id    = ATMEL_ID,<br>
+        .model_id    = AT_26DF041,<br>
+        .total_size    = 512,<br>
+        .page_size    = 256,<br>
+        .tested        = TEST_UNTESTED,<br>
+        .probe        = probe_spi_rdid,<br>
+        .erase        = NULL,<br>
+        .write        = NULL /* Incompatible Page write */,<br>
+        .read        = spi_chip_read,<br>
   },<br>
    <br>
-    {"Atmel", "AT26DF081A", ATMEL_ID, AT_26DF081A,<br>
-     1024, 256,<br>
-     TEST_UNTESTED,<br>
-     probe_spi_rdid, NULL, NULL, spi_chip_read<br>
+    {<br>
+        .vendor        = "Atmel",<br>
+        .name        = "AT26DF081A",<br>
+        .manufacture_id    = ATMEL_ID,<br>
+        .model_id    = AT_26DF081A,<br>
+        .total_size    = 1024,<br>
+        .page_size    = 256,<br>
+        .tested        = TEST_UNTESTED,<br>
+        .probe        = probe_spi_rdid,<br>
+        .erase        = NULL,<br>
+        .write        = NULL,<br>
+        .read        = spi_chip_read,<br>
   },<br>
    <br>
-    {"Atmel", "AT26DF161", ATMEL_ID, AT_26DF161,<br>
-     2048, 256,<br>
-     TEST_UNTESTED,<br>
-     probe_spi_rdid, NULL, NULL, spi_chip_read<br>
+    {<br>
+        .vendor        = "Atmel",<br>
+        .name        = "AT26DF161",<br>
+        .manufacture_id    = ATMEL_ID,<br>
+        .model_id    = AT_26DF161,<br>
+        .total_size    = 2048,<br>
+        .page_size    = 256,<br>
+        .tested        = TEST_UNTESTED,<br>
+        .probe        = probe_spi_rdid,<br>
+        .erase        = NULL,<br>
+        .write        = NULL,<br>
+        .read        = spi_chip_read,<br>
   },<br>
    <br>
-    {"Atmel", "AT26DF161A", ATMEL_ID, AT_26DF161A,<br>
-     2048, 256,<br>
-     TEST_UNTESTED,<br>
-     probe_spi_rdid, NULL, NULL, spi_chip_read<br>
+    {<br>
+        .vendor        = "Atmel",<br>
+        .name        = "AT26DF161A",<br>
+        .manufacture_id    = ATMEL_ID,<br>
+        .model_id    = AT_26DF161A,<br>
+        .total_size    = 2048,<br>
+        .page_size    = 256,<br>
+        .tested        = TEST_UNTESTED,<br>
+        .probe        = probe_spi_rdid,<br>
+        .erase        = NULL,<br>
+        .write        = NULL,<br>
+        .read        = spi_chip_read,<br>
   },<br>
    <br>
   /*The AT26DF321 has the same ID as the AT25DF321. */<br>
@@ -164,815 +318,1796 @@<br>
     },<br>
   */<br>
    <br>
-    {"Atmel", "AT26F004", ATMEL_ID, AT_26F004,<br>
-     512, 256,<br>
-     TEST_UNTESTED,<br>
-     probe_spi_rdid, NULL, NULL /* Incompatible Page write
*/,spi_chip_read<br>
+    {<br>
+        .vendor        = "Atmel",<br>
+        .name        = "AT26F004",<br>
+        .manufacture_id    = ATMEL_ID,<br>
+        .model_id    = AT_26F004,<br>
+        .total_size    = 512,<br>
+        .page_size    = 256,<br>
+        .tested        = TEST_UNTESTED,<br>
+        .probe        = probe_spi_rdid,<br>
+        .erase        = NULL,<br>
+        .write        = NULL /* Incompatible Page write */,<br>
+        .read        = spi_chip_read,<br>
   },<br>
    <br>
-    {"Atmel", "AT29C020", ATMEL_ID, AT_29C020,<br>
-     256, 256,<br>
-     TEST_OK_PREW,<br>
-     probe_jedec, erase_chip_jedec, write_jedec<br>
+    {<br>
+        .vendor        = "Atmel",<br>
+        .name        = "AT29C020",<br>
+        .manufacture_id    = ATMEL_ID,<br>
+        .model_id    = AT_29C020,<br>
+        .total_size    = 256,<br>
+        .page_size    = 256,<br>
+        .tested        = TEST_OK_PREW,<br>
+        .probe        = probe_jedec,<br>
+        .erase        = erase_chip_jedec,<br>
+        .write        = write_jedec,<br>
   },<br>
    <br>
-    {"Atmel", "AT29C040A", ATMEL_ID, AT_29C040A,<br>
-     512, 256,<br>
-     TEST_UNTESTED,<br>
-     probe_jedec, erase_chip_jedec, write_jedec<br>
+    {<br>
+        .vendor        = "Atmel",<br>
+        .name        = "AT29C040A",<br>
+        .manufacture_id    = ATMEL_ID,<br>
+        .model_id    = AT_29C040A,<br>
+        .total_size    = 512,<br>
+        .page_size    = 256,<br>
+        .tested        = TEST_UNTESTED,<br>
+        .probe        = probe_jedec,<br>
+        .erase        = erase_chip_jedec,<br>
+        .write        = write_jedec,<br>
   },<br>
    <br>
-    {"Atmel", "AT45CS1282", ATMEL_ID, AT_45CS1282,<br>
-     16896/*!*/, 1056/*!*/,<br>
-     TEST_BAD_READ,<br>
-     probe_spi_rdid, NULL, NULL /* Incompatible Page write */, NULL /*
Incompatible read */<br>
+    {<br>
+        .vendor        = "Atmel",<br>
+        .name        = "AT45CS1282",<br>
+        .manufacture_id    = ATMEL_ID,<br>
+        .model_id    = AT_45CS1282,<br>
+        .total_size    = 16896/*!*/,<br>
+        .page_size    = 1056/*!*/,<br>
+        .tested        = TEST_BAD_READ,<br>
+        .probe        = probe_spi_rdid,<br>
+        .erase        = NULL,<br>
+        .write        = NULL /* Incompatible Page write */,<br>
+        .read        = NULL /* Incompatible read */,<br>
   }, /* No power of two sizes */<br>
    <br>
-    {"Atmel", "AT45DB011D", ATMEL_ID, AT_45DB011D,<br>
-     128/*!*/, 256/*!*/,<br>
-     TEST_BAD_READ,<br>
-     probe_spi_rdid, NULL, NULL, NULL<br>
+    {<br>
+        .vendor        = "Atmel",<br>
+        .name        = "AT45DB011D",<br>
+        .manufacture_id    = ATMEL_ID,<br>
+        .model_id    = AT_45DB011D,<br>
+        .total_size    = 128/*!*/,<br>
+        .page_size    = 256/*!*/,<br>
+        .tested        = TEST_BAD_READ,<br>
+        .probe        = probe_spi_rdid,<br>
+        .erase        = NULL,<br>
+        .write        = NULL,<br>
+        .read        = NULL,<br>
   }, /* Size can only be determined from status register */<br>
    <br>
-    {"Atmel", "AT45DB021D", ATMEL_ID, AT_45DB021D,<br>
-     256/*!*/, 256/*!*/,<br>
-     TEST_BAD_READ,<br>
-     probe_spi_rdid, NULL, NULL, NULL<br>
+    {<br>
+        .vendor        = "Atmel",<br>
+        .name        = "AT45DB021D",<br>
+        .manufacture_id    = ATMEL_ID,<br>
+        .model_id    = AT_45DB021D,<br>
+        .total_size    = 256/*!*/,<br>
+        .page_size    = 256/*!*/,<br>
+        .tested        = TEST_BAD_READ,<br>
+        .probe        = probe_spi_rdid,<br>
+        .erase        = NULL,<br>
+        .write        = NULL,<br>
+        .read        = NULL,<br>
   }, /* Size can only be determined from status register */<br>
    <br>
-    {"Atmel", "AT45DB041D", ATMEL_ID, AT_45DB041D,<br>
-     512/*!*/, 256/*!*/,<br>
-     TEST_BAD_READ,<br>
-     probe_spi_rdid, NULL, NULL, NULL<br>
+    {<br>
+        .vendor        = "Atmel",<br>
+        .name        = "AT45DB041D",<br>
+        .manufacture_id    = ATMEL_ID,<br>
+        .model_id    = AT_45DB041D,<br>
+        .total_size    = 512/*!*/,<br>
+        .page_size    = 256/*!*/,<br>
+        .tested        = TEST_BAD_READ,<br>
+        .probe        = probe_spi_rdid,<br>
+        .erase        = NULL,<br>
+        .write        = NULL,<br>
+        .read        = NULL,<br>
   }, /* Size can only be determined from status register */<br>
    <br>
-    {"Atmel", "AT45DB081D", ATMEL_ID, AT_45DB081D,<br>
-     1024/*!*/, 256/*!*/,<br>
-     TEST_BAD_READ,<br>
-     probe_spi_rdid, NULL, NULL, NULL<br>
+    {<br>
+        .vendor        = "Atmel",<br>
+        .name        = "AT45DB081D",<br>
+        .manufacture_id    = ATMEL_ID,<br>
+        .model_id    = AT_45DB081D,<br>
+        .total_size    = 1024/*!*/,<br>
+        .page_size    = 256/*!*/,<br>
+        .tested        = TEST_BAD_READ,<br>
+        .probe        = probe_spi_rdid,<br>
+        .erase        = NULL,<br>
+        .write        = NULL,<br>
+        .read        = NULL,<br>
   }, /* Size can only be determined from status register */<br>
    <br>
-    {"Atmel", "AT45DB161D", ATMEL_ID, AT_45DB161D,<br>
-     2048/*!*/, 512/*!*/,<br>
-     TEST_BAD_READ,<br>
-     probe_spi_rdid, NULL, NULL, NULL<br>
+    {<br>
+        .vendor        = "Atmel",<br>
+        .name        = "AT45DB161D",<br>
+        .manufacture_id    = ATMEL_ID,<br>
+        .model_id    = AT_45DB161D,<br>
+        .total_size    = 2048/*!*/,<br>
+        .page_size    = 512/*!*/,<br>
+        .tested        = TEST_BAD_READ,<br>
+        .probe        = probe_spi_rdid,<br>
+        .erase        = NULL,<br>
+        .write        = NULL,<br>
+        .read        = NULL,<br>
   }, /* Size can only be determined from status register */<br>
    <br>
-    {"Atmel", "AT45DB321C", ATMEL_ID, AT_45DB321C,<br>
-     4224/*!*/, 528/*!*/,<br>
-     TEST_BAD_READ,<br>
-     probe_spi_rdid, NULL, NULL, NULL /* Incompatible read */<br>
+    {<br>
+        .vendor        = "Atmel",<br>
+        .name        = "AT45DB321C",<br>
+        .manufacture_id    = ATMEL_ID,<br>
+        .model_id    = AT_45DB321C,<br>
+        .total_size    = 4224/*!*/,<br>
+        .page_size    = 528/*!*/,<br>
+        .tested        = TEST_BAD_READ,<br>
+        .probe        = probe_spi_rdid,<br>
+        .erase        = NULL,<br>
+        .write        = NULL,<br>
+        .read        = NULL /* Incompatible read */,<br>
   }, /* No power of two sizes */<br>
    <br>
-    {"Atmel", "AT45DB321D", ATMEL_ID, AT_45DB321D,<br>
-     4096/*!*/, 512/*!*/,<br>
-     TEST_BAD_READ,<br>
-     probe_spi_rdid, NULL, NULL, NULL<br>
+    {<br>
+        .vendor        = "Atmel",<br>
+        .name        = "AT45DB321D",<br>
+        .manufacture_id    = ATMEL_ID,<br>
+        .model_id    = AT_45DB321D,<br>
+        .total_size    = 4096/*!*/,<br>
+        .page_size    = 512/*!*/,<br>
+        .tested        = TEST_BAD_READ,<br>
+        .probe        = probe_spi_rdid,<br>
+        .erase        = NULL,<br>
+        .write        = NULL,<br>
+        .read        = NULL,<br>
   }, /* Size can only be determined from status register */<br>
    <br>
-    {"Atmel", "AT45DB642D", ATMEL_ID, AT_45DB642D,<br>
-     8192/*!*/, 1024/*!*/,<br>
-     TEST_BAD_READ,<br>
-     probe_spi_rdid, NULL, NULL, NULL<br>
+    {<br>
+        .vendor        = "Atmel",<br>
+        .name        = "AT45DB642D",<br>
+        .manufacture_id    = ATMEL_ID,<br>
+        .model_id    = AT_45DB642D,<br>
+        .total_size    = 8192/*!*/,<br>
+        .page_size    = 1024/*!*/,<br>
+        .tested        = TEST_BAD_READ,<br>
+        .probe        = probe_spi_rdid,<br>
+        .erase        = NULL,<br>
+        .write        = NULL,<br>
+        .read        = NULL,<br>
   }, /* Size can only be determined from status register */<br>
    <br>
-    {"Atmel", "AT49F002(N)", ATMEL_ID, AT_49F002N,<br>
-     256, 256,<br>
-     TEST_UNTESTED,<br>
-     probe_jedec, erase_chip_jedec, write_49f002<br>
+    {<br>
+        .vendor        = "Atmel",<br>
+        .name        = "AT49F002(N)",<br>
+        .manufacture_id    = ATMEL_ID,<br>
+        .model_id    = AT_49F002N,<br>
+        .total_size    = 256,<br>
+        .page_size    = 256,<br>
+        .tested        = TEST_UNTESTED,<br>
+        .probe        = probe_jedec,<br>
+        .erase        = erase_chip_jedec,<br>
+        .write        = write_49f002,<br>
   },<br>
    <br>
-    {"Atmel", "AT49F002(N)T", ATMEL_ID, AT_49F002NT,<br>
-     256, 256,<br>
-     TEST_OK_PREW,<br>
-     probe_jedec, erase_chip_jedec, write_49f002<br>
+    {<br>
+        .vendor        = "Atmel",<br>
+        .name        = "AT49F002(N)T",<br>
+        .manufacture_id    = ATMEL_ID,<br>
+        .model_id    = AT_49F002NT,<br>
+        .total_size    = 256,<br>
+        .page_size    = 256,<br>
+        .tested        = TEST_OK_PREW,<br>
+        .probe        = probe_jedec,<br>
+        .erase        = erase_chip_jedec,<br>
+        .write        = write_49f002,<br>
   },<br>
    <br>
-    {"AMIC", "A25L40P", AMIC_ID, AMIC_A25L40P,<br>
-     512, 256,<br>
-     TEST_OK_PREW,<br>
-     probe_spi_rdid4, spi_chip_erase_c7, spi_chip_write, spi_chip_read<br>
+    {<br>
+        .vendor        = "AMIC",<br>
+        .name        = "A25L40P",<br>
+        .manufacture_id    = AMIC_ID,<br>
+        .model_id    = AMIC_A25L40P,<br>
+        .total_size    = 512,<br>
+        .page_size    = 256,<br>
+        .tested        = TEST_OK_PREW,<br>
+        .probe        = probe_spi_rdid4,<br>
+        .erase        = spi_chip_erase_c7,<br>
+        .write        = spi_chip_write,<br>
+        .read        = spi_chip_read,<br>
   },<br>
    <br>
-    {"AMIC", "A29002B", AMIC_ID_NOPREFIX, AMIC_A29002B,<br>
-     256, 64 * 1024,<br>
-     TEST_UNTESTED,<br>
-     probe_29f002, erase_29f002, write_29f002<br>
+    {<br>
+        .vendor        = "AMIC",<br>
+        .name        = "A29002B",<br>
+        .manufacture_id    = AMIC_ID_NOPREFIX,<br>
+        .model_id    = AMIC_A29002B,<br>
+        .total_size    = 256,<br>
+        .page_size    = 64 * 1024,<br>
+        .tested        = TEST_UNTESTED,<br>
+        .probe        = probe_29f002,<br>
+        .erase        = erase_29f002,<br>
+        .write        = write_29f002,<br>
   },<br>
    <br>
-    {"AMIC", "A29002T", AMIC_ID_NOPREFIX, AMIC_A29002T,<br>
-     256, 64 * 1024,<br>
-     TEST_OK_PREW,<br>
-     probe_29f002, erase_29f002, write_29f002<br>
+    {<br>
+        .vendor        = "AMIC",<br>
+        .name        = "A29002T",<br>
+        .manufacture_id    = AMIC_ID_NOPREFIX,<br>
+        .model_id    = AMIC_A29002T,<br>
+        .total_size    = 256,<br>
+        .page_size    = 64 * 1024,<br>
+        .tested        = TEST_OK_PREW,<br>
+        .probe        = probe_29f002,<br>
+        .erase        = erase_29f002,<br>
+        .write        = write_29f002,<br>
   },<br>
    <br>
-    {"AMIC", "A29040B", AMIC_ID_NOPREFIX, AMIC_A29040B,<br>
-     512, 64 * 1024,<br>
-     TEST_OK_PR,<br>
-     probe_29f040b, erase_29f040b, write_29f040b<br>
+    {<br>
+        .vendor        = "AMIC",<br>
+        .name        = "A29040B",<br>
+        .manufacture_id    = AMIC_ID_NOPREFIX,<br>
+        .model_id    = AMIC_A29040B,<br>
+        .total_size    = 512,<br>
+        .page_size    = 64 * 1024,<br>
+        .tested        = TEST_OK_PR,<br>
+        .probe        = probe_29f040b,<br>
+        .erase        = erase_29f040b,<br>
+        .write        = write_29f040b,<br>
   },<br>
    <br>
-    {"AMIC", "A49LF040A", AMIC_ID_NOPREFIX, AMIC_A49LF040A,<br>
-     512, 64 * 1024,<br>
-     TEST_OK_PREW,<br>
-     probe_49fl00x, erase_49fl00x, write_49fl00x<br>
+    {<br>
+        .vendor        = "AMIC",<br>
+        .name        = "A49LF040A",<br>
+        .manufacture_id    = AMIC_ID_NOPREFIX,<br>
+        .model_id    = AMIC_A49LF040A,<br>
+        .total_size    = 512,<br>
+        .page_size    = 64 * 1024,<br>
+        .tested        = TEST_OK_PREW,<br>
+        .probe        = probe_49fl00x,<br>
+        .erase        = erase_49fl00x,<br>
+        .write        = write_49fl00x,<br>
   },<br>
    <br>
-    {"EMST", "F49B002UA", EMST_ID, EMST_F49B002UA,<br>
-     256, 4096,<br>
-     TEST_UNTESTED,<br>
-     probe_jedec, erase_chip_jedec, write_49f002<br>
+    {<br>
+        .vendor        = "EMST",<br>
+        .name        = "F49B002UA",<br>
+        .manufacture_id    = EMST_ID,<br>
+        .model_id    = EMST_F49B002UA,<br>
+        .total_size    = 256,<br>
+        .page_size    = 4096,<br>
+        .tested        = TEST_UNTESTED,<br>
+        .probe        = probe_jedec,<br>
+        .erase        = erase_chip_jedec,<br>
+        .write        = write_49f002,<br>
   },<br>
    <br>
-    {"EON", "EN29F002(A)(N)B", EON_ID, EN_29F002B,<br>
-     256, 256,<br>
-     TEST_UNTESTED,<br>
-     probe_jedec, erase_chip_jedec, write_en29f002a<br>
+    {<br>
+        .vendor        = "EON",<br>
+        .name        = "EN29F002(A)(N)B",<br>
+        .manufacture_id    = EON_ID,<br>
+        .model_id    = EN_29F002B,<br>
+        .total_size    = 256,<br>
+        .page_size    = 256,<br>
+        .tested        = TEST_UNTESTED,<br>
+        .probe        = probe_jedec,<br>
+        .erase        = erase_chip_jedec,<br>
+        .write        = write_en29f002a,<br>
   },<br>
    <br>
-    {"EON", "EN29F002(A)(N)T", EON_ID, EN_29F002T,<br>
-     256, 256,<br>
-     TEST_OK_PREW,<br>
-     probe_jedec, erase_chip_jedec, write_en29f002a<br>
+    {<br>
+        .vendor        = "EON",<br>
+        .name        = "EN29F002(A)(N)T",<br>
+        .manufacture_id    = EON_ID,<br>
+        .model_id    = EN_29F002T,<br>
+        .total_size    = 256,<br>
+        .page_size    = 256,<br>
+        .tested        = TEST_OK_PREW,<br>
+        .probe        = probe_jedec,<br>
+        .erase        = erase_chip_jedec,<br>
+        .write        = write_en29f002a,<br>
   },<br>
    <br>
-    {"Fujitsu", "MBM29F004BC", FUJITSU_ID, MBM29F004BC,<br>
-     512, 64 * 1024,<br>
-     TEST_UNTESTED,<br>
-     probe_jedec, NULL, NULL<br>
+    {<br>
+        .vendor        = "Fujitsu",<br>
+        .name        = "MBM29F004BC",<br>
+        .manufacture_id    = FUJITSU_ID,<br>
+        .model_id    = MBM29F004BC,<br>
+        .total_size    = 512,<br>
+        .page_size    = 64 * 1024,<br>
+        .tested        = TEST_UNTESTED,<br>
+        .probe        = probe_jedec,<br>
+        .erase        = NULL,<br>
+        .write        = NULL,<br>
   },<br>
    <br>
-    {"Fujitsu", "MBM29F004TC", FUJITSU_ID, MBM29F004TC,<br>
-     512, 64 * 1024,<br>
-     TEST_UNTESTED,<br>
-     probe_jedec, NULL, NULL<br>
+    {<br>
+        .vendor        = "Fujitsu",<br>
+        .name        = "MBM29F004TC",<br>
+        .manufacture_id    = FUJITSU_ID,<br>
+        .model_id    = MBM29F004TC,<br>
+        .total_size    = 512,<br>
+        .page_size    = 64 * 1024,<br>
+        .tested        = TEST_UNTESTED,<br>
+        .probe        = probe_jedec,<br>
+        .erase        = NULL,<br>
+        .write        = NULL,<br>
   },<br>
    <br>
-    {"Fujitsu", "MBM29F400BC", FUJITSU_ID, MBM29F400BC,<br>
-     512, 64 * 1024,<br>
-     TEST_UNTESTED,<br>
-     probe_m29f400bt, erase_m29f400bt, write_coreboot_m29f400bt<br>
+    {<br>
+        .vendor        = "Fujitsu",<br>
+        .name        = "MBM29F400BC",<br>
+        .manufacture_id    = FUJITSU_ID,<br>
+        .model_id    = MBM29F400BC,<br>
+        .total_size    = 512,<br>
+        .page_size    = 64 * 1024,<br>
+        .tested        = TEST_UNTESTED,<br>
+        .probe        = probe_m29f400bt,<br>
+        .erase        = erase_m29f400bt,<br>
+        .write        = write_coreboot_m29f400bt,<br>
   },<br>
    <br>
-    {"Fujitsu", "MBM29F400TC", FUJITSU_ID, MBM29F400TC,<br>
-     512, 64 * 1024,<br>
-     TEST_UNTESTED,<br>
-     probe_m29f400bt, erase_m29f400bt, write_coreboot_m29f400bt<br>
+    {<br>
+        .vendor        = "Fujitsu",<br>
+        .name        = "MBM29F400TC",<br>
+        .manufacture_id    = FUJITSU_ID,<br>
+        .model_id    = MBM29F400TC,<br>
+        .total_size    = 512,<br>
+        .page_size    = 64 * 1024,<br>
+        .tested        = TEST_UNTESTED,<br>
+        .probe        = probe_m29f400bt,<br>
+        .erase        = erase_m29f400bt,<br>
+        .write        = write_coreboot_m29f400bt,<br>
   },<br>
    <br>
-    {"Intel", "82802AB", INTEL_ID, 173,<br>
-     512, 64 * 1024,<br>
-     TEST_OK_PREW,<br>
-     probe_82802ab, erase_82802ab, write_82802ab<br>
+    {<br>
+        .vendor        = "Intel",<br>
+        .name        = "82802AB",<br>
+        .manufacture_id    = INTEL_ID,<br>
+        .model_id    = 173,<br>
+        .total_size    = 512,<br>
+        .page_size    = 64 * 1024,<br>
+        .tested        = TEST_OK_PREW,<br>
+        .probe        = probe_82802ab,<br>
+        .erase        = erase_82802ab,<br>
+        .write        = write_82802ab,<br>
   },<br>
    <br>
-    {"Intel", "82802AC", INTEL_ID, 172,<br>
-     1024, 64 * 1024,<br>
-     TEST_OK_PREW,<br>
-     probe_82802ab, erase_82802ab, write_82802ab<br>
+    {<br>
+        .vendor        = "Intel",<br>
+        .name        = "82802AC",<br>
+        .manufacture_id    = INTEL_ID,<br>
+        .model_id    = 172,<br>
+        .total_size    = 1024,<br>
+        .page_size    = 64 * 1024,<br>
+        .tested        = TEST_OK_PREW,<br>
+        .probe        = probe_82802ab,<br>
+        .erase        = erase_82802ab,<br>
+        .write        = write_82802ab,<br>
   },<br>
    <br>
-    {"Macronix", "MX25L512", MX_ID, MX_25L512,<br>
-     64, 256,<br>
-     TEST_UNTESTED,<br>
-     probe_spi_rdid, spi_chip_erase_c7, spi_chip_write, spi_chip_read<br>
+    {<br>
+        .vendor        = "Macronix",<br>
+        .name        = "MX25L512",<br>
+        .manufacture_id    = MX_ID,<br>
+        .model_id    = MX_25L512,<br>
+        .total_size    = 64,<br>
+        .page_size    = 256,<br>
+        .tested        = TEST_UNTESTED,<br>
+        .probe        = probe_spi_rdid,<br>
+        .erase        = spi_chip_erase_c7,<br>
+        .write        = spi_chip_write,<br>
+        .read        = spi_chip_read,<br>
   },<br>
    <br>
-    {"Macronix", "MX25L1005", MX_ID, MX_25L1005,<br>
-     128, 256,<br>
-     TEST_UNTESTED,<br>
-     probe_spi_rdid, spi_chip_erase_c7, spi_chip_write, spi_chip_read<br>
+    {<br>
+        .vendor        = "Macronix",<br>
+        .name        = "MX25L1005",<br>
+        .manufacture_id    = MX_ID,<br>
+        .model_id    = MX_25L1005,<br>
+        .total_size    = 128,<br>
+        .page_size    = 256,<br>
+        .tested        = TEST_UNTESTED,<br>
+        .probe        = probe_spi_rdid,<br>
+        .erase        = spi_chip_erase_c7,<br>
+        .write        = spi_chip_write,<br>
+        .read        = spi_chip_read,<br>
   },<br>
    <br>
-    {"Macronix", "MX25L2005", MX_ID, MX_25L2005,<br>
-     256, 256,<br>
-     TEST_UNTESTED,<br>
-     probe_spi_rdid, spi_chip_erase_c7, spi_chip_write, spi_chip_read<br>
+    {<br>
+        .vendor        = "Macronix",<br>
+        .name        = "MX25L2005",<br>
+        .manufacture_id    = MX_ID,<br>
+        .model_id    = MX_25L2005,<br>
+        .total_size    = 256,<br>
+        .page_size    = 256,<br>
+        .tested        = TEST_UNTESTED,<br>
+        .probe        = probe_spi_rdid,<br>
+        .erase        = spi_chip_erase_c7,<br>
+        .write        = spi_chip_write,<br>
+        .read        = spi_chip_read,<br>
   },<br>
    <br>
-    {"Macronix", "MX25L4005", MX_ID, MX_25L4005,<br>
-     512, 256,<br>
-     TEST_OK_PREW,<br>
-     probe_spi_rdid, spi_chip_erase_c7, spi_chip_write, spi_chip_read<br>
+    {<br>
+        .vendor        = "Macronix",<br>
+        .name        = "MX25L4005",<br>
+        .manufacture_id    = MX_ID,<br>
+        .model_id    = MX_25L4005,<br>
+        .total_size    = 512,<br>
+        .page_size    = 256,<br>
+        .tested        = TEST_OK_PREW,<br>
+        .probe        = probe_spi_rdid,<br>
+        .erase        = spi_chip_erase_c7,<br>
+        .write        = spi_chip_write,<br>
+        .read        = spi_chip_read,<br>
   },<br>
    <br>
-    {"Macronix", "MX25L8005", MX_ID, MX_25L8005,<br>
-     1024, 256,<br>
-     TEST_OK_PREW,<br>
-     probe_spi_rdid, spi_chip_erase_c7, spi_chip_write, spi_chip_read<br>
+    {<br>
+        .vendor        = "Macronix",<br>
+        .name        = "MX25L8005",<br>
+        .manufacture_id    = MX_ID,<br>
+        .model_id    = MX_25L8005,<br>
+        .total_size    = 1024,<br>
+        .page_size    = 256,<br>
+        .tested        = TEST_OK_PREW,<br>
+        .probe        = probe_spi_rdid,<br>
+        .erase        = spi_chip_erase_c7,<br>
+        .write        = spi_chip_write,<br>
+        .read        = spi_chip_read,<br>
   },<br>
    <br>
-    {"Macronix", "MX25L1605", MX_ID, MX_25L1605,<br>
-     2048, 256,<br>
-     TEST_UNTESTED,<br>
-     probe_spi_rdid, spi_chip_erase_c7, spi_chip_write, spi_chip_read<br>
+    {<br>
+        .vendor        = "Macronix",<br>
+        .name        = "MX25L1605",<br>
+        .manufacture_id    = MX_ID,<br>
+        .model_id    = MX_25L1605,<br>
+        .total_size    = 2048,<br>
+        .page_size    = 256,<br>
+        .tested        = TEST_UNTESTED,<br>
+        .probe        = probe_spi_rdid,<br>
+        .erase        = spi_chip_erase_c7,<br>
+        .write        = spi_chip_write,<br>
+        .read        = spi_chip_read,<br>
   },<br>
    <br>
-    {"Macronix", "MX25L3205", MX_ID, MX_25L3205,<br>
-     4096, 256,<br>
-     TEST_OK_PREW,<br>
-     probe_spi_rdid, spi_chip_erase_c7, spi_chip_write, spi_chip_read<br>
+    {<br>
+        .vendor        = "Macronix",<br>
+        .name        = "MX25L3205",<br>
+        .manufacture_id    = MX_ID,<br>
+        .model_id    = MX_25L3205,<br>
+        .total_size    = 4096,<br>
+        .page_size    = 256,<br>
+        .tested        = TEST_OK_PREW,<br>
+        .probe        = probe_spi_rdid,<br>
+        .erase        = spi_chip_erase_c7,<br>
+        .write        = spi_chip_write,<br>
+        .read        = spi_chip_read,<br>
   },<br>
    <br>
-    {"Macronix", "MX25L6405", MX_ID, MX_25L6405,<br>
-     8192, 256,<br>
-     TEST_UNTESTED,<br>
-     probe_spi_rdid, spi_chip_erase_c7, spi_chip_write, spi_chip_read<br>
+    {<br>
+        .vendor        = "Macronix",<br>
+        .name        = "MX25L6405",<br>
+        .manufacture_id    = MX_ID,<br>
+        .model_id    = MX_25L6405,<br>
+        .total_size    = 8192,<br>
+        .page_size    = 256,<br>
+        .tested        = TEST_UNTESTED,<br>
+        .probe        = probe_spi_rdid,<br>
+        .erase        = spi_chip_erase_c7,<br>
+        .write        = spi_chip_write,<br>
+        .read        = spi_chip_read,<br>
   },<br>
    <br>
-    {"Macronix", "MX29F002B", MX_ID, MX_29F002B,<br>
-     256, 64 * 1024,<br>
-     TEST_UNTESTED,<br>
-     probe_29f002, erase_29f002, write_29f002<br>
+    {<br>
+        .vendor        = "Macronix",<br>
+        .name        = "MX29F002B",<br>
+        .manufacture_id    = MX_ID,<br>
+        .model_id    = MX_29F002B,<br>
+        .total_size    = 256,<br>
+        .page_size    = 64 * 1024,<br>
+        .tested        = TEST_UNTESTED,<br>
+        .probe        = probe_29f002,<br>
+        .erase        = erase_29f002,<br>
+        .write        = write_29f002,<br>
   },<br>
    <br>
-    {"Macronix", "MX29F002T", MX_ID, MX_29F002T,<br>
-     256, 64 * 1024,<br>
-     TEST_UNTESTED,<br>
-     probe_29f002, erase_29f002, write_29f002<br>
+    {<br>
+        .vendor        = "Macronix",<br>
+        .name        = "MX29F002T",<br>
+        .manufacture_id    = MX_ID,<br>
+        .model_id    = MX_29F002T,<br>
+        .total_size    = 256,<br>
+        .page_size    = 64 * 1024,<br>
+        .tested        = TEST_UNTESTED,<br>
+        .probe        = probe_29f002,<br>
+        .erase        = erase_29f002,<br>
+        .write        = write_29f002,<br>
   },<br>
    <br>
-    {"Macronix", "MX29LV040C", MX_ID, MX_29LV040C,<br>
-     512, 64 * 1024,<br>
-     TEST_OK_PR,<br>
-     probe_29f002, erase_29f002, write_29f002<br>
+    {<br>
+        .vendor        = "Numonyx",<br>
+        .name        = "M25PE10",<br>
+        .manufacture_id    = ST_ID,<br>
+        .model_id    = 0x8011,<br>
+        .total_size    = 128,<br>
+        .page_size    = 256,<br>
+        .tested        = TEST_UNTESTED,<br>
+        .probe        = probe_spi_rdid,<br>
+        .erase        = spi_chip_erase_d8,<br>
+        .write        = spi_chip_write,<br>
+        .read        = spi_chip_read,<br>
   },<br>
    <br>
-    {"Numonyx", "M25PE10", ST_ID, 0x8011,<br>
-     128, 256,<br>
-     TEST_UNTESTED,<br>
-     probe_spi_rdid, spi_chip_erase_d8, spi_chip_write, spi_chip_read<br>
+    {<br>
+        .vendor        = "Numonyx",<br>
+        .name        = "M25PE20",<br>
+        .manufacture_id    = ST_ID,<br>
+        .model_id    = 0x8012,<br>
+        .total_size    = 256,<br>
+        .page_size    = 256,<br>
+        .tested        = TEST_UNTESTED,<br>
+        .probe        = probe_spi_rdid,<br>
+        .erase        = spi_chip_erase_d8,<br>
+        .write        = spi_chip_write,<br>
+        .read        = spi_chip_read,<br>
   },<br>
    <br>
-    {"Numonyx", "M25PE20", ST_ID, 0x8012,<br>
-     256, 256,<br>
-     TEST_UNTESTED,<br>
-     probe_spi_rdid, spi_chip_erase_d8, spi_chip_write, spi_chip_read<br>
+    {<br>
+        .vendor        = "Numonyx",<br>
+        .name        = "M25PE40",<br>
+        .manufacture_id    = ST_ID,<br>
+        .model_id    = 0x8013,<br>
+        .total_size    = 256,<br>
+        .page_size    = 256,<br>
+        .tested        = TEST_UNTESTED,<br>
+        .probe        = probe_spi_rdid,<br>
+        .erase        = spi_chip_erase_d8,<br>
+        .write        = spi_chip_write,<br>
+        .read        = spi_chip_read,<br>
   },<br>
    <br>
-    {"Numonyx", "M25PE40", ST_ID, 0x8013,<br>
-     256, 256,<br>
-     TEST_UNTESTED,<br>
-     probe_spi_rdid, spi_chip_erase_d8, spi_chip_write, spi_chip_read<br>
+    {<br>
+        .vendor        = "Numonyx",<br>
+        .name        = "M25PE80",<br>
+        .manufacture_id    = ST_ID,<br>
+        .model_id    = 0x8014,<br>
+        .total_size    = 1024,<br>
+        .page_size    = 256,<br>
+        .tested        = TEST_OK_PREW,<br>
+        .probe        = probe_spi_rdid,<br>
+        .erase        = spi_chip_erase_d8,<br>
+        .write        = spi_chip_write,<br>
+        .read        = spi_chip_read,<br>
   },<br>
    <br>
-    {"Numonyx", "M25PE80", ST_ID, 0x8014,<br>
-     1024, 256,<br>
-     TEST_OK_PREW,<br>
-     probe_spi_rdid, spi_chip_erase_d8, spi_chip_write, spi_chip_read<br>
+    {<br>
+        .vendor        = "Numonyx",<br>
+        .name        = "M25PE16",<br>
+        .manufacture_id    = ST_ID,<br>
+        .model_id    = 0x8015,<br>
+        .total_size    = 2048,<br>
+        .page_size    = 256,<br>
+        .tested        = TEST_UNTESTED,<br>
+        .probe        = probe_spi_rdid,<br>
+        .erase        = spi_chip_erase_d8,<br>
+        .write        = spi_chip_write,<br>
+        .read        = spi_chip_read,<br>
   },<br>
    <br>
-    {"Numonyx", "M25PE16", ST_ID, 0x8015,<br>
-     2048, 256,<br>
-     TEST_UNTESTED,<br>
-     probe_spi_rdid, spi_chip_erase_d8, spi_chip_write, spi_chip_read<br>
+    {<br>
+        .vendor        = "PMC",<br>
+        .name        = "Pm25LV010",<br>
+        .manufacture_id    = PMC_ID,<br>
+        .model_id    = PMC_25LV010,<br>
+        .total_size    = 128,<br>
+        .page_size    = 256,<br>
+        .tested        = TEST_UNTESTED,<br>
+        .probe        = probe_spi_rdid,<br>
+        .erase        = spi_chip_erase_c7,<br>
+        .write        = spi_chip_write,<br>
+        .read        = spi_chip_read,<br>
   },<br>
    <br>
-    {"PMC", "Pm25LV010", PMC_ID, PMC_25LV010,<br>
-     128, 256,<br>
-     TEST_UNTESTED,<br>
-     probe_spi_rdid, spi_chip_erase_c7, spi_chip_write, spi_chip_read<br>
+    {<br>
+        .vendor        = "PMC",<br>
+        .name        = "Pm25LV016B",<br>
+        .manufacture_id    = PMC_ID,<br>
+        .model_id    = PMC_25LV016B,<br>
+        .total_size    = 2048,<br>
+        .page_size    = 256,<br>
+        .tested        = TEST_UNTESTED,<br>
+        .probe        = probe_spi_rdid,<br>
+        .erase        = spi_chip_erase_c7,<br>
+        .write        = spi_chip_write,<br>
+        .read        = spi_chip_read,<br>
   },<br>
    <br>
-    {"PMC", "Pm25LV016B", PMC_ID, PMC_25LV016B,<br>
-     2048, 256,<br>
-     TEST_UNTESTED,<br>
-     probe_spi_rdid, spi_chip_erase_c7, spi_chip_write, spi_chip_read<br>
+    {<br>
+        .vendor        = "PMC",<br>
+        .name        = "Pm25LV020",<br>
+        .manufacture_id    = PMC_ID,<br>
+        .model_id    = PMC_25LV020,<br>
+        .total_size    = 256,<br>
+        .page_size    = 256,<br>
+        .tested        = TEST_UNTESTED,<br>
+        .probe        = probe_spi_rdid,<br>
+        .erase        = spi_chip_erase_c7,<br>
+        .write        = spi_chip_write,<br>
+        .read        = spi_chip_read,<br>
   },<br>
    <br>
-    {"PMC", "Pm25LV020", PMC_ID, PMC_25LV020,<br>
-     256, 256,<br>
-     TEST_UNTESTED,<br>
-     probe_spi_rdid, spi_chip_erase_c7, spi_chip_write, spi_chip_read<br>
+    {<br>
+        .vendor        = "PMC",<br>
+        .name        = "Pm25LV040",<br>
+        .manufacture_id    = PMC_ID,<br>
+        .model_id    = PMC_25LV040,<br>
+        .total_size    = 512,<br>
+        .page_size    = 256,<br>
+        .tested        = TEST_UNTESTED,<br>
+        .probe        = probe_spi_rdid,<br>
+        .erase        = spi_chip_erase_c7,<br>
+        .write        = spi_chip_write,<br>
+        .read        = spi_chip_read,<br>
   },<br>
    <br>
-    {"PMC", "Pm25LV040", PMC_ID, PMC_25LV040,<br>
-     512, 256,<br>
-     TEST_UNTESTED,<br>
-     probe_spi_rdid, spi_chip_erase_c7, spi_chip_write, spi_chip_read<br>
+    {<br>
+        .vendor        = "PMC",<br>
+        .name        = "Pm25LV080B",<br>
+        .manufacture_id    = PMC_ID,<br>
+        .model_id    = PMC_25LV080B,<br>
+        .total_size    = 1024,<br>
+        .page_size    = 256,<br>
+        .tested        = TEST_UNTESTED,<br>
+        .probe        = probe_spi_rdid,<br>
+        .erase        = spi_chip_erase_c7,<br>
+        .write        = spi_chip_write,<br>
+        .read        = spi_chip_read,<br>
   },<br>
    <br>
-    {"PMC", "Pm25LV080B", PMC_ID, PMC_25LV080B,<br>
-     1024, 256,<br>
-     TEST_UNTESTED,<br>
-     probe_spi_rdid, spi_chip_erase_c7, spi_chip_write, spi_chip_read<br>
+    {<br>
+        .vendor        = "PMC",<br>
+        .name        = "Pm25LV512",<br>
+        .manufacture_id    = PMC_ID,<br>
+        .model_id    = PMC_25LV512,<br>
+        .total_size    = 64,<br>
+        .page_size    = 256,<br>
+        .tested        = TEST_UNTESTED,<br>
+        .probe        = probe_spi_rdid,<br>
+        .erase        = spi_chip_erase_c7,<br>
+        .write        = spi_chip_write,<br>
+        .read        = spi_chip_read,<br>
   },<br>
    <br>
-    {"PMC", "Pm25LV512", PMC_ID, PMC_25LV512,<br>
-     64, 256,<br>
-     TEST_UNTESTED,<br>
-     probe_spi_rdid, spi_chip_erase_c7, spi_chip_write, spi_chip_read<br>
+    {<br>
+        .vendor        = "PMC",<br>
+        .name        = "Pm49FL002",<br>
+        .manufacture_id    = PMC_ID_NOPREFIX,<br>
+        .model_id    = PMC_49FL002,<br>
+        .total_size    = 256,<br>
+        .page_size    = 16 * 1024,<br>
+        .tested        = TEST_OK_PREW,<br>
+        .probe        = probe_49fl00x,<br>
+        .erase        = erase_49fl00x,<br>
+        .write        = write_49fl00x,<br>
   },<br>
    <br>
-    {"PMC", "Pm49FL002", PMC_ID_NOPREFIX, PMC_49FL002,<br>
-     256, 16 * 1024,<br>
-     TEST_OK_PREW,<br>
-     probe_49fl00x, erase_49fl00x, write_49fl00x<br>
+    {<br>
+        .vendor        = "PMC",<br>
+        .name        = "Pm49FL004",<br>
+        .manufacture_id    = PMC_ID_NOPREFIX,<br>
+        .model_id    = PMC_49FL004,<br>
+        .total_size    = 512,<br>
+        .page_size    = 64 * 1024,<br>
+        .tested        = TEST_OK_PREW,<br>
+        .probe        = probe_49fl00x,<br>
+        .erase        = erase_49fl00x,<br>
+        .write        = write_49fl00x,<br>
   },<br>
    <br>
-    {"PMC", "Pm49FL004", PMC_ID_NOPREFIX,PMC_49FL004,<br>
-     512, 64 * 1024,<br>
-     TEST_OK_PREW,<br>
-     probe_49fl00x, erase_49fl00x, write_49fl00x<br>
+    {<br>
+        .vendor        = "Sharp",<br>
+        .name        = "LHF00L04",<br>
+        .manufacture_id    = SHARP_ID,<br>
+        .model_id    = SHARP_LHF00L04,<br>
+        .total_size    = 1024,<br>
+        .page_size    = 64 * 1024,<br>
+        .tested        = TEST_UNTESTED,<br>
+        .probe        = probe_lhf00l04,<br>
+        .erase        = erase_lhf00l04,<br>
+        .write        = write_lhf00l04,<br>
   },<br>
    <br>
-    {"Sharp", "LHF00L04", SHARP_ID, SHARP_LHF00L04,<br>
-     1024, 64 * 1024,<br>
-     TEST_UNTESTED,<br>
-     probe_lhf00l04, erase_lhf00l04, write_lhf00l04<br>
+    {<br>
+        .vendor        = "Spansion",<br>
+        .name        = "S25FL016A",<br>
+        .manufacture_id    = SPANSION_ID,<br>
+        .model_id    = SPANSION_S25FL016A,<br>
+        .total_size    = 2048,<br>
+        .page_size    = 256,<br>
+        .tested        = TEST_OK_PREW,<br>
+        .probe        = probe_spi_rdid,<br>
+        .erase        = spi_chip_erase_c7,<br>
+        .write        = spi_chip_write,<br>
+        .read        = spi_chip_read,<br>
   },<br>
    <br>
-    {"Spansion", "S25FL016A", SPANSION_ID, SPANSION_S25FL016A,<br>
-     2048, 256,<br>
-     TEST_OK_PREW,<br>
-     probe_spi_rdid, spi_chip_erase_c7, spi_chip_write, spi_chip_read<br>
+    {<br>
+        .vendor        = "SST",<br>
+        .name        = "SST25VF016B",<br>
+        .manufacture_id    = SST_ID,<br>
+        .model_id    = SST_25VF016B,<br>
+        .total_size    = 2048,<br>
+        .page_size    = 256,<br>
+        .tested        = TEST_OK_PREW,<br>
+        .probe        = probe_spi_rdid,<br>
+        .erase        = spi_chip_erase_c7,<br>
+        .write        = spi_chip_write,<br>
+        .read        = spi_chip_read,<br>
   },<br>
    <br>
-    {"SST", "SST25VF016B", SST_ID, SST_25VF016B,<br>
-     2048, 256,<br>
-     TEST_OK_PREW,<br>
-     probe_spi_rdid, spi_chip_erase_c7, spi_chip_write, spi_chip_read<br>
+    {<br>
+        .vendor        = "SST",<br>
+        .name        = "SST25VF032B",<br>
+        .manufacture_id    = SST_ID,<br>
+        .model_id    = SST_25VF032B,<br>
+        .total_size    = 4096,<br>
+        .page_size    = 256,<br>
+        .tested        = TEST_OK_PREW,<br>
+        .probe        = probe_spi_rdid,<br>
+        .erase        = spi_chip_erase_c7,<br>
+        .write        = spi_chip_write,<br>
+        .read        = spi_chip_read,<br>
   },<br>
    <br>
-    {"SST", "SST25VF032B", SST_ID, SST_25VF032B,<br>
-     4096, 256,<br>
-     TEST_OK_PREW,<br>
-     probe_spi_rdid, spi_chip_erase_c7, spi_chip_write, spi_chip_read<br>
+    {<br>
+        .vendor        = "SST",<br>
+        .name        = "SST25VF040B",<br>
+        .manufacture_id    = SST_ID,<br>
+        .model_id    = SST_25VF040B,<br>
+        .total_size    = 512,<br>
+        .page_size    = 256,<br>
+        .tested        = TEST_UNTESTED,<br>
+        .probe        = probe_spi_rdid,<br>
+        .erase        = spi_chip_erase_c7,<br>
+        .write        = spi_chip_write,<br>
+        .read        = spi_chip_read,<br>
   },<br>
    <br>
-    {"SST", "SST25VF040B", SST_ID, SST_25VF040B,<br>
-     512, 256,<br>
-     TEST_UNTESTED,<br>
-     probe_spi_rdid, spi_chip_erase_c7, spi_chip_write, spi_chip_read<br>
+    {<br>
+        .vendor        = "SST",<br>
+        .name        = "SST25VF080B",<br>
+        .manufacture_id    = SST_ID,<br>
+        .model_id    = SST_25VF080B,<br>
+        .total_size    = 1024,<br>
+        .page_size    = 256,<br>
+        .tested        = TEST_UNTESTED,<br>
+        .probe        = probe_spi_rdid,<br>
+        .erase        = spi_chip_erase_60_c7,<br>
+        .write        = spi_chip_write,<br>
+        .read        = spi_chip_read,<br>
   },<br>
    <br>
-    {"SST", "SST25VF080B", SST_ID, SST_25VF080B,<br>
-     1024, 256,<br>
-     TEST_UNTESTED,<br>
-     probe_spi_rdid, spi_chip_erase_60_c7, spi_chip_write,
spi_chip_read<br>
+    {<br>
+        .vendor        = "SST",<br>
+        .name        = "SST28SF040A",<br>
+        .manufacture_id    = SST_ID,<br>
+        .model_id    = SST_28SF040,<br>
+        .total_size    = 512,<br>
+        .page_size    = 256,<br>
+        .tested        = TEST_UNTESTED,<br>
+        .probe        = probe_28sf040,<br>
+        .erase        = erase_28sf040,<br>
+        .write        = write_28sf040,<br>
   },<br>
    <br>
-    {"SST", "SST28SF040A", SST_ID, SST_28SF040,<br>
-     512, 256,<br>
-     TEST_UNTESTED,<br>
-     probe_28sf040, erase_28sf040, write_28sf040<br>
+    {<br>
+        .vendor        = "SST",<br>
+        .name        = "SST29EE010",<br>
+        .manufacture_id    = SST_ID,<br>
+        .model_id    = SST_29EE010,<br>
+        .total_size    = 128,<br>
+        .page_size    = 128,<br>
+        .tested        = TEST_OK_PREW,<br>
+        .probe        = probe_jedec,<br>
+        .erase        = erase_chip_jedec,<br>
+        .write        = write_jedec,<br>
   },<br>
    <br>
-    {"SST", "SST29EE010", SST_ID, SST_29EE010,<br>
-     128, 128,<br>
-     TEST_OK_PREW,<br>
-     probe_jedec, erase_chip_jedec, write_jedec<br>
+    {<br>
+        .vendor        = "SST",<br>
+        .name        = "SST29LE010",<br>
+        .manufacture_id    = SST_ID,<br>
+        .model_id    = SST_29LE010,<br>
+        .total_size    = 128,<br>
+        .page_size    = 128,<br>
+        .tested        = TEST_UNTESTED,<br>
+        .probe        = probe_jedec,<br>
+        .erase        = erase_chip_jedec,<br>
+        .write        = write_jedec,<br>
   },<br>
    <br>
-    {"SST", "SST29LE010", SST_ID, SST_29LE010,<br>
-     128, 128,<br>
-     TEST_UNTESTED,<br>
-     probe_jedec, erase_chip_jedec, write_jedec<br>
+    {<br>
+        .vendor        = "SST",<br>
+        .name        = "SST29EE020A",<br>
+        .manufacture_id    = SST_ID,<br>
+        .model_id    = SST_29EE020A,<br>
+        .total_size    = 256,<br>
+        .page_size    = 128,<br>
+        .tested        = TEST_UNTESTED,<br>
+        .probe        = probe_jedec,<br>
+        .erase        = erase_chip_jedec,<br>
+        .write        = write_jedec,<br>
   },<br>
    <br>
-    {"SST", "SST29EE020A", SST_ID, SST_29EE020A,<br>
-     256, 128,<br>
-     TEST_UNTESTED,<br>
-     probe_jedec, erase_chip_jedec, write_jedec<br>
+    {<br>
+        .vendor        = "SST",<br>
+        .name        = "SST29LE020",<br>
+        .manufacture_id    = SST_ID,<br>
+        .model_id    = SST_29LE020,<br>
+        .total_size    = 256,<br>
+        .page_size    = 128,<br>
+        .tested        = TEST_UNTESTED,<br>
+        .probe        = probe_jedec,<br>
+        .erase        = erase_chip_jedec,<br>
+        .write        = write_jedec,<br>
   },<br>
    <br>
-    {"SST", "SST29LE020", SST_ID, SST_29LE020,<br>
-     256, 128,<br>
-     TEST_UNTESTED,<br>
-     probe_jedec, erase_chip_jedec, write_jedec<br>
+    {<br>
+        .vendor        = "SST",<br>
+        .name        = "SST39SF010A",<br>
+        .manufacture_id    = SST_ID,<br>
+        .model_id    = SST_39SF010,<br>
+        .total_size    = 128,<br>
+        .page_size    = 4096,<br>
+        .tested        = TEST_OK_PREW,<br>
+        .probe        = probe_jedec,<br>
+        .erase        = erase_chip_jedec,<br>
+        .write        = write_39sf020,<br>
   },<br>
    <br>
-    {"SST", "SST39SF010A", SST_ID, SST_39SF010,<br>
-     128, 4096,<br>
-     TEST_OK_PREW,<br>
-     probe_jedec, erase_chip_jedec, write_39sf020<br>
+    {<br>
+        .vendor        = "SST",<br>
+        .name        = "SST39SF020A",<br>
+        .manufacture_id    = SST_ID,<br>
+        .model_id    = SST_39SF020,<br>
+        .total_size    = 256,<br>
+        .page_size    = 4096,<br>
+        .tested        = TEST_OK_PREW,<br>
+        .probe        = probe_jedec,<br>
+        .erase        = erase_chip_jedec,<br>
+        .write        = write_39sf020,<br>
   },<br>
    <br>
-    {"SST", "SST39SF020A", SST_ID, SST_39SF020,<br>
-     256, 4096,<br>
-     TEST_OK_PREW,<br>
-     probe_jedec, erase_chip_jedec, write_39sf020<br>
+    {<br>
+        .vendor        = "SST",<br>
+        .name        = "SST39SF040",<br>
+        .manufacture_id    = SST_ID,<br>
+        .model_id    = SST_39SF040,<br>
+        .total_size    = 512,<br>
+        .page_size    = 4096,<br>
+        .tested        = TEST_OK_PREW,<br>
+        .probe        = probe_jedec,<br>
+        .erase        = erase_chip_jedec,<br>
+        .write        = write_39sf020,<br>
   },<br>
    <br>
-    {"SST", "SST39SF040", SST_ID, SST_39SF040,<br>
-     512, 4096,<br>
-     TEST_OK_PREW,<br>
-     probe_jedec, erase_chip_jedec, write_39sf020<br>
+    {<br>
+        .vendor        = "SST",<br>
+        .name        = "SST39VF512",<br>
+        .manufacture_id    = SST_ID,<br>
+        .model_id    = SST_39VF512,<br>
+        .total_size    = 64,<br>
+        .page_size    = 4096,<br>
+        .tested        = TEST_UNTESTED,<br>
+        .probe        = probe_jedec,<br>
+        .erase        = erase_chip_jedec,<br>
+        .write        = write_39sf020,<br>
   },<br>
    <br>
-    {"SST", "SST39VF512", SST_ID, SST_39VF512,<br>
-     64, 4096,<br>
-     TEST_UNTESTED,<br>
-     probe_jedec, erase_chip_jedec, write_39sf020<br>
+    {<br>
+        .vendor        = "SST",<br>
+        .name        = "SST39VF010",<br>
+        .manufacture_id    = SST_ID,<br>
+        .model_id    = SST_39VF010,<br>
+        .total_size    = 128,<br>
+        .page_size    = 4096,<br>
+        .tested        = TEST_UNTESTED,<br>
+        .probe        = probe_jedec,<br>
+        .erase        = erase_chip_jedec,<br>
+        .write        = write_39sf020,<br>
   },<br>
    <br>
-    {"SST", "SST39VF010", SST_ID, SST_39VF010,<br>
-     128, 4096,<br>
-     TEST_UNTESTED,<br>
-     probe_jedec, erase_chip_jedec, write_39sf020<br>
+    {<br>
+        .vendor        = "SST",<br>
+        .name        = "SST39VF020",<br>
+        .manufacture_id    = SST_ID,<br>
+        .model_id    = SST_39VF020,<br>
+        .total_size    = 256,<br>
+        .page_size    = 4096,<br>
+        .tested        = TEST_OK_PREW,<br>
+        .probe        = probe_jedec,<br>
+        .erase        = erase_chip_jedec,<br>
+        .write        = write_39sf020,<br>
   },<br>
    <br>
-    {"SST", "SST39VF020", SST_ID, SST_39VF020,<br>
-     256, 4096,<br>
-     TEST_OK_PREW,<br>
-     probe_jedec, erase_chip_jedec, write_39sf020<br>
+    {<br>
+        .vendor        = "SST",<br>
+        .name        = "SST39VF040",<br>
+        .manufacture_id    = SST_ID,<br>
+        .model_id    = SST_39VF040,<br>
+        .total_size    = 512,<br>
+        .page_size    = 4096,<br>
+        .tested        = TEST_OK_PROBE,<br>
+        .probe        = probe_jed...<br>
    <br>
[Message clipped]  <br>
--<br>
coreboot mailing list: <a moz-do-not-send="true"
 href="mailto:coreboot@coreboot.org">coreboot@coreboot.org</a><br>
    <a moz-do-not-send="true"
 href="http://www.coreboot.org/mailman/listinfo/coreboot"
 target="_blank">http://www.coreboot.org/mailman/listinfo/coreboot</a><br>
  </blockquote>
  </div>
  <br>
</blockquote>
</body>
</html>