[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <20120813134409.GA31991@roeck-us.net>
Date: Mon, 13 Aug 2012 06:44:09 -0700
From: Guenter Roeck <linux@...ck-us.net>
To: Bitan Biswas <bbiswas@...dia.com>
Cc: "khali@...ux-fr.org" <khali@...ux-fr.org>,
"guenter.roeck@...csson.com" <guenter.roeck@...csson.com>,
"linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>,
"lm-sensors@...sensors.org" <lm-sensors@...sensors.org>,
Stephen Warren <swarren@...dia.com>
Subject: Re: [lm-sensors] hwmon : raw reading -> temperature conversion
On Mon, Aug 13, 2012 at 12:57:03PM +0530, Bitan Biswas wrote:
> Hi Guenter,
>
> Thank you for the guidance.
>
> >>
> >>But looking at the hwmon linux documentation, seems the sensor
> >>kernel drivers should report only raw readings.
> >>The raw readings can be converted into required output,
> >>e.g. temperature in this case, by respective user space implementation.
> >>
> >"raw" means the value as reported to the sensor. For example, for an ADC, the
> >raw value means the voltage in mV as seen on the sensor's input pins. This
> >voltage is the voltage to be reported. Converting it to a "real" voltage as,
> >typically, determined by a set of voltage divider resistors should be done in
> >user space.
> >
> >For temperature sensors this is a bit more tricky. Presumably you get readings
> >from a thermistor or similar. The hwmon subsystem includes a driver for NTC
> >thermistors; maybe you can get some ideas from it. Maybe you can even use
> >it and/or extend it to support your hardware.
>
> The sensor is Tegra3 integrated thermal sensor. It is not a
> thermistor, but gives a counter reading. The expressions to convert
> the counter to temperature use characterization data and certain
> initialization parameters. I looked at the NTC thermistor driver.
> The expressions I need to use to convert counter value to
> temperature would need floating point arguments.
>
> >
> >>However because of my driver clients being in kernel space, I am
> >>thinking of doing fixed point calculations in the sensor driver
> >>and get the temperature corresponding to raw sensor readings.
> >>
> >>Please let me know if this a correct approach?
> >>
> >Question is really what chip you are using, and how exactly your hardware looks
> >like. Do you use a generic ADC ? If so, is it already supported in the kernel ?
> >How are the thermistor readings converted and reported to SW ?
>
> I think this is somewhat like an ADC but I need to implement the
> expressions to convert the counter readings to temperature. Using
> fixed point approximations instead of the floating point operands,
> the expressions can be implemented in kernel. The expressions to be
> used for calculation are specific to chip and I could not find a
> existing driver that could support this sensor.
>
> There are expressions that can convert the counter readings to
> temperature and vice-versa.
> 1) SW could call the driver callbacks and get the temperature.
> 2) SW could also request temperature thresholds to be configured for
> thermal monitoring.
>
> The software that may need to use the temperature are some other
> kernel drivers.
>
> Is it not allowed to implement the counter raw readings to
> temperature in the hwmon sensor driver?
>
If you look at the NTC driver, that is pretty much exactly what it does. It
accepts Ohm or Volt as input, and calculates a temperature from it. One can
think of a counter reading as to be similar to a resistance reading; if you
do that, you have a good starting point for your driver. You can use either
fixed point approximations, or a table approach as in the NTC driver.
Thanks,
Guenter
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists