[PATCH v2 0/7] ad7380: add support for single-ended parts

From: Julien Stephan
Date: Wed Jul 31 2024 - 03:06:11 EST


This series will add support for ad7386/7/8 (16/14/12 bits) unsigned,
dual simultaneous sampling, single-ended compatible parts, and the
corresponding ad7386-4/7-4/8-4 4 channels to ad7380 driver.

These parts have a 2:1 multiplexer in front of each ADC. They also include
additional configuration registers that allow for either manual selection
or automatic switching (sequencer mode), of the multiplexer inputs.

>From an IIO point of view, all inputs are exported, i.e ad7386/7/8
export 4 channels and ad7386-4/7-4/8-4 export 8 channels.

Inputs AinX0 of multiplexers correspond to the first half of IIO channels
(i.e 0-1 or 0-3) and inputs AinX1 correspond to second half (i.e 2-3 or
4-7). Example for AD7386/7/8 (2 channels parts):

IIO | AD7386/7/8
| +----------------------------
| | _____ ______
| | | | | |
voltage0 | AinA0 --|--->| | | |
| | | mux |----->| ADCA |---
voltage2 | AinA1 --|--->| | | |
| | |_____| |_____ |
| | _____ ______
| | | | | |
voltage1 | AinB0 --|--->| | | |
| | | mux |----->| ADCB |---
voltage3 | AinB1 --|--->| | | |
| | |_____| |______|
| |
| +----------------------------

To ease the review, this series is split on several commits, in
particular, sequencer mode is added as an additional commit.

Cheers
Julien

Signed-off-by: Julien Stephan <jstephan@xxxxxxxxxxxx>
---
Changes in v2:
- Adding a new commit to fix the previously missing trailing comas
- Adding a new commit to introduce a new core function
`iio_active_scan_mask_index`
- reword commit messages to add the `iio: adc:` prefix
- fix minor comments from Jonathan
- use the new iio_active_scan_mask_index and use some enum definition to
make the code more readable

- Link to v1: https://lore.kernel.org/r/20240726-ad7380-add-single-ended-chips-v1-0-2d628b60ccd1@xxxxxxxxxxxx

---
Julien Stephan (7):
dt-bindings: iio: adc: ad7380: add single-ended compatible parts
iio: core: add function to retrieve active_scan_mask index
iio: adc: ad7380: add missing trailing commas
iio: adc: ad7380: prepare driver for single-ended parts support
iio: adc: ad7380: add support for single-ended parts
iio: adc: ad7380: enable sequencer for single-ended parts
docs: iio: ad7380: add support for single-ended parts

.../devicetree/bindings/iio/adc/adi,ad7380.yaml | 13 +
Documentation/iio/ad7380.rst | 42 ++
drivers/iio/adc/ad7380.c | 525 +++++++++++++++++----
drivers/iio/industrialio-core.c | 43 ++
include/linux/iio/iio.h | 2 +
5 files changed, 543 insertions(+), 82 deletions(-)
---
base-commit: 472438c7e0e2261c6737a8321f46ef176eef1c8f
change-id: 20240726-ad7380-add-single-ended-chips-b437d1cc8b8b

Best regards,
--
Julien Stephan <jstephan@xxxxxxxxxxxx>