|
|
|
@ -33,8 +33,12 @@
@@ -33,8 +33,12 @@
|
|
|
|
|
#define DRV_MODMINER 3 |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
#ifdef USE_ZTEX |
|
|
|
|
#define DRV_ZTEX 4 |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
#ifdef USE_ICARUS |
|
|
|
|
#define DRV_ICARUS 4 |
|
|
|
|
#define DRV_ICARUS 5 |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
#define DRV_LAST -1 |
|
|
|
@ -124,6 +128,21 @@ static struct usb_find_devices find_dev[] = {
@@ -124,6 +128,21 @@ static struct usb_find_devices find_dev[] = {
|
|
|
|
|
.timeout = MODMINER_TIMEOUT_MS, |
|
|
|
|
.epcount = ARRAY_SIZE(mmq_eps), |
|
|
|
|
.eps = mmq_eps }, |
|
|
|
|
#endif |
|
|
|
|
#ifdef USE_ZTEX |
|
|
|
|
// This is here so cgminer -n shows them
|
|
|
|
|
// the ztex driver (as at 201303) doesn't use usbutils
|
|
|
|
|
{ |
|
|
|
|
.drv = DRV_ZTEX, |
|
|
|
|
.name = "ZTX", |
|
|
|
|
.idVendor = 0x221a, |
|
|
|
|
.idProduct = 0x0100, |
|
|
|
|
.kernel = 0, |
|
|
|
|
.config = 1, |
|
|
|
|
.interface = 1, |
|
|
|
|
.timeout = 100, |
|
|
|
|
.epcount = 0, |
|
|
|
|
.eps = NULL }, |
|
|
|
|
#endif |
|
|
|
|
{ DRV_LAST, NULL, 0, 0, 0, 0, 0, 0, 0, NULL } |
|
|
|
|
}; |
|
|
|
@ -277,6 +296,29 @@ static const char *BULK = "Bulk";
@@ -277,6 +296,29 @@ static const char *BULK = "Bulk";
|
|
|
|
|
static const char *INTERRUPT = "Interrupt"; |
|
|
|
|
static const char *UNKNOWN = "Unknown"; |
|
|
|
|
|
|
|
|
|
static const char *err_io_str = " IO Error"; |
|
|
|
|
static const char *err_access_str = " Access Denied-a"; |
|
|
|
|
static const char *err_timeout_str = " Reply Timeout"; |
|
|
|
|
static const char *err_pipe_str = " Access denied-p"; |
|
|
|
|
static const char *err_other_str = " Access denied-o"; |
|
|
|
|
|
|
|
|
|
static const char *usberrstr(int err) |
|
|
|
|
{ |
|
|
|
|
switch (err) { |
|
|
|
|
case LIBUSB_ERROR_IO: |
|
|
|
|
return err_io_str; |
|
|
|
|
case LIBUSB_ERROR_ACCESS: |
|
|
|
|
return err_access_str; |
|
|
|
|
case LIBUSB_ERROR_TIMEOUT: |
|
|
|
|
return err_timeout_str; |
|
|
|
|
case LIBUSB_ERROR_PIPE: |
|
|
|
|
return err_pipe_str; |
|
|
|
|
case LIBUSB_ERROR_OTHER: |
|
|
|
|
return err_other_str; |
|
|
|
|
} |
|
|
|
|
return BLANK; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static const char *destype(uint8_t bDescriptorType) |
|
|
|
|
{ |
|
|
|
|
switch (bDescriptorType) { |
|
|
|
@ -481,11 +523,11 @@ static void usb_full(ssize_t *count, libusb_device *dev, char **buf, size_t *off
@@ -481,11 +523,11 @@ static void usb_full(ssize_t *count, libusb_device *dev, char **buf, size_t *off
|
|
|
|
|
|
|
|
|
|
err = libusb_get_string_descriptor_ascii(handle, desc.iManufacturer, man, STRBUFLEN); |
|
|
|
|
if (err < 0) |
|
|
|
|
sprintf((char *)man, "** err(%d)", err); |
|
|
|
|
sprintf((char *)man, "** err(%d)%s", err, usberrstr(err)); |
|
|
|
|
|
|
|
|
|
err = libusb_get_string_descriptor_ascii(handle, desc.iProduct, prod, STRBUFLEN); |
|
|
|
|
if (err < 0) |
|
|
|
|
sprintf((char *)prod, "** err(%d)", err); |
|
|
|
|
sprintf((char *)prod, "** err(%d)%s", err, usberrstr(err)); |
|
|
|
|
|
|
|
|
|
if (level == 0) { |
|
|
|
|
libusb_close(handle); |
|
|
|
@ -561,7 +603,7 @@ static void usb_full(ssize_t *count, libusb_device *dev, char **buf, size_t *off
@@ -561,7 +603,7 @@ static void usb_full(ssize_t *count, libusb_device *dev, char **buf, size_t *off
|
|
|
|
|
|
|
|
|
|
err = libusb_get_string_descriptor_ascii(handle, desc.iSerialNumber, ser, STRBUFLEN); |
|
|
|
|
if (err < 0) |
|
|
|
|
sprintf((char *)ser, "** err(%d)", err); |
|
|
|
|
sprintf((char *)ser, "** err(%d)%s", err, usberrstr(err)); |
|
|
|
|
|
|
|
|
|
sprintf(tmp, EOL " dev %d: More Info:" EOL "\tManufacturer: '%s'" EOL |
|
|
|
|
"\tProduct: '%s'" EOL "\tSerial '%s'", |
|
|
|
@ -581,7 +623,7 @@ void usb_all(int level)
@@ -581,7 +623,7 @@ void usb_all(int level)
|
|
|
|
|
|
|
|
|
|
count = libusb_get_device_list(NULL, &list); |
|
|
|
|
if (count < 0) { |
|
|
|
|
applog(LOG_ERR, "USB all: failed, err %d", (int)count); |
|
|
|
|
applog(LOG_ERR, "USB all: failed, err %d%s", (int)count, usberrstr((int)count)); |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|