drivers/usbprog: switch to libusb1
Convert the driver from libusb0 to libusb1. Change-Id: I3f334f2d02515d612097955e714910a587169990 Signed-off-by: Antonio Borneo <borneo.antonio@gmail.com> Reviewed-on: http://openocd.zylin.com/5992 Tested-by: jenkins
This commit is contained in:
parent
bc7d36d886
commit
5c53e2cd41
|
@ -123,11 +123,11 @@ m4_define([USB1_ADAPTERS],
|
||||||
[[osbdm], [OSBDM (JTAG only) Programmer], [OSBDM]],
|
[[osbdm], [OSBDM (JTAG only) Programmer], [OSBDM]],
|
||||||
[[opendous], [eStick/opendous JTAG Programmer], [OPENDOUS]],
|
[[opendous], [eStick/opendous JTAG Programmer], [OPENDOUS]],
|
||||||
[[rlink], [Raisonance RLink JTAG Programmer], [RLINK]],
|
[[rlink], [Raisonance RLink JTAG Programmer], [RLINK]],
|
||||||
|
[[usbprog], [USBProg JTAG Programmer], [USBPROG]],
|
||||||
[[aice], [Andes JTAG Programmer], [AICE]]])
|
[[aice], [Andes JTAG Programmer], [AICE]]])
|
||||||
|
|
||||||
m4_define([USB0_ADAPTERS],
|
m4_define([USB0_ADAPTERS],
|
||||||
[[[usbprog], [USBProg JTAG Programmer], [USBPROG]],
|
[[[armjtagew], [Olimex ARM-JTAG-EW Programmer], [ARMJTAGEW]]])
|
||||||
[[armjtagew], [Olimex ARM-JTAG-EW Programmer], [ARMJTAGEW]]])
|
|
||||||
|
|
||||||
m4_define([HIDAPI_ADAPTERS],
|
m4_define([HIDAPI_ADAPTERS],
|
||||||
[[[cmsis_dap], [CMSIS-DAP Compliant Debugger], [CMSIS_DAP_HID]],
|
[[[cmsis_dap], [CMSIS-DAP Compliant Debugger], [CMSIS_DAP_HID]],
|
||||||
|
|
|
@ -34,7 +34,7 @@
|
||||||
|
|
||||||
#include <jtag/interface.h>
|
#include <jtag/interface.h>
|
||||||
#include <jtag/commands.h>
|
#include <jtag/commands.h>
|
||||||
#include "usb_common.h"
|
#include "libusb_helper.h"
|
||||||
|
|
||||||
#define VID 0x1781
|
#define VID 0x1781
|
||||||
#define PID 0x0c63
|
#define PID 0x0c63
|
||||||
|
@ -64,7 +64,7 @@ static void usbprog_scan(bool ir_scan, enum scan_type type, uint8_t *buffer, int
|
||||||
#define WRITE_TMS_CHAIN 0x0A
|
#define WRITE_TMS_CHAIN 0x0A
|
||||||
|
|
||||||
struct usbprog_jtag {
|
struct usbprog_jtag {
|
||||||
struct usb_dev_handle *usb_handle;
|
struct libusb_device_handle *usb_handle;
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct usbprog_jtag *usbprog_jtag_handle;
|
static struct usbprog_jtag *usbprog_jtag_handle;
|
||||||
|
@ -350,21 +350,19 @@ struct usb_bus *busses;
|
||||||
|
|
||||||
struct usbprog_jtag *usbprog_jtag_open(void)
|
struct usbprog_jtag *usbprog_jtag_open(void)
|
||||||
{
|
{
|
||||||
usb_set_debug(10);
|
|
||||||
usb_init();
|
|
||||||
|
|
||||||
const uint16_t vids[] = { VID, 0 };
|
const uint16_t vids[] = { VID, 0 };
|
||||||
const uint16_t pids[] = { PID, 0 };
|
const uint16_t pids[] = { PID, 0 };
|
||||||
struct usb_dev_handle *dev;
|
struct libusb_device_handle *dev;
|
||||||
if (jtag_usb_open(vids, pids, &dev) != ERROR_OK)
|
|
||||||
|
if (jtag_libusb_open(vids, pids, NULL, &dev, NULL) != ERROR_OK)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
struct usbprog_jtag *tmp = malloc(sizeof(struct usbprog_jtag));
|
struct usbprog_jtag *tmp = malloc(sizeof(struct usbprog_jtag));
|
||||||
tmp->usb_handle = dev;
|
tmp->usb_handle = dev;
|
||||||
|
|
||||||
usb_set_configuration(dev, 1);
|
libusb_set_configuration(dev, 1);
|
||||||
usb_claim_interface(dev, 0);
|
libusb_claim_interface(dev, 0);
|
||||||
usb_set_altinterface(dev, 0);
|
libusb_set_interface_alt_setting(dev, 0, 0);
|
||||||
|
|
||||||
return tmp;
|
return tmp;
|
||||||
}
|
}
|
||||||
|
@ -372,21 +370,23 @@ struct usbprog_jtag *usbprog_jtag_open(void)
|
||||||
#if 0
|
#if 0
|
||||||
static void usbprog_jtag_close(struct usbprog_jtag *usbprog_jtag)
|
static void usbprog_jtag_close(struct usbprog_jtag *usbprog_jtag)
|
||||||
{
|
{
|
||||||
usb_close(usbprog_jtag->usb_handle);
|
libusb_close(usbprog_jtag->usb_handle);
|
||||||
free(usbprog_jtag);
|
free(usbprog_jtag);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static unsigned char usbprog_jtag_message(struct usbprog_jtag *usbprog_jtag, char *msg, int msglen)
|
static unsigned char usbprog_jtag_message(struct usbprog_jtag *usbprog_jtag, char *msg, int msglen)
|
||||||
{
|
{
|
||||||
int res = usb_bulk_write(usbprog_jtag->usb_handle, 3, msg, msglen, 100);
|
int transferred;
|
||||||
|
|
||||||
|
int res = jtag_libusb_bulk_write(usbprog_jtag->usb_handle, 3, msg, msglen, 100, &transferred);
|
||||||
if ((msg[0] == 2) || (msg[0] == 1) || (msg[0] == 4) || (msg[0] == 0) ||
|
if ((msg[0] == 2) || (msg[0] == 1) || (msg[0] == 4) || (msg[0] == 0) ||
|
||||||
(msg[0] == 6) || (msg[0] == 0x0A) || (msg[0] == 9))
|
(msg[0] == 6) || (msg[0] == 0x0A) || (msg[0] == 9))
|
||||||
return 1;
|
return 1;
|
||||||
if (res == msglen) {
|
if (res == ERROR_OK && transferred == msglen) {
|
||||||
/* LOG_INFO("HALLLLOOO %i",(int)msg[0]); */
|
/* LOG_INFO("HALLLLOOO %i",(int)msg[0]); */
|
||||||
res = usb_bulk_read(usbprog_jtag->usb_handle, 0x82, msg, 2, 100);
|
res = jtag_libusb_bulk_read(usbprog_jtag->usb_handle, 0x82, msg, 2, 100, &transferred);
|
||||||
if (res > 0)
|
if (res == ERROR_OK && transferred > 0)
|
||||||
return (unsigned char)msg[1];
|
return (unsigned char)msg[1];
|
||||||
else
|
else
|
||||||
return -1;
|
return -1;
|
||||||
|
@ -428,11 +428,13 @@ static void usbprog_jtag_write_and_read(struct usbprog_jtag *usbprog_jtag, char
|
||||||
bufindex++;
|
bufindex++;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (usb_bulk_write(usbprog_jtag->usb_handle, 3, tmp, 64, 1000) == 64) {
|
int transferred;
|
||||||
|
int res = jtag_libusb_bulk_write(usbprog_jtag->usb_handle, 3, tmp, 64, 1000, &transferred);
|
||||||
|
if (res == ERROR_OK && transferred == 64) {
|
||||||
/* LOG_INFO("HALLLLOOO2 %i",(int)tmp[0]); */
|
/* LOG_INFO("HALLLLOOO2 %i",(int)tmp[0]); */
|
||||||
usleep(1);
|
usleep(1);
|
||||||
int timeout = 0;
|
int timeout = 0;
|
||||||
while (usb_bulk_read(usbprog_jtag->usb_handle, 0x82, tmp, 64, 1000) < 1) {
|
while (jtag_libusb_bulk_read(usbprog_jtag->usb_handle, 0x82, tmp, 64, 1000, &transferred) != ERROR_OK) {
|
||||||
timeout++;
|
timeout++;
|
||||||
if (timeout > 10)
|
if (timeout > 10)
|
||||||
break;
|
break;
|
||||||
|
@ -469,12 +471,13 @@ static void usbprog_jtag_read_tdo(struct usbprog_jtag *usbprog_jtag, char *buffe
|
||||||
tmp[1] = (char)(send_bits >> 8); /* high */
|
tmp[1] = (char)(send_bits >> 8); /* high */
|
||||||
tmp[2] = (char)(send_bits); /* low */
|
tmp[2] = (char)(send_bits); /* low */
|
||||||
|
|
||||||
usb_bulk_write(usbprog_jtag->usb_handle, 3, tmp, 3, 1000);
|
int transferred;
|
||||||
|
jtag_libusb_bulk_write(usbprog_jtag->usb_handle, 3, tmp, 3, 1000, &transferred);
|
||||||
|
|
||||||
/* LOG_INFO("HALLLLOOO3 %i",(int)tmp[0]); */
|
/* LOG_INFO("HALLLLOOO3 %i",(int)tmp[0]); */
|
||||||
int timeout = 0;
|
int timeout = 0;
|
||||||
usleep(1);
|
usleep(1);
|
||||||
while (usb_bulk_read(usbprog_jtag->usb_handle, 0x82, tmp, 64, 10) < 1) {
|
while (jtag_libusb_bulk_read(usbprog_jtag->usb_handle, 0x82, tmp, 64, 10, &transferred) != ERROR_OK) {
|
||||||
timeout++;
|
timeout++;
|
||||||
if (timeout > 10)
|
if (timeout > 10)
|
||||||
break;
|
break;
|
||||||
|
@ -513,7 +516,8 @@ static void usbprog_jtag_write_tdi(struct usbprog_jtag *usbprog_jtag, char *buff
|
||||||
tmp[3 + i] = buffer[bufindex];
|
tmp[3 + i] = buffer[bufindex];
|
||||||
bufindex++;
|
bufindex++;
|
||||||
}
|
}
|
||||||
usb_bulk_write(usbprog_jtag->usb_handle, 3, tmp, 64, 1000);
|
int transferred;
|
||||||
|
jtag_libusb_bulk_write(usbprog_jtag->usb_handle, 3, tmp, 64, 1000, &transferred);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -582,15 +586,15 @@ static void usbprog_jtag_tms_collect(char tms_scan)
|
||||||
|
|
||||||
static void usbprog_jtag_tms_send(struct usbprog_jtag *usbprog_jtag)
|
static void usbprog_jtag_tms_send(struct usbprog_jtag *usbprog_jtag)
|
||||||
{
|
{
|
||||||
int i;
|
|
||||||
/* LOG_INFO("TMS SEND"); */
|
/* LOG_INFO("TMS SEND"); */
|
||||||
if (tms_chain_index > 0) {
|
if (tms_chain_index > 0) {
|
||||||
char tmp[tms_chain_index + 2];
|
char tmp[tms_chain_index + 2];
|
||||||
tmp[0] = WRITE_TMS_CHAIN;
|
tmp[0] = WRITE_TMS_CHAIN;
|
||||||
tmp[1] = (char)(tms_chain_index);
|
tmp[1] = (char)(tms_chain_index);
|
||||||
for (i = 0; i < tms_chain_index + 1; i++)
|
for (int i = 0; i < tms_chain_index + 1; i++)
|
||||||
tmp[2 + i] = tms_chain[i];
|
tmp[2 + i] = tms_chain[i];
|
||||||
usb_bulk_write(usbprog_jtag->usb_handle, 3, tmp, tms_chain_index + 2, 1000);
|
int transferred;
|
||||||
|
jtag_libusb_bulk_write(usbprog_jtag->usb_handle, 3, tmp, tms_chain_index + 2, 1000, &transferred);
|
||||||
tms_chain_index = 0;
|
tms_chain_index = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue