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.
Signed-off-by: Carl-Daniel Hailfinger c-d.hailfinger.devel.2006@gmx.net
Index: flashrom-dummy_bustype/flashrom.8 =================================================================== --- flashrom-dummy_bustype/flashrom.8 (Revision 557) +++ flashrom-dummy_bustype/flashrom.8 (Arbeitskopie) @@ -135,6 +135,18 @@ .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" Index: flashrom-dummy_bustype/flash.h =================================================================== --- flashrom-dummy_bustype/flash.h (Revision 557) +++ flashrom-dummy_bustype/flash.h (Arbeitskopie) @@ -122,6 +122,7 @@ #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 @@ #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); Index: flashrom-dummy_bustype/dummyflasher.c =================================================================== --- flashrom-dummy_bustype/dummyflasher.c (Revision 557) +++ flashrom-dummy_bustype/dummyflasher.c (Arbeitskopie) @@ -20,16 +20,51 @@
#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"); + 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 parallel flash.\n"); + } + if (strstr(dummytype, "lpc")) { + buses_supported |= CHIP_BUSTYPE_LPC; + printf_debug("Enabling support for LPC flash.\n"); + } + if (strstr(dummytype, "fwh")) { + buses_supported |= CHIP_BUSTYPE_FWH; + printf_debug("Enabling support for FWH flash.\n"); + } + if (strstr(dummytype, "spi")) { + buses_supported |= CHIP_BUSTYPE_SPI; + spi_controller = SPI_CONTROLLER_DUMMY; + printf_debug("Enabling support for SPI flash.\n"); + } + if (buses_supported == CHIP_BUSTYPE_NONE) + printf_debug("Support for all flash bus types disabled.\n"); + free(dummytype); return 0; }
Index: flashrom-dummy_bustype/flashrom.c =================================================================== --- flashrom-dummy_bustype/flashrom.c (Revision 557) +++ flashrom-dummy_bustype/flashrom.c (Arbeitskopie) @@ -537,6 +537,8 @@ 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] == '=')
On Mon, Jun 01, 2009 at 01:14:55AM +0200, Carl-Daniel Hailfinger wrote:
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.
Signed-off-by: Carl-Daniel Hailfinger c-d.hailfinger.devel.2006@gmx.net
Acked-by: Uwe Hermann uwe@hermann-uwe.de
with the small changes below.
Index: flashrom-dummy_bustype/dummyflasher.c
--- flashrom-dummy_bustype/dummyflasher.c (Revision 557) +++ flashrom-dummy_bustype/dummyflasher.c (Arbeitskopie) @@ -20,16 +20,51 @@
#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")) {
Use strncmp() whereever possible please.
free(dummytype);
dummytype = NULL;
- }
- if (!dummytype)
dummytype = strdup("parallel,lpc,fwh,spi");
- 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 parallel flash.\n");
- }
- if (strstr(dummytype, "lpc")) {
buses_supported |= CHIP_BUSTYPE_LPC;
printf_debug("Enabling support for LPC flash.\n");
- }
- if (strstr(dummytype, "fwh")) {
buses_supported |= CHIP_BUSTYPE_FWH;
printf_debug("Enabling support for FWH flash.\n");
- }
- if (strstr(dummytype, "spi")) {
buses_supported |= CHIP_BUSTYPE_SPI;
spi_controller = SPI_CONTROLLER_DUMMY;
printf_debug("Enabling support for SPI flash.\n");
- }
You can use this nice little trick Stefan mentioned last year or so, which will save a few bytes in binary size (not that it's too important in the case of flashrom, but still).
printf_debug("Enabling support for %s flash.\n", "parallel"); printf_debug("Enabling support for %s flash.\n", "LPC"); printf_debug("Enabling support for %s flash.\n", "FWH"); printf_debug("Enabling support for %s flash.\n", "SPI");
Uwe.
On 01.06.2009 01:40, Uwe Hermann wrote:
On Mon, Jun 01, 2009 at 01:14:55AM +0200, Carl-Daniel Hailfinger wrote:
Add bus type support to the dummy external programmer.
Signed-off-by: Carl-Daniel Hailfinger c-d.hailfinger.devel.2006@gmx.net
Acked-by: Uwe Hermann uwe@hermann-uwe.de
Thanks, committed in r559.
Regards, Carl-Daniel