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

This is the universal (coreboot) 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
-----

 $ 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.


coreboot Table and Mainboard Identification
--------------------------------------------

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

  flashrom -w --mainboard AGAMI:ARUMA agami_aruma.rom

The following boards require the specification of the board name, if
no coreboot 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-S4 v2.0: use -m gigabyte:m57sli
* GIGABYTE GA-M61P-S3: use -m gigabyte:m61p
* MSI K8N Neo3: use -m msi:k8n-neo3
* Acorp 6A815EPD: use -m acorp:6a815epd


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 agami_aruma.rom
     
To update normal and fallback but leave the VGA BIOS alone, say:

  flashrom -w -l rom.layout -i normal -i fallback agami_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?).


Disk on Chip 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

