Re: [PATCH v4 02/10] dt-bindings: iio: adc: support the TI ADS126x ADC family

From: Jonathan Cameron

Date: Sat Aug 29 2026 - 21:54:05 EST


On Fri, 28 Aug 2026 01:38:17 -0500
Kurt Borja <kuurtb@xxxxxxxxx> wrote:

> The ADS1262 and ADS1263 are 32-bit, 38.4-kSPS delta-sigma ADCs with an
> integrated PGA, internal reference, excitation and burn-out current
> sources for sensor biasing and diagnostics. The ADS1263 is compatible
> with ADS1262, but includes a second auxiliary ADC (ADC2) to perform main
> channel (ADC1) cross-checking measurements, system background
> measurements, or temperature compensation of the primary sensor.
>
> Both parts can configure per-channel voltage reference source,
> excitation current sources (IDAC), plus input and IDAC chopping for
> offset and IDAC mismatch cancellation. This lets the device drive and
> ratiometrically measure RTDs and other resistive sensors.
>
> Signed-off-by: Kurt Borja <kuurtb@xxxxxxxxx>
A few queries in here from me.

Jonathan

> ---
> .../devicetree/bindings/iio/adc/ti,ads1262.yaml | 376 +++++++++++++++++++++
> MAINTAINERS | 6 +
> 2 files changed, 382 insertions(+)
>
> diff --git a/Documentation/devicetree/bindings/iio/adc/ti,ads1262.yaml b/Documentation/devicetree/bindings/iio/adc/ti,ads1262.yaml
> new file mode 100644
> index 000000000000..7e26572388e4
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/iio/adc/ti,ads1262.yaml

> + '#io-channel-cells':
> + minimum: 1
> + maximum: 2
> + description: |
> + The first cell selects the channel by its reg. The second cell selects
> + between the main ADC (ADC1) and the auxiliary ADC (ADC2) as follows:
> + 0: ADC1
> + 1: ADC2

This one is odd enough I wonder if we just say it is always 2 and that
for the parts with out an ADC2 the value of the selector cell can only be
0. Also, does this ordering make sense? Maybe pick the ADC with first
parameter is more natural?

> +
> + '#gpio-cells':
> + const: 2

> +patternProperties:

...

> + reference-sources:
> + minItems: 2
> + description:
> + Indicates the reference sources for this channel. The first and second
> + items are the positive (REFP) and negative (REFN) sources of the main
> + ADC (ADC1). The third item is the reference source of the secondary
> + ADC (ADC2) and must always have a positive differential voltage.

I think it would be good to illustrate the 2 only case in the first example.

> + items:
> + - enum: [internal-p, refp1, refp2, refp3, avdd]
> + - enum: [internal-n, refn1, refn2, refn3, avss]
> + - enum: [internal, refp1-refn1, refp2-refn2, refp3-refn3, avdd-avss]
> +
> + ti,reference-reversal:
> + $ref: /schemas/types.yaml#/definitions/flag
> + description:
> + Indicates that the ADC1 (this has no effect on ADC2) reference voltage
> + for this channel has negative polarity and thus should be internally
> + reversed.
> +
> + excitation-channels:
> + minItems: 1
> + maxItems: 2
> + description:
> + Selects the pins for the IDAC sources from 0 (AIN0) to 10 (AINCOM).
> + The first value corresponds to IDAC1 and the second to IDAC2.
> + items:
> + minimum: 0
> + maximum: 10

Why do we allow configurations with just IADC1 (minItems: 1) but not those
with just IADC2?

> +
> + excitation-current-nanoamp:
> + minItems: 1
> + maxItems: 2
> + description:
> + The first value corresponds to IDAC1 and the second to IDAC2.
> + items:
> + enum: [50000, 100000, 250000, 500000, 750000, 1000000, 1500000,
> + 2000000, 2500000, 3000000]
> +
> + excitation-current-chopping: true

> +allOf:
> + - $ref: /schemas/spi/spi-peripheral-props.yaml#
> + - if:
> + properties:
> + compatible:
> + contains:
> + const: ti,ads1263
> + then:
> + properties:
> + '#io-channel-cells':
> + minimum: 1
> + maximum: 2
> + patternProperties:
> + "^channel@[0-9]+$":
> + properties:
> + reference-sources:
> + minItems: 3
> + maxItems: 3
> + default: [internal-p, internal-n, internal]
> + else:
> + properties:
> + '#io-channel-cells':
> + const: 1
> + patternProperties:
> + "^channel@[0-9]+$":
> + properties:
> + reference-sources:
> + minItems: 2
> + maxItems: 2
> + default: [internal-p, internal-n]
> +
> +unevaluatedProperties: false
> +
> +examples:
> + - |
> + #include <dt-bindings/gpio/gpio.h>
> + #include <dt-bindings/interrupt-controller/irq.h>
> +
> + spi {
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
> + adc@0 {
> + compatible = "ti,ads1262";
> + reg = <0>;
> + spi-max-frequency = <8000000>;
> + spi-cpha;
> + avdd-supply = <&avdd>;
> + dvdd-supply = <&dvdd>;
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
> + interrupts-extended = <&gpio 0 IRQ_TYPE_EDGE_FALLING>;
> + interrupt-names = "drdy";
> +
> + /* Typical common mode voltage configuration */
> + aincom-supply = <&ads1262_vbias>;
> +
> + regulators {
> + ads1262_vbias: vbias { };
> + };
> +
> + channel@0 {
> + reg = <0>;
> + single-channel = <0>;
> + /* The VBIAS is enabled on pin 10 (AINCOM) */
> + common-mode-channel = <10>;

As above, I'd like a dual reference source example usage on
a channel here.

> + };
> + };
> + };