aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJoerg Fischer <turboj@gmx.de>2015-01-31 13:00:12 +0100
committerPaul Fertser <fercerpav@gmail.com>2015-02-11 16:18:25 +0000
commitfb9277191b715566c82b633a474a5c7c78fcfe1a (patch)
tree350fecbef807f4ba91e3990cc0fb1b7e3e654e4b /src
parent6e32887f917b8e5a870e2d485139820ee5161b4f (diff)
downloadriscv-openocd-fb9277191b715566c82b633a474a5c7c78fcfe1a.zip
riscv-openocd-fb9277191b715566c82b633a474a5c7c78fcfe1a.tar.gz
riscv-openocd-fb9277191b715566c82b633a474a5c7c78fcfe1a.tar.bz2
J-Link serial number config option
Add serial option to jlink config commands, handy when there is more than one adapter connected. To select adapter 0123456 for OpenOCD, use jlink serial 0123456 Change-Id: Ib29ce3f0c4975e1169211721a4531bf4db61f1ee Signed-off-by: Joerg Fischer <turboj@gmx.de> Reviewed-on: http://openocd.zylin.com/2521 Tested-by: jenkins Reviewed-by: Paul Fertser <fercerpav@gmail.com>
Diffstat (limited to 'src')
-rw-r--r--src/jtag/drivers/jlink.c25
1 files changed, 23 insertions, 2 deletions
diff --git a/src/jtag/drivers/jlink.c b/src/jtag/drivers/jlink.c
index 63580f7..40665c3 100644
--- a/src/jtag/drivers/jlink.c
+++ b/src/jtag/drivers/jlink.c
@@ -256,6 +256,8 @@ static struct jlink *jlink_handle;
static uint16_t vids[] = { 0x1366, 0x1366, 0x1366, 0x1366, 0x1366, 0 };
static uint16_t pids[] = { 0x0101, 0x0102, 0x0103, 0x0104, 0x0105, 0 };
+static char *jlink_serial;
+
static uint32_t jlink_caps;
static uint32_t jlink_hw_type;
@@ -1019,6 +1021,19 @@ COMMAND_HANDLER(jlink_pid_command)
return ERROR_OK;
}
+COMMAND_HANDLER(jlink_serial_command)
+{
+ if (CMD_ARGC != 1) {
+ LOG_ERROR("Need exactly one argument to jlink_serial");
+ return ERROR_FAIL;
+ }
+ if (jlink_serial)
+ free(jlink_serial);
+ jlink_serial = strdup(CMD_ARGV[0]);
+
+ return ERROR_OK;
+}
+
COMMAND_HANDLER(jlink_handle_jlink_info_command)
{
if (jlink_get_version_info() == ERROR_OK) {
@@ -1335,6 +1350,12 @@ static const struct command_registration jlink_subcommand_handlers[] = {
.mode = COMMAND_CONFIG,
.help = "set the pid of the interface we want to use",
},
+ {
+ .name = "serial",
+ .handler = &jlink_serial_command,
+ .mode = COMMAND_CONFIG,
+ .help = "set the serial number of the J-Link adapter we want to use"
+ },
COMMAND_REGISTRATION_DONE
};
@@ -1744,7 +1765,7 @@ static void jlink_swd_queue_cmd(struct adiv5_dap *dap, uint8_t cmd, uint32_t *ds
static struct jlink *jlink_usb_open()
{
struct jtag_libusb_device_handle *devh;
- if (jtag_libusb_open(vids, pids, NULL, &devh) != ERROR_OK)
+ if (jtag_libusb_open(vids, pids, jlink_serial, &devh) != ERROR_OK)
return NULL;
/* BE ***VERY CAREFUL*** ABOUT MAKING CHANGES IN THIS
@@ -1776,7 +1797,7 @@ static struct jlink *jlink_usb_open()
/* reopen jlink after usb_reset
* on win32 this may take a second or two to re-enumerate */
int retval;
- while ((retval = jtag_libusb_open(vids, pids, NULL, &devh)) != ERROR_OK) {
+ while ((retval = jtag_libusb_open(vids, pids, jlink_serial, &devh)) != ERROR_OK) {
usleep(1000);
timeout--;
if (!timeout)