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

Flashrom is a universal flash programming utility for DIP, PLCC, or SPI
flash ROM chips. It can be used to flash BIOS/coreboot/firmware images.

(see http://coreboot.org for details on coreboot)


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 you 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 was removed from flashrom in r3380. It had already
been disabled by default in flashrom for several years because the code
was considered unstable and incomplete. The products intended to work
have been End-Of-Lifed by the manufacturer for a long time.


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) 
MX MX-29F002
PMC PMC-49FL002
PMC PMC-49FL004
Sharp LHF-00L04
Spansion S25FL016A
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

