Store the device data returned from hashfast header returned in reset
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
diff --git a/driver-hashfast.c b/driver-hashfast.c
index 6dc51da..60e6d4d 100644
--- a/driver-hashfast.c
+++ b/driver-hashfast.c
@@ -223,6 +223,22 @@ static bool hashfast_reset(struct cgpu_info *hashfast, struct hashfast_info *inf
return false;
}
+ applog(LOG_DEBUG, "HFA %d: Good reply to OP_USB_INIT", hashfast->device_id);
+ applog(LOG_DEBUG, "HFA %d: OP_USB_INIT: %d die in chain, %d cores, device_type %d, refclk %d Mhz",
+ hashfast->device_id, h->chip_address, h->core_address, h->hdata & 0xff, (h->hdata >> 8) & 0xff);
+
+ // Save device configuration
+ info->asic_count = h->chip_address;
+ info->core_count = h->core_address;
+ info->device_type = (uint8_t)h->hdata;
+ info->ref_frequency = (uint8_t)(h->hdata>>8);
+ info->hash_sequence = 0;
+ info->hash_sequence_tail = 0;
+ info->device_sequence_tail = 0;
+
+ // Size in bytes of the core bitmap in bytes
+ info->core_bitmap_size = (((info->asic_count * info->core_count) + 31) / 32) * 4;
+
return true;
}
diff --git a/driver-hashfast.h b/driver-hashfast.h
index 6f99496..69c6c63 100644
--- a/driver-hashfast.h
+++ b/driver-hashfast.h
@@ -21,11 +21,16 @@
struct hashfast_info {
int asic_count; // # of chips in the chain
+ int core_count; // # of cores per chip
+ int device_type; // What sort of device this is
+ int ref_frequency; // Reference clock rate
+ uint16_t hash_sequence; // The next hash sequence # to be sent
struct hf_g1_die_data *die_status; // Array of per-die voltage, current, temperature sensor data
struct hf_long_statistics *die_statistics; // Array of per-die error counters
int hash_clock_rate; // Hash clock rate to use, in Mhz
struct hf_usb_init_base usb_init_base; // USB Base information from USB_INIT
struct hf_config_data config_data; // Configuration data used from USB_INIT
+ int core_bitmap_size; // in bytes
struct work **works;
uint16_t device_sequence_head; // The most recent sequence number the device dispatched