| # SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) |
| # Copyright 2023 Analog Devices Inc. |
| %YAML 1.2 |
| --- |
| $id: http://devicetree.org/schemas/iio/adc/adi,ad7173.yaml# |
| $schema: http://devicetree.org/meta-schemas/core.yaml# |
| |
| title: Analog Devices AD7173 ADC |
| |
| maintainers: |
| - Ceclan Dumitru <dumitru.ceclan@analog.com> |
| |
| description: | |
| Analog Devices AD717x ADC's: |
| The AD717x family offer a complete integrated Sigma-Delta ADC solution which |
| can be used in high precision, low noise single channel applications |
| (Life Science measurements) or higher speed multiplexed applications |
| (Factory Automation PLC Input modules). The Sigma-Delta ADC is intended |
| primarily for measurement of signals close to DC but also delivers |
| outstanding performance with input bandwidths out to ~10kHz. |
| |
| Datasheets for supported chips: |
| https://www.analog.com/media/en/technical-documentation/data-sheets/AD7172-2.pdf |
| https://www.analog.com/media/en/technical-documentation/data-sheets/AD7172-4.pdf |
| https://www.analog.com/media/en/technical-documentation/data-sheets/AD7173-8.pdf |
| https://www.analog.com/media/en/technical-documentation/data-sheets/AD7175-2.pdf |
| https://www.analog.com/media/en/technical-documentation/data-sheets/AD7175-8.pdf |
| https://www.analog.com/media/en/technical-documentation/data-sheets/AD7176-2.pdf |
| https://www.analog.com/media/en/technical-documentation/data-sheets/AD7177-2.pdf |
| |
| properties: |
| compatible: |
| enum: |
| - adi,ad7172-2 |
| - adi,ad7172-4 |
| - adi,ad7173-8 |
| - adi,ad7175-2 |
| - adi,ad7175-8 |
| - adi,ad7176-2 |
| - adi,ad7177-2 |
| |
| reg: |
| maxItems: 1 |
| |
| interrupts: |
| minItems: 1 |
| items: |
| - description: | |
| Ready: multiplexed with SPI data out. While SPI CS is low, |
| can be used to indicate the completion of a conversion. |
| |
| - description: | |
| Error: The three error bits in the status register (ADC_ERROR, CRC_ERROR, |
| and REG_ERROR) are OR'ed, inverted, and mapped to the ERROR pin. |
| Therefore, the ERROR pin indicates that an error has occurred. |
| |
| interrupt-names: |
| minItems: 1 |
| items: |
| - const: rdy |
| - const: err |
| |
| '#address-cells': |
| const: 1 |
| |
| '#size-cells': |
| const: 0 |
| |
| spi-max-frequency: |
| maximum: 20000000 |
| |
| gpio-controller: |
| description: Marks the device node as a GPIO controller. |
| |
| '#gpio-cells': |
| const: 2 |
| description: |
| The first cell is the GPIO number and the second cell specifies |
| GPIO flags, as defined in <dt-bindings/gpio/gpio.h>. |
| |
| vref-supply: |
| description: | |
| Differential external reference supply used for conversion. The reference |
| voltage (Vref) specified here must be the voltage difference between the |
| REF+ and REF- pins: Vref = (REF+) - (REF-). |
| |
| vref2-supply: |
| description: | |
| Differential external reference supply used for conversion. The reference |
| voltage (Vref2) specified here must be the voltage difference between the |
| REF2+ and REF2- pins: Vref2 = (REF2+) - (REF2-). |
| |
| avdd-supply: |
| description: Avdd supply, can be used as reference for conversion. |
| This supply is referenced to AVSS, voltage specified here |
| represents (AVDD1 - AVSS). |
| |
| avdd2-supply: |
| description: Avdd2 supply, used as the input to the internal voltage regulator. |
| This supply is referenced to AVSS, voltage specified here |
| represents (AVDD2 - AVSS). |
| |
| iovdd-supply: |
| description: iovdd supply, used for the chip digital interface. |
| |
| clocks: |
| maxItems: 1 |
| description: | |
| Optional external clock source. Can include one clock source: external |
| clock or external crystal. |
| |
| clock-names: |
| enum: |
| - ext-clk |
| - xtal |
| |
| '#clock-cells': |
| const: 0 |
| |
| patternProperties: |
| "^channel@[0-9a-f]$": |
| type: object |
| $ref: adc.yaml |
| unevaluatedProperties: false |
| |
| properties: |
| reg: |
| minimum: 0 |
| maximum: 15 |
| |
| diff-channels: |
| items: |
| minimum: 0 |
| maximum: 31 |
| |
| adi,reference-select: |
| description: | |
| Select the reference source to use when converting on |
| the specific channel. Valid values are: |
| vref : REF+ /REF− |
| vref2 : REF2+ /REF2− |
| refout-avss: REFOUT/AVSS (Internal reference) |
| avdd : AVDD /AVSS |
| |
| External reference ref2 only available on ad7173-8 and ad7172-4. |
| Internal reference refout-avss not available on ad7172-4. |
| |
| If not specified, internal reference used (if available). |
| $ref: /schemas/types.yaml#/definitions/string |
| enum: |
| - vref |
| - vref2 |
| - refout-avss |
| - avdd |
| default: refout-avss |
| |
| required: |
| - reg |
| - diff-channels |
| |
| required: |
| - compatible |
| - reg |
| |
| allOf: |
| - $ref: /schemas/spi/spi-peripheral-props.yaml# |
| |
| # Only ad7172-4, ad7173-8 and ad7175-8 support vref2 |
| # Other models have [0-3] channel registers |
| - if: |
| properties: |
| compatible: |
| not: |
| contains: |
| enum: |
| - adi,ad7172-4 |
| - adi,ad7173-8 |
| - adi,ad7175-8 |
| then: |
| properties: |
| vref2-supply: false |
| patternProperties: |
| "^channel@[0-9a-f]$": |
| properties: |
| adi,reference-select: |
| enum: |
| - vref |
| - refout-avss |
| - avdd |
| reg: |
| maximum: 3 |
| |
| # Model ad7172-4 does not support internal reference |
| - if: |
| properties: |
| compatible: |
| contains: |
| const: adi,ad7172-4 |
| then: |
| patternProperties: |
| "^channel@[0-9a-f]$": |
| properties: |
| reg: |
| maximum: 7 |
| adi,reference-select: |
| enum: |
| - vref |
| - vref2 |
| - avdd |
| required: |
| - adi,reference-select |
| |
| - if: |
| anyOf: |
| - required: [clock-names] |
| - required: [clocks] |
| then: |
| properties: |
| '#clock-cells': false |
| |
| 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 = "adi,ad7173-8"; |
| reg = <0>; |
| |
| #address-cells = <1>; |
| #size-cells = <0>; |
| |
| interrupts = <25 IRQ_TYPE_EDGE_FALLING>; |
| interrupt-names = "rdy"; |
| interrupt-parent = <&gpio>; |
| spi-max-frequency = <5000000>; |
| gpio-controller; |
| #gpio-cells = <2>; |
| #clock-cells = <0>; |
| |
| vref-supply = <&dummy_regulator>; |
| |
| channel@0 { |
| reg = <0>; |
| bipolar; |
| diff-channels = <0 1>; |
| adi,reference-select = "vref"; |
| }; |
| |
| channel@1 { |
| reg = <1>; |
| diff-channels = <2 3>; |
| }; |
| |
| channel@2 { |
| reg = <2>; |
| bipolar; |
| diff-channels = <4 5>; |
| }; |
| |
| channel@3 { |
| reg = <3>; |
| bipolar; |
| diff-channels = <6 7>; |
| }; |
| |
| channel@4 { |
| reg = <4>; |
| diff-channels = <8 9>; |
| adi,reference-select = "avdd"; |
| }; |
| }; |
| }; |