Hello community,

here is the log from the commit of package flashrom for openSUSE:Factory 
checked in at 2011-10-29 08:00:12
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/flashrom (Old)
 and      /work/SRC/openSUSE:Factory/.flashrom.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "flashrom", Maintainer is "[email protected]"

Changes:
--------
--- /work/SRC/openSUSE:Factory/flashrom/flashrom.changes        2011-10-16 
12:44:04.000000000 +0200
+++ /work/SRC/openSUSE:Factory/.flashrom.new/flashrom.changes   2011-10-29 
08:00:14.000000000 +0200
@@ -1,0 +2,6 @@
+Fri Oct 28 21:59:50 CLST 2011 - [email protected]
+
+- update to 0.9.4 r1457.
+  * Mark several new boards as supported/unsupported
+
+-------------------------------------------------------------------

Old:
----
  flashrom-0.9.4_r1450.tar.bz2

New:
----
  flashrom-0.9.4_r1457.tar.bz2

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ flashrom.spec ++++++
--- /var/tmp/diff_new_pack.HptQ37/_old  2011-10-29 08:00:16.000000000 +0200
+++ /var/tmp/diff_new_pack.HptQ37/_new  2011-10-29 08:00:16.000000000 +0200
@@ -20,7 +20,7 @@
 Name:           flashrom
 Url:            http://coreboot.org/
 Summary:        A universal flash programming utility
-Version:        0.9.4_r1450
+Version:        0.9.4_r1457
 Release:        1
 License:        GPLv2 ; GPLv2+
 Group:          Development/Tools/Other

++++++ flashrom-0.9.4_r1450.tar.bz2 -> flashrom-0.9.4_r1457.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/flashrom-0.9.4_r1450/ChangeLog 
new/flashrom-0.9.4_r1457/ChangeLog
--- old/flashrom-0.9.4_r1450/ChangeLog  2011-10-14 05:02:54.000000000 +0200
+++ new/flashrom-0.9.4_r1457/ChangeLog  2011-10-29 02:59:50.000000000 +0200
@@ -1,4 +1,259 @@
 ------------------------------------------------------------------------
+r1457 | stefanct | 2011-10-22 19:01:09 -0300 (Sat, 22 Oct 2011) | 58 lines
+
+Fix all ASUS P5GD* board enables
+
+Changes related to P5GD1 variants:
+- Reorder "P5GD1 Pro" in print.c and include a DMI patter to its board enable
+- Add an untested "P5GD1(-VM)" board enable and add an entry to print.c
+- Add P5GD1-VM/S variant as reported by "Limer"
+
+Changes related to P5GD(2/C) variants:
+- Fix the name of "P5GDC-V Deluxe" board enable and add a DMI pattern and
+  print.c entry. NB: there is no "P5GDC-V" board.
+- Add a generic match for P5GD(2/C)* boards with a not tested tag.
+  This are the potential targets for this according to the asus ftp:
+  ftp://ftp.asus.com.tw/pub/ASUS/mb/socket775/
+   Unsupported variants of the P5GD2:
+    P5GD2, P5GD2 Deluxe, P5GD2 Pro, P5GD2-X
+    (P5GD2 Premium is already tested)
+    (there seems to be also a P5GD2-TVM/GB/SI in the wild, which is not known 
to
+    asus :)
+   Unsupported variants of the P5GDC:
+   P5GDC Pro, P5GDC-MX
+    (P5GDC Deluxe and P5GDC-V Deluxe are already tested)
+
+ References:
+P5GD1 PRO (dmi "P5GD1 PRO")
+  smbus: 0x8086, 0x266a, 0x1043, 0x80a6; audio: 0x8086, 0x2668, 0x1043, 
*0x814e*
+  http://www.coreboot.org/pipermail/flashrom/2010-August/004539.html
+P5GD1 (dmi "P5GD1")
+  The non-pro version seems to match the pro pci pattern, but could be
+  distinguished by the SATA ID of 1043:2604 vs. 1043:2601:
+  https://launchpadlibrarian.net/62167576/Lspci.txt
+  or a DMI pattern of course.
+P5GD1-VM (dmi "P5GD1-VM")
+  This does also match the current PCI IDs.
+  https://bugs.launchpad.net/ubuntu/+source/linux/+bug/465379
+
+- P5GD2 Premium (dmi "P5GD2-Premium")
+  smbus: 0x8086, 0x266a, 0x1043, 0x80a6; audio: 0x8086, 0x2668, 0x1043, 0x813d
+  http://www.flashrom.org/pipermail/flashrom/2010-August/004555.html
+- P5GDC-V Deluxe (dmi "P5GDC-V")
+  smbus: 0x8086, 0x266a, 0x1043, 0x80a6; audio: 0x8086, 0x2668, 0x1043, 0x813d
+  http://www.flashrom.org/pipermail/flashrom/2010-September/004939.html
+- P5GDC Deluxe (dmi "P5GDC")
+  smbus: 0x8086, 0x266a, 0x1043, 0x80a6; audio: 0x8086, 0x2668, 0x1043, 0x813d
+  http://www.flashrom.org/pipermail/flashrom/2010-September/004684.html
+
+- P5GDC Pro, P5GDC-MX, P5GD2-X, P5GD2 Pro, P5GD2
+  no useful logs found
+- P5GD2-Deluxe (dmi "P5GD2-Deluxe")
+  smbus: 0x8086, 0x266a, 0x1043, 0x80a6; audio: 0x8086, 0x2668, 0x1043, 0x813d
+  https://bugs.launchpad.net/ubuntu/+source/foomatic-filters/+bug/572514
+
+- P5GD2-TVM/GB/SI (dmi "P5GD2-TVM/GB/SI")
+  smbus: 0x8086, 0x266a, 0x1043, 0x266a; audio: 0x8086, 0x2668, 0x1043, 
*0x81a7*
+  https://bugs.launchpad.net/ubuntu/+source/linux/+bug/462500
+
+Signed-off-by: Stefan Tauner <[email protected]>
+and due to the tremendous interest... ;)
+Acked-by: Stefan Tauner <[email protected]>
+------------------------------------------------------------------------
+r1456 | stefanct | 2011-10-22 18:45:27 -0300 (Sat, 22 Oct 2011) | 8 lines
+
+serprog: small improvements
+
+- rename serprog_delay parameter to usecs
+- fix code style, (output) formatting issues and comments
+- sp_docommand: remove unnecessary malloc+memcpy and fix formatting
+
+Signed-off-by: Stefan Tauner <[email protected]>
+Acked-by: Uwe Hermann <[email protected]>
+------------------------------------------------------------------------
+r1455 | stefanct | 2011-10-21 10:20:11 -0300 (Fri, 21 Oct 2011) | 13 lines
+
+Add board enable for ABIT AV8
+
+I disassembled the write enable and the write disable functions from
+the Award BIOS image and reconstructed C code to understand for
+myself what happens. For details see:
+http://www.flashrom.org/pipermail/flashrom/2011-October/008033.html
+
+I compared the download pages of both, abit AV8 and abit AV8-3rd Eye,
+and the BIOS downloads are the same. So it's save to assume that this
+board enable works on both versions. Tested on AV8.
+
+Signed-off-by: Christoph Grenz <[email protected]>
+Acked-by: Stefan Tauner <[email protected]>
+------------------------------------------------------------------------
+r1454 | stefanct | 2011-10-21 09:33:07 -0300 (Fri, 21 Oct 2011) | 87 lines
+
+Add a bunch of new/tested stuff and various small changes 8
+
+Tested mainboards:
+OK:
+- ASUS Crosshair II Formula
+  http://www.flashrom.org/pipermail/flashrom/2011-September/007888.html
+- ASUS K8N
+  http://paste.flashrom.org/view.php?id=856
+- ASUS M2N-E SLI
+  http://www.flashrom.org/pipermail/flashrom/2011-September/007909.html
+- ASUS M3N78-VM
+  http://www.flashrom.org/pipermail/flashrom/2011-May/006496.html
+- ASUS M4A78LT-M LE
+  http://www.flashrom.org/pipermail/flashrom/2011-September/007869.html
+- ASUS M4A89GTD PRO
+  http://www.flashrom.org/pipermail/flashrom/2011-February/005824.html
+- MSI A75MA-G55 (MS-7696)
+  http://www.flashrom.org/pipermail/flashrom/2011-October/008055.html
+- PCCHIPS M598LMR (V9.0)
+  http://www.flashrom.org/pipermail/flashrom/2011-October/008051.html
+- ECS P4VXMS (V1.0A)
+  http://www.flashrom.org/pipermail/flashrom/2011-September/007986.html
+- Foxconn P4M800P7MA-RS2
+  http://www.flashrom.org/pipermail/flashrom/2011-October/008114.html
+- GIGABYTE GA-P67A-UD3P
+  http://www.flashrom.org/pipermail/flashrom/2011-September/007930.html
+- GIGABYTE Z68MX-UD2H-B
+  http://www.flashrom.org/pipermail/flashrom/2011-October/008080.html
+- ZOTAC Fusion-ITX WiFi (FUSION350-A-E)
+  http://www.flashrom.org/pipermail/flashrom/2011-October/008011.html
+NOT OK:
+- ASUS P8B-E/4L
+  http://www.flashrom.org/pipermail/flashrom/2011-October/008047.html
+- ASUS P8B WS
+  http://www.flashrom.org/pipermail/flashrom/2011-October/008081.html
+
+Tested chipsets:
+- MCP78S (:075d)
+  http://www.flashrom.org/pipermail/flashrom/2011-August/007612.html
+- VT8233 (:3074)
+  http://www.flashrom.org/pipermail/flashrom/2011-September/007986.html
+- SiS 530 (:0530)
+  http://www.flashrom.org/pipermail/flashrom/2011-October/008051.html
+- P67 (:1c46)
+  http://www.flashrom.org/pipermail/flashrom/2011-September/007930.html
+ - Z68 (:1c44)
+  http://www.flashrom.org/pipermail/flashrom/2011-October/008080.html
+
+Tested flash chips:
+- mark AMIC A29002T as TEST_OK_PREW
+  http://www.flashrom.org/pipermail/flashrom/2011-October/008085.html
+- mark Eon EN29F002(A)(N)T as TEST_OK_PREW
+  http://www.flashrom.org/pipermail/flashrom/2011-October/008053.html
+- mark EonEN25F16 as  TEST_OK_PREW
+  http://www.flashrom.org/pipermail/flashrom/2011-February/005824.html
+- mark Macronix MX29F002(N)T as TEST_OK_PREW
+  http://www.flashrom.org/pipermail/flashrom/2011-October/008083.html
+- mark Pm39LV040 as TEST_OK_PR
+  http://www.flashrom.org/pipermail/flashrom/2011-September/007942.html
+- mark Pm39LV010 as TEST_OK_PREW
+  http://www.flashrom.org/pipermail/flashrom/2011-September/007942.html
+- mark SST49LF008A as TEST_OK_PREW
+  http://www.flashrom.org/pipermail/flashrom/2011-September/007989.html
+- mark SyncMOS {F,S,V}29C51002T as TEST_OK_PREW
+  http://www.flashrom.org/pipermail/flashrom/2011-October/008052.html
+- mark W39V040B as write tested
+  http://www.flashrom.org/pipermail/flashrom/2011-October/008114.html
+- mark W39V040C as  TEST_OK_PREW
+  http://www.flashrom.org/pipermail/flashrom/2011-October/008114.html
+
+- remove superfluous line break in enable_flash_ich_dc_spi
+- m->M in "min" and "max" (voltage) in print_wiki.c
+
+- spi25: get rid of unneccessary line breaks (on failed probes)
+which is
+Acked-by: Uwe Hermann <[email protected]>
+
+- rayer_spi.c: Remove double word: `s/the the/the/`
+which is
+Signed-off-by: Paul Menzel <[email protected]>
+
+The parts added until 2011-10-14 (most of this patch) were
+Acked-by: Uwe Hermann <[email protected]>
+
+everything else is
+Signed-off-by: Stefan Tauner <[email protected]>
+Acked-by: Stefan Tauner <[email protected]>
+------------------------------------------------------------------------
+r1453 | uwe | 2011-10-20 20:14:10 -0300 (Thu, 20 Oct 2011) | 33 lines
+
+Add support for the GOEPEL PicoTAP programmer.
+
+http://www.goepel.com/en/jtagboundary-scan/hardware/picotap.html
+
+This device is actually a JTAG adapter, but since it uses standard
+FT2232 A interface pins, it can be easily used as SPI programmer
+(tested it here successfully). PicoTAP supports only 5V output, so one
+needs to reduce this to 3.3V in a same manner as DLP Design DLP-USB1232H, see
+
+  http://flashrom.org/FT2232SPI_Programmer#DLP_Design_DLP-USB1232H
+
+for details.
+
+The PicoTAP pin-out is as follows:
+
+  PicoTAP |  SPI
+ ---------+-------
+    TCK   | SCLK
+    TMS   |  CS#
+    TDI   |  SO
+    TDO   |  SI
+   /TRST  |  -
+    GND   |  GND
+    +5V   |  VCC, HOLD# & WP# after 3.3V regulator
+
+I managed to run PicoTAP in 10MHz, 15MHz and 30MHz modes (by forcing
+DIVIDE_BY), against SST25VF016B SPI flash, read/write/erase all worked
+fine (write seems somewhat slow).
+
+Signed-off-by: Samir Ibrad?\197?\190i?\196?\135 <[email protected]>
+Acked-by: Uwe Hermann <[email protected]>
+
+
+------------------------------------------------------------------------
+r1452 | stefanct | 2011-10-20 09:57:14 -0300 (Thu, 20 Oct 2011) | 7 lines
+
+ichspi: add (partially) dead support code for Intel Hardware Sequencing
+
+This was done to ease the review. Another patch will hook up (and
+explain) this code later.
+
+Signed-off-by: Stefan Tauner <[email protected]>
+Acked-by: Carl-Daniel Hailfinger <[email protected]>
+------------------------------------------------------------------------
+r1451 | uwe | 2011-10-14 17:33:14 -0300 (Fri, 14 Oct 2011) | 28 lines
+
+TIAO/DIYGADGET USB Multi-Protocol Adapter (TUMPA) support.
+
+Thanks to TIAO/DIYGADGET for sponsoring a test device!
+
+This is an FTDI FT2232H based device which provides an easily accessible JTAG,
+SPI, I2C, serial breakout. The SPI part can be used to flash SPI flash chips
+using flashrom.
+
+http://www.diygadget.com/tiao-usb-multi-protocol-adapter-jtag-spi-i2c-serial.html
+http://www.tiaowiki.com/w/TIAO_USB_Multi_Protocol_Adapter_User%27s_Manual#SPI_Connector_1
+
+There are two SPI connectors (pin headers) on the board: SPI1, which is
+connected to the FT2232H's A interface, and SPI2, which is connected to the
+chip's B interface. Both can be used to flash SPI chips:
+
+ flashrom -p ft2232_spi:type=tumpa,port=A
+ flashrom -p ft2232_spi:type=tumpa,port=B
+
+The default interface is A, so for SPI1 you can also just write:
+
+ flashrom -p ft2232_spi:type=tumpa
+
+I tested all operations on both interfaces, everything works fine.
+
+Signed-off-by: Uwe Hermann <[email protected]>
+Acked-by: Stefan Tauner <[email protected]>
+
+
+------------------------------------------------------------------------
 r1450 | stefanct | 2011-09-18 19:42:18 -0300 (Sun, 18 Sep 2011) | 17 lines
 
 Revert "Unsignify lengths and addresses in chip functions and structs"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/flashrom-0.9.4_r1450/Makefile 
new/flashrom-0.9.4_r1457/Makefile
--- old/flashrom-0.9.4_r1450/Makefile   2011-10-14 05:02:48.000000000 +0200
+++ new/flashrom-0.9.4_r1457/Makefile   2011-10-29 02:59:44.000000000 +0200
@@ -256,7 +256,7 @@
 # of the checked out flashrom files.
 # Note to packagers: Any tree exported with "make export" or "make tarball"
 # will not require subversion. The downloadable snapshots are already exported.
-SVNVERSION := 1450
+SVNVERSION := 1457
 
 RELEASE := 0.9.4
 VERSION := $(RELEASE)-r$(SVNVERSION)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/flashrom-0.9.4_r1450/board_enable.c 
new/flashrom-0.9.4_r1457/board_enable.c
--- old/flashrom-0.9.4_r1450/board_enable.c     2011-09-03 13:22:27.000000000 
+0200
+++ new/flashrom-0.9.4_r1457/board_enable.c     2011-10-23 00:01:09.000000000 
+0200
@@ -1830,6 +1830,22 @@
 
 /*
  * Suited for:
+ *  - abit AV8: Socket939 + K8T800Pro + VT8237
+ */
+static int board_abit_av8(void)
+{
+       uint8_t val;
+
+       /* Raise GPO pins GP22 & GP23 */
+       val = INB(0x404E);
+       val |= 0xC0;
+       OUTB(val, 0x404E);
+
+       return 0;
+}
+
+/*
+ * Suited for:
  *  - ASUS A7V333: VIA KT333 + VT8233A + IT8703F
  *  - ASUS A7V8X: VIA KT400 + VT8235 + IT8703F
  */
@@ -1979,6 +1995,7 @@
        /* first pci-id set [4],          second pci-id set [4],          dmi 
identifier, coreboot id [2],  phase, vendor name,  board name       max_rom_... 
 OK? flash enable */
 #if defined(__i386__) || defined(__x86_64__)
        {0x10DE, 0x0547, 0x147B, 0x1C2F,  0x10DE, 0x0548, 0x147B, 0x1C2F, NULL, 
        NULL, NULL,           P3, "abit",        "AN-M2",                 0,   
NT, nvidia_mcp_gpio2_raise},
+       {0x1106, 0x0282, 0x147B, 0x1415,  0x1106, 0x3227, 0x147B, 0x1415, "^AV8 
",      NULL, NULL,           P3, "abit",        "AV8",                   0,   
OK, board_abit_av8},
        {0x8086, 0x7190,      0,      0,  0x8086, 0x7110,      0,      0, 
"^i440BX-W977 (BM6)$", NULL, NULL,  P3, "abit",        "BM6",                   
0,   OK, intel_piix4_gpo26_lower},
        {0x8086, 0x24d3, 0x147b, 0x1014,  0x8086, 0x2578, 0x147b, 0x1014, NULL, 
        NULL, NULL,           P3, "abit",        "IC7",                   0,   
NT, intel_ich_gpio23_raise},
        {0x8086, 0x2930, 0x147b, 0x1084,  0x11ab, 0x4364, 0x147b, 0x1084, NULL, 
        NULL, NULL,           P3, "abit",        "IP35",                  0,   
OK, intel_ich_gpio16_raise},
@@ -2024,9 +2041,13 @@
        {0x8086, 0x2570, 0x1043, 0x80A5,  0x105A, 0x24D3, 0x1043, 0x80A6, NULL, 
        NULL, NULL,           P3, "ASUS",        "P4SD-LA",               0,   
NT, intel_ich_gpio32_raise},
        {0x1039, 0x0661, 0x1043, 0x8113,  0x1039, 0x5513, 0x1043, 0x8087, NULL, 
        NULL, NULL,           P3, "ASUS",        "P4S800-MX",             512, 
OK, w836xx_memw_enable_2e},
        {0x10B9, 0x1541,      0,      0,  0x10B9, 0x1533,      0,      0, 
"^P5A$",      "asus", "p5a",        P3, "ASUS",        "P5A",                   
0,   OK, board_asus_p5a},
-       {0x8086, 0x266a, 0x1043, 0x80a6,  0x8086, 0x2668, 0x1043, 0x814e, NULL, 
        NULL, NULL,           P3, "ASUS",        "P5GD1 Pro",             0,   
OK, intel_ich_gpio21_raise},
+       {0x8086, 0x266a, 0x1043, 0x80a6,  0x8086, 0x2668, 0x1043, 0x814e, 
"^P5GD1 PRO$", NULL, NULL,          P3, "ASUS",        "P5GD1 Pro",             
0,   OK, intel_ich_gpio21_raise},
+       {0x8086, 0x266a, 0x1043, 0x80a6,  0x8086, 0x2668, 0x1043, 0x814e, 
"^P5GD1-VM$", NULL, NULL,           P3, "ASUS",        "P5GD1-VM/S",            
0,   OK, intel_ich_gpio21_raise},
+       {0x8086, 0x266a, 0x1043, 0x80a6,  0x8086, 0x2668, 0x1043, 0x814e, NULL, 
        NULL, NULL,           P3, "ASUS",        "P5GD1(-VM)",            0,   
NT, intel_ich_gpio21_raise},
        {0x8086, 0x266a, 0x1043, 0x80a6,  0x8086, 0x2668, 0x1043, 0x813d, 
"^P5GD2-Premium$", NULL, NULL,      P3, "ASUS",        "P5GD2 Premium",         
0,   OK, intel_ich_gpio21_raise},
-       {0x8086, 0x266a, 0x1043, 0x80a6,  0x8086, 0x2668, 0x1043, 0x813d, NULL, 
        NULL, NULL,           P3, "ASUS",        "P5GDC Deluxe",          0,   
OK, intel_ich_gpio21_raise},
+       {0x8086, 0x266a, 0x1043, 0x80a6,  0x8086, 0x2668, 0x1043, 0x813d, 
"^P5GDC-V$",  NULL, NULL,           P3, "ASUS",        "P5GDC-V Deluxe",        
0,   OK, intel_ich_gpio21_raise},
+       {0x8086, 0x266a, 0x1043, 0x80a6,  0x8086, 0x2668, 0x1043, 0x813d, 
"^P5GDC$",    NULL, NULL,           P3, "ASUS",        "P5GDC Deluxe",          
0,   OK, intel_ich_gpio21_raise},
+       {0x8086, 0x266a, 0x1043, 0x80a6,  0x8086, 0x2668, 0x1043, 0x813d, NULL, 
        NULL, NULL,           P3, "ASUS",        "P5GD2/C variants",      0,   
NT, intel_ich_gpio21_raise},
        {0x8086, 0x27b8, 0x103c, 0x2a22,  0x8086, 0x2770, 0x103c, 0x2a22, 
"^LITHIUM$",  NULL, NULL,           P3, "ASUS",        "P5LP-LE 
(Lithium-UL8E)",0,   OK, intel_ich_gpio34_raise},
        {0x8086, 0x27b8, 0x1043, 0x2a22,  0x8086, 0x2770, 0x1043, 0x2a22, 
"^P5LP-LE$",  NULL, NULL,           P3, "ASUS",        "P5LP-LE (Epson OEM)",   
0,   OK, intel_ich_gpio34_raise},
        {0x8086, 0x27da, 0x1043, 0x8179,  0x8086, 0x27b8, 0x1043, 0x8179, 
"^P5LD2$",    NULL, NULL,           P3, "ASUS",        "P5LD2",                 
0,   NT, intel_ich_gpio16_raise},
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/flashrom-0.9.4_r1450/chipset_enable.c 
new/flashrom-0.9.4_r1457/chipset_enable.c
--- old/flashrom-0.9.4_r1450/chipset_enable.c   2011-09-09 14:46:32.000000000 
+0200
+++ new/flashrom-0.9.4_r1457/chipset_enable.c   2011-10-21 14:33:07.000000000 
+0200
@@ -536,7 +536,7 @@
 
        /* Get physical address of Root Complex Register Block */
        tmp = pci_read_long(dev, 0xf0) & 0xffffc000;
-       msg_pdbg("\nRoot Complex Register Block address = 0x%x\n", tmp);
+       msg_pdbg("Root Complex Register Block address = 0x%x\n", tmp);
 
        /* Map RCBA to virtual memory */
        rcrb = physmap("ICH RCRB", tmp, 0x4000);
@@ -1138,7 +1138,7 @@
        {0x1022, 0x780e, OK, "AMD", "Hudson",           enable_flash_sb600},
        {0x1039, 0x0406, NT, "SiS", "501/5101/5501",    enable_flash_sis501},
        {0x1039, 0x0496, NT, "SiS", "85C496+497",       enable_flash_sis85c496},
-       {0x1039, 0x0530, NT, "SiS", "530",              enable_flash_sis530},
+       {0x1039, 0x0530, OK, "SiS", "530",              enable_flash_sis530},
        {0x1039, 0x0540, NT, "SiS", "540",              enable_flash_sis540},
        {0x1039, 0x0620, NT, "SiS", "620",              enable_flash_sis530},
        {0x1039, 0x0630, NT, "SiS", "630",              enable_flash_sis540},
@@ -1205,7 +1205,7 @@
        {0x10de, 0x0443, NT, "NVIDIA", "MCP65",         enable_flash_mcp6x_7x},
        {0x10de, 0x0548, OK, "NVIDIA", "MCP67",         enable_flash_mcp6x_7x},
        {0x10de, 0x075c, NT, "NVIDIA", "MCP78S",        enable_flash_mcp6x_7x},
-       {0x10de, 0x075d, NT, "NVIDIA", "MCP78S",        enable_flash_mcp6x_7x},
+       {0x10de, 0x075d, OK, "NVIDIA", "MCP78S",        enable_flash_mcp6x_7x},
        {0x10de, 0x07d7, NT, "NVIDIA", "MCP73",         enable_flash_mcp6x_7x},
        {0x10de, 0x0aac, NT, "NVIDIA", "MCP79",         enable_flash_mcp6x_7x},
        {0x10de, 0x0aad, NT, "NVIDIA", "MCP79",         enable_flash_mcp6x_7x},
@@ -1222,7 +1222,7 @@
        {0x1106, 0x0586, OK, "VIA", "VT82C586A/B",      enable_flash_amd8111},
        {0x1106, 0x0596, OK, "VIA", "VT82C596",         enable_flash_amd8111},
        {0x1106, 0x0686, NT, "VIA", "VT82C686A/B",      enable_flash_amd8111},
-       {0x1106, 0x3074, NT, "VIA", "VT8233",           enable_flash_vt823x},
+       {0x1106, 0x3074, OK, "VIA", "VT8233",           enable_flash_vt823x},
        {0x1106, 0x3147, OK, "VIA", "VT8233A",          enable_flash_vt823x},
        {0x1106, 0x3177, OK, "VIA", "VT8235",           enable_flash_vt823x},
        {0x1106, 0x3227, OK, "VIA", "VT8237",           enable_flash_vt823x},
@@ -1236,8 +1236,8 @@
        {0x1166, 0x0205, OK, "Broadcom", "HT-1000",     enable_flash_ht1000},
        {0x8086, 0x122e, OK, "Intel", "PIIX",           enable_flash_piix4},
        {0x8086, 0x1234, NT, "Intel", "MPIIX",          enable_flash_piix4},
-       {0x8086, 0x1c44, NT, "Intel", "Z68",            enable_flash_pch6},
-       {0x8086, 0x1c46, NT, "Intel", "P67",            enable_flash_pch6},
+       {0x8086, 0x1c44, OK, "Intel", "Z68",            enable_flash_pch6},
+       {0x8086, 0x1c46, OK, "Intel", "P67",            enable_flash_pch6},
        {0x8086, 0x1c47, NT, "Intel", "UM67",           enable_flash_pch6},
        {0x8086, 0x1c49, NT, "Intel", "HM65",           enable_flash_pch6},
        {0x8086, 0x1c4a, OK, "Intel", "H67",            enable_flash_pch6},
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/flashrom-0.9.4_r1450/flashchips.c 
new/flashrom-0.9.4_r1457/flashchips.c
--- old/flashrom-0.9.4_r1450/flashchips.c       2011-09-14 00:05:44.000000000 
+0200
+++ new/flashrom-0.9.4_r1457/flashchips.c       2011-10-21 14:33:07.000000000 
+0200
@@ -1229,7 +1229,7 @@
                .total_size     = 256,
                .page_size      = 64 * 1024,
                .feature_bits   = FEATURE_ADDR_2AA | FEATURE_SHORT_RESET,
-               .tested         = TEST_OK_PR,
+               .tested         = TEST_OK_PREW,
                .probe          = probe_jedec,
                .probe_timing   = TIMING_ZERO,
                .block_erasers  =
@@ -3169,7 +3169,7 @@
                .total_size     = 2048,
                .page_size      = 256,
                .feature_bits   = FEATURE_WRSR_WREN,
-               .tested         = TEST_UNTESTED,
+               .tested         = TEST_OK_PREW,
                .probe          = probe_spi_rdid,
                .probe_timing   = TIMING_ZERO,
                .block_erasers  =
@@ -3550,7 +3550,7 @@
                .total_size     = 256,
                .page_size      = 256,
                .feature_bits   = FEATURE_ADDR_AAA | FEATURE_EITHER_RESET,
-               .tested         = TEST_OK_PR,
+               .tested         = TEST_OK_PREW,
                .probe          = probe_jedec,
                .probe_timing   = TIMING_ZERO,  /* Datasheet has no timing info 
specified */
                .block_erasers  =
@@ -4587,7 +4587,7 @@
                .total_size     = 256,
                .page_size      = 64 * 1024,
                .feature_bits   = FEATURE_ADDR_2AA | FEATURE_SHORT_RESET,
-               .tested         = TEST_OK_PR,
+               .tested         = TEST_OK_PREW,
                .probe          = probe_jedec,
                .probe_timing   = TIMING_ZERO,
                .block_erasers  =
@@ -5268,7 +5268,7 @@
                .total_size     = 128,
                .page_size      = 4096,
                .feature_bits   = FEATURE_ADDR_2AA | FEATURE_EITHER_RESET,
-               .tested         = TEST_OK_PRE,
+               .tested         = TEST_OK_PREW,
                .probe          = probe_jedec,
                .probe_timing   = TIMING_ZERO,  /* Datasheet has no timing info 
specified */
                .block_erasers  =
@@ -5328,7 +5328,7 @@
                .total_size     = 512,
                .page_size      = 4096,
                .feature_bits   = FEATURE_ADDR_2AA | FEATURE_EITHER_RESET,
-               .tested         = TEST_UNTESTED,
+               .tested         = TEST_OK_PR,
                .probe          = probe_jedec,
                .probe_timing   = TIMING_ZERO,  /* Datasheet has no timing info 
specified */
                .block_erasers =
@@ -6482,7 +6482,7 @@
                .total_size     = 1024,
                .page_size      = 64 * 1024,
                .feature_bits   = FEATURE_REGISTERMAP | FEATURE_EITHER_RESET,
-               .tested         = TEST_OK_PRE,
+               .tested         = TEST_OK_PREW,
                .probe          = probe_jedec,
                .probe_timing   = 1,            /* 150 ns */
                .block_erasers  =
@@ -7763,7 +7763,7 @@
                .total_size     = 256,
                .page_size      = 512,
                .feature_bits   = FEATURE_EITHER_RESET,
-               .tested         = TEST_OK_PRE,
+               .tested         = TEST_OK_PREW,
                .probe          = probe_jedec,
                .probe_timing   = TIMING_ZERO,  /* Datasheet has no timing info 
specified */
                .block_erasers  =
@@ -8532,9 +8532,9 @@
                .total_size     = 512,
                .page_size      = 64 * 1024,
                .feature_bits   = FEATURE_EITHER_RESET,
-               .tested         = TEST_OK_PRE,
+               .tested         = TEST_OK_PREW,
                .probe          = probe_jedec,
-               .probe_timing   = 10, 
+               .probe_timing   = 10,
                .block_erasers  =
                {
                        {
@@ -8560,7 +8560,7 @@
                .total_size     = 512,
                .page_size      = 64 * 1024,
                .feature_bits   = FEATURE_EITHER_RESET,
-               .tested         = TEST_UNTESTED,
+               .tested         = TEST_OK_PREW,
                .probe          = probe_jedec,
                .probe_timing   = 10,
                .block_erasers  =
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/flashrom-0.9.4_r1450/flashrom.8 
new/flashrom-0.9.4_r1457/flashrom.8
--- old/flashrom-0.9.4_r1450/flashrom.8 2011-09-12 08:17:06.000000000 +0200
+++ new/flashrom-0.9.4_r1457/flashrom.8 2011-10-21 01:14:10.000000000 +0200
@@ -199,7 +199,8 @@
 based USB SPI programmer), including the DLP Design DLP-USB1232H, \
 FTDI FT2232H Mini-Module, FTDI FT4232H Mini-Module, openbiosprog-spi, Amontec \
 JTAGkey/JTAGkey-tiny/JTAGkey-2, Dangerous Prototypes Bus Blaster, \
-Olimex ARM-USB-TINY/-H, and Olimex ARM-USB-OCD/-H."
+Olimex ARM-USB-TINY/-H, Olimex ARM-USB-OCD/-H, TIAO/DIYGADGET USB
+Multi-Protocol Adapter (TUMPA), and GOEPEL PicoTAP.
 .sp
 .BR "* serprog" " (for flash ROMs attached to a programmer speaking serprog), \
 including AVR flasher by Urja Rannikko, AVR flasher by eightdot, \
@@ -441,7 +442,8 @@
 .B model
 can be
 .BR 2232H ", " 4232H ", " jtagkey ", " busblaster ", " openmoko ", " \
-arm-usb-tiny ", " arm-usb-tiny-h ", " arm-usb-ocd " or " arm-usb-ocd-h
+arm-usb-tiny ", " arm-usb-tiny-h ", " arm-usb-ocd ", " arm-usb-ocd-h \
+", " tumpa ", or " picotap
 and
 .B interface
 can be
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/flashrom-0.9.4_r1450/ft2232_spi.c 
new/flashrom-0.9.4_r1457/ft2232_spi.c
--- old/flashrom-0.9.4_r1450/ft2232_spi.c       2011-08-16 14:08:22.000000000 
+0200
+++ new/flashrom-0.9.4_r1457/ft2232_spi.c       2011-10-21 01:14:10.000000000 
+0200
@@ -29,11 +29,17 @@
 #include "spi.h"
 #include <ftdi.h>
 
+/* Please keep sorted by vendor ID, then device ID. */
+
 #define FTDI_VID               0x0403
 #define FTDI_FT2232H_PID       0x6010
 #define FTDI_FT4232H_PID       0x6011
+#define TIAO_TUMPA_PID         0x8a98
 #define AMONTEC_JTAGKEY_PID    0xCFF8
 
+#define GOEPEL_VID             0x096C
+#define GOEPEL_PICOTAP_PID     0x1449
+
 #define FIC_VID                        0x1457
 #define OPENMOKO_DBGBOARD_PID  0x5118
 
@@ -46,7 +52,9 @@
 const struct usbdev_status devs_ft2232spi[] = {
        {FTDI_VID, FTDI_FT2232H_PID, OK, "FTDI", "FT2232H"},
        {FTDI_VID, FTDI_FT4232H_PID, OK, "FTDI", "FT4232H"},
+       {FTDI_VID, TIAO_TUMPA_PID, OK, "TIAO", "USB Multi-Protocol Adapter"},
        {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"},
@@ -172,6 +180,14 @@
                        ft2232_interface = INTERFACE_A;
                        cs_bits = 0x18;
                        pindir = 0x1b;
+               } else if (!strcasecmp(arg, "picotap")) {
+                       ft2232_vid = GOEPEL_VID;
+                       ft2232_type = GOEPEL_PICOTAP_PID;
+                       ft2232_interface = INTERFACE_A;
+               } else if (!strcasecmp(arg, "tumpa")) {
+                       /* Interface A is SPI1, B is SPI2. */
+                       ft2232_type = TIAO_TUMPA_PID;
+                       ft2232_interface = INTERFACE_A;
                } else if (!strcasecmp(arg, "busblaster")) {
                        /* In its default configuration it is a jtagkey clone */
                        ft2232_type = FTDI_FT2232H_PID;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/flashrom-0.9.4_r1450/ich_descriptors.c 
new/flashrom-0.9.4_r1457/ich_descriptors.c
--- old/flashrom-0.9.4_r1450/ich_descriptors.c  2011-09-16 01:52:55.000000000 
+0200
+++ new/flashrom-0.9.4_r1457/ich_descriptors.c  2011-10-20 14:57:14.000000000 
+0200
@@ -213,6 +213,34 @@
        msg_pdbg2("\n");
 }
 
+/** Returns the integer representation of the component density with index
+idx in bytes or 0 if a correct size can not be determined. */
+int getFCBA_component_density(const struct ich_descriptors *desc, uint8_t idx)
+{
+       uint8_t size_enc;
+       
+       switch(idx) {
+       case 0:
+               size_enc = desc->component.comp1_density;
+               break;
+       case 1:
+               if (desc->content.NC == 0)
+                       return 0;
+               size_enc = desc->component.comp2_density;
+               break;
+       default:
+               msg_perr("Only ICH SPI component index 0 or 1 are supported "
+                        "yet.\n");
+               return 0;
+       }
+       if (size_enc > 5) {
+               msg_perr("Density of ICH SPI component with index %d is "
+                        "invalid. Encoded density is 0x%x.\n", idx, size_enc);
+               return 0;
+       }
+       return (1 << (19 + size_enc));
+}
+
 static uint32_t read_descriptor_reg(uint8_t section, uint16_t offset, void 
*spibar)
 {
        uint32_t control = 0;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/flashrom-0.9.4_r1450/ich_descriptors.h 
new/flashrom-0.9.4_r1457/ich_descriptors.h
--- old/flashrom-0.9.4_r1450/ich_descriptors.h  2011-09-16 01:52:55.000000000 
+0200
+++ new/flashrom-0.9.4_r1457/ich_descriptors.h  2011-10-20 14:57:14.000000000 
+0200
@@ -255,6 +255,7 @@
 void prettyprint_ich_descriptor_master(const struct ich_desc_master *master);
 
 int read_ich_descriptors_via_fdo(void *spibar, struct ich_descriptors *desc);
+int getFCBA_component_density(const struct ich_descriptors *desc, uint8_t idx);
 
 #endif /* __ICH_DESCRIPTORS_H__ */
 #endif /* defined(__i386__) || defined(__x86_64__) */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/flashrom-0.9.4_r1450/ichspi.c 
new/flashrom-0.9.4_r1457/ichspi.c
--- old/flashrom-0.9.4_r1450/ichspi.c   2011-09-18 17:15:31.000000000 +0200
+++ new/flashrom-0.9.4_r1457/ichspi.c   2011-10-20 14:57:14.000000000 +0200
@@ -26,6 +26,7 @@
 #if defined(__i386__) || defined(__x86_64__)
 
 #include <string.h>
+#include <stdlib.h>
 #include "flash.h"
 #include "programmer.h"
 #include "spi.h"
@@ -1080,6 +1081,77 @@
        return result;
 }
 
+#if 0
+/* Sets FLA in FADDR to (addr & 0x01FFFFFF) without touching other bits. */
+static void ich_hwseq_set_addr(uint32_t addr)
+{
+       uint32_t addr_old = REGREAD32(ICH9_REG_FADDR) & ~0x01FFFFFF;
+       REGWRITE32(ICH9_REG_FADDR, (addr & 0x01FFFFFF) | addr_old);
+}
+
+/* Sets FADDR.FLA to 'addr' and returns the erase block size in bytes
+ * of the block containing this address. May return nonsense if the address is
+ * not valid. The erase block size for a specific address depends on the flash
+ * partition layout as specified by FPB and the partition properties as defined
+ * by UVSCC and LVSCC respectively. An alternative to implement this method
+ * would be by querying FPB and the respective VSCC register directly.
+ */
+static uint32_t ich_hwseq_get_erase_block_size(unsigned int addr)
+{
+       uint8_t enc_berase;
+       static const uint32_t const dec_berase[4] = {
+               256,
+               4 * 1024,
+               8 * 1024,
+               64 * 1024
+       };
+
+       ich_hwseq_set_addr(addr);
+       enc_berase = (REGREAD16(ICH9_REG_HSFS) & HSFS_BERASE) >>
+                    HSFS_BERASE_OFF;
+       return dec_berase[enc_berase];
+}
+
+/* Polls for Cycle Done Status, Flash Cycle Error or timeout in 8 us intervals.
+   Resets all error flags in HSFS.
+   Returns 0 if the cycle completes successfully without errors within
+   timeout us, 1 on errors. */
+static int ich_hwseq_wait_for_cycle_complete(unsigned int timeout,
+                                            unsigned int len)
+{
+       uint16_t hsfs;
+       uint32_t addr;
+
+       timeout /= 8; /* scale timeout duration to counter */
+       while ((((hsfs = REGREAD16(ICH9_REG_HSFS)) &
+                (HSFS_FDONE | HSFS_FCERR)) == 0) &&
+              --timeout) {
+               programmer_delay(8);
+       }
+       REGWRITE16(ICH9_REG_HSFS, REGREAD16(ICH9_REG_HSFS));
+       if (!timeout) {
+               addr = REGREAD32(ICH9_REG_FADDR) & 0x01FFFFFF;
+               msg_perr("Timeout error between offset 0x%08x and "
+                        "0x%08x + %d (=0x%08x)!\n",
+                        addr, addr, len - 1, addr + len - 1);
+               prettyprint_ich9_reg_hsfs(hsfs);
+               prettyprint_ich9_reg_hsfc(REGREAD16(ICH9_REG_HSFC));
+               return 1;
+       }
+
+       if (hsfs & HSFS_FCERR) {
+               addr = REGREAD32(ICH9_REG_FADDR) & 0x01FFFFFF;
+               msg_perr("Transaction error between offset 0x%08x and "
+                        "0x%08x (=0x%08x + %d)!\n",
+                        addr, addr + len - 1, addr, len - 1);
+               prettyprint_ich9_reg_hsfs(hsfs);
+               prettyprint_ich9_reg_hsfc(REGREAD16(ICH9_REG_HSFC));
+               return 1;
+       }
+       return 0;
+}
+#endif
+
 static int ich_spi_send_multicommand(struct spi_command *cmds)
 {
        int ret = 0;
@@ -1250,21 +1322,18 @@
        uint8_t old, new;
        uint16_t spibar_offset, tmp2;
        uint32_t tmp;
-       int ichspi_desc = 0;
+       int desc_valid = 0;
 
        switch (ich_generation) {
        case 7:
-               register_spi_programmer(&spi_programmer_ich7);
                spibar_offset = 0x3020;
                break;
        case 8:
-               register_spi_programmer(&spi_programmer_ich9);
                spibar_offset = 0x3020;
                break;
        case 9:
        case 10:
        default:                /* Future version might behave the same */
-               register_spi_programmer(&spi_programmer_ich9);
                spibar_offset = 0x3800;
                break;
        }
@@ -1275,8 +1344,8 @@
        /* Assign Virtual Address */
        ich_spibar = rcrb + spibar_offset;
 
-       switch (spi_programmer->type) {
-       case SPI_CONTROLLER_ICH7:
+       switch (ich_generation) {
+       case 7:
                msg_pdbg("0x00: 0x%04x     (SPIS)\n",
                             mmio_readw(ich_spibar + 0));
                msg_pdbg("0x02: 0x%04x     (SPIC)\n",
@@ -1313,9 +1382,13 @@
                        ichspi_lock = 1;
                }
                ich_set_bbar(ich_generation, 0);
+               register_spi_programmer(&spi_programmer_ich7);
                ich_init_opcodes();
                break;
-       case SPI_CONTROLLER_ICH9:
+       case 8:
+       case 9:
+       case 10:
+       default:                /* Future version might behave the same */
                tmp2 = mmio_readw(ich_spibar + ICH9_REG_HSFS);
                msg_pdbg("0x04: 0x%04x (HSFS)\n", tmp2);
                prettyprint_ich9_reg_hsfs(tmp2);
@@ -1324,8 +1397,8 @@
                        ichspi_lock = 1;
                }
                if (tmp2 & HSFS_FDV)
-                       ichspi_desc = 1;
-               if (!(tmp2 & HSFS_FDOPSS) && ichspi_desc)
+                       desc_valid = 1;
+               if (!(tmp2 & HSFS_FDOPSS) && desc_valid)
                        msg_pinfo("The Flash Descriptor Security Override "
                                  "Strap-Pin is set. Restrictions implied\n"
                                  "by the FRAP and FREG registers are NOT in "
@@ -1400,18 +1473,16 @@
                }
 
                msg_pdbg("\n");
-               if (ichspi_desc) {
+               if (desc_valid) {
                        struct ich_descriptors desc = {{ 0 }};
                        if (read_ich_descriptors_via_fdo(ich_spibar, &desc) ==
                            ICH_RET_OK)
                                prettyprint_ich_descriptors(CHIPSET_ICH_UNKNOWN,
                                                            &desc);
                }
+               register_spi_programmer(&spi_programmer_ich9);
                ich_init_opcodes();
                break;
-       default:
-               /* Nothing */
-               break;
        }
 
        old = pci_read_byte(dev, 0xdc);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/flashrom-0.9.4_r1450/print.c 
new/flashrom-0.9.4_r1457/print.c
--- old/flashrom-0.9.4_r1450/print.c    2011-09-13 00:55:01.000000000 +0200
+++ new/flashrom-0.9.4_r1457/print.c    2011-10-23 00:01:09.000000000 +0200
@@ -535,6 +535,7 @@
 #if defined(__i386__) || defined(__x86_64__)
        B("A-Trend",    "ATC-6220",             1, 
"http://www.motherboard.cz/mb/atrend/atc6220.htm";, NULL),
        B("abit",       "AN-M2",                1, 
"http://www.abit.com.tw/page/en/motherboard/motherboard_detail.php?DEFTITLE=Y&fMTYPE=Socket%20AM2&pMODEL_NAME=AN-M2";,
 NULL),
+       B("abit",       "AV8",                  1, 
"http://www.abit.com.tw/page/en/motherboard/motherboard_detail.php?DEFTITLE=Y&fMTYPE=Socket%20939&pMODEL_NAME=AV8";,
 NULL),
        B("abit",       "AX8",                  1, 
"http://www.abit.com.tw/page/en/motherboard/motherboard_detail.php?DEFTITLE=Y&fMTYPE=Socket%20939&pMODEL_NAME=AX8";,
 NULL),
        B("abit",       "BM6",                  1, 
"http://www.abit.com.tw/page/en/motherboard/motherboard_detail.php?pMODEL_NAME=BM6&fMTYPE=Socket%20370";,
 NULL),
        B("abit",       "Fatal1ty F-I90HD",     1, 
"http://www.abit.com.tw/page/en/motherboard/motherboard_detail.php?pMODEL_NAME=Fatal1ty+F-I90HD&fMTYPE=LGA775";,
 NULL),
@@ -590,8 +591,10 @@
        B("ASUS",       "A8V Deluxe",           1, 
"http://www.asus.com/product.aspx?P_ID=tvpdgPNCPaABZRVU";, NULL),
        B("ASUS",       "A8V-E Deluxe",         1, 
"http://www.asus.com/product.aspx?P_ID=hQBPIJWEZnnGAZEh";, NULL),
        B("ASUS",       "A8V-E SE",             1, 
"http://www.asus.com/product.aspx?P_ID=VMfiJJRYTHM4gXIi";, "See 
http://www.coreboot.org/pipermail/coreboot/2007-October/026496.html";),
+       B("ASUS",       "Crosshair II Formula", 1, 
"http://www.asus.com/product.aspx?P_ID=EIDxaW1Ln3YR9RA2";, NULL),
        B("ASUS",       "Crosshair IV Extreme", 1, 
"http://www.asus.com/product.aspx?P_ID=lt1ShF6xEn3rlLe7";, NULL),
        B("ASUS",       "E35M1-I DELUXE",       1, 
"http://www.asus.com/product.aspx?P_ID=9BmKhMwWCwqyl1lz";, NULL),
+       B("ASUS",       "K8N",                  1, 
"http://www.asus.com/product.aspx?P_ID=zigzffr75jWJ7j2y";, NULL),
        B("ASUS",       "K8V",                  1, 
"http://www.asus.com/product.aspx?P_ID=fG2KZOWF7v6MRFRm";, NULL),
        B("ASUS",       "K8V SE Deluxe",        1, 
"http://www.asus.com/product.aspx?P_ID=65HeDI8XM1u6Uy6o";, NULL),
        B("ASUS",       "K8V-X",                1, NULL, NULL),
@@ -600,6 +603,7 @@
        B("ASUS",       "M2A-VM",               1, 
"http://www.asus.com/product.aspx?P_ID=St3pWpym8xXpROQS";, "See 
http://www.coreboot.org/pipermail/coreboot/2007-September/025281.html";),
        B("ASUS",       "M2N32-SLI Deluxe",     1, 
"http://www.asus.com/product.aspx?P_ID=0jMy2X8lKstYRvev";, NULL),
        B("ASUS",       "M2N-E",                1, 
"http://www.asus.com/product.aspx?P_ID=NFlvt10av3F7ayQ9";, "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",       "M2N-E SLI",            1, 
"http://www.asus.com/product.aspx?P_ID=NJ8fkR6ufRM9XvFC";, NULL),
        B("ASUS",       "M2N-SLI Deluxe",       1, 
"http://www.asus.com/product.aspx?P_ID=szSFtrap7crpBaQE";, NULL),
        B("ASUS",       "M2NBP-VM CSM",         1, 
"http://www.asus.com/product.aspx?P_ID=MnOfzTGd2KkwG0rF";, NULL),
        B("ASUS",       "M2NPV-VM",             1, 
"http://www.asus.com/product.aspx?P_ID=HGTVnGv5nGahCYgK";, NULL),
@@ -608,11 +612,14 @@
        B("ASUS",       "M3A",                  1, 
"http://www.asus.com/product.aspx?P_ID=P48rppKk4jrc9pNd";, NULL),
        B("ASUS",       "M3A76-CM",             1, 
"http://www.asus.com/product.aspx?P_ID=aU8effdifLvraVze";, NULL),
        B("ASUS",       "M3A78-EM",             1, 
"http://www.asus.com/product.aspx?P_ID=KjpYqzmAd9vsTM2D";, NULL),
+       B("ASUS",       "M3N78-VM",             1, 
"http://www.asus.com/product.aspx?P_ID=ovqEgLFRjnSClhSV";, NULL),
        B("ASUS",       "M4A78-EM",             1, 
"http://www.asus.com/product.aspx?P_ID=0KyowHKUFAQqH2DO";, NULL),
        B("ASUS",       "M4A785TD-V EVO",       1, 
"http://www.asus.com/product.aspx?P_ID=fcsXWSxnhzZE9rnR";, NULL),
        B("ASUS",       "M4A785TD-M EVO",       1, 
"http://www.asus.com/product.aspx?P_ID=QHbvGVB1mXmmD8qQ";, NULL),
+       B("ASUS",       "M4A78LT-M LE",         1, 
"http://www.asus.com/product.aspx?P_ID=exJL00uovTJaDqxR";, NULL),
        B("ASUS",       "M4A79T Deluxe",        1, 
"http://www.asus.com/product.aspx?P_ID=lhJiLTN5huPfCVkW";, NULL),
        B("ASUS",       "M4A87TD/USB3",         1, 
"http://www.asus.com/product.aspx?P_ID=nlWYrI9wlNIYHAaa";, NULL),
+       B("ASUS",       "M4A89GTD PRO",         1, 
"http://www.asus.com/product.aspx?P_ID=Gdf0vtpVf72LTYgs";, NULL),
        B("ASUS",       "M6Ne",                 0, 
"http://www.asus.com/Product.aspx?P_ID=IbqN4JCxeRiep4WN";, "Untested board 
enable."),
        B("ASUS",       "MEW-AM",               0, 
"ftp://ftp.asus.com.tw/pub/ASUS/mb/sock370/810/mew-am/";, "No public report 
found. Owned by Uwe Hermann <[email protected]>. May work now."),
        B("ASUS",       "MEW-VM",               0, 
"http://www.elhvb.com/mboards/OEM/HP/manual/ASUS%20MEW-VM.htm";, "No public 
report found. Owned by Uwe Hermann <[email protected]>. May work now."),
@@ -640,15 +647,19 @@
        B("ASUS",       "P5B-Deluxe",           1, 
"http://www.asus.com/product.aspx?P_ID=bswT66IBSb2rEWNa";, NULL),
        B("ASUS",       "P5BV-M",               0, 
"ftp://ftp.asus.com.tw/pub/ASUS/mb/socket775/P5B-VM/";, "Reported by Bernhard M. 
Wiedemann <[email protected]> to [email protected], no public archive. 
Missing board enable and/or SST49LF008A unlocking. May work now."),
        B("ASUS",       "P5GC-MX/1333",         1, 
"http://www.asus.com/product.aspx?P_ID=PYvbfOokwxUzJky3";, NULL),
+       B("ASUS",       "P5GD1 Pro",            1, 
"http://www.asus.com/product.aspx?P_ID=50M49xQh71EZOeM1";, NULL),
+       B("ASUS",       "P5GD1-VM/S",           1, NULL, "This is an OEM board 
from FSC. Although flashrom supports it and can probably not distinguish it 
from the P5GD1-VM, please note that the P5GD1-VM BIOS does not support the FSC 
variants completely."),
+       B("ASUS",       "P5GD1(-VM)",           0, NULL, "Untested board 
enable."),
        B("ASUS",       "P5GD2 Premium",        1, 
"http://www.asus.it/product.aspx?P_ID=lRKaz1Rb6Xb0OFM7";, NULL),
        B("ASUS",       "P5GDC Deluxe",         1, 
"http://www.asus.com/product.aspx?P_ID=AbeoopyNpI2TZixg";, NULL),
+       B("ASUS",       "P5GDC-V Deluxe",       1, NULL, NULL),
+       B("ASUS",       "P5GD2/C variants",     0, NULL, "Untested board 
enable."),
        B("ASUS",       "P5KC",                 1, 
"http://www.asus.com/product.aspx?P_ID=fFZ8oUIGmLpwNMjj";, NULL),
        B("ASUS",       "P5L-MX",               1, 
"http://www.asus.com/product.aspx?P_ID=X70d3NCzH2DE9vWH";, NULL),
        B("ASUS",       "P5LD2",                0, NULL, "Untested board 
enable."),
        B("ASUS",       "P5LP-LE (Lithium-UL8E)", 1, 
"http://h10025.www1.hp.com/ewfrf/wc/document?docname=c00379616&tmp_task=prodinfoCategory&cc=us&dlc=en&lc=en&product=1159887";,
 "This is an OEM board from HP."),
        B("ASUS",       "P5LP-LE (Epson OEM)",  1, NULL, "This is an OEM board 
from Epson (e.g. Endeavor MT7700)."),
        B("ASUS",       "P5LP-LE",              0, NULL, "This designation is 
used for OEM boards from HP, Epson and maybe others. The HP names vary and not 
all of them have been tested yet. Please report any success or failure, 
thanks."),
-       B("ASUS",       "P5GD1 Pro",            1, 
"http://www.asus.com/product.aspx?P_ID=50M49xQh71EZOeM1";, NULL),
        B("ASUS",       "P5N-E SLI",            0, 
"http://www.asus.com/product.aspx?P_ID=KyHOsOKWujC2QguJ";, "Needs a board enable 
(http://patchwork.coreboot.org/patch/3298/)."),
        B("ASUS",       "P5N32-E SLI",          1, 
"http://www.asus.com/product.aspx?P_ID=vBZLIBtPzYB2bLcb";, NULL),
        B("ASUS",       "P5ND2-SLI Deluxe",     1, 
"http://www.asus.com/product.aspx?P_ID=WY7XroDuUImVbgp5";, NULL),
@@ -659,6 +670,8 @@
        B("ASUS",       "P6T Deluxe V2",        1, 
"http://www.asus.com/product.aspx?P_ID=iRlP8RG9han6saZx";, NULL),
        B("ASUS",       "P7H57D-V EVO",         1, 
"http://www.asus.com/Motherboards/Intel_Socket_1156/P7H57DV_EVO/";, NULL),
        B("ASUS",       "P7H55-M LX",           0, NULL, "flashrom works 
correctly, but GbE LAN is nonworking (probably due to a missing/bogus MAC 
address; see http://www.flashrom.org/pipermail/flashrom/2011-July/007432.html 
and http://ubuntuforums.org/showthread.php?t=1534389 for a possible 
workaround)"),
+       B("ASUS",       "P8B-E/4L",             0, NULL, "Probing works 
(Winbond W25Q64, 8192 kB, SPI), but parts of the flash are problematic: 
descriptor is r/o (conforming to ICH reqs), ME region is locked."),
+       B("ASUS",       "P8B WS",               0, NULL, "Probing works 
(Winbond W25Q32, 4096 kB, SPI), but parts of the flash are problematic: 
descriptor is r/o (conforming to ICH reqs), ME region is locked."),
        B("ASUS",       "Z8NA-D6C",             1, 
"http://www.asus.com/product.aspx?P_ID=k81cpN8uEB01BpQ6";, NULL),
        B("BCOM",       "WinNET100",            1, 
"http://www.coreboot.org/BCOM_WINNET100";, "Used in the IGEL-316 thin client."),
        B("Biostar",    "N68S3+",               1, NULL, NULL),
@@ -677,6 +690,7 @@
        B("Elitegroup", "K7S6A",                1, 
"http://www.ecs.com.tw/ECSWebSite/Products/ProductsDetail.aspx?detailid=77&CategoryID=1&DetailName=Specification&MenuID=52&LanID=0";,
 NULL),
        B("Elitegroup", "K7VTA3",               1, 
"http://www.ecs.com.tw/ECSWebSite/Products/ProductsDetail.aspx?detailid=264&CategoryID=1&DetailName=Specification&MenuID=52&LanID=0";,
 NULL),
        B("Elitegroup", "P4M800PRO-M (V1.0A)",  1, 
"http://www.ecs.com.tw/ECSWebSite_2007/Products/ProductsDetail.aspx?CategoryID=1&DetailID=574&DetailName=Feature&MenuID=52&LanID=0";,
 NULL),
+       B("Elitegroup", "P4VXMS (V1.0A)",       1, NULL, NULL),
        B("Elitegroup", "P6IWP-Fe",             1, 
"http://www.ecs.com.tw/ECSWebSite_2007/Products/ProductsDetail.aspx?CategoryID=1&TypeID=3&DetailID=95&DetailName=Feature&MenuID=1&LanID=0";,
 NULL),
        B("Elitegroup", "P6VAP-A+",             1, 
"http://www.ecs.com.tw/ECSWebSite/Products/ProductsDetail.aspx?detailid=117&CategoryID=1&DetailName=Specification&MenuID=1&LanID=0";,
 NULL),
        B("Elitegroup", "RS485M-M",             1, 
"http://www.ecs.com.tw/ECSWebSite_2007/Products/ProductsDetail.aspx?CategoryID=1&DetailID=654&DetailName=Feature&MenuID=1&LanID=0";,
 NULL),
@@ -691,6 +705,7 @@
        B("FIC",        "VA-502",               0, 
"ftp://ftp.fic.com.tw/motherboard/manual/socket7/va-502/";, "No public report 
found. Owned by Uwe Hermann <[email protected]>. Seems the PCI subsystem IDs 
are identical with the Tekram P6Pro-A5. May work now."),
        B("Foxconn",    "6150K8MD-8EKRSH",      1, 
"http://www.foxconnchannel.com/product/motherboards/detail_overview.aspx?id=en-us0000157";,
 NULL),
        B("Foxconn",    "A6VMX",                1, 
"http://www.foxconnchannel.com/product/motherboards/detail_overview.aspx?id=en-us0000346";,
 NULL),
+       B("Foxconn",    "P4M800P7MA-RS2",       1, 
"http://www.foxconnchannel.com/Product/Motherboards/detail_overview.aspx?id=en-us0000138";,
 NULL),
        B("Freetech",   "P6F91i",               1, 
"http://web.archive.org/web/20010417035034/http://www.freetech.com/prod/P6F91i.html";,
 NULL),
        B("Fujitsu-Siemens", "ESPRIMO P5915",   1, 
"http://uk.ts.fujitsu.com/rl/servicesupport/techsupport/professionalpc/ESPRIMO/P/EsprimoP5915-6.htm";,
 "Mainboard model is D2312-A2."),
        B("GIGABYTE",   "GA-2761GXDK",          1, 
"http://www.computerbase.de/news/hardware/mainboards/amd-systeme/2007/mai/gigabyte_dtx-mainboard/";,
 NULL),
@@ -733,7 +748,9 @@
        B("GIGABYTE",   "GA-MA790GP-DS4H",      1, 
"http://www.gigabyte.com/products/product-page.aspx?pid=2887";, NULL),
        B("GIGABYTE",   "GA-MA790XT-UD4P (rev. 1.0)", 1, 
"http://www.gigabyte.com/products/product-page.aspx?pid=3010";, NULL),
        B("GIGABYTE",   "GA-P55A-UD4 (rev. 1.0)", 1, 
"http://www.gigabyte.com/products/product-page.aspx?pid=3436";, NULL),
+       B("GIGABYTE",   "GA-P67A-UD3P",         1, 
"http://www.gigabyte.com/products/product-page.aspx?pid=3649";, NULL),
        B("GIGABYTE",   "GA-X58A-UD7 (rev. 2.0)", 1, NULL, NULL),
+       B("GIGABYTE",   "GA-Z68MX-UD2H-B (rev. 1.3)", 1, 
"http://www.gigabyte.com/products/product-page.aspx?pid=3854";, NULL),
        B("HP",         "e-Vectra P2706T",      1, 
"http://h20000.www2.hp.com/bizsupport/TechSupport/Home.jsp?lang=en&cc=us&prodSeriesId=77515&prodTypeId=12454";,
 NULL),
        B("HP",         "ProLiant DL145 G3",    1, 
"http://h20000.www2.hp.com/bizsupport/TechSupport/Document.jsp?objectID=c00816835&lang=en&cc=us&taskId=101&prodSeriesId=3219755&prodTypeId=15351";,
 NULL),
        B("HP",         "ProLiant DL165 G6",    1, 
"http://h10010.www1.hp.com/wwpc/us/en/sm/WF05a/15351-15351-3328412-241644-3328421-3955644.html";,
 NULL),
@@ -799,9 +816,11 @@
        B("MSI",        "MS-7599 (870-C45)",    1, 
"http://www.msi.com/product/mb/870-C45.html";, NULL),
        B("MSI",        "MS-7640 (890FXA-GD70)",1, 
"http://www.msi.com/product/mb/890FXA-GD70.html";, NULL),
        B("MSI",        "MS-7642 (890GXM-G65)", 1, 
"http://www.msi.com/product/mb/890GXM-G65.html";, NULL),
+       B("MSI",        "MS-7696 (A75MA-G55)",  1, 
"http://www.msi.com/product/mb/A75MA-G55.html";, NULL),
        B("MSI",        "MS-7698 (E350IA-E45)", 1, 
"http://www.msi.com/product/mb/E350IA-E45.html";, NULL),
        B("NEC",        "PowerMate 2000",       1, 
"http://support.necam.com/mobilesolutions/hardware/Desktops/pm2000/celeron/";, 
NULL),
        B("Nokia",      "IP530",                1, NULL, NULL),
+       B("PCCHIPS ",   "M598LMR (V9.0)",       1, NULL, NULL),
        B("PCCHIPS ",   "M863G (V5.1A)",        1, 
"http://www.pcchips.com.tw/PCCWebSite/Products/ProductsDetail.aspx?CategoryID=1&DetailID=343&DetailName=Feature&MenuID=1&LanID=0";,
 NULL),
        B("PC Engines", "Alix.1c",              1, 
"http://pcengines.ch/alix1c.htm";, NULL),
        B("PC Engines", "Alix.2c2",             1, 
"http://pcengines.ch/alix2c2.htm";, NULL),
@@ -884,6 +903,7 @@
        B("VIA",        "pc2500e",              1, 
"http://www.via.com.tw/en/initiatives/empowered/pc2500_mainboard/index.jsp";, 
NULL),
        B("VIA",        "PC3500G",              1, 
"http://www.via.com.tw/en/initiatives/empowered/pc3500_mainboard/index.jsp";, 
NULL),
        B("VIA",        "VB700X",               1, 
"http://www.via.com.tw/en/products/mainboards/motherboards.jsp?motherboard_id=490";,
 NULL),
+       B("ZOTAC",      "Fusion-ITX WiFi (FUSION350-A-E)", 1, NULL, NULL),
        B("ZOTAC",      "GeForce 8200",         1, 
"http://pden.zotac.com/index.php?page=shop.product_details&product_id=129&category_id=92";,
 NULL),
        B("ZOTAC",      "ZBOX HD-ID11",         1, 
"http://pdde.zotac.com/index.php?page=shop.product_details&product_id=240&category_id=75";,
 NULL),
 #endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/flashrom-0.9.4_r1450/print_wiki.c 
new/flashrom-0.9.4_r1457/print_wiki.c
--- old/flashrom-0.9.4_r1450/print_wiki.c       2011-09-15 00:09:48.000000000 
+0200
+++ new/flashrom-0.9.4_r1457/print_wiki.c       2011-10-21 14:33:07.000000000 
+0200
@@ -70,7 +70,7 @@
 ! align=\"center\" colspan=\"2\" | Voltage [V]\n\n\
 |- bgcolor=\"#6699ff\"\n| colspan=\"4\" | &nbsp;\n\
 | Probe\n| Read\n| Erase\n| Write\n\
-| align=\"center\" | min \n| align=\"center\" | max\n\n";
+| align=\"center\" | Min \n| align=\"center\" | Max\n\n";
 
 static const char programmer_section[] = "\
 \n== Supported programmers ==\n\nThis is a list \
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/flashrom-0.9.4_r1450/programmer.h 
new/flashrom-0.9.4_r1457/programmer.h
--- old/flashrom-0.9.4_r1450/programmer.h       2011-09-19 00:42:18.000000000 
+0200
+++ new/flashrom-0.9.4_r1457/programmer.h       2011-10-22 23:45:27.000000000 
+0200
@@ -607,9 +607,10 @@
 void serprog_chip_writeb(uint8_t val, chipaddr addr);
 uint8_t serprog_chip_readb(const chipaddr addr);
 void serprog_chip_readn(uint8_t *buf, const chipaddr addr, size_t len);
-void serprog_delay(int delay);
+void serprog_delay(int usecs);
 int serprog_spi_send_command(unsigned int writecnt, unsigned int readcnt,
-                       const unsigned char *writearr, unsigned char *readarr);
+                            const unsigned char *writearr,
+                            unsigned char *readarr);
 int serprog_spi_read(struct flashchip *flash, uint8_t *buf, int start, int 
len);
 #endif
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/flashrom-0.9.4_r1450/rayer_spi.c 
new/flashrom-0.9.4_r1457/rayer_spi.c
--- old/flashrom-0.9.4_r1450/rayer_spi.c        2011-09-12 08:17:06.000000000 
+0200
+++ new/flashrom-0.9.4_r1457/rayer_spi.c        2011-10-21 14:33:07.000000000 
+0200
@@ -42,7 +42,7 @@
 
 /* We have two sets of pins, out and in. The numbers for both sets are
  * independent and are bitshift values, not real pin numbers.
- * Default settings are for the the RayeR hardware.
+ * Default settings are for the RayeR hardware.
  */
 /* Pins for master->slave direction */
 static int rayer_cs_bit = 5;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/flashrom-0.9.4_r1450/serprog-protocol.txt 
new/flashrom-0.9.4_r1457/serprog-protocol.txt
--- old/flashrom-0.9.4_r1450/serprog-protocol.txt       2011-09-16 
01:38:14.000000000 +0200
+++ new/flashrom-0.9.4_r1457/serprog-protocol.txt       2011-10-22 
23:45:27.000000000 +0200
@@ -19,7 +19,7 @@
 0x05   Query supported bustypes        none                            ACK + 
8-bit flags (as per flashrom) / NAK
 0x06   Query connected address lines   none                            ACK + 
8bit line count / NAK
 0x07   Query operation buffer size     none                            ACK + 
16bit size / NAK
-0x08   Query write-n maximum data len  none                            ACK + 
24bit maximum length / NAK
+0x08   Query maximum write-n length    none                            ACK + 
24bit length (0==2^24) / NAK
 0x09   Read byte                       24-bit addr                     ACK + 
BYTE / NAK
 0x0A   Read n bytes                    24-bit addr + 24-bit length     ACK + 
length bytes / NAK
 0x0B   Initialize operation buffer     none                            ACK / 
NAK
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/flashrom-0.9.4_r1450/serprog.c 
new/flashrom-0.9.4_r1457/serprog.c
--- old/flashrom-0.9.4_r1450/serprog.c  2011-09-19 00:42:18.000000000 +0200
+++ new/flashrom-0.9.4_r1457/serprog.c  2011-10-22 23:45:27.000000000 +0200
@@ -38,7 +38,7 @@
 #include "programmer.h"
 #include "chipdrivers.h"
 
-#define MSGHEADER "serprog:"
+#define MSGHEADER "serprog: "
 
 /*
  * FIXME: This prototype was added to help reduce diffs for the shutdown
@@ -204,7 +204,7 @@
                        return;
                }
        }
-       msg_perr("Error: cannot synchronize protocol\n"
+       msg_perr("Error: cannot synchronize protocol "
                "- check communications and reset device?\n");
        exit(1);
 }
@@ -220,32 +220,27 @@
 static int sp_automatic_cmdcheck(uint8_t cmd)
 {
        if ((sp_check_avail_automatic) && (sp_check_commandavail(cmd) == 0)) {
-               msg_pdbg("Warning: Automatic command availability check"
-                               " failed for cmd %d - wont execute cmd\n",cmd);
+               msg_pdbg("Warning: Automatic command availability check failed "
+                        "for cmd 0x%x - won't execute cmd\n", cmd);
                return 1;
                }
        return 0;
 }
 
 static int sp_docommand(uint8_t command, uint32_t parmlen,
-                            uint8_t * params, uint32_t retlen, void *retparms)
+                       uint8_t *params, uint32_t retlen, void *retparms)
 {
-       unsigned char *sendpacket;
        unsigned char c;
        if (sp_automatic_cmdcheck(command))
                return 1;
-       sendpacket = malloc(1 + parmlen);
-       if (!sendpacket)
-               sp_die("Error: cannot malloc command buffer");
-       sendpacket[0] = command;
-       memcpy(&(sendpacket[1]), params, parmlen);
-       if (write(sp_fd, sendpacket, 1 + parmlen) != (1 + parmlen)) {
-               sp_die("Error: cannot write command");
-       }
-       free(sendpacket);
+       if (write(sp_fd, &command, 1) != 1)
+               sp_die("Error: cannot write op code");
+       if (write(sp_fd, params, parmlen) != (parmlen))
+               sp_die("Error: cannot write parameters");
        if (read(sp_fd, &c, 1) != 1)
                sp_die("Error: cannot read from device");
-       if (c == S_NAK) return 1;
+       if (c == S_NAK)
+               return 1;
        if (c != S_ACK) {
                msg_perr("Error: invalid response 0x%02X from device\n",c);
                exit(1);
@@ -256,8 +251,8 @@
                        int r;
                        r = read(sp_fd, retparms + rd_bytes,
                                 retlen - rd_bytes);
-                       if (r <= 0) sp_die
-                                   ("Error: cannot read return parameters");
+                       if (r <= 0)
+                               sp_die("Error: cannot read return parameters");
                        rd_bytes += r;
                } while (rd_bytes != retlen);
        }
@@ -404,12 +399,12 @@
        msg_pdbg(MSGHEADER "Synchronized\n");
 
        if (sp_docommand(S_CMD_Q_IFACE, 0, NULL, 2, &iface)) {
-               msg_perr("Error: NAK to Query Interface version\n");
+               msg_perr("Error: NAK to query interface version\n");
                exit(1);
        }
 
        if (iface != 1) {
-               msg_perr("Error: Unknown interface version %d\n", iface);
+               msg_perr("Error: Unknown interface version: %d\n", iface);
                exit(1);
        }
 
@@ -428,6 +423,11 @@
                c = BUS_NONSPI; /* A reasonable default for now. */
        }
        buses_supported = c;
+       msg_pdbg(MSGHEADER "Bus support: parallel=%s, LPC=%s, FWH=%s, SPI=%s\n",
+                (c & BUS_PARALLEL) ? "on" : "off",
+                (c & BUS_LPC) ? "on" : "off",
+                (c & BUS_FWH) ? "on" : "off",
+                (c & BUS_SPI) ? "on" : "off");
        /* Check for the minimum operational set of commands. */
        if (buses_supported & BUS_SPI) {
                uint8_t bt = BUS_SPI;
@@ -538,12 +538,12 @@
                strcpy((char *)pgmname, "(unknown)");
        }
        pgmname[16] = 0;
-       msg_pinfo(MSGHEADER "Programmer name \"%s\"\n", pgmname);
+       msg_pinfo(MSGHEADER "Programmer name is \"%s\"\n", pgmname);
 
        if (sp_docommand(S_CMD_Q_SERBUF, 0, NULL, 2, &sp_device_serbuf_size)) {
                msg_perr("Warning: NAK to query serial buffer size\n");
        }
-       msg_pdbg(MSGHEADER "serial buffer size %d\n",
+       msg_pdbg(MSGHEADER "Serial buffer size is %d\n",
                     sp_device_serbuf_size);
 
        if (sp_check_commandavail(S_CMD_O_INIT)) {
@@ -564,7 +564,7 @@
                        msg_perr("Warning: NAK to query operation buffer "
                                 "size\n");
                }
-               msg_pdbg(MSGHEADER "operation buffer size %d\n",
+               msg_pdbg(MSGHEADER "operation buffer size is %d\n",
                         sp_device_opbuf_size);
        }
 
@@ -581,7 +581,7 @@
 {
        unsigned char header[7];
        msg_pspew(MSGHEADER "Passing write-n bytes=%d addr=0x%x\n",
-                    sp_write_n_bytes, sp_write_n_addr);
+                 sp_write_n_bytes, sp_write_n_addr);
        if (sp_streamed_transmit_bytes >=
            (7 + sp_write_n_bytes + sp_device_serbuf_size))
                sp_flush_stream();
@@ -735,31 +735,32 @@
 {
        size_t lenm = len;
        chipaddr addrm = addr;
-       while ((sp_max_read_n)&&(lenm > sp_max_read_n)) {
-               sp_do_read_n(&(buf[addrm-addr]),addrm,sp_max_read_n);
+       while ((sp_max_read_n != 0) && (lenm > sp_max_read_n)) {
+               sp_do_read_n(&(buf[addrm-addr]), addrm, sp_max_read_n);
                addrm += sp_max_read_n;
                lenm -= sp_max_read_n;
        }
-       if (lenm) sp_do_read_n(&(buf[addrm-addr]),addrm,lenm);
+       if (lenm)
+               sp_do_read_n(&(buf[addrm-addr]), addrm, lenm);
 }
 
-void serprog_delay(int delay)
+void serprog_delay(int usecs)
 {
        unsigned char buf[4];
-       msg_pspew("%s\n", __func__);
+       msg_pspew("%s usecs=%d\n", __func__, usecs);
        if (!sp_check_commandavail(S_CMD_O_DELAY)) {
-               internal_delay(delay);
                msg_pdbg("Note: serprog_delay used, but the programmer doesn't "
                         "support delay\n");
+               internal_delay(usecs);
                return;
        }
        if ((sp_max_write_n) && (sp_write_n_bytes))
                sp_pass_writen();
        sp_check_opbuf_usage(5);
-       buf[0] = ((delay >> 0) & 0xFF);
-       buf[1] = ((delay >> 8) & 0xFF);
-       buf[2] = ((delay >> 16) & 0xFF);
-       buf[3] = ((delay >> 24) & 0xFF);
+       buf[0] = ((usecs >> 0) & 0xFF);
+       buf[1] = ((usecs >> 8) & 0xFF);
+       buf[2] = ((usecs >> 16) & 0xFF);
+       buf[3] = ((usecs >> 24) & 0xFF);
        sp_stream_buffer_op(S_CMD_O_DELAY, 4, buf);
        sp_opbuf_usage += 5;
        sp_prev_was_write = 0;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/flashrom-0.9.4_r1450/spi25.c 
new/flashrom-0.9.4_r1457/spi25.c
--- old/flashrom-0.9.4_r1450/spi25.c    2011-09-19 00:42:18.000000000 +0200
+++ new/flashrom-0.9.4_r1457/spi25.c    2011-10-21 14:33:07.000000000 +0200
@@ -120,7 +120,6 @@
        uint32_t id2;
 
        if (spi_rdid(readarr, bytes)) {
-               msg_cdbg("\n");
                return 0;
        }
 
@@ -201,7 +200,6 @@
        uint32_t id1, id2;
 
        if (spi_rems(readarr)) {
-               msg_cdbg("\n");
                return 0;
        }
 
@@ -259,7 +257,6 @@
        }
 
        if (spi_res(readarr, 1)) {
-               msg_cdbg("\n");
                return 0;
        }
 
@@ -283,7 +280,6 @@
        uint32_t id1, id2;
 
        if (spi_res(readarr, 2)) {
-               msg_cdbg("\n");
                return 0;
        }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/flashrom-0.9.4_r1450/util/z60_flashrom.rules 
new/flashrom-0.9.4_r1457/util/z60_flashrom.rules
--- old/flashrom-0.9.4_r1450/util/z60_flashrom.rules    2011-06-17 
23:25:48.000000000 +0200
+++ new/flashrom-0.9.4_r1457/util/z60_flashrom.rules    2011-10-21 
01:14:10.000000000 +0200
@@ -56,6 +56,10 @@
 # http://www.ftdichip.com/Products/EvaluationKits/FT4232H_MiniModule.htm
 ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6011", MODE="664", GROUP="plugdev"
 
+# GOEPEL PicoTAP
+# http://www.goepel.com/jtagboundary-scan/hardware/picotap.html
+ATTRS{idVendor}=="096c", ATTRS{idProduct}=="1449", MODE="664", GROUP="plugdev"
+
 # Olimex ARM-USB-OCD
 # http://olimex.com/dev/arm-usb-ocd.html
 ATTRS{idVendor}=="15ba", ATTRS{idProduct}=="0003", MODE="664", GROUP="plugdev"
@@ -72,4 +76,8 @@
 # http://olimex.com/dev/arm-usb-tiny-h.html
 ATTRS{idVendor}=="15ba", ATTRS{idProduct}=="002a", MODE="664", GROUP="plugdev"
 
+# TIAO/DIYGADGET USB Multi-Protocol Adapter (TUMPA)
+# 
http://www.diygadget.com/tiao-usb-multi-protocol-adapter-jtag-spi-i2c-serial.html
+ATTRS{idVendor}=="0403", ATTRS{idProduct}=="8a98", MODE="664", GROUP="plugdev"
+
 LABEL="flashrom_rules_end"

-- 
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to