ntc-thermal: fix NTC reading comparison

Compare it to the previous check, not just the last reading. This will
prevent false positives for errors in cases where the temperature
actually jumped a lot.

Bug: 250564489
Change-Id: I19844854ad64d3d2f90701670731c9ef0d8e7caf
diff --git a/battery/ntc-thermal.c b/battery/ntc-thermal.c
index 60e3522..3f9df74 100644
--- a/battery/ntc-thermal.c
+++ b/battery/ntc-thermal.c
@@ -103,10 +103,17 @@
 		diff = *temp - ntc_sensor->prev_temp;
 	else
 		diff = ntc_sensor->prev_temp - *temp;
-	if (ntc_sensor->prev_temp != -INT_MIN && diff > NTC_ERROR_DIFFERENCE) {
-		dev_err(ntcdev->dev, "IIO channel returned unusual temperature %d, prev_temp %d\n", *temp, ntc_sensor->prev_temp);
-		// Treat too different of a temperature as a NTC error
-		return -EINVAL;
+	if (*temp == ntcdev->lookup_table[ntcdev->nlookup_table - 1].temp) {
+		// Always treat max NTC value as a NTC error
+		dev_err(ntcdev->dev, "IIO channel returned unusual temperature %d\n", *temp);
+		ret = -EINVAL;
+	} else {
+		if (ntc_sensor->prev_temp != -INT_MIN && diff > NTC_ERROR_DIFFERENCE) {
+			dev_err(ntcdev->dev, "IIO channel returned unusual temperature %d, prev_temp %d\n", *temp, ntc_sensor->prev_temp);
+			// Treat too different of a temperature as a NTC error
+			ret = -EINVAL;
+		}
+		ntc_sensor->prev_temp = *temp;
 	}
 
 	return ret;
@@ -125,7 +132,6 @@
 		msleep(10);
 		ret = ntc_thermal_try_temp(ntc_sensor, temp);
 	}
-	ntc_sensor->prev_temp = *temp;
 
 	if (ret < 0) {
 		return ret;