This is an automated email from Gerrit.

Matthew Trescott (matthewtresc...@gmail.com) just uploaded a new patch set to 
Gerrit, which you can find at http://openocd.zylin.com/5852

-- gerrit

commit 9b42469dbef66369bb0be4eb5047f5653f308e23
Author: Matthew Trescott <matthewtresc...@gmail.com>
Date:   Sun Oct 11 02:43:04 2020 -0400

    Enable hla_serial for TI ICDI devices
    
    Formerly patchset 3 of change 2527 and patchset 3 of change 2528 by John
    Pham. Used jtag_libusb_open from libusb_helper.h instead of
    libusb_open_device_with_vid_pid to get device handle, as well as managing
    context, i.e. similar to stlink_usb. Direct calls to libusb1 are left in.
    
    Tested w/ a TM4C123GXL board
    
    Change-Id: Ib3d7848cb5ab3c4461a199da4e9df3c7f7584775
    Signed-off-by: Matthew Trescott <matthewtresc...@gmail.com>
    Signed-off-by: John Pham <jhn...@gmail.com>

diff --git a/src/jtag/drivers/ti_icdi_usb.c b/src/jtag/drivers/ti_icdi_usb.c
index d276e58..e00a917 100644
--- a/src/jtag/drivers/ti_icdi_usb.c
+++ b/src/jtag/drivers/ti_icdi_usb.c
@@ -31,7 +31,7 @@
 
 #include <target/cortex_m.h>
 
-#include <libusb.h>
+#include "libusb_helper.h"
 
 #define ICDI_WRITE_ENDPOINT 0x02
 #define ICDI_READ_ENDPOINT 0x83
@@ -44,8 +44,7 @@
 #define PACKET_END "#"
 
 struct icdi_usb_handle_s {
-       libusb_context *usb_ctx;
-       libusb_device_handle *usb_dev;
+       struct libusb_device_handle *usb_dev;
 
        char *read_buffer;
        char *write_buffer;
@@ -657,10 +656,7 @@ static int icdi_usb_close(void *handle)
                return ERROR_OK;
 
        if (h->usb_dev)
-               libusb_close(h->usb_dev);
-
-       if (h->usb_ctx)
-               libusb_exit(h->usb_ctx);
+               jtag_libusb_close(h->usb_dev);
 
        free(h->read_buffer);
        free(h->write_buffer);
@@ -682,19 +678,16 @@ static int icdi_usb_open(struct hl_interface_param_s 
*param, void **fd)
                return ERROR_FAIL;
        }
 
-       LOG_DEBUG("transport: %d vid: 0x%04x pid: 0x%04x", param->transport,
-                 param->vid[0], param->pid[0]);
+       LOG_DEBUG("transport: %d vid: 0x%04x pid: 0x%04x serial: %s", 
param->transport,
+                 param->vid[0], param->pid[0], param->serial ? param->serial : 
"");
 
        /* TODO: convert libusb_ calls to jtag_libusb_ */
        if (param->vid[1])
                LOG_WARNING("Bad configuration: 'hla_vid_pid' command does not 
accept more than one VID PID pair on ti-icdi!");
 
-       if (libusb_init(&h->usb_ctx) != 0) {
-               LOG_ERROR("libusb init failed");
-               goto error_open;
-       }
+       /* The debugger provides its serial number in the USB descriptor; no 
need to provide a callback here. */
+       jtag_libusb_open(param->vid, param->pid, param->serial, &h->usb_dev, 
NULL);
 
-       h->usb_dev = libusb_open_device_with_vid_pid(h->usb_ctx, param->vid[0], 
param->pid[0]);
        if (!h->usb_dev) {
                LOG_ERROR("open failed");
                goto error_open;
diff --git a/tcl/interface/ti-icdi.cfg b/tcl/interface/ti-icdi.cfg
index 9b46b43..8561a31 100644
--- a/tcl/interface/ti-icdi.cfg
+++ b/tcl/interface/ti-icdi.cfg
@@ -11,3 +11,7 @@ adapter driver hla
 hla_layout ti-icdi
 hla_vid_pid 0x1cbe 0x00fd
 
+# Optionally specify the serial number of TI-ICDI devices, for when using
+# multiple devices. Serial numbers can be obtained using lsusb -v
+# Ex.
+#hla_serial "0F003065"

-- 


_______________________________________________
OpenOCD-devel mailing list
OpenOCD-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/openocd-devel

Reply via email to