# 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 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. Analog Devices AD411x ADC's: The AD411X family encompasses a series of low power, low noise, 24-bit, sigma-delta analog-to-digital converters that offer a versatile range of specifications. They integrate an analog front end suitable for processing fully differential/single-ended and bipolar voltage inputs. Datasheets for supported chips: https://www.analog.com/media/en/technical-documentation/data-sheets/AD4111.pdf https://www.analog.com/media/en/technical-documentation/data-sheets/AD4112.pdf https://www.analog.com/media/en/technical-documentation/data-sheets/AD4114.pdf https://www.analog.com/media/en/technical-documentation/data-sheets/AD4115.pdf https://www.analog.com/media/en/technical-documentation/data-sheets/AD4116.pdf 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,ad4111 - adi,ad4112 - adi,ad4114 - adi,ad4115 - adi,ad4116 - 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 . 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: description: | This property is used for defining the inputs of a differential voltage channel. The first value is the positive input and the second value is the negative input of the channel. Family AD411x supports a dedicated VINCOM voltage input. To select it set the second channel to 16. (VIN2, VINCOM) -> diff-channels = <2 16> There are special values that can be selected besides the voltage analog inputs: 21: REF+ 22: REF− Supported only by AD7172-2, AD7172-4, AD7175-2, AD7175-8, AD7177-2, must be paired together and can be used to monitor the power supply of the ADC: 19: ((AVDD1 − AVSS)/5)+ 20: ((AVDD1 − AVSS)/5)− items: minimum: 0 maximum: 31 single-channel: description: | This property is used for defining a current channel or the positive input of a voltage channel (single-ended or pseudo-differential). Models AD4111 and AD4112 support current channels. Example: (IIN2+, IIN2−) -> single-channel = <2> To correctly configure a current channel set the "adi,current-channel" property to true. To configure a single-ended/pseudo-differential channel set the "common-mode-channel" property to the desired negative voltage input. When used as a voltage channel, special inputs are valid as well. minimum: 0 maximum: 31 common-mode-channel: description: This property is used for defining the negative input of a single-ended or pseudo-differential voltage channel. Special inputs are valid as well. 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 adi,current-channel: $ref: /schemas/types.yaml#/definitions/flag description: | Signal that the selected inputs are current channels. Only available on AD4111 and AD4112. required: - reg allOf: - oneOf: - required: [single-channel] properties: diff-channels: false - required: [diff-channels] properties: single-channel: false adi,current-channel: false common-mode-channel: false - if: required: [common-mode-channel] then: properties: adi,current-channel: false required: - compatible - reg allOf: - $ref: /schemas/spi/spi-peripheral-props.yaml# # Only ad7172-4, ad7173-8 and ad7175-8 support vref2 - 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 - if: properties: compatible: contains: enum: - adi,ad4114 - adi,ad4115 - adi,ad4116 - adi,ad7173-8 - adi,ad7175-8 then: patternProperties: "^channel@[0-9a-f]$": properties: reg: maximum: 15 - if: properties: compatible: contains: enum: - adi,ad7172-2 - adi,ad7175-2 - adi,ad7176-2 - adi,ad7177-2 then: patternProperties: "^channel@[0-9a-f]$": properties: 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: properties: compatible: contains: enum: - adi,ad4111 - adi,ad4112 - adi,ad4114 - adi,ad4115 - adi,ad4116 then: properties: avdd2-supply: false - if: properties: compatible: not: contains: enum: - adi,ad4111 - adi,ad4112 then: patternProperties: "^channel@[0-9a-f]$": properties: adi,current-channel: false - if: anyOf: - required: [clock-names] - required: [clocks] then: properties: '#clock-cells': false unevaluatedProperties: false examples: # Example AD7173-8 with external reference connected to REF+/REF-: - | #include #include 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"; }; }; }; # Example AD4111 with current channel and single-ended channel: - | #include #include spi { #address-cells = <1>; #size-cells = <0>; adc@0 { compatible = "adi,ad4111"; 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>; channel@0 { reg = <0>; bipolar; diff-channels = <4 5>; }; // Single ended channel VIN2/VINCOM channel@1 { reg = <1>; bipolar; single-channel = <2>; common-mode-channel = <16>; }; // Current channel IN2+/IN2- channel@2 { reg = <2>; single-channel = <2>; adi,current-channel; }; }; };