thermal: armada: Allow to specify an 'inverted readout' sensor
authorEzequiel Garcia <ezequiel.garcia@free-electrons.com>
Tue, 6 May 2014 16:59:49 +0000 (13:59 -0300)
committerZhang Rui <rui.zhang@intel.com>
Thu, 15 May 2014 09:12:48 +0000 (17:12 +0800)
In order to support inverted-formula thermal sensor readout, this commit
introduces an 'inverted' field in the SoC-specific structure which
allows to specify an inversion of the temperature formula.

Acked-by: Jason Cooper <jason@lakedaemon.net>
Signed-off-by: Ezequiel Garcia <ezequiel.garcia@free-electrons.com>
Signed-off-by: Zhang Rui <rui.zhang@intel.com>
drivers/thermal/armada_thermal.c

index 6fd6483..f84d9f0 100644 (file)
@@ -56,6 +56,7 @@ struct armada_thermal_data {
        unsigned long coef_b;
        unsigned long coef_m;
        unsigned long coef_div;
+       bool inverted;
 
        /* Register shift and mask to access the sensor temperature */
        unsigned int temp_shift;
@@ -138,7 +139,10 @@ static int armada_get_temp(struct thermal_zone_device *thermal,
        m = priv->data->coef_m;
        div = priv->data->coef_div;
 
-       *temp = (b - (m * reg)) / div;
+       if (priv->data->inverted)
+               *temp = ((m * reg) - b) / div;
+       else
+               *temp = (b - (m * reg)) / div;
        return 0;
 }