Browse Source

Attempt to detect nonce range support in BFL by sending work requring its support.

Con Kolivas 13 years ago
parent
commit
96fba30b6b
2 changed files with 21 additions and 0 deletions
  1. 20 0
      driver-bitforce.c
  2. 1 0
      miner.h

+ 20 - 0
driver-bitforce.c

@@ -203,6 +203,26 @@ void bitforce_init(struct cgpu_info *bitforce)
 
 
 	bitforce->device_fd = fdDev;
 	bitforce->device_fd = fdDev;
 	bitforce->sleep_ms = BITFORCE_SLEEP_MS;
 	bitforce->sleep_ms = BITFORCE_SLEEP_MS;
+
+	/* Look for nonce range support */
+	BFwrite(fdDev, "ZPX", 3);
+	BFgets(pdevbuf, sizeof(pdevbuf), fdDev);
+	if (strncasecmp(pdevbuf, "ERR", 3)) {
+		unsigned char ob[70];
+		uint32_t *nonce;
+
+		memset(ob, 0, 68);
+		sprintf((char *)ob, ">>>>>>>>");
+		sprintf((char *)ob + 60, ">>>>>>>>");
+		nonce = (uint32_t *)(ob + 56);
+		*nonce = htobe32(0x7FFFFFFF);
+		BFwrite(fdDev, ob, 68);
+		BFgets(pdevbuf, sizeof(pdevbuf), fdDev);
+		if (!strncasecmp(pdevbuf, "OK", 2)) {
+			applog(LOG_DEBUG, "BFL%i: Found nonce range support");
+			bitforce->nonce_range = true;
+		}
+	}
 	mutex_unlock(&bitforce->device_mutex);
 	mutex_unlock(&bitforce->device_mutex);
 }
 }
 
 

+ 1 - 0
miner.h

@@ -322,6 +322,7 @@ struct cgpu_info {
 #ifdef USE_BITFORCE
 #ifdef USE_BITFORCE
 	unsigned int wait_ms;
 	unsigned int wait_ms;
 	unsigned int sleep_ms;
 	unsigned int sleep_ms;
+	bool nonce_range;
 #endif
 #endif
 	pthread_mutex_t		device_mutex;
 	pthread_mutex_t		device_mutex;