AS_HELP_STRING([--enable-ft2232_ftd2xx], [Enable building support for FT2232 based devices using the FTD2XX driver from ftdichip.com]),
[build_ft2232_ftd2xx=$enableval], [build_ft2232_ftd2xx=no])
-AC_ARG_ENABLE(ft2232_highspeed,
- AS_HELP_STRING([--enable-ft2232-highspeed], [Enable building support for FT2232H and FT4232H-based devices (requires >=libftd2xx-0.4.16 or >=libftdi-0.16)]),
- [want_ft2232_highspeed=$enableval], [want_ft2232_highspeed=no])
-
AC_ARG_ENABLE(amtjtagaccel,
AS_HELP_STRING([--enable-amtjtagaccel], [Enable building the Amontec JTAG-Accelerator driver]),
[build_amtjtagaccel=$enableval], [build_amtjtagaccel=no])
AC_MSG_RESULT([Skipping as we are cross-compiling])
])
-AC_MSG_CHECKING([whether to build ftd2xx highspeed device support])
-AC_MSG_RESULT([$want_ft2232_highspeed])
-if test $want_ft2232_highspeed != no; then
- AC_MSG_CHECKING([for ftd2xx highspeed device support])
- AC_COMPILE_IFELSE([
+AC_MSG_CHECKING([for ftd2xx highspeed device support])
+AC_COMPILE_IFELSE([
#include "confdefs.h"
#if IS_WIN32
#include "windows.h"
])
AC_MSG_RESULT([$build_ft2232_highspeed])
- if test $want_ft2232_highspeed = yes -a $build_ft2232_highspeed = no; then
- AC_MSG_ERROR([You need a newer FTD2XX driver (version 0.4.16 or later).])
+ if test $build_ft2232_highspeed = no; then
+ AC_MSG_WARN([You need a newer FTD2XX driver (version 2.04.16 or later).])
fi
-fi
LDFLAGS=$LDFLAGS_SAVE
CFLAGS=$CFLAGS_SAVE
AC_MSG_RESULT([Skipping as we are cross-compiling])
])
- AC_MSG_CHECKING([whether to build libftdi highspeed device support])
- AC_MSG_RESULT([$want_ft2232_highspeed])
- if test $want_ft2232_highspeed != no; then
- AC_MSG_CHECKING([for libftdi highspeed device support])
- AC_COMPILE_IFELSE([
+AC_MSG_CHECKING([for libftdi highspeed device support])
+AC_COMPILE_IFELSE([
#include <stdio.h>
#include <ftdi.h>
enum ftdi_chip_type x = TYPE_2232H;
])
AC_MSG_RESULT([$build_ft2232_highspeed])
- if test $want_ft2232_highspeed = yes -a $build_ft2232_highspeed = no; then
- AC_MSG_ERROR([You need a newer libftdi version (0.16 or later).])
+ if test $build_ft2232_highspeed = no; then
+ AC_MSG_WARN([You need a newer libftdi version (0.16 or later).])
fi
- fi
# Restore the 'unexpanded ldflags'
LDFLAGS=$LDFLAGS_SAVE
/* this speed value tells that RTCK is requested */
#define RTCK_SPEED -1
-static int ft2232_execute_queue(void);
+#ifndef BUILD_FT2232_HIGHSPEED
+ #if BUILD_FT2232_FTD2XX == 1
+ enum { FT_DEVICE_2232H = 6, FT_DEVICE_4232H };
+ #elif BUILD_FT2232_LIBFTDI == 1
+ enum { TYPE_2232H = 4, TYPE_4232H = 5 };
+ #endif
+#endif
+static int ft2232_execute_queue(void);
static int ft2232_speed(int speed);
static int ft2232_speed_div(int speed, int* khz);
static int ft2232_khz(int khz, int* jtag_speed);
static bool ft2232_device_is_highspeed(void)
{
-#ifdef BUILD_FT2232_HIGHSPEED
- #if BUILD_FT2232_FTD2XX == 1
+#if BUILD_FT2232_FTD2XX == 1
return (ftdi_device == FT_DEVICE_2232H) || (ftdi_device == FT_DEVICE_4232H);
- #elif BUILD_FT2232_LIBFTDI == 1
+#elif BUILD_FT2232_LIBFTDI == 1
return (ftdi_device == TYPE_2232H || ftdi_device == TYPE_4232H);
- #endif
-#else
- return false;
#endif
}
else
{
LOG_DEBUG("RCLK not supported");
-#ifndef BUILD_FT2232_HIGHSPEED
- LOG_DEBUG("If you have a high-speed FTDI device, then "
- "OpenOCD may be built with --enable-ft2232-highspeed.");
-#endif
return ERROR_FAIL;
}
}
{"BM", "AM", "100AX", "UNKNOWN", "2232C", "232R", "2232H", "4232H"};
unsigned no_of_known_types = sizeof(type_str) / sizeof(type_str[0]) - 1;
unsigned type_index = ((unsigned)ftdi_device <= no_of_known_types)
- ? ftdi_device : 3;
+ ? ftdi_device : FT_DEVICE_UNKNOWN;
LOG_INFO("device: %lu \"%s\"", ftdi_device, type_str[type_index]);
LOG_INFO("deviceID: %lu", deviceID);
LOG_INFO("SerialNumber: %s", SerialNumber);
if (ft2232_device_is_highspeed())
{
+#ifndef BUILD_FT2232_HIGHSPEED
+ #if BUILD_FT2232_FTD2XX == 1
+ LOG_WARNING("High Speed device found - You need a newer FTD2XX driver (version 2.04.16 or later)");
+ #elif BUILD_FT2232_LIBFTDI == 1
+ LOG_WARNING("High Speed device found - You need a newer libftdi version (0.16 or later)");
+ #endif
+#endif
+ /* make sure the legacy mode is disabled */
if (ft2232h_ft4232h_clk_divide_by_5(false) != ERROR_OK)
return ERROR_JTAG_INIT_FAILED;
}