Skip to content

Commit 5c53e2c

Browse files
committed
drivers/usbprog: switch to libusb1
Convert the driver from libusb0 to libusb1. Change-Id: I3f334f2d02515d612097955e714910a587169990 Signed-off-by: Antonio Borneo <[email protected]> Reviewed-on: http://openocd.zylin.com/5992 Tested-by: jenkins
1 parent bc7d36d commit 5c53e2c

File tree

2 files changed

+29
-25
lines changed

2 files changed

+29
-25
lines changed

Diff for: configure.ac

+2-2
Original file line numberDiff line numberDiff line change
@@ -123,11 +123,11 @@ m4_define([USB1_ADAPTERS],
123123
[[osbdm], [OSBDM (JTAG only) Programmer], [OSBDM]],
124124
[[opendous], [eStick/opendous JTAG Programmer], [OPENDOUS]],
125125
[[rlink], [Raisonance RLink JTAG Programmer], [RLINK]],
126+
[[usbprog], [USBProg JTAG Programmer], [USBPROG]],
126127
[[aice], [Andes JTAG Programmer], [AICE]]])
127128

128129
m4_define([USB0_ADAPTERS],
129-
[[[usbprog], [USBProg JTAG Programmer], [USBPROG]],
130-
[[armjtagew], [Olimex ARM-JTAG-EW Programmer], [ARMJTAGEW]]])
130+
[[[armjtagew], [Olimex ARM-JTAG-EW Programmer], [ARMJTAGEW]]])
131131

132132
m4_define([HIDAPI_ADAPTERS],
133133
[[[cmsis_dap], [CMSIS-DAP Compliant Debugger], [CMSIS_DAP_HID]],

Diff for: src/jtag/drivers/usbprog.c

+27-23
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@
3434

3535
#include <jtag/interface.h>
3636
#include <jtag/commands.h>
37-
#include "usb_common.h"
37+
#include "libusb_helper.h"
3838

3939
#define VID 0x1781
4040
#define PID 0x0c63
@@ -64,7 +64,7 @@ static void usbprog_scan(bool ir_scan, enum scan_type type, uint8_t *buffer, int
6464
#define WRITE_TMS_CHAIN 0x0A
6565

6666
struct usbprog_jtag {
67-
struct usb_dev_handle *usb_handle;
67+
struct libusb_device_handle *usb_handle;
6868
};
6969

7070
static struct usbprog_jtag *usbprog_jtag_handle;
@@ -350,43 +350,43 @@ struct usb_bus *busses;
350350

351351
struct usbprog_jtag *usbprog_jtag_open(void)
352352
{
353-
usb_set_debug(10);
354-
usb_init();
355-
356353
const uint16_t vids[] = { VID, 0 };
357354
const uint16_t pids[] = { PID, 0 };
358-
struct usb_dev_handle *dev;
359-
if (jtag_usb_open(vids, pids, &dev) != ERROR_OK)
355+
struct libusb_device_handle *dev;
356+
357+
if (jtag_libusb_open(vids, pids, NULL, &dev, NULL) != ERROR_OK)
360358
return NULL;
361359

362360
struct usbprog_jtag *tmp = malloc(sizeof(struct usbprog_jtag));
363361
tmp->usb_handle = dev;
364362

365-
usb_set_configuration(dev, 1);
366-
usb_claim_interface(dev, 0);
367-
usb_set_altinterface(dev, 0);
363+
libusb_set_configuration(dev, 1);
364+
libusb_claim_interface(dev, 0);
365+
libusb_set_interface_alt_setting(dev, 0, 0);
368366

369367
return tmp;
370368
}
371369

372370
#if 0
373371
static void usbprog_jtag_close(struct usbprog_jtag *usbprog_jtag)
374372
{
375-
usb_close(usbprog_jtag->usb_handle);
373+
libusb_close(usbprog_jtag->usb_handle);
376374
free(usbprog_jtag);
377375
}
378376
#endif
379377

380378
static unsigned char usbprog_jtag_message(struct usbprog_jtag *usbprog_jtag, char *msg, int msglen)
381379
{
382-
int res = usb_bulk_write(usbprog_jtag->usb_handle, 3, msg, msglen, 100);
380+
int transferred;
381+
382+
int res = jtag_libusb_bulk_write(usbprog_jtag->usb_handle, 3, msg, msglen, 100, &transferred);
383383
if ((msg[0] == 2) || (msg[0] == 1) || (msg[0] == 4) || (msg[0] == 0) ||
384384
(msg[0] == 6) || (msg[0] == 0x0A) || (msg[0] == 9))
385385
return 1;
386-
if (res == msglen) {
386+
if (res == ERROR_OK && transferred == msglen) {
387387
/* LOG_INFO("HALLLLOOO %i",(int)msg[0]); */
388-
res = usb_bulk_read(usbprog_jtag->usb_handle, 0x82, msg, 2, 100);
389-
if (res > 0)
388+
res = jtag_libusb_bulk_read(usbprog_jtag->usb_handle, 0x82, msg, 2, 100, &transferred);
389+
if (res == ERROR_OK && transferred > 0)
390390
return (unsigned char)msg[1];
391391
else
392392
return -1;
@@ -428,11 +428,13 @@ static void usbprog_jtag_write_and_read(struct usbprog_jtag *usbprog_jtag, char
428428
bufindex++;
429429
}
430430

431-
if (usb_bulk_write(usbprog_jtag->usb_handle, 3, tmp, 64, 1000) == 64) {
431+
int transferred;
432+
int res = jtag_libusb_bulk_write(usbprog_jtag->usb_handle, 3, tmp, 64, 1000, &transferred);
433+
if (res == ERROR_OK && transferred == 64) {
432434
/* LOG_INFO("HALLLLOOO2 %i",(int)tmp[0]); */
433435
usleep(1);
434436
int timeout = 0;
435-
while (usb_bulk_read(usbprog_jtag->usb_handle, 0x82, tmp, 64, 1000) < 1) {
437+
while (jtag_libusb_bulk_read(usbprog_jtag->usb_handle, 0x82, tmp, 64, 1000, &transferred) != ERROR_OK) {
436438
timeout++;
437439
if (timeout > 10)
438440
break;
@@ -469,12 +471,13 @@ static void usbprog_jtag_read_tdo(struct usbprog_jtag *usbprog_jtag, char *buffe
469471
tmp[1] = (char)(send_bits >> 8); /* high */
470472
tmp[2] = (char)(send_bits); /* low */
471473

472-
usb_bulk_write(usbprog_jtag->usb_handle, 3, tmp, 3, 1000);
474+
int transferred;
475+
jtag_libusb_bulk_write(usbprog_jtag->usb_handle, 3, tmp, 3, 1000, &transferred);
473476

474477
/* LOG_INFO("HALLLLOOO3 %i",(int)tmp[0]); */
475478
int timeout = 0;
476479
usleep(1);
477-
while (usb_bulk_read(usbprog_jtag->usb_handle, 0x82, tmp, 64, 10) < 1) {
480+
while (jtag_libusb_bulk_read(usbprog_jtag->usb_handle, 0x82, tmp, 64, 10, &transferred) != ERROR_OK) {
478481
timeout++;
479482
if (timeout > 10)
480483
break;
@@ -513,7 +516,8 @@ static void usbprog_jtag_write_tdi(struct usbprog_jtag *usbprog_jtag, char *buff
513516
tmp[3 + i] = buffer[bufindex];
514517
bufindex++;
515518
}
516-
usb_bulk_write(usbprog_jtag->usb_handle, 3, tmp, 64, 1000);
519+
int transferred;
520+
jtag_libusb_bulk_write(usbprog_jtag->usb_handle, 3, tmp, 64, 1000, &transferred);
517521
}
518522
}
519523

@@ -582,15 +586,15 @@ static void usbprog_jtag_tms_collect(char tms_scan)
582586

583587
static void usbprog_jtag_tms_send(struct usbprog_jtag *usbprog_jtag)
584588
{
585-
int i;
586589
/* LOG_INFO("TMS SEND"); */
587590
if (tms_chain_index > 0) {
588591
char tmp[tms_chain_index + 2];
589592
tmp[0] = WRITE_TMS_CHAIN;
590593
tmp[1] = (char)(tms_chain_index);
591-
for (i = 0; i < tms_chain_index + 1; i++)
594+
for (int i = 0; i < tms_chain_index + 1; i++)
592595
tmp[2 + i] = tms_chain[i];
593-
usb_bulk_write(usbprog_jtag->usb_handle, 3, tmp, tms_chain_index + 2, 1000);
596+
int transferred;
597+
jtag_libusb_bulk_write(usbprog_jtag->usb_handle, 3, tmp, tms_chain_index + 2, 1000, &transferred);
594598
tms_chain_index = 0;
595599
}
596600
}

0 commit comments

Comments
 (0)