On Tue, Jun 02, 2015 at 01:48:27PM -0500, Chris Lesiak wrote: > The function get_ohm_of_thermistor has both the measured voltage and the > pullup voltage available in microvolts. But it was promptly converting > both to millivolts before using them to calculate the thermistor > resistance. That conversion unnecessarily hurt the precision of the > calculation. > > For example, take the ncpXXwb473 connected to 5000 mV and pulled down > through a 47000 ohm resistor. At 25 C, the resistance of the thermistor > is 47000 ohms. The measured voltage will be 2500 mV. If we measure > instead 2501 mV, then the calculated resistance will be 46962 ohms -- > a difference of 38 ohms. So the precision of the resistance estimate > could be increased by 38X by doing the calculations in microvolts. > > Signed-off-by: Chris Lesiak <chris.lesiak@xxxxxxxxx> > --- > drivers/hwmon/ntc_thermistor.c | 23 ++++++++++------------- > 1 file changed, 10 insertions(+), 13 deletions(-) > > diff --git a/drivers/hwmon/ntc_thermistor.c b/drivers/hwmon/ntc_thermistor.c > index e08ed47..e112814 100644 > --- a/drivers/hwmon/ntc_thermistor.c > +++ b/drivers/hwmon/ntc_thermistor.c > @@ -310,30 +310,27 @@ static inline u64 div64_u64_safe(u64 dividend, u64 divisor) > static int get_ohm_of_thermistor(struct ntc_data *data, unsigned int uv) > { > struct ntc_thermistor_platform_data *pdata = data->pdata; > - u64 mv = uv / 1000; > - u64 pmv = pdata->pullup_uv / 1000; > + u32 puv = pdata->pullup_uv; > u64 n, puo, pdo; > puo = pdata->pullup_ohm; > pdo = pdata->pulldown_ohm; > > - if (mv == 0) { > - if (pdata->connect == NTC_CONNECTED_POSITIVE) > - return INT_MAX; > - return 0; > - } > - if (mv >= pmv) > + if (uv <= 0) Hi Chris, nitpick, but like mv, uv is unsigned and can not be < 0. Thanks, Guenter _______________________________________________ lm-sensors mailing list lm-sensors@xxxxxxxxxxxxxx http://lists.lm-sensors.org/mailman/listinfo/lm-sensors