Author: stefanct Date: Wed Sep 26 02:47:09 2012 New Revision: 1609 URL: http://flashrom.org/trac/flashrom/changeset/1609
Log: Add support for FT232H.
For older versions of libftdi we define TYPE_232H ourselves and this seems to be enough to get at least basic support (and we don't need more than that AFAICT).
Signed-off-by: Ilya A. Volynets-Evenbakh ilya@total-knowledge.com Signed-off-by: Stefan Tauner stefan.tauner@student.tuwien.ac.at Acked-by: Stefan Tauner stefan.tauner@student.tuwien.ac.at
Modified: trunk/Makefile trunk/flashrom.8 trunk/ft2232_spi.c
Modified: trunk/Makefile ============================================================================== --- trunk/Makefile Wed Sep 26 02:46:02 2012 (r1608) +++ trunk/Makefile Wed Sep 26 02:47:09 2012 (r1609) @@ -477,6 +477,7 @@ FTDILIBS := $(shell pkg-config --libs libftdi 2>/dev/null || printf "%s" "-lftdi -lusb") # This is a totally ugly hack. FEATURE_CFLAGS += $(shell LC_ALL=C grep -q "FTDISUPPORT := yes" .features && printf "%s" "-D'CONFIG_FT2232_SPI=1'") +FEATURE_CFLAGS += $(shell LC_ALL=C grep -q "FT232H := yes" .features && printf "%s" "-D'HAVE_FT232H=1'") FEATURE_LIBS += $(shell LC_ALL=C grep -q "FTDISUPPORT := yes" .features && printf "%s" "$(FTDILIBS)") PROGRAMMER_OBJS += ft2232_spi.o endif @@ -731,6 +732,12 @@ endef export FTDI_TEST
+define FTDI_232H_TEST +#include <ftdi.h> +enum ftdi_chip_type type = TYPE_232H; +endef +export FTDI_232H_TEST + define UTSNAME_TEST #include <sys/utsname.h> struct utsname osinfo; @@ -765,6 +772,11 @@ @$(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) .featuretest.c -o .featuretest$(EXEC_SUFFIX) $(FTDILIBS) $(LIBS) >/dev/null 2>&1 && \ ( echo "found."; echo "FTDISUPPORT := yes" >> .features.tmp ) || \ ( echo "not found."; echo "FTDISUPPORT := no" >> .features.tmp ) + @printf "Checking for FT232H support in libftdi... " + @echo "$$FTDI_232H_TEST" >> .featuretest.c + @$(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) .featuretest.c -o .featuretest$(EXEC_SUFFIX) $(FTDILIBS) $(LIBS) >/dev/null 2>&1 && \ + ( echo "found."; echo "FT232H := yes" >> .features.tmp ) || \ + ( echo "not found."; echo "FT232H := no" >> .features.tmp ) endif ifeq ($(CONFIG_LINUX_SPI), yes) @printf "Checking if Linux SPI headers are present... "
Modified: trunk/flashrom.8 ============================================================================== --- trunk/flashrom.8 Wed Sep 26 02:46:02 2012 (r1608) +++ trunk/flashrom.8 Wed Sep 26 02:47:09 2012 (r1609) @@ -15,7 +15,7 @@ using a supported mainboard. However, it also supports various external PCI/USB/parallel-port/serial-port based devices which can program flash chips, including some network cards (NICs), SATA/IDE controller cards, graphics cards, -the Bus Pirate device, various FTDI FT2232/FT4232H based USB devices, and more. +the Bus Pirate device, various FTDI FT2232/FT4232H/FT232H based USB devices, and more. .PP It supports a wide range of DIP32, PLCC32, DIP8, SO8/SOIC8, TSOP32, TSOP40, TSOP48, and BGA chips, which use various protocols such as LPC, FWH, @@ -189,7 +189,7 @@ .sp .BR "* atahpt" " (for flash ROMs on Highpoint ATA/RAID controllers)" .sp -.BR "* ft2232_spi" " (for SPI flash ROMs attached to an FT2232/FT4232H family \ +.BR "* ft2232_spi" " (for SPI flash ROMs attached to an FT2232/FT4232H/FT232H family \ based USB SPI programmer), including the DLP Design DLP-USB1232H, \ FTDI FT2232H Mini-Module, FTDI FT4232H Mini-Module, openbiosprog-spi, Amontec \ JTAGkey/JTAGkey-tiny/JTAGkey-2, Dangerous Prototypes Bus Blaster, \ @@ -562,7 +562,7 @@ syntax where .B model can be -.BR 2232H ", " 4232H ", " jtagkey ", " busblaster ", " openmoko ", " \ +.BR 2232H ", " 4232H ", " 232H ", " jtagkey ", " busblaster ", " openmoko ", " \ arm-usb-tiny ", " arm-usb-tiny-h ", " arm-usb-ocd ", " arm-usb-ocd-h \ ", " tumpa ", or " picotap and
Modified: trunk/ft2232_spi.c ============================================================================== --- trunk/ft2232_spi.c Wed Sep 26 02:46:02 2012 (r1608) +++ trunk/ft2232_spi.c Wed Sep 26 02:47:09 2012 (r1609) @@ -30,11 +30,18 @@ #include "spi.h" #include <ftdi.h>
+/* This is not defined in libftdi.h <0.20 (c7e4c09e68cfa6f5e112334aa1b3bb23401c8dc7 to be exact). + * Some tests indicate that his is the only change that it is needed to support the FT232H in flashrom. */ +#if !defined(HAVE_FT232H) +#define TYPE_232H 6 +#endif + /* Please keep sorted by vendor ID, then device ID. */
#define FTDI_VID 0x0403 #define FTDI_FT2232H_PID 0x6010 #define FTDI_FT4232H_PID 0x6011 +#define FTDI_FT232H_PID 0x6014 #define TIAO_TUMPA_PID 0x8a98 #define AMONTEC_JTAGKEY_PID 0xCFF8
@@ -53,6 +60,7 @@ const struct usbdev_status devs_ft2232spi[] = { {FTDI_VID, FTDI_FT2232H_PID, OK, "FTDI", "FT2232H"}, {FTDI_VID, FTDI_FT4232H_PID, OK, "FTDI", "FT4232H"}, + {FTDI_VID, FTDI_FT232H_PID, OK, "FTDI", "FT232H"}, {FTDI_VID, TIAO_TUMPA_PID, OK, "TIAO", "USB Multi-Protocol Adapter"}, {FTDI_VID, AMONTEC_JTAGKEY_PID, OK, "Amontec", "JTAGkey"}, {GOEPEL_VID, GOEPEL_PICOTAP_PID, OK, "GOEPEL", "PicoTAP"}, @@ -190,6 +198,9 @@ } else if (!strcasecmp(arg, "4232H")) { ft2232_type = FTDI_FT4232H_PID; channel_count = 4; + } else if (!strcasecmp(arg, "232H")) { + ft2232_type = FTDI_FT232H_PID; + channel_count = 1; } else if (!strcasecmp(arg, "jtagkey")) { ft2232_type = AMONTEC_JTAGKEY_PID; channel_count = 2; @@ -315,7 +326,7 @@ return -4; }
- if (ftdic->type != TYPE_2232H && ftdic->type != TYPE_4232H) { + if (ftdic->type != TYPE_2232H && ftdic->type != TYPE_4232H && ftdic->type != TYPE_232H) { msg_pdbg("FTDI chip type %d is not high-speed\n", ftdic->type); clock_5x = 0;