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 <pgf@laptop.org>
Signed-off-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net>
Acked-by: Uwe Hermann <uwe@hermann-uwe.de>
diff --git a/spi.c b/spi.c
index f625da7..e6a945f 100644
--- a/spi.c
+++ b/spi.c
@@ -47,6 +47,8 @@
 		return sb600_spi_command(writecnt, readcnt, writearr, readarr);
 	case SPI_CONTROLLER_WBSIO:
 		return wbsio_spi_command(writecnt, readcnt, writearr, readarr);
+	case SPI_CONTROLLER_FT2232:
+		return ft2232_spi_command(writecnt, readcnt, writearr, readarr);
 	case SPI_CONTROLLER_DUMMY:
 		return dummy_spi_command(writecnt, readcnt, writearr, readarr);
 	default:
@@ -212,6 +214,7 @@
 	case SPI_CONTROLLER_VIA:
 	case SPI_CONTROLLER_SB600:
 	case SPI_CONTROLLER_WBSIO:
+	case SPI_CONTROLLER_FT2232:
 	case SPI_CONTROLLER_DUMMY:
 		return probe_spi_rdid_generic(flash, 4);
 	default:
@@ -726,6 +729,8 @@
 		return ich_spi_read(flash, buf, start, len);
 	case SPI_CONTROLLER_WBSIO:
 		return wbsio_spi_read(flash, buf, start, len);
+	case SPI_CONTROLLER_FT2232:
+		return ft2232_spi_read(flash, buf, start, len);
 	default:
 		printf_debug
 		    ("%s called, but no SPI chipset/strapping detected\n",
@@ -774,6 +779,8 @@
 		return ich_spi_write_256(flash, buf);
 	case SPI_CONTROLLER_WBSIO:
 		return wbsio_spi_write_1(flash, buf);
+	case SPI_CONTROLLER_FT2232:
+		return ft2232_spi_write_256(flash, buf);
 	default:
 		printf_debug
 		    ("%s called, but no SPI chipset/strapping detected\n",