1# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/iio/addac/adi,ad74413r.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Analog Devices AD74412R/AD74413R device
8
9maintainers:
10  - Cosmin Tanislav <cosmin.tanislav@analog.com>
11
12description: |
13  The AD74412R and AD74413R are quad-channel software configurable input/output
14  solutions for building and process control applications. They contain
15  functionality for analog output, analog input, digital input, resistance
16  temperature detector, and thermocouple measurements integrated
17  into a single chip solution with an SPI interface.
18  The devices feature a 16-bit ADC and four configurable 13-bit DACs to provide
19  four configurable input/output channels and a suite of diagnostic functions.
20  The AD74413R differentiates itself from the AD74412R by being HART-compatible.
21    https://www.analog.com/en/products/ad74412r.html
22    https://www.analog.com/en/products/ad74413r.html
23
24properties:
25  compatible:
26    enum:
27      - adi,ad74412r
28      - adi,ad74413r
29
30  reg:
31    maxItems: 1
32
33  '#address-cells':
34    const: 1
35
36  '#size-cells':
37    const: 0
38
39  spi-max-frequency:
40    maximum: 1000000
41
42  spi-cpol: true
43
44  interrupts:
45    maxItems: 1
46
47  refin-supply: true
48
49  shunt-resistor-micro-ohms:
50    description:
51      Shunt (sense) resistor value in micro-Ohms.
52    default: 100000000
53
54  reset-gpios:
55    maxItems: 1
56
57required:
58  - compatible
59  - reg
60  - spi-max-frequency
61  - spi-cpol
62  - refin-supply
63
64patternProperties:
65  "^channel@[0-3]$":
66    type: object
67    additionalProperties: false
68    description: Represents the external channels which are connected to the device.
69
70    properties:
71      reg:
72        description: |
73          The channel number. It can have up to 4 channels numbered from 0 to 3.
74        minimum: 0
75        maximum: 3
76
77      adi,ch-func:
78        $ref: /schemas/types.yaml#/definitions/uint32
79        description: |
80          Channel function.
81          HART functions are not supported on AD74412R.
82          0 - CH_FUNC_HIGH_IMPEDANCE
83          1 - CH_FUNC_VOLTAGE_OUTPUT
84          2 - CH_FUNC_CURRENT_OUTPUT
85          3 - CH_FUNC_VOLTAGE_INPUT
86          4 - CH_FUNC_CURRENT_INPUT_EXT_POWER
87          5 - CH_FUNC_CURRENT_INPUT_LOOP_POWER
88          6 - CH_FUNC_RESISTANCE_INPUT
89          7 - CH_FUNC_DIGITAL_INPUT_LOGIC
90          8 - CH_FUNC_DIGITAL_INPUT_LOOP_POWER
91          9 - CH_FUNC_CURRENT_INPUT_EXT_POWER_HART
92          10 - CH_FUNC_CURRENT_INPUT_LOOP_POWER_HART
93        minimum: 0
94        maximum: 10
95        default: 0
96
97      adi,gpo-comparator:
98        type: boolean
99        description: |
100          Whether to configure GPO as a comparator or not.
101          When not configured as a comparator, the GPO will be treated as an
102          output-only GPIO.
103
104      drive-strength-microamp:
105        description: |
106          For channels configured as digital input, this configures the sink
107          current.
108        minimum: 0
109        maximum: 1800
110        default: 0
111        multipleOf: 120
112
113    required:
114      - reg
115
116allOf:
117  - $ref: /schemas/spi/spi-peripheral-props.yaml#
118
119unevaluatedProperties: false
120
121examples:
122  - |
123    #include <dt-bindings/gpio/gpio.h>
124    #include <dt-bindings/interrupt-controller/irq.h>
125    #include <dt-bindings/iio/addac/adi,ad74413r.h>
126
127    spi {
128      #address-cells = <1>;
129      #size-cells = <0>;
130
131      addac@0 {
132        compatible = "adi,ad74413r";
133        reg = <0>;
134        spi-max-frequency = <1000000>;
135        spi-cpol;
136
137        #address-cells = <1>;
138        #size-cells = <0>;
139
140        interrupt-parent = <&gpio>;
141        interrupts = <26 IRQ_TYPE_EDGE_FALLING>;
142
143        refin-supply = <&ad74413r_refin>;
144        reset-gpios = <&gpio2 6 GPIO_ACTIVE_LOW>;
145
146        channel@0 {
147          reg = <0>;
148
149          adi,ch-func = <CH_FUNC_VOLTAGE_OUTPUT>;
150        };
151
152        channel@1 {
153          reg = <1>;
154
155          adi,ch-func = <CH_FUNC_CURRENT_OUTPUT>;
156        };
157
158        channel@2 {
159          reg = <2>;
160
161          adi,ch-func = <CH_FUNC_DIGITAL_INPUT_LOGIC>;
162          adi,gpo-comparator;
163        };
164
165        channel@3 {
166          reg = <3>;
167
168          adi,ch-func = <CH_FUNC_CURRENT_INPUT_EXT_POWER>;
169        };
170      };
171    };
172...
173