diff --git a/doc/openocd.texi b/doc/openocd.texi index 78451c71c..58e533f62 100644 --- a/doc/openocd.texi +++ b/doc/openocd.texi @@ -2371,9 +2371,9 @@ This command is only available if your libusb1 is at least version 1.0.16. Specifies the @var{serial_string} of the adapter to use. If this command is not specified, serial strings are not checked. Only the following adapter drivers use the serial string from this command: -cmsis_dap, ft232r, ftdi, kitprog, presto, vsllink, xds110. +cmsis_dap, ft232r, ftdi, jlink, kitprog, presto, vsllink, xds110. The following adapters have their own command to specify the serial string: -hla, jlink, st-link. +hla, st-link. @end deffn @section Interface Drivers @@ -2848,12 +2848,6 @@ to the host. If not specified, USB addresses are not considered. Device selection via USB address is not always unambiguous. It is recommended to use the serial number instead, if possible. -As a configuration command, it can be used only before 'init'. -@end deffn -@deffn {Config Command} {jlink serial} -Set the serial number of the interface, in case more than one adapter is -connected to the host. If not specified, serial numbers are not considered. - As a configuration command, it can be used only before 'init'. @end deffn @end deffn diff --git a/src/jtag/drivers/jlink.c b/src/jtag/drivers/jlink.c index 0414ec710..fdf4ae778 100644 --- a/src/jtag/drivers/jlink.c +++ b/src/jtag/drivers/jlink.c @@ -669,6 +669,23 @@ static int jlink_init(void) return ERROR_JTAG_INIT_FAILED; } + const char *serial = adapter_get_required_serial(); + if (serial) { + ret = jaylink_parse_serial_number(serial, &serial_number); + if (ret == JAYLINK_ERR) { + LOG_ERROR("Invalid serial number: %s", serial); + jaylink_exit(jayctx); + return ERROR_JTAG_INIT_FAILED; + } + if (ret != JAYLINK_OK) { + LOG_ERROR("jaylink_parse_serial_number() failed: %s", jaylink_strerror(ret)); + jaylink_exit(jayctx); + return ERROR_JTAG_INIT_FAILED; + } + use_serial_number = true; + use_usb_address = false; + } + bool found_device; ret = jlink_open_device(JAYLINK_HIF_USB, &found_device); if (ret != ERROR_OK) @@ -979,38 +996,11 @@ COMMAND_HANDLER(jlink_usb_command) usb_address = tmp; - use_serial_number = false; use_usb_address = true; return ERROR_OK; } -COMMAND_HANDLER(jlink_serial_command) -{ - int ret; - - if (CMD_ARGC != 1) { - command_print(CMD, "Need exactly one argument for jlink serial"); - return ERROR_COMMAND_SYNTAX_ERROR; - } - - ret = jaylink_parse_serial_number(CMD_ARGV[0], &serial_number); - - if (ret == JAYLINK_ERR) { - command_print(CMD, "Invalid serial number: %s", CMD_ARGV[0]); - return ERROR_FAIL; - } else if (ret != JAYLINK_OK) { - command_print(CMD, "jaylink_parse_serial_number() failed: %s", - jaylink_strerror(ret)); - return ERROR_FAIL; - } - - use_serial_number = true; - use_usb_address = false; - - return ERROR_OK; -} - COMMAND_HANDLER(jlink_handle_hwstatus_command) { int ret; @@ -1932,13 +1922,6 @@ static const struct command_registration jlink_subcommand_handlers[] = { .help = "set the USB address of the device that should be used", .usage = "<0-3>" }, - { - .name = "serial", - .handler = &jlink_serial_command, - .mode = COMMAND_CONFIG, - .help = "set the serial number of the device that should be used", - .usage = "" - }, { .name = "config", .handler = &jlink_handle_config_command, diff --git a/src/jtag/startup.tcl b/src/jtag/startup.tcl index d6c3b85b4..199ca04d6 100644 --- a/src/jtag/startup.tcl +++ b/src/jtag/startup.tcl @@ -759,6 +759,12 @@ proc "ftdi serial" {args} { eval adapter serial $args } +lappend _telnet_autocomplete_skip "jlink serial" +proc "jlink serial" {args} { + echo "DEPRECATED! use 'adapter serial' not 'jlink serial'" + eval adapter serial $args +} + lappend _telnet_autocomplete_skip kitprog_serial proc kitprog_serial args { echo "DEPRECATED! use 'adapter serial' not 'kitprog_serial'" diff --git a/tcl/interface/jlink.cfg b/tcl/interface/jlink.cfg index 51f420b7f..f9a18b05f 100644 --- a/tcl/interface/jlink.cfg +++ b/tcl/interface/jlink.cfg @@ -11,4 +11,4 @@ adapter driver jlink # # Example: Select J-Link with serial number 123456789 # -# jlink serial 123456789 +# adapter serial 123456789