Browse Source

icarus: Upgrade work division autodetection probe to be faster and also detect 8 core

Luke Dashjr 12 years ago
parent
commit
279dc32a4b
1 changed files with 9 additions and 6 deletions
  1. 9 6
      driver-icarus.c

+ 9 - 6
driver-icarus.c

@@ -708,10 +708,10 @@ static bool icarus_init(struct thr_info *thr)
 		
 		// Special packet to probe work_division
 		unsigned char pkt[64] =
-			"\x6C\x0E\x85\x6F\xD5\xB7\x0D\x39\xB3\xEB\xCF\x26\x21\x22\xD5\x1F"
-			"\x7E\x89\x6B\x26\x92\x2A\xD8\xFC\x66\xDF\x8C\x66\xB8\x2C\x37\x7C"
+			"\x2e\x4c\x8f\x91\xfd\x59\x5d\x2d\x7e\xa2\x0a\xaa\xcb\x64\xa2\xa0"
+			"\x43\x82\x86\x02\x77\xcf\x26\xb6\xa1\xee\x04\xc5\x6a\x5b\x50\x4a"
 			"BFGMiner Probe\0\0"
-			"BFG\0\xE9\x7F\x01\x1A\x3B\xE1\x91\x51\xD3\x58\xC5\xFF";
+			"BFG\0\x64\x61\x01\x1a\xc9\x06\xa9\x51\xfb\x9b\x3c\x73";
 		
 		icarus_write(fd, pkt, sizeof(pkt));
 		if (ICA_GETS_OK == icarus_gets((unsigned char*)&res, fd, &tv_finish, NULL, info->read_count))
@@ -720,15 +720,18 @@ static bool icarus_init(struct thr_info *thr)
 			res = 0;
 		
 		switch (res) {
-			case 0x06448360:
+			case 0x04C0FDB4:
 				info->work_division = 1;
 				break;
-			case 0x85C55B5B:
+			case 0x82540E46:
 				info->work_division = 2;
 				break;
-			case 0xC0DC6008:
+			case 0x417C0F36:
 				info->work_division = 4;
 				break;
+			case 0x60C994D5:
+				info->work_division = 8;
+				break;
 			default:
 				applog(LOG_ERR, "%"PRIpreprv": Work division autodetection failed (assuming 2): got %08x", icarus->proc_repr, res);
 				info->work_division = 2;