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 <plagn...@jcrosoft.com>
---
 doc/openocd.texi         |    2 ++
 src/jtag/drivers/jlink.c |   27 +++++++++++++++++++++++++--
 2 files changed, 27 insertions(+), 2 deletions(-)

diff --git a/doc/openocd.texi b/doc/openocd.texi
index 5b12386..353daa4 100644
--- a/doc/openocd.texi
+++ b/doc/openocd.texi
@@ -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}
diff --git a/src/jtag/drivers/jlink.c b/src/jtag/drivers/jlink.c
index 8a2c5ab..faecab2 100644
--- a/src/jtag/drivers/jlink.c
+++ b/src/jtag/drivers/jlink.c
@@ -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;
-- 
1.7.2.3

_______________________________________________
Openocd-development mailing list
Openocd-development@lists.berlios.de
https://lists.berlios.de/mailman/listinfo/openocd-development

Reply via email to