aboutsummaryrefslogtreecommitdiff
path: root/src/jtag/drivers
diff options
context:
space:
mode:
authorMarc Schink <openocd-dev@marcschink.de>2017-09-02 10:10:00 +0200
committerSpencer Oliver <spen@spen-soft.co.uk>2017-10-03 11:18:52 +0100
commit98e63cdc86243cf91fc0da56479acef240313d19 (patch)
treec7fa66947f2af9e69b9b59a61abd5836bdf72ea1 /src/jtag/drivers
parentf981730fe76c1b8341f84f2ab004bedc0082f99e (diff)
downloadriscv-openocd-98e63cdc86243cf91fc0da56479acef240313d19.zip
riscv-openocd-98e63cdc86243cf91fc0da56479acef240313d19.tar.gz
riscv-openocd-98e63cdc86243cf91fc0da56479acef240313d19.tar.bz2
jlink: Disable automatic device selection
If multiple devices are attached, do not automatically use the first device found. Otherwise, a user may unintentionally operate on the wrong device. Change-Id: I08c4110b82e911e9e3e744d41830ffc6c56c44bf Signed-off-by: Marc Schink <openocd-dev@marcschink.de> Reviewed-on: http://openocd.zylin.com/4213 Tested-by: jenkins Reviewed-by: Spencer Oliver <spen@spen-soft.co.uk>
Diffstat (limited to 'src/jtag/drivers')
-rw-r--r--src/jtag/drivers/jlink.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/src/jtag/drivers/jlink.c b/src/jtag/drivers/jlink.c
index 955adf8..ac6e997 100644
--- a/src/jtag/drivers/jlink.c
+++ b/src/jtag/drivers/jlink.c
@@ -546,6 +546,7 @@ static int jlink_init(void)
struct jaylink_hardware_status hwstatus;
enum jaylink_usb_address address;
size_t length;
+ size_t num_devices;
LOG_DEBUG("Using libjaylink %s (compiled with %s).",
jaylink_version_package_get_string(), JAYLINK_VERSION_PACKAGE_STRING);
@@ -580,7 +581,7 @@ static int jlink_init(void)
return ERROR_JTAG_INIT_FAILED;
}
- ret = jaylink_get_devices(jayctx, &devs, NULL);
+ ret = jaylink_get_devices(jayctx, &devs, &num_devices);
if (ret != JAYLINK_OK) {
LOG_ERROR("jaylink_get_devices() failed: %s.", jaylink_strerror(ret));
@@ -588,10 +589,14 @@ static int jlink_init(void)
return ERROR_JTAG_INIT_FAILED;
}
- found_device = false;
+ if (!use_serial_number && !use_usb_address && num_devices > 1) {
+ LOG_ERROR("Multiple devices found, specify the desired device.");
+ jaylink_free_devices(devs, true);
+ jaylink_exit(jayctx);
+ return ERROR_JTAG_INIT_FAILED;
+ }
- if (!use_serial_number && !use_usb_address)
- LOG_INFO("No device selected, using first device.");
+ found_device = false;
for (i = 0; devs[i]; i++) {
if (use_serial_number) {