From 530cb2d4f16c110d12852ecbb0d48860eb99bf5e Mon Sep 17 00:00:00 2001 From: Uwe Hermann Date: Thu, 14 May 2009 22:58:21 +0000 Subject: Make the nic3com code check how many supported NICs are found If we find multiple ones, abort with a message to the user, suggesting to use the flashrom -p nic3com=bb:dd.f syntax. If exactly one supported NIC is found, use it. If none is found, abort with an error. Print the bb:dd.f numbers for all supported NICs we find, so the user doesn't have to poke around in lspci output to find the desired bb:dd.f. Also, drop one pci_read_long() in favor of using the already existing base_addr[0] struct field. Drop the BAR in user messages, it's not really useful for us. Instead, explain the BDF syntax a bit more verbosely. While I'm at it, update the manpage some more to mention and fully document the external programmer support we have (or will have soon). The patch is tested on hardware: $ flashrom -p nic3com flashrom v0.9.0-r512 Found NIC "3COM 3C905C: EtherLink 10/100 PCI (TX)" (10b7:9200, BDF 05:04.0) Found NIC "3COM 3C905C: EtherLink 10/100 PCI (TX)" (10b7:9200, BDF 05:03.0) Error: Multiple supported NICs found. Please use 'flashrom -p nic3com=bb:dd.f' to explicitly select the card with the given BDF (PCI bus, device, function). $ flashrom -p nic3com=05:04.0 flashrom v0.9.0-r512 Found NIC "3COM 3C905C: EtherLink 10/100 PCI (TX)" (10b7:9200, BDF 05:04.0) Calibrating delay loop... OK. Found chip "Atmel AT49BV512" (64 KB) at physical address 0xffff0000. No operations were specified. Corresponding to flashrom svn r513. Signed-off-by: Uwe Hermann Acked-by: Carl-Daniel Hailfinger --- flashrom.8 | 39 ++++++++++++++++++++++++++++----------- 1 file changed, 28 insertions(+), 11 deletions(-) (limited to 'flashrom.8') diff --git a/flashrom.8 b/flashrom.8 index 7a48041..abfafaa 100644 --- a/flashrom.8 +++ b/flashrom.8 @@ -1,13 +1,17 @@ -.TH FLASHROM 8 "April 11, 2009" +.TH FLASHROM 8 "May 14, 2009" .SH NAME -flashrom \- read, write, verify and erase BIOS/ROM/flash chips +flashrom \- detect, read, write, verify and erase flash chips .SH SYNOPSIS -.B flashrom \fR[\fB\-rwvEVfLhR\fR] [\fB\-c\fR chipname] [\fB\-s\fR exclude_start] [\fB\-e\fR exclude_end] - [\fB-m\fR [vendor:]part] [\fB-l\fR file.layout] [\fB-i\fR image_name] [file] +.B flashrom \fR[\fB\-EVfLhR\fR] [\fB\-r\fR file] [\fB\-w\fR file] [\fB\-v\fR file] + [\fB\-c\fR chipname] [\fB\-s\fR addr] [\fB\-e\fR addr] [\fB\-m\fR [vendor:]part] + [\fB\-l\fR file] [\fB\-i\fR image] [\fB\-p\fR programmer] [file] .SH DESCRIPTION .B flashrom -is a utility for reading, writing, verifying and erasing flash ROM chips. -It's often used to flash BIOS/coreboot/firmware images. +is a utility for detecting, reading, writing, verifying and erasing flash ROM +chips. It's often used to flash BIOS/EFI/coreboot/firmware images in-system +using a supported mainboard, but it also supports flashing of network cards +(NICs), SATA controller cards, and other external devices which can program +flash chips. .PP It supports a wide range of DIP32, PLCC32, DIP8, SO8/SOIC8, TSOP32, and TSOP40 chips, which use various protocols such as LPC, FWH, parallel flash, @@ -126,11 +130,24 @@ of the box. .B "\-p, \-\-programmer " Specify the programmer device. Currently supported are: .sp -.BR " internal" " (default, for in-system flashing in the mainboard)" -.br -.BR " nic3com" " (for flash ROMs on 3COM network cards)" -.br -.BR " dummy" " (just prints all operations and accesses)" +.BR "* internal" " (default, for in-system flashing in the mainboard)" +.sp +.BR "* nic3com" " (for flash ROMs on 3COM network cards)" +.sp +If you have multiple supported NICs in your system, you must use +.B "flashrom -p nic3com=bb:dd.f" +to explicitly select one of them, where +.B bb +is the PCI bus number, +.B dd +is the PCI device number, and +.B f +is the PCI function number of the desired NIC. +.sp +Example: +.B "flashrom -p nic3com=05:04.0" +.sp +.BR "* dummy" " (just prints all operations and accesses)" .TP .B "\-h, \-\-help" Show a help text and exit. -- cgit v1.1