iio: mtk-auxadc: fix case IIO_CHAN_INFO_PROCESSED
commitc2980c64c7upstream. 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> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
1671cfd31b
commit
e811506f60
1 changed files with 8 additions and 0 deletions
|
|
@ -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…
Add table
Add a link
Reference in a new issue