[PATCH v6 0/3] iio: adc: add max11410 adc driver

From: Ibrahim Tilki
Date: Tue Sep 27 2022 - 10:19:42 EST


Hello devicetree maintainers,

We had a discussion regarding the reg propert of adc channel nodes:
The adc.yaml binding requires the @X number to match with reg. Reg specifies
the channel index but channels are specified with "diff-channels" property
when the channel is differential.

Our driver supports mixing single ended and differential channels and the reg
property is not used in differential mode.
We want to constrain reg between 0 and 9 since ADC only has 10 channels.
That means we also need to constrain @address of channel but that wouldn't allow
us to define more than 10 channels which users might need to do. How should we
specify the @address and reg property in this case for differential channels?

Please refer to the discussions below:
https://marc.info/?l=linux-iio&m=166402759331673&w=2
https://marc.info/?l=linux-iio&m=166402779031712&w=2

Hi Jonathan,

I removed the check for "avdd-supply" at probe time and treated it as a regular vref.
No other change is made to the driver.

Best regards,
Ibrahim Tilki

Note: No sign-off tag for David as he was unreachable when the initial patch was sent.

Changelog:
since v6:
- don't require avdd supply if not needed

since v5:
- allow user to specify both interrupt pins
- keep irq info in max11410_state struct and use irq by name
- get irqs by fwnode_get_irq_byname
- don't allocate trigger when no irq supplied
- fix deadlock condition in write_raw
- minor style fixes
- fix devicetree binding errors reported by dt_binding_check
- convert module license to GPL as suggested by checkpatch

since v4:
- add in_voltage_filter2_notch_{center,en} attrs for sinc4 filter
- add ABI documentation for filter sysfs
- check interrupt-names property for configuring gpio of max11410
- remove hardwaregain property
- add scale_available property for channes using PGA
- separate vref regulator error -ENODEV from other errors
- don't register trigger if no irq specified
- style fixes

since v3:
- prefix defines with MAX11410_
- group vref regulators
- use builtin iio_validate_scan_mask_onehot
- validate iio trigger
- move scan data into state struct
- require vrefn regulator in DT if used by any channel
- don't require irq for triggered buffer
- remove filter sysfs attr and ABI documentation
- add in_voltage_filter[0-1]_notch_{center,en} attrs

since v2:
- remove bit position shifting, use field_prep instead
- reduce the amount of reg writes in max11410_configure_channel
- add error checking in max11410_parse_channels
- remove some unneeded blank lines and minor style fixes
- remove scan data assignment in max11410_trigger_handler


Ibrahim Tilki (3):
iio: adc: add max11410 adc driver
dt-bindings: iio: adc: add adi,max11410.yaml
Documentation: ABI: testing: add max11410 doc

.../ABI/testing/sysfs-bus-iio-adc-max11410 | 13 +
.../bindings/iio/adc/adi,max11410.yaml | 176 +++
.../devicetree/bindings/rtc/adi,max313xx.yaml | 195 +++
drivers/iio/adc/Kconfig | 13 +
drivers/iio/adc/Makefile | 1 +
drivers/iio/adc/max11410.c | 1049 +++++++++++++++++
6 files changed, 1447 insertions(+)
create mode 100644 Documentation/ABI/testing/sysfs-bus-iio-adc-max11410
create mode 100644 Documentation/devicetree/bindings/iio/adc/adi,max11410.yaml
create mode 100644 Documentation/devicetree/bindings/rtc/adi,max313xx.yaml
create mode 100644 drivers/iio/adc/max11410.c

--
2.25.1