Commit 96fba30b6b7c4c14ed43d5633e36bd08dccae302

Con Kolivas 2012-07-04T17:31:02

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

diff --git a/driver-bitforce.c b/driver-bitforce.c
index 4b0304b..a80acb5 100644
--- a/driver-bitforce.c
+++ b/driver-bitforce.c
@@ -203,6 +203,26 @@ void bitforce_init(struct cgpu_info *bitforce)
 
 	bitforce->device_fd = fdDev;
 	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);
 }
 
diff --git a/miner.h b/miner.h
index d3fa209..cbca935 100644
--- a/miner.h
+++ b/miner.h
@@ -322,6 +322,7 @@ struct cgpu_info {
 #ifdef USE_BITFORCE
 	unsigned int wait_ms;
 	unsigned int sleep_ms;
+	bool nonce_range;
 #endif
 	pthread_mutex_t		device_mutex;