jlink: add jlink_pid to specify the pid to use
authorJean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
Mon, 28 Feb 2011 19:40:47 +0000 (20:40 +0100)
committerØyvind Harboe <oyvind.harboe@zylin.com>
Wed, 2 Mar 2011 18:04:16 +0000 (19:04 +0100)
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>
doc/openocd.texi
src/jtag/drivers/jlink.c

index 5b123860d3cd0aa17cda38db7df033d6d77464ab..353daa4f4b24a3363feaba8be5fe3834c6b72582 100644 (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}
index 8a2c5ab3c9f15c6ebfb9ead1a292a0bf4c254889..faecab2d07674a33963b8bb571276eb472a77868 100644 (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;