aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/hwmon/ad7314.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/drivers/hwmon/ad7314.c b/drivers/hwmon/ad7314.c
index f4f9b219bf16..11955467fc0f 100644
--- a/drivers/hwmon/ad7314.c
+++ b/drivers/hwmon/ad7314.c
@@ -16,6 +16,7 @@
16#include <linux/err.h> 16#include <linux/err.h>
17#include <linux/hwmon.h> 17#include <linux/hwmon.h>
18#include <linux/hwmon-sysfs.h> 18#include <linux/hwmon-sysfs.h>
19#include <linux/bitops.h>
19 20
20/* 21/*
21 * AD7314 temperature masks 22 * AD7314 temperature masks
@@ -67,7 +68,7 @@ static ssize_t ad7314_show_temperature(struct device *dev,
67 switch (spi_get_device_id(chip->spi_dev)->driver_data) { 68 switch (spi_get_device_id(chip->spi_dev)->driver_data) {
68 case ad7314: 69 case ad7314:
69 data = (ret & AD7314_TEMP_MASK) >> AD7314_TEMP_SHIFT; 70 data = (ret & AD7314_TEMP_MASK) >> AD7314_TEMP_SHIFT;
70 data = (data << 6) >> 6; 71 data = sign_extend32(data, 9);
71 72
72 return sprintf(buf, "%d\n", 250 * data); 73 return sprintf(buf, "%d\n", 250 * data);
73 case adt7301: 74 case adt7301:
@@ -78,7 +79,7 @@ static ssize_t ad7314_show_temperature(struct device *dev,
78 * register. 1lsb - 31.25 milli degrees centigrade 79 * register. 1lsb - 31.25 milli degrees centigrade
79 */ 80 */
80 data = ret & ADT7301_TEMP_MASK; 81 data = ret & ADT7301_TEMP_MASK;
81 data = (data << 2) >> 2; 82 data = sign_extend32(data, 13);
82 83
83 return sprintf(buf, "%d\n", 84 return sprintf(buf, "%d\n",
84 DIV_ROUND_CLOSEST(data * 3125, 100)); 85 DIV_ROUND_CLOSEST(data * 3125, 100));