1# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/iio/adc/adi,ad4695.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Analog Devices Easy Drive Multiplexed SAR Analog to Digital Converters
8
9maintainers:
10  - Michael Hennerich <Michael.Hennerich@analog.com>
11  - Nuno Sá <nuno.sa@analog.com>
12
13description: |
14  A family of similar multi-channel analog to digital converters with SPI bus.
15
16  * https://www.analog.com/en/products/ad4695.html
17  * https://www.analog.com/en/products/ad4696.html
18  * https://www.analog.com/en/products/ad4697.html
19  * https://www.analog.com/en/products/ad4698.html
20
21$ref: /schemas/spi/spi-peripheral-props.yaml#
22
23properties:
24  compatible:
25    enum:
26      - adi,ad4695
27      - adi,ad4696
28      - adi,ad4697
29      - adi,ad4698
30
31  reg:
32    maxItems: 1
33
34  spi-max-frequency:
35    maximum: 80000000
36
37  spi-cpol: true
38  spi-cpha: true
39
40  spi-rx-bus-width:
41    minimum: 1
42    maximum: 4
43
44  avdd-supply:
45    description: Analog power supply.
46
47  vio-supply:
48    description: I/O pin power supply.
49
50  ldo-in-supply:
51    description: Internal LDO Input. Mutually exclusive with vdd-supply.
52
53  vdd-supply:
54    description: Core power supply. Mutually exclusive with ldo-in-supply.
55
56  ref-supply:
57    description:
58      External reference voltage. Mutually exclusive with refin-supply.
59
60  refin-supply:
61    description:
62      Internal reference buffer input. Mutually exclusive with ref-supply.
63
64  com-supply:
65    description: Common voltage supply for pseudo-differential analog inputs.
66
67  adi,no-ref-current-limit:
68    $ref: /schemas/types.yaml#/definitions/flag
69    description:
70      When this flag is present, the REF Overvoltage Reduced Current protection
71      is disabled.
72
73  adi,no-ref-high-z:
74    $ref: /schemas/types.yaml#/definitions/flag
75    description:
76      Enable this flag if the ref-supply requires Reference Input High-Z Mode
77      to be disabled for proper operation.
78
79  cnv-gpios:
80    description: The Convert Input (CNV). If omitted, CNV is tied to SPI CS.
81    maxItems: 1
82
83  reset-gpios:
84    description: The Reset Input (RESET). Should be configured GPIO_ACTIVE_LOW.
85    maxItems: 1
86
87  interrupts:
88    minItems: 1
89    items:
90      - description: Signal coming from the BSY_ALT_GP0 pin (ALERT or BUSY).
91      - description: Signal coming from the GP2 pin (ALERT).
92      - description: Signal coming from the GP3 pin (BUSY).
93
94  interrupt-names:
95    minItems: 1
96    items:
97      - const: gp0
98      - const: gp2
99      - const: gp3
100
101  gpio-controller: true
102
103  "#gpio-cells":
104    const: 2
105    description: |
106      The first cell is the GPn number: 0 to 3.
107      The second cell takes standard GPIO flags.
108
109  "#address-cells":
110    const: 1
111
112  "#size-cells":
113    const: 0
114
115patternProperties:
116  "^in(?:[13579]|1[135])-supply$":
117    description:
118      Optional voltage supply for odd numbered channels when they are used as
119      the negative input for a pseudo-differential channel.
120
121  "^channel@[0-9a-f]$":
122    type: object
123    $ref: adc.yaml
124    unevaluatedProperties: false
125    description:
126      Describes each individual channel. In addition the properties defined
127      below, bipolar from adc.yaml is also supported.
128
129    properties:
130      reg:
131        maximum: 15
132
133      common-mode-channel:
134        description:
135          Describes the common mode channel for single channels. 0xFF is REFGND
136          and OxFE is COM. Macros are available for these values in
137          dt-bindings/iio/adi,ad4695.h. Values 1 to 15 correspond to INx inputs.
138          Only odd numbered INx inputs can be used as common mode channels.
139        enum: [1, 3, 5, 7, 9, 11, 13, 15, 0xFE, 0xFF]
140        default: 0xFF
141
142      adi,no-high-z:
143        $ref: /schemas/types.yaml#/definitions/flag
144        description:
145          Enable this flag if the input pin requires the Analog Input High-Z
146          Mode to be disabled for proper operation.
147
148    required:
149      - reg
150
151    allOf:
152      # bipolar mode can't be used with REFGND
153      - if:
154          properties:
155            common-mode-channel:
156              const: 0xFF
157        then:
158          properties:
159            bipolar: false
160
161required:
162  - compatible
163  - reg
164  - avdd-supply
165  - vio-supply
166
167allOf:
168  - oneOf:
169      - required:
170          - ldo-in-supply
171      - required:
172          - vdd-supply
173
174  - oneOf:
175      - required:
176          - ref-supply
177      - required:
178          - refin-supply
179
180  # the internal reference buffer always requires high-z mode
181  - if:
182      required:
183        - refin-supply
184    then:
185      properties:
186        adi,no-ref-high-z: false
187
188  # limit channels for 8-channel chips
189  - if:
190      properties:
191        compatible:
192          contains:
193            enum:
194              - adi,ad4697
195              - adi,ad4698
196    then:
197      patternProperties:
198        "^in(?:9|1[135])-supply$": false
199        "^channel@[0-7]$":
200          properties:
201            reg:
202              maximum: 7
203            common-mode-channel:
204              enum: [1, 3, 5, 7, 0xFE, 0xFF]
205        "^channel@[8-9a-f]$": false
206
207unevaluatedProperties: false
208
209examples:
210  - |
211    #include <dt-bindings/gpio/gpio.h>
212    #include <dt-bindings/iio/adi,ad4695.h>
213
214    spi {
215        #address-cells = <1>;
216        #size-cells = <0>;
217
218        adc@0 {
219            compatible = "adi,ad4695";
220            reg = <0>;
221            spi-cpol;
222            spi-cpha;
223            spi-max-frequency = <80000000>;
224            avdd-supply = <&power_supply>;
225            ldo-in-supply = <&power_supply>;
226            vio-supply = <&io_supply>;
227            refin-supply = <&supply_5V>;
228            com-supply = <&supply_2V5>;
229            in3-supply = <&supply_2V5>;
230            reset-gpios = <&gpio 1 GPIO_ACTIVE_LOW>;
231
232            #address-cells = <1>;
233            #size-cells = <0>;
234
235            /* Pseudo-differential channel between IN0 and REFGND. */
236            channel@0 {
237                reg = <0>;
238            };
239
240            /* Pseudo-differential channel between IN1 and COM. */
241            channel@1 {
242                reg = <1>;
243                common-mode-channel = <AD4695_COMMON_MODE_COM>;
244                bipolar;
245            };
246
247            /* Pseudo-differential channel between IN2 and IN3. */
248            channel@2 {
249                reg = <2>;
250                common-mode-channel = <3>;
251                bipolar;
252            };
253        };
254    };
255