Enable hla_serial for TI ICDI devices 27/2527/5
authorJohn Pham <jhnphm@gmail.com>
Mon, 2 Feb 2015 10:23:32 +0000 (05:23 -0500)
committerAntonio Borneo <borneo.antonio@gmail.com>
Sat, 24 Oct 2020 22:24:38 +0000 (23:24 +0100)
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 for the moment.

(When this Gerrit revision was originally created,
the jtag_libusb_ wrappers did not return error conditions.)

Tested w/ a TM4C123GXL board

Change-Id: I71e9a366356c125444d4813e58ddd9b6c6498bf0
Signed-off-by: John Pham <jhnphm@gmail.com>
Signed-off-by: Matthew Trescott <matthewtrescott@gmail.com>
Reviewed-on: http://openocd.zylin.com/2527
Tested-by: jenkins
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
src/jtag/drivers/ti_icdi_usb.c

index d276e588f5f5d801ed51b26fd9d854f78703e8e3..920be778380f5b296ef9d8cc43ae4ffff1e7a32a 100644 (file)
@@ -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);
@@ -670,6 +666,7 @@ static int icdi_usb_close(void *handle)
 
 static int icdi_usb_open(struct hl_interface_param_s *param, void **fd)
 {
+       /* TODO: Convert remaining libusb_ calls to jtag_libusb_ */
        int retval;
        struct icdi_usb_handle_s *h;
 
@@ -682,19 +679,14 @@ 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]);
-
-       /* 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!");
+       for (uint8_t i = 0; param->vid[i] && param->pid[i]; ++i)
+               LOG_DEBUG("transport: %d vid: 0x%04x pid: 0x%04x serial: %s", param->transport,
+                       param->vid[i], param->pid[i], param->serial ? param->serial : "");
 
-       if (libusb_init(&h->usb_ctx) != 0) {
-               LOG_ERROR("libusb init failed");
-               goto error_open;
-       }
+       /* TI (Stellaris) ICDI 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;

Linking to existing account procedure

If you already have an account and want to add another login method you MUST first sign in with your existing account and then change URL to read https://review.openocd.org/login/?link to get to this page again but this time it'll work for linking. Thank you.

SSH host keys fingerprints

1024 SHA256:YKx8b7u5ZWdcbp7/4AeXNaqElP49m6QrwfXaqQGJAOk gerrit-code-review@openocd.zylin.com (DSA)
384 SHA256:jHIbSQa4REvwCFG4cq5LBlBLxmxSqelQPem/EXIrxjk gerrit-code-review@openocd.org (ECDSA)
521 SHA256:UAOPYkU9Fjtcao0Ul/Rrlnj/OsQvt+pgdYSZ4jOYdgs gerrit-code-review@openocd.org (ECDSA)
256 SHA256:A13M5QlnozFOvTllybRZH6vm7iSt0XLxbA48yfc2yfY gerrit-code-review@openocd.org (ECDSA)
256 SHA256:spYMBqEYoAOtK7yZBrcwE8ZpYt6b68Cfh9yEVetvbXg gerrit-code-review@openocd.org (ED25519)
+--[ED25519 256]--+
|=..              |
|+o..   .         |
|*.o   . .        |
|+B . . .         |
|Bo. = o S        |
|Oo.+ + =         |
|oB=.* = . o      |
| =+=.+   + E     |
|. .=o   . o      |
+----[SHA256]-----+
2048 SHA256:0Onrb7/PHjpo6iVZ7xQX2riKN83FJ3KGU0TvI0TaFG4 gerrit-code-review@openocd.zylin.com (RSA)