[flashrom] [PATCH] [DEMO] Merge print/print_wiki tables

Michael Karcher flashrom at mkarcher.dialup.fu-berlin.de
Sun Mar 14 16:42:26 CET 2010


No merge of boards_need_enable and the board enable table as I would never
get that patch past Luc Verhaegen. But a consistency check for these two
tables can be added to the flashrom selftest.

Note, this DEMO patch is broken in that it does not print "-m" parameters anymore.

Signed-off-by: Michael Karcher <flashrom at mkarcher.dialup.fu-berlin.de>
---
 flash.h      |    4 +
 print.c      |  276 +++++++++++++++++++++++++---------------------
 print_wiki.c |  349 ++++++++++------------------------------------------------
 3 files changed, 209 insertions(+), 420 deletions(-)

diff --git a/flash.h b/flash.h
index 34b04e6..c203a79 100644
--- a/flash.h
+++ b/flash.h
@@ -297,6 +297,10 @@ extern struct board_pciid_enable board_pciid_enables[];
 struct board_info {
 	const char *vendor;
 	const char *name;
+#ifdef PRINT_WIKI_SUPPORT
+	const char *url;
+	const char *note;
+#endif
 };
 
 extern const struct board_info boards_ok[];
diff --git a/print.c b/print.c
index 17a303d..8a5efe2 100644
--- a/print.c
+++ b/print.c
@@ -249,114 +249,125 @@ void print_supported(void)
 #endif
 }
 
+#ifdef PRINT_WIKI_SUPPORT
+#define B(vendor, name, url, notes) { vendor, name, url, notes, }
+#else
+#define B(vendor, name, url, notes) { vendor, name, }
+#endif
 
 #if INTERNAL_SUPPORT == 1
 /* Please keep this list alphabetically ordered by vendor/board. */
 const struct board_info boards_ok[] = {
 	/* Verified working boards that don't need write-enables. */
-	{ "Abit",		"AX8", },
-	{ "Abit",		"Fatal1ty F-I90HD", },
-	{ "Advantech",		"PCM-5820", },
-	{ "ASI",		"MB-5BLMP", },
-	{ "ASRock",		"A770CrossFire", },
-	{ "ASRock",		"K8S8X", },
-	{ "ASRock",		"M3A790GXH/128M" },
-	{ "ASUS",		"A7N8X Deluxe", },
-	{ "ASUS",		"A7N8X-E Deluxe", },
-	{ "ASUS",		"A7V400-MX", },
-	{ "ASUS",		"A7V8X-MX", },
-	{ "ASUS",		"A7V8X-X", },
-	{ "ASUS",		"A8N-E", },
-	{ "ASUS",		"A8NE-FM/S", },
-	{ "ASUS",		"A8N-SLI", },
-	{ "ASUS",		"A8N-SLI Premium", },
-	{ "ASUS",		"A8V Deluxe", },
-	{ "ASUS",		"A8V-E Deluxe", },
-	{ "ASUS",		"A8V-E SE", },
-	{ "ASUS",		"K8V", },
-	{ "ASUS",		"K8V SE Deluxe", },
-	{ "ASUS",		"K8V-X SE", },
-	{ "ASUS",		"M2A-MX", },
-	{ "ASUS",		"M2A-VM", },
-	{ "ASUS",		"M2N-E", },
-	{ "ASUS",		"M2V", },
-	{ "ASUS",		"M3A78-EM", },
-	{ "ASUS",		"P2B", },
-	{ "ASUS",		"P2B-D", },
-	{ "ASUS",		"P2B-DS", },
-	{ "ASUS",		"P2B-F", },
-	{ "ASUS",		"P2L97-S", },
-	{ "ASUS",		"P5B-Deluxe", },
-	{ "ASUS",		"P5KC", },
-	{ "ASUS",		"P5L-MX", },
-	{ "ASUS",		"P6T Deluxe V2", },
-	{ "A-Trend",		"ATC-6220", },
-	{ "BCOM",		"WinNET100", },
-	{ "DFI",		"Blood-Iron P35 T2RL", },
-	{ "Elitegroup",		"K7S5A", },
-	{ "Elitegroup",		"P6VAP-A+", },
-	{ "GIGABYTE",		"GA-6BXC", },
-	{ "GIGABYTE",		"GA-6BXDU", },
-	{ "GIGABYTE",		"GA-6ZMA", },
-	{ "GIGABYTE",		"GA-7ZM", },
-	{ "GIGABYTE",		"GA-EP35-DS3L", },
-	{ "GIGABYTE",		"GA-EX58-UD4P", },
-	{ "GIGABYTE",		"GA-MA69VM-S2", },
-	{ "GIGABYTE",		"GA-MA78GPM-DS2H", },
-	{ "GIGABYTE",		"GA-MA790GP-DS4H", },
-	{ "GIGABYTE",		"GA-MA770T-UD3P", },
-	{ "Intel",		"EP80759", },
-	{ "Jetway",		"J7F4K1G5D-PB", },
-	{ "MSI",                "MS-6153", },
-	{ "MSI",                "MS-6156", },
-	{ "MSI",		"MS-6570 (K7N2)", },
-	{ "MSI",		"MS-7065", },
-	{ "MSI",		"MS-7168 (Orion)", },
-	{ "MSI",		"MS-7236 (945PL Neo3)", },
-	{ "MSI",		"MS-7255 (P4M890M)", },
-	{ "MSI",		"MS-7345 (P35 Neo2-FIR)", },
-	{ "MSI",		"MS-7368 (K9AG Neo2-Digital)", },
-	{ "NEC",		"PowerMate 2000", },
-	{ "PC Engines",		"Alix.1c", },
-	{ "PC Engines",		"Alix.2c2", },
-	{ "PC Engines",		"Alix.2c3", },
-	{ "PC Engines",		"Alix.3c3", },
-	{ "PC Engines",		"Alix.3d3", },
-	{ "RCA",		"RM4100", },
-	{ "Sun",		"Blade x6250", },
-	{ "Supermicro",		"H8QC8", },
-	{ "Thomson",		"IP1000", },
-	{ "TriGem",		"Lomita", },
-	{ "T-Online",		"S-100", },
-	{ "Tyan",		"iS5375-1U", },
-	{ "Tyan",		"S1846", },
-	{ "Tyan",		"S2466", },
-	{ "Tyan",		"S2881", },
-	{ "Tyan",		"S2882", },
-	{ "Tyan",		"S2882-D", },
-	{ "Tyan",		"S2891", },
-	{ "Tyan",		"S2892", },
-	{ "Tyan",		"S2895", },
-	{ "Tyan",		"S3095", },
-	{ "Tyan",		"S5180", },
-	{ "Tyan",		"S5191", },
-	{ "Tyan",		"S5197", },
-	{ "Tyan",		"S5211", },
-	{ "Tyan",		"S5211-1U", },
-	{ "Tyan",		"S5220", },
-	{ "Tyan",		"S5375", },
-	{ "Tyan",		"S5376G2NR/S5376WAG2NR", },
-	{ "Tyan",		"S5377", },
-	{ "Tyan",		"S5397", },
-	{ "VIA",		"EPIA-CN", },
-	{ "VIA",		"EPIA-EX15000G", },
-	{ "VIA",		"EPIA-LN", },
-	{ "VIA",		"EPIA-M700", },
-	{ "VIA",		"EPIA-NX15000G", },
-	{ "VIA",		"EPIA-SP", },
-	{ "VIA",		"NAB74X0", },
-	{ "VIA",		"pc2500e", },
-	{ "VIA",		"VB700X", },
+	B("Abit",		"AX8",			"http://www.abit.com.tw/page/en/motherboard/motherboard_detail.php?DEFTITLE=Y&fMTYPE=Socket%20939&pMODEL_NAME=AX8", NULL),
+	B("Abit",		"Fatal1ty F-I90HD",	"http://www.abit.com.tw/page/de/motherboard/motherboard_detail.php?pMODEL_NAME=Fatal1ty+F-I90HD&fMTYPE=LGA775", NULL),
+	B("Advantech",		"PCM-5820",		"http://www.emacinc.com/sbc_pc_compatible/pcm_5820.htm", NULL),
+	B("ASI",		"MB-5BLMP",		"http://www.hojerteknik.com/winnet.htm",
+								"Used in the IGEL WinNET III thin client."),
+	B("ASRock",		"A770CrossFire",	"http://www.asrock.com/mb/overview.asp?Model=A770CrossFire&s=AM2\%2b", NULL),
+	B("ASRock",		"K8S8X",		"http://www.asrock.com/mb/overview.asp?Model=K8S8X",
+								"The Super I/O isn't found on this board. See http://www.flashrom.org/pipermail/flashrom/2009-November/000937.html."),
+	B("ASRock",		"M3A790GXH/128M",	"http://www.asrock.com/MB/overview.asp?Model=M3A790GXH/128M", NULL),
+	B("ASUS",		"A7N8X Deluxe",		"http://www.asus.com/Product.aspx?P_ID=wAsRYm41KTp78MFC", NULL),
+	B("ASUS",		"A7N8X-E Deluxe",	"http://www.asus.com/products.aspx?l1=3&l2=13&l3=56&l4=0&model=217&modelmenu=1", NULL),
+	B("ASUS",		"A7V400-MX",		"http://www.asus.com.tw/products.aspx?l1=3&l2=13&l3=63&l4=0&model=228&modelmenu=1", NULL),
+	B("ASUS",		"A7V8X-MX",		"http://www.asus.com.tw/products.aspx?l1=3&l2=13&l3=64&l4=0&model=229&modelmenu=1", NULL),
+	B("ASUS",		"A8N-E",		"http://www.asus.com.tw/products.aspx?l1=3&l2=15&l3=171&l4=0&model=455&modelmenu=2", NULL),
+	B("ASUS",		"A8NE-FM/S",		"http://www.hardwareschotte.de/hardware/preise/proid_1266090/preis_ASUS+A8NE-FM", NULL),
+	B("ASUS",		"A8N-SLI",		"http://asus.com/product.aspx?P_ID=J9FKa8z2xVId3pDK", NULL),
+	B("ASUS",		"A8N-SLI Premium",	"http://www.asus.com.tw/products.aspx?l1=3&l2=15&l3=148&l4=0&model=539&modelmenu=1", NULL),
+	B("ASUS",		"A8V Deluxe",		"http://www.asus.com/product.aspx?P_ID=tvpdgPNCPaABZRVU", NULL),
+	B("ASUS",		"A8V-E Deluxe",		"http://www.asus.com.tw/products.aspx?l1=3&l2=15&l3=143&l4=0&model=376&modelmenu=1", NULL),
+	B("ASUS",		"A8V-E SE",		"http://www.asus.com.tw/products.aspx?l1=3&l2=15&l3=143&l4=0&model=576&modelmenu=1",
+								"See http://www.coreboot.org/pipermail/coreboot/2007-October/026496.html."),
+	B("ASUS",		"K8V",			"http://www.asus.com/product.aspx?P_ID=fG2KZOWF7v6MRFRm", NULL),
+	B("ASUS",		"K8V SE Deluxe",	"http://www.asus.com/product.aspx?P_ID=65HeDI8XM1u6Uy6o", NULL),
+	B("ASUS",		"K8V-X SE",		"http://asus.com/product.aspx?P_ID=lzDXlbBVHkdckHVr", NULL),
+	B("ASUS",		"M2A-MX",		"http://www.asus.com/products.aspx?l1=3&l2=101&l3=583&l4=0&model=1909&modelmenu=1", NULL),
+	B("ASUS",		"M2A-VM",		"http://www.asus.com.tw/products.aspx?l1=3&l2=101&l3=496&l4=0&model=1568&modelmenu=1",
+								"See http://www.coreboot.org/pipermail/coreboot/2007-September/025281.html."),
+	B("ASUS",		"M2N-E",		"http://www.asus.com/products.aspx?l1=3&l2=101&l3=308&l4=0&model=1181&modelmenu=1",
+								"If the machine doesn't come up again after flashing, try resetting the NVRAM(CMOS). The MAC address of the onboard network card will change to the value stored in the new image, so backup the old address first. See http://www.flashrom.org/pipermail/flashrom/2009-November/000879.html"),
+	B("ASUS",		"M2V",			"http://asus.com/Product.aspx?P_ID=OqYlEDFfF6ZqZGvp", NULL),
+	B("ASUS",		"M3A78-EM",		"http://www.asus.com/product.aspx?P_ID=KjpYqzmAd9vsTM2D", NULL),
+	B("ASUS",		"P2B",			"http://www.motherboard.cz/mb/asus/P2B.htm", NULL),
+	B("ASUS",		"P2B-D",		"ftp://ftp.asus.com.tw/pub/ASUS/mb/slot1/440bx/p2b-d/", NULL),
+	B("ASUS",		"P2B-DS",		"ftp://ftp.asus.com.tw/pub/ASUS/mb/slot1/440bx/p2b-ds/", NULL),
+	B("ASUS",		"P2B-F",		"http://www.motherboard.cz/mb/asus/P2B-F.htm", NULL),
+	B("ASUS",		"P2L97-S",		"http://www.motherboard.cz/mb/asus/P2L97-S.htm", NULL),
+	B("ASUS",		"P5B-Deluxe",		"ftp://ftp.asus.com.tw/pub/ASUS/mb/socket775/P5B-Deluxe/", NULL),
+	B("ASUS",		"P5KC",			"http://www.asus.com/product.aspx?P_ID=fFZ8oUIGmLpwNMjj", NULL),
+	B("ASUS",		"P5L-MX",		"http://www.asus.com/product.aspx?P_ID=X70d3NCzH2DE9vWH", NULL),
+	B("ASUS",		"P6T Deluxe V2",	"http://www.asus.com/product.aspx?P_ID=iRlP8RG9han6saZx", NULL),
+	B("A-Trend",		"ATC-6220",		"http://www.motherboard.cz/mb/atrend/atc6220.htm", NULL),
+	B("BCOM",		"WinNET100",		"http://www.coreboot.org/BCOM_WINNET100",
+								"Used in the IGEL-316 thin client."),
+	B("DFI",		"Blood-Iron P35 T2RL",	"http://lp.lanparty.com.tw/portal/CM/cmproduct/XX_cmproddetail/XX_WbProdsWindow?itemId=516&downloadFlag=false&action=1", NULL),
+	B("Elitegroup",		"K7S5A",		"http://www.ecs.com.tw/ECSWebSite/Products/ProductsDetail.aspx?detailid=279&CategoryID=1&DetailName=Specification&MenuID=1&LanID=0", NULL),
+	B("Elitegroup",		"P6VAP-A+",		"http://www.ecs.com.tw/ECSWebSite/Products/ProductsDetail.aspx?detailid=117&CategoryID=1&DetailName=Specification&MenuID=1&LanID=0", NULL),
+	B("GIGABYTE",		"GA-6BXC",		"http://www.gigabyte.com.tw/Products/Motherboard/Products_Spec.aspx?ClassValue=Motherboard&ProductID=1445&ProductName=GA-6BXC", NULL),
+	B("GIGABYTE",		"GA-6BXDU",		"http://www.gigabyte.com.tw/Products/Motherboard/Products_Spec.aspx?ProductID=1429", NULL),
+	B("GIGABYTE",		"GA-6ZMA",		"http://www.gigabyte.de/Support/Motherboard/BIOS_Model.aspx?ProductID=3289", NULL),
+	B("GIGABYTE",		"GA-7ZM",		NULL,
+								"Works fine if you remove jumper JP9 on the board and disable the flash protection BIOS option."),
+	B("GIGABYTE",		"GA-EP35-DS3L",		"http://www.gigabyte.com.tw/Products/Motherboard/Products_Overview.aspx?ProductID=2778", NULL),
+	B("GIGABYTE",		"GA-EX58-UD4P",		"http://www.gigabyte.com.tw/Products/Motherboard/Products_Overview.aspx?ProductID=2986", NULL),
+	B("GIGABYTE",		"GA-MA69VM-S2",		"http://www.gigabyte.com.tw/Products/Motherboard/Products_Overview.aspx?ProductID=2500", NULL),
+	B("GIGABYTE",		"GA-MA78GPM-DS2H",	"http://www.gigabyte.com.tw/Products/Motherboard/Products_Spec.aspx?ProductID=2859", NULL),
+	B("GIGABYTE",		"GA-MA790GP-DS4H",	"http://www.gigabyte.com.tw/Products/Motherboard/Products_Spec.aspx?ProductID=2887", NULL),
+	B("GIGABYTE",		"GA-MA770T-UD3P",	"http://www.gigabyte.com.tw/Products/Motherboard/Products_Spec.aspx?ProductID=3096", NULL),
+	B("Intel",		"EP80759",		NULL, NULL),
+	B("Jetway",		"J7F4K1G5D-PB",		"http://www.jetway.com.tw/jetway/system/productshow2.asp?id=389&proname=J7F4K1G5D-P", NULL),
+	B("MSI",                "MS-6153",		"http://www.msi.com/index.php?func=proddesc&maincat_no=1&cat2_no=&cat3_no=&prod_no=336", NULL),
+	B("MSI",                "MS-6156",		"http://uk.ts.fujitsu.com/rl/servicesupport/techsupport/boards/Motherboards/MicroStar/Ms6156/MS6156.htm", NULL),
+	B("MSI",		"MS-6570 (K7N2)",	"http://www.msi-computer.de/index.php?func=proddesc&prod_no=519&maincat_no=1", NULL),
+	B("MSI",		"MS-7065",		"http://browse.geekbench.ca/geekbench2/view/53114", NULL),
+	B("MSI",		"MS-7168 (Orion)",	"http://support.packardbell.co.uk/uk/item/index.php?i=spec_orion&pi=platform_honeymoon_istart", NULL),
+	B("MSI",		"MS-7236 (945PL Neo3)",	"http://www.msi.com/index.php?func=proddesc&maincat_no=1&prod_no=1173", NULL),
+	B("MSI",		"MS-7255 (P4M890M)",	"http://www.tcsbahamas.com/P4M89.htm", NULL),
+	B("MSI",		"MS-7345 (P35 Neo2-FIR)","http://www.msi.com/index.php?func=prodcpusupport&maincat_no=1&cat2_no=170&cat3_no=&prod_no=1261", NULL),
+	B("MSI",		"MS-7368 (K9AG Neo2-Digital)","http://www.msi.com/index.php?func=proddesc&maincat_no=1&prod_no=1241", NULL),
+	B("NEC",		"PowerMate 2000",	"http://support.necam.com/mobilesolutions/hardware/Desktops/pm2000/celeron/", NULL),
+	B("PC Engines",		"Alix.1c",		"http://pcengines.ch/alix1c.htm", NULL),
+	B("PC Engines",		"Alix.2c2",		"http://pcengines.ch/alix2c2.htm", NULL),
+	B("PC Engines",		"Alix.2c3",		"http://pcengines.ch/alix2c3.htm", NULL),
+	B("PC Engines",		"Alix.3c3",		"http://pcengines.ch/alix3c3.htm", NULL),
+	B("PC Engines",		"Alix.3d3",		"http://pcengines.ch/alix3d3.htm", NULL),
+	B("RCA",		"RM4100",		"http://www.settoplinux.org/index.php?title=RCA_RM4100", NULL),
+	B("Sun",		"Blade x6250",		"http://www.sun.com/servers/blades/x6250/", NULL),
+	B("Supermicro",		"H8QC8",		"http://www.supermicro.com/Aplus/motherboard/Opteron/nforce/H8QC8.cfm", NULL),
+	B("Thomson",		"IP1000",		"http://www.settoplinux.org/index.php?title=Thomson_IP1000", NULL),
+	B("TriGem",		"Lomita",		"http://www.e4allupgraders.info/dir1/motherboards/socket370/lomita.shtml", NULL),
+	B("T-Online",		"S-100",		"http://wiki.freifunk-hannover.de/T-Online_S_100", NULL),
+	B("Tyan",		"iS5375-1U",		"http://www.tyan.com/product_board_detail.aspx?pid=610", NULL),
+	B("Tyan",		"S1846",		"http://www.tyan.com/archive/products/html/tsunamiatx.html", NULL),
+	B("Tyan",		"S2466",		"http://www.tyan.com/product_board_detail.aspx?pid=461", NULL),
+	B("Tyan",		"S2881",		"http://www.tyan.com/product_board_detail.aspx?pid=115", NULL),
+	B("Tyan",		"S2882",		"http://www.tyan.com/product_board_detail.aspx?pid=121", NULL),
+	B("Tyan",		"S2882-D",		"http://www.tyan.com/product_board_detail.aspx?pid=127", NULL),
+	B("Tyan",		"S2891",		"http://www.tyan.com/product_board_detail.aspx?pid=144", NULL),
+	B("Tyan",		"S2892",		"http://www.tyan.com/product_board_detail.aspx?pid=145", NULL),
+	B("Tyan",		"S2895",		"http://www.tyan.com/archive/products/html/thunderk8we.html", NULL),
+	B("Tyan",		"S3095",		"http://www.tyan.com/product_board_detail.aspx?pid=181", NULL),
+	B("Tyan",		"S5180",		"http://www.tyan.com/product_board_detail.aspx?pid=456", NULL),
+	B("Tyan",		"S5191",		"http://www.tyan.com/product_board_detail.aspx?pid=343", NULL),
+	B("Tyan",		"S5197",		"http://www.tyan.com/product_board_detail.aspx?pid=349", NULL),
+	B("Tyan",		"S5211",		"http://www.tyan.com/product_board_detail.aspx?pid=591", NULL),
+	B("Tyan",		"S5211-1U",		"http://www.tyan.com/product_board_detail.aspx?pid=593", NULL),
+	B("Tyan",		"S5220",		"http://www.tyan.com/product_board_detail.aspx?pid=597", NULL),
+	B("Tyan",		"S5375",		"http://www.tyan.com/product_board_detail.aspx?pid=566", NULL),
+	B("Tyan",		"S5376G2NR/S5376WAG2NR","http://www.tyan.com/product_board_detail.aspx?pid=605", NULL),
+	B("Tyan",		"S5377",		"http://www.tyan.com/product_SKU_spec.aspx?ProductType=MB&pid=642&SKU=600000017", NULL),
+	B("Tyan",		"S5397",		"http://www.tyan.com/product_board_detail.aspx?pid=560", NULL),
+	B("VIA",		"EPIA-CN",		NULL, NULL),
+	B("VIA",		"EPIA-EX15000G",	"http://www.via.com.tw/en/products/embedded/ProductDetail.jsp?productLine=1&motherboard_id=450", NULL),
+	B("VIA",		"EPIA-LN",		"http://www.via.com.tw/en/products/mainboards/motherboards.jsp?motherboard_id=473", NULL),
+	B("VIA",		"EPIA-M700",		"http://via.com.tw/servlet/downloadSvl?motherboard_id=670&download_file_id=3700", NULL),
+	B("VIA",		"EPIA-NX15000G",	"http://www.via.com.tw/en/products/embedded/ProductDetail.jsp?productLine=1&motherboard_id=470", NULL),
+	B("VIA",		"EPIA-SP",		NULL, NULL),
+	B("VIA",		"NAB74X0",		"http://www.via.com.tw/en/products/mainboards/motherboards.jsp?motherboard_id=590", NULL),
+	B("VIA",		"pc2500e",		"http://www.via.com.tw/en/initiatives/empowered/pc2500_mainboard/index.jsp", NULL),
+	B("VIA",		"VB700X",		"http://www.via.com.tw/en/products/mainboards/motherboards.jsp?motherboard_id=490", NULL),
 
 	{},
 };
@@ -364,24 +375,26 @@ const struct board_info boards_ok[] = {
 /* Please keep this list alphabetically ordered by vendor/board. */
 const struct board_info boards_bad[] = {
 	/* Verified non-working boards (for now). */
-	{ "Abit",		"IS-10", },
-	{ "ASRock",		"K7VT4A+", },
-	{ "ASUS",		"MEW-AM", },
-	{ "ASUS",		"MEW-VM", },
-	{ "ASUS",		"P3B-F", },
-	{ "ASUS",		"P5B", },
-	{ "ASUS",		"P5BV-M", },
-	{ "Biostar",		"M6TBA", },
-	{ "Boser",		"HS-6637", },
-	{ "DFI",		"855GME-MGF", },
-	{ "FIC",		"VA-502", },
-	{ "MSI",		"MS-6178", },
-	{ "MSI",		"MS-7260 (K9N Neo)", },
-	{ "Soyo",		"SY-5VD", },
-	{ "Sun",		"Fire x4150", },
-	{ "Sun",		"Fire x4200", },
-	{ "Sun",		"Fire x4540", },
-	{ "Sun",		"Fire x4600", },
+	B("Abit",		"IS-10",		"http://www.abit.com.tw/page/en/motherboard/motherboard_detail.php?pMODEL_NAME=IS-10&fMTYPE=Socket+478", NULL),
+	B("ASRock",		"K7VT4A+",		"http://www.asrock.com/mb/overview.asp?Model=K7VT4A%%2b&s=", NULL),
+	B("ASUS",		"MEW-AM",		"ftp://ftp.asus.com.tw/pub/ASUS/mb/sock370/810/mew-am/", NULL),
+	B("ASUS",		"MEW-VM",		"http://www.elhvb.com/mboards/OEM/HP/manual/ASUS%20MEW-VM.htm", NULL),
+	B("ASUS",		"P3B-F",		"ftp://ftp.asus.com.tw/pub/ASUS/mb/slot1/440bx/p3b-f/", NULL),
+	B("ASUS",		"P5B",			"ftp://ftp.asus.com.tw/pub/ASUS/mb/socket775/P5B/", NULL),
+	B("ASUS",		"P5BV-M",		"ftp://ftp.asus.com.tw/pub/ASUS/mb/socket775/P5B-VM/", NULL),
+	B("Biostar",		"M6TBA",		"ftp://ftp.biostar-usa.com/manuals/M6TBA/", NULL),
+	B("Boser",		"HS-6637",		"http://www.boser.com.tw/manual/HS-62376637v3.4.pdf", NULL),
+	B("DFI",		"855GME-MGF",		"http://www.dfi.com.tw/portal/CM/cmproduct/XX_cmproddetail/XX_WbProdsWindow?action=e&downloadType=&windowstate=normal&mode=view&downloadFlag=false&itemId=433", NULL),
+	B("FIC",		"VA-502",		"ftp://ftp.fic.com.tw/motherboard/manual/socket7/va-502/", NULL),
+	B("MSI",		"MS-6178",		"http://www.msi-technology.de/index.php?func=proddesc&prod_no=343&maincat_no=1",
+								"Immediately powers off if you try to hot-plug the chip. However, this does '''not''' happen if you use coreboot."),
+	B("MSI",		"MS-7260 (K9N Neo)",	"http://www.msi.com/index.php?func=proddesc&maincat_no=1&prod_no=255",
+								"Interestingly flashrom does not work when the vendor BIOS is booted, but it ''does'' work flawlessly when the machine is booted with coreboot."),
+	B("Soyo",		"SY-5VD",		"http://www.soyo.com/content/Downloads/163/&c=80&p=464&l=English", NULL),
+	B("Sun",		"Fire x4150",		"http://www.sun.com/servers/x64/x4150/", NULL),
+	B("Sun",		"Fire x4200",		"http://www.sun.com/servers/entry/x4200/", NULL),
+	B("Sun",		"Fire x4540",		"http://www.sun.com/servers/x64/x4540/", NULL),
+	B("Sun",		"Fire x4600",		"http://www.sun.com/servers/x64/x4600/", NULL),
 
 	{},
 };
@@ -389,7 +402,7 @@ const struct board_info boards_bad[] = {
 /* Please keep this list alphabetically ordered by vendor/board. */
 const struct board_info laptops_ok[] = {
 	/* Verified working laptops. */
-	{ "Lenovo",		"3000 V100 TF05Cxx", },
+	B("Lenovo",		"3000 V100 TF05Cxx",	"http://www5.pc.ibm.com/europe/products.nsf/products?openagent&brand=Lenovo3000Notebook&series=Lenovo+3000+V+Series#viewallmodelstop", NULL),
 
 	{},
 };
@@ -397,14 +410,21 @@ const struct board_info laptops_ok[] = {
 /* Please keep this list alphabetically ordered by vendor/board. */
 const struct board_info laptops_bad[] = {
 	/* Verified non-working laptops (for now). */
-	{ "Acer",		"Aspire One", },
-	{ "ASUS",		"Eee PC 701 4G", },
-	{ "Dell",		"Latitude CPi A366XT", },
-	{ "HP/Compaq",		"nx9010", },
-	{ "IBM/Lenovo",		"Thinkpad T40p", },
-	{ "IBM/Lenovo",		"240", },
+	B("Acer",		"Aspire One",		NULL,
+								"See http://www.coreboot.org/pipermail/coreboot/2009-May/048041.html"),
+	B("ASUS",		"Eee PC 701 4G",	"http://www.asus.com/product.aspx?P_ID=h6SPd3tEzLEsrEiS",
+								"It seems the chip (25X40VSIG) is behind some SPI flash translation layer (likely in the EC, the ENE KB3310)."),
+	B("Dell",		"Latitude CPi A366XT",	"http://www.coreboot.org/Dell_Latitude_CPi_A366XT",
+								"The laptop immediately powers off if you try to hot-swap the chip. It's not yet tested if write/erase would work on this laptop."),
+	B("HP/Compaq",		"nx9010",		"http://h20000.www2.hp.com/bizsupport/TechSupport/Document.jsp?lang=en&cc=us&objectID=c00348514",
+								"Hangs upon '''flashrom -V''' (needs hard power-cycle then)."),
+	B("IBM/Lenovo",		"Thinkpad T40p",	"http://www.thinkwiki.org/wiki/Category:T40p",
+								"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",		"240",			"http://www.stanford.edu/~bresnan//tp240.html", NULL),
 
 	{},
 };
 #endif
 
+#undef B
+
diff --git a/print_wiki.c b/print_wiki.c
index ff5a4c8..4787e7f 100644
--- a/print_wiki.c
+++ b/print_wiki.c
@@ -97,251 +97,61 @@ untested laptops 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";
 
 /* Please keep these lists alphabetically ordered by vendor/board. */
-const struct board_info_url boards_url[] = {
-	/* Verified working boards that don't need write-enables. */
-	{ "Abit",		"AX8",			"http://www.abit.com.tw/page/en/motherboard/motherboard_detail.php?DEFTITLE=Y&fMTYPE=Socket%20939&pMODEL_NAME=AX8" },
-	{ "Abit",		"Fatal1ty F-I90HD",	"http://www.abit.com.tw/page/de/motherboard/motherboard_detail.php?pMODEL_NAME=Fatal1ty+F-I90HD&fMTYPE=LGA775" },
-	{ "Advantech",		"PCM-5820", 		"http://www.emacinc.com/sbc_pc_compatible/pcm_5820.htm" },
-	{ "ASI",		"MB-5BLMP",		"http://www.hojerteknik.com/winnet.htm" },
-	{ "ASRock",		"A770CrossFire",	"http://www.asrock.com/mb/overview.asp?Model=A770CrossFire&s=AM2\%2b" },
-	{ "ASRock",		"K8S8X",		"http://www.asrock.com/mb/overview.asp?Model=K8S8X" },
-	{ "ASRock",		"M3A790GXH/128M"	"http://www.asrock.com/MB/overview.asp?Model=M3A790GXH/128M" },
-	{ "ASUS",		"A7N8X Deluxe",		"http://www.asus.com/Product.aspx?P_ID=wAsRYm41KTp78MFC" },
-	{ "ASUS",		"A7N8X-E Deluxe",	"http://www.asus.com/products.aspx?l1=3&l2=13&l3=56&l4=0&model=217&modelmenu=1" },
-	{ "ASUS",		"A7V400-MX",		"http://www.asus.com.tw/products.aspx?l1=3&l2=13&l3=63&l4=0&model=228&modelmenu=1" },
-	{ "ASUS",		"A7V8X-MX",		"http://www.asus.com.tw/products.aspx?l1=3&l2=13&l3=64&l4=0&model=229&modelmenu=1" },
-	{ "ASUS",		"A8N-E",		"http://www.asus.com.tw/products.aspx?l1=3&l2=15&l3=171&l4=0&model=455&modelmenu=2" },
-	{ "ASUS",		"A8NE-FM/S",		"http://www.hardwareschotte.de/hardware/preise/proid_1266090/preis_ASUS+A8NE-FM" },
-	{ "ASUS",		"A8N-SLI",		"http://asus.com/product.aspx?P_ID=J9FKa8z2xVId3pDK" },
-	{ "ASUS",		"A8N-SLI Premium",	"http://www.asus.com.tw/products.aspx?l1=3&l2=15&l3=148&l4=0&model=539&modelmenu=1" },
-	{ "ASUS",		"A8V Deluxe",		"http://www.asus.com/product.aspx?P_ID=tvpdgPNCPaABZRVU" },
-	{ "ASUS",		"A8V-E Deluxe",		"http://www.asus.com.tw/products.aspx?l1=3&l2=15&l3=143&l4=0&model=376&modelmenu=1" },
-	{ "ASUS",		"A8V-E SE",		"http://www.asus.com.tw/products.aspx?l1=3&l2=15&l3=143&l4=0&model=576&modelmenu=1" },
-	{ "ASUS",		"K8V",			"http://www.asus.com/product.aspx?P_ID=fG2KZOWF7v6MRFRm" },
-	{ "ASUS",		"K8V SE Deluxe",	"http://www.asus.com/product.aspx?P_ID=65HeDI8XM1u6Uy6o" },
-	{ "ASUS",		"K8V-X SE",		"http://asus.com/product.aspx?P_ID=lzDXlbBVHkdckHVr" },
-	{ "ASUS",		"M2A-MX",		"http://www.asus.com/products.aspx?l1=3&l2=101&l3=583&l4=0&model=1909&modelmenu=1" },
-	{ "ASUS",		"M2A-VM",		"http://www.asus.com.tw/products.aspx?l1=3&l2=101&l3=496&l4=0&model=1568&modelmenu=1" },
-	{ "ASUS",		"M2N-E",		"http://www.asus.com/products.aspx?l1=3&l2=101&l3=308&l4=0&model=1181&modelmenu=1" },
-	{ "ASUS",		"M2V",			"http://asus.com/Product.aspx?P_ID=OqYlEDFfF6ZqZGvp" },
-	{ "ASUS",		"M3A78-EM",		"http://www.asus.com/product.aspx?P_ID=KjpYqzmAd9vsTM2D" },
-	{ "ASUS",		"P2B",			"http://www.motherboard.cz/mb/asus/P2B.htm" },
-	{ "ASUS",		"P2B-D",		"ftp://ftp.asus.com.tw/pub/ASUS/mb/slot1/440bx/p2b-d/" },
-	{ "ASUS",		"P2B-DS",		"ftp://ftp.asus.com.tw/pub/ASUS/mb/slot1/440bx/p2b-ds/" },
-	{ "ASUS",		"P2B-F",		"http://www.motherboard.cz/mb/asus/P2B-F.htm" },
-	{ "ASUS",		"P2L97-S",		"http://www.motherboard.cz/mb/asus/P2L97-S.htm" },
-	{ "ASUS",		"P5B-Deluxe",		"ftp://ftp.asus.com.tw/pub/ASUS/mb/socket775/P5B-Deluxe/" },
-	{ "ASUS",		"P5KC",			"http://www.asus.com/product.aspx?P_ID=fFZ8oUIGmLpwNMjj" },
-	{ "ASUS",		"P5L-MX",		"http://www.asus.com/product.aspx?P_ID=X70d3NCzH2DE9vWH" },
-	{ "ASUS",		"P6T Deluxe V2",	"http://www.asus.com/product.aspx?P_ID=iRlP8RG9han6saZx" },
-	{ "A-Trend",		"ATC-6220",		"http://www.motherboard.cz/mb/atrend/atc6220.htm" },
-	{ "BCOM",		"WinNET100",		"http://www.coreboot.org/BCOM_WINNET100" },
-	{ "DFI",		"Blood-Iron P35 T2RL",	"http://lp.lanparty.com.tw/portal/CM/cmproduct/XX_cmproddetail/XX_WbProdsWindow?itemId=516&downloadFlag=false&action=1" },
-	{ "Elitegroup",		"K7S5A",		"http://www.ecs.com.tw/ECSWebSite/Products/ProductsDetail.aspx?detailid=279&CategoryID=1&DetailName=Specification&MenuID=1&LanID=0" },
-	{ "Elitegroup",		"P6VAP-A+",		"http://www.ecs.com.tw/ECSWebSite/Products/ProductsDetail.aspx?detailid=117&CategoryID=1&DetailName=Specification&MenuID=1&LanID=0" },
-	{ "GIGABYTE",		"GA-6BXC",		"http://www.gigabyte.com.tw/Products/Motherboard/Products_Spec.aspx?ClassValue=Motherboard&ProductID=1445&ProductName=GA-6BXC" },
-	{ "GIGABYTE",		"GA-6BXDU",		"http://www.gigabyte.com.tw/Products/Motherboard/Products_Spec.aspx?ProductID=1429" },
-	{ "GIGABYTE",		"GA-6ZMA",		"http://www.gigabyte.de/Support/Motherboard/BIOS_Model.aspx?ProductID=3289" },
-	{ "GIGABYTE",		"GA-EX58-UD4P",		"http://www.gigabyte.com.tw/Products/Motherboard/Products_Overview.aspx?ProductID=2986" },
-	{ "GIGABYTE",		"GA-EP35-DS3L",		"http://www.gigabyte.com.tw/Products/Motherboard/Products_Overview.aspx?ProductID=2778" },
-	{ "GIGABYTE",		"GA-MA69VM-S2",		"http://www.gigabyte.com.tw/Products/Motherboard/Products_Overview.aspx?ProductID=2500" },
-	{ "GIGABYTE",		"GA-MA790GP-DS4H",	"http://www.gigabyte.com.tw/Products/Motherboard/Products_Spec.aspx?ProductID=2887" },
-	{ "GIGABYTE",		"GA-MA78GPM-DS2H",	"http://www.gigabyte.com.tw/Products/Motherboard/Products_Spec.aspx?ProductID=2859" },
-	{ "GIGABYTE",		"GA-MA770T-UD3P",	"http://www.gigabyte.com.tw/Products/Motherboard/Products_Spec.aspx?ProductID=3096" },
-	{ "Intel",		"EP80759",		NULL },
-	{ "Jetway",		"J7F4K1G5D-PB",		"http://www.jetway.com.tw/jetway/system/productshow2.asp?id=389&proname=J7F4K1G5D-P" },
-	{ "MSI",		"MS-6153",		"http://www.msi.com/index.php?func=proddesc&maincat_no=1&cat2_no=&cat3_no=&prod_no=336" },
-	{ "MSI",		"MS-6156",		"http://uk.ts.fujitsu.com/rl/servicesupport/techsupport/boards/Motherboards/MicroStar/Ms6156/MS6156.htm" },
-	{ "MSI",		"MS-6570 (K7N2)",	"http://www.msi-computer.de/index.php?func=proddesc&prod_no=519&maincat_no=1" },
-	{ "MSI",		"MS-7065",		"http://browse.geekbench.ca/geekbench2/view/53114" },
-	{ "MSI",		"MS-7168 (Orion)",	"http://support.packardbell.co.uk/uk/item/index.php?i=spec_orion&pi=platform_honeymoon_istart" },
-	{ "MSI",		"MS-7236 (945PL Neo3)",	"http://www.msi.com/index.php?func=proddesc&maincat_no=1&prod_no=1173" },
-	{ "MSI",		"MS-7255 (P4M890M)",	"http://www.tcsbahamas.com/P4M89.htm" },
-	{ "MSI",		"MS-7345 (P35 Neo2-FIR)","http://www.msi.com/index.php?func=prodcpusupport&maincat_no=1&cat2_no=170&cat3_no=&prod_no=1261" },
-	{ "MSI",		"MS-7368 (K9AG Neo2-Digital)", "http://www.msi.com/index.php?func=proddesc&maincat_no=1&prod_no=1241" },
-	{ "NEC",		"PowerMate 2000",	"http://support.necam.com/mobilesolutions/hardware/Desktops/pm2000/celeron/" },
-	{ "PC Engines",		"Alix.1c",		"http://pcengines.ch/alix1c.htm" },
-	{ "PC Engines",		"Alix.2c2",		"http://pcengines.ch/alix2c2.htm" },
-	{ "PC Engines",		"Alix.2c3",		"http://pcengines.ch/alix2c3.htm" },
-	{ "PC Engines",		"Alix.3c3",		"http://pcengines.ch/alix3c3.htm" },
-	{ "PC Engines",		"Alix.3d3",		"http://pcengines.ch/alix3d3.htm" },
-	{ "RCA",		"RM4100",		"http://www.settoplinux.org/index.php?title=RCA_RM4100" },
-	{ "Sun",		"Blade x6250",		"http://www.sun.com/servers/blades/x6250/" },
-	{ "Supermicro",		"H8QC8",		"http://www.supermicro.com/Aplus/motherboard/Opteron/nforce/H8QC8.cfm" },
-	{ "Tekram",		"P6Pro-A5",		"http://www.motherboard.cz/mb/tekram/P6Pro-A5.htm" },
-	{ "Thomson",		"IP1000",		"http://www.settoplinux.org/index.php?title=Thomson_IP1000" },
-	{ "TriGem",		"Lomita",		"http://www.e4allupgraders.info/dir1/motherboards/socket370/lomita.shtml" },
-	{ "T-Online",		"S-100",		"http://wiki.freifunk-hannover.de/T-Online_S_100" },
-	{ "Tyan",		"iS5375-1U",		"http://www.tyan.com/product_board_detail.aspx?pid=610" },
-	{ "Tyan",		"S1846",		"http://www.tyan.com/archive/products/html/tsunamiatx.html" },
-	{ "Tyan",		"S2466",		"http://www.tyan.com/product_board_detail.aspx?pid=461" },
-	{ "Tyan",		"S2881",		"http://www.tyan.com/product_board_detail.aspx?pid=115" },
-	{ "Tyan",		"S2882",		"http://www.tyan.com/product_board_detail.aspx?pid=121" },
-	{ "Tyan",		"S2882-D",		"http://www.tyan.com/product_board_detail.aspx?pid=127" },
-	{ "Tyan",		"S2891",		"http://www.tyan.com/product_board_detail.aspx?pid=144" },
-	{ "Tyan",		"S2892",		"http://www.tyan.com/product_board_detail.aspx?pid=145" },
-	{ "Tyan",		"S2895",		"http://www.tyan.com/archive/products/html/thunderk8we.html" },
-	{ "Tyan",		"S3095",		"http://www.tyan.com/product_board_detail.aspx?pid=181" },
-	{ "Tyan",		"S5180",		"http://www.tyan.com/product_board_detail.aspx?pid=456" },
-	{ "Tyan",		"S5191",		"http://www.tyan.com/product_board_detail.aspx?pid=343" },
-	{ "Tyan",		"S5197",		"http://www.tyan.com/product_board_detail.aspx?pid=349" },
-	{ "Tyan",		"S5211",		"http://www.tyan.com/product_board_detail.aspx?pid=591" },
-	{ "Tyan",		"S5211-1U",		"http://www.tyan.com/product_board_detail.aspx?pid=593" },
-	{ "Tyan",		"S5220",		"http://www.tyan.com/product_board_detail.aspx?pid=597" },
-	{ "Tyan",		"S5375",		"http://www.tyan.com/product_board_detail.aspx?pid=566" },
-	{ "Tyan",		"S5376G2NR/S5376WAG2NR","http://www.tyan.com/product_board_detail.aspx?pid=605" },
-	{ "Tyan",		"S5377",		"http://www.tyan.com/product_SKU_spec.aspx?ProductType=MB&pid=642&SKU=600000017" },
-	{ "Tyan",		"S5397",		"http://www.tyan.com/product_board_detail.aspx?pid=560" },
-	{ "VIA",		"EPIA-EX15000G",	"http://www.via.com.tw/en/products/embedded/ProductDetail.jsp?productLine=1&motherboard_id=450" },
-	{ "VIA",		"EPIA-LN",		"http://www.via.com.tw/en/products/mainboards/motherboards.jsp?motherboard_id=473" },
-	{ "VIA",		"EPIA-M700",		"http://via.com.tw/servlet/downloadSvl?motherboard_id=670&download_file_id=3700" },
-	{ "VIA",		"EPIA-NX15000G",	"http://www.via.com.tw/en/products/embedded/ProductDetail.jsp?productLine=1&motherboard_id=470" },
-	{ "VIA",		"NAB74X0",		"http://www.via.com.tw/en/products/mainboards/motherboards.jsp?motherboard_id=590" },
-	{ "VIA",		"pc2500e",		"http://www.via.com.tw/en/initiatives/empowered/pc2500_mainboard/index.jsp" },
-	{ "VIA",		"VB700X",		"http://www.via.com.tw/en/products/mainboards/motherboards.jsp?motherboard_id=490" },
-
-	/* Verified working boards that DO need write-enables. */
-	{ "Abit",		"IP35",			"http://www.abit.com.tw/page/en/motherboard/motherboard_detail.php?fMTYPE=LGA775&pMODEL_NAME=IP35" },
-	{ "Acorp",		"6A815EPD",		"http://web.archive.org/web/20021206163652/www.acorp.com.tw/English/default.asp" },
-	{ "agami",		"Aruma",		"http://web.archive.org/web/20080212111524/http://www.agami.com/site/ais-6000-series" },
-	{ "Albatron",		"PM266A Pro",		"http://www.albatron.com.tw/English/Product/MB/pro_detail.asp?rlink=Overview&no=56" }, /* FIXME */
-	{ "AOpen",		"vKM400Am-S",		"http://usa.aopen.com/products_detail.aspx?Auno=824" },
-	{ "Artec Group",	"DBE61",		"http://wiki.thincan.org/DBE61" },
-	{ "Artec Group",	"DBE62",		"http://wiki.thincan.org/DBE62" },
-	{ "ASUS",		"A7V600-X",		"http://www.asus.com/product.aspx?P_ID=L2XYS0rmtCjeOr4k" },
-	{ "ASUS",		"A7V8X",		"http://www.asus.com/product.aspx?P_ID=qfpaGrAy2kLVo0f2" },
-	{ "ASUS",		"A7V8X-MX SE",		"http://www.asus.com/product.aspx?P_ID=1guVBT1qV5oqhHyZ" },
-	{ "ASUS",		"A7V8X-X",		"http://www.asus.com/product.aspx?P_ID=YcXfRrWHZ9RKoVmw" },
-	{ "ASUS",		"P4B266",		"http://www.ciao.co.uk/ASUS_Intel_845D_Chipset_P4B266__5409807#productdetail" },
-	{ "ASUS",		"P4P800-E Deluxe",	"http://www.asus.com/product.aspx?P_ID=INIJUvLlif7LHp3g" },
-	{ "ASUS",		"P5ND2-SLI Deluxe",	"http://www.asus.com/product.aspx?P_ID=WY7XroDuUImVbgp5" },
-	{ "ASUS",		"P5A",			"ftp://ftp.asus.com.tw/pub/ASUS/mb/sock7/ali/p5a/" },
-	{ "Biostar",		"P4M80-M4",		"http://www.biostar-usa.com/mbdetails.asp?model=p4m80-m4" },
-	{ "Dell",		"PowerEdge 1850",	"http://support.dell.com/support/edocs/systems/pe1850/en/index.htm" },
-	{ "Elitegroup",		"K7VTA3",		"http://www.ecs.com.tw/ECSWebSite/Products/ProductsDetail.aspx?detailid=264&CategoryID=1&DetailName=Specification&MenuID=52&LanID=0" },
-	{ "EPoX",		"EP-8K5A2",		"http://www.epox.com/product.asp?ID=EP-8K5A2" },
-	{ "EPoX",		"EP-8RDA3+",		"http://www.epox.com/product.asp?ID=EP-8RDA3plus" },
-	{ "EPoX",		"EP-BX3",		"http://www.epox.com/product.asp?ID=EP-BX3" },
-	{ "GIGABYTE",		"GA-2761GXDK",		"http://www.computerbase.de/news/hardware/mainboards/amd-systeme/2007/mai/gigabyte_dtx-mainboard/" },
-	{ "GIGABYTE",		"GA-7VT600",		"http://www.gigabyte.com.tw/Products/Motherboard/Products_Spec.aspx?ProductID=1666" },
-	{ "GIGABYTE",		"GA-7ZM",		"http://www.gigabyte.com.tw/Products/Motherboard/Products_Spec.aspx?ProductID=1366" },
-	{ "GIGABYTE",		"GA-K8N-SLI",		"http://www.gigabyte.com.tw/Products/Motherboard/Products_Spec.aspx?ProductID=1928" },
-	{ "GIGABYTE",		"GA-M57SLI-S4",		"http://www.gigabyte.com.tw/Products/Motherboard/Products_Overview.aspx?ProductID=2287&ModelName=GA-M57SLI-S4" },
-	{ "GIGABYTE",		"GA-M61P-S3",		"http://www.gigabyte.com.tw/Products/Motherboard/Products_Spec.aspx?ProductID=2434" },
-	{ "GIGABYTE",		"GA-MA78G-DS3H",	"http://www.gigabyte.com.tw/Products/Motherboard/Products_Spec.aspx?ProductID=2800" }, /* TODO: Rev 1.x or 2.x? */
-	{ "GIGABYTE",		"GA-MA78GM-S2H",	"http://www.gigabyte.com.tw/Products/Motherboard/Products_Spec.aspx?ProductID=2758" }, /* TODO: Rev. 1.0, 1.1, or 2.x? */
-	{ "GIGABYTE",		"GA-MA790FX-DQ6",	"http://www.gigabyte.com.tw/Products/Motherboard/Products_Spec.aspx?ProductID=2690" },
-	{ "HP",			"DL145 G3",		"http://h20000.www2.hp.com/bizsupport/TechSupport/Document.jsp?objectID=c00816835&lang=en&cc=us&taskId=101&prodSeriesId=3219755&prodTypeId=15351" },
-	{ "IBM",		"x3455",		"http://www-03.ibm.com/systems/x/hardware/rack/x3455/index.html" },
-	{ "Intel",		"D201GLY",		"http://www.intel.com/support/motherboards/desktop/d201gly/index.htm" },
-	{ "IWILL",		"DK8-HTX",		"http://web.archive.org/web/20060507170150/http://www.iwill.net/product_2.asp?p_id=98" },
-	{ "Kontron",		"986LCD-M",		"http://de.kontron.com/products/boards+and+mezzanines/embedded+motherboards/miniitx+motherboards/986lcdmmitx.html" },
-	{ "Mitac",		"6513WU",		"http://web.archive.org/web/20050313054828/http://www.mitac.com/micweb/products/tyan/6513wu/6513wu.htm" },
-	{ "MSI",		"MS-6590 (KT4 Ultra)",	"http://www.msicomputer.com/product/p_spec.asp?model=KT4_Ultra&class=mb" },
-	{ "MSI",		"MS-6702E (K8T Neo2-F)","http://www.msicomputer.com/product/p_spec.asp?model=K8T_Neo2-F&class=mb" },
-	{ "MSI",		"MS-6712 (KT4V)",	"http://www.msi.com/index.php?func=proddesc&maincat_no=1&cat2_no=&cat3_no=&prod_no=505" },
-	{ "MSI",		"MS-7046",		"http://www.heimir.de/ms7046/" },
-	{ "MSI",		"MS-7135 (K8N Neo3)",	"http://www.msi-computer.de/index.php?func=proddesc&prod_no=170&maincat_no=1" },
-	{ "Shuttle",		"AK38N",		"http://eu.shuttle.com/en/desktopdefault.aspx/tabid-36/558_read-9889/" },
-	{ "Soyo",		"SY-7VCA",		"http://www.tomshardware.com/reviews/12-socket-370-motherboards,196-15.html" },
-	{ "Tyan",		"S2498 (Tomcat K7M)",	"http://www.tyan.com/archive/products/html/tomcatk7m.html" },
-	{ "VIA",		"EPIA-CN",		"http://www.via.com.tw/en/products/mainboards/motherboards.jsp?motherboard_id=400" },
-	{ "VIA",		"EPIA M/MII/...",	"http://www.via.com.tw/en/products/embedded/ProductDetail.jsp?productLine=1&motherboard_id=202" }, /* EPIA-MII link for now */
-	{ "VIA",		"EPIA-N/NL",		"http://www.via.com.tw/en/products/embedded/ProductDetail.jsp?productLine=1&motherboard_id=221" }, /* EPIA-N link for now */
-	{ "VIA",		"EPIA SP",		"http://www.via.com.tw/en/products/embedded/ProductDetail.jsp?productLine=1&motherboard_id=261" },
-	{ "VIA",		"PC3500G",		"http://www.via.com.tw/en/initiatives/empowered/pc3500_mainboard/index.jsp" },
- 
-	/* Verified non-working boards (for now). */
-	{ "Abit",		"IS-10",		"http://www.abit.com.tw/page/en/motherboard/motherboard_detail.php?pMODEL_NAME=IS-10&fMTYPE=Socket+478" },
-	{ "ASRock",		"K7VT4A+",		"http://www.asrock.com/mb/overview.asp?Model=K7VT4A%%2b&s=" },
-	{ "ASUS",		"MEW-AM",		"ftp://ftp.asus.com.tw/pub/ASUS/mb/sock370/810/mew-am/" },
-	{ "ASUS",		"MEW-VM",		"http://www.elhvb.com/mboards/OEM/HP/manual/ASUS%20MEW-VM.htm" },
-	{ "ASUS",		"P3B-F",		"ftp://ftp.asus.com.tw/pub/ASUS/mb/slot1/440bx/p3b-f/" },
-	{ "ASUS",		"P5B",			"ftp://ftp.asus.com.tw/pub/ASUS/mb/socket775/P5B/" },
-	{ "ASUS",		"P5BV-M",		"ftp://ftp.asus.com.tw/pub/ASUS/mb/socket775/P5B-VM/" },
-	{ "Biostar",		"M6TBA",		"ftp://ftp.biostar-usa.com/manuals/M6TBA/" },
-	{ "Boser",		"HS-6637",		"http://www.boser.com.tw/manual/HS-62376637v3.4.pdf" },
-	{ "DFI",		"855GME-MGF",		"http://www.dfi.com.tw/portal/CM/cmproduct/XX_cmproddetail/XX_WbProdsWindow?action=e&downloadType=&windowstate=normal&mode=view&downloadFlag=false&itemId=433" },
-	{ "FIC",		"VA-502",		"ftp://ftp.fic.com.tw/motherboard/manual/socket7/va-502/" },
-	{ "MSI",		"MS-6178",		"http://www.msi-technology.de/index.php?func=proddesc&prod_no=343&maincat_no=1" },
-	{ "MSI",		"MS-7260 (K9N Neo)",	"http://www.msi.com/index.php?func=proddesc&maincat_no=1&prod_no=255" },
-	{ "Soyo",		"SY-5VD",		"http://www.soyo.com/content/Downloads/163/&c=80&p=464&l=English" },
-	{ "Sun",		"Fire x4540",		"http://www.sun.com/servers/x64/x4540/" },
-	{ "Sun",		"Fire x4150",		"http://www.sun.com/servers/x64/x4150/" },
-	{ "Sun",		"Fire x4200",		"http://www.sun.com/servers/entry/x4200/" },
-	{ "Sun",		"Fire x4600",		"http://www.sun.com/servers/x64/x4600/" },
-
-	/* Verified working laptops. */
-	{ "Lenovo",		"3000 V100 TF05Cxx",	"http://www5.pc.ibm.com/europe/products.nsf/products?openagent&brand=Lenovo3000Notebook&series=Lenovo+3000+V+Series#viewallmodelstop" },
-
-	/* Verified non-working laptops (for now). */
-	{ "Acer",		"Aspire One",		NULL },
-	{ "ASUS",		"Eee PC 701 4G",	"http://www.asus.com/product.aspx?P_ID=h6SPd3tEzLEsrEiS" },
-	{ "Dell",		"Latitude CPi A366XT",	"http://www.coreboot.org/Dell_Latitude_CPi_A366XT" },
-	{ "HP/Compaq",		"nx9010",		"http://h20000.www2.hp.com/bizsupport/TechSupport/Document.jsp?lang=en&cc=us&objectID=c00348514" },
-	{ "IBM/Lenovo",		"Thinkpad T40p",	"http://www.thinkwiki.org/wiki/Category:T40p" },
-	{ "IBM/Lenovo",		"240",			"http://www.stanford.edu/~bresnan//tp240.html" },
-
-	{ NULL,			NULL,			0 },
-};
-
-/* Please keep these lists alphabetically ordered by vendor/board. */
-const struct board_info_notes boards_notes[] = {
-	/* Verified working boards that don't need write-enables. */
-	{ "ASI",		"MB-5BLMP",		"Used in the IGEL WinNET III thin client." },
-	{ "ASRock",		"K8S8X",		"The Super I/O isn't found on this board. See http://www.flashrom.org/pipermail/flashrom/2009-November/000937.html." },
-	{ "ASUS",		"A8V-E SE",		"See http://www.coreboot.org/pipermail/coreboot/2007-October/026496.html." },
-	{ "ASUS",		"M2A-VM",		"See http://www.coreboot.org/pipermail/coreboot/2007-September/025281.html." },
-	{ "BCOM",		"WinNET100",		"Used in the IGEL-316 thin client." },
-	{ "GIGABYTE",		"GA-7ZM",		"Works fine if you remove jumper JP9 on the board and disable the flash protection BIOS option." },
-	{ "ASUS",		"M2N-E",		"If the machine doesn't come up again after flashing, try resetting the NVRAM(CMOS). The MAC address of the onboard network card will change to the value stored in the new image, so backup the old address first. See http://www.flashrom.org/pipermail/flashrom/2009-November/000879.html" },
-
+const struct board_info boards_need_enable[] = {
 	/* Verified working boards that DO need write-enables. */
-	{ "Acer",		"Aspire One",		"See http://www.coreboot.org/pipermail/coreboot/2009-May/048041.html." },
-
-	/* Verified non-working boards (for now). */
-	{ "MSI",		"MS-6178",		"Immediately powers off if you try to hot-plug the chip. However, this does '''not''' happen if you use coreboot." },
-	{ "MSI",		"MS-7260 (K9N Neo)",	"Interestingly flashrom does not work when the vendor BIOS is booted, but it ''does'' work flawlessly when the machine is booted with coreboot." },
-
-	/* Verified working laptops. */
-	/* None which need comments, yet... */
-
-	/* Verified non-working laptops (for now). */
-	{ "Acer",		"Aspire One",		"http://www.coreboot.org/pipermail/coreboot/2009-May/048041.html" },
-	{ "ASUS",		"Eee PC 701 4G",	"It seems the chip (25X40VSIG) is behind some SPI flash translation layer (likely in the EC, the ENE KB3310)." },
-	{ "Dell",		"Latitude CPi A366XT",	"The laptop immediately powers off if you try to hot-swap the chip. It's not yet tested if write/erase would work on this laptop." },
-	{ "HP/Compaq",		"nx9010",		"Hangs upon '''flashrom -V''' (needs hard power-cycle then)." },
-	{ "IBM/Lenovo",		"Thinkpad T40p",	"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." },
+	{ "Abit",		"IP35",			"http://www.abit.com.tw/page/en/motherboard/motherboard_detail.php?fMTYPE=LGA775&pMODEL_NAME=IP35", NULL },
+	{ "Acorp",		"6A815EPD",		"http://web.archive.org/web/20021206163652/www.acorp.com.tw/English/default.asp", NULL },
+	{ "agami",		"Aruma",		"http://web.archive.org/web/20080212111524/http://www.agami.com/site/ais-6000-series", NULL },
+	{ "Albatron",		"PM266A Pro",		"http://www.albatron.com.tw/English/Product/MB/pro_detail.asp?rlink=Overview&no=56", NULL }, /* FIXME */
+	{ "AOpen",		"vKM400Am-S",		"http://usa.aopen.com/products_detail.aspx?Auno=824", NULL },
+	{ "Artec Group",	"DBE61",		"http://wiki.thincan.org/DBE61", NULL },
+	{ "Artec Group",	"DBE62",		"http://wiki.thincan.org/DBE62", NULL },
+	{ "ASUS",		"A7V600-X",		"http://www.asus.com/product.aspx?P_ID=L2XYS0rmtCjeOr4k", NULL },
+	{ "ASUS",		"A7V8X",		"http://www.asus.com/product.aspx?P_ID=qfpaGrAy2kLVo0f2", NULL },
+	{ "ASUS",		"A7V8X-MX SE",		"http://www.asus.com/product.aspx?P_ID=1guVBT1qV5oqhHyZ", NULL },
+	{ "ASUS",		"A7V8X-X",		"http://www.asus.com/product.aspx?P_ID=YcXfRrWHZ9RKoVmw", NULL },
+	{ "ASUS",		"P4B266",		"http://www.ciao.co.uk/ASUS_Intel_845D_Chipset_P4B266__5409807#productdetail", NULL },
+	{ "ASUS",		"P4P800-E Deluxe",	"http://www.asus.com/product.aspx?P_ID=INIJUvLlif7LHp3g", NULL },
+	{ "ASUS",		"P5ND2-SLI Deluxe",	"http://www.asus.com/product.aspx?P_ID=WY7XroDuUImVbgp5", NULL },
+	{ "ASUS",		"P5A",			"ftp://ftp.asus.com.tw/pub/ASUS/mb/sock7/ali/p5a/", NULL },
+	{ "Biostar",		"P4M80-M4",		"http://www.biostar-usa.com/mbdetails.asp?model=p4m80-m4", NULL },
+	{ "Dell",		"PowerEdge 1850",	"http://support.dell.com/support/edocs/systems/pe1850/en/index.htm", NULL },
+	{ "Elitegroup",		"K7VTA3",		"http://www.ecs.com.tw/ECSWebSite/Products/ProductsDetail.aspx?detailid=264&CategoryID=1&DetailName=Specification&MenuID=52&LanID=0", NULL },
+	{ "EPoX",		"EP-8K5A2",		"http://www.epox.com/product.asp?ID=EP-8K5A2", NULL },
+	{ "EPoX",		"EP-8RDA3+",		"http://www.epox.com/product.asp?ID=EP-8RDA3plus", NULL },
+	{ "EPoX",		"EP-BX3",		"http://www.epox.com/product.asp?ID=EP-BX3", NULL },
+	{ "GIGABYTE",		"GA-2761GXDK",		"http://www.computerbase.de/news/hardware/mainboards/amd-systeme/2007/mai/gigabyte_dtx-mainboard/", NULL },
+	{ "GIGABYTE",		"GA-7VT600",		"http://www.gigabyte.com.tw/Products/Motherboard/Products_Spec.aspx?ProductID=1666", NULL },
+	{ "GIGABYTE",		"GA-7ZM",		"http://www.gigabyte.com.tw/Products/Motherboard/Products_Spec.aspx?ProductID=1366", NULL },
+	{ "GIGABYTE",		"GA-K8N-SLI",		"http://www.gigabyte.com.tw/Products/Motherboard/Products_Spec.aspx?ProductID=1928", NULL },
+	{ "GIGABYTE",		"GA-M57SLI-S4",		"http://www.gigabyte.com.tw/Products/Motherboard/Products_Overview.aspx?ProductID=2287&ModelName=GA-M57SLI-S4", NULL },
+	{ "GIGABYTE",		"GA-M61P-S3",		"http://www.gigabyte.com.tw/Products/Motherboard/Products_Spec.aspx?ProductID=2434", NULL },
+	{ "GIGABYTE",		"GA-MA78G-DS3H",	"http://www.gigabyte.com.tw/Products/Motherboard/Products_Spec.aspx?ProductID=2800", NULL }, /* TODO: Rev 1.x or 2.x? */
+	{ "GIGABYTE",		"GA-MA78GM-S2H",	"http://www.gigabyte.com.tw/Products/Motherboard/Products_Spec.aspx?ProductID=2758", NULL }, /* TODO: Rev. 1.0, 1.1, or 2.x? */
+	{ "GIGABYTE",		"GA-MA790FX-DQ6",	"http://www.gigabyte.com.tw/Products/Motherboard/Products_Spec.aspx?ProductID=2690", NULL },
+	{ "HP",			"DL145 G3",		"http://h20000.www2.hp.com/bizsupport/TechSupport/Document.jsp?objectID=c00816835&lang=en&cc=us&taskId=101&prodSeriesId=3219755&prodTypeId=15351", NULL },
+	{ "IBM",		"x3455",		"http://www-03.ibm.com/systems/x/hardware/rack/x3455/index.html", NULL },
+	{ "Intel",		"D201GLY",		"http://www.intel.com/support/motherboards/desktop/d201gly/index.htm", NULL },
+	{ "IWILL",		"DK8-HTX",		"http://web.archive.org/web/20060507170150/http://www.iwill.net/product_2.asp?p_id=98", NULL },
+	{ "Kontron",		"986LCD-M",		"http://de.kontron.com/products/boards+and+mezzanines/embedded+motherboards/miniitx+motherboards/986lcdmmitx.html", NULL },
+	{ "Mitac",		"6513WU",		"http://web.archive.org/web/20050313054828/http://www.mitac.com/micweb/products/tyan/6513wu/6513wu.htm", NULL },
+	{ "MSI",		"MS-6590 (KT4 Ultra)",	"http://www.msicomputer.com/product/p_spec.asp?model=KT4_Ultra&class=mb", NULL },
+	{ "MSI",		"MS-6702E (K8T Neo2-F)","http://www.msicomputer.com/product/p_spec.asp?model=K8T_Neo2-F&class=mb", NULL },
+	{ "MSI",		"MS-6712 (KT4V)",	"http://www.msi.com/index.php?func=proddesc&maincat_no=1&cat2_no=&cat3_no=&prod_no=505", NULL },
+	{ "MSI",		"MS-7046",		"http://www.heimir.de/ms7046/", NULL },
+	{ "MSI",		"MS-7135 (K8N Neo3)",	"http://www.msi-computer.de/index.php?func=proddesc&prod_no=170&maincat_no=1", NULL },
+	{ "Shuttle",		"AK38N",		"http://eu.shuttle.com/en/desktopdefault.aspx/tabid-36/558_read-9889/", NULL },
+	{ "Soyo",		"SY-7VCA",		"http://www.tomshardware.com/reviews/12-socket-370-motherboards,196-15.html", NULL },
+	{ "Tyan",		"S2498 (Tomcat K7M)",	"http://www.tyan.com/archive/products/html/tomcatk7m.html", NULL },
+	{ "VIA",		"EPIA-CN",		"http://www.via.com.tw/en/products/mainboards/motherboards.jsp?motherboard_id=400", NULL },
+	{ "VIA",		"EPIA M/MII/...",	"http://www.via.com.tw/en/products/embedded/ProductDetail.jsp?productLine=1&motherboard_id=202", NULL }, /* EPIA-MII link for now */
+	{ "VIA",		"EPIA-N/NL",		"http://www.via.com.tw/en/products/embedded/ProductDetail.jsp?productLine=1&motherboard_id=221", NULL }, /* EPIA-N link for now */
+	{ "VIA",		"EPIA SP",		"http://www.via.com.tw/en/products/embedded/ProductDetail.jsp?productLine=1&motherboard_id=261", NULL },
+	{ "VIA",		"PC3500G",		"http://www.via.com.tw/en/initiatives/empowered/pc3500_mainboard/index.jsp", NULL },
 
 	{ NULL,			NULL,			0 },
 };
 
-static int url(const char *vendor, const char *board)
-{
-	int i;
-	const struct board_info_url *b = boards_url;
-
-        for (i = 0; b[i].vendor != NULL; i++) {
-		if (!strcmp(vendor, b[i].vendor) && !strcmp(board, b[i].name))
-			return i;
-	}
-
-	return -1;
-}
-
-static int note(const char *vendor, const char *board)
-{
-	int i;
-	const struct board_info_notes *n = boards_notes;
-
-        for (i = 0; n[i].vendor != NULL; i++) {
-		if (!strcmp(vendor, n[i].vendor) && !strcmp(board, n[i].name))
-			return i;
-	}
-
-	return -1;
-}
-
 void print_supported_chipsets_wiki(void)
 {
 	int i, j, enablescount = 0, color = 1;
@@ -379,9 +189,8 @@ void print_supported_chipsets_wiki(void)
 static void wiki_helper(const char *heading, const char *status,
 			int cols, const struct board_info boards[])
 {
-	int i, j, k, c, boardcount = 0, color = 1, num_notes = 0;
+	int i, j, boardcount = 0, color = 1, num_notes = 0;
 	const struct board_info *b;
-	const struct board_info_url *u = boards_url;
 	char *notes = calloc(1, 1);
 	char tmp[900 + 1];
 
@@ -397,19 +206,16 @@ static void wiki_helper(const char *heading, const char *status,
 		if (i > 0 && strcmp(b[i].vendor, b[i - 1].vendor))
 			color = !color;
 
-		k = url(b[i].vendor, b[i].name);
-		c = note(b[i].vendor, b[i].name);
-
 		printf("|- bgcolor=\"#%s\" valign=\"top\"\n| %s || %s%s %s%s ||"
 		       " {{%s}}", (color) ? "eeeeee" : "dddddd", b[i].vendor,
-		       (k != -1 && u[k].url) ? "[" : "",
-		       (k != -1 && u[k].url) ? u[k].url : "",
-		       b[i].name, (k != -1 && u[k].url) ? "]" : "", status);
+		       (b[i].url) ? "[" : "",
+		       (b[i].url) ? b[i].url : "",
+		       b[i].name, (b[i].url) ? "]" : "", status);
 
-		if (c != -1) {
+		if (b[i].note) {
 			printf("<sup>%d</sup>\n", num_notes + 1);
 			snprintf((char *)&tmp, 900, "<sup>%d</sup> %s<br />\n",
-				 1 + num_notes++, boards_notes[c].note);
+				 1 + num_notes++, b[i].note);
 			notes = strcat_realloc(notes, (char *)&tmp);
 		} else {
 			printf("\n");
@@ -429,52 +235,11 @@ static void wiki_helper(const char *heading, const char *status,
 	free(notes);
 }
 
-static void wiki_helper2(const char *heading, int cols)
-{
-	int i, j, k, boardcount = 0, color = 1;
-	struct board_pciid_enable *b;
-	const struct board_info_url *u = boards_url;
-
-	for (b = board_pciid_enables; b->vendor_name != NULL; b++)
-		boardcount++;
-
-	printf("\n'''%s'''\n\nTotal amount of boards: '''%d'''\n\n"
-	       "{| border=\"0\" valign=\"top\"\n| valign=\"top\"|\n\n%s",
-	       heading, boardcount, board_th2);
-
-	b = board_pciid_enables;
-	for (i = 0, j = 0; b[i].vendor_name != NULL; i++, j++) {
-		/* Alternate colors if the vendor changes. */
-		if (i > 0 && strcmp(b[i].vendor_name, b[i - 1].vendor_name))
-			color = !color;
-
-		k = url(b[i].vendor_name, b[i].board_name);
-
-		printf("|- bgcolor=\"#%s\" valign=\"top\"\n| %s || %s%s %s%s "
-		       "|| %s%s%s%s || {{OK}}\n", (color) ? "eeeeee" : "dddddd",
-		       b[i].vendor_name, (k != -1 && u[k].url) ? "[" : "",
-		       (k != -1 && u[k].url) ? u[k].url : "", b[i].board_name,
-		       (k != -1 && u[k].url) ? "]" : "",
-		       (b[i].lb_vendor) ? "-m " : "—",
-		       (b[i].lb_vendor) ? b[i].lb_vendor : "",
-		       (b[i].lb_vendor) ? ":" : "",
-		       (b[i].lb_vendor) ? b[i].lb_part : "");
-
-		/* Split table in three columns. */
-		if (j >= (boardcount / cols + 1)) {
-			printf("\n|}\n\n| valign=\"top\"|\n\n%s", board_th2);
-			j = 0;
-		}
-	}
-
-	printf("\n|}\n\n|}\n");
-}
-
 void print_supported_boards_wiki(void)
 {
 	printf("%s", board_intro);
 	wiki_helper("Known good (worked out of the box)", "OK", 3, boards_ok);
-	wiki_helper2("Known good (with write-enable code in flashrom)", 3);
+	wiki_helper("Known good (with write-enable code in flashrom)", "OK", 3, boards_need_enable);
 	wiki_helper("Not supported (yet)", "No", 3, boards_bad);
 
 	printf("%s", laptop_intro);
-- 
1.7.0





More information about the flashrom mailing list