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@baylibre.com>
---
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@baylibre.com
---
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@baylibre.com>