-------------------------------------------------------------------------------
Flashrom README
-------------------------------------------------------------------------------

This is the universal (LinuxBIOS) flash utility.

Build Requirements
------------------

To build the flashrom utility you need to have the following packages
installed on your Linux system:

* pciutils
* pciutils-devel / pciutils-dev
* zlib-devel / zlib1g-dev


Usage
-----

usage: ./flashrom [-rwvEVfh] [-c chipname] [-s exclude_start]
       [-e exclude_end] [-m vendor:part] [-l file.layout] [-i imagename] [file]
   -r | --read:                    read flash and save into file
   -w | --write:                   write file into flash (default when
                                   file is specified)
   -v | --verify:                  verify flash against file
   -E | --erase:                   erase flash device
   -V | --verbose:                 more verbose output
   -c | --chip <chipname>:         probe only for specified flash chip
   -s | --estart <addr>:           exclude start position
   -e | --eend <addr>:             exclude end postion
   -m | --mainboard <vendor:part>: override mainboard settings
   -f | --force:                   force write without checking image
   -l | --layout <file.layout>:    read rom layout from file
   -i | --image <name>:            only flash image name from flash layout

 If no file is specified, then all that happens
 is that flash info is dumped and the flash chip is set to writable.


LinuxBIOS Table and Mainboard Identification
--------------------------------------------

Flashrom reads the LinuxBIOS table to determine the current mainboard.
(Parse DMI as well in future?) If no LinuxBIOS table could be read
or if you want to override these values, you can specify -m, e.g.:

  flashrom -w --mainboard ISLAND:ARUMA island_aruma.rom

The following boards require the specification of the board name, if
no LinuxBIOS table is found:

* IWILL DK8-HTX: use -m iwill:dk8_htx
* agami Aruma: use -m AGAMI:ARUMA


ROM Layout Support
------------------

Flashrom supports ROM layouts. This allows to flash certain parts of
the flash chip only. A ROM layout file looks like follows:

  00000000:00008fff gfxrom
  00009000:0003ffff normal
  00040000:0007ffff fallback

  i.e.:
  startaddr:endaddr name

  all addresses are offsets within the file, not absolute addresses!
  
If you only want to update the normal image in a ROM you can say:

     flashrom -w --layout rom.layout --image normal island_aruma.rom
     
To update normal and fallback but leave the VGA BIOS alone, say:

     flashrom -w -l rom.layout -i normal -i fallback island_aruma.rom
 
Currently overlapping sections are not supported.

ROM layouts should replace the -s and -e option since they are more 
flexible and they should lead to a ROM update file format with the 
ROM layout and the ROM image in one file (cpio, zip or something?)


DOC support
-----------

DISK on Chip support is currently disabled since it is considered unstable. 
Change CFLAGS in the Makefile to enable it: Remove -DDISABLE_DOC from CFLAGS.


Supported Flash Chips
---------------------

AMD AM-29F040B
AMD AM-29F016D
ASD AE49F2008
Atmel AT-29C040A
Atmel AT-29C020
EMST F49B002UA
Intel 82802AB (Firmware Hub) 
Intel 82802AC (Firmware Hub) 
M-Systems MD-2802 (unsupported, disabled by default)
MX MX-29F002
PMC PMC-49FL002
PMC PMC-49FL004
Sharp LHF-00L04
SST SST-29EE020A
SST SST-28SF040A
SST SST-39SF010A
SST SST-39SF020A
SST SST-39SF040
SST SST-39VF020
SST SST-49LF040B
SST SST-49LF040
SST SST-49LF020A
SST SST-49LF080A
SST SST-49LF160C
SST SST-49LF002A/B
SST SST-49LF003A/B
SST SST-49LF004A/B
SST SST-49LF008A
SST SST-49LF004C
SST SST-49LF008C
SST SST-49LF016C
ST ST-M29F002B
ST ST-M29F002T
ST ST-M29F002NT
ST ST-M29F400BT
ST ST-M29F040B
SyncMOS S29C51001T/B
SyncMOS S29C51002T/B
SyncMOS S29C51004T/B
SyncMOS S29C31004T
Winbond W29C011
Winbond W29C020C
Winbond W49F002U
Winbond W49V002A
Winbond W49V002FA
Winbond W39V040A
Winbond W39V040B
Winbond W39V080A


Supported Southbridges
----------------------

AMD CS5530
AMD Geode SC1100
AMD AMD-8111
ATI SB400
Intel ICH0-ICH8 (all variations)
Intel PIIX4/PIIX4E/PIIX4M
NVIDIA CK804
NVIDIA MCP51
NVIDIA MCP55
SiS 630
SiS 5595
VIA CX700
VIA VT8231
VIA VT8235
VIA VT8237
VIA VT82C686

