Browse Source

CMR handle baud options

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

34
driver-icarus.c

@ -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) \ #define transfer(icarus, request_type, bRequest, wValue, wIndex, cmd) \
_transfer(icarus, request_type, bRequest, wValue, wIndex, NULL, 0, cmd) _transfer(icarus, request_type, bRequest, wValue, wIndex, NULL, 0, cmd)
// TODO: handle baud static void icarus_initialise(struct cgpu_info *icarus, int baud)
static void icarus_initialise(struct cgpu_info *icarus, __maybe_unused int baud)
{ {
uint16_t wValue, wIndex;
if (icarus->usbinfo.nodev) if (icarus->usbinfo.nodev)
return; return;
@ -276,14 +277,31 @@ static void icarus_initialise(struct cgpu_info *icarus, __maybe_unused int baud)
if (icarus->usbinfo.nodev) if (icarus->usbinfo.nodev)
return; return;
// TODO: Get the baud settings for the 2 CMRs // default to BLT/LLT 115200
if (icarus->usbdev->ident != IDENT_CMR1 && wValue = FTDI_VALUE_BAUD_BLT;
icarus->usbdev->ident != IDENT_CMR2) { 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 // Set the baud
transfer(icarus, FTDI_TYPE_OUT, FTDI_REQUEST_BAUD, FTDI_VALUE_BAUD_BLT, transfer(icarus, FTDI_TYPE_OUT, FTDI_REQUEST_BAUD, wValue,
(FTDI_INDEX_BAUD_BLT & 0xff00) | icarus->usbdev->found->interface, (wIndex & 0xff00) | icarus->usbdev->found->interface,
C_SETBAUD); C_SETBAUD);
}
if (icarus->usbinfo.nodev) if (icarus->usbinfo.nodev)
return; return;

4
usbutils.c

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

7
usbutils.h

@ -40,6 +40,13 @@
#define FTDI_VALUE_BAUD_BLT 0x001a #define FTDI_VALUE_BAUD_BLT 0x001a
#define FTDI_INDEX_BAUD_BLT 0x0000 #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 // Data control
#define FTDI_VALUE_DATA_BFL 0 #define FTDI_VALUE_DATA_BFL 0
#define FTDI_VALUE_DATA_BAS FTDI_VALUE_DATA_BFL #define FTDI_VALUE_DATA_BAS FTDI_VALUE_DATA_BFL

Loading…
Cancel
Save