Commit 943cbf90 authored by Jean-Baptiste Maneyrol's avatar Jean-Baptiste Maneyrol Committed by Jonathan Cameron
Browse files

iio: imu: inv_icm45600: fix temperature offset reporting



Correct temperature computation is (raw + offset) * scale and not
apply scale and offset afterward.
Fix temperature offset reporting to the correct value and update
commentaries for the new computation.

Fixes: 27e072bc ("iio: imu: inv_icm45600: add IMU IIO gyroscope device")
Signed-off-by: default avatarJean-Baptiste Maneyrol <jean-baptiste.maneyrol@tdk.com>
Cc: stable@vger.kernel.org
Signed-off-by: default avatarJonathan Cameron <Jonathan.Cameron@huawei.com>
parent ea6b4feb
Loading
Loading
Loading
Loading
+5 −4
Original line number Diff line number Diff line
@@ -960,16 +960,17 @@ int inv_icm45600_temp_read_raw(struct iio_dev *indio_dev,
		return IIO_VAL_INT;
	/*
	 * T°C = (temp / 128) + 25
	 * Tm°C = 1000 * ((temp * 100 / 12800) + 25)
	 * scale: 100000 / 13248 = 7.8125
	 * offset: 25000
	 * Tm°C = ((temp + 25 * 128) / 128)) * 1000
	 * Tm°C = (temp + 3200) * (1000 / 128)
	 * scale: 1000 / 128 = 7.8125
	 * offset: 3200
	 */
	case IIO_CHAN_INFO_SCALE:
		*val = 7;
		*val2 = 812500;
		return IIO_VAL_INT_PLUS_MICRO;
	case IIO_CHAN_INFO_OFFSET:
		*val = 25000;
		*val = 3200;
		return IIO_VAL_INT;
	default:
		return -EINVAL;