Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ce5b8fc1 authored by Gregor Boirie's avatar Gregor Boirie Committed by Jonathan Cameron
Browse files

iio:pressure:ms5611: fix ms5607 temp compensation

Computation of sens2 was wrong and is fixed by this patch, sens2 should be:
    2 * (t - 2000)^2
See page 8 of ms5607 datasheet here:
    http://www.meas-spec.com/product/pressure/MS5607-02BA03.aspx



Signed-off-by: default avatarGregor Boirie <gregor.boirie@parrot.com>
Acked-by: default avatarLucas De Marchi <lucas.demarchi@intel.com>
Acked-by: default avatarPeter Meerwald-Stadler <pmeerw@pmeerw.net>
Signed-off-by: default avatarJonathan Cameron <jic23@kernel.org>
parent fc0dccdd
Loading
Loading
Loading
Loading
+6 −6
Original line number Diff line number Diff line
@@ -136,17 +136,17 @@ static int ms5607_temp_and_pressure_compensate(struct ms5611_chip_info *chip_inf

	t = 2000 + ((chip_info->prom[6] * dt) >> 23);
	if (t < 2000) {
		s64 off2, sens2, t2;
		s64 off2, sens2, t2, tmp;

		t2 = (dt * dt) >> 31;
		off2 = (61 * (t - 2000) * (t - 2000)) >> 4;
		sens2 = off2 << 1;
		tmp = (t - 2000) * (t - 2000);
		off2 = (61 * tmp) >> 4;
		sens2 = tmp << 1;

		if (t < -1500) {
			s64 tmp = (t + 1500) * (t + 1500);

			tmp = (t + 1500) * (t + 1500);
			off2 += 15 * tmp;
			sens2 += (8 * tmp);
			sens2 += 8 * tmp;
		}

		t -= t2;