Browse Source

Damp the temperature display measurement for bflsc since it fluctuates so wildly.

Con Kolivas 13 years ago
parent
commit
d6720ee0aa
1 changed files with 12 additions and 2 deletions
  1. 12 2
      driver-bflsc.c

+ 12 - 2
driver-bflsc.c

@@ -1111,8 +1111,18 @@ static bool bflsc_get_temp(struct cgpu_info *bflsc, int dev)
 
 
 	if (temp1 > 0 || temp2 > 0) {
 	if (temp1 > 0 || temp2 > 0) {
 		wr_lock(&(sc_info->stat_lock));
 		wr_lock(&(sc_info->stat_lock));
-		sc_info->sc_devs[dev].temp1 = temp1;
-		sc_info->sc_devs[dev].temp2 = temp2;
+		if (unlikely(!sc_info->sc_devs[dev].temp1))
+			sc_info->sc_devs[dev].temp1 = temp1;
+		else {
+			sc_info->sc_devs[dev].temp1 += temp1 * 0.63;
+			sc_info->sc_devs[dev].temp1 /= 1.63;
+		}
+		if (unlikely(!sc_info->sc_devs[dev].temp2))
+			sc_info->sc_devs[dev].temp2 = temp2;
+		else {
+			sc_info->sc_devs[dev].temp2 += temp2 * 0.63;
+			sc_info->sc_devs[dev].temp2 /= 1.63;
+		}
 		if (temp1 > sc_info->sc_devs[dev].temp1_max) {
 		if (temp1 > sc_info->sc_devs[dev].temp1_max) {
 			sc_info->sc_devs[dev].temp1_max = temp1;
 			sc_info->sc_devs[dev].temp1_max = temp1;
 			sc_info->sc_devs[dev].temp1_max_time = time(NULL);
 			sc_info->sc_devs[dev].temp1_max_time = time(NULL);