mirror of
https://review.coreboot.org/flashrom.git
synced 2025-04-27 15:12:36 +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 "flashchips.h"
|
||||||
#include "programmer.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)
|
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
|
#if CONFIG_PRINT_WIKI == 1
|
||||||
"-z|"
|
"-z|"
|
||||||
#endif
|
#endif
|
||||||
"-E|-r <file>|-w <file>|-v <file>]\n"
|
"-p <programmername>[:<parameters>]\n"
|
||||||
" [-c <chipname>] [-l <file>] [-o <file>]\n"
|
" [-E|-r <file>|-w <file>|-v <file>] [-c <chipname>]\n"
|
||||||
" [-i <image>] [-p <programmername>[:<parameters>]]\n\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 "
|
printf("Please note that the command line interface for flashrom has "
|
||||||
"changed between\n"
|
"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 "
|
"Do not use flashrom in scripts or other automated tools "
|
||||||
"without checking\n"
|
"without checking\n"
|
||||||
"that your flashrom version won't interpret options in a "
|
"that your flashrom version won't interpret options in a "
|
||||||
@ -360,8 +293,9 @@ int main(int argc, char *argv[])
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (prog == PROGRAMMER_INVALID) {
|
if (prog == PROGRAMMER_INVALID) {
|
||||||
fprintf(stderr, "Error: Unknown programmer "
|
fprintf(stderr, "Error: Unknown programmer \"%s\". Valid choices are:\n",
|
||||||
"%s.\n", optarg);
|
optarg);
|
||||||
|
list_programmers_linebreak(0, 80, 0);
|
||||||
cli_classic_abort_usage();
|
cli_classic_abort_usage();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -468,8 +402,13 @@ int main(int argc, char *argv[])
|
|||||||
flash = NULL;
|
flash = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (prog == PROGRAMMER_INVALID)
|
if (prog == PROGRAMMER_INVALID) {
|
||||||
prog = default_programmer;
|
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. */
|
/* FIXME: Delay calibration should happen in programmer code. */
|
||||||
myusec_calibrate_delay();
|
myusec_calibrate_delay();
|
||||||
|
75
flashrom.8
75
flashrom.8
@ -2,13 +2,12 @@
|
|||||||
.SH NAME
|
.SH NAME
|
||||||
flashrom \- detect, read, write, verify and erase flash chips
|
flashrom \- detect, read, write, verify and erase flash chips
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
.B flashrom \fR[\fB\-n\fR] [\fB\-V\fR] [\fB\-f\fR] [\fB\-h\fR|\fB\-R\fR|\
|
.B flashrom \fR[\fB\-h\fR|\fB\-R\fR|\fB\-L\fR|\fB\-z\fR|\
|
||||||
\fB\-L\fR|\fB\-z\fR|\fB\-E\fR|\fB\-r\fR <file>|\fB\-w\fR <file>|\
|
\fB\-p\fR <programmername>[:<parameters>]
|
||||||
\fB\-v\fR <file>]
|
[\fB\-E\fR|\fB\-r\fR <file>|\fB\-w\fR <file>|\fB\-v\fR <file>] \
|
||||||
[\fB\-c\fR <chipname>] \
|
[\fB\-c\fR <chipname>]
|
||||||
[\fB\-l\fR <file>]
|
[\fB\-l\fR <file> [\fB\-i\fR <image>]] [\fB\-n\fR] [\fB\-f\fR]]
|
||||||
[\fB\-i\fR <image>] [\fB\-p\fR <programmername>[:<parameters>]]
|
[\fB\-V\fR[\fBV\fR[\fBV\fR]]] [\fB-o\fR <logfile>]
|
||||||
[\fB-o\fR <logfile>]
|
|
||||||
.SH DESCRIPTION
|
.SH DESCRIPTION
|
||||||
.B flashrom
|
.B flashrom
|
||||||
is a utility for detecting, reading, writing, verifying and erasing flash
|
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.
|
feel that the time for verification takes too long.
|
||||||
.sp
|
.sp
|
||||||
Typical usage is:
|
Typical usage is:
|
||||||
.B "flashrom \-n \-w <file>"
|
.B "flashrom \-p prog \-n \-w <file>"
|
||||||
.sp
|
.sp
|
||||||
This option is only useful in combination with
|
This option is only useful in combination with
|
||||||
.BR \-\-write .
|
.BR \-\-write .
|
||||||
@ -106,31 +105,39 @@ Read ROM layout from
|
|||||||
.BR <file> .
|
.BR <file> .
|
||||||
.sp
|
.sp
|
||||||
flashrom supports ROM layouts. This allows you to flash certain parts of
|
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
|
.sp
|
||||||
00000000:00008fff gfxrom
|
00000000:00008fff gfxrom
|
||||||
00009000:0003ffff normal
|
00009000:0003ffff normal
|
||||||
00040000:0007ffff fallback
|
00040000:0007ffff fallback
|
||||||
.sp
|
.sp
|
||||||
i.e.:
|
If you only want to update the image named
|
||||||
startaddr:endaddr name
|
.BR "normal " "in a ROM based on the layout above, run"
|
||||||
.sp
|
.sp
|
||||||
All addresses are offsets within the file, not absolute addresses!
|
.B " flashrom \-p prog \-\-layout rom.layout \-\-image normal \-w some.rom"
|
||||||
If you only want to update the normal image in a ROM you can say:
|
|
||||||
.sp
|
.sp
|
||||||
.B " flashrom \-\-layout rom.layout \-\-image normal \-w agami_aruma.rom"
|
To update only the images named
|
||||||
|
.BR "normal " "and " "fallback" ", run:"
|
||||||
.sp
|
.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
|
.sp
|
||||||
.B " flashrom \-l rom.layout \-i normal \"
|
Overlapping sections are not supported.
|
||||||
.br
|
|
||||||
.B " \-i fallback \-w agami_aruma.rom"
|
|
||||||
.sp
|
|
||||||
Currently overlapping sections are not supported.
|
|
||||||
.TP
|
.TP
|
||||||
.B "\-i, \-\-image <name>"
|
.B "\-i, \-\-image <imagename>"
|
||||||
Only flash image
|
Only flash region/image
|
||||||
.B <name>
|
.B <imagename>
|
||||||
from flash layout.
|
from flash layout.
|
||||||
.TP
|
.TP
|
||||||
.B "\-L, \-\-list\-supported"
|
.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.
|
Please note that MediaWiki output is not compiled in by default.
|
||||||
.TP
|
.TP
|
||||||
.B "\-p, \-\-programmer <name>[:parameter[,parameter[,parameter]]]"
|
.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
|
.sp
|
||||||
.BR "* internal" " (default, for in-system flashing in the mainboard)"
|
.BR "* internal" " (default, for in-system flashing in the mainboard)"
|
||||||
.sp
|
.sp
|
||||||
@ -330,7 +338,8 @@ You can use the
|
|||||||
.sp
|
.sp
|
||||||
.B " flashrom \-p internal:ich_spi_mode=value"
|
.B " flashrom \-p internal:ich_spi_mode=value"
|
||||||
.sp
|
.sp
|
||||||
syntax where value can be
|
syntax where
|
||||||
|
.BR "value " "can be"
|
||||||
.BR auto ", " swseq " or " hwseq .
|
.BR auto ", " swseq " or " hwseq .
|
||||||
By default
|
By default
|
||||||
.RB "(or when setting " ich_spi_mode=auto )
|
.RB "(or when setting " ich_spi_mode=auto )
|
||||||
@ -360,7 +369,9 @@ controller (EC), you can use the
|
|||||||
.sp
|
.sp
|
||||||
.B " flashrom \-p internal:fwh_idsel=value"
|
.B " flashrom \-p internal:fwh_idsel=value"
|
||||||
.sp
|
.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
|
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
|
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.
|
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
|
.sp
|
||||||
.B " flashrom -p dummy:spi_blacklist=commandlist"
|
.B " flashrom -p dummy:spi_blacklist=commandlist"
|
||||||
.sp
|
.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
|
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).
|
controller refuses to run command 0x03 (READ) and command 0x02 (WRITE).
|
||||||
commandlist may be up to 512 characters (256 commands) long.
|
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
|
.sp
|
||||||
.B " flashrom -p dummy:spi_ignorelist=commandlist"
|
.B " flashrom -p dummy:spi_ignorelist=commandlist"
|
||||||
.sp
|
.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
|
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
|
command 0x03 (READ) and command 0x02 (WRITE). commandlist may be up to 512
|
||||||
characters (256 commands) long.
|
characters (256 commands) long.
|
||||||
@ -513,7 +528,9 @@ You can specify the initial content of the chip's status register with the
|
|||||||
.sp
|
.sp
|
||||||
.B " flashrom -p dummy:spi_status=content"
|
.B " flashrom -p dummy:spi_status=content"
|
||||||
.sp
|
.sp
|
||||||
syntax where content is an 8-bit hexadecimal value.
|
syntax where
|
||||||
|
.B content
|
||||||
|
is an 8-bit hexadecimal value.
|
||||||
.SS
|
.SS
|
||||||
.BR "nic3com" , " nicrealtek" , " nicsmc1211" , " nicnatsemi" , " nicintel\
|
.BR "nic3com" , " nicrealtek" , " nicsmc1211" , " nicnatsemi" , " nicintel\
|
||||||
" , " nicintel_spi" , " gfxnvidia" , " ogp_spi" , " drkaiser" , " satasii\
|
" , " nicintel_spi" , " gfxnvidia" , " ogp_spi" , " drkaiser" , " satasii\
|
||||||
|
@ -59,6 +59,10 @@ unsigned long flashbase;
|
|||||||
/* Is writing allowed with this programmer? */
|
/* Is writing allowed with this programmer? */
|
||||||
int programmer_may_write;
|
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[] = {
|
const struct programmer_entry programmer_table[] = {
|
||||||
#if CONFIG_INTERNAL == 1
|
#if CONFIG_INTERNAL == 1
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user