Re: [RFC PATCH 5/5] dt-bindings: iio: adc: add bindings for TI ADS1262

Jonathan Cameron
2025-05-04T16:01:49Z

On Thu, 1 May 2025 15:30:43 +0530
Sayyad Abid <sayyad.abid16@gmail.com> wrote:

> Add the Device Tree binding documentation for the Texas Instruments ADS1262 ADC.
>
> Signed-off-by: Sayyad Abid <sayyad.abid16@gmail.com>
Hi Sayyad,

A few additional comments from me.

Jonathan

> ---
> .../bindings/iio/adc/ti,ads1262.yaml | 189 ++++++++++++++++++
> 1 file changed, 189 insertions(+)
> create mode 100644 Documentation/devicetree/bindings/iio/adc/ti,ads1262.yaml
>
> 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..8c4cc2cf6467
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/iio/adc/ti,ads1262.yaml
> @@ -0,0 +1,189 @@
> +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/iio/adc/ti,ads1262.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: Texas Instruments' ADS1262 32-Bit Analog to Digital Converter
> +
> +maintainers:
> + - Sayyad Abid <sayyad.abid16@gmail.com>
> +
> +description: |
> + Texas Instruments ADS1262 32-Bit Analog to Digital Converter with,
> + internal temperature sensor, GPIOs and PGAs
> +
> + The ADS1262 is a 32-bit, 38-kSPS, precision ADC with a programmable gain
> + amplifier (PGA) and internal voltage reference. It features:
> + - 11 single-ended or 5 differential input channels
> + - Internal temperature sensor
> + - Programmable gain amplifier (PGA) with gains from 1 to 32
> + - Internal voltage reference
> + - GPIO pins for control and monitoring
> + - SPI interface
> +
> + Specifications about the part can be found at:
> + https://www.ti.com/product/ADS1262
> +
> +properties:
> + compatible:
> + enum:
> + - ti,ads1262
> +
> + reg:
> + maxItems: 1
> + description: SPI chip select number
> +
> + spi-max-frequency:
> + maximum: 7372800
> + description: Maximum SPI clock frequency in Hz (7.3728 MHz)
> +
> + spi-cpha:
> + type: boolean
> + description: Required for SPI mode 1 operation
> +
> + reset-gpios:
> + maxItems: 1
> + description: GPIO specifier for the reset pin (active low)
> +
> + vref-supply:
> + description: |
> + The regulator supply for ADC reference voltage. If not specified,
> + the internal 2.5V reference will be used.
> +
> + '#address-cells':
> + const: 1
> +
> + '#size-cells':
> + const: 0
> +
> + '#io-channel-cells':
> + const: 1
> +
> + ti,pga-bypass:
> + type: boolean
> + description: |
> + If true, bypass the PGA. If false or not specified, PGA is enabled.

Why do we want to support this? If we do, why is it a wiring thing (so suitable
for DT) rather than a runtime configuration thing. e.g. If I set the scale to
1 does that mean I can bypass the PGA?

> +
> + ti,data-rate:
As has been commented, this is a userspace thing to control, not
something we should get from DT.

> + $ref: /schemas/types.yaml#/definitions/uint32
> + minimum: 0
> + maximum: 15
> + description: |
> + Data acquisition rate in samples per second
> + 0: 2.5
...

> +
> +patternProperties:
> + "^channel@([0-9]|1[0-1])$":
> + type: object
> + additionalProperties: false
> + description: |
> + Represents the external channels which are connected to the ADC.
> + Channels 0-9 are available for external signals, channel 10 is AINCOM,
> + and channel 11 is the internal temperature sensor.
> +
> + properties:

Should reference adc.yaml which will provide much of the basic per channel stuff
and ensure standard formats etc.

> + reg:
> + description: |
> + Channel number. It can have up to 10 channels numbered from 0 to 9,
> + channel 10 is AINCOM, and channel 11 is the internal temperature sensor.
> + items:
> + - minimum: 0
> + maximum: 11
> +
> + diff-channels:
> + description: |
> + List of two channel numbers for differential measurement.
> + First number is positive input, second is negative input.
> + Not applicable for temperature sensor (channel 11).
> + items:
> + - minimum: 0
> + maximum: 9
> + - minimum: 0
> + maximum: 9
> +
> + ti,gain:
> + $ref: /schemas/types.yaml#/definitions/uint32
> + minimum: 0
> + maximum: 5
> + description: |
> + PGA gain setting. Not applicable for temperature sensor (channel 11).

Looks like a userspace thing rather than a DT one.

> + 0: 1 (default)
> + 1: 2
> + 2: 4
> + 3: 8
> + 4: 16
> + 5: 32
> +
> + required:
> + - reg
> +
> +allOf:
> + - $ref: /schemas/spi/spi-peripheral-props.yaml#
> +
> +examples:
> + - |
> + #include <dt-bindings/gpio/gpio.h>
> +
> + spi {
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
> + ads1262: adc@0 {
> + compatible = "ti,ads1262";
> + reg = <0>;
> + spi-max-frequency = <7372800>;
> + vref-supply = <&adc_vref>;
> + spi-cpha;
> + reset-gpios = <&gpio1 16 GPIO_ACTIVE_LOW>;
> + ti,pga-bypass;
> + ti,data-rate = <15>; /* 38400 SPS */
> +
> + #address-cells = <1>;
> + #size-cells = <0>;
> + #io-channel-cells = <1>;
> +
> + /* Single-ended channel */
> + channel@0 {
> + reg = <0>;
> + };
> +
> + /* Differential channel */
> + channel@1 {
> + reg = <1>;
> + diff-channels = <1 2>;
> + ti,gain = <2>; /* Gain of 4 */
> + };
> +
> + /* Temperature sensor */
> + channel@11 {
> + reg = <11>;
> + };
> + };
> + };
> +...