mirror of
https://github.com/GOSTSec/sgminer
synced 2025-01-25 14:04:25 +00:00
Add information for 2nd USB interface on BF1 devices and choose interface 1 for bulk transfers.
This commit is contained in:
parent
8d6126ac85
commit
7deaa91b26
@ -23,7 +23,7 @@ static void bitfury_empty_buffer(struct cgpu_info *bitfury)
|
|||||||
int amount;
|
int amount;
|
||||||
|
|
||||||
do {
|
do {
|
||||||
usb_read(bitfury, buf, 512, &amount, C_BF1_FLUSH);
|
usb_read_ii(bitfury, 1, buf, 512, &amount, C_BF1_FLUSH);
|
||||||
} while (amount);
|
} while (amount);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -48,7 +48,7 @@ static void bitfury_identify(struct cgpu_info *bitfury)
|
|||||||
{
|
{
|
||||||
int amount;
|
int amount;
|
||||||
|
|
||||||
usb_write(bitfury, "L", 1, &amount, C_BF1_IDENTIFY);
|
usb_write_ii(bitfury, 1, "L", 1, &amount, C_BF1_IDENTIFY);
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool bitfury_getinfo(struct cgpu_info *bitfury, struct bitfury_info *info)
|
static bool bitfury_getinfo(struct cgpu_info *bitfury, struct bitfury_info *info)
|
||||||
@ -56,8 +56,8 @@ static bool bitfury_getinfo(struct cgpu_info *bitfury, struct bitfury_info *info
|
|||||||
char buf[512];
|
char buf[512];
|
||||||
int amount;
|
int amount;
|
||||||
|
|
||||||
usb_write(bitfury, "I", 1, &amount, C_BF1_REQINFO);
|
usb_write_ii(bitfury, 1, "I", 1, &amount, C_BF1_REQINFO);
|
||||||
usb_read(bitfury, buf, 14, &amount, C_BF1_GETINFO);
|
usb_read_ii(bitfury, 1, buf, 14, &amount, C_BF1_GETINFO);
|
||||||
if (amount != 14) {
|
if (amount != 14) {
|
||||||
applog(LOG_INFO, "%s %d: Getinfo received %d bytes",
|
applog(LOG_INFO, "%s %d: Getinfo received %d bytes",
|
||||||
bitfury->drv->name, bitfury->device_id, amount);
|
bitfury->drv->name, bitfury->device_id, amount);
|
||||||
@ -78,8 +78,8 @@ static bool bitfury_reset(struct cgpu_info *bitfury)
|
|||||||
char buf[512];
|
char buf[512];
|
||||||
int amount;
|
int amount;
|
||||||
|
|
||||||
usb_write(bitfury, "R", 1, &amount, C_BF1_REQRESET);
|
usb_write_ii(bitfury, 1, "R", 1, &amount, C_BF1_REQRESET);
|
||||||
usb_read_timeout(bitfury, buf, 7, &amount, BF1WAIT, C_BF1_GETRESET);
|
usb_read_ii_timeout(bitfury, 1, buf, 7, &amount, BF1WAIT, C_BF1_GETRESET);
|
||||||
|
|
||||||
if (amount != 7) {
|
if (amount != 7) {
|
||||||
applog(LOG_INFO, "%s %d: Getreset received %d bytes",
|
applog(LOG_INFO, "%s %d: Getreset received %d bytes",
|
||||||
@ -202,7 +202,7 @@ static int64_t bitfury_scanhash(struct thr_info *thr, struct work *work,
|
|||||||
cgtime(&tv_now);
|
cgtime(&tv_now);
|
||||||
ms_diff = 600 - ms_tdiff(&tv_now, &info->tv_start);
|
ms_diff = 600 - ms_tdiff(&tv_now, &info->tv_start);
|
||||||
if (ms_diff > 0) {
|
if (ms_diff > 0) {
|
||||||
usb_read_timeout(bitfury, info->buf, 512, &amount, ms_diff, C_BF1_GETRES);
|
usb_read_ii_timeout(bitfury, 1, info->buf, 512, &amount, ms_diff, C_BF1_GETRES);
|
||||||
info->tot += amount;
|
info->tot += amount;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -215,10 +215,10 @@ static int64_t bitfury_scanhash(struct thr_info *thr, struct work *work,
|
|||||||
ms_diff = BF1WAIT - ms_tdiff(&tv_now, &info->tv_start);
|
ms_diff = BF1WAIT - ms_tdiff(&tv_now, &info->tv_start);
|
||||||
if (unlikely(ms_diff < 10))
|
if (unlikely(ms_diff < 10))
|
||||||
ms_diff = 10;
|
ms_diff = 10;
|
||||||
usb_read_once_timeout(bitfury, info->buf + info->tot, 7, &amount, ms_diff, C_BF1_GETRES);
|
usb_read_ii_once_timeout(bitfury, 1, info->buf + info->tot, 7, &amount, ms_diff, C_BF1_GETRES);
|
||||||
info->tot += amount;
|
info->tot += amount;
|
||||||
while (amount) {
|
while (amount) {
|
||||||
usb_read_once_timeout(bitfury, info->buf + info->tot, 512, &amount, 10, C_BF1_GETRES);
|
usb_read_ii_once_timeout(bitfury, 1, info->buf + info->tot, 512, &amount, 10, C_BF1_GETRES);
|
||||||
info->tot += amount;
|
info->tot += amount;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -226,10 +226,10 @@ static int64_t bitfury_scanhash(struct thr_info *thr, struct work *work,
|
|||||||
goto cascade;
|
goto cascade;
|
||||||
|
|
||||||
/* Send work */
|
/* Send work */
|
||||||
usb_write(bitfury, buf, 45, &amount, C_BF1_REQWORK);
|
usb_write_ii(bitfury, 1, buf, 45, &amount, C_BF1_REQWORK);
|
||||||
cgtime(&info->tv_start);
|
cgtime(&info->tv_start);
|
||||||
/* Get response acknowledging work */
|
/* Get response acknowledging work */
|
||||||
usb_read(bitfury, buf, 7, &amount, C_BF1_GETWORK);
|
usb_read_ii(bitfury, 1, buf, 7, &amount, C_BF1_GETWORK);
|
||||||
|
|
||||||
/* Only happens on startup */
|
/* Only happens on startup */
|
||||||
if (unlikely(!info->prevwork[BF1ARRAY_SIZE]))
|
if (unlikely(!info->prevwork[BF1ARRAY_SIZE]))
|
||||||
|
@ -16,6 +16,7 @@
|
|||||||
#define BF1ARRAY_SIZE 2
|
#define BF1ARRAY_SIZE 2
|
||||||
|
|
||||||
struct bitfury_info {
|
struct bitfury_info {
|
||||||
|
struct cgpu_info *base_cgpu;
|
||||||
uint8_t version;
|
uint8_t version;
|
||||||
char product[8];
|
char product[8];
|
||||||
uint32_t serial;
|
uint32_t serial;
|
||||||
|
@ -131,13 +131,18 @@ static struct usb_intinfo bfl_ints[] = {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef USE_BITFURY
|
#ifdef USE_BITFURY
|
||||||
static struct usb_epinfo bfu_epinfos[] = {
|
static struct usb_epinfo bfu0_epinfos[] = {
|
||||||
|
{ LIBUSB_TRANSFER_TYPE_INTERRUPT, 8, EPI(2), 0 }
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct usb_epinfo bfu1_epinfos[] = {
|
||||||
{ LIBUSB_TRANSFER_TYPE_BULK, 16, EPI(3), 0 },
|
{ LIBUSB_TRANSFER_TYPE_BULK, 16, EPI(3), 0 },
|
||||||
{ LIBUSB_TRANSFER_TYPE_BULK, 16, EPO(4), 0 }
|
{ LIBUSB_TRANSFER_TYPE_BULK, 16, EPO(4), 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct usb_intinfo bfu_ints[] = {
|
static struct usb_intinfo bfu_ints[] = {
|
||||||
USB_EPS(1, bfu_epinfos)
|
USB_EPS(0, bfu0_epinfos),
|
||||||
|
USB_EPS(1, bfu1_epinfos)
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user