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,ad74413r.yaml#
562306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
662306a36Sopenharmony_ci
762306a36Sopenharmony_cititle: Analog Devices AD74412R/AD74413R device
862306a36Sopenharmony_ci
962306a36Sopenharmony_cimaintainers:
1062306a36Sopenharmony_ci  - Cosmin Tanislav <cosmin.tanislav@analog.com>
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_cidescription: |
1362306a36Sopenharmony_ci  The AD74412R and AD74413R are quad-channel software configurable input/output
1462306a36Sopenharmony_ci  solutions for building and process control applications. They contain
1562306a36Sopenharmony_ci  functionality for analog output, analog input, digital input, resistance
1662306a36Sopenharmony_ci  temperature detector, and thermocouple measurements integrated
1762306a36Sopenharmony_ci  into a single chip solution with an SPI interface.
1862306a36Sopenharmony_ci  The devices feature a 16-bit ADC and four configurable 13-bit DACs to provide
1962306a36Sopenharmony_ci  four configurable input/output channels and a suite of diagnostic functions.
2062306a36Sopenharmony_ci  The AD74413R differentiates itself from the AD74412R by being HART-compatible.
2162306a36Sopenharmony_ci    https://www.analog.com/en/products/ad74412r.html
2262306a36Sopenharmony_ci    https://www.analog.com/en/products/ad74413r.html
2362306a36Sopenharmony_ci
2462306a36Sopenharmony_ciproperties:
2562306a36Sopenharmony_ci  compatible:
2662306a36Sopenharmony_ci    enum:
2762306a36Sopenharmony_ci      - adi,ad74412r
2862306a36Sopenharmony_ci      - adi,ad74413r
2962306a36Sopenharmony_ci
3062306a36Sopenharmony_ci  reg:
3162306a36Sopenharmony_ci    maxItems: 1
3262306a36Sopenharmony_ci
3362306a36Sopenharmony_ci  '#address-cells':
3462306a36Sopenharmony_ci    const: 1
3562306a36Sopenharmony_ci
3662306a36Sopenharmony_ci  '#size-cells':
3762306a36Sopenharmony_ci    const: 0
3862306a36Sopenharmony_ci
3962306a36Sopenharmony_ci  spi-max-frequency:
4062306a36Sopenharmony_ci    maximum: 1000000
4162306a36Sopenharmony_ci
4262306a36Sopenharmony_ci  spi-cpol: true
4362306a36Sopenharmony_ci
4462306a36Sopenharmony_ci  interrupts:
4562306a36Sopenharmony_ci    maxItems: 1
4662306a36Sopenharmony_ci
4762306a36Sopenharmony_ci  refin-supply: true
4862306a36Sopenharmony_ci
4962306a36Sopenharmony_ci  shunt-resistor-micro-ohms:
5062306a36Sopenharmony_ci    description:
5162306a36Sopenharmony_ci      Shunt (sense) resistor value in micro-Ohms.
5262306a36Sopenharmony_ci    default: 100000000
5362306a36Sopenharmony_ci
5462306a36Sopenharmony_ci  reset-gpios:
5562306a36Sopenharmony_ci    maxItems: 1
5662306a36Sopenharmony_ci
5762306a36Sopenharmony_cirequired:
5862306a36Sopenharmony_ci  - compatible
5962306a36Sopenharmony_ci  - reg
6062306a36Sopenharmony_ci  - spi-max-frequency
6162306a36Sopenharmony_ci  - spi-cpol
6262306a36Sopenharmony_ci  - refin-supply
6362306a36Sopenharmony_ci
6462306a36Sopenharmony_cipatternProperties:
6562306a36Sopenharmony_ci  "^channel@[0-3]$":
6662306a36Sopenharmony_ci    type: object
6762306a36Sopenharmony_ci    additionalProperties: false
6862306a36Sopenharmony_ci    description: Represents the external channels which are connected to the device.
6962306a36Sopenharmony_ci
7062306a36Sopenharmony_ci    properties:
7162306a36Sopenharmony_ci      reg:
7262306a36Sopenharmony_ci        description: |
7362306a36Sopenharmony_ci          The channel number. It can have up to 4 channels numbered from 0 to 3.
7462306a36Sopenharmony_ci        minimum: 0
7562306a36Sopenharmony_ci        maximum: 3
7662306a36Sopenharmony_ci
7762306a36Sopenharmony_ci      adi,ch-func:
7862306a36Sopenharmony_ci        $ref: /schemas/types.yaml#/definitions/uint32
7962306a36Sopenharmony_ci        description: |
8062306a36Sopenharmony_ci          Channel function.
8162306a36Sopenharmony_ci          HART functions are not supported on AD74412R.
8262306a36Sopenharmony_ci          0 - CH_FUNC_HIGH_IMPEDANCE
8362306a36Sopenharmony_ci          1 - CH_FUNC_VOLTAGE_OUTPUT
8462306a36Sopenharmony_ci          2 - CH_FUNC_CURRENT_OUTPUT
8562306a36Sopenharmony_ci          3 - CH_FUNC_VOLTAGE_INPUT
8662306a36Sopenharmony_ci          4 - CH_FUNC_CURRENT_INPUT_EXT_POWER
8762306a36Sopenharmony_ci          5 - CH_FUNC_CURRENT_INPUT_LOOP_POWER
8862306a36Sopenharmony_ci          6 - CH_FUNC_RESISTANCE_INPUT
8962306a36Sopenharmony_ci          7 - CH_FUNC_DIGITAL_INPUT_LOGIC
9062306a36Sopenharmony_ci          8 - CH_FUNC_DIGITAL_INPUT_LOOP_POWER
9162306a36Sopenharmony_ci          9 - CH_FUNC_CURRENT_INPUT_EXT_POWER_HART
9262306a36Sopenharmony_ci          10 - CH_FUNC_CURRENT_INPUT_LOOP_POWER_HART
9362306a36Sopenharmony_ci        minimum: 0
9462306a36Sopenharmony_ci        maximum: 10
9562306a36Sopenharmony_ci        default: 0
9662306a36Sopenharmony_ci
9762306a36Sopenharmony_ci      adi,gpo-comparator:
9862306a36Sopenharmony_ci        type: boolean
9962306a36Sopenharmony_ci        description: |
10062306a36Sopenharmony_ci          Whether to configure GPO as a comparator or not.
10162306a36Sopenharmony_ci          When not configured as a comparator, the GPO will be treated as an
10262306a36Sopenharmony_ci          output-only GPIO.
10362306a36Sopenharmony_ci
10462306a36Sopenharmony_ci      drive-strength-microamp:
10562306a36Sopenharmony_ci        description: |
10662306a36Sopenharmony_ci          For channels configured as digital input, this configures the sink
10762306a36Sopenharmony_ci          current.
10862306a36Sopenharmony_ci        minimum: 0
10962306a36Sopenharmony_ci        maximum: 1800
11062306a36Sopenharmony_ci        default: 0
11162306a36Sopenharmony_ci        multipleOf: 120
11262306a36Sopenharmony_ci
11362306a36Sopenharmony_ci    required:
11462306a36Sopenharmony_ci      - reg
11562306a36Sopenharmony_ci
11662306a36Sopenharmony_ciallOf:
11762306a36Sopenharmony_ci  - $ref: /schemas/spi/spi-peripheral-props.yaml#
11862306a36Sopenharmony_ci
11962306a36Sopenharmony_ciunevaluatedProperties: false
12062306a36Sopenharmony_ci
12162306a36Sopenharmony_ciexamples:
12262306a36Sopenharmony_ci  - |
12362306a36Sopenharmony_ci    #include <dt-bindings/gpio/gpio.h>
12462306a36Sopenharmony_ci    #include <dt-bindings/interrupt-controller/irq.h>
12562306a36Sopenharmony_ci    #include <dt-bindings/iio/addac/adi,ad74413r.h>
12662306a36Sopenharmony_ci
12762306a36Sopenharmony_ci    spi {
12862306a36Sopenharmony_ci      #address-cells = <1>;
12962306a36Sopenharmony_ci      #size-cells = <0>;
13062306a36Sopenharmony_ci
13162306a36Sopenharmony_ci      addac@0 {
13262306a36Sopenharmony_ci        compatible = "adi,ad74413r";
13362306a36Sopenharmony_ci        reg = <0>;
13462306a36Sopenharmony_ci        spi-max-frequency = <1000000>;
13562306a36Sopenharmony_ci        spi-cpol;
13662306a36Sopenharmony_ci
13762306a36Sopenharmony_ci        #address-cells = <1>;
13862306a36Sopenharmony_ci        #size-cells = <0>;
13962306a36Sopenharmony_ci
14062306a36Sopenharmony_ci        interrupt-parent = <&gpio>;
14162306a36Sopenharmony_ci        interrupts = <26 IRQ_TYPE_EDGE_FALLING>;
14262306a36Sopenharmony_ci
14362306a36Sopenharmony_ci        refin-supply = <&ad74413r_refin>;
14462306a36Sopenharmony_ci        reset-gpios = <&gpio2 6 GPIO_ACTIVE_LOW>;
14562306a36Sopenharmony_ci
14662306a36Sopenharmony_ci        channel@0 {
14762306a36Sopenharmony_ci          reg = <0>;
14862306a36Sopenharmony_ci
14962306a36Sopenharmony_ci          adi,ch-func = <CH_FUNC_VOLTAGE_OUTPUT>;
15062306a36Sopenharmony_ci        };
15162306a36Sopenharmony_ci
15262306a36Sopenharmony_ci        channel@1 {
15362306a36Sopenharmony_ci          reg = <1>;
15462306a36Sopenharmony_ci
15562306a36Sopenharmony_ci          adi,ch-func = <CH_FUNC_CURRENT_OUTPUT>;
15662306a36Sopenharmony_ci        };
15762306a36Sopenharmony_ci
15862306a36Sopenharmony_ci        channel@2 {
15962306a36Sopenharmony_ci          reg = <2>;
16062306a36Sopenharmony_ci
16162306a36Sopenharmony_ci          adi,ch-func = <CH_FUNC_DIGITAL_INPUT_LOGIC>;
16262306a36Sopenharmony_ci          adi,gpo-comparator;
16362306a36Sopenharmony_ci        };
16462306a36Sopenharmony_ci
16562306a36Sopenharmony_ci        channel@3 {
16662306a36Sopenharmony_ci          reg = <3>;
16762306a36Sopenharmony_ci
16862306a36Sopenharmony_ci          adi,ch-func = <CH_FUNC_CURRENT_INPUT_EXT_POWER>;
16962306a36Sopenharmony_ci        };
17062306a36Sopenharmony_ci      };
17162306a36Sopenharmony_ci    };
17262306a36Sopenharmony_ci...
173