Recovering from a bad flash after the 7.16 Rev. A BIOS update.
 
        
        Sometimes (All the time?) after applying the 7.16 Rev. A BIOS update the motherboard is bricked. The following procedure shows how to de-brick.
No Post.
Black Screen.
Power on with no power indicator led.
Post with keyboard error.
No usb functionality.
Unhappy user and/or machine owner.
        
            
        
HP Pav Slimline s5-1115kr PC KOR
HP Pavilion h8-1160jp AMD (Hibiscus) 3C
HP Pavilion p7-1102 Desktop PC
HP Pavilion p7-1108p Desktop PC
HP Pavilion p7-1126 Desktop PC
HP Pavilion p7-1132 Desktop PC
HP Pavilion p7-1138 Desktop PC
HP Pavilion p7-1141 Desktop PC
HP Pavilion p7-1142 Desktop PC
HP Pavilion p7-1147c Desktop PC
HP Pavilion p7-1148p Desktop PC
HP Pavilion p7-1154 Desktop PC
HP Pavilion p7-1174 Desktop PC
HP Pavilion s5-1130jp AMD (Hibiscus) 3C        
        
        
        Get the latest version of flashrom.
$ svn co svn://flashrom.org/flashrom/trunk flashrom
$ cd flashrom && make && make install
                
            Get the latest verson of serprog-duino.
$ git clone git://gitorious.org/gnutoo-personal-arduino-projects/serprog-duino.git
$ cd serprog-duino && make && make upload
                
                
            
                    
                    Connect the Arduino to the ROM_RECOVERY header.
                    I used a 10 pin female to female ribbon and some breadboard jumpers to make the connection. 
                    
                    
                    
                    
                    
                
The flash chip on this motherboard is a W25Q16V which is a 3.3V Part. I could only get it to flash using 5V. The motherboard was broken. It wasn't going to get anymore broken than it was. I figured I was spending a $100 bill on a replacement anyway. It was a last ditched effort and it worked for me. YMMV.

Remove the SPI_CS# jumper from the ROM_RECOVERY header.
Arduino Pin 10 (SS, PORTB2) to ROM_RECOVERY Pin 1 (SPI_CS#)
Arduino Pin 11 (MOSI, PORTB3) to ROM_RECOVERY Pin 4 (SPI_MOSI)
Arduino Pin 12 (MISO, PORTB4) to ROM_RECOVERY Pin 6 (SPI_MISO)
Arduino Pin 13 (SCK, PORTB5) to ROM_RECOVERY Pin 8 (SPI_CLK)
Arduino GND to ROM_RECOVERY Pin 7 (GND)
Arduino 5V to ROM_RECOVERY Pin 5 (3VSB)
                
            Test the connection with flashrom. If you get any kind of error check the connections above. Try swapping ROM_RECOVERY pin 4 with ROM_RECOVERY pin 6.
# flashrom -p serprog:dev=/dev/ttyACM0:2000000 -r testdump.rom
flashrom v0.9.6.1-r1666 on Linux 3.2.0-39-generic (i686)
flashrom is free software, get the source code at http://www.flashrom.org
Calibrating delay loop... OK.
serprog: Programmer name is "serprog-duino"
Found Winbond flash chip "W25Q16V" (2048 kB, SPI) on serprog.
Reading flash... done.
                
            
            Extract the Flash image from sp56409.exe
                 
    
                
Use 7zip or whatever to extract HIB_716.ROM from sp56409.exe.
                
            Rewrite the flash.
# flashrom -p serprog:dev=/dev/ttyACM0:2000000 -w HIB_716.ROM
flashrom v0.9.6.1-r1666 on Linux 3.2.0-39-generic (i686)
flashrom is free software, get the source code at http://www.flashrom.org
Calibrating delay loop... OK.
serprog: Programmer name is "serprog-duino"
Found Winbond flash chip "W25Q16V" (2048 kB, SPI) on serprog.
Reading old flash chip contents... done.
Erasing and writing flash chip... Erase/write done.
Verifying flash... VERIFIED.          
                
            
            Test the machine.
Disconnect the Arduino from the ROM_RECOVERY header.
Replace the jumper across SPI_CS# on ROM_RECOVERY header pins 1 & 2.
Power on the Machine.
                
            
            
                    Success!
                    Good job.
                    
                     
                     
                
Drink frosty beverages.