[PATCH v5 00/10] iio: adc: Add TI ADS126X ADC family support
From: Kurt Borja
Date: Sat Oct 10 2026 - 02:53:43 EST
Hi all,
I apologize for the long delays between versions. This month has been
very busy at university plus some personal stuff. I expect to have more
time now, so development should be faster. Thanks for your patience!
Signed-off-by: Kurt Borja <kuurtb@xxxxxxxxx>
---
v5:
dt-bindings
-----------
- Change the '#io-channel-cells' layout to <adc inp inn>: the first cell
selects ADC1 (1) or ADC2 (2), and the other two cells select the
positive and negative inputs, instead of addressing channels by reg.
Document the monitor input numbers (11-14).
- Drop the per-compatible '#io-channel-cells' constraints.
- Allow hexadecimal unit addresses in channel node names.
- In the first example, describe the refp3 and refn3 supplies used by
the channel's reference-sources.
ti-ads1262
----------
- Get the device name from match data (struct ads1262_chip_info) instead
of reading the device ID register at probe.
- Translate io-channel specifiers by the channel's positive and negative
inputs.
- Cache the AVDD and AVSS voltage values to avoid locking issues later
when the VBIAS regulator is introduced.
- Channels using the internal reference on both sides (internal-p,
internal-n) no longer need the AVSS voltage.
- Only treat the supply as bipolar when the AVSS voltage is non-zero.
- Optimize the buffer SPI message in preenable() and release it in
postdisable(), so it can't race the trigger handler when a trigger
other than DRDY is used.
- Reject multi-channel sampling with the DRDY trigger when the buffer is
enabled, instead of in validate_scan_mask(), which missed trigger
changes made after the scan mask was set.
- Report REFOUT as AVSS + 2.5 V through a .get_voltage() callback instead
of a fixed 2.5 V, so it is correct with bipolar supplies.
- @Andy:
I didn't convert the reset GPIO into a reset controller for two
reasons. The most important one is that we need exclusive control
over the line because it also acts as PWDN, depending on the
timings. The second is that we are currently using it to keep the
chip powered-on, so we would need to depend on CONFIG_RESET_GPIO to
avoid issues, and that seems a bit unnecesary.
Also I didn't use variables for the single-channel and diff-channels
properties because IMO it's easier to read that way.
Let me know what you think about these.
Misc:
- Drop the redundant <linux/compiler_attributes.h> include.
- Annotate st->channels with __counted_by_ptr(num_channels).
- Rename ADS1262_POWER_TRANS_USECS to ADS1262_POWER_TRANS_US.
- Turn ads1262_default_channel into a macro instead of a static const.
- Add unit suffixes to the clock rate constant and field.
- Use ret == 0 for the completion timeout check.
- Join the ads1262_regmap_write() call onto one line.
- Split the initialization of i in ads1262_parse_channels() and move
it next to its first use.
- Use the ?: operator for the clock rate fallback.
- Rename ads1262_supply_setup() to ads1262_supplies_setup().
- Drop the NULL check in ads1262_regulator_disable().
v4: https://patch.msgid.link/20260828-ads126x-v4-0-1dc27e9c0260@xxxxxxxxx
v3: https://patch.msgid.link/20260807-ads126x-v3-0-f89925d72792@xxxxxxxxx
v2: https://patch.msgid.link/20260628-ads126x-v2-0-4b1b231325ba@xxxxxxxxx
v1: https://patch.msgid.link/20260612-ads126x-v1-0-894c788d03ed@xxxxxxxxx
---
Kurt Borja (10):
dt-bindings: adc: add excitation-current-chopping property
dt-bindings: iio: adc: support the TI ADS126x ADC family
iio: adc: add the ti-ads1262 driver
iio: adc: ti-ads1262: support per-channel sampling frequency
iio: adc: ti-ads1262: support per-channel reference and gain
iio: adc: ti-ads1262: support input chopping
iio: adc: ti-ads1262: support excitation currents
iio: adc: ti-ads1262: support triggered buffer sampling
iio: adc: ti-ads1262: support REFOUT and VBIAS regulators
iio: adc: ti-ads1262: support common mode supplies
Documentation/devicetree/bindings/iio/adc/adc.yaml | 8 +
.../devicetree/bindings/iio/adc/ti,ads1262.yaml | 381 ++++
MAINTAINERS | 7 +
drivers/iio/adc/Kconfig | 14 +
drivers/iio/adc/Makefile | 1 +
drivers/iio/adc/ti-ads1262.c | 2136 ++++++++++++++++++++
6 files changed, 2547 insertions(+)
---
base-commit: 04434a1d0f311d76b1f15fa987918b471a0b8c6a
change-id: 20251129-ads126x-fb6107505cae
--
Thanks,
~ Kurt