|
34 | 34 |
|
35 | 35 | #include <jtag/interface.h>
|
36 | 36 | #include <jtag/commands.h>
|
37 |
| -#include "usb_common.h" |
| 37 | +#include "libusb_helper.h" |
38 | 38 |
|
39 | 39 | #define VID 0x1781
|
40 | 40 | #define PID 0x0c63
|
@@ -64,7 +64,7 @@ static void usbprog_scan(bool ir_scan, enum scan_type type, uint8_t *buffer, int
|
64 | 64 | #define WRITE_TMS_CHAIN 0x0A
|
65 | 65 |
|
66 | 66 | struct usbprog_jtag {
|
67 |
| - struct usb_dev_handle *usb_handle; |
| 67 | + struct libusb_device_handle *usb_handle; |
68 | 68 | };
|
69 | 69 |
|
70 | 70 | static struct usbprog_jtag *usbprog_jtag_handle;
|
@@ -350,43 +350,43 @@ struct usb_bus *busses;
|
350 | 350 |
|
351 | 351 | struct usbprog_jtag *usbprog_jtag_open(void)
|
352 | 352 | {
|
353 |
| - usb_set_debug(10); |
354 |
| - usb_init(); |
355 |
| - |
356 | 353 | const uint16_t vids[] = { VID, 0 };
|
357 | 354 | 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) |
360 | 358 | return NULL;
|
361 | 359 |
|
362 | 360 | struct usbprog_jtag *tmp = malloc(sizeof(struct usbprog_jtag));
|
363 | 361 | tmp->usb_handle = dev;
|
364 | 362 |
|
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); |
368 | 366 |
|
369 | 367 | return tmp;
|
370 | 368 | }
|
371 | 369 |
|
372 | 370 | #if 0
|
373 | 371 | static void usbprog_jtag_close(struct usbprog_jtag *usbprog_jtag)
|
374 | 372 | {
|
375 |
| - usb_close(usbprog_jtag->usb_handle); |
| 373 | + libusb_close(usbprog_jtag->usb_handle); |
376 | 374 | free(usbprog_jtag);
|
377 | 375 | }
|
378 | 376 | #endif
|
379 | 377 |
|
380 | 378 | static unsigned char usbprog_jtag_message(struct usbprog_jtag *usbprog_jtag, char *msg, int msglen)
|
381 | 379 | {
|
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); |
383 | 383 | if ((msg[0] == 2) || (msg[0] == 1) || (msg[0] == 4) || (msg[0] == 0) ||
|
384 | 384 | (msg[0] == 6) || (msg[0] == 0x0A) || (msg[0] == 9))
|
385 | 385 | return 1;
|
386 |
| - if (res == msglen) { |
| 386 | + if (res == ERROR_OK && transferred == msglen) { |
387 | 387 | /* 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) |
390 | 390 | return (unsigned char)msg[1];
|
391 | 391 | else
|
392 | 392 | return -1;
|
@@ -428,11 +428,13 @@ static void usbprog_jtag_write_and_read(struct usbprog_jtag *usbprog_jtag, char
|
428 | 428 | bufindex++;
|
429 | 429 | }
|
430 | 430 |
|
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) { |
432 | 434 | /* LOG_INFO("HALLLLOOO2 %i",(int)tmp[0]); */
|
433 | 435 | usleep(1);
|
434 | 436 | 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) { |
436 | 438 | timeout++;
|
437 | 439 | if (timeout > 10)
|
438 | 440 | break;
|
@@ -469,12 +471,13 @@ static void usbprog_jtag_read_tdo(struct usbprog_jtag *usbprog_jtag, char *buffe
|
469 | 471 | tmp[1] = (char)(send_bits >> 8); /* high */
|
470 | 472 | tmp[2] = (char)(send_bits); /* low */
|
471 | 473 |
|
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); |
473 | 476 |
|
474 | 477 | /* LOG_INFO("HALLLLOOO3 %i",(int)tmp[0]); */
|
475 | 478 | int timeout = 0;
|
476 | 479 | 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) { |
478 | 481 | timeout++;
|
479 | 482 | if (timeout > 10)
|
480 | 483 | break;
|
@@ -513,7 +516,8 @@ static void usbprog_jtag_write_tdi(struct usbprog_jtag *usbprog_jtag, char *buff
|
513 | 516 | tmp[3 + i] = buffer[bufindex];
|
514 | 517 | bufindex++;
|
515 | 518 | }
|
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); |
517 | 521 | }
|
518 | 522 | }
|
519 | 523 |
|
@@ -582,15 +586,15 @@ static void usbprog_jtag_tms_collect(char tms_scan)
|
582 | 586 |
|
583 | 587 | static void usbprog_jtag_tms_send(struct usbprog_jtag *usbprog_jtag)
|
584 | 588 | {
|
585 |
| - int i; |
586 | 589 | /* LOG_INFO("TMS SEND"); */
|
587 | 590 | if (tms_chain_index > 0) {
|
588 | 591 | char tmp[tms_chain_index + 2];
|
589 | 592 | tmp[0] = WRITE_TMS_CHAIN;
|
590 | 593 | 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++) |
592 | 595 | 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); |
594 | 598 | tms_chain_index = 0;
|
595 | 599 | }
|
596 | 600 | }
|
|
0 commit comments