mirror of
https://github.com/GOSTSec/sgminer
synced 2025-01-11 07:17:58 +00:00
libztex: use a function for the twice called firmware reset code
This commit is contained in:
parent
9b1d0c9d95
commit
f5a575966c
29
libztex.c
29
libztex.c
@ -100,6 +100,19 @@ enum check_result
|
|||||||
CHECK_RESCAN,
|
CHECK_RESCAN,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static bool libztex_firmwareReset(struct libusb_device_handle *hndl, bool enable)
|
||||||
|
{
|
||||||
|
uint8_t reset = enable;
|
||||||
|
int cnt = libusb_control_transfer(hndl, 0x40, 0xA0, 0xE600, 0, &reset, 1, 1000);
|
||||||
|
if (cnt < 0)
|
||||||
|
{
|
||||||
|
applog(LOG_ERR, "Ztex reset %d failed: %s", libusb_error_name(cnt), enable);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
static enum check_result libztex_checkDevice(struct libusb_device *dev)
|
static enum check_result libztex_checkDevice(struct libusb_device *dev)
|
||||||
{
|
{
|
||||||
FILE *fp = NULL;
|
FILE *fp = NULL;
|
||||||
@ -245,14 +258,8 @@ static enum check_result libztex_checkDevice(struct libusb_device *dev)
|
|||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
|
|
||||||
// reset 1
|
if (libztex_firmwareReset(hndl, true))
|
||||||
buf[0] = 1;
|
|
||||||
cnt = libusb_control_transfer(hndl, 0x40, 0xA0, 0xE600, 0, buf, 1,1000);
|
|
||||||
if (cnt < 0)
|
|
||||||
{
|
|
||||||
applog(LOG_ERR, "Ztex reset 1 failed: %s", libusb_error_name(cnt));
|
|
||||||
goto done;
|
goto done;
|
||||||
}
|
|
||||||
|
|
||||||
for (i = 0; i < length; i+= 256) {
|
for (i = 0; i < length; i+= 256) {
|
||||||
// firmware wants data in small chunks like 256 bytes
|
// firmware wants data in small chunks like 256 bytes
|
||||||
@ -265,14 +272,8 @@ static enum check_result libztex_checkDevice(struct libusb_device *dev)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// reset 0
|
if (libztex_firmwareReset(hndl, false))
|
||||||
buf[0] = 0;
|
|
||||||
err = libusb_control_transfer(hndl, 0x40, 0xA0, 0xE600, 0, buf, 1,1000);
|
|
||||||
if (err < 0)
|
|
||||||
{
|
|
||||||
applog(LOG_ERR, "Ztex reset 0 failed: %s", libusb_error_name(err));
|
|
||||||
goto done;
|
goto done;
|
||||||
}
|
|
||||||
|
|
||||||
applog(LOG_ERR, "Ztex device: succesfully wrote firmware");
|
applog(LOG_ERR, "Ztex device: succesfully wrote firmware");
|
||||||
ret = CHECK_RESCAN;
|
ret = CHECK_RESCAN;
|
||||||
|
Loading…
Reference in New Issue
Block a user