GNU Linux-libre 6.8.9-gnu
[releases.git] / Documentation / devicetree / bindings / iio / adc / microchip,mcp3564.yaml
1 # SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
2 %YAML 1.2
3 ---
4 $id: http://devicetree.org/schemas/iio/adc/microchip,mcp3564.yaml#
5 $schema: http://devicetree.org/meta-schemas/core.yaml#
6
7 title: Microchip MCP346X and MCP356X ADC Family
8
9 maintainers:
10   - Marius Cristea <marius.cristea@microchip.com>
11
12 description: |
13   Bindings for the Microchip family of 153.6 ksps, Low-Noise 16/24-Bit
14   Delta-Sigma ADCs with an SPI interface. Datasheet can be found here:
15   Datasheet for MCP3561, MCP3562, MCP3564 can be found here:
16     https://ww1.microchip.com/downloads/aemDocuments/documents/MSLD/ProductDocuments/DataSheets/MCP3561-2-4-Family-Data-Sheet-DS20006181C.pdf
17   Datasheet for MCP3561R, MCP3562R, MCP3564R can be found here:
18     https://ww1.microchip.com/downloads/aemDocuments/documents/APID/ProductDocuments/DataSheets/MCP3561_2_4R-Data-Sheet-DS200006391C.pdf
19   Datasheet for MCP3461, MCP3462, MCP3464 can be found here:
20     https://ww1.microchip.com/downloads/aemDocuments/documents/APID/ProductDocuments/DataSheets/MCP3461-2-4-Two-Four-Eight-Channel-153.6-ksps-Low-Noise-16-Bit-Delta-Sigma-ADC-Data-Sheet-20006180D.pdf
21   Datasheet for MCP3461R, MCP3462R, MCP3464R can be found here:
22     https://ww1.microchip.com/downloads/aemDocuments/documents/APID/ProductDocuments/DataSheets/MCP3461-2-4R-Family-Data-Sheet-DS20006404C.pdf
23
24 properties:
25   compatible:
26     enum:
27       - microchip,mcp3461
28       - microchip,mcp3462
29       - microchip,mcp3464
30       - microchip,mcp3461r
31       - microchip,mcp3462r
32       - microchip,mcp3464r
33       - microchip,mcp3561
34       - microchip,mcp3562
35       - microchip,mcp3564
36       - microchip,mcp3561r
37       - microchip,mcp3562r
38       - microchip,mcp3564r
39
40   reg:
41     maxItems: 1
42
43   spi-max-frequency:
44     maximum: 20000000
45
46   spi-cpha: true
47
48   spi-cpol: true
49
50   vdd-supply: true
51
52   avdd-supply: true
53
54   clocks:
55     description:
56       Phandle and clock identifier for external sampling clock.
57       If not specified, the internal crystal oscillator will be used.
58     maxItems: 1
59
60   interrupts:
61     description: IRQ line of the ADC
62     maxItems: 1
63
64   drive-open-drain:
65     description:
66       Whether to drive the IRQ signal as push-pull (default) or open-drain. Note
67       that the device requires this pin to become "high", otherwise it will stop
68       converting.
69     type: boolean
70
71   vref-supply:
72     description:
73       Some devices have a specific reference voltage supplied on a different
74       pin to the other supplies. Needed to be able to establish channel scaling
75       unless there is also an internal reference available (e.g. mcp3564r). In
76       case of "r" devices (e. g. mcp3564r), if it does not exists the internal
77       reference will be used.
78
79   microchip,hw-device-address:
80     $ref: /schemas/types.yaml#/definitions/uint32
81     minimum: 0
82     maximum: 3
83     description:
84       The address is set on a per-device basis by fuses in the factory,
85       configured on request. If not requested, the fuses are set for 0x1.
86       The device address is part of the device markings to avoid
87       potential confusion. This address is coded on two bits, so four possible
88       addresses are available when multiple devices are present on the same
89       SPI bus with only one Chip Select line for all devices.
90       Each device communication starts by a CS falling edge, followed by the
91       clocking of the device address (BITS[7:6] - top two bits of COMMAND BYTE
92       which is first one on the wire).
93
94   "#io-channel-cells":
95     const: 1
96
97   "#address-cells":
98     const: 1
99
100   "#size-cells":
101     const: 0
102
103 patternProperties:
104   "^channel@([0-9]|([1-7][0-9]))$":
105     $ref: adc.yaml
106     type: object
107     unevaluatedProperties: false
108     description: Represents the external channels which are connected to the ADC.
109
110     properties:
111       reg:
112         description: The channel number in single-ended and differential mode.
113         minimum: 0
114         maximum: 79
115
116     required:
117       - reg
118
119 dependencies:
120   spi-cpol: [ spi-cpha ]
121   spi-cpha: [ spi-cpol ]
122
123 required:
124   - compatible
125   - reg
126   - microchip,hw-device-address
127   - spi-max-frequency
128
129 allOf:
130   - $ref: /schemas/spi/spi-peripheral-props.yaml#
131   - # External vref, no internal reference
132     if:
133       properties:
134         compatible:
135           contains:
136             enum:
137               - microchip,mcp3461
138               - microchip,mcp3462
139               - microchip,mcp3464
140               - microchip,mcp3561
141               - microchip,mcp3562
142               - microchip,mcp3564
143     then:
144       required:
145         - vref-supply
146
147 unevaluatedProperties: false
148
149 examples:
150   - |
151     spi {
152         #address-cells = <1>;
153         #size-cells = <0>;
154
155         adc@0 {
156             compatible = "microchip,mcp3564r";
157             reg = <0>;
158             vref-supply = <&vref_reg>;
159             spi-cpha;
160             spi-cpol;
161             spi-max-frequency = <10000000>;
162             microchip,hw-device-address = <1>;
163
164             #address-cells = <1>;
165             #size-cells = <0>;
166
167             channel@0 {
168                 /* CH0 to AGND */
169                 reg = <0>;
170                 label = "CH0";
171             };
172
173             channel@1 {
174                 /* CH1 to AGND */
175                 reg = <1>;
176                 label = "CH1";
177             };
178
179             /* diff-channels */
180             channel@11 {
181                 reg = <11>;
182
183                 /* CN0, CN1 */
184                 diff-channels = <0 1>;
185                 label = "CH0_CH1";
186             };
187
188             channel@22 {
189                 reg = <0x22>;
190
191                 /* CN1, CN2 */
192                 diff-channels = <1 2>;
193                 label = "CH1_CH3";
194             };
195
196             channel@23 {
197                 reg = <0x23>;
198
199                 /* CN1, CN3 */
200                 diff-channels = <1 3>;
201                 label = "CH1_CH3";
202             };
203         };
204     };
205 ...