xref: /linux/Documentation/devicetree/bindings/iio/adc/adi,ad7606.yaml (revision 0c436dfe5c25d0931b164b944165259f95e5281f)
1# SPDX-License-Identifier: GPL-2.0
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/iio/adc/adi,ad7606.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Analog Devices AD7606 Simultaneous Sampling ADC
8
9maintainers:
10  - Michael Hennerich <michael.hennerich@analog.com>
11
12description: |
13  Analog Devices AD7606 Simultaneous Sampling ADC
14  https://www.analog.com/media/en/technical-documentation/data-sheets/AD7605-4.pdf
15  https://www.analog.com/media/en/technical-documentation/data-sheets/ad7606_7606-6_7606-4.pdf
16  https://www.analog.com/media/en/technical-documentation/data-sheets/AD7606B.pdf
17  https://www.analog.com/media/en/technical-documentation/data-sheets/AD7616.pdf
18
19properties:
20  compatible:
21    enum:
22      - adi,ad7605-4
23      - adi,ad7606-4
24      - adi,ad7606-6
25      - adi,ad7606-8  # Referred to as AD7606 (without -8) in the datasheet
26      - adi,ad7606b
27      - adi,ad7616
28
29  reg:
30    maxItems: 1
31
32  spi-cpha: true
33
34  spi-cpol: true
35
36  avcc-supply: true
37
38  vdrive-supply:
39    description:
40      Determines the voltage level at which the interface logic pins will
41      operate.
42
43  refin-supply:
44    description:
45      The voltage supply for optional external reference voltage.
46
47  interrupts:
48    description:
49      The BUSY pin falling edge indicates that the conversion is over, and thus
50      new data is available.
51    maxItems: 1
52
53  adi,conversion-start-gpios:
54    description:
55      Must be the device tree identifier of the CONVST pin(s). This logic input
56      is used to initiate conversions on the analog input channels. As the line
57      is active high, it should be marked GPIO_ACTIVE_HIGH.
58    minItems: 1
59    maxItems: 2
60
61  reset-gpios:
62    description:
63      Must be the device tree identifier of the RESET pin. If specified, it will
64      be asserted during driver probe. On the AD7606x, as the line is active
65      high, it should be marked GPIO_ACTIVE_HIGH. On the AD7616, as the line is
66      active low, it should be marked GPIO_ACTIVE_LOW.
67    maxItems: 1
68
69  standby-gpios:
70    description:
71      Must be the device tree identifier of the STBY pin. This pin is used to
72      place the AD7606 into one of two power-down modes, Standby mode or
73      Shutdown mode. As the line is active low, it should be marked
74      GPIO_ACTIVE_LOW.
75    maxItems: 1
76
77  adi,first-data-gpios:
78    description:
79      Must be the device tree identifier of the FRSTDATA pin. The FRSTDATA
80      output indicates when the first channel, V1, is being read back on either
81      the parallel, byte or serial interface. As the line is active high, it
82      should be marked GPIO_ACTIVE_HIGH.
83    maxItems: 1
84
85  adi,range-gpios:
86    description:
87      Must be the device tree identifier of the RANGE pin. The state on this
88      pin determines the input range of the analog input channels. If this pin
89      is tied to a logic high, the analog input range is ±10V for all channels.
90      On the AD760X, if this pin is tied to a logic low, the analog input range
91      is ±5V for all channels. As the line is active high, it should be marked
92      GPIO_ACTIVE_HIGH. On the AD7616, there are 2 pins, and if the 2 pins are
93      tied to a logic high, software mode is enabled, otherwise one of the 3
94      possible range values is selected.
95    minItems: 1
96    maxItems: 2
97
98  adi,oversampling-ratio-gpios:
99    description:
100      Must be the device tree identifier of the over-sampling mode pins. As the
101      line is active high, it should be marked GPIO_ACTIVE_HIGH. On the AD7606X
102      parts that support it, if all 3 pins are tied to a logic high, software
103      mode is enabled.
104    maxItems: 3
105
106  adi,sw-mode:
107    description:
108      Software mode of operation, so far available only for AD7616 and AD7606B.
109      It is enabled when all three oversampling mode pins are connected to high
110      level for the AD7606B, or both the range selection are connected to high
111      level for the AD7616. The device is configured by the corresponding
112      registers. If the adi,oversampling-ratio-gpios property is defined, then
113      the driver will set the oversampling gpios to high. Otherwise, it is
114      assumed that the pins are hardwired to VDD.
115    type: boolean
116
117required:
118  - compatible
119  - reg
120  - spi-cpha
121  - avcc-supply
122  - vdrive-supply
123  - interrupts
124  - adi,conversion-start-gpios
125
126allOf:
127  - $ref: /schemas/spi/spi-peripheral-props.yaml#
128
129  - if:
130      properties:
131        compatible:
132          contains:
133            const: adi,ad7616
134    then:
135      properties:
136        adi,first-data-gpios: false
137        standby-gpios: false
138        adi,range-gpios:
139          maxItems: 2
140    else:
141      properties:
142        adi,range-gpios:
143          maxItems: 1
144
145  - if:
146      properties:
147        compatible:
148          contains:
149            enum:
150              - adi,ad7605-4
151              - adi,ad7616
152    then:
153      properties:
154        adi,oversampling-ratio-gpios: false
155
156  - if:
157      properties:
158        compatible:
159          contains:
160            enum:
161              - adi,ad7605-4
162              - adi,ad7606-4
163              - adi,ad7606-6
164              - adi,ad7606-8
165    then:
166      properties:
167        adi,sw-mode: false
168    else:
169      properties:
170        adi,conversion-start-gpios:
171          maxItems: 1
172
173unevaluatedProperties: false
174
175examples:
176  - |
177    #include <dt-bindings/gpio/gpio.h>
178    #include <dt-bindings/interrupt-controller/irq.h>
179    spi {
180        #address-cells = <1>;
181        #size-cells = <0>;
182
183        adc@0 {
184            compatible = "adi,ad7606-8";
185            reg = <0>;
186            spi-max-frequency = <1000000>;
187            spi-cpol;
188            spi-cpha;
189
190            avcc-supply = <&adc_vref>;
191            vdrive-supply = <&vdd_supply>;
192
193            interrupts = <25 IRQ_TYPE_EDGE_FALLING>;
194            interrupt-parent = <&gpio>;
195
196            adi,conversion-start-gpios = <&gpio 17 GPIO_ACTIVE_HIGH>;
197            reset-gpios = <&gpio 27 GPIO_ACTIVE_HIGH>;
198            adi,first-data-gpios = <&gpio 22 GPIO_ACTIVE_HIGH>;
199            adi,oversampling-ratio-gpios = <&gpio 18 GPIO_ACTIVE_HIGH>,
200                                           <&gpio 23 GPIO_ACTIVE_HIGH>,
201                                           <&gpio 26 GPIO_ACTIVE_HIGH>;
202            standby-gpios = <&gpio 24 GPIO_ACTIVE_LOW>;
203        };
204    };
205...
206