[PATCH v7 0/6] iio: adc: ad7192: Add AD7194 support

From: Alisa-Dariana Roman
Date: Tue Apr 30 2024 - 12:30:23 EST


Dear maintainers,

Thank you all for the feedback!

I am submitting the upgraded series of patches for the ad7192 driver.

Please consider applying in order.

Thank you!

v6 -> v7
- patch1: move mutex lock and unlock to protect whole switch statement
- patch3: use NANO from units.h
- patch3: add comment
- patch3: use dev_err_probe
- patch4: new patch to add single-channel property
- patch5: modify maximum number of channels to include single-ended channels
- patch5: add single-channel property to bindings for single-ended channels
- patch5: modify example to include single-channel property
- patch5: modify channel pattern to "^channel@[0-9a-f]+$"
- patch5: modify required properties for channel node
- patch6: add function to validate ain channel
- patch6: remove function to parse one channel
- patch6: single-ended channels are now also configured in the devicetree
- patch6: modified some names to reflect the changes

v5 -> v6
- protect ad7192_update_filter_freq_avail with lock
- better bindings description for AINCOM
- the pseudo-differential channels are no longer configured as differential
when aincom supply is not present in devicetree, in this case the offset for
the channels is set to 0
- because of the above change, there is no longer a need for multiple channel
options
- correct channels regex in bindings
- no need to move chip_info anymore
- change names to ad7194_parse_channel/s
- add else statement to highlight parse_channels effect

v4 -> v5
- add aincom supply as discussed previously
https://lore.kernel.org/all/CAMknhBF5mAsN1c-194Qwa5oKmqKzef2khXnqA1cSdKpWHKWp0w@xxxxxxxxxxxxxx/#t
- ad7194 differential channels are now dynamically configured in the
devicetree

v3 -> v4
- drop device properties patch, changes already applied to tree
- change bindings and driver such that for AD7194 there are 16
differential channels, by default set to AINx - AINCOM, which can be
configured in devicetree however the user likes
- corrected mistake regarding positive and negative channel macros:
subtract 1 from the number corresponding to AIN input

v2 -> v3
- add precursor patch to simply functions to only pass
ad7192_state
- add patch to replace custom attribute
- bindings patch: correct use of allOf and some minor changes to
the ad7194 example
- add ad7194 patch:
- use "ad7192 and similar"
- ad7194 no longer needs attribute group
- use callback function in chip_info to parse channels
- move struct ad7192_chip_info
- change position of parse functions
- drop clock bindings patch

v1 -> v2
- new commit with missing documentation for properties
- add constraint for channels in binding
- correct pattern for channels
- correct commit message by adding "()" to functions
- use in_range
- use preferred structure in Kconfig

Kind regards,

Alisa-Dariana Roman (6):
iio: adc: ad7192: Use standard attribute
dt-bindings: iio: adc: ad7192: Add aincom supply
iio: adc: ad7192: Add aincom supply
dt-bindings: iio: adc: Add single-channel property
dt-bindings: iio: adc: ad7192: Add AD7194 support
iio: adc: ad7192: Add AD7194 support

.../devicetree/bindings/iio/adc/adc.yaml | 8 +
.../bindings/iio/adc/adi,ad7192.yaml | 95 +++++++
drivers/iio/adc/Kconfig | 11 +-
drivers/iio/adc/ad7192.c | 245 ++++++++++++++----
4 files changed, 309 insertions(+), 50 deletions(-)

--
2.34.1