Re: [RFC PATCH v1 0/2] hwmon: (iio_hwmon) optionally force iio channel type

From: Guenter Roeck
Date: Sun May 16 2021 - 11:54:16 EST


On 5/16/21 8:02 AM, Liam Beguin wrote:
Hi Jonathan,

On Sun May 16, 2021 at 5:06 AM EDT, Jonathan Cameron wrote:
On Sun, 16 May 2021 00:43:13 -0400
Liam Beguin <liambeguin@xxxxxxxxx> wrote:

Add a devicetree binding to optionally force a different IIO channel
type.

This is useful in cases where ADC channels are connected to a circuit
that represent another unit such as a temperature or a current.

`channel-types` was chosen instead of `io-channel-types` as this is not
part of the iio consumer bindings.

In the current form, this patch does what it's intended to do:
change the unit displayed by `sensors`, but feels like the wrong way to
address the problem.

Would it be possible to force the type of different IIO channels for
this kind of use case with a devicetree binding from the IIO subsystem?

It would be convenient to do it within the IIO subsystem to have the
right unit there too.

Thanks for your time,
Liam

Hi Liam,

+CC Peter for AFE part.

It's an interesting approach, but I would suggest we think about this
a different way.

Whenever a channel is being used to measure something 'different' from
what it actually measures (e.g. a voltage ADC measuring a current) that
reflects their being some analog component involved.
If you look at drivers/iio/afe/iio-rescale.c you can see the approach
we currently use to handle this.

Many thanks for pointing out the AFE code. That look like what I was
hoping to accomplish, but in a much better way.


Effectively what you add to devicetree is a consumer of the ADC channel
which in turn provides services to other devices. For this current case
it would be either a current-sense-amplifier or a current-sense-shunt
depending on what the analog front end looks like. We have to describe
the characteristics of that front end which isn't something that can
be done via a simple channel type.


Understood. My original intention was to use sensors.conf to do the
conversions and take into accounts those parameters.

That afe consumer device can then provide services to another consumer
(e.g. iio-hwmon) which work for your usecase.

The main limitation of this approach currently is you end up with
one device per channel. That could be improved upon if you have a
usecase
where it matters.

I don't think we currently have an equivalent for temperature sensing
but it would be easy enough to do something similar.

Wonderful, thanks again for pointing out the AFE!


Please don't reinvent the ntc_thermistor driver.

Thanks,
Guenter

Liam


Jonathan



Liam Beguin (2):
hwmon: (iio_hwmon) optionally force iio channel type
dt-bindings: hwmon: add iio-hwmon bindings

.../devicetree/bindings/hwmon/iio-hwmon.yaml | 41 +++++++++++++++++++
drivers/hwmon/iio_hwmon.c | 2 +
2 files changed, 43 insertions(+)
create mode 100644 Documentation/devicetree/bindings/hwmon/iio-hwmon.yaml


base-commit: 9f4ad9e425a1d3b6a34617b8ea226d56a119a717