Commit 922b4d850d5819f38217a53c1c40555bbde9147c

Con Kolivas 2013-10-13T21:55:14

Store the device data returned from hashfast header returned in reset

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