-------------------------------------------------------------------------------
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
* ASUS P5A: use -m asus:p5a
* IBM x3455: use -m ibm:x3455
* EPoX EP-BX3: use -m epox:ep-bx3
* GIGABYTE GA-M57SLI v2.0: use -m gigabyte:m57sli
* GIGABYTE GA-M61P-S3: use -m gigabyte:m61ps3

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-M50FLW040A
ST ST-M50FLW040B
ST ST-M50FLW080A
ST ST-M50FLW080B
ST ST-M50FW040
ST ST-M50FW080
ST ST-M50FW016
ST ST-M50LPW116
ST ST-M29F002B
ST ST-M29F002T
ST ST-M29F002NT
ST ST-M29F400BT
ST ST-M29F040B
ST ST-M29W010B
ST ST-M29W040B
SyncMOS S29C51001T/B
SyncMOS S29C51002T/B
SyncMOS S29C51004T/B
SyncMOS S29C31004T
Winbond W29C011
Winbond W29C020C
Winbond W29C040P
Winbond W29EE011
Winbond W49F002U
Winbond W49V002A
Winbond W49V002FA
Winbond W39V040FA
Winbond W39V040A
Winbond W39V040B
Winbond W39V080A


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

AMD CS5530/CS5530A
AMD Geode SC1100
AMD AMD-8111
ATI SB400
Broadcom HT-1000
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

