mirror of
				https://review.coreboot.org/flashrom.git
				synced 2025-10-31 05:10:41 +01: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:
		| @@ -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 | ||||||
| 	{ | 	{ | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Carl-Daniel Hailfinger
					Carl-Daniel Hailfinger