iio: mtk-auxadc: fix case IIO_CHAN_INFO_PROCESSED
The previous driver does't apply the necessary scaling to take the
voltage range into account.
We change readback value from raw data to input voltage to fix case
IIO_CHAN_INFO_PROCESSED.
Fixes: ace4cdfe67
("iio: adc: mt2701: Add Mediatek auxadc driver for mt2701.")
Signed-off-by: Hui Liu <hui.liu@mediatek.com>
Link: https://lore.kernel.org/r/20210926073028.11045-2-hui.liu@mediatek.com
Cc: <Stable@vger.kernel.org>
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
This commit is contained in:
parent
9da1b86865
commit
c2980c64c7
|
@ -82,6 +82,10 @@ static const struct iio_chan_spec mt6577_auxadc_iio_channels[] = {
|
|||
MT6577_AUXADC_CHANNEL(15),
|
||||
};
|
||||
|
||||
/* For Voltage calculation */
|
||||
#define VOLTAGE_FULL_RANGE 1500 /* VA voltage */
|
||||
#define AUXADC_PRECISE 4096 /* 12 bits */
|
||||
|
||||
static int mt_auxadc_get_cali_data(int rawdata, bool enable_cali)
|
||||
{
|
||||
return rawdata;
|
||||
|
@ -191,6 +195,10 @@ static int mt6577_auxadc_read_raw(struct iio_dev *indio_dev,
|
|||
}
|
||||
if (adc_dev->dev_comp->sample_data_cali)
|
||||
*val = mt_auxadc_get_cali_data(*val, true);
|
||||
|
||||
/* Convert adc raw data to voltage: 0 - 1500 mV */
|
||||
*val = *val * VOLTAGE_FULL_RANGE / AUXADC_PRECISE;
|
||||
|
||||
return IIO_VAL_INT;
|
||||
|
||||
default:
|
||||
|
|
Loading…
Reference in New Issue