diff options
author | Dimitri Fedrau <dima.fedrau@gmail.com> | 2024-04-24 20:59:10 +0200 |
---|---|---|
committer | Jonathan Cameron <Jonathan.Cameron@huawei.com> | 2024-04-29 20:42:52 +0100 |
commit | 3c324a40b7c3e6f95fde81c77f5cae6426a5e071 (patch) | |
tree | 94ccfd250bf56e528e4b4d007ddb4df333bf1386 | |
parent | 40297eee0f393dea1eb84bde42bdc7313df61e72 (diff) | |
download | iio-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.c | 3 |
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; } |