summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDimitri Fedrau <dima.fedrau@gmail.com>2024-04-24 21:59:10 +0300
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2024-06-21 15:40:35 +0300
commitc70cc82c800365b91bdebc97fd829c249ffab35d (patch)
tree60d44cd3b51d425e0463dffe735b44e2272b0d21
parent6f0cfe3b8de76e709a3dab4d2e2a6ae9ff85cd81 (diff)
downloadlinux-c70cc82c800365b91bdebc97fd829c249ffab35d.tar.xz
iio: temperature: mcp9600: Fix temperature reading for negative values
commit 827dca3129708a8465bde90c86c2e3c38e62dd4f upstream. 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> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-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 46845804292b..7a3eef5d5e75 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;
}