diff --git a/driver-icarus.c b/driver-icarus.c index 8ffe3908..59fd5541 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); } }