Author: stefanct
Date: Sun Mar  1 23:04:38 2015
New Revision: 1886
URL: http://flashrom.org/trac/flashrom/changeset/1886

Log:
Add a bunch of new/tested stuff and various small changes 23.

Tested mainboards:
OK:
 - Elitegroup GF7050VT-M
   Reported by Alex
 - Fujitsu D2724-A1x (used in ESPRIMO E5625)
   Reported by Rainer Spillmann
 - Teclast X98 Air 3G
   Reported by Antonio Ospite

Flash chips:
 - Fix MX25L6405(D) definition by splitting it.
   Reported by Reggie McMurtrey
 - Add Macronix MX25L..08E family and rearrange MX25L6436E.
 - Pm49FL004 to PREW (+EW)
   Reported by Georg Sauthoff

Miscellaneous:
 - Add board enable for abit KN9 Ultra.
 - Mark ARM-USB-OCD as working OK.
 - Use "mobile devices" instead of "laptops" in output.
 - Tiny other stuff.

Signed-off-by: Stefan Tauner <[email protected]>
Acked-by: Stefan Tauner <[email protected]>

Modified:
   trunk/Makefile
   trunk/board_enable.c
   trunk/flashchips.c
   trunk/flashchips.h
   trunk/ft2232_spi.c
   trunk/print.c
   trunk/print_wiki.c

Modified: trunk/Makefile
==============================================================================
--- trunk/Makefile      Thu Feb 19 00:28:30 2015        (r1885)
+++ trunk/Makefile      Sun Mar  1 23:04:38 2015        (r1886)
@@ -1081,6 +1081,6 @@
 libpayload: clean
        make CC="CC=i386-elf-gcc lpgcc" AR=i386-elf-ar RANLIB=i386-elf-ranlib
 
-.PHONY: all install clean distclean compiler hwlibs features export tarball 
dos featuresavailable
+.PHONY: all install clean distclean compiler hwlibs features export tarball 
djgpp-dos featuresavailable libpayload
 
 -include $(OBJS:.o=.d)

Modified: trunk/board_enable.c
==============================================================================
--- trunk/board_enable.c        Thu Feb 19 00:28:30 2015        (r1885)
+++ trunk/board_enable.c        Sun Mar  1 23:04:38 2015        (r1886)
@@ -1099,6 +1099,7 @@
 /*
  * Suited for:
  *  - abit KN8 Ultra: NVIDIA CK804
+ *  - abit KN9 Ultra: NVIDIA MCP55
  */
 static int nvidia_mcp_gpio2_lower(void)
 {
@@ -2314,6 +2315,7 @@
        {0x8086, 0x2930, 0x147b, 0x1084,  0x11ab, 0x4364, 0x147b, 0x1084, NULL, 
        NULL, NULL,           P3, "abit",        "IP35",                  0,   
OK, intel_ich_gpio16_raise},
        {0x8086, 0x2930, 0x147b, 0x1083,  0x10ec, 0x8167, 0x147b, 0x1083, NULL, 
        NULL, NULL,           P3, "abit",        "IP35 Pro",              0,   
OK, intel_ich_gpio16_raise},
        {0x10de, 0x0050, 0x147b, 0x1c1a,  0x10de, 0x0052, 0x147b, 0x1c1a, NULL, 
        NULL, NULL,           P3, "abit",        "KN8 Ultra",             0,   
NT, nvidia_mcp_gpio2_lower},
+       {0x10de, 0x0369, 0x147b, 0x1c20,  0x10de, 0x0360, 0x147b, 0x1c20, 
"^KN9(NF-MCP55 series)$", NULL, NULL, P3, "abit",      "KN9 Ultra",             
0,   OK, nvidia_mcp_gpio2_lower},
        {0x10de, 0x01e0, 0x147b, 0x1c00,  0x10de, 0x0060, 0x147B, 0x1c00, NULL, 
        NULL, NULL,           P3, "abit",        "NF7-S",                 0,   
OK, nvidia_mcp_gpio8_raise},
        {0x10de, 0x02f0, 0x147b, 0x1c26,  0x10de, 0x0260, 0x147b, 0x1c26, NULL, 
        NULL, NULL,           P3, "abit",        "NF-M2 nView",           0,   
OK, nvidia_mcp_gpio4_lower},
        {0x1106, 0x0691,      0,      0,  0x1106, 0x3057,      0,      0, 
"(VA6)$",     NULL, NULL,           P3, "abit",        "VA6",                   
0,   OK, via_apollo_gpo4_lower},

Modified: trunk/flashchips.c
==============================================================================
--- trunk/flashchips.c  Thu Feb 19 00:28:30 2015        (r1885)
+++ trunk/flashchips.c  Sun Mar  1 23:04:38 2015        (r1886)
@@ -6803,12 +6803,14 @@
 
        {
                .vendor         = "Macronix",
-               .name           = "MX25L8005/MX25L8006E/MX25V8005",
+               .name           = "MX25L8005/MX25L8006E/MX25L8008E/MX25V8005",
                .bustype        = BUS_SPI,
                .manufacture_id = MACRONIX_ID,
                .model_id       = MACRONIX_MX25L8005,
                .total_size     = 1024,
                .page_size      = 256,
+               /* MX25L8006E, MX25L8008E support SFDP */
+               /* OTP: 64B total; enter 0xB1, exit 0xC1 (MX25L8006E, 
MX25L8008E only) */
                .feature_bits   = FEATURE_WRSR_WREN,
                .tested         = TEST_OK_PREW,
                .probe          = probe_spi_rdid,
@@ -6876,13 +6878,13 @@
 
        {
                .vendor         = "Macronix",
-               .name           = "MX25L1605A/MX25L1606E",
+               .name           = "MX25L1605A/MX25L1606E/MX25L1608E",
                .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) */
+               /* OTP: 64B total; enter 0xB1, exit 0xC1 (MX25L1606E and 
MX25L1608E only) */
                .feature_bits   = FEATURE_WRSR_WREN | FEATURE_OTP,
                .tested         = TEST_OK_PREW,
                .probe          = probe_spi_rdid,
@@ -6909,7 +6911,7 @@
                .printlock      = spi_prettyprint_status_register_bp3_srwd, /* 
MX25L1605A bp2 only */
                .unlock         = spi_disable_blockprotect_bp3_srwd,
                .write          = spi_chip_write_256,
-               .read           = spi_chip_read, /* Fast read (0x0B) supported 
*/
+               .read           = spi_chip_read, /* Fast read (0x0B) supported 
(MX25L1608E supports dual-I/O read) */
                .voltage        = {2700, 3600},
        },
 
@@ -6941,7 +6943,7 @@
                                .block_erase = spi_block_erase_c7,
                        },
                },
-               .printlock      = spi_prettyprint_status_register_bp3_srwd, /* 
bit6: Continuously Program (CP) mode */
+               .printlock      = spi_prettyprint_status_register_bp3_srwd, /* 
bit6: Continuously Program (CP) mode, for 73E is quad enable */
                .unlock         = spi_disable_blockprotect_bp3_srwd,
                .write          = spi_chip_write_256,
                .read           = spi_chip_read, /* Fast read (0x0B), dual I/O 
supported */
@@ -7084,7 +7086,7 @@
                                .block_erase = spi_block_erase_c7,
                        },
                },
-               .printlock      = spi_prettyprint_status_register_bp3_srwd, /* 
bit6: CP mode */
+               .printlock      = spi_prettyprint_status_register_bp3_srwd, /* 
bit6: continuously program mode */
                .unlock         = spi_disable_blockprotect_bp3_srwd,
                .write          = spi_chip_write_256,
                .read           = spi_chip_read, /* Fast read (0x0B) and dual 
I/O supported */
@@ -7093,7 +7095,7 @@
 
        {
                .vendor         = "Macronix",
-               .name           = "MX25L3206E",
+               .name           = "MX25L3206E/MX25L3208E",
                .bustype        = BUS_SPI,
                .manufacture_id = MACRONIX_ID,
                .model_id       = MACRONIX_MX25L3205,
@@ -7207,14 +7209,14 @@
 
        {
                .vendor         = "Macronix",
-               .name           = "MX25L6405(D)",
+               .name           = "MX25L6405",
                .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,
+               /* Has an additional 512B EEPROM sector */
+               .feature_bits   = FEATURE_WRSR_WREN,
                .tested         = TEST_OK_PREW,
                .probe          = probe_spi_rdid,
                .probe_timing   = TIMING_ZERO,
@@ -7234,22 +7236,22 @@
                                .block_erase = spi_block_erase_c7,
                        }
                },
-               .printlock      = spi_prettyprint_status_register_bp3_srwd, /* 
bit6 has different meanings */
+               .printlock      = spi_prettyprint_status_register_bp3_srwd, /* 
bit6: error flag */
                .unlock         = spi_disable_blockprotect_bp3_srwd,
                .write          = spi_chip_write_256,
-               .read           = spi_chip_read,
+               .read           = spi_chip_read, /* Fast read (0x0B) supported 
*/
                .voltage        = {2700, 3600},
        },
 
        {
                .vendor         = "Macronix",
-               .name           = "MX25L6406E/MX25L6436E",
+               .name           = "MX25L6405D",
                .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 */
+               /* OTP: 64B total; enter 0xB1, exit 0xC1 */
                .feature_bits   = FEATURE_WRSR_WREN | FEATURE_OTP,
                .tested         = TEST_OK_PREW,
                .probe          = probe_spi_rdid,
@@ -7270,16 +7272,56 @@
                                .block_erase = spi_block_erase_c7,
                        }
                },
-               .printlock      = spi_prettyprint_status_register_bp3_srwd, /* 
bit6 for 36E is quad enable */
+               .printlock      = spi_prettyprint_status_register_bp3_srwd, /* 
bit6: continuously program mode */
                .unlock         = spi_disable_blockprotect_bp3_srwd,
                .write          = spi_chip_write_256,
-               .read           = spi_chip_read,
+               .read           = spi_chip_read, /* Fast read (0x0B), dual I/O 
read (0xBB) supported */
                .voltage        = {2700, 3600},
        },
 
        {
                .vendor         = "Macronix",
-               .name           = "MX25L6445E/MX25L6465E/MX25L6473E",
+               .name           = "MX25L6406E/MX25L6408E",
+               .bustype        = BUS_SPI,
+               .manufacture_id = MACRONIX_ID,
+               .model_id       = MACRONIX_MX25L6405,
+               .total_size     = 8192,
+               .page_size      = 256,
+               /* MX25L6406E supports SFDP */
+               /* OTP: 06E 64B total; enter 0xB1, exit 0xC1 */
+               .feature_bits   = FEATURE_WRSR_WREN | FEATURE_OTP,
+               .tested         = TEST_OK_PREW,
+               .probe          = probe_spi_rdid,
+               .probe_timing   = TIMING_ZERO,
+               .block_erasers  =
+               {
+                       {
+                               .eraseblocks = { {4 * 1024, 2048} },
+                               .block_erase = spi_block_erase_20,
+                       }, {
+                               .eraseblocks = { {64 * 1024, 128} },
+                               .block_erase = spi_block_erase_52,
+                       }, {
+                               .eraseblocks = { {64 * 1024, 128} },
+                               .block_erase = spi_block_erase_d8,
+                       }, {
+                               .eraseblocks = { {8 * 1024 * 1024, 1} },
+                               .block_erase = spi_block_erase_60,
+                       }, {
+                               .eraseblocks = { {8 * 1024 * 1024, 1} },
+                               .block_erase = spi_block_erase_c7,
+                       }
+               },
+               .printlock      = spi_prettyprint_status_register_bp3_srwd,
+               .unlock         = spi_disable_blockprotect_bp3_srwd,
+               .write          = spi_chip_write_256,
+               .read           = spi_chip_read, /* Fast read (0x0B), dual I/O 
read supported */
+               .voltage        = {2700, 3600},
+       },
+
+       {
+               .vendor         = "Macronix",
+               .name           = "MX25L6436E/MX25L6445E/MX25L6465E/MX25L6473E",
                .bustype        = BUS_SPI,
                .manufacture_id = MACRONIX_ID,
                .model_id       = MACRONIX_MX25L6405,
@@ -10126,9 +10168,9 @@
                .total_size     = 512,
                .page_size      = 64 * 1024,
                .feature_bits   = FEATURE_REGISTERMAP | FEATURE_EITHER_RESET,
-               .tested         = TEST_OK_PR,
+               .tested         = TEST_OK_PREW,
                .probe          = probe_jedec,
-               .probe_timing   = TIMING_ZERO,  /* routine is wrapper to 
probe_jedec (pm49fl00x.c) */
+               .probe_timing   = TIMING_ZERO,
                .block_erasers  =
                {
                        {

Modified: trunk/flashchips.h
==============================================================================
--- trunk/flashchips.h  Thu Feb 19 00:28:30 2015        (r1885)
+++ trunk/flashchips.h  Sun Mar  1 23:04:38 2015        (r1886)
@@ -470,10 +470,10 @@
 #define MACRONIX_MX25L1005     0x2011  /* Same as MX25L1005C, MX25L1006E */
 #define MACRONIX_MX25L2005     0x2012  /* Same as MX25L2005C, MX25L2006E */
 #define MACRONIX_MX25L4005     0x2013  /* Same as MX25L4005A, MX25L4005C, 
MX25L4006E */
-#define MACRONIX_MX25L8005     0x2014  /* Same as MX25V8005, MX25L8006E, 
FIXME: MX25L8073E (4k 0x20) */
-#define MACRONIX_MX25L1605     0x2015  /* MX25L1605 (64k 0x20); 
MX25L1605A/MX25L1606E (4k 0x20, 64k 0x52); MX25L1605D/MX25L1608D/MX25L1673E (4k 
0x20) */
-#define MACRONIX_MX25L3205     0x2016  /* MX25L3205, MX25L3205A (64k 0x20); 
MX25L3205D/MX25L3208D (4k 0x20); MX25L3206E (4k 0x20, 64k 0x52); MX25L3273E (4k 
0x20, 32k 0x52) */
-#define MACRONIX_MX25L6405     0x2017  /* MX25L6405, MX25L6405D (64k 0x20); 
MX25L6406E/MX25L6436E (4k 0x20); MX25L6445E/MX25L6465E/MX25L6473E (4k 0x20, 32k 
0x52) */
+#define MACRONIX_MX25L8005     0x2014  /* Same as MX25V8005, MX25L8006E, 
MX25L8008E, FIXME: MX25L8073E (4k 0x20) */
+#define MACRONIX_MX25L1605     0x2015  /* MX25L1605 (64k 0x20); 
MX25L1605A/MX25L1606E/MX25L1608E (4k 0x20, 64k 0x52); 
MX25L1605D/MX25L1608D/MX25L1673E (4k 0x20) */
+#define MACRONIX_MX25L3205     0x2016  /* MX25L3205, MX25L3205A (64k 0x20); 
MX25L3205D/MX25L3208D (4k 0x20); MX25L3206E/MX25L3208E (4k 0x20, 64k 0x52); 
MX25L3273E (4k 0x20, 32k 0x52) */
+#define MACRONIX_MX25L6405     0x2017  /* MX25L6405, MX25L6405D (64k 0x20); 
MX25L6406E/MX25L6408E (4k 0x20); MX25L6436E/MX25L6445E/MX25L6465E/MX25L6473E 
(4k 0x20, 32k 0x52) */
 #define MACRONIX_MX25L12805D   0x2018  /* MX25L12805D (no 32k); MX25L12865E, 
MX25L12835F, MX25L12845E (32k 0x52) */
 #define MACRONIX_MX25L25635F   0x2019  /* Same as MX25L25639F, but the latter 
seems to not support REMS */
 #define MACRONIX_MX25L1635D    0x2415

Modified: trunk/ft2232_spi.c
==============================================================================
--- trunk/ft2232_spi.c  Thu Feb 19 00:28:30 2015        (r1885)
+++ trunk/ft2232_spi.c  Sun Mar  1 23:04:38 2015        (r1886)
@@ -67,7 +67,7 @@
        {FTDI_VID, AMONTEC_JTAGKEY_PID, OK, "Amontec", "JTAGkey"},
        {GOEPEL_VID, GOEPEL_PICOTAP_PID, OK, "GOEPEL", "PicoTAP"},
        {FIC_VID, OPENMOKO_DBGBOARD_PID, OK, "FIC", "OpenMoko Neo1973 Debug 
board (V2+)"},
-       {OLIMEX_VID, OLIMEX_ARM_OCD_PID, NT, "Olimex", "ARM-USB-OCD"},
+       {OLIMEX_VID, OLIMEX_ARM_OCD_PID, OK, "Olimex", "ARM-USB-OCD"},
        {OLIMEX_VID, OLIMEX_ARM_TINY_PID, OK, "Olimex", "ARM-USB-TINY"},
        {OLIMEX_VID, OLIMEX_ARM_OCD_H_PID, OK, "Olimex", "ARM-USB-OCD-H"},
        {OLIMEX_VID, OLIMEX_ARM_TINY_H_PID, OK, "Olimex", "ARM-USB-TINY-H"},

Modified: trunk/print.c
==============================================================================
--- trunk/print.c       Thu Feb 19 00:28:30 2015        (r1885)
+++ trunk/print.c       Sun Mar  1 23:04:38 2015        (r1886)
@@ -480,9 +480,9 @@
               programmer_table[PROGRAMMER_INTERNAL].name);
        print_supported_chipsets();
        msg_ginfo("\n");
-       print_supported_boards_helper(boards_known, "boards");
+       print_supported_boards_helper(boards_known, "mainboards");
        msg_ginfo("\n");
-       print_supported_boards_helper(laptops_known, "laptops");
+       print_supported_boards_helper(laptops_known, "mobile devices");
 #endif
        for (i = 0; i < PROGRAMMER_INVALID; i++) {
                const struct programmer_entry prog = programmer_table[i];
@@ -535,6 +535,7 @@
        B("abit",       "IP35 Pro",             OK, NULL, NULL),
        B("abit",       "IS-10",                BAD, NULL, "Reported by 
[email protected] to [email protected], no public archive. Missing board 
enable and/or M50FW040 unlocking. May work now."),
        B("abit",       "KN8 Ultra",            OK, NULL, NULL),
+       B("abit",       "KN9 Ultra",            OK, NULL, NULL),
        B("abit",       "NF-M2 nView",          OK, NULL, NULL),
        B("abit",       "NF-M2S",               OK, NULL, NULL),
        B("abit",       "NF7-S",                OK, NULL, NULL),
@@ -774,6 +775,7 @@
        B("Elitegroup", "GeForce6100PM-M2 (V3.0)", OK, NULL, NULL),
        B("Elitegroup", "GeForce6100SM-M",      OK, NULL, NULL),
        B("Elitegroup", "GeForce7050M-M (V2.0)", OK, 
"http://www.ecs.com.tw/ECSWebSite/Product/Product_Detail.aspx?DetailID=865&MenuID=20&LanID=0";,
 NULL),
+       B("Elitegroup", "GF7050VT-M",           OK, NULL, NULL),
        B("Elitegroup", "GF7100PVT-M3 (V1.0)",  OK, NULL, NULL),
        B("Elitegroup", "GF8200A",              OK, NULL, NULL),
        B("Elitegroup", "K7S5A",                OK, NULL, NULL),
@@ -803,7 +805,8 @@
        B("Foxconn",    "P55MX",                OK, 
"http://www.foxconnchannel.com/ProductDetail.aspx?T=motherboard&U=en-us0000474";,
 "Needs the MFG jumper to be set correctly before flashing to enable the Flash 
Descriptor Override Strap."),
        B("Foxconn",    "Q45M",                 BAD, 
"http://www.foxconnchannel.com/ProductDetail.aspx?T=Motherboard&U=en-us0000587";,
 "Probing works (Hardware sequencing, 4096 kB, SPI), but parts of the flash are 
problematic: descriptor is r/o (conforming to ICH reqs), ME is locked."),
        B("Freetech",   "P6F91i",               OK, 
"http://web.archive.org/web/20010417035034/http://www.freetech.com/prod/P6F91i.html";,
 NULL),
-       B("Fujitsu",    "D3041-A1",             OK, NULL, "Used in ESPRIMO 
P2560, contains an Atmel AT26DF081A."),
+       B("Fujitsu",    "D2724-A1x",            OK, NULL, "Used in ESPRIMO 
E5625."),
+       B("Fujitsu",    "D3041-A1x",            OK, NULL, "Used in ESPRIMO 
P2560, contains an Atmel AT26DF081A."),
        B("Fujitsu-Siemens", "CELSIUS W410",    BAD, 
"ftp://ftp.ts.fujitsu.com/pub/mainboard-oem-sales/Products/Mainboards/Industrial&ExtendedLifetime/D3061&D3062/";,
 "Mainboard model is D3062-A1. Probing works (Macronix MX25L6405, 8192 kB, 
SPI), but parts of the flash are problematic: descriptor is r/o (conforming to 
ICH reqs), ME is locked."),
        B("Fujitsu-Siemens", "ESPRIMO P5915",   OK, 
"http://uk.ts.fujitsu.com/rl/servicesupport/techsupport/professionalpc/ESPRIMO/P/EsprimoP5915-6.htm";,
 "Mainboard model is D2312-A2."),
        B("GIGABYTE",   "GA-2761GXDK",          OK, 
"http://www.computerbase.de/news/hardware/mainboards/amd-systeme/2007/mai/gigabyte_dtx-mainboard/";,
 NULL),
@@ -1144,6 +1147,7 @@
        B("IBM/Lenovo", "ThinkPad 240",         BAD, 
"http://www.stanford.edu/~bresnan//tp240.html";, "Seems to (partially) work at 
first, but one block/sector cannot be written which then leaves you with a 
bricked laptop. Maybe this can be investigated and fixed in software later."),
        B("IBM/Lenovo", "3000 V100 TF05Cxx",    OK, 
"http://www5.pc.ibm.com/europe/products.nsf/products?openagent&brand=Lenovo3000Notebook&series=Lenovo+3000+V+Series#viewallmodelstop";,
 NULL),
        //B("MSI",      "GT60-2OD",             OK, 
"http://www.msi.com/product/nb/GT60_2OD.html";, NULL), requires layout patches
+       B("Teclast",    "X98 Air 3G",           OK, NULL, NULL),
 #endif
 
        {0},

Modified: trunk/print_wiki.c
==============================================================================
--- trunk/print_wiki.c  Thu Feb 19 00:28:30 2015        (r1885)
+++ trunk/print_wiki.c  Sun Mar  1 23:04:38 2015        (r1886)
@@ -133,15 +133,15 @@
 }
 
 #if CONFIG_INTERNAL == 1
-static const char laptop_intro[] = "\n== Supported laptops/notebooks ==\n\n\
-In general, flashing laptops is more difficult because laptops\n\n\
+static const char laptop_intro[] = "\n== Supported mobile devices (laptops, 
tablets etc.) ==\n\n\
+In general, flashing mobile devices is more difficult because they\n\n\
 * often use the flash chip for stuff besides the BIOS,\n\
 * often have special protection stuff which has to be handled by flashrom,\n\
 * often use flash translation circuits which need drivers in flashrom.\n\n\
 <div style=\"margin-top:0.5em; padding:0.5em 0.5em 0.5em 0.5em; \
 background-color:#ff6666; align:right; border:1px solid #000000;\">\n\
 '''IMPORTANT:''' At this point we recommend to '''not''' use flashrom on \
-untested laptops unless you have a means to recover from a flashing that goes \
+untested mobile devices unless you have a means to recover from a flashing 
that goes \
 wrong (a working backup flash chip and/or good soldering skills).\n</div>\n";
 
 static void print_supported_chipsets_wiki(int cols)
@@ -275,10 +275,10 @@
 static void print_supported_boards_wiki(void)
 {
        printf("%s", board_intro);
-       print_supported_boards_wiki_helper("boards", 2, boards_known);
+       print_supported_boards_wiki_helper("mainboards", 2, boards_known);
 
        printf("%s", laptop_intro);
-       print_supported_boards_wiki_helper("laptops", 1, laptops_known);
+       print_supported_boards_wiki_helper("mobile devices", 1, laptops_known);
 }
 #endif
 

_______________________________________________
flashrom mailing list
[email protected]
http://www.flashrom.org/mailman/listinfo/flashrom

Reply via email to