aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAntonio Borneo <borneo.antonio@gmail.com>2021-10-07 23:03:23 +0200
committerAntonio Borneo <borneo.antonio@gmail.com>2021-11-28 10:59:23 +0000
commit61a2f3284b984abee0ffd1166ecd79a0ea82976e (patch)
tree4388d01d56aae63a5da2a30e1ea39996b9407ad5 /src
parent271e5416af975b52d4cd0e2ced65a4cbda9d041f (diff)
downloadriscv-openocd-61a2f3284b984abee0ffd1166ecd79a0ea82976e.zip
riscv-openocd-61a2f3284b984abee0ffd1166ecd79a0ea82976e.tar.gz
riscv-openocd-61a2f3284b984abee0ffd1166ecd79a0ea82976e.tar.bz2
jtag/xds110: switch to command 'adapter serial'
The driver xds110 defines the command 'xds110 serial' to specify the serial string of the adapter. Remove and deprecate the driver command, and use 'adapter serial'. Note: the original command 'xds110 serial' used a complex and undocumented conversion of the serial number through multibyte string, wide-character string and C cast. The XDS110 I can access and the lsusb dumps available through Google don't show any exotic USB serial that require such conversion. The original developer doesn't remember any constraint that mandates such conversion (see comments in https://review.openocd.org/4322/). The conversion is removed by this patch. Change-Id: I38909918079b2c1797ad85ebec2fea1b33743606 Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com> Reviewed-on: https://review.openocd.org/c/openocd/+/6655 Reviewed-by: Tomas Vanek <vanekt@fbl.cz> Tested-by: jenkins
Diffstat (limited to 'src')
-rw-r--r--src/jtag/drivers/xds110.c50
-rw-r--r--src/jtag/startup.tcl10
2 files changed, 13 insertions, 47 deletions
diff --git a/src/jtag/drivers/xds110.c b/src/jtag/drivers/xds110.c
index 243577d..c5249b2 100644
--- a/src/jtag/drivers/xds110.c
+++ b/src/jtag/drivers/xds110.c
@@ -20,15 +20,13 @@
#endif
#include <transport/transport.h>
+#include <jtag/adapter.h>
#include <jtag/swd.h>
#include <jtag/interface.h>
#include <jtag/commands.h>
#include <jtag/tcl.h>
#include <libusb.h>
-/* XDS110 USB serial number length */
-#define XDS110_SERIAL_LEN 8
-
/* XDS110 stand-alone probe voltage supply limits */
#define XDS110_MIN_VOLTAGE 1800
#define XDS110_MAX_VOLTAGE 3600
@@ -238,8 +236,6 @@ struct xds110_info {
/* TCK speed and delay count*/
uint32_t speed;
uint32_t delay_count;
- /* XDS110 serial number */
- char serial[XDS110_SERIAL_LEN + 1];
/* XDS110 voltage supply setting */
uint32_t voltage;
/* XDS110 firmware and hardware version */
@@ -269,7 +265,6 @@ static struct xds110_info xds110 = {
.is_ap_dirty = false,
.speed = XDS110_DEFAULT_TCK_SPEED,
.delay_count = 0,
- .serial = {0},
.voltage = 0,
.firmware = 0,
.hardware = 0,
@@ -371,7 +366,7 @@ static bool usb_connect(void)
*data = '\0';
/* May be the requested device if serial number matches */
- if (xds110.serial[0] == 0) {
+ if (!adapter_get_required_serial()) {
/* No serial number given; match first XDS110 found */
found = true;
break;
@@ -380,7 +375,7 @@ static bool usb_connect(void)
result = libusb_get_string_descriptor_ascii(dev,
desc.iSerialNumber, data, max_data);
if (result > 0 &&
- strcmp((char *)data, (char *)xds110.serial) == 0) {
+ strcmp((char *)data, adapter_get_required_serial()) == 0) {
found = true;
break;
}
@@ -1395,8 +1390,8 @@ static void xds110_show_info(void)
(((firmware >> 12) & 0xf) * 10) + ((firmware >> 8) & 0xf),
(((firmware >> 4) & 0xf) * 10) + ((firmware >> 0) & 0xf));
LOG_INFO("XDS110: hardware version = 0x%04x", xds110.hardware);
- if (xds110.serial[0] != 0)
- LOG_INFO("XDS110: serial number = %s", xds110.serial);
+ if (adapter_get_required_serial())
+ LOG_INFO("XDS110: serial number = %s", adapter_get_required_serial());
if (xds110.is_swd_mode) {
LOG_INFO("XDS110: connected to target via SWD");
LOG_INFO("XDS110: SWCLK set to %" PRIu32 " kHz", xds110.speed);
@@ -2024,34 +2019,6 @@ COMMAND_HANDLER(xds110_handle_info_command)
return ERROR_OK;
}
-COMMAND_HANDLER(xds110_handle_serial_command)
-{
- wchar_t serial[XDS110_SERIAL_LEN + 1];
-
- xds110.serial[0] = 0;
-
- if (CMD_ARGC == 1) {
- size_t len = mbstowcs(0, CMD_ARGV[0], 0);
- if (len > XDS110_SERIAL_LEN) {
- LOG_ERROR("XDS110: serial number is limited to %d characters",
- XDS110_SERIAL_LEN);
- return ERROR_FAIL;
- }
- if ((size_t)-1 == mbstowcs(serial, CMD_ARGV[0], len + 1)) {
- LOG_ERROR("XDS110: unable to convert serial number");
- return ERROR_FAIL;
- }
-
- for (uint32_t i = 0; i < len; i++)
- xds110.serial[i] = (char)serial[i];
-
- xds110.serial[len] = 0;
- } else
- return ERROR_COMMAND_SYNTAX_ERROR;
-
- return ERROR_OK;
-}
-
COMMAND_HANDLER(xds110_handle_supply_voltage_command)
{
uint32_t voltage = 0;
@@ -2083,13 +2050,6 @@ static const struct command_registration xds110_subcommand_handlers[] = {
.usage = "",
},
{
- .name = "serial",
- .handler = &xds110_handle_serial_command,
- .mode = COMMAND_CONFIG,
- .help = "set the XDS110 probe serial number",
- .usage = "serial_string",
- },
- {
.name = "supply",
.handler = &xds110_handle_supply_voltage_command,
.mode = COMMAND_CONFIG,
diff --git a/src/jtag/startup.tcl b/src/jtag/startup.tcl
index 95fe55c..d6c3b85 100644
--- a/src/jtag/startup.tcl
+++ b/src/jtag/startup.tcl
@@ -187,8 +187,8 @@ proc ftdi_location args {
lappend _telnet_autocomplete_skip xds110_serial
proc xds110_serial args {
- echo "DEPRECATED! use 'xds110 serial' not 'xds110_serial'"
- eval xds110 serial $args
+ echo "DEPRECATED! use 'adapter serial' not 'xds110_serial'"
+ eval adapter serial $args
}
lappend _telnet_autocomplete_skip xds110_supply_voltage
@@ -777,4 +777,10 @@ proc "vsllink usb_serial" {args} {
eval adapter serial $args
}
+lappend _telnet_autocomplete_skip "xds110 serial"
+proc "xds110 serial" {args} {
+ echo "DEPRECATED! use 'adapter serial' not 'xds110 serial'"
+ eval adapter serial $args
+}
+
# END MIGRATION AIDS