[flashrom] [PATCH] build: detect availability of TYPE_x232H in libftdi

Alex Badea vamposdecampos at gmail.com
Mon Nov 15 19:45:47 CET 2010


Makefile: test-compile a small program to check whether ftdi.h
defines TYPE_4232H;  define CONFIG_LIBFTDI_HS=1 if so.

ft2232_spi: omit checking for 2232H or 4232H chip types if libftdi
is too old to report them.  In that case, assume the chip supports
the disable-divide-by-5 command, which was the previous behaviour
before chip type-checking was introduced.

Signed-off-by: Alex Badea <vamposdecampos at gmail.com>
---
Apologies for the late reply. Test-built with libftdi-dev 0.17-1 (ubuntu
lucid) and 0.13-2 (debian lenny).

I added the .featuretest2.c cruft because for some reason .featuretest.c
contained the utsname program at the time gcc ran.  I lack the
necessary make-Fu to figure out why.

Cheers,
Alex

 Makefile     |    9 ++++++++-
 ft2232_spi.c |    2 ++
 2 files changed, 10 insertions(+), 1 deletions(-)

diff --git a/Makefile b/Makefile
index 3215992..82aaad1 100644
--- a/Makefile
+++ b/Makefile
@@ -225,6 +225,7 @@ ifeq ($(CONFIG_FT2232_SPI), yes)
 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 "FTDIHSSUPPORT := yes" .features && printf "%s" "-D'CONFIG_LIBFTDI_HS=1'")
 FEATURE_LIBS += $(shell LC_ALL=C grep -q "FTDISUPPORT := yes" .features && printf "%s" "$(FTDILIBS)")
 PROGRAMMER_OBJS += ft2232_spi.o
 endif
@@ -401,6 +402,12 @@ features: compiler
 	@$(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 FTDI high-speed chip support... "
+	@$(shell ( echo "#include <ftdi.h>";		   \
+		   echo "int type = TYPE_4232H;"; ) > .featuretest2.c )
+	@$(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) .featuretest2.c -c -o .featuretest$(EXEC_SUFFIX) >/dev/null 2>&1 &&	\
+		( echo "found."; echo "FTDIHSSUPPORT := yes" >> .features.tmp ) ||	\
+		( echo "not found."; echo "FTDIHSSUPPORT := no" >> .features.tmp )
 	@printf "Checking for utsname support... "
 	@$(shell ( echo "#include <sys/utsname.h>";		   \
 		   echo "struct utsname osinfo;";	   \
@@ -410,7 +417,7 @@ features: compiler
 		( echo "found."; echo "UTSNAME := yes" >> .features.tmp ) ||	\
 		( echo "not found."; echo "UTSNAME := no" >> .features.tmp )
 	@$(DIFF) -q .features.tmp .features >/dev/null 2>&1 && rm .features.tmp || mv .features.tmp .features
-	@rm -f .featuretest.c .featuretest$(EXEC_SUFFIX)
+	@rm -f .featuretest.c .featuretest2.c .featuretest$(EXEC_SUFFIX)
 else
 features: compiler
 	@echo "FEATURES := yes" > .features.tmp
diff --git a/ft2232_spi.c b/ft2232_spi.c
index 7373624..dad116f 100644
--- a/ft2232_spi.c
+++ b/ft2232_spi.c
@@ -196,11 +196,13 @@ int ft2232_spi_init(void)
 		exit(-1); // TODO
 	}
 
+#if CONFIG_LIBFTDI_HS
 	if (ftdic->type != TYPE_2232H && ftdic->type != TYPE_4232H) {
 		msg_pdbg("FTDI chip type %d is not high-speed\n",
 			ftdic->type);
 		clock_5x = 0;
 	}
+#endif
 
 	if (ftdi_set_interface(ftdic, ft2232_interface) < 0) {
 		msg_perr("Unable to select interface: %s\n",
-- 
1.7.0.4





More information about the flashrom mailing list