[PATCH v2 00/10] iio: adc: ad7606: improvements and ad7606c parallel interface support

From: David Lechner
Date: Tue Mar 18 2025 - 18:52:54 EST


The main purpose of this series is to add support for the AD7606C chips
using a parallel interface. Along the way quite a few improvements were
made to the driver which in the end made adding the additional chips
trivial.

The first 8 are some minor cleanups (one could be considered a fix). The
2nd to last patch is the big one. As explained in the respective commit
message, the channel data structures were getting out of hand and only
going to get worse with the addition of SPI offload support. Instead, we
are opting to dynamically allocate the channel data structures to avoid
a bunch of the existing complexity in the driver.

I have limited access to hardware, so I was only able to test this with
ad7606c-18.

Signed-off-by: David Lechner <dlechner@xxxxxxxxxxxx>
---
Changes in v2:.
- Dropped Fixes: tag from patch "iio: adc: ad7606_spi: check error in
ad7606B_sw_mode_config()"
- Dropped patch "iio: adc: ad7606: fix scales_available attributes".
This wasy actually fixed already in commit bead181694df ("iio: adc:
ad7606: fix wrong scale available")
- Added a few more improvements to the doc comment cleanup patch.
- Fixed a wrong comment style.
- Link to v1: https://lore.kernel.org/r/20250312-iio-adc-ad7606-improvements-v1-0-d1ec04847aea@xxxxxxxxxxxx

I declined to move slow_bus assignment to the declaration since it will
be extended in a later series.

Also in v1, we discussed that we would merge the fixes first and wait
on the rest of the series. However, I since realized that the one
important fix is already in greg's tree and the other fixes are not
so urgent (I only triggered the NULL pointer dereference because of
later changes in this series), so could be nice if we could have
everything picked up since we have another ad7606 series that will
quickly follow this one.

---
David Lechner (10):
iio: adc: ad7606: check for NULL before calling sw_mode_config()
iio: adc: ad7606_spi: check error in ad7606B_sw_mode_config()
iio: adc: ad7606: add missing max sample rates
iio: adc: ad7606: use devm_mutex_init()
iio: adc: ad7606: fix kernel-doc comments
iio: adc: ad7606: use kernel identifier name style
iio: adc: ad7606: don't use address field
iio: adc: ad7606: drop ch param from ad7606_scale_setup_cb_t
iio: adc: ad7606: dynamically allocate channel info
iio: adc: ad7606_par: add ad7606c chips

drivers/iio/adc/ad7606.c | 312 ++++++++++++++++++++-----------------------
drivers/iio/adc/ad7606.h | 171 +++++++-----------------
drivers/iio/adc/ad7606_par.c | 37 +----
drivers/iio/adc/ad7606_spi.c | 98 ++------------
4 files changed, 210 insertions(+), 408 deletions(-)
---
base-commit: 9f36acefb2621d980734a5bb7d74e0e24e0af166
change-id: 20250311-iio-adc-ad7606-improvements-997d7af218e3

Best regards,
--
David Lechner <dlechner@xxxxxxxxxxxx>