Abstract out flushing of interrupt reads in BF1 devices.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
diff --git a/driver-bitfury.c b/driver-bitfury.c
index 18a57b6..23a0274 100644
--- a/driver-bitfury.c
+++ b/driver-bitfury.c
@@ -27,12 +27,17 @@ static void bitfury_empty_buffer(struct cgpu_info *bitfury)
} while (amount);
}
-static void bitfury_open(struct cgpu_info *bitfury)
+static void bitfury_empty_intbuf(struct cgpu_info *bitfury)
{
char buf[8];
int amount;
usb_read_ii(bitfury, 0, buf, 8, &amount, C_BF1_IFLUSH);
+}
+
+static void bitfury_open(struct cgpu_info *bitfury)
+{
+ bitfury_empty_intbuf(bitfury);
/* Magic open sequence */
usb_transfer(bitfury, 0x21, 0x22, 0x0003, 0, C_BF1_OPEN);
bitfury_empty_buffer(bitfury);
@@ -40,13 +45,10 @@ static void bitfury_open(struct cgpu_info *bitfury)
static void bitfury_close(struct cgpu_info *bitfury)
{
- char buf[8];
- int amount;
-
bitfury_empty_buffer(bitfury);
/* Magic close sequence */
usb_transfer(bitfury, 0x21, 0x22, 0, 0, C_BF1_CLOSE);
- usb_read_ii(bitfury, 0, buf, 8, &amount, C_BF1_IFLUSH);
+ bitfury_empty_intbuf(bitfury);
bitfury_empty_buffer(bitfury);
usb_transfer(bitfury, 0x23, 0x08, 0x9053, 1, C_BF1_CLOSE);
bitfury_empty_buffer(bitfury);