From 101c602b5eb67725495414da0016d15135644915 Mon Sep 17 00:00:00 2001 From: Rodrigo Melo Date: Thu, 27 Dec 2012 19:31:21 -0300 Subject: [PATCH] ft2232: ft2232_channel option added With this option a different channel of the ft2232 chip can be selected using a previously existing layout. It was made for a partner called Salvador Tropea. Change-Id: Ia0dedb2f50e232d089e73788735edc8f47ee23e6 Signed-off-by: Rodrigo Melo Reviewed-on: http://openocd.zylin.com/1095 Tested-by: jenkins Reviewed-by: Spencer Oliver --- src/jtag/drivers/ft2232.c | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/src/jtag/drivers/ft2232.c b/src/jtag/drivers/ft2232.c index 6758dc790..9a40ed9a5 100644 --- a/src/jtag/drivers/ft2232.c +++ b/src/jtag/drivers/ft2232.c @@ -156,6 +156,7 @@ static char *ft2232_device_desc; static char *ft2232_serial; static uint8_t ft2232_latency = 2; static unsigned ft2232_max_tck = FTDI_2232C_MAX_TCK; +static int ft2232_channel = INTERFACE_ANY; #define MAX_USB_IDS 8 /* vid = pid = 0 marks the end of the list */ @@ -2358,7 +2359,7 @@ static int ft2232_init(void) more, &try_more); #elif BUILD_FT2232_LIBFTDI == 1 retval = ft2232_init_libftdi(ft2232_vid[i], ft2232_pid[i], - more, &try_more, layout->channel); + more, &try_more, ft2232_channel); #endif if (retval >= 0) break; @@ -3203,6 +3204,7 @@ COMMAND_HANDLER(ft2232_handle_layout_command) for (const struct ft2232_layout *l = ft2232_layouts; l->name; l++) { if (strcmp(l->name, CMD_ARGV[0]) == 0) { layout = l; + ft2232_channel = l->channel; return ERROR_OK; } } @@ -3251,6 +3253,18 @@ COMMAND_HANDLER(ft2232_handle_latency_command) return ERROR_OK; } +COMMAND_HANDLER(ft2232_handle_channel_command) +{ + if (CMD_ARGC == 1) { + ft2232_channel = atoi(CMD_ARGV[0]); + if (ft2232_channel < 0 || ft2232_channel > 4) + LOG_ERROR("ft2232_channel must be in the 0 to 4 range"); + } else + LOG_ERROR("expected exactly one argument to ft2232_channel "); + + return ERROR_OK; +} + static int ft2232_stableclocks(int num_cycles, struct jtag_command *cmd) { int retval = 0; @@ -4258,6 +4272,13 @@ static const struct command_registration ft2232_command_handlers[] = { .help = "set the FT2232 latency timer to a new value", .usage = "value", }, + { + .name = "ft2232_channel", + .handler = &ft2232_handle_channel_command, + .mode = COMMAND_CONFIG, + .help = "set the FT2232 channel to a new value", + .usage = "value", + }, COMMAND_REGISTRATION_DONE };