all: Switch to libusb-1.0
libusb 0.1 is deprecated. This updates 0xFFFF to use the newer libusb 1.0 API instead.
This commit is contained in:
1 parent
6482e4d2b7
commit
d5028a12ca
7 files changed
+170
-168
No files matched your search
+46
-39
@@ -21,10 +21,10 @@
|
||||
#include <stdint.h>
|
||||
#include <string.h>
|
||||
#include <errno.h>
|
||||
#include <usb.h>
|
||||
|
||||
#include <libusb-1.0/libusb.h>
|
||||
|
||||
#include "global.h"
|
||||
|
||||
#include "cold-flash.h"
|
||||
#include "image.h"
|
||||
#include "usb-device.h"
|
||||
@@ -168,37 +168,41 @@ struct xloader_msg xloader_msg_create(uint32_t type, struct image * image) {
|
||||
|
||||
}
|
||||
|
||||
static int read_asic(usb_dev_handle * udev, uint8_t * asic_buffer, int size, int asic_size) {
|
||||
static int read_asic(libusb_device_handle * udev, uint8_t * asic_buffer, int size, int asic_size) {
|
||||
|
||||
int ret;
|
||||
int ret, transferred;
|
||||
|
||||
printf("Waiting for ASIC ID...\n");
|
||||
ret = usb_bulk_read(udev, READ_DEV, (char *)asic_buffer, size, READ_TIMEOUT);
|
||||
if ( ret != asic_size )
|
||||
ret = libusb_bulk_transfer(udev, READ_DEV, (unsigned char *)asic_buffer, size, &transferred, READ_TIMEOUT);
|
||||
if ( ret < 0 )
|
||||
ERROR_RETURN("Cannot read ASIC ID", -1);
|
||||
if ( transferred != asic_size )
|
||||
ERROR_RETURN("Invalid size of ASIC ID", -1);
|
||||
|
||||
return 0;
|
||||
|
||||
}
|
||||
|
||||
static int send_2nd(usb_dev_handle * udev, struct image * image) {
|
||||
static int send_2nd(libusb_device_handle * udev, struct image * image) {
|
||||
|
||||
uint8_t buffer[1024];
|
||||
uint32_t need, readed;
|
||||
int ret;
|
||||
int ret, transferred;
|
||||
|
||||
printf("Sending OMAP peripheral boot message...\n");
|
||||
ret = usb_bulk_write(udev, WRITE_DEV, (char *)&omap_peripheral_msg, sizeof(omap_peripheral_msg), WRITE_TIMEOUT);
|
||||
SLEEP(5000);
|
||||
if ( ret != sizeof(omap_peripheral_msg) )
|
||||
ret = libusb_bulk_transfer(udev, WRITE_DEV, (unsigned char *)&omap_peripheral_msg, sizeof(omap_peripheral_msg), &transferred, WRITE_TIMEOUT);
|
||||
if ( ret < 0 || transferred != sizeof(omap_peripheral_msg) )
|
||||
ERROR_RETURN("Sending OMAP peripheral boot message failed", -1);
|
||||
|
||||
printf("Sending 2nd X-Loader image size...\n");
|
||||
ret = usb_bulk_write(udev, WRITE_DEV, (char *)&image->size, 4, WRITE_TIMEOUT);
|
||||
SLEEP(5000);
|
||||
if ( ret != 4 )
|
||||
|
||||
printf("Sending 2nd X-Loader image size...\n");
|
||||
ret = libusb_bulk_transfer(udev, WRITE_DEV, (unsigned char *)&image->size, 4, &transferred, WRITE_TIMEOUT);
|
||||
if ( ret < 0 || transferred != 4 )
|
||||
ERROR_RETURN("Sending 2nd X-Loader image size failed", -1);
|
||||
|
||||
SLEEP(5000);
|
||||
|
||||
printf("Sending 2nd X-Loader image...\n");
|
||||
printf_progressbar(0, image->size);
|
||||
image_seek(image, 0);
|
||||
@@ -210,35 +214,37 @@ static int send_2nd(usb_dev_handle * udev, struct image * image) {
|
||||
ret = image_read(image, buffer, need);
|
||||
if ( ret == 0 )
|
||||
break;
|
||||
if ( usb_bulk_write(udev, WRITE_DEV, (char *)buffer, ret, WRITE_TIMEOUT) != ret )
|
||||
if ( libusb_bulk_transfer(udev, WRITE_DEV, (unsigned char *)buffer, ret, &transferred, WRITE_TIMEOUT) < 0 )
|
||||
PRINTF_ERROR_RETURN("Sending 2nd X-Loader image failed", -1);
|
||||
readed += ret;
|
||||
if ( ret != transferred )
|
||||
PRINTF_ERROR_RETURN("Sending 2nd X-Loader image failed (incomplete bulk transfer)", -1);
|
||||
readed += transferred;
|
||||
printf_progressbar(readed, image->size);
|
||||
}
|
||||
SLEEP(50000);
|
||||
|
||||
SLEEP(50000);
|
||||
return 0;
|
||||
|
||||
}
|
||||
|
||||
static int send_secondary(usb_dev_handle * udev, struct image * image) {
|
||||
static int send_secondary(libusb_device_handle * udev, struct image * image) {
|
||||
|
||||
struct xloader_msg init_msg;
|
||||
uint8_t buffer[1024];
|
||||
uint32_t need, readed;
|
||||
int ret;
|
||||
int ret, transferred;
|
||||
|
||||
init_msg = xloader_msg_create(XLOADER_MSG_TYPE_SEND, image);
|
||||
|
||||
printf("Sending X-Loader init message...\n");
|
||||
ret = usb_bulk_write(udev, WRITE_DEV, (char *)&init_msg, sizeof(init_msg), WRITE_TIMEOUT);
|
||||
SLEEP(5000);
|
||||
if ( ret != sizeof(init_msg) )
|
||||
ret = libusb_bulk_transfer(udev, WRITE_DEV, (unsigned char *)&init_msg, sizeof(init_msg), &transferred, WRITE_TIMEOUT);
|
||||
if ( ret < 0 || transferred != sizeof(init_msg) )
|
||||
ERROR_RETURN("Sending X-Loader init message failed", -1);
|
||||
|
||||
printf("Waiting for X-Loader response...\n");
|
||||
ret = usb_bulk_read(udev, READ_DEV, (char *)&buffer, 4, READ_TIMEOUT); /* 4 bytes - dummy value */
|
||||
if ( ret != 4 )
|
||||
SLEEP(5000);
|
||||
ret = libusb_bulk_transfer(udev, READ_DEV, (unsigned char *)&buffer, 4, &transferred, READ_TIMEOUT); /* 4 bytes - dummy value */
|
||||
if ( ret < 0 || transferred != 4 )
|
||||
ERROR_RETURN("No response", -1);
|
||||
|
||||
printf("Sending Secondary image...\n");
|
||||
@@ -252,25 +258,27 @@ static int send_secondary(usb_dev_handle * udev, struct image * image) {
|
||||
ret = image_read(image, buffer, need);
|
||||
if ( ret == 0 )
|
||||
break;
|
||||
if ( usb_bulk_write(udev, WRITE_DEV, (char *)buffer, ret, WRITE_TIMEOUT) != ret )
|
||||
if ( libusb_bulk_transfer(udev, WRITE_DEV, (unsigned char *)buffer, ret, &transferred, WRITE_TIMEOUT) < 0 )
|
||||
PRINTF_ERROR_RETURN("Sending Secondary image failed", -1);
|
||||
readed += ret;
|
||||
if ( ret != transferred )
|
||||
PRINTF_ERROR_RETURN("Sending Secondary image failed (incomplete bulk transfer)", -1);
|
||||
readed += transferred;
|
||||
printf_progressbar(readed, image->size);
|
||||
}
|
||||
SLEEP(5000);
|
||||
|
||||
printf("Waiting for X-Loader response...\n");
|
||||
ret = usb_bulk_read(udev, READ_DEV, (char *)&buffer, 4, READ_TIMEOUT); /* 4 bytes - dummy value */
|
||||
if ( ret != 4 )
|
||||
SLEEP(5000);
|
||||
ret = libusb_bulk_transfer(udev, READ_DEV, (unsigned char *)&buffer, 4, &transferred, READ_TIMEOUT); /* 4 bytes - dummy value */
|
||||
if ( ret < 0 || transferred != 4 )
|
||||
ERROR_RETURN("No response", -1);
|
||||
|
||||
return 0;
|
||||
|
||||
}
|
||||
|
||||
static int ping_timeout(usb_dev_handle * udev) {
|
||||
static int ping_timeout(libusb_device_handle * udev) {
|
||||
|
||||
int ret;
|
||||
int ret, transferred;
|
||||
int pong = 0;
|
||||
int try_ping = 10;
|
||||
|
||||
@@ -280,16 +288,16 @@ static int ping_timeout(usb_dev_handle * udev) {
|
||||
int try_read = 4;
|
||||
|
||||
printf("Sending X-Loader ping message\n");
|
||||
ret = usb_bulk_write(udev, WRITE_DEV, (char *)&ping_msg, sizeof(ping_msg), WRITE_TIMEOUT);
|
||||
if ( ret != sizeof(ping_msg) )
|
||||
ret = libusb_bulk_transfer(udev, WRITE_DEV, (unsigned char *)&ping_msg, sizeof(ping_msg), &transferred, WRITE_TIMEOUT);
|
||||
if ( ret < 0 || transferred != sizeof(ping_msg) )
|
||||
ERROR_RETURN("Sending X-Loader ping message failed", -1);
|
||||
|
||||
printf("Waiting for X-Loader pong response...\n");
|
||||
while ( try_read > 0 ) {
|
||||
|
||||
uint32_t ping_read;
|
||||
ret = usb_bulk_read(udev, READ_DEV, (char *)&ping_read, sizeof(ping_read), READ_TIMEOUT);
|
||||
if ( ret == sizeof(ping_read) ) {
|
||||
ret = libusb_bulk_transfer(udev, READ_DEV, (unsigned char *)&ping_read, sizeof(ping_read), &transferred, READ_TIMEOUT);
|
||||
if ( ret == 0 && transferred == sizeof(ping_read) ) {
|
||||
printf("Got it\n");
|
||||
pong = 1;
|
||||
break;
|
||||
@@ -401,12 +409,11 @@ int cold_flash(struct usb_device_info * dev, struct image * x2nd, struct image *
|
||||
|
||||
int leave_cold_flash(struct usb_device_info * dev) {
|
||||
|
||||
int ret;
|
||||
int ret, transferred;
|
||||
|
||||
printf("Sending OMAP memory boot message...\n");
|
||||
ret = usb_bulk_write(dev->udev, WRITE_DEV, (char *)&omap_memory_msg, sizeof(omap_memory_msg), WRITE_TIMEOUT);
|
||||
SLEEP(5000);
|
||||
if ( ret != sizeof(omap_memory_msg) )
|
||||
ret = libusb_bulk_transfer(dev->udev, WRITE_DEV, (unsigned char *)&omap_memory_msg, sizeof(omap_memory_msg), &transferred, WRITE_TIMEOUT);
|
||||
if ( ret < 0 || transferred != sizeof(omap_memory_msg) )
|
||||
ERROR_RETURN("Sending OMAP memory boot message failed", -1);
|
||||
|
||||
SLEEP(250000);
|
||||
|
||||
Reference in new issue
Block a user