]> git.sur5r.net Git - openocd/blobdiff - src/jtag/drivers/libusb1_common.c
libusb: return oocd error values
[openocd] / src / jtag / drivers / libusb1_common.c
index f8b7c754c0eabd1f9f33fb801df1ff0651e56e3f..a1db86f4bb9e05f08022cf9d593a9751d2a1d38e 100644 (file)
@@ -71,11 +71,11 @@ int jtag_libusb_open(const uint16_t vids[], const uint16_t pids[],
                struct jtag_libusb_device_handle **out)
 {
        int cnt, idx, errCode;
-       int retval = -ENODEV;
+       int retval = ERROR_FAIL;
        struct jtag_libusb_device_handle *libusb_handle = NULL;
 
        if (libusb_init(&jtag_libusb_context) < 0)
-               return -ENODEV;
+               return ERROR_FAIL;
 
        cnt = libusb_get_device_list(jtag_libusb_context, &devs);
 
@@ -105,7 +105,7 @@ int jtag_libusb_open(const uint16_t vids[], const uint16_t pids[],
 
                /* Success. */
                *out = libusb_handle;
-               retval = 0;
+               retval = ERROR_OK;
                break;
        }
        if (cnt >= 0)
@@ -187,7 +187,7 @@ int jtag_libusb_set_configuration(jtag_libusb_device_handle *devh,
 int jtag_libusb_choose_interface(struct jtag_libusb_device_handle *devh,
                unsigned int *usb_read_ep,
                unsigned int *usb_write_ep,
-               int bclass, int subclass, int protocol)
+               int bclass, int subclass, int protocol, int trans_type)
 {
        struct jtag_libusb_device *udev = jtag_libusb_get_device(devh);
        const struct libusb_interface *inter;
@@ -210,6 +210,8 @@ int jtag_libusb_choose_interface(struct jtag_libusb_device_handle *devh,
                                continue;
 
                        epdesc = &interdesc->endpoint[k];
+                       if (trans_type > 0 && (epdesc->bmAttributes & 0x3) != trans_type)
+                               continue;
 
                        uint8_t epnum = epdesc->bEndpointAddress;
                        bool is_input = epnum & 0x80;