162306a36Sopenharmony_ci# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
262306a36Sopenharmony_ci%YAML 1.2
362306a36Sopenharmony_ci---
462306a36Sopenharmony_ci$id: http://devicetree.org/schemas/iio/addac/adi,ad74115.yaml#
562306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
662306a36Sopenharmony_ci
762306a36Sopenharmony_cititle: Analog Devices AD74115H device
862306a36Sopenharmony_ci
962306a36Sopenharmony_cimaintainers:
1062306a36Sopenharmony_ci  - Cosmin Tanislav <cosmin.tanislav@analog.com>
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_cidescription: |
1362306a36Sopenharmony_ci  The AD74115H is a single-channel software configurable input/output
1462306a36Sopenharmony_ci  device for industrial control applications. It contains functionality for
1562306a36Sopenharmony_ci  analog output, analog input, digital output, digital input, resistance
1662306a36Sopenharmony_ci  temperature detector, and thermocouple measurements integrated into a single
1762306a36Sopenharmony_ci  chip solution with an SPI interface. The device features a 16-bit ADC and a
1862306a36Sopenharmony_ci  14-bit DAC.
1962306a36Sopenharmony_ci
2062306a36Sopenharmony_ci    https://www.analog.com/en/products/ad74115h.html
2162306a36Sopenharmony_ci
2262306a36Sopenharmony_ciproperties:
2362306a36Sopenharmony_ci  compatible:
2462306a36Sopenharmony_ci    enum:
2562306a36Sopenharmony_ci      - adi,ad74115h
2662306a36Sopenharmony_ci
2762306a36Sopenharmony_ci  reg:
2862306a36Sopenharmony_ci    maxItems: 1
2962306a36Sopenharmony_ci
3062306a36Sopenharmony_ci  spi-max-frequency:
3162306a36Sopenharmony_ci    maximum: 24000000
3262306a36Sopenharmony_ci
3362306a36Sopenharmony_ci  spi-cpol: true
3462306a36Sopenharmony_ci
3562306a36Sopenharmony_ci  reset-gpios:
3662306a36Sopenharmony_ci    maxItems: 1
3762306a36Sopenharmony_ci
3862306a36Sopenharmony_ci  interrupts:
3962306a36Sopenharmony_ci    minItems: 1
4062306a36Sopenharmony_ci    maxItems: 2
4162306a36Sopenharmony_ci
4262306a36Sopenharmony_ci  interrupt-names:
4362306a36Sopenharmony_ci    minItems: 1
4462306a36Sopenharmony_ci    maxItems: 2
4562306a36Sopenharmony_ci    items:
4662306a36Sopenharmony_ci      enum:
4762306a36Sopenharmony_ci        - adc_rdy
4862306a36Sopenharmony_ci        - alert
4962306a36Sopenharmony_ci
5062306a36Sopenharmony_ci  avdd-supply: true
5162306a36Sopenharmony_ci  avcc-supply: true
5262306a36Sopenharmony_ci  dvcc-supply: true
5362306a36Sopenharmony_ci  dovdd-supply: true
5462306a36Sopenharmony_ci  refin-supply: true
5562306a36Sopenharmony_ci
5662306a36Sopenharmony_ci  adi,ch-func:
5762306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/uint32
5862306a36Sopenharmony_ci    description: |
5962306a36Sopenharmony_ci      Channel function.
6062306a36Sopenharmony_ci      0 - High impedance
6162306a36Sopenharmony_ci      1 - Voltage output
6262306a36Sopenharmony_ci      2 - Current output
6362306a36Sopenharmony_ci      3 - Voltage input
6462306a36Sopenharmony_ci      4 - Current input, externally-powered
6562306a36Sopenharmony_ci      5 - Current input, loop-powered
6662306a36Sopenharmony_ci      6 - Resistance input
6762306a36Sopenharmony_ci      7 - RTD measure
6862306a36Sopenharmony_ci      8 - Digital input logic
6962306a36Sopenharmony_ci      9 - Digital input, loop-powered
7062306a36Sopenharmony_ci      10 - Current output with HART
7162306a36Sopenharmony_ci      11 - Current input, externally-powered, with HART
7262306a36Sopenharmony_ci      12 - Current input, loop-powered, with HART
7362306a36Sopenharmony_ci    minimum: 0
7462306a36Sopenharmony_ci    maximum: 12
7562306a36Sopenharmony_ci    default: 0
7662306a36Sopenharmony_ci
7762306a36Sopenharmony_ci  adi,conv2-mux:
7862306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/uint32
7962306a36Sopenharmony_ci    description: |
8062306a36Sopenharmony_ci      Input node for ADC conversion 2.
8162306a36Sopenharmony_ci      0 - SENSE_EXT1 to AGND_SENSE
8262306a36Sopenharmony_ci      1 - SENSE_EXT2 to AGND_SENSE
8362306a36Sopenharmony_ci      2 - SENSE_EXT2 to SENSE_EXT1
8462306a36Sopenharmony_ci      3 - AGND to AGND
8562306a36Sopenharmony_ci    minimum: 0
8662306a36Sopenharmony_ci    maximum: 3
8762306a36Sopenharmony_ci    default: 0
8862306a36Sopenharmony_ci
8962306a36Sopenharmony_ci  adi,conv2-range-microvolt:
9062306a36Sopenharmony_ci    description: Conversion range for ADC conversion 2.
9162306a36Sopenharmony_ci    oneOf:
9262306a36Sopenharmony_ci      - items:
9362306a36Sopenharmony_ci          - enum: [-2500000, 0]
9462306a36Sopenharmony_ci          - const: 2500000
9562306a36Sopenharmony_ci      - items:
9662306a36Sopenharmony_ci          - enum: [-12000000, 0]
9762306a36Sopenharmony_ci          - const: 12000000
9862306a36Sopenharmony_ci      - items:
9962306a36Sopenharmony_ci          - const: -2500000
10062306a36Sopenharmony_ci          - const: 0
10162306a36Sopenharmony_ci      - items:
10262306a36Sopenharmony_ci          - const: -104000
10362306a36Sopenharmony_ci          - const: 104000
10462306a36Sopenharmony_ci      - items:
10562306a36Sopenharmony_ci          - const: 0
10662306a36Sopenharmony_ci          - const: 625000
10762306a36Sopenharmony_ci
10862306a36Sopenharmony_ci  adi,sense-agnd-buffer-low-power:
10962306a36Sopenharmony_ci    type: boolean
11062306a36Sopenharmony_ci    description:
11162306a36Sopenharmony_ci      Whether to enable low-power buffered mode for the AGND sense pin.
11262306a36Sopenharmony_ci
11362306a36Sopenharmony_ci  adi,lf-buffer-low-power:
11462306a36Sopenharmony_ci    type: boolean
11562306a36Sopenharmony_ci    description:
11662306a36Sopenharmony_ci      Whether to enable low-power buffered mode for the low-side filtered
11762306a36Sopenharmony_ci      sense pin.
11862306a36Sopenharmony_ci
11962306a36Sopenharmony_ci  adi,hf-buffer-low-power:
12062306a36Sopenharmony_ci    type: boolean
12162306a36Sopenharmony_ci    description:
12262306a36Sopenharmony_ci      Whether to enable low-power buffered mode for the high-side filtered
12362306a36Sopenharmony_ci      sense pin.
12462306a36Sopenharmony_ci
12562306a36Sopenharmony_ci  adi,ext2-buffer-low-power:
12662306a36Sopenharmony_ci    type: boolean
12762306a36Sopenharmony_ci    description: Whether to enable low-power buffered mode for the EXT2 pin.
12862306a36Sopenharmony_ci
12962306a36Sopenharmony_ci  adi,ext1-buffer-low-power:
13062306a36Sopenharmony_ci    type: boolean
13162306a36Sopenharmony_ci    description: Whether to enable low-power buffered mode for the EXT1 pin.
13262306a36Sopenharmony_ci
13362306a36Sopenharmony_ci  adi,comparator-invert:
13462306a36Sopenharmony_ci    type: boolean
13562306a36Sopenharmony_ci    description: Whether to invert the comparator output.
13662306a36Sopenharmony_ci
13762306a36Sopenharmony_ci  adi,digital-input-sink-range-high:
13862306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/uint32
13962306a36Sopenharmony_ci    description: |
14062306a36Sopenharmony_ci      When not present, the digital input range is from 0 to 3700uA in steps
14162306a36Sopenharmony_ci      of 120uA, with a ~2k series resistance.
14262306a36Sopenharmony_ci      When present, the digital input range is from 0 to 7400uA in steps
14362306a36Sopenharmony_ci      of 240uA, with a ~1k series resistance.
14462306a36Sopenharmony_ci
14562306a36Sopenharmony_ci  adi,digital-input-sink-microamp:
14662306a36Sopenharmony_ci    description: Sink current in digital input mode.
14762306a36Sopenharmony_ci    minimum: 0
14862306a36Sopenharmony_ci    maximum: 3700
14962306a36Sopenharmony_ci    default: 0
15062306a36Sopenharmony_ci
15162306a36Sopenharmony_ci  adi,digital-input-debounce-mode-counter-reset:
15262306a36Sopenharmony_ci    type: boolean
15362306a36Sopenharmony_ci    description: |
15462306a36Sopenharmony_ci      When not present, a counter increments when the signal is asserted
15562306a36Sopenharmony_ci      and decrements when the signal is de-asserted.
15662306a36Sopenharmony_ci      When present, a counter increments while the signal is asserted and
15762306a36Sopenharmony_ci      resets when the signal de-asserts
15862306a36Sopenharmony_ci
15962306a36Sopenharmony_ci  adi,digital-input-unbuffered:
16062306a36Sopenharmony_ci    type: boolean
16162306a36Sopenharmony_ci    description: Whether to buffer digital input signals.
16262306a36Sopenharmony_ci
16362306a36Sopenharmony_ci  adi,digital-input-short-circuit-detection:
16462306a36Sopenharmony_ci    type: boolean
16562306a36Sopenharmony_ci    description: Whether to detect digital input short circuits.
16662306a36Sopenharmony_ci
16762306a36Sopenharmony_ci  adi,digital-input-open-circuit-detection:
16862306a36Sopenharmony_ci    type: boolean
16962306a36Sopenharmony_ci    description: Whether to detect digital input open circuits.
17062306a36Sopenharmony_ci
17162306a36Sopenharmony_ci  adi,digital-input-threshold-mode-fixed:
17262306a36Sopenharmony_ci    type: boolean
17362306a36Sopenharmony_ci    description: |
17462306a36Sopenharmony_ci      When not present, the digital input threshold range is -0.96 * AVDD
17562306a36Sopenharmony_ci      to AVDD.
17662306a36Sopenharmony_ci      When present, the threshold range is fixed from -19V to 30V.
17762306a36Sopenharmony_ci
17862306a36Sopenharmony_ci  adi,dac-bipolar:
17962306a36Sopenharmony_ci    type: boolean
18062306a36Sopenharmony_ci    description: |
18162306a36Sopenharmony_ci      When not present, the DAC operates in the 0V to 12V range.
18262306a36Sopenharmony_ci      When present, the DAC operates in the -12V to 12V range.
18362306a36Sopenharmony_ci
18462306a36Sopenharmony_ci  adi,charge-pump:
18562306a36Sopenharmony_ci    type: boolean
18662306a36Sopenharmony_ci    description: Whether to enable the internal charge pump.
18762306a36Sopenharmony_ci
18862306a36Sopenharmony_ci  adi,dac-hart-slew:
18962306a36Sopenharmony_ci    type: boolean
19062306a36Sopenharmony_ci    description: Whether to use a HART-compatible slew rate.
19162306a36Sopenharmony_ci
19262306a36Sopenharmony_ci  adi,dac-current-limit-low:
19362306a36Sopenharmony_ci    type: boolean
19462306a36Sopenharmony_ci    description: |
19562306a36Sopenharmony_ci      When not present, the DAC short-circuit current limit is 32mA in
19662306a36Sopenharmony_ci      either source or sink for VOUT and 4mA sink for IOUT.
19762306a36Sopenharmony_ci      When present, the limit is 16mA in either source or sink for VOUT,
19862306a36Sopenharmony_ci      1mA sink for IOUT.
19962306a36Sopenharmony_ci
20062306a36Sopenharmony_ci  adi,4-wire-rtd:
20162306a36Sopenharmony_ci    type: boolean
20262306a36Sopenharmony_ci    description: |
20362306a36Sopenharmony_ci      When not present, the ADC should be used for measuring 3-wire RTDs.
20462306a36Sopenharmony_ci      When present, the ADC should be used for measuring 4-wire RTDs.
20562306a36Sopenharmony_ci
20662306a36Sopenharmony_ci  adi,3-wire-rtd-excitation-swap:
20762306a36Sopenharmony_ci    type: boolean
20862306a36Sopenharmony_ci    description: Whether to swap the excitation for 3-wire RTD.
20962306a36Sopenharmony_ci
21062306a36Sopenharmony_ci  adi,rtd-excitation-current-microamp:
21162306a36Sopenharmony_ci    description: Excitation current to apply to RTD.
21262306a36Sopenharmony_ci    enum: [250, 500, 750, 1000]
21362306a36Sopenharmony_ci    default: 250
21462306a36Sopenharmony_ci
21562306a36Sopenharmony_ci  adi,ext1-burnout:
21662306a36Sopenharmony_ci    type: boolean
21762306a36Sopenharmony_ci    description: Whether to enable burnout current for EXT1.
21862306a36Sopenharmony_ci
21962306a36Sopenharmony_ci  adi,ext1-burnout-current-nanoamp:
22062306a36Sopenharmony_ci    description:
22162306a36Sopenharmony_ci      Burnout current in nanoamps to be applied to EXT1.
22262306a36Sopenharmony_ci    enum: [0, 50, 500, 1000, 10000]
22362306a36Sopenharmony_ci    default: 0
22462306a36Sopenharmony_ci
22562306a36Sopenharmony_ci  adi,ext1-burnout-current-polarity-sourcing:
22662306a36Sopenharmony_ci    type: boolean
22762306a36Sopenharmony_ci    description: |
22862306a36Sopenharmony_ci      When not present, the burnout current polarity for EXT1 is sinking.
22962306a36Sopenharmony_ci      When present, the burnout current polarity for EXT1 is sourcing.
23062306a36Sopenharmony_ci
23162306a36Sopenharmony_ci  adi,ext2-burnout:
23262306a36Sopenharmony_ci    type: boolean
23362306a36Sopenharmony_ci    description: Whether to enable burnout current for EXT2.
23462306a36Sopenharmony_ci
23562306a36Sopenharmony_ci  adi,ext2-burnout-current-nanoamp:
23662306a36Sopenharmony_ci    description: Burnout current in nanoamps to be applied to EXT2.
23762306a36Sopenharmony_ci    enum: [0, 50, 500, 1000, 10000]
23862306a36Sopenharmony_ci    default: 0
23962306a36Sopenharmony_ci
24062306a36Sopenharmony_ci  adi,ext2-burnout-current-polarity-sourcing:
24162306a36Sopenharmony_ci    type: boolean
24262306a36Sopenharmony_ci    description: |
24362306a36Sopenharmony_ci      When not present, the burnout current polarity for EXT2 is sinking.
24462306a36Sopenharmony_ci      When present, the burnout current polarity for EXT2 is sourcing.
24562306a36Sopenharmony_ci
24662306a36Sopenharmony_ci  adi,viout-burnout:
24762306a36Sopenharmony_ci    type: boolean
24862306a36Sopenharmony_ci    description: Whether to enable burnout current for VIOUT.
24962306a36Sopenharmony_ci
25062306a36Sopenharmony_ci  adi,viout-burnout-current-nanoamp:
25162306a36Sopenharmony_ci    description: Burnout current in nanoamps to be applied to VIOUT.
25262306a36Sopenharmony_ci    enum: [0, 1000, 10000]
25362306a36Sopenharmony_ci    default: 0
25462306a36Sopenharmony_ci
25562306a36Sopenharmony_ci  adi,viout-burnout-current-polarity-sourcing:
25662306a36Sopenharmony_ci    type: boolean
25762306a36Sopenharmony_ci    description: |
25862306a36Sopenharmony_ci      When not present, the burnout current polarity for VIOUT is sinking.
25962306a36Sopenharmony_ci      When present, the burnout current polarity for VIOUT is sourcing.
26062306a36Sopenharmony_ci
26162306a36Sopenharmony_ci  adi,gpio0-mode:
26262306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/uint32
26362306a36Sopenharmony_ci    description: |
26462306a36Sopenharmony_ci      GPIO functions.
26562306a36Sopenharmony_ci      0 - Disabled
26662306a36Sopenharmony_ci      1 - Logic I/O
26762306a36Sopenharmony_ci      2 - Comparator output
26862306a36Sopenharmony_ci      3 - Control HART CD
26962306a36Sopenharmony_ci      4 - Monitor HART CD
27062306a36Sopenharmony_ci      5 - Monitor HART EOM status
27162306a36Sopenharmony_ci    minimum: 0
27262306a36Sopenharmony_ci    maximum: 5
27362306a36Sopenharmony_ci    default: 0
27462306a36Sopenharmony_ci
27562306a36Sopenharmony_ci  adi,gpio1-mode:
27662306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/uint32
27762306a36Sopenharmony_ci    description: |
27862306a36Sopenharmony_ci      GPIO functions.
27962306a36Sopenharmony_ci      0 - Disabled
28062306a36Sopenharmony_ci      1 - Logic I/O
28162306a36Sopenharmony_ci      2 - Drive external digital output FET
28262306a36Sopenharmony_ci      3 - Control HART RXD
28362306a36Sopenharmony_ci      4 - Monitor HART RXD
28462306a36Sopenharmony_ci      5 - Monitor HART SOM status
28562306a36Sopenharmony_ci    minimum: 0
28662306a36Sopenharmony_ci    maximum: 5
28762306a36Sopenharmony_ci    default: 0
28862306a36Sopenharmony_ci
28962306a36Sopenharmony_ci  adi,gpio2-mode:
29062306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/uint32
29162306a36Sopenharmony_ci    description: |
29262306a36Sopenharmony_ci      GPIO functions.
29362306a36Sopenharmony_ci      0 - Disabled
29462306a36Sopenharmony_ci      1 - Logic I/O
29562306a36Sopenharmony_ci      2 - Drive internal digital output FET
29662306a36Sopenharmony_ci      3 - Control HART TXD
29762306a36Sopenharmony_ci      4 - Monitor HART TXD
29862306a36Sopenharmony_ci      5 - Monitor HART TX complete status
29962306a36Sopenharmony_ci    minimum: 0
30062306a36Sopenharmony_ci    maximum: 5
30162306a36Sopenharmony_ci    default: 0
30262306a36Sopenharmony_ci
30362306a36Sopenharmony_ci  adi,gpio3-mode:
30462306a36Sopenharmony_ci    $ref: /schemas/types.yaml#/definitions/uint32
30562306a36Sopenharmony_ci    description: |
30662306a36Sopenharmony_ci      GPIO functions.
30762306a36Sopenharmony_ci      0 - Disabled
30862306a36Sopenharmony_ci      1 - Logic I/O
30962306a36Sopenharmony_ci      2 - High impedance
31062306a36Sopenharmony_ci      3 - Control HART RTS
31162306a36Sopenharmony_ci      4 - Monitor HART RTS
31262306a36Sopenharmony_ci      5 - Monitor HART CD complete status
31362306a36Sopenharmony_ci    minimum: 0
31462306a36Sopenharmony_ci    maximum: 5
31562306a36Sopenharmony_ci    default: 0
31662306a36Sopenharmony_ci
31762306a36Sopenharmony_cirequired:
31862306a36Sopenharmony_ci  - compatible
31962306a36Sopenharmony_ci  - reg
32062306a36Sopenharmony_ci  - spi-cpol
32162306a36Sopenharmony_ci  - avdd-supply
32262306a36Sopenharmony_ci
32362306a36Sopenharmony_ciallOf:
32462306a36Sopenharmony_ci  - $ref: /schemas/spi/spi-peripheral-props.yaml#
32562306a36Sopenharmony_ci  - if:
32662306a36Sopenharmony_ci      required:
32762306a36Sopenharmony_ci        - adi,digital-input-sink-range-high
32862306a36Sopenharmony_ci    then:
32962306a36Sopenharmony_ci      properties:
33062306a36Sopenharmony_ci        adi,digital-input-sink-microamp:
33162306a36Sopenharmony_ci          maximum: 7400
33262306a36Sopenharmony_ci
33362306a36Sopenharmony_ciunevaluatedProperties: false
33462306a36Sopenharmony_ci
33562306a36Sopenharmony_ciexamples:
33662306a36Sopenharmony_ci  - |
33762306a36Sopenharmony_ci    #include <dt-bindings/gpio/gpio.h>
33862306a36Sopenharmony_ci    #include <dt-bindings/interrupt-controller/irq.h>
33962306a36Sopenharmony_ci
34062306a36Sopenharmony_ci    spi {
34162306a36Sopenharmony_ci      #address-cells = <1>;
34262306a36Sopenharmony_ci      #size-cells = <0>;
34362306a36Sopenharmony_ci
34462306a36Sopenharmony_ci      addac@0 {
34562306a36Sopenharmony_ci        compatible = "adi,ad74115h";
34662306a36Sopenharmony_ci        reg = <0>;
34762306a36Sopenharmony_ci
34862306a36Sopenharmony_ci        spi-max-frequency = <12000000>;
34962306a36Sopenharmony_ci        spi-cpol;
35062306a36Sopenharmony_ci
35162306a36Sopenharmony_ci        reset-gpios = <&gpio 27 GPIO_ACTIVE_LOW>;
35262306a36Sopenharmony_ci
35362306a36Sopenharmony_ci        interrupt-parent = <&gpio>;
35462306a36Sopenharmony_ci        interrupts = <26 IRQ_TYPE_EDGE_FALLING>;
35562306a36Sopenharmony_ci        interrupt-names = "adc_rdy";
35662306a36Sopenharmony_ci
35762306a36Sopenharmony_ci        avdd-supply = <&ad74115_avdd>;
35862306a36Sopenharmony_ci
35962306a36Sopenharmony_ci        adi,ch-func = <1>;
36062306a36Sopenharmony_ci        adi,conv2-mux = <2>;
36162306a36Sopenharmony_ci        adi,conv2-range-microvolt = <(-12000000) 12000000>;
36262306a36Sopenharmony_ci
36362306a36Sopenharmony_ci        adi,gpio0-mode = <1>;
36462306a36Sopenharmony_ci        adi,gpio1-mode = <1>;
36562306a36Sopenharmony_ci        adi,gpio2-mode = <1>;
36662306a36Sopenharmony_ci        adi,gpio3-mode = <1>;
36762306a36Sopenharmony_ci
36862306a36Sopenharmony_ci        adi,dac-bipolar;
36962306a36Sopenharmony_ci      };
37062306a36Sopenharmony_ci    };
37162306a36Sopenharmony_ci...
372