mirror of
https://github.com/GOSTSec/sgminer
synced 2025-02-05 11:34:16 +00:00
Enable USB buffers for hashfast on initialise and clear buffers where appropriate.
This commit is contained in:
parent
17baf4548a
commit
1bafafb5d3
@ -288,6 +288,21 @@ static bool hfa_reset(struct cgpu_info *hashfast, struct hashfast_info *info)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void hfa_send_shutdown(struct cgpu_info *hashfast)
|
||||||
|
{
|
||||||
|
hfa_send_frame(hashfast, HF_USB_CMD(OP_USB_SHUTDOWN), 0, NULL, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void hfa_clear_readbuf(struct cgpu_info *hashfast)
|
||||||
|
{
|
||||||
|
int amount, ret;
|
||||||
|
char buf[512];
|
||||||
|
|
||||||
|
do {
|
||||||
|
ret = usb_read(hashfast, buf, 512, &amount, C_HF_CLEAR_READ);
|
||||||
|
} while (!ret || amount);
|
||||||
|
}
|
||||||
|
|
||||||
static bool hfa_detect_common(struct cgpu_info *hashfast)
|
static bool hfa_detect_common(struct cgpu_info *hashfast)
|
||||||
{
|
{
|
||||||
struct hashfast_info *info;
|
struct hashfast_info *info;
|
||||||
@ -297,9 +312,12 @@ static bool hfa_detect_common(struct cgpu_info *hashfast)
|
|||||||
if (!info)
|
if (!info)
|
||||||
quit(1, "Failed to calloc hashfast_info in hfa_detect_common");
|
quit(1, "Failed to calloc hashfast_info in hfa_detect_common");
|
||||||
hashfast->device_data = info;
|
hashfast->device_data = info;
|
||||||
|
hfa_clear_readbuf(hashfast);
|
||||||
/* hashfast_reset should fill in details for info */
|
/* hashfast_reset should fill in details for info */
|
||||||
ret = hfa_reset(hashfast, info);
|
ret = hfa_reset(hashfast, info);
|
||||||
if (!ret) {
|
if (!ret) {
|
||||||
|
hfa_send_shutdown(hashfast);
|
||||||
|
hfa_clear_readbuf(hashfast);
|
||||||
free(info);
|
free(info);
|
||||||
hashfast->device_data = NULL;
|
hashfast->device_data = NULL;
|
||||||
return false;
|
return false;
|
||||||
@ -326,6 +344,7 @@ static void hfa_initialise(struct cgpu_info *hashfast)
|
|||||||
{
|
{
|
||||||
if (hashfast->usbinfo.nodev)
|
if (hashfast->usbinfo.nodev)
|
||||||
return;
|
return;
|
||||||
|
usb_buffer_enable(hashfast);
|
||||||
// FIXME Do necessary initialising here
|
// FIXME Do necessary initialising here
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -812,9 +831,8 @@ static struct api_data *hfa_api_stats(struct cgpu_info *cgpu)
|
|||||||
return root;
|
return root;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void hfa_init(struct cgpu_info *hashfast)
|
static void hfa_init(struct cgpu_info __maybe_unused *hashfast)
|
||||||
{
|
{
|
||||||
usb_buffer_enable(hashfast);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void hfa_free_all_work(struct hashfast_info *info)
|
static void hfa_free_all_work(struct hashfast_info *info)
|
||||||
@ -836,9 +854,11 @@ static void hfa_shutdown(struct thr_info *thr)
|
|||||||
struct cgpu_info *hashfast = thr->cgpu;
|
struct cgpu_info *hashfast = thr->cgpu;
|
||||||
struct hashfast_info *info = hashfast->device_data;
|
struct hashfast_info *info = hashfast->device_data;
|
||||||
|
|
||||||
hfa_send_frame(hashfast, HF_USB_CMD(OP_USB_SHUTDOWN), 0, NULL, 0);
|
hfa_send_shutdown(hashfast);
|
||||||
pthread_join(info->read_thr, NULL);
|
pthread_join(info->read_thr, NULL);
|
||||||
hfa_free_all_work(info);
|
hfa_free_all_work(info);
|
||||||
|
hfa_clear_readbuf(hashfast);
|
||||||
|
usb_buffer_disable(hashfast);
|
||||||
}
|
}
|
||||||
|
|
||||||
struct device_drv hashfast_drv = {
|
struct device_drv hashfast_drv = {
|
||||||
|
@ -362,7 +362,8 @@ struct cg_usb_info {
|
|||||||
USB_ADD_COMMAND(C_HF_WORK_RESTART, "HFWorkRestart") \
|
USB_ADD_COMMAND(C_HF_WORK_RESTART, "HFWorkRestart") \
|
||||||
USB_ADD_COMMAND(C_HF_GWQSTATS, "HFGWQStats") \
|
USB_ADD_COMMAND(C_HF_GWQSTATS, "HFGWQStats") \
|
||||||
USB_ADD_COMMAND(C_HF_GETHEADER, "HFGetHeader") \
|
USB_ADD_COMMAND(C_HF_GETHEADER, "HFGetHeader") \
|
||||||
USB_ADD_COMMAND(C_HF_GETDATA, "HFGetData")
|
USB_ADD_COMMAND(C_HF_GETDATA, "HFGetData") \
|
||||||
|
USB_ADD_COMMAND(C_HF_CLEAR_READ, "HFClearRead")
|
||||||
|
|
||||||
/* Create usb_cmds enum from USB_PARSE_COMMANDS macro */
|
/* Create usb_cmds enum from USB_PARSE_COMMANDS macro */
|
||||||
enum usb_cmds {
|
enum usb_cmds {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user