aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSpencer Oliver <ntfreak@users.sourceforge.net>2011-07-12 15:51:18 +0100
committerSpencer Oliver <ntfreak@users.sourceforge.net>2011-07-12 15:51:18 +0100
commit0ea76bc778a1c5c33bf43e2afbcbbfc819764778 (patch)
tree494e0ad6c607eca48fd44e501b73b2367f54f726
parentb765688be6fa363117fbc3750ae15fe1fe69c984 (diff)
ftd2xx: handle FT_GetLatencyTimer bug in v1.04
Signed-off-by: Spencer Oliver <ntfreak@users.sourceforge.net>
-rw-r--r--src/jtag/drivers/ft2232.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/src/jtag/drivers/ft2232.c b/src/jtag/drivers/ft2232.c
index 2b64e876..3168f990 100644
--- a/src/jtag/drivers/ft2232.c
+++ b/src/jtag/drivers/ft2232.c
@@ -2260,8 +2260,20 @@ static int ft2232_init_ftd2xx(uint16_t vid, uint16_t pid, int more, int* try_mor
if ((status = FT_GetLatencyTimer(ftdih, &latency_timer)) != FT_OK)
{
+ /* ftd2xx 1.04 (linux) has a bug when calling FT_GetLatencyTimer
+ * so ignore errors if using this driver version */
+ DWORD dw_version;
+
+ status = FT_GetDriverVersion(ftdih, &dw_version);
LOG_ERROR("unable to get latency timer: %" PRIu32, status);
- return ERROR_JTAG_INIT_FAILED;
+
+ if ((status == FT_OK) && (dw_version == 0x10004)) {
+ LOG_ERROR("ftd2xx 1.04 detected - this has known issues " \
+ "with FT_GetLatencyTimer, upgrade to a newer version");
+ }
+ else {
+ return ERROR_JTAG_INIT_FAILED;
+ }
}
else
{