From 05dfbe67d661d9637a0aa9091a0cb9581b39284a Mon Sep 17 00:00:00 2001 From: Paul Fox Date: Tue, 16 Jun 2009 21:08:06 +0000 Subject: This patch adds support for a new SPI programmer, based on the FT2232H/4232H chip from FTDI FTDI support is autodetected during compilation. Paul writes: There are certainly possible improvements: The code has hard-coded values for which interface of the ftdi chip to use (interface B was chosen because libftdi seems to have trouble with A right now), what clock rate use for the SPI interface (I've been running at 30Mhz, but the patch sets it to 10Mhz), and possibly others. I think this means that per-programmer options might be a good idea at some point. Carl-Daniel writes: There is one additional FIXME comment in the code, but AFAICS that problem is not solvable with current libftdi. Corresponding to flashrom svn r598. Signed-off-by: Paul Fox Signed-off-by: Carl-Daniel Hailfinger Acked-by: Uwe Hermann --- flashrom.c | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) (limited to 'flashrom.c') diff --git a/flashrom.c b/flashrom.c index 5821371..da7267f 100644 --- a/flashrom.c +++ b/flashrom.c @@ -116,6 +116,22 @@ const struct programmer_entry programmer_table[] = { .delay = internal_delay, }, + { + .init = ft2232_spi_init, + .shutdown = dummy_shutdown, + .map_flash_region = dummy_map, + .unmap_flash_region = dummy_unmap, + .chip_readb = dummy_chip_readb, + .chip_readw = fallback_chip_readw, + .chip_readl = fallback_chip_readl, + .chip_readn = fallback_chip_readn, + .chip_writeb = dummy_chip_writeb, + .chip_writew = fallback_chip_writew, + .chip_writel = fallback_chip_writel, + .chip_writen = fallback_chip_writen, + .delay = internal_delay, + }, + {}, }; @@ -589,7 +605,7 @@ void usage(const char *name) " -i | --image : only flash image name from flash layout\n" " -L | --list-supported: print supported devices\n" " -p | --programmer : specify the programmer device\n" - " (internal, dummy, nic3com, satasii, it87spi)\n" + " (internal, dummy, nic3com, satasii, it87spi, ft2232spi)\n" " -h | --help: print this help text\n" " -R | --version: print the version (release)\n" "\nYou can specify one of -E, -r, -w, -v or no operation.\n" @@ -747,6 +763,8 @@ int main(int argc, char *argv[]) pcidev_bdf = strdup(optarg + 8); } else if (strncmp(optarg, "it87spi", 7) == 0) { programmer = PROGRAMMER_IT87SPI; + } else if (strncmp(optarg, "ft2232spi", 9) == 0) { + programmer = PROGRAMMER_FT2232SPI; } else { printf("Error: Unknown programmer.\n"); exit(1); -- cgit v1.1