Commit f9476743c2c4d30490f8bfb56eb16c8b4c9eaead

Kano 2013-09-27T18:48:41

icarus ensure all cmr interfaces are initialised properly

diff --git a/driver-icarus.c b/driver-icarus.c
index 8ffe390..59fd554 100644
--- a/driver-icarus.c
+++ b/driver-icarus.c
@@ -297,7 +297,7 @@ static void icarus_initialise(struct cgpu_info *icarus, int baud)
 				return;
 
 			// Latency
-			usb_ftdi_set_latency(icarus);
+			_usb_ftdi_set_latency(icarus, info->intinfo);
 
 			if (icarus->usbinfo.nodev)
 				return;
@@ -890,13 +890,6 @@ static bool icarus_detect_one(struct libusb_device *dev, struct usb_find_devices
 
 			cgtmp->usbinfo.usbstat = USB_NOSTAT;
 
-			if (!add_cgpu(cgtmp)) {
-				usb_uninit(cgtmp);
-				continue;
-			}
-
-			update_usb_stats(cgtmp);
-
 			intmp = (struct ICARUS_INFO *)malloc(sizeof(struct ICARUS_INFO));
 			if (unlikely(!intmp))
 				quit(1, "Failed2 to malloc ICARUS_INFO");
@@ -907,6 +900,16 @@ static bool icarus_detect_one(struct libusb_device *dev, struct usb_find_devices
 			memcpy(intmp, info, sizeof(struct ICARUS_INFO));
 
 			intmp->intinfo = i;
+
+			icarus_initialise(cgtmp, baud);
+
+			if (!add_cgpu(cgtmp)) {
+				usb_uninit(cgtmp);
+				free(intmp);
+				continue;
+			}
+
+			update_usb_stats(cgtmp);
 		}
 	}