summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authormlu <mlu@b42882b7-edfa-0310-969c-e2dbd0fdcd60>2007-09-10 17:07:32 +0000
committermlu <mlu@b42882b7-edfa-0310-969c-e2dbd0fdcd60>2007-09-10 17:07:32 +0000
commitb3c593da0f76fa0edb3177504c8d791c3d6eb784 (patch)
tree8578fa31fc9541cb14ad7af3862c17cb497e5f8b /src
parent6ae83f5cf8ddf505498b535cb167550a54271606 (diff)
downloadopenocd+libswd-b3c593da0f76fa0edb3177504c8d791c3d6eb784.tar.gz
openocd+libswd-b3c593da0f76fa0edb3177504c8d791c3d6eb784.tar.bz2
openocd+libswd-b3c593da0f76fa0edb3177504c8d791c3d6eb784.tar.xz
openocd+libswd-b3c593da0f76fa0edb3177504c8d791c3d6eb784.zip
- added ft2232_latency command
git-svn-id: svn://svn.berlios.de/openocd/trunk@205 b42882b7-edfa-0310-969c-e2dbd0fdcd60
Diffstat (limited to 'src')
-rw-r--r--src/jtag/ft2232.c23
1 files changed, 21 insertions, 2 deletions
diff --git a/src/jtag/ft2232.c b/src/jtag/ft2232.c
index b1acee58..629bab08 100644
--- a/src/jtag/ft2232.c
+++ b/src/jtag/ft2232.c
@@ -73,10 +73,12 @@ int ft2232_handle_device_desc_command(struct command_context_s *cmd_ctx, char *c
int ft2232_handle_serial_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc);
int ft2232_handle_layout_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc);
int ft2232_handle_vid_pid_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc);
+int ft2232_handle_latency_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc);
char *ft2232_device_desc = NULL;
char *ft2232_serial = NULL;
char *ft2232_layout = NULL;
+unsigned char ft2232_latency = 2;
#define MAX_USB_IDS 8
/* vid = pid = 0 marks the end of the list */
@@ -272,6 +274,8 @@ int ft2232_register_commands(struct command_context_s *cmd_ctx)
COMMAND_CONFIG, NULL);
register_command(cmd_ctx, NULL, "ft2232_vid_pid", ft2232_handle_vid_pid_command,
COMMAND_CONFIG, NULL);
+ register_command(cmd_ctx, NULL, "ft2232_latency", ft2232_handle_latency_command,
+ COMMAND_CONFIG, NULL);
return ERROR_OK;
}
@@ -1369,7 +1373,7 @@ static int ft2232_init_ftd2xx(u16 vid, u16 pid, int more, int *try_more)
return ERROR_JTAG_INIT_FAILED;
}
- if ((status = FT_SetLatencyTimer(ftdih, 2)) != FT_OK)
+ if ((status = FT_SetLatencyTimer(ftdih, ft2232_latency)) != FT_OK)
{
ERROR("unable to set latency timer: %lu", status);
return ERROR_JTAG_INIT_FAILED;
@@ -1449,7 +1453,7 @@ static int ft2232_init_libftdi(u16 vid, u16 pid, int more, int *try_more)
return ERROR_JTAG_INIT_FAILED;
}
- if (ftdi_set_latency_timer(&ftdic, 2) < 0)
+ if (ftdi_set_latency_timer(&ftdic, ft2232_latency) < 0)
{
ERROR("unable to set latency timer");
return ERROR_JTAG_INIT_FAILED;
@@ -2039,3 +2043,18 @@ int ft2232_handle_vid_pid_command(struct command_context_s *cmd_ctx, char *cmd,
return ERROR_OK;
}
+
+int ft2232_handle_latency_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc)
+{
+ if (argc == 1)
+ {
+ ft2232_latency = atoi(args[0]);
+ }
+ else
+ {
+ ERROR("expected exactly one argument to ft2232_latency <ms>");
+ }
+
+ return ERROR_OK;
+}
+