2021-09-26 07:31:42

by Hui Liu

[permalink] [raw]
Subject: [PATCH v4 1/1] iio: mtk-auxadc: fix case IIO_CHAN_INFO_PROCESSED

From: Hui Liu <[email protected]>

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: ace4cdfe67be ("iio: adc: mt2701: Add Mediatek auxadc driver for mt2701.")
Signed-off-by: Hui Liu <[email protected]>
---
drivers/iio/adc/mt6577_auxadc.c | 8 ++++++++
1 file changed, 8 insertions(+)

diff --git a/drivers/iio/adc/mt6577_auxadc.c b/drivers/iio/adc/mt6577_auxadc.c
index 79c1dd68b909..d4fccd52ef08 100644
--- a/drivers/iio/adc/mt6577_auxadc.c
+++ b/drivers/iio/adc/mt6577_auxadc.c
@@ -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:
--
2.25.1


2021-10-31 16:51:03

by Hsin-Yi Wang

[permalink] [raw]
Subject: Re: [PATCH v4 1/1] iio: mtk-auxadc: fix case IIO_CHAN_INFO_PROCESSED

On Sun, Sep 26, 2021 at 7:26 PM Jonathan Cameron <[email protected]> wrote:
>
> On Sun, 26 Sep 2021 15:30:28 +0800
> Hui-Liu Liu <[email protected]> wrote:
>
> > From: Hui Liu <[email protected]>
> >
> > 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: ace4cdfe67be ("iio: adc: mt2701: Add Mediatek auxadc driver for mt2701.")
> > Signed-off-by: Hui Liu <[email protected]>
>
Hi Hui Liu,

After this patch, mt8183 tboard thermal sensor[1] is getting incorrect value:
Before the patch:
/sys/class/thermal/thermal_zone0/temp:41488 (cpu)
/sys/class/thermal/thermal_zone7/temp:35433 (tboard)
/sys/class/thermal/thermal_zone8/temp:33709 (tboard)

After the patch:
/sys/class/thermal/thermal_zone0/temp:40365 (cpu)
/sys/class/thermal/thermal_zone7/temp:69781 (tboard)
/sys/class/thermal/thermal_zone8/temp:69014 (tboard)

[1] https://elixir.bootlin.com/linux/v5.15-rc7/source/arch/arm64/boot/dts/mediatek/mt8183-kukui.dtsi#L862

>
> _______________________________________________
> Linux-mediatek mailing list
> [email protected]
> http://lists.infradead.org/mailman/listinfo/linux-mediatek