diff options
author | Rodrigo Melo <rmelo@inti.gob.ar> | 2012-12-27 19:31:21 -0300 |
---|---|---|
committer | Spencer Oliver <spen@spen-soft.co.uk> | 2013-03-13 12:32:45 +0000 |
commit | 101c602b5eb67725495414da0016d15135644915 (patch) | |
tree | 5b8dec56ca9f1012a4cd6837e8a5102466c63e8d /src/jtag/drivers/ft2232.c | |
parent | 8a4835bd267773b82b1ae137b38b8067fc5d07c0 (diff) |
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 <rmelo@inti.gob.ar>
Reviewed-on: http://openocd.zylin.com/1095
Tested-by: jenkins
Reviewed-by: Spencer Oliver <spen@spen-soft.co.uk>
Diffstat (limited to 'src/jtag/drivers/ft2232.c')
-rw-r--r-- | src/jtag/drivers/ft2232.c | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/src/jtag/drivers/ft2232.c b/src/jtag/drivers/ft2232.c index 6758dc79..9a40ed9a 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 <ch>"); + + 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 }; |