mirror of
https://review.coreboot.org/flashrom.git
synced 2025-04-26 22:52:34 +02:00
Always require the --programmer parameter if any flash chip access is requested
Fix a few man page oddities as well. Corresponding to flashrom svn r1552. Signed-off-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net> Acked-by: Stefan Tauner <stefan.tauner@alumni.tuwien.ac.at>
This commit is contained in:
parent
d6bb828b01
commit
4e3391f505
@ -31,87 +31,20 @@
|
||||
#include "flashchips.h"
|
||||
#include "programmer.h"
|
||||
|
||||
#if CONFIG_INTERNAL == 1
|
||||
static enum programmer default_programmer = PROGRAMMER_INTERNAL;
|
||||
#elif CONFIG_DUMMY == 1
|
||||
static enum programmer default_programmer = PROGRAMMER_DUMMY;
|
||||
#else
|
||||
/* If neither internal nor dummy are selected, we must pick a sensible default.
|
||||
* Since there is no reason to prefer a particular external programmer, we fail
|
||||
* if more than one of them is selected. If only one is selected, it is clear
|
||||
* that the user wants that one to become the default.
|
||||
*/
|
||||
#if CONFIG_NIC3COM+CONFIG_NICREALTEK+CONFIG_NICNATSEMI+CONFIG_GFXNVIDIA+CONFIG_DRKAISER+CONFIG_SATASII+CONFIG_ATAHPT+CONFIG_FT2232_SPI+CONFIG_SERPROG+CONFIG_BUSPIRATE_SPI+CONFIG_DEDIPROG+CONFIG_RAYER_SPI+CONFIG_NICINTEL+CONFIG_NICINTEL_SPI+CONFIG_OGP_SPI+CONFIG_SATAMV > 1
|
||||
#error Please enable either CONFIG_DUMMY or CONFIG_INTERNAL or disable support for all programmers except one.
|
||||
#endif
|
||||
static enum programmer default_programmer =
|
||||
#if CONFIG_NIC3COM == 1
|
||||
PROGRAMMER_NIC3COM
|
||||
#endif
|
||||
#if CONFIG_NICREALTEK == 1
|
||||
PROGRAMMER_NICREALTEK
|
||||
#endif
|
||||
#if CONFIG_NICNATSEMI == 1
|
||||
PROGRAMMER_NICNATSEMI
|
||||
#endif
|
||||
#if CONFIG_GFXNVIDIA == 1
|
||||
PROGRAMMER_GFXNVIDIA
|
||||
#endif
|
||||
#if CONFIG_DRKAISER == 1
|
||||
PROGRAMMER_DRKAISER
|
||||
#endif
|
||||
#if CONFIG_SATASII == 1
|
||||
PROGRAMMER_SATASII
|
||||
#endif
|
||||
#if CONFIG_ATAHPT == 1
|
||||
PROGRAMMER_ATAHPT
|
||||
#endif
|
||||
#if CONFIG_FT2232_SPI == 1
|
||||
PROGRAMMER_FT2232_SPI
|
||||
#endif
|
||||
#if CONFIG_SERPROG == 1
|
||||
PROGRAMMER_SERPROG
|
||||
#endif
|
||||
#if CONFIG_BUSPIRATE_SPI == 1
|
||||
PROGRAMMER_BUSPIRATE_SPI
|
||||
#endif
|
||||
#if CONFIG_DEDIPROG == 1
|
||||
PROGRAMMER_DEDIPROG
|
||||
#endif
|
||||
#if CONFIG_RAYER_SPI == 1
|
||||
PROGRAMMER_RAYER_SPI
|
||||
#endif
|
||||
#if CONFIG_NICINTEL == 1
|
||||
PROGRAMMER_NICINTEL
|
||||
#endif
|
||||
#if CONFIG_NICINTEL_SPI == 1
|
||||
PROGRAMMER_NICINTEL_SPI
|
||||
#endif
|
||||
#if CONFIG_OGP_SPI == 1
|
||||
PROGRAMMER_OGP_SPI
|
||||
#endif
|
||||
#if CONFIG_SATAMV == 1
|
||||
PROGRAMMER_SATAMV
|
||||
#endif
|
||||
#if CONFIG_LINUX_SPI == 1
|
||||
PROGRAMMER_LINUX_SPI
|
||||
#endif
|
||||
;
|
||||
#endif
|
||||
|
||||
static void cli_classic_usage(const char *name)
|
||||
{
|
||||
printf("Usage: flashrom [-n] [-V] [-f] [-h|-R|-L|"
|
||||
printf("Usage: flashrom [-h|-R|-L|"
|
||||
#if CONFIG_PRINT_WIKI == 1
|
||||
"-z|"
|
||||
"-z|"
|
||||
#endif
|
||||
"-E|-r <file>|-w <file>|-v <file>]\n"
|
||||
" [-c <chipname>] [-l <file>] [-o <file>]\n"
|
||||
" [-i <image>] [-p <programmername>[:<parameters>]]\n\n");
|
||||
"-p <programmername>[:<parameters>]\n"
|
||||
" [-E|-r <file>|-w <file>|-v <file>] [-c <chipname>]\n"
|
||||
" [-l <file> [-i <image>]] [-n] [-f]]\n"
|
||||
" [-V[V[V]]] [-o <logfile>]\n\n");
|
||||
|
||||
printf("Please note that the command line interface for flashrom has "
|
||||
"changed between\n"
|
||||
"0.9.1 and 0.9.2 and will change again before flashrom 1.0.\n"
|
||||
"0.9.5 and 0.9.6 and will change again before flashrom 1.0.\n"
|
||||
"Do not use flashrom in scripts or other automated tools "
|
||||
"without checking\n"
|
||||
"that your flashrom version won't interpret options in a "
|
||||
@ -360,8 +293,9 @@ int main(int argc, char *argv[])
|
||||
}
|
||||
}
|
||||
if (prog == PROGRAMMER_INVALID) {
|
||||
fprintf(stderr, "Error: Unknown programmer "
|
||||
"%s.\n", optarg);
|
||||
fprintf(stderr, "Error: Unknown programmer \"%s\". Valid choices are:\n",
|
||||
optarg);
|
||||
list_programmers_linebreak(0, 80, 0);
|
||||
cli_classic_abort_usage();
|
||||
}
|
||||
break;
|
||||
@ -468,8 +402,13 @@ int main(int argc, char *argv[])
|
||||
flash = NULL;
|
||||
}
|
||||
|
||||
if (prog == PROGRAMMER_INVALID)
|
||||
prog = default_programmer;
|
||||
if (prog == PROGRAMMER_INVALID) {
|
||||
msg_perr("Please select a programmer with the --programmer parameter.\n"
|
||||
"Valid choices are:\n");
|
||||
list_programmers_linebreak(0, 80, 0);
|
||||
ret = 1;
|
||||
goto out;
|
||||
}
|
||||
|
||||
/* FIXME: Delay calibration should happen in programmer code. */
|
||||
myusec_calibrate_delay();
|
||||
|
75
flashrom.8
75
flashrom.8
@ -2,13 +2,12 @@
|
||||
.SH NAME
|
||||
flashrom \- detect, read, write, verify and erase flash chips
|
||||
.SH SYNOPSIS
|
||||
.B flashrom \fR[\fB\-n\fR] [\fB\-V\fR] [\fB\-f\fR] [\fB\-h\fR|\fB\-R\fR|\
|
||||
\fB\-L\fR|\fB\-z\fR|\fB\-E\fR|\fB\-r\fR <file>|\fB\-w\fR <file>|\
|
||||
\fB\-v\fR <file>]
|
||||
[\fB\-c\fR <chipname>] \
|
||||
[\fB\-l\fR <file>]
|
||||
[\fB\-i\fR <image>] [\fB\-p\fR <programmername>[:<parameters>]]
|
||||
[\fB-o\fR <logfile>]
|
||||
.B flashrom \fR[\fB\-h\fR|\fB\-R\fR|\fB\-L\fR|\fB\-z\fR|\
|
||||
\fB\-p\fR <programmername>[:<parameters>]
|
||||
[\fB\-E\fR|\fB\-r\fR <file>|\fB\-w\fR <file>|\fB\-v\fR <file>] \
|
||||
[\fB\-c\fR <chipname>]
|
||||
[\fB\-l\fR <file> [\fB\-i\fR <image>]] [\fB\-n\fR] [\fB\-f\fR]]
|
||||
[\fB\-V\fR[\fBV\fR[\fBV\fR]]] [\fB-o\fR <logfile>]
|
||||
.SH DESCRIPTION
|
||||
.B flashrom
|
||||
is a utility for detecting, reading, writing, verifying and erasing flash
|
||||
@ -64,7 +63,7 @@ recommended, you should only use it if you know what you are doing and if you
|
||||
feel that the time for verification takes too long.
|
||||
.sp
|
||||
Typical usage is:
|
||||
.B "flashrom \-n \-w <file>"
|
||||
.B "flashrom \-p prog \-n \-w <file>"
|
||||
.sp
|
||||
This option is only useful in combination with
|
||||
.BR \-\-write .
|
||||
@ -106,31 +105,39 @@ Read ROM layout from
|
||||
.BR <file> .
|
||||
.sp
|
||||
flashrom supports ROM layouts. This allows you to flash certain parts of
|
||||
the flash chip only. A ROM layout file looks like follows:
|
||||
the flash chip only. A ROM layout file contains multiple lines with the
|
||||
following syntax:
|
||||
.sp
|
||||
.B " startaddr:endaddr imagename"
|
||||
.sp
|
||||
.BR "startaddr " "and " "endaddr "
|
||||
are hexadecimal addresses within the ROM file and do not refer to any
|
||||
physical address. Please note that using a 0x prefix for those hexadecimal
|
||||
numbers is not necessary, but you can't specify decimal/octal numbers.
|
||||
.BR "imagename " "is an arbitrary name for the region/image from"
|
||||
.BR " startaddr " "to " "endaddr " "(both addresses included)."
|
||||
.sp
|
||||
Example:
|
||||
.sp
|
||||
00000000:00008fff gfxrom
|
||||
00009000:0003ffff normal
|
||||
00040000:0007ffff fallback
|
||||
.sp
|
||||
i.e.:
|
||||
startaddr:endaddr name
|
||||
If you only want to update the image named
|
||||
.BR "normal " "in a ROM based on the layout above, run"
|
||||
.sp
|
||||
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:
|
||||
.B " flashrom \-p prog \-\-layout rom.layout \-\-image normal \-w some.rom"
|
||||
.sp
|
||||
.B " flashrom \-\-layout rom.layout \-\-image normal \-w agami_aruma.rom"
|
||||
To update only the images named
|
||||
.BR "normal " "and " "fallback" ", run:"
|
||||
.sp
|
||||
To update normal and fallback but leave the VGA BIOS alone, say:
|
||||
.B " flashrom \-p prog \-l rom.layout \-i normal -i fallback \-w some.rom"
|
||||
.sp
|
||||
.B " flashrom \-l rom.layout \-i normal \"
|
||||
.br
|
||||
.B " \-i fallback \-w agami_aruma.rom"
|
||||
.sp
|
||||
Currently overlapping sections are not supported.
|
||||
Overlapping sections are not supported.
|
||||
.TP
|
||||
.B "\-i, \-\-image <name>"
|
||||
Only flash image
|
||||
.B <name>
|
||||
.B "\-i, \-\-image <imagename>"
|
||||
Only flash region/image
|
||||
.B <imagename>
|
||||
from flash layout.
|
||||
.TP
|
||||
.B "\-L, \-\-list\-supported"
|
||||
@ -156,7 +163,8 @@ easily pasted into the wiki page at
|
||||
Please note that MediaWiki output is not compiled in by default.
|
||||
.TP
|
||||
.B "\-p, \-\-programmer <name>[:parameter[,parameter[,parameter]]]"
|
||||
Specify the programmer device. Currently supported are:
|
||||
Specify the programmer device. This is mandatory for all operations
|
||||
involving any chip access (probe/read/write/...). Currently supported are:
|
||||
.sp
|
||||
.BR "* internal" " (default, for in-system flashing in the mainboard)"
|
||||
.sp
|
||||
@ -330,7 +338,8 @@ You can use the
|
||||
.sp
|
||||
.B " flashrom \-p internal:ich_spi_mode=value"
|
||||
.sp
|
||||
syntax where value can be
|
||||
syntax where
|
||||
.BR "value " "can be"
|
||||
.BR auto ", " swseq " or " hwseq .
|
||||
By default
|
||||
.RB "(or when setting " ich_spi_mode=auto )
|
||||
@ -360,7 +369,9 @@ controller (EC), you can use the
|
||||
.sp
|
||||
.B " flashrom \-p internal:fwh_idsel=value"
|
||||
.sp
|
||||
syntax where value is the 48-bit hexadecimal raw value to be written in the
|
||||
syntax where
|
||||
.B value
|
||||
is the 48-bit hexadecimal raw value to be written in the
|
||||
IDSEL registers of the Intel southbridge. The upper 32 bits use one hex digit
|
||||
each per 512 kB range between 0xffc00000 and 0xffffffff, and the lower 16 bits
|
||||
use one hex digit each per 1024 kB range between 0xff400000 and 0xff7fffff.
|
||||
@ -486,7 +497,9 @@ flash chip, you can specify a blacklist of SPI commands with the
|
||||
.sp
|
||||
.B " flashrom -p dummy:spi_blacklist=commandlist"
|
||||
.sp
|
||||
syntax where commandlist is a list of two-digit hexadecimal representations of
|
||||
syntax where
|
||||
.B commandlist
|
||||
is a list of two-digit hexadecimal representations of
|
||||
SPI commands. If commandlist is e.g. 0302, flashrom will behave as if the SPI
|
||||
controller refuses to run command 0x03 (READ) and command 0x02 (WRITE).
|
||||
commandlist may be up to 512 characters (256 commands) long.
|
||||
@ -500,7 +513,9 @@ you can specify an ignorelist of SPI commands with the
|
||||
.sp
|
||||
.B " flashrom -p dummy:spi_ignorelist=commandlist"
|
||||
.sp
|
||||
syntax where commandlist is a list of two-digit hexadecimal representations of
|
||||
syntax where
|
||||
.B commandlist
|
||||
is a list of two-digit hexadecimal representations of
|
||||
SPI commands. If commandlist is e.g. 0302, the emulated flash chip will ignore
|
||||
command 0x03 (READ) and command 0x02 (WRITE). commandlist may be up to 512
|
||||
characters (256 commands) long.
|
||||
@ -513,7 +528,9 @@ You can specify the initial content of the chip's status register with the
|
||||
.sp
|
||||
.B " flashrom -p dummy:spi_status=content"
|
||||
.sp
|
||||
syntax where content is an 8-bit hexadecimal value.
|
||||
syntax where
|
||||
.B content
|
||||
is an 8-bit hexadecimal value.
|
||||
.SS
|
||||
.BR "nic3com" , " nicrealtek" , " nicsmc1211" , " nicnatsemi" , " nicintel\
|
||||
" , " nicintel_spi" , " gfxnvidia" , " ogp_spi" , " drkaiser" , " satasii\
|
||||
|
@ -59,6 +59,10 @@ unsigned long flashbase;
|
||||
/* Is writing allowed with this programmer? */
|
||||
int programmer_may_write;
|
||||
|
||||
#if CONFIG_INTERNAL+CONFIG_DUMMY+CONFIG_NIC3COM+CONFIG_NICREALTEK+CONFIG_NICNATSEMI+CONFIG_GFXNVIDIA+CONFIG_DRKAISER+CONFIG_SATASII+CONFIG_ATAHPT+CONFIG_FT2232_SPI+CONFIG_SERPROG+CONFIG_BUSPIRATE_SPI+CONFIG_DEDIPROG+CONFIG_RAYER_SPI+CONFIG_PONY_SPI+CONFIG_NICINTEL+CONFIG_NICINTEL_SPI+CONFIG_OGP_SPI+CONFIG_SATAMV+CONFIG_LINUX_SPI < 1
|
||||
#error You have to enable at least one programmer!
|
||||
#endif
|
||||
|
||||
const struct programmer_entry programmer_table[] = {
|
||||
#if CONFIG_INTERNAL == 1
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user