From a6f17cbf95eb53dc10776822a71621d5d3af4829 Mon Sep 17 00:00:00 2001 From: Kano Date: Fri, 15 Mar 2013 02:19:42 +1100 Subject: [PATCH 1/3] USB device list - convert some common error numbers to messages --- usbutils.c | 31 +++++++++++++++++++++++++++---- 1 file changed, 27 insertions(+), 4 deletions(-) diff --git a/usbutils.c b/usbutils.c index 151d3cd0..ba3cfc79 100644 --- a/usbutils.c +++ b/usbutils.c @@ -277,6 +277,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 +504,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 +584,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 +604,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; } From 28f515e91d78c8e378ee190894e76e21aaa1ba72 Mon Sep 17 00:00:00 2001 From: Kano Date: Fri, 15 Mar 2013 06:22:22 +1100 Subject: [PATCH 2/3] nDevs required for -n with usb --- cgminer.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/cgminer.c b/cgminer.c index 39bb11a9..7c1ff6a8 100644 --- a/cgminer.c +++ b/cgminer.c @@ -92,9 +92,11 @@ int opt_bench_algo = -1; static const bool opt_time = true; unsigned long long global_hashrate; +#if defined(HAVE_OPENCL) || defined(USE_USBUTILS) +int nDevs; +#endif #ifdef HAVE_OPENCL int opt_dynamic_interval = 7; -int nDevs; int opt_g_threads = 2; int gpu_threads; #ifdef USE_SCRYPT From 2ce62f3d9448c4d77c9549c8448321480809dfe4 Mon Sep 17 00:00:00 2001 From: Kano Date: Fri, 15 Mar 2013 15:47:50 +1100 Subject: [PATCH 3/3] add a dummy ztex to usbutils so cgminer -n lists ztex also --- usbutils.c | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/usbutils.c b/usbutils.c index ba3cfc79..d7073f19 100644 --- a/usbutils.c +++ b/usbutils.c @@ -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[] = { .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 } };