[PATCH v4 00/11] iio: adc: Add support for AD4170 series of ADCs

From: Marcelo Schmitt
Date: Mon Jun 02 2025 - 07:35:40 EST


Hi,

As always, thank you to all reviewers of previous versions of this set.
v4 comes with a few changes to comply with suggestions provided to v3, being
most of them related to the adaptation of dt-binding properties.

This patch set adds support for Analog Devices AD4170 and similar sigma-delta ADCs.

Patch 1 adds device tree documentation for the parts.
Patch 2 adds basic device support.
Patch 3 adds support for calibration scale.
Patch 4 adds support for calibration bias.
Patch 5 adds support for sample frequency along with filter type configuration.
Patch 6 adds support for buffered ADC reading.
Patch 7 adds clock provider support
Patch 8 adds GPIO controller support.
Patch 9 adds internal temperature sensor support.
Patch 10 adds support for external RTD and bridge circuit sensors.
Patch 11 adds timestamp channel [new patch]

Change log v3 -> v4

[Device tree changes]
- Dropped sensor-node and most of defs.
- Updated external sensor props to have similar name and type of adi,ad4130 ones.
- Added constraints to properties related to external bridge sensor excitation.

[General IIO driver changes]
- Locked device mutex to ensure attribute read correctness on all archs
- Fixed typo unasigned -> unassigned

[Basic driver patch]
- Added previously missing #include <linux/cleanup.h>.
- Moved struct completion declaration to reduce commit diff.

[Calibration scale/gain patch]
[Calibration bias/offset patch]
- No longer restoring calib gain or calib offset on reg write fail.

[Digital filter and sample frequency config patch]
- Use scoped_guard to ensure correct lock release order in ad4170_set_filter_type().

[Buffer support patch]
- Fixed a bug in the filling of the IIO device buffer.

[CLOCK provider patch]
- Explicitly stated that clock divider (CLKDIV) control support is not provided.
- Skipped clock provider register if "#clock-cells" is not present.

[GPIO controller patch]
- Made AD4170 depend on GPIOLIB.

[External sensor patch]
- Update to string adi,sensor-type dt property.
- Adapted external sensor dt prop parsing to work with the updated version of those props.
- Improvements to readability.

[New patch - Add timestamp channel]

Link to v3: https://lore.kernel.org/linux-iio/cover.1747083143.git.marcelo.schmitt@xxxxxxxxxx/
Link to v2: https://lore.kernel.org/linux-iio/cover.1745841276.git.marcelo.schmitt@xxxxxxxxxx/
Link to v1: https://lore.kernel.org/linux-iio/cover.1744200264.git.marcelo.schmitt@xxxxxxxxxx/

Ana-Maria Cusco (1):
iio: adc: Add basic support for AD4170

Marcelo Schmitt (10):
dt-bindings: iio: adc: Add AD4170
iio: adc: ad4170: Add support for calibration gain
iio: adc: ad4170: Add support for calibration bias
iio: adc: ad4170: Add digital filter and sample frequency config
support
iio: adc: ad4170: Add support for buffered data capture
iio: adc: ad4170: Add clock provider support
iio: adc: ad4170: Add GPIO controller support
iio: adc: ad4170: Add support for internal temperature sensor
iio: adc: ad4170: Add support for weigh scale and RTD sensors
iio: adc: ad4170: Add timestamp channel

.../bindings/iio/adc/adi,ad4170.yaml | 543 +++
MAINTAINERS | 8 +
drivers/iio/adc/Kconfig | 16 +
drivers/iio/adc/Makefile | 1 +
drivers/iio/adc/ad4170.c | 2973 +++++++++++++++++
5 files changed, 3541 insertions(+)
create mode 100644 Documentation/devicetree/bindings/iio/adc/adi,ad4170.yaml
create mode 100644 drivers/iio/adc/ad4170.c


base-commit: c06335516e8c14f501a479a4d9de0e6c09c52ef2
--
2.47.2