[PATCH v5 0/4] iio: adc: Add support for LTC2378 and similar ADCs
From: Marcelo Schmitt
Date: Thu Jul 02 2026 - 17:45:23 EST
This patch series adds support for LTC2378 and similar low noise, low power,
high speed, successive approximation register (SAR) ADCs. These ADCs are similar
among each other, varying mainly on the amount of precision bits, maximum sample
rate, and input configuration (either fully differential or pseudo-differential).
Patch 1 adds device tree documentation for LTC2378.
Patch 2 enables single-shot sample read with a GPIO connected to the LTC2378 CNV pin.
Patch 3 enables high-speed data captures with SPI offloading.
The setup is similar to AD4030, with a specialized PWM generator being used both
for SPI offload triggering and conversion start signaling.
Patch 4 enables running buffered data captures without SPI offloading.
Even though these parts are somewhat similar to AD4000, the wiring configuration
for LTC parts is different as well as the available HDL for high speed sample
rate mode. Because of that, I propose creating a new device driver for
supporting LTC2378-like devices.
Specifications can be found at:
https://www.analog.com/media/en/technical-documentation/data-sheets/233818fa.pdf
https://www.analog.com/media/en/technical-documentation/data-sheets/236416fa.pdf
https://www.analog.com/media/en/technical-documentation/data-sheets/236418f.pdf
https://www.analog.com/media/en/technical-documentation/data-sheets/236716fa.pdf
https://www.analog.com/media/en/technical-documentation/data-sheets/236718f.pdf
https://www.analog.com/media/en/technical-documentation/data-sheets/236816f.pdf
https://www.analog.com/media/en/technical-documentation/data-sheets/236818f.pdf
https://www.analog.com/media/en/technical-documentation/data-sheets/236918fa.pdf
https://www.analog.com/media/en/technical-documentation/data-sheets/237016fa.pdf
https://www.analog.com/media/en/technical-documentation/data-sheets/237616fa.pdf
https://www.analog.com/media/en/technical-documentation/data-sheets/237618fa.pdf
https://www.analog.com/media/en/technical-documentation/data-sheets/237620fb.pdf
https://www.analog.com/media/en/technical-documentation/data-sheets/237716fa.pdf
https://www.analog.com/media/en/technical-documentation/data-sheets/237718fa.pdf
https://www.analog.com/media/en/technical-documentation/data-sheets/237720fb.pdf
https://www.analog.com/media/en/technical-documentation/data-sheets/237816fa.pdf
https://www.analog.com/media/en/technical-documentation/data-sheets/237818fa.pdf
https://www.analog.com/media/en/technical-documentation/data-sheets/237820fb.pdf
https://www.analog.com/media/en/technical-documentation/data-sheets/237918fb.pdf
https://www.analog.com/media/en/technical-documentation/data-sheets/238016fb.pdf
Previous submissions:
v4: https://lore.kernel.org/linux-iio/cover.1782397418.git.marcelo.schmitt@xxxxxxxxxx/
v3: https://lore.kernel.org/linux-iio/cover.1781661028.git.marcelo.schmitt@xxxxxxxxxx/
v2: https://lore.kernel.org/linux-iio/cover.1779976379.git.marcelo.schmitt@xxxxxxxxxx/
v1: https://lore.kernel.org/linux-iio/cover.1779117444.git.marcelo.schmitt1@xxxxxxxxx/
Change log v4 -> v5:
[DT]
- LTC2338 is slightly different from LTC2378 and, because of that, software
can't really handle those the same way. No longer setting fallback for LTC2338.
[IIO]
- Took internal reference buffer amplification into account.
- Added checks for PWM parameters after both CNV and Offload trigger PWMs
have been configured.
- Return EDOM instead of EIO when failing to achieve a specific PWM configuration.
- Set single-read transfer bits_per_word so the SPI subsystem re-arranges data
to CPU endianness, enabling us to reuse offload_chan specifications for
single-shot reads.
- Replaced open-coded check by in_range().
- Used conventional loop count decrement pattern instead of count increment.
- Renamed max_sample_rate_hz -> max_sample_rate_Hz.
- Dropped error message on devm_iio_triggered_buffer_setup() fail.
- A few other minor codestyle improvements.
Hopefully, this new version shall tackle all concerns and issues raised both by
human reviewers and sashiko.
With best regards,
Marcelo
Marcelo Schmitt (4):
dt-bindings: iio: adc: Add ltc2378
iio: adc: ltc2378: Add support for LTC2378-20 and similar ADCs
iio: adc: ltc2378: Enable high-speed data capture
iio: adc: ltc2378: Enable triggered buffer data capture
.../bindings/iio/adc/adi,ltc2378.yaml | 184 ++++
MAINTAINERS | 8 +
drivers/iio/adc/Kconfig | 19 +
drivers/iio/adc/Makefile | 1 +
drivers/iio/adc/ltc2378.c | 802 ++++++++++++++++++
5 files changed, 1014 insertions(+)
create mode 100644 Documentation/devicetree/bindings/iio/adc/adi,ltc2378.yaml
create mode 100644 drivers/iio/adc/ltc2378.c
base-commit: cc746297b23e89bd5df9f91f3a0ca209e8991763
--
2.53.0