Browse Source

CMR handle baud options

nfactor-troky
Kano 12 years ago
parent
commit
05cbbd99bb
  1. 36
      driver-icarus.c
  2. 4
      usbutils.c
  3. 7
      usbutils.h

36
driver-icarus.c

@ -244,9 +244,10 @@ static void _transfer(struct cgpu_info *icarus, uint8_t request_type, uint8_t bR @@ -244,9 +244,10 @@ static void _transfer(struct cgpu_info *icarus, uint8_t request_type, uint8_t bR
#define transfer(icarus, request_type, bRequest, wValue, wIndex, cmd) \
_transfer(icarus, request_type, bRequest, wValue, wIndex, NULL, 0, cmd)
// TODO: handle baud
static void icarus_initialise(struct cgpu_info *icarus, __maybe_unused int baud)
static void icarus_initialise(struct cgpu_info *icarus, int baud)
{
uint16_t wValue, wIndex;
if (icarus->usbinfo.nodev)
return;
@ -276,15 +277,32 @@ static void icarus_initialise(struct cgpu_info *icarus, __maybe_unused int baud) @@ -276,15 +277,32 @@ static void icarus_initialise(struct cgpu_info *icarus, __maybe_unused int baud)
if (icarus->usbinfo.nodev)
return;
// TODO: Get the baud settings for the 2 CMRs
if (icarus->usbdev->ident != IDENT_CMR1 &&
icarus->usbdev->ident != IDENT_CMR2) {
// Set the baud
transfer(icarus, FTDI_TYPE_OUT, FTDI_REQUEST_BAUD, FTDI_VALUE_BAUD_BLT,
(FTDI_INDEX_BAUD_BLT & 0xff00) | icarus->usbdev->found->interface,
C_SETBAUD);
// default to BLT/LLT 115200
wValue = FTDI_VALUE_BAUD_BLT;
wIndex = FTDI_INDEX_BAUD_BLT;
if (icarus->usbdev->ident == IDENT_CMR1 ||
icarus->usbdev->ident == IDENT_CMR2) {
switch (baud) {
case 115200:
wValue = FTDI_VALUE_BAUD_CMR_115;
wIndex = FTDI_INDEX_BAUD_CMR_115;
break;
case 57600:
wValue = FTDI_VALUE_BAUD_CMR_57;
wIndex = FTDI_INDEX_BAUD_CMR_57;
break;
default:
quit(1, "icarus_intialise() invalid baud (%d) for Cairnsmore1", baud);
break;
}
}
// Set the baud
transfer(icarus, FTDI_TYPE_OUT, FTDI_REQUEST_BAUD, wValue,
(wIndex & 0xff00) | icarus->usbdev->found->interface,
C_SETBAUD);
if (icarus->usbinfo.nodev)
return;

4
usbutils.c

@ -256,7 +256,7 @@ static struct usb_find_devices find_dev[] = { @@ -256,7 +256,7 @@ static struct usb_find_devices find_dev[] = {
.interface = 0,
.timeout = ICARUS_TIMEOUT_MS,
.epcount = ARRAY_SIZE(cmr1_eps),
.eps = cmr_eps },
.eps = cmr1_eps },
{
.drv = DRV_ICARUS,
.name = "CMR",
@ -269,7 +269,7 @@ static struct usb_find_devices find_dev[] = { @@ -269,7 +269,7 @@ static struct usb_find_devices find_dev[] = {
.interface = 0,
.timeout = ICARUS_TIMEOUT_MS,
.epcount = ARRAY_SIZE(cmr2_eps),
.eps = cmr_eps },
.eps = cmr2_eps },
#endif
#ifdef USE_ZTEX
// This is here so cgminer -n shows them

7
usbutils.h

@ -40,6 +40,13 @@ @@ -40,6 +40,13 @@
#define FTDI_VALUE_BAUD_BLT 0x001a
#define FTDI_INDEX_BAUD_BLT 0x0000
// CMR = 115200 & 57600
#define FTDI_VALUE_BAUD_CMR_115 0xc068
#define FTDI_INDEX_BAUD_CMR_115 0x0200
#define FTDI_VALUE_BAUD_CMR_57 0x80d0
#define FTDI_INDEX_BAUD_CMR_57 0x0200
// Data control
#define FTDI_VALUE_DATA_BFL 0
#define FTDI_VALUE_DATA_BAS FTDI_VALUE_DATA_BFL

Loading…
Cancel
Save