From 09e9625d6ce52bbed271c1087df58fb3bb78b99a Mon Sep 17 00:00:00 2001 From: Andreas Fritiofson Date: Sat, 22 Mar 2014 14:09:06 +0100 Subject: [PATCH] ft2232: Mark interface driver as deprecated Change-Id: I5ebc924ab66c86f1902942bebc203a34d97abc64 Signed-off-by: Andreas Fritiofson Reviewed-on: http://openocd.zylin.com/1899 Reviewed-by: Paul Fertser Reviewed-by: Spencer Oliver Tested-by: Spencer Oliver --- README.Windows | 15 +++++++++++++++ configure.ac | 29 +++++++++++++++++++++++++---- src/jtag/drivers/ft2232.c | 5 +++++ 3 files changed, 45 insertions(+), 4 deletions(-) diff --git a/README.Windows b/README.Windows index 61a712aba..9cdd55c5c 100644 --- a/README.Windows +++ b/README.Windows @@ -32,3 +32,18 @@ WinUSB to a device is to use the latest Zadig installer: For the old drivers that use libusb-0.1 API you might need to link against libusb-win32 headers and install the corresponding driver with Zadig. + +If you need to use the same adapter with other applications that may +require another driver, a solution for Windows Vista and above is to +activate the IgnoreHWSerNum registry setting for the USB device. + +That setting forces Windows to associate the driver per port instead of +per serial number, the same behaviour as when the device does not contain +a serial number. So different drivers can be installed for the adapter on +different ports and you just need to plug the adapter into the correct +port depending on which application to use. + +For more information, see: + + http://msdn.microsoft.com/en-us/library/windows/hardware/jj649944(v=vs.85).aspx + http://www.ftdichip.com/Support/Knowledgebase/index.html?ignorehardwareserialnumber.htm diff --git a/configure.ac b/configure.ac index 73f7bef67..c8eeea923 100644 --- a/configure.ac +++ b/configure.ac @@ -387,12 +387,24 @@ AC_ARG_ENABLE([parport_giveio], [Enable use of giveio for parport (for CygWin only)]), [parport_use_giveio=$enableval], [parport_use_giveio=]) -AC_ARG_ENABLE([ft2232_libftdi], - AS_HELP_STRING([--enable-ft2232_libftdi], [Enable building support for FT2232 based devices using the libftdi driver, opensource alternate of FTD2XX]), +AC_ARG_ENABLE([ft2232_libftdi], [], [ +if test $enableval = yes; then + AC_MSG_ERROR([The ft2232 driver is deprecated, use --enable-ftdi to build its replacement, or force the old driver with --enable-legacy-ft2232_libftdi]) +fi +]) + +AC_ARG_ENABLE([ft2232_ftd2xx], [], [ +if test $enableval = yes; then + AC_MSG_ERROR([The ft2232 driver is deprecated, use --enable-ftdi to build its replacement, or force the old driver with --enable-legacy-ft2232_ftd2xx]) +fi +]) + +AC_ARG_ENABLE([legacy-ft2232_libftdi], + AS_HELP_STRING([--enable-legacy-ft2232_libftdi], [(DEPRECATED) Enable building support for FT2232 based devices using the libftdi library]), [build_ft2232_libftdi=$enableval], [build_ft2232_libftdi=no]) -AC_ARG_ENABLE([ft2232_ftd2xx], - AS_HELP_STRING([--enable-ft2232_ftd2xx], [Enable building support for FT2232 based devices using the FTD2XX driver from ftdichip.com]), +AC_ARG_ENABLE([legacy-ft2232_ftd2xx], + AS_HELP_STRING([--enable-legacy-ft2232_ftd2xx], [(DEPRECATED) Enable building support for FT2232 based devices using the D2XX library from ftdichip.com]), [build_ft2232_ftd2xx=$enableval], [build_ft2232_ftd2xx=no]) AC_ARG_ENABLE([jtag_vpi], @@ -1320,3 +1332,12 @@ m4_foreach([adapter], [USB1_ADAPTERS, USB_ADAPTERS, USB0_ADAPTERS, HIDAPI_ADAPTE esac ]) echo + +if test $build_ft2232_libftdi = yes -o $build_ft2232_ftd2xx = yes; then + if test $enable_ftdi = no; then + AC_MSG_WARN([Building the deprecated 'ft2232' adapter driver but not its replacement!]) + AC_MSG_WARN([Please consider using --enable-ftdi instead.]) + else + AC_MSG_WARN([Building the deprecated 'ft2232' adapter driver.]) + fi +fi diff --git a/src/jtag/drivers/ft2232.c b/src/jtag/drivers/ft2232.c index c4a74ef7f..19f4dcb5f 100644 --- a/src/jtag/drivers/ft2232.c +++ b/src/jtag/drivers/ft2232.c @@ -2341,6 +2341,11 @@ static int ft2232_init(void) int retval; uint32_t bytes_written; + LOG_WARNING("Using DEPRECATED interface driver 'ft2232'"); +#if BUILD_FTDI + LOG_INFO("Consider using the 'ftdi' interface driver, with configuration files in interface/ftdi/..."); +#endif + if (tap_get_tms_path_len(TAP_IRPAUSE, TAP_IRPAUSE) == 7) LOG_DEBUG("ft2232 interface using 7 step jtag state transitions"); else