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,ad74115.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Analog Devices AD74115H device
8
9maintainers:
10  - Cosmin Tanislav <cosmin.tanislav@analog.com>
11
12description: |
13  The AD74115H is a single-channel software configurable input/output
14  device for industrial control applications. It contains functionality for
15  analog output, analog input, digital output, digital input, resistance
16  temperature detector, and thermocouple measurements integrated into a single
17  chip solution with an SPI interface. The device features a 16-bit ADC and a
18  14-bit DAC.
19
20    https://www.analog.com/en/products/ad74115h.html
21
22properties:
23  compatible:
24    enum:
25      - adi,ad74115h
26
27  reg:
28    maxItems: 1
29
30  spi-max-frequency:
31    maximum: 24000000
32
33  spi-cpol: true
34
35  reset-gpios: true
36
37  interrupts:
38    minItems: 1
39    maxItems: 2
40
41  interrupt-names:
42    minItems: 1
43    maxItems: 2
44    items:
45      enum:
46        - adc_rdy
47        - alert
48
49  avdd-supply: true
50  avcc-supply: true
51  dvcc-supply: true
52  dovdd-supply: true
53  refin-supply: true
54
55  adi,ch-func:
56    $ref: /schemas/types.yaml#/definitions/uint32
57    description: |
58      Channel function.
59      0 - High impedance
60      1 - Voltage output
61      2 - Current output
62      3 - Voltage input
63      4 - Current input, externally-powered
64      5 - Current input, loop-powered
65      6 - Resistance input
66      7 - RTD measure
67      8 - Digital input logic
68      9 - Digital input, loop-powered
69      10 - Current output with HART
70      11 - Current input, externally-powered, with HART
71      12 - Current input, loop-powered, with HART
72    minimum: 0
73    maximum: 12
74    default: 0
75
76  adi,conv2-mux:
77    $ref: /schemas/types.yaml#/definitions/uint32
78    description: |
79      Input node for ADC conversion 2.
80      0 - SENSE_EXT1 to AGND_SENSE
81      1 - SENSE_EXT2 to AGND_SENSE
82      2 - SENSE_EXT2 to SENSE_EXT1
83      3 - AGND to AGND
84    minimum: 0
85    maximum: 3
86    default: 0
87
88  adi,conv2-range-microvolt:
89    description: Conversion range for ADC conversion 2.
90    oneOf:
91      - items:
92          - enum: [-2500000, 0]
93          - const: 2500000
94      - items:
95          - enum: [-12000000, 0]
96          - const: 12000000
97      - items:
98          - const: -2500000
99          - const: 0
100      - items:
101          - const: -104000
102          - const: 104000
103      - items:
104          - const: 0
105          - const: 625000
106
107  adi,sense-agnd-buffer-low-power:
108    type: boolean
109    description:
110      Whether to enable low-power buffered mode for the AGND sense pin.
111
112  adi,lf-buffer-low-power:
113    type: boolean
114    description:
115      Whether to enable low-power buffered mode for the low-side filtered
116      sense pin.
117
118  adi,hf-buffer-low-power:
119    type: boolean
120    description:
121      Whether to enable low-power buffered mode for the high-side filtered
122      sense pin.
123
124  adi,ext2-buffer-low-power:
125    type: boolean
126    description: Whether to enable low-power buffered mode for the EXT2 pin.
127
128  adi,ext1-buffer-low-power:
129    type: boolean
130    description: Whether to enable low-power buffered mode for the EXT1 pin.
131
132  adi,comparator-invert:
133    type: boolean
134    description: Whether to invert the comparator output.
135
136  adi,digital-input-sink-range-high:
137    $ref: /schemas/types.yaml#/definitions/uint32
138    description: |
139      When not present, the digital input range is from 0 to 3700uA in steps
140      of 120uA, with a ~2k series resistance.
141      When present, the digital input range is from 0 to 7400uA in steps
142      of 240uA, with a ~1k series resistance.
143
144  adi,digital-input-sink-microamp:
145    description: Sink current in digital input mode.
146    minimum: 0
147    maximum: 3700
148    default: 0
149
150  adi,digital-input-debounce-mode-counter-reset:
151    type: boolean
152    description: |
153      When not present, a counter increments when the signal is asserted
154      and decrements when the signal is de-asserted.
155      When present, a counter increments while the signal is asserted and
156      resets when the signal de-asserts
157
158  adi,digital-input-unbuffered:
159    type: boolean
160    description: Whether to buffer digital input signals.
161
162  adi,digital-input-short-circuit-detection:
163    type: boolean
164    description: Whether to detect digital input short circuits.
165
166  adi,digital-input-open-circuit-detection:
167    type: boolean
168    description: Whether to detect digital input open circuits.
169
170  adi,digital-input-threshold-mode-fixed:
171    type: boolean
172    description: |
173      When not present, the digital input threshold range is -0.96 * AVDD
174      to AVDD.
175      When present, the threshold range is fixed from -19V to 30V.
176
177  adi,dac-bipolar:
178    type: boolean
179    description: |
180      When not present, the DAC operates in the 0V to 12V range.
181      When present, the DAC operates in the -12V to 12V range.
182
183  adi,charge-pump:
184    type: boolean
185    description: Whether to enable the internal charge pump.
186
187  adi,dac-hart-slew:
188    type: boolean
189    description: Whether to use a HART-compatible slew rate.
190
191  adi,dac-current-limit-low:
192    type: boolean
193    description: |
194      When not present, the DAC short-circuit current limit is 32mA in
195      either source or sink for VOUT and 4mA sink for IOUT.
196      When present, the limit is 16mA in either source or sink for VOUT,
197      1mA sink for IOUT.
198
199  adi,4-wire-rtd:
200    type: boolean
201    description: |
202      When not present, the ADC should be used for measuring 3-wire RTDs.
203      When present, the ADC should be used for measuring 4-wire RTDs.
204
205  adi,3-wire-rtd-excitation-swap:
206    type: boolean
207    description: Whether to swap the excitation for 3-wire RTD.
208
209  adi,rtd-excitation-current-microamp:
210    description: Excitation current to apply to RTD.
211    enum: [250, 500, 750, 1000]
212    default: 250
213
214  adi,ext1-burnout:
215    type: boolean
216    description: Whether to enable burnout current for EXT1.
217
218  adi,ext1-burnout-current-nanoamp:
219    $ref: /schemas/types.yaml#/definitions/uint32
220    description:
221      Burnout current in nanoamps to be applied to EXT1.
222    enum: [0, 50, 500, 1000, 10000]
223    default: 0
224
225  adi,ext1-burnout-current-polarity-sourcing:
226    type: boolean
227    description: |
228      When not present, the burnout current polarity for EXT1 is sinking.
229      When present, the burnout current polarity for EXT1 is sourcing.
230
231  adi,ext2-burnout:
232    type: boolean
233    description: Whether to enable burnout current for EXT2.
234
235  adi,ext2-burnout-current-nanoamp:
236    $ref: /schemas/types.yaml#/definitions/uint32
237    description: Burnout current in nanoamps to be applied to EXT2.
238    enum: [0, 50, 500, 1000, 10000]
239    default: 0
240
241  adi,ext2-burnout-current-polarity-sourcing:
242    type: boolean
243    description: |
244      When not present, the burnout current polarity for EXT2 is sinking.
245      When present, the burnout current polarity for EXT2 is sourcing.
246
247  adi,viout-burnout:
248    type: boolean
249    description: Whether to enable burnout current for VIOUT.
250
251  adi,viout-burnout-current-nanoamp:
252    $ref: /schemas/types.yaml#/definitions/uint32
253    description: Burnout current in nanoamps to be applied to VIOUT.
254    enum: [0, 1000, 10000]
255    default: 0
256
257  adi,viout-burnout-current-polarity-sourcing:
258    type: boolean
259    description: |
260      When not present, the burnout current polarity for VIOUT is sinking.
261      When present, the burnout current polarity for VIOUT is sourcing.
262
263  adi,gpio0-mode:
264    $ref: /schemas/types.yaml#/definitions/uint32
265    description: |
266      GPIO functions.
267      0 - Disabled
268      1 - Logic I/O
269      2 - Comparator output
270      3 - Control HART CD
271      4 - Monitor HART CD
272      5 - Monitor HART EOM status
273    minimum: 0
274    maximum: 5
275    default: 0
276
277  adi,gpio1-mode:
278    $ref: /schemas/types.yaml#/definitions/uint32
279    description: |
280      GPIO functions.
281      0 - Disabled
282      1 - Logic I/O
283      2 - Drive external digital output FET
284      3 - Control HART RXD
285      4 - Monitor HART RXD
286      5 - Monitor HART SOM status
287    minimum: 0
288    maximum: 5
289    default: 0
290
291  adi,gpio2-mode:
292    $ref: /schemas/types.yaml#/definitions/uint32
293    description: |
294      GPIO functions.
295      0 - Disabled
296      1 - Logic I/O
297      2 - Drive internal digital output FET
298      3 - Control HART TXD
299      4 - Monitor HART TXD
300      5 - Monitor HART TX complete status
301    minimum: 0
302    maximum: 5
303    default: 0
304
305  adi,gpio3-mode:
306    $ref: /schemas/types.yaml#/definitions/uint32
307    description: |
308      GPIO functions.
309      0 - Disabled
310      1 - Logic I/O
311      2 - High impedance
312      3 - Control HART RTS
313      4 - Monitor HART RTS
314      5 - Monitor HART CD complete status
315    minimum: 0
316    maximum: 5
317    default: 0
318
319required:
320  - compatible
321  - reg
322  - spi-cpol
323  - avdd-supply
324
325allOf:
326  - $ref: /schemas/spi/spi-peripheral-props.yaml#
327  - if:
328      required:
329        - adi,digital-input-sink-range-high
330    then:
331      properties:
332        adi,digital-input-sink-microamp:
333          maximum: 7400
334
335unevaluatedProperties: false
336
337examples:
338  - |
339    #include <dt-bindings/gpio/gpio.h>
340    #include <dt-bindings/interrupt-controller/irq.h>
341
342    spi {
343      #address-cells = <1>;
344      #size-cells = <0>;
345
346      addac@0 {
347        compatible = "adi,ad74115h";
348        reg = <0>;
349
350        spi-max-frequency = <12000000>;
351        spi-cpol;
352
353        reset-gpios = <&gpio 27 GPIO_ACTIVE_LOW>;
354
355        interrupt-parent = <&gpio>;
356        interrupts = <26 IRQ_TYPE_EDGE_FALLING>;
357        interrupt-names = "adc_rdy";
358
359        avdd-supply = <&ad74115_avdd>;
360
361        adi,ch-func = <1>;
362        adi,conv2-mux = <2>;
363        adi,conv2-range-microvolt = <(-12000000) 12000000>;
364
365        adi,gpio0-mode = <1>;
366        adi,gpio1-mode = <1>;
367        adi,gpio2-mode = <1>;
368        adi,gpio3-mode = <1>;
369
370        adi,dac-bipolar;
371      };
372    };
373...
374