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:
Родитель
9da1b86865
Коммит
c2980c64c7
|
@ -82,6 +82,10 @@ static const struct iio_chan_spec mt6577_auxadc_iio_channels[] = {
|
||||||
MT6577_AUXADC_CHANNEL(15),
|
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)
|
static int mt_auxadc_get_cali_data(int rawdata, bool enable_cali)
|
||||||
{
|
{
|
||||||
return rawdata;
|
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)
|
if (adc_dev->dev_comp->sample_data_cali)
|
||||||
*val = mt_auxadc_get_cali_data(*val, true);
|
*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;
|
return IIO_VAL_INT;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
|
Загрузка…
Ссылка в новой задаче