Commit f6e475d4fbb789b8870815d6e5b8238e3a2b2f1c

Con Kolivas 2013-09-25T00:23:50

Add complete close sequence to bf1 as it happens on serial.

diff --git a/driver-bitfury.c b/driver-bitfury.c
index c039e7a..356a69d 100644
--- a/driver-bitfury.c
+++ b/driver-bitfury.c
@@ -14,26 +14,30 @@
 
 struct device_drv bitfury_drv;
 
+static void bitfury_empty_buffer(struct cgpu_info *bitfury)
+{
+	char buf[512];
+	int amount;
+
+	do {
+		usb_read(bitfury, buf, 512, &amount, C_PING);
+	} while (amount);
+}
+
 static void bitfury_open(struct cgpu_info *bitfury)
 {
 	/* Magic open sequence */
 	usb_transfer(bitfury, 0x21, 0x22, 0x0003, 0, C_BFO_OPEN);
+	bitfury_empty_buffer(bitfury);
 }
 
 static void bitfury_close(struct cgpu_info *bitfury)
 {
 	/* Magic close sequence */
 	usb_transfer(bitfury, 0x21, 0x22, 0, 0, C_BFO_CLOSE);
-}
-
-static void bitfury_empty_buffer(struct cgpu_info *bitfury)
-{
-	char buf[512];
-	int amount;
-
-	do {
-		usb_read(bitfury, buf, 512, &amount, C_PING);
-	} while (amount);
+	bitfury_empty_buffer(bitfury);
+	usb_transfer(bitfury, 0x23, 0x08, 0x9053, 1, C_BFO_CLOSE);
+	bitfury_empty_buffer(bitfury);
 }
 
 static void bitfury_identify(struct cgpu_info *bitfury)
@@ -64,7 +68,6 @@ static bool bitfury_detect_one(struct libusb_device *dev, struct usb_find_device
 		quit(1, "Failed to calloc info in bitfury_detect_one");
 	bitfury->device_data = info;
 
-	bitfury_empty_buffer(bitfury);
 	usb_buffer_enable(bitfury);
 
 	bitfury_open(bitfury);