jlink: add jlink_pid to specify the pid to use

this will allow us to use multiple jlink at the same time as when
the USB-Address is specified the PID change from 0x0101 to
(0x101 + usb_adress)

Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
This commit is contained in:
Jean-Christophe PLAGNIOL-VILLARD 2011-02-28 20:40:47 +01:00 committed by Øyvind Harboe
parent b992dd58f1
commit 0eed61b7c4
2 changed files with 27 additions and 2 deletions

View File

@ -2323,6 +2323,8 @@ Segger jlink USB adapter
@c dumps status
@c command: jlink hw_jtag (2|3)
@c sets version 2 or 3
@c command: jlink pid
@c set the pid of the interface we want to use
@end deffn
@deffn {Interface Driver} {parport}

View File

@ -136,6 +136,10 @@ static enum tap_state jlink_last_state = TAP_RESET;
static struct jlink* jlink_handle;
/* pid could be specified at runtime */
static uint16_t vids[] = { VID, 0 };
static uint16_t pids[] = { PID, 0 };
/***************************************************************************/
/* External interface implementation */
@ -621,6 +625,21 @@ static int jlink_get_version_info(void)
return ERROR_OK;
}
COMMAND_HANDLER(jlink_pid_command)
{
if (CMD_ARGC != 1)
{
LOG_ERROR("Need exactly one argument to jlink_pid");
return ERROR_FAIL;
}
pids[0] = strtoul(CMD_ARGV[0], NULL, 16);
pids[1] = 0;
vids[1] = 0;
return ERROR_OK;
}
COMMAND_HANDLER(jlink_handle_jlink_info_command)
{
if (jlink_get_version_info() == ERROR_OK)
@ -670,6 +689,12 @@ static const struct command_registration jlink_subcommand_handlers[] = {
.help = "access J-Link HW JTAG command version",
.usage = "[2|3]",
},
{
.name = "pid",
.handler = &jlink_pid_command,
.mode = COMMAND_CONFIG,
.help = "set the pid of the interface we want to use",
},
COMMAND_REGISTRATION_DONE
};
@ -871,8 +896,6 @@ static struct jlink* jlink_usb_open()
{
usb_init();
const uint16_t vids[] = { VID, 0 };
const uint16_t pids[] = { PID, 0 };
struct usb_dev_handle *dev;
if (jtag_usb_open(vids, pids, &dev) != ERROR_OK)
return NULL;