diff options
-rw-r--r-- | doc/openocd.texi | 2 | ||||
-rw-r--r-- | src/jtag/drivers/jlink.c | 27 |
2 files changed, 27 insertions, 2 deletions
diff --git a/doc/openocd.texi b/doc/openocd.texi index 5b123860..353daa4f 100644 --- a/doc/openocd.texi +++ b/doc/openocd.texi @@ -2323,6 +2323,8 @@ Segger jlink USB adapter @c dumps status @c command: jlink hw_jtag (2|3) @c sets version 2 or 3 +@c command: jlink pid +@c set the pid of the interface we want to use @end deffn @deffn {Interface Driver} {parport} diff --git a/src/jtag/drivers/jlink.c b/src/jtag/drivers/jlink.c index 8a2c5ab3..faecab2d 100644 --- a/src/jtag/drivers/jlink.c +++ b/src/jtag/drivers/jlink.c @@ -136,6 +136,10 @@ static enum tap_state jlink_last_state = TAP_RESET; static struct jlink* jlink_handle; +/* pid could be specified at runtime */ +static uint16_t vids[] = { VID, 0 }; +static uint16_t pids[] = { PID, 0 }; + /***************************************************************************/ /* External interface implementation */ @@ -621,6 +625,21 @@ static int jlink_get_version_info(void) return ERROR_OK; } +COMMAND_HANDLER(jlink_pid_command) +{ + if (CMD_ARGC != 1) + { + LOG_ERROR("Need exactly one argument to jlink_pid"); + return ERROR_FAIL; + } + + pids[0] = strtoul(CMD_ARGV[0], NULL, 16); + pids[1] = 0; + vids[1] = 0; + + return ERROR_OK; +} + COMMAND_HANDLER(jlink_handle_jlink_info_command) { if (jlink_get_version_info() == ERROR_OK) @@ -670,6 +689,12 @@ static const struct command_registration jlink_subcommand_handlers[] = { .help = "access J-Link HW JTAG command version", .usage = "[2|3]", }, + { + .name = "pid", + .handler = &jlink_pid_command, + .mode = COMMAND_CONFIG, + .help = "set the pid of the interface we want to use", + }, COMMAND_REGISTRATION_DONE }; @@ -871,8 +896,6 @@ static struct jlink* jlink_usb_open() { usb_init(); - const uint16_t vids[] = { VID, 0 }; - const uint16_t pids[] = { PID, 0 }; struct usb_dev_handle *dev; if (jtag_usb_open(vids, pids, &dev) != ERROR_OK) return NULL; |