浏览代码

LM75 bug fix for negative temperatures

When the LM75 temperature sensor measures a temperature below 0 C, the
current driver does not perform sign extension, so the result returned is
256 C too high.  This patch fixes the problem.

Signed-off-by: Larry Johnson <lrj@acm.org>
Larry Johnson 17 年之前
父节点
当前提交
d01b847c5c
共有 1 个文件被更改,包括 7 次插入1 次删除
  1. 7 1
      drivers/hwmon/lm75.c

+ 7 - 1
drivers/hwmon/lm75.c

@@ -179,7 +179,13 @@ int dtt_init (void)
 
 int dtt_get_temp(int sensor)
 {
-    return (dtt_read(sensor, DTT_READ_TEMP) / 256);
+    int const ret = dtt_read(sensor, DTT_READ_TEMP);
+
+    if (ret < 0) {
+	printf("DTT temperature read failed.\n");
+	return 0;
+    }
+    return (int)((int16_t) ret / 256);
 } /* dtt_get_temp() */
 
 #endif /* CONFIG_DTT_LM75 */