Re: [PATCH] hwmon: ntc: Don't assume a 12 bit ADC

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, May 26, 2015 at 03:41:42PM -0500, Chris Lesiak wrote:
> The function ntc_adc_iio_read was using iio_read_channel_raw and
> converting to microVolts using the assumption of a 12 bit ADC.  If a
> converter with different precision was used, the result was in error.
> 
> Instead, use iio_read_channel_processed, which does the conversion to
> microVolts itself.
> 
> Signed-off-by: Chris Lesiak <chris.lesiak@xxxxxxxxx>
> ---
>  drivers/hwmon/ntc_thermistor.c | 9 ++-------
>  1 file changed, 2 insertions(+), 7 deletions(-)
> 
> diff --git a/drivers/hwmon/ntc_thermistor.c b/drivers/hwmon/ntc_thermistor.c
> index 6880011..0d3a686 100644
> --- a/drivers/hwmon/ntc_thermistor.c
> +++ b/drivers/hwmon/ntc_thermistor.c
> @@ -190,20 +190,15 @@ struct ntc_data {
>  static int ntc_adc_iio_read(struct ntc_thermistor_platform_data *pdata)
>  {
>  	struct iio_channel *channel = pdata->chan;
> -	s64 result;
>  	int val, ret;
>  
> -	ret = iio_read_channel_raw(channel, &val);
> +	ret = iio_read_channel_processed(channel, &val);
>  	if (ret < 0) {
>  		pr_err("read channel() error: %d\n", ret);
>  		return ret;
>  	}
>  
> -	/* unit: mV */
> -	result = pdata->pullup_uv * (s64) val;
> -	result >>= 12;
> -
> -	return (int)result;
> +	return val;

The calculation used to need pullup_uv. As far as I can see,
the iio driver knows nothing about pullup_uv, which makes me
wonder how this can work. Can you explain ?

Thanks,
Guenter

_______________________________________________
lm-sensors mailing list
lm-sensors@xxxxxxxxxxxxxx
http://lists.lm-sensors.org/mailman/listinfo/lm-sensors




[Index of Archives]     [Linux Kernel]     [Linux Hardware Monitoring]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]

  Powered by Linux