|
|
@ -162,7 +162,7 @@ static bool hashfast_get_header(struct cgpu_info *hashfast, struct hf_header *h, |
|
|
|
return false; |
|
|
|
return false; |
|
|
|
|
|
|
|
|
|
|
|
ret = usb_read_timeout(hashfast, buf + ofs, len, &amount, 10, C_HF_GETHEADER); |
|
|
|
ret = usb_read_timeout(hashfast, buf + ofs, len, &amount, 10, C_HF_GETHEADER); |
|
|
|
if (unlikely(ret)) |
|
|
|
if (unlikely(ret && ret != LIBUSB_ERROR_TIMEOUT)) |
|
|
|
return false; |
|
|
|
return false; |
|
|
|
ofs += amount; |
|
|
|
ofs += amount; |
|
|
|
header = memchr(buf, HF_PREAMBLE, ofs); |
|
|
|
header = memchr(buf, HF_PREAMBLE, ofs); |
|
|
@ -185,6 +185,7 @@ static bool hashfast_reset(struct cgpu_info *hashfast, struct hashfast_info *inf |
|
|
|
uint8_t hcrc; |
|
|
|
uint8_t hcrc; |
|
|
|
uint8_t addr; |
|
|
|
uint8_t addr; |
|
|
|
uint16_t hdata; |
|
|
|
uint16_t hdata; |
|
|
|
|
|
|
|
bool ret; |
|
|
|
int i; |
|
|
|
int i; |
|
|
|
|
|
|
|
|
|
|
|
info->hash_clock_rate = 550; // Hash clock rate in Mhz
|
|
|
|
info->hash_clock_rate = 550; // Hash clock rate in Mhz
|
|
|
@ -205,9 +206,12 @@ static bool hashfast_reset(struct cgpu_info *hashfast, struct hashfast_info *inf |
|
|
|
// We extend the normal timeout - a complete device initialization, including
|
|
|
|
// We extend the normal timeout - a complete device initialization, including
|
|
|
|
// bringing power supplies up from standby, etc., can take over a second.
|
|
|
|
// bringing power supplies up from standby, etc., can take over a second.
|
|
|
|
for (i = 0; i < 30; i++) { |
|
|
|
for (i = 0; i < 30; i++) { |
|
|
|
if (hashfast_get_header(hashfast, h, &hcrc)) |
|
|
|
ret = hashfast_get_header(hashfast, h, &hcrc); |
|
|
|
|
|
|
|
if (ret) |
|
|
|
break; |
|
|
|
break; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
if (!ret) |
|
|
|
|
|
|
|
applog(LOG_WARNING, "HFA %d: OP_USB_INIT failed!", hashfast->device_id); |
|
|
|
|
|
|
|
|
|
|
|
return true; |
|
|
|
return true; |
|
|
|
} |
|
|
|
} |
|
|
|