aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDimitri Fedrau <dima.fedrau@gmail.com>2024-04-24 20:59:10 +0200
committerJonathan Cameron <Jonathan.Cameron@huawei.com>2024-04-29 20:42:52 +0100
commit3c324a40b7c3e6f95fde81c77f5cae6426a5e071 (patch)
tree94ccfd250bf56e528e4b4d007ddb4df333bf1386
parent40297eee0f393dea1eb84bde42bdc7313df61e72 (diff)
downloadiio-fixes-togreg.tar.gz
iio: temperature: mcp9600: Fix temperature reading for negative valuesfixes-togreg
Temperature is stored as 16bit value in two's complement format. Current implementation ignores the sign bit. Make it aware of the sign bit by using sign_extend32. Fixes: 3f6b9598b6df ("iio: temperature: Add MCP9600 thermocouple EMF converter") Signed-off-by: Dimitri Fedrau <dima.fedrau@gmail.com> Reviewed-by: Marcelo Schmitt <marcelo.schmitt1@gmail.com> Tested-by: Andrew Hepp <andrew.hepp@ahepp.dev> Link: https://lore.kernel.org/r/20240424185913.1177127-1-dima.fedrau@gmail.com Cc: <Stable@vger.kernel.org> Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
-rw-r--r--drivers/iio/temperature/mcp9600.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/iio/temperature/mcp9600.c b/drivers/iio/temperature/mcp9600.c
index 46845804292bf0..7a3eef5d5e752a 100644
--- a/drivers/iio/temperature/mcp9600.c
+++ b/drivers/iio/temperature/mcp9600.c
@@ -52,7 +52,8 @@ static int mcp9600_read(struct mcp9600_data *data,
if (ret < 0)
return ret;
- *val = ret;
+
+ *val = sign_extend32(ret, 15);
return 0;
}