jtag/adapter: add command 'adapter serial'

Several adapter define their own command to specify the USB serial
number or serial string to be used during USB search.

Define a general command 'adapter serial' to be proposed as
replacement of the driver specific ones.
No driver is changed so far to use it.

Change-Id: I7631687a4163ccc63a9bdf3ad1fcb300fc483d3a
Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com>
Reviewed-on: https://review.openocd.org/c/openocd/+/6647
Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
Tested-by: jenkins
This commit is contained in:
Antonio Borneo
2021-10-07 19:27:31 +02:00
parent f66a16c4a0
commit 0343ae7cc7
3 changed files with 35 additions and 0 deletions

View File

@@ -42,6 +42,7 @@ enum adapter_clk_mode {
static struct {
bool adapter_initialized;
char *usb_location;
char *serial;
enum adapter_clk_mode clock_mode;
int speed_khz;
int rclk_fallback_speed_khz;
@@ -120,6 +121,7 @@ int adapter_quit(void)
LOG_ERROR("failed: %d", result);
}
free(adapter_config.serial);
free(adapter_config.usb_location);
struct jtag_tap *t = jtag_all_taps();
@@ -223,6 +225,11 @@ int adapter_get_speed_readable(int *khz)
return adapter_driver->speed_div(speed_var, khz);
}
const char *adapter_get_required_serial(void)
{
return adapter_config.serial;
}
/*
* 1 char: bus
* 2 * 7 chars: max 7 ports
@@ -659,6 +666,16 @@ COMMAND_HANDLER(handle_adapter_speed_command)
return retval;
}
COMMAND_HANDLER(handle_adapter_serial_command)
{
if (CMD_ARGC != 1)
return ERROR_COMMAND_SYNTAX_ERROR;
free(adapter_config.serial);
adapter_config.serial = strdup(CMD_ARGV[0]);
return ERROR_OK;
}
COMMAND_HANDLER(handle_adapter_reset_de_assert)
{
enum values {
@@ -806,6 +823,13 @@ static const struct command_registration adapter_command_handlers[] = {
"With or without argument, display current setting.",
.usage = "[khz]",
},
{
.name = "serial",
.handler = handle_adapter_serial_command,
.mode = COMMAND_CONFIG,
.help = "Set the serial number of the adapter",
.usage = "serial_string",
},
{
.name = "list",
.handler = handle_adapter_list_command,

View File

@@ -55,4 +55,7 @@ int adapter_config_rclk(unsigned int fallback_speed_khz);
/** Retrieves the clock speed of the adapter in kHz. */
unsigned int adapter_get_speed_khz(void);
/** Retrieves the serial number set with command 'adapter serial' */
const char *adapter_get_required_serial(void);
#endif /* OPENOCD_JTAG_ADAPTER_H */