diff options
| -rw-r--r-- | drivers/hwmon/ad7314.c | 5 |
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)); |
