mirror of
https://review.coreboot.org/flashrom.git
synced 2025-04-27 15:12:36 +02:00
Add bus type support to the dummy external programmer
The syntax is explained in the man page. Example: flashrom -p dummy=lpc,fwh Tested, works perfectly. ;-) As a nice benefit, it allows easy testing of the "probe only compatible flashes" patch. Corresponding to flashrom svn r559. Signed-off-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net> Acked-by: Uwe Hermann <uwe@hermann-uwe.de>
This commit is contained in:
parent
211fa97ce8
commit
3504b539bf
@ -20,16 +20,52 @@
|
||||
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
#include <ctype.h>
|
||||
#include <fcntl.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <errno.h>
|
||||
#include "flash.h"
|
||||
|
||||
char *dummytype = NULL;
|
||||
|
||||
int dummy_init(void)
|
||||
{
|
||||
int i;
|
||||
printf_debug("%s\n", __func__);
|
||||
spi_controller = SPI_CONTROLLER_DUMMY;
|
||||
|
||||
/* "all" is equivalent to specifying no type. */
|
||||
if (!strcmp(dummytype, "all")) {
|
||||
free(dummytype);
|
||||
dummytype = NULL;
|
||||
}
|
||||
if (!dummytype)
|
||||
dummytype = strdup("parallel,lpc,fwh,spi");
|
||||
/* Convert the parameters to lowercase. */
|
||||
for (i = 0; dummytype[i] != '\0'; i++)
|
||||
dummytype[i] = (char)tolower(dummytype[i]);
|
||||
|
||||
buses_supported = CHIP_BUSTYPE_NONE;
|
||||
if (strstr(dummytype, "parallel")) {
|
||||
buses_supported |= CHIP_BUSTYPE_PARALLEL;
|
||||
printf_debug("Enabling support for %s flash.\n", "parallel");
|
||||
}
|
||||
if (strstr(dummytype, "lpc")) {
|
||||
buses_supported |= CHIP_BUSTYPE_LPC;
|
||||
printf_debug("Enabling support for %s flash.\n", "LPC");
|
||||
}
|
||||
if (strstr(dummytype, "fwh")) {
|
||||
buses_supported |= CHIP_BUSTYPE_FWH;
|
||||
printf_debug("Enabling support for %s flash.\n", "FWH");
|
||||
}
|
||||
if (strstr(dummytype, "spi")) {
|
||||
buses_supported |= CHIP_BUSTYPE_SPI;
|
||||
spi_controller = SPI_CONTROLLER_DUMMY;
|
||||
printf_debug("Enabling support for %s flash.\n", "SPI");
|
||||
}
|
||||
if (buses_supported == CHIP_BUSTYPE_NONE)
|
||||
printf_debug("Support for all flash bus types disabled.\n");
|
||||
free(dummytype);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
2
flash.h
2
flash.h
@ -122,6 +122,7 @@ uint32_t chip_readl(const chipaddr addr);
|
||||
#define ARRAY_SIZE(a) (sizeof(a) / sizeof((a)[0]))
|
||||
|
||||
enum chipbustype {
|
||||
CHIP_BUSTYPE_NONE = 0,
|
||||
CHIP_BUSTYPE_PARALLEL = 1 << 0,
|
||||
CHIP_BUSTYPE_LPC = 1 << 1,
|
||||
CHIP_BUSTYPE_FWH = 1 << 2,
|
||||
@ -646,6 +647,7 @@ extern int io_fd;
|
||||
#endif
|
||||
|
||||
/* dummyflasher.c */
|
||||
extern char *dummytype;
|
||||
int dummy_init(void);
|
||||
int dummy_shutdown(void);
|
||||
void *dummy_map(const char *descr, unsigned long phys_addr, size_t len);
|
||||
|
12
flashrom.8
12
flashrom.8
@ -135,6 +135,18 @@ Specify the programmer device. Currently supported are:
|
||||
.sp
|
||||
.BR "* it87spi" " (for flash ROMs behind a IT87xx SuperI/O LPC/SPI translation unit)"
|
||||
.sp
|
||||
The dummy programmer has an optional parameter specifying the bus types it
|
||||
should support. For that you have to use the
|
||||
.B "flashrom -p dummy=type"
|
||||
syntax where
|
||||
.B type
|
||||
can be any comma-separated combination of
|
||||
.B parallel lpc fwh spi all
|
||||
in any order.
|
||||
.sp
|
||||
Example:
|
||||
.B "flashrom -p dummy=lpc,fwh"
|
||||
.sp
|
||||
If you have multiple supported PCI cards which can program flash chips
|
||||
(NICs, SATA/IDE controllers, etc.) in your system, you must use the
|
||||
.B "flashrom -p xxxx=bb:dd.f"
|
||||
|
@ -537,6 +537,8 @@ int main(int argc, char *argv[])
|
||||
programmer = PROGRAMMER_INTERNAL;
|
||||
} else if (strncmp(optarg, "dummy", 5) == 0) {
|
||||
programmer = PROGRAMMER_DUMMY;
|
||||
if (optarg[5] == '=')
|
||||
dummytype = strdup(optarg + 6);
|
||||
} else if (strncmp(optarg, "nic3com", 7) == 0) {
|
||||
programmer = PROGRAMMER_NIC3COM;
|
||||
if (optarg[7] == '=')
|
||||
|
Loading…
x
Reference in New Issue
Block a user