thermal: sun8i: add TEMP_CALIB_MASK for calibration data in sun50i_h6_ths_calibrate
authorYangtao Li <frank@allwinnertech.com>
Fri, 24 Jul 2020 07:11:42 +0000 (15:11 +0800)
committerDaniel Lezcano <daniel.lezcano@linaro.org>
Mon, 12 Oct 2020 10:08:36 +0000 (12:08 +0200)
For sun50i_h6_ths_calibrate(), the data read from nvmem needs a round of
calculation. On the other hand, the newer SOC may store other data in
the space other than 12bit sensor data. Add mask operation to read data
to avoid conversion error.

Signed-off-by: Yangtao Li <frank@allwinnertech.com>
Acked-by: Maxime Ripard <mripard@kernel.org>
Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
Link: https://lore.kernel.org/r/dcf98648c16aff7649ff82438bfce6caae3e176f.1595572867.git.frank@allwinnertech.com
drivers/thermal/sun8i_thermal.c

index 74d73be164961a7bb1e4359a9438aee01a7ab2fc..f423d44b9290ab0c98946156abec91ea20f80480 100644 (file)
@@ -244,7 +244,7 @@ static int sun50i_h6_ths_calibrate(struct ths_device *tmdev,
        ft_temp = (caldata[0] & FT_TEMP_MASK) * 100;
 
        for (i = 0; i < tmdev->chip->sensor_num; i++) {
-               int sensor_reg = caldata[i + 1];
+               int sensor_reg = caldata[i + 1] & TEMP_CALIB_MASK;
                int cdata, offset;
                int sensor_temp = tmdev->chip->calc_temp(tmdev, i, sensor_reg);