Browse Source

Store the device data returned from hashfast header returned in reset

Con Kolivas 12 years ago
parent
commit
922b4d850d
2 changed files with 21 additions and 0 deletions
  1. 16 0
      driver-hashfast.c
  2. 5 0
      driver-hashfast.h

+ 16 - 0
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;
 }
 

+ 5 - 0
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