jlink: Disable TCP/IP discovery
[fw/openocd] / src / jtag / drivers / jlink.c
index 955adf8aa62ee8a863cdfd76505713f40262aa70..132ef06e98f7fb3ed717292ce002b75c58ec2c65 100644 (file)
@@ -546,6 +546,8 @@ static int jlink_init(void)
        struct jaylink_hardware_status hwstatus;
        enum jaylink_usb_address address;
        size_t length;
+       size_t num_devices;
+       uint32_t host_interfaces;
 
        LOG_DEBUG("Using libjaylink %s (compiled with %s).",
                jaylink_version_package_get_string(), JAYLINK_VERSION_PACKAGE_STRING);
@@ -571,7 +573,12 @@ static int jlink_init(void)
                return ERROR_JTAG_INIT_FAILED;
        }
 
-       ret = jaylink_discovery_scan(jayctx, 0);
+       host_interfaces = JAYLINK_HIF_USB;
+
+       if (use_serial_number)
+               host_interfaces |= JAYLINK_HIF_TCP;
+
+       ret = jaylink_discovery_scan(jayctx, host_interfaces);
 
        if (ret != JAYLINK_OK) {
                LOG_ERROR("jaylink_discovery_scan() failed: %s.",
@@ -580,7 +587,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 +595,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) {