OSDN Git Service

drivers: thermal: tsens: Common get_temp() learns to do ADC conversion
authorAmit Kucheria <amit.kucheria@linaro.org>
Wed, 20 Mar 2019 13:17:58 +0000 (18:47 +0530)
committerEduardo Valentin <edubezval@gmail.com>
Tue, 14 May 2019 13:59:22 +0000 (06:59 -0700)
get_temp() learns to return temperature regardless of whether it is
returned as ADC code or direct temperature.

Signed-off-by: Amit Kucheria <amit.kucheria@linaro.org>
Signed-off-by: Eduardo Valentin <edubezval@gmail.com>
drivers/thermal/qcom/tsens-common.c

index 5adbf1a..92747cc 100644 (file)
@@ -129,10 +129,15 @@ int get_temp_tsens_valid(struct tsens_priv *priv, int i, int *temp)
        if (ret)
                return ret;
 
-       mask = GENMASK(priv->fields[LAST_TEMP_0].msb,
-                      priv->fields[LAST_TEMP_0].lsb);
-       /* Convert temperature from deciCelsius to milliCelsius */
-       *temp = sign_extend32(last_temp, fls(mask) - 1) * 100;
+       if (priv->feat->adc) {
+               /* Convert temperature from ADC code to milliCelsius */
+               *temp = code_to_degc(last_temp, s) * 1000;
+       } else {
+               mask = GENMASK(priv->fields[LAST_TEMP_0].msb,
+                              priv->fields[LAST_TEMP_0].lsb);
+               /* Convert temperature from deciCelsius to milliCelsius */
+               *temp = sign_extend32(last_temp, fls(mask) - 1) * 100;
+       }
 
        return 0;
 }