xref: /linux/Documentation/devicetree/bindings/iio/adc/adi,ad4170-4.yaml (revision 0d5ec7919f3747193f051036b2301734a4b5e1d6)
1*1b3cee41SMarcelo Schmitt# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2*1b3cee41SMarcelo Schmitt%YAML 1.2
3*1b3cee41SMarcelo Schmitt---
4*1b3cee41SMarcelo Schmitt$id: http://devicetree.org/schemas/iio/adc/adi,ad4170-4.yaml#
5*1b3cee41SMarcelo Schmitt$schema: http://devicetree.org/meta-schemas/core.yaml#
6*1b3cee41SMarcelo Schmitt
7*1b3cee41SMarcelo Schmitttitle: Analog Devices AD4170-4 and similar Analog to Digital Converters
8*1b3cee41SMarcelo Schmitt
9*1b3cee41SMarcelo Schmittmaintainers:
10*1b3cee41SMarcelo Schmitt  - Marcelo Schmitt <marcelo.schmitt@analog.com>
11*1b3cee41SMarcelo Schmitt
12*1b3cee41SMarcelo Schmittdescription: |
13*1b3cee41SMarcelo Schmitt  Analog Devices AD4170-4 series of Sigma-delta Analog to Digital Converters.
14*1b3cee41SMarcelo Schmitt  Specifications can be found at:
15*1b3cee41SMarcelo Schmitt    https://www.analog.com/media/en/technical-documentation/data-sheets/ad4170-4.pdf
16*1b3cee41SMarcelo Schmitt    https://www.analog.com/media/en/technical-documentation/data-sheets/ad4190-4.pdf
17*1b3cee41SMarcelo Schmitt    https://www.analog.com/media/en/technical-documentation/data-sheets/ad4195-4.pdf
18*1b3cee41SMarcelo Schmitt
19*1b3cee41SMarcelo Schmitt$ref: /schemas/spi/spi-peripheral-props.yaml#
20*1b3cee41SMarcelo Schmitt
21*1b3cee41SMarcelo Schmitt$defs:
22*1b3cee41SMarcelo Schmitt  reference-buffer:
23*1b3cee41SMarcelo Schmitt    description: |
24*1b3cee41SMarcelo Schmitt      Enable precharge buffer, full buffer, or skip reference buffering of
25*1b3cee41SMarcelo Schmitt      the positive/negative voltage reference. Because the output impedance
26*1b3cee41SMarcelo Schmitt      of the source driving the voltage reference inputs may be dynamic,
27*1b3cee41SMarcelo Schmitt      resistive/capacitive combinations of those inputs can cause DC gain
28*1b3cee41SMarcelo Schmitt      errors if the reference inputs go unbuffered into the ADC. Enable
29*1b3cee41SMarcelo Schmitt      reference buffering if the provided reference source has dynamic high
30*1b3cee41SMarcelo Schmitt      impedance output. Note the absolute voltage allowed on REFINn+ and REFINn-
31*1b3cee41SMarcelo Schmitt      inputs is from AVSS - 50 mV to AVDD + 50 mV when the reference buffers are
32*1b3cee41SMarcelo Schmitt      disabled but narrows to AVSS to AVDD when reference buffering is enabled
33*1b3cee41SMarcelo Schmitt      or in precharge mode.
34*1b3cee41SMarcelo Schmitt    $ref: /schemas/types.yaml#/definitions/string
35*1b3cee41SMarcelo Schmitt    enum: [ precharge, full, disabled ]
36*1b3cee41SMarcelo Schmitt    default: full
37*1b3cee41SMarcelo Schmitt
38*1b3cee41SMarcelo Schmittproperties:
39*1b3cee41SMarcelo Schmitt  compatible:
40*1b3cee41SMarcelo Schmitt    enum:
41*1b3cee41SMarcelo Schmitt      - adi,ad4170-4
42*1b3cee41SMarcelo Schmitt      - adi,ad4190-4
43*1b3cee41SMarcelo Schmitt      - adi,ad4195-4
44*1b3cee41SMarcelo Schmitt
45*1b3cee41SMarcelo Schmitt  avss-supply:
46*1b3cee41SMarcelo Schmitt    description:
47*1b3cee41SMarcelo Schmitt      Reference voltage supply for AVSS. A2.625V minimum and 0V maximum supply
48*1b3cee41SMarcelo Schmitt      that powers the chip. If not provided, AVSS is assumed to be at system
49*1b3cee41SMarcelo Schmitt      ground (0V).
50*1b3cee41SMarcelo Schmitt
51*1b3cee41SMarcelo Schmitt  avdd-supply:
52*1b3cee41SMarcelo Schmitt    description:
53*1b3cee41SMarcelo Schmitt      A supply of 4.75V to 5.25V relative to AVSS that powers the chip (AVDD).
54*1b3cee41SMarcelo Schmitt
55*1b3cee41SMarcelo Schmitt  iovdd-supply:
56*1b3cee41SMarcelo Schmitt    description: 1.7V to 5.25V reference supply to the serial interface (IOVDD).
57*1b3cee41SMarcelo Schmitt
58*1b3cee41SMarcelo Schmitt  refin1p-supply:
59*1b3cee41SMarcelo Schmitt    description: REFIN+ supply that can be used as reference for conversion.
60*1b3cee41SMarcelo Schmitt
61*1b3cee41SMarcelo Schmitt  refin1n-supply:
62*1b3cee41SMarcelo Schmitt    description: REFIN- supply that can be used as reference for conversion.
63*1b3cee41SMarcelo Schmitt
64*1b3cee41SMarcelo Schmitt  refin2p-supply:
65*1b3cee41SMarcelo Schmitt    description: REFIN2+ supply that can be used as reference for conversion.
66*1b3cee41SMarcelo Schmitt
67*1b3cee41SMarcelo Schmitt  refin2n-supply:
68*1b3cee41SMarcelo Schmitt    description: REFIN2- supply that can be used as reference for conversion.
69*1b3cee41SMarcelo Schmitt
70*1b3cee41SMarcelo Schmitt  spi-cpol: true
71*1b3cee41SMarcelo Schmitt
72*1b3cee41SMarcelo Schmitt  spi-cpha: true
73*1b3cee41SMarcelo Schmitt
74*1b3cee41SMarcelo Schmitt  interrupts:
75*1b3cee41SMarcelo Schmitt    description:
76*1b3cee41SMarcelo Schmitt      Interrupt for signaling the completion of conversion results. The data
77*1b3cee41SMarcelo Schmitt      ready signal (RDY) used as interrupt is by default provided on the SDO
78*1b3cee41SMarcelo Schmitt      pin. Alternatively, it can be provided on the DIG_AUX1 pin in which case
79*1b3cee41SMarcelo Schmitt      the chip disables the RDY function on SDO. Thus, there can be only one
80*1b3cee41SMarcelo Schmitt      data ready interrupt enabled at a time.
81*1b3cee41SMarcelo Schmitt
82*1b3cee41SMarcelo Schmitt  interrupt-names:
83*1b3cee41SMarcelo Schmitt    description:
84*1b3cee41SMarcelo Schmitt      Specify which pin should be configured as Data Ready interrupt.
85*1b3cee41SMarcelo Schmitt    enum:
86*1b3cee41SMarcelo Schmitt      - sdo
87*1b3cee41SMarcelo Schmitt      - dig_aux1
88*1b3cee41SMarcelo Schmitt
89*1b3cee41SMarcelo Schmitt  clocks:
90*1b3cee41SMarcelo Schmitt    maxItems: 1
91*1b3cee41SMarcelo Schmitt    description:
92*1b3cee41SMarcelo Schmitt      Optional external clock source. Can specify either an external clock or
93*1b3cee41SMarcelo Schmitt      external crystal.
94*1b3cee41SMarcelo Schmitt
95*1b3cee41SMarcelo Schmitt  clock-names:
96*1b3cee41SMarcelo Schmitt    enum:
97*1b3cee41SMarcelo Schmitt      - ext-clk
98*1b3cee41SMarcelo Schmitt      - xtal
99*1b3cee41SMarcelo Schmitt    default: ext-clk
100*1b3cee41SMarcelo Schmitt
101*1b3cee41SMarcelo Schmitt  '#clock-cells':
102*1b3cee41SMarcelo Schmitt    const: 0
103*1b3cee41SMarcelo Schmitt
104*1b3cee41SMarcelo Schmitt  clock-output-names:
105*1b3cee41SMarcelo Schmitt    maxItems: 1
106*1b3cee41SMarcelo Schmitt
107*1b3cee41SMarcelo Schmitt  gpio-controller: true
108*1b3cee41SMarcelo Schmitt
109*1b3cee41SMarcelo Schmitt  "#gpio-cells":
110*1b3cee41SMarcelo Schmitt    const: 2
111*1b3cee41SMarcelo Schmitt    description: |
112*1b3cee41SMarcelo Schmitt      The first cell is for the GPIO number: 0 to 3.
113*1b3cee41SMarcelo Schmitt      The second cell takes standard GPIO flags.
114*1b3cee41SMarcelo Schmitt
115*1b3cee41SMarcelo Schmitt  ldac-gpios:
116*1b3cee41SMarcelo Schmitt    description:
117*1b3cee41SMarcelo Schmitt      GPIO connected to DIG_AUX2 pin to be used as LDAC toggle to control the
118*1b3cee41SMarcelo Schmitt      transfer of data from the DAC_INPUT_A register to the DAC.
119*1b3cee41SMarcelo Schmitt    maxItems: 1
120*1b3cee41SMarcelo Schmitt
121*1b3cee41SMarcelo Schmitt  '#address-cells':
122*1b3cee41SMarcelo Schmitt    const: 1
123*1b3cee41SMarcelo Schmitt
124*1b3cee41SMarcelo Schmitt  '#size-cells':
125*1b3cee41SMarcelo Schmitt    const: 0
126*1b3cee41SMarcelo Schmitt
127*1b3cee41SMarcelo Schmitt  adi,vbias-pins:
128*1b3cee41SMarcelo Schmitt    description: Analog inputs to apply a voltage bias of (AVDD − AVSS) / 2 to.
129*1b3cee41SMarcelo Schmitt    $ref: /schemas/types.yaml#/definitions/uint32-array
130*1b3cee41SMarcelo Schmitt    minItems: 1
131*1b3cee41SMarcelo Schmitt    maxItems: 9
132*1b3cee41SMarcelo Schmitt    items:
133*1b3cee41SMarcelo Schmitt      minimum: 0
134*1b3cee41SMarcelo Schmitt      maximum: 8
135*1b3cee41SMarcelo Schmitt
136*1b3cee41SMarcelo SchmittallOf:
137*1b3cee41SMarcelo Schmitt  # Some devices don't have integrated DAC
138*1b3cee41SMarcelo Schmitt  - if:
139*1b3cee41SMarcelo Schmitt      properties:
140*1b3cee41SMarcelo Schmitt        compatible:
141*1b3cee41SMarcelo Schmitt          contains:
142*1b3cee41SMarcelo Schmitt            enum:
143*1b3cee41SMarcelo Schmitt              - adi,ad4190-4
144*1b3cee41SMarcelo Schmitt              - adi,ad4195-4
145*1b3cee41SMarcelo Schmitt    then:
146*1b3cee41SMarcelo Schmitt      properties:
147*1b3cee41SMarcelo Schmitt        ldac-gpios: false
148*1b3cee41SMarcelo Schmitt
149*1b3cee41SMarcelo Schmitt  # Require to specify the interrupt pin when using interrupts
150*1b3cee41SMarcelo Schmitt  - if:
151*1b3cee41SMarcelo Schmitt      required:
152*1b3cee41SMarcelo Schmitt        - interrupts
153*1b3cee41SMarcelo Schmitt    then:
154*1b3cee41SMarcelo Schmitt      required:
155*1b3cee41SMarcelo Schmitt        - interrupt-names
156*1b3cee41SMarcelo Schmitt
157*1b3cee41SMarcelo Schmitt  # If an external clock is set, the internal clock cannot go out and vice versa
158*1b3cee41SMarcelo Schmitt  - oneOf:
159*1b3cee41SMarcelo Schmitt      - required: [clocks]
160*1b3cee41SMarcelo Schmitt        properties:
161*1b3cee41SMarcelo Schmitt          '#clock-cells': false
162*1b3cee41SMarcelo Schmitt      - required: ['#clock-cells']
163*1b3cee41SMarcelo Schmitt        properties:
164*1b3cee41SMarcelo Schmitt          clocks: false
165*1b3cee41SMarcelo Schmitt
166*1b3cee41SMarcelo Schmittrequired:
167*1b3cee41SMarcelo Schmitt  - compatible
168*1b3cee41SMarcelo Schmitt  - reg
169*1b3cee41SMarcelo Schmitt  - avdd-supply
170*1b3cee41SMarcelo Schmitt  - iovdd-supply
171*1b3cee41SMarcelo Schmitt  - spi-cpol
172*1b3cee41SMarcelo Schmitt  - spi-cpha
173*1b3cee41SMarcelo Schmitt
174*1b3cee41SMarcelo SchmittunevaluatedProperties: false
175*1b3cee41SMarcelo Schmitt
176*1b3cee41SMarcelo SchmittpatternProperties:
177*1b3cee41SMarcelo Schmitt  "^channel@[0-9a-f]$":
178*1b3cee41SMarcelo Schmitt    $ref: /schemas/iio/adc/adc.yaml#
179*1b3cee41SMarcelo Schmitt    unevaluatedProperties: false
180*1b3cee41SMarcelo Schmitt    description:
181*1b3cee41SMarcelo Schmitt      Represents the external channels which are connected to the ADC.
182*1b3cee41SMarcelo Schmitt
183*1b3cee41SMarcelo Schmitt    properties:
184*1b3cee41SMarcelo Schmitt      reg:
185*1b3cee41SMarcelo Schmitt        description:
186*1b3cee41SMarcelo Schmitt          The channel number.
187*1b3cee41SMarcelo Schmitt        minimum: 0
188*1b3cee41SMarcelo Schmitt        maximum: 15
189*1b3cee41SMarcelo Schmitt
190*1b3cee41SMarcelo Schmitt      diff-channels:
191*1b3cee41SMarcelo Schmitt        description: |
192*1b3cee41SMarcelo Schmitt          This property is used for defining the inputs of a differential
193*1b3cee41SMarcelo Schmitt          voltage channel. The first value is the positive input and the second
194*1b3cee41SMarcelo Schmitt          value is the negative input of the channel.
195*1b3cee41SMarcelo Schmitt
196*1b3cee41SMarcelo Schmitt          Besides the analog input pins AIN0 to AIN8, there are special inputs
197*1b3cee41SMarcelo Schmitt          that can be selected with the following values:
198*1b3cee41SMarcelo Schmitt          17: Internal temperature sensor
199*1b3cee41SMarcelo Schmitt          18: (AVDD-AVSS)/5
200*1b3cee41SMarcelo Schmitt          19: (IOVDD-DGND)/5
201*1b3cee41SMarcelo Schmitt          20: DAC output
202*1b3cee41SMarcelo Schmitt          21: ALDO
203*1b3cee41SMarcelo Schmitt          22: DLDO
204*1b3cee41SMarcelo Schmitt          23: AVSS
205*1b3cee41SMarcelo Schmitt          24: DGND
206*1b3cee41SMarcelo Schmitt          25: REFIN+
207*1b3cee41SMarcelo Schmitt          26: REFIN-
208*1b3cee41SMarcelo Schmitt          27: REFIN2+
209*1b3cee41SMarcelo Schmitt          28: REFIN2-
210*1b3cee41SMarcelo Schmitt          29: REFOUT
211*1b3cee41SMarcelo Schmitt          For the internal temperature sensor, use the input number for both
212*1b3cee41SMarcelo Schmitt          inputs (i.e. diff-channels = <17 17>).
213*1b3cee41SMarcelo Schmitt        items:
214*1b3cee41SMarcelo Schmitt          enum: [0, 1, 2, 3, 4, 5, 6, 7, 8, 17, 18, 19, 20, 21, 22, 23, 24, 25,
215*1b3cee41SMarcelo Schmitt                 26, 27, 28, 29]
216*1b3cee41SMarcelo Schmitt
217*1b3cee41SMarcelo Schmitt      adi,reference-select:
218*1b3cee41SMarcelo Schmitt        description: |
219*1b3cee41SMarcelo Schmitt          Select the reference source to use when converting on the
220*1b3cee41SMarcelo Schmitt          specific channel. Valid values are:
221*1b3cee41SMarcelo Schmitt          0: REFIN+/REFIN-
222*1b3cee41SMarcelo Schmitt          1: REFIN2+/REFIN2−
223*1b3cee41SMarcelo Schmitt          2: REFOUT/AVSS (internal reference)
224*1b3cee41SMarcelo Schmitt          3: AVDD/AVSS
225*1b3cee41SMarcelo Schmitt          If not specified, REFOUT/AVSS is used.
226*1b3cee41SMarcelo Schmitt        $ref: /schemas/types.yaml#/definitions/uint32
227*1b3cee41SMarcelo Schmitt        enum: [0, 1, 2, 3]
228*1b3cee41SMarcelo Schmitt        default: 1
229*1b3cee41SMarcelo Schmitt
230*1b3cee41SMarcelo Schmitt      adi,positive-reference-buffer:
231*1b3cee41SMarcelo Schmitt        $ref: '#/$defs/reference-buffer'
232*1b3cee41SMarcelo Schmitt
233*1b3cee41SMarcelo Schmitt      adi,negative-reference-buffer:
234*1b3cee41SMarcelo Schmitt        $ref: '#/$defs/reference-buffer'
235*1b3cee41SMarcelo Schmitt
236*1b3cee41SMarcelo Schmitt      adi,sensor-type:
237*1b3cee41SMarcelo Schmitt        description:
238*1b3cee41SMarcelo Schmitt          The AD4170-4 and similar designs have features to aid interfacing with
239*1b3cee41SMarcelo Schmitt          load cell weigh scale, RTD, and thermocouple sensors. Each of those
240*1b3cee41SMarcelo Schmitt          sensor types requires either distinct wiring configuration or
241*1b3cee41SMarcelo Schmitt          external circuitry for proper sensor operation and can use different
242*1b3cee41SMarcelo Schmitt          ADC chip functionality on their setups. A key characteristic of those
243*1b3cee41SMarcelo Schmitt          external sensors is that they must be excited either by voltage supply
244*1b3cee41SMarcelo Schmitt          or by ADC chip excitation signals. The sensor can then be read through
245*1b3cee41SMarcelo Schmitt          a pair of analog inputs. This property specifies which particular
246*1b3cee41SMarcelo Schmitt          sensor type is connected to the ADC so it can be properly setup and
247*1b3cee41SMarcelo Schmitt          handled. Omit this property for conventional (not weigh scale, RTD, or
248*1b3cee41SMarcelo Schmitt          thermocouple) ADC channel setups.
249*1b3cee41SMarcelo Schmitt        $ref: /schemas/types.yaml#/definitions/string
250*1b3cee41SMarcelo Schmitt        enum: [ weighscale, rtd, thermocouple ]
251*1b3cee41SMarcelo Schmitt
252*1b3cee41SMarcelo Schmitt      adi,excitation-pin-0:
253*1b3cee41SMarcelo Schmitt        description:
254*1b3cee41SMarcelo Schmitt          Analog input to apply excitation current to while the channel
255*1b3cee41SMarcelo Schmitt          is active.
256*1b3cee41SMarcelo Schmitt        $ref: /schemas/types.yaml#/definitions/uint32
257*1b3cee41SMarcelo Schmitt        minimum: 0
258*1b3cee41SMarcelo Schmitt        maximum: 20
259*1b3cee41SMarcelo Schmitt        default: 0
260*1b3cee41SMarcelo Schmitt
261*1b3cee41SMarcelo Schmitt      adi,excitation-pin-1:
262*1b3cee41SMarcelo Schmitt        description:
263*1b3cee41SMarcelo Schmitt          Analog input to apply excitation current to while the channel
264*1b3cee41SMarcelo Schmitt          is active.
265*1b3cee41SMarcelo Schmitt        $ref: /schemas/types.yaml#/definitions/uint32
266*1b3cee41SMarcelo Schmitt        minimum: 0
267*1b3cee41SMarcelo Schmitt        maximum: 20
268*1b3cee41SMarcelo Schmitt        default: 0
269*1b3cee41SMarcelo Schmitt
270*1b3cee41SMarcelo Schmitt      adi,excitation-pin-2:
271*1b3cee41SMarcelo Schmitt        description:
272*1b3cee41SMarcelo Schmitt          Analog input to apply excitation current to while the channel
273*1b3cee41SMarcelo Schmitt          is active.
274*1b3cee41SMarcelo Schmitt        $ref: /schemas/types.yaml#/definitions/uint32
275*1b3cee41SMarcelo Schmitt        minimum: 0
276*1b3cee41SMarcelo Schmitt        maximum: 20
277*1b3cee41SMarcelo Schmitt        default: 0
278*1b3cee41SMarcelo Schmitt
279*1b3cee41SMarcelo Schmitt      adi,excitation-pin-3:
280*1b3cee41SMarcelo Schmitt        description:
281*1b3cee41SMarcelo Schmitt          Analog input to apply excitation current to while the channel
282*1b3cee41SMarcelo Schmitt          is active.
283*1b3cee41SMarcelo Schmitt        $ref: /schemas/types.yaml#/definitions/uint32
284*1b3cee41SMarcelo Schmitt        minimum: 0
285*1b3cee41SMarcelo Schmitt        maximum: 20
286*1b3cee41SMarcelo Schmitt        default: 0
287*1b3cee41SMarcelo Schmitt
288*1b3cee41SMarcelo Schmitt      adi,excitation-current-0-microamp:
289*1b3cee41SMarcelo Schmitt        description:
290*1b3cee41SMarcelo Schmitt          Excitation current in microamperes to be applied to pin specified in
291*1b3cee41SMarcelo Schmitt          adi,excitation-pin-0 while this channel is active.
292*1b3cee41SMarcelo Schmitt        enum: [0, 10, 50, 100, 250, 500, 1000, 1500]
293*1b3cee41SMarcelo Schmitt        default: 0
294*1b3cee41SMarcelo Schmitt
295*1b3cee41SMarcelo Schmitt      adi,excitation-current-1-microamp:
296*1b3cee41SMarcelo Schmitt        description:
297*1b3cee41SMarcelo Schmitt          Excitation current in microamperes to be applied to pin specified in
298*1b3cee41SMarcelo Schmitt          adi,excitation-pin-1 while this channel is active.
299*1b3cee41SMarcelo Schmitt        enum: [0, 10, 50, 100, 250, 500, 1000, 1500]
300*1b3cee41SMarcelo Schmitt        default: 0
301*1b3cee41SMarcelo Schmitt
302*1b3cee41SMarcelo Schmitt      adi,excitation-current-2-microamp:
303*1b3cee41SMarcelo Schmitt        description:
304*1b3cee41SMarcelo Schmitt          Excitation current in microamperes to be applied to pin specified in
305*1b3cee41SMarcelo Schmitt          adi,excitation-pin-2 while this channel is active.
306*1b3cee41SMarcelo Schmitt        enum: [0, 10, 50, 100, 250, 500, 1000, 1500]
307*1b3cee41SMarcelo Schmitt        default: 0
308*1b3cee41SMarcelo Schmitt
309*1b3cee41SMarcelo Schmitt      adi,excitation-current-3-microamp:
310*1b3cee41SMarcelo Schmitt        description:
311*1b3cee41SMarcelo Schmitt          Excitation current in microamperes to be applied to pin specified in
312*1b3cee41SMarcelo Schmitt          adi,excitation-pin-3 while this channel is active.
313*1b3cee41SMarcelo Schmitt        enum: [0, 10, 50, 100, 250, 500, 1000, 1500]
314*1b3cee41SMarcelo Schmitt        default: 0
315*1b3cee41SMarcelo Schmitt
316*1b3cee41SMarcelo Schmitt      adi,excitation-ac:
317*1b3cee41SMarcelo Schmitt        type: boolean
318*1b3cee41SMarcelo Schmitt        description:
319*1b3cee41SMarcelo Schmitt          Whether the external sensor has to be AC or DC excited. When omitted,
320*1b3cee41SMarcelo Schmitt          it is DC excited.
321*1b3cee41SMarcelo Schmitt
322*1b3cee41SMarcelo Schmitt    allOf:
323*1b3cee41SMarcelo Schmitt      - oneOf:
324*1b3cee41SMarcelo Schmitt          - required: [single-channel, common-mode-channel]
325*1b3cee41SMarcelo Schmitt            properties:
326*1b3cee41SMarcelo Schmitt              diff-channels: false
327*1b3cee41SMarcelo Schmitt          - required: [diff-channels]
328*1b3cee41SMarcelo Schmitt            properties:
329*1b3cee41SMarcelo Schmitt              single-channel: false
330*1b3cee41SMarcelo Schmitt              common-mode-channel: false
331*1b3cee41SMarcelo Schmitt      # Usual ADC channels don't need external circuitry excitation.
332*1b3cee41SMarcelo Schmitt      - if:
333*1b3cee41SMarcelo Schmitt          not:
334*1b3cee41SMarcelo Schmitt            required:
335*1b3cee41SMarcelo Schmitt              - adi,sensor-type
336*1b3cee41SMarcelo Schmitt        then:
337*1b3cee41SMarcelo Schmitt          properties:
338*1b3cee41SMarcelo Schmitt            adi,excitation-pin-0: false
339*1b3cee41SMarcelo Schmitt            adi,excitation-pin-1: false
340*1b3cee41SMarcelo Schmitt            adi,excitation-pin-2: false
341*1b3cee41SMarcelo Schmitt            adi,excitation-pin-3: false
342*1b3cee41SMarcelo Schmitt            adi,excitation-current-0-microamp: false
343*1b3cee41SMarcelo Schmitt            adi,excitation-current-1-microamp: false
344*1b3cee41SMarcelo Schmitt            adi,excitation-current-2-microamp: false
345*1b3cee41SMarcelo Schmitt            adi,excitation-current-3-microamp: false
346*1b3cee41SMarcelo Schmitt            adi,excitation-ac: false
347*1b3cee41SMarcelo Schmitt      # Weigh scale bridge AC excited with one pair of predefined signals.
348*1b3cee41SMarcelo Schmitt      - if:
349*1b3cee41SMarcelo Schmitt          allOf:
350*1b3cee41SMarcelo Schmitt            - properties:
351*1b3cee41SMarcelo Schmitt                adi,sensor-type:
352*1b3cee41SMarcelo Schmitt                  contains:
353*1b3cee41SMarcelo Schmitt                    const: weighscale
354*1b3cee41SMarcelo Schmitt            - required:
355*1b3cee41SMarcelo Schmitt                - adi,excitation-ac
356*1b3cee41SMarcelo Schmitt                - adi,excitation-pin-2
357*1b3cee41SMarcelo Schmitt                - adi,excitation-pin-3
358*1b3cee41SMarcelo Schmitt            - not:
359*1b3cee41SMarcelo Schmitt                required:
360*1b3cee41SMarcelo Schmitt                  - adi,excitation-current-2-microamp
361*1b3cee41SMarcelo Schmitt                  - adi,excitation-current-3-microamp
362*1b3cee41SMarcelo Schmitt        then:
363*1b3cee41SMarcelo Schmitt          properties:
364*1b3cee41SMarcelo Schmitt            adi,excitation-pin-2:
365*1b3cee41SMarcelo Schmitt              const: 19
366*1b3cee41SMarcelo Schmitt            adi,excitation-pin-3:
367*1b3cee41SMarcelo Schmitt              const: 20
368*1b3cee41SMarcelo Schmitt      # Weigh scale bridge AC excited with two pairs of predefined signals.
369*1b3cee41SMarcelo Schmitt      - if:
370*1b3cee41SMarcelo Schmitt          allOf:
371*1b3cee41SMarcelo Schmitt            - properties:
372*1b3cee41SMarcelo Schmitt                adi,sensor-type:
373*1b3cee41SMarcelo Schmitt                  contains:
374*1b3cee41SMarcelo Schmitt                    const: weighscale
375*1b3cee41SMarcelo Schmitt            - required:
376*1b3cee41SMarcelo Schmitt                - adi,excitation-ac
377*1b3cee41SMarcelo Schmitt                - adi,excitation-pin-0
378*1b3cee41SMarcelo Schmitt                - adi,excitation-pin-1
379*1b3cee41SMarcelo Schmitt                - adi,excitation-pin-2
380*1b3cee41SMarcelo Schmitt                - adi,excitation-pin-3
381*1b3cee41SMarcelo Schmitt            - not:
382*1b3cee41SMarcelo Schmitt                required:
383*1b3cee41SMarcelo Schmitt                  - adi,excitation-current-0-microamp
384*1b3cee41SMarcelo Schmitt                  - adi,excitation-current-1-microamp
385*1b3cee41SMarcelo Schmitt                  - adi,excitation-current-2-microamp
386*1b3cee41SMarcelo Schmitt                  - adi,excitation-current-3-microamp
387*1b3cee41SMarcelo Schmitt        then:
388*1b3cee41SMarcelo Schmitt          properties:
389*1b3cee41SMarcelo Schmitt            adi,excitation-pin-0:
390*1b3cee41SMarcelo Schmitt              const: 17
391*1b3cee41SMarcelo Schmitt            adi,excitation-pin-1:
392*1b3cee41SMarcelo Schmitt              const: 18
393*1b3cee41SMarcelo Schmitt            adi,excitation-pin-2:
394*1b3cee41SMarcelo Schmitt              const: 19
395*1b3cee41SMarcelo Schmitt            adi,excitation-pin-3:
396*1b3cee41SMarcelo Schmitt              const: 20
397*1b3cee41SMarcelo Schmitt
398*1b3cee41SMarcelo Schmittexamples:
399*1b3cee41SMarcelo Schmitt  - |
400*1b3cee41SMarcelo Schmitt    #include <dt-bindings/interrupt-controller/irq.h>
401*1b3cee41SMarcelo Schmitt    spi {
402*1b3cee41SMarcelo Schmitt        #address-cells = <1>;
403*1b3cee41SMarcelo Schmitt        #size-cells = <0>;
404*1b3cee41SMarcelo Schmitt
405*1b3cee41SMarcelo Schmitt        adc@0 {
406*1b3cee41SMarcelo Schmitt            compatible = "adi,ad4170-4";
407*1b3cee41SMarcelo Schmitt            reg = <0>;
408*1b3cee41SMarcelo Schmitt            spi-max-frequency = <20000000>;
409*1b3cee41SMarcelo Schmitt            spi-cpol;
410*1b3cee41SMarcelo Schmitt            spi-cpha;
411*1b3cee41SMarcelo Schmitt            avdd-supply = <&avdd>;
412*1b3cee41SMarcelo Schmitt            iovdd-supply = <&iovdd>;
413*1b3cee41SMarcelo Schmitt            clocks = <&clk>;
414*1b3cee41SMarcelo Schmitt            clock-names = "xtal";
415*1b3cee41SMarcelo Schmitt            interrupts = <0 IRQ_TYPE_EDGE_FALLING>;
416*1b3cee41SMarcelo Schmitt            interrupt-names = "dig_aux1";
417*1b3cee41SMarcelo Schmitt            adi,vbias-pins = <8>;
418*1b3cee41SMarcelo Schmitt            #address-cells = <1>;
419*1b3cee41SMarcelo Schmitt            #size-cells = <0>;
420*1b3cee41SMarcelo Schmitt
421*1b3cee41SMarcelo Schmitt            // Sample AIN0 with respect to DGND throughout AVDD/DGND input range
422*1b3cee41SMarcelo Schmitt            // Pseudo-differential unipolar
423*1b3cee41SMarcelo Schmitt            channel@0 {
424*1b3cee41SMarcelo Schmitt                reg = <0>;
425*1b3cee41SMarcelo Schmitt                single-channel = <0>;
426*1b3cee41SMarcelo Schmitt                common-mode-channel = <24>;
427*1b3cee41SMarcelo Schmitt                adi,reference-select = <3>;
428*1b3cee41SMarcelo Schmitt            };
429*1b3cee41SMarcelo Schmitt            // Weigh scale sensor
430*1b3cee41SMarcelo Schmitt            channel@1 {
431*1b3cee41SMarcelo Schmitt                reg = <1>;
432*1b3cee41SMarcelo Schmitt                bipolar;
433*1b3cee41SMarcelo Schmitt                diff-channels = <1 2>;
434*1b3cee41SMarcelo Schmitt                adi,reference-select = <0>;
435*1b3cee41SMarcelo Schmitt                adi,positive-reference-buffer = "precharge";
436*1b3cee41SMarcelo Schmitt                adi,negative-reference-buffer = "precharge";
437*1b3cee41SMarcelo Schmitt                adi,sensor-type = "weighscale";
438*1b3cee41SMarcelo Schmitt                adi,excitation-pin-2 = <19>;
439*1b3cee41SMarcelo Schmitt                adi,excitation-pin-3 = <20>;
440*1b3cee41SMarcelo Schmitt                adi,excitation-ac;
441*1b3cee41SMarcelo Schmitt            };
442*1b3cee41SMarcelo Schmitt            // RTD sensor
443*1b3cee41SMarcelo Schmitt            channel@2 {
444*1b3cee41SMarcelo Schmitt                reg = <2>;
445*1b3cee41SMarcelo Schmitt                bipolar;
446*1b3cee41SMarcelo Schmitt                diff-channels = <3 4>;
447*1b3cee41SMarcelo Schmitt                adi,reference-select = <0>;
448*1b3cee41SMarcelo Schmitt                adi,sensor-type = "rtd";
449*1b3cee41SMarcelo Schmitt                adi,excitation-pin-0 = <5>;
450*1b3cee41SMarcelo Schmitt                adi,excitation-pin-1 = <6>;
451*1b3cee41SMarcelo Schmitt                adi,excitation-current-0-microamp = <500>;
452*1b3cee41SMarcelo Schmitt                adi,excitation-current-1-microamp = <500>;
453*1b3cee41SMarcelo Schmitt                adi,excitation-ac;
454*1b3cee41SMarcelo Schmitt            };
455*1b3cee41SMarcelo Schmitt            // Thermocouple sensor
456*1b3cee41SMarcelo Schmitt            channel@3 {
457*1b3cee41SMarcelo Schmitt                reg = <3>;
458*1b3cee41SMarcelo Schmitt                bipolar;
459*1b3cee41SMarcelo Schmitt                diff-channels = <7 8>;
460*1b3cee41SMarcelo Schmitt                adi,reference-select = <0>;
461*1b3cee41SMarcelo Schmitt                adi,sensor-type = "thermocouple";
462*1b3cee41SMarcelo Schmitt                adi,excitation-pin-0 = <18>;
463*1b3cee41SMarcelo Schmitt                adi,excitation-current-0-microamp = <500>;
464*1b3cee41SMarcelo Schmitt            };
465*1b3cee41SMarcelo Schmitt        };
466*1b3cee41SMarcelo Schmitt    };
467*1b3cee41SMarcelo Schmitt  - |
468*1b3cee41SMarcelo Schmitt    #include <dt-bindings/interrupt-controller/irq.h>
469*1b3cee41SMarcelo Schmitt    spi {
470*1b3cee41SMarcelo Schmitt        #address-cells = <1>;
471*1b3cee41SMarcelo Schmitt        #size-cells = <0>;
472*1b3cee41SMarcelo Schmitt
473*1b3cee41SMarcelo Schmitt        adc@0 {
474*1b3cee41SMarcelo Schmitt            compatible = "adi,ad4170-4";
475*1b3cee41SMarcelo Schmitt            reg = <0>;
476*1b3cee41SMarcelo Schmitt            spi-max-frequency = <20000000>;
477*1b3cee41SMarcelo Schmitt            spi-cpol;
478*1b3cee41SMarcelo Schmitt            spi-cpha;
479*1b3cee41SMarcelo Schmitt            avdd-supply = <&avdd>;
480*1b3cee41SMarcelo Schmitt            iovdd-supply = <&iovdd>;
481*1b3cee41SMarcelo Schmitt            #clock-cells = <0>;
482*1b3cee41SMarcelo Schmitt            clock-output-names = "ad4170-clk16mhz";
483*1b3cee41SMarcelo Schmitt            interrupts = <0 IRQ_TYPE_EDGE_FALLING>;
484*1b3cee41SMarcelo Schmitt            interrupt-names = "dig_aux1";
485*1b3cee41SMarcelo Schmitt            #address-cells = <1>;
486*1b3cee41SMarcelo Schmitt            #size-cells = <0>;
487*1b3cee41SMarcelo Schmitt
488*1b3cee41SMarcelo Schmitt            // Sample AIN0 with respect to AIN1 throughout AVDD/AVSS input range
489*1b3cee41SMarcelo Schmitt            // Differential bipolar. If AVSS < 0V, differential true bipolar
490*1b3cee41SMarcelo Schmitt            channel@0 {
491*1b3cee41SMarcelo Schmitt                reg = <0>;
492*1b3cee41SMarcelo Schmitt                bipolar;
493*1b3cee41SMarcelo Schmitt                diff-channels = <0 1>;
494*1b3cee41SMarcelo Schmitt                adi,reference-select = <3>;
495*1b3cee41SMarcelo Schmitt            };
496*1b3cee41SMarcelo Schmitt            // Sample AIN2 with respect to DGND throughout AVDD/DGND input range
497*1b3cee41SMarcelo Schmitt            // Pseudo-differential unipolar
498*1b3cee41SMarcelo Schmitt            channel@1 {
499*1b3cee41SMarcelo Schmitt                reg = <1>;
500*1b3cee41SMarcelo Schmitt                single-channel = <2>;
501*1b3cee41SMarcelo Schmitt                common-mode-channel = <24>;
502*1b3cee41SMarcelo Schmitt                adi,reference-select = <3>;
503*1b3cee41SMarcelo Schmitt            };
504*1b3cee41SMarcelo Schmitt            // Sample AIN3 with respect to 2.5V throughout AVDD/AVSS input range
505*1b3cee41SMarcelo Schmitt            // Pseudo-differential bipolar
506*1b3cee41SMarcelo Schmitt            channel@2 {
507*1b3cee41SMarcelo Schmitt                reg = <2>;
508*1b3cee41SMarcelo Schmitt                bipolar;
509*1b3cee41SMarcelo Schmitt                single-channel = <3>;
510*1b3cee41SMarcelo Schmitt                common-mode-channel = <29>;
511*1b3cee41SMarcelo Schmitt                adi,reference-select = <3>;
512*1b3cee41SMarcelo Schmitt            };
513*1b3cee41SMarcelo Schmitt            // Sample AIN4 with respect to DGND throughout AVDD/AVSS input range
514*1b3cee41SMarcelo Schmitt            // Pseudo-differential bipolar
515*1b3cee41SMarcelo Schmitt            channel@3 {
516*1b3cee41SMarcelo Schmitt                reg = <3>;
517*1b3cee41SMarcelo Schmitt                bipolar;
518*1b3cee41SMarcelo Schmitt                single-channel = <4>;
519*1b3cee41SMarcelo Schmitt                common-mode-channel = <24>;
520*1b3cee41SMarcelo Schmitt                adi,reference-select = <3>;
521*1b3cee41SMarcelo Schmitt            };
522*1b3cee41SMarcelo Schmitt            // Sample AIN5 with respect to 2.5V throughout AVDD/AVSS input range
523*1b3cee41SMarcelo Schmitt            // Pseudo-differential unipolar (AD4170-4 datasheet page 46 example)
524*1b3cee41SMarcelo Schmitt            channel@4 {
525*1b3cee41SMarcelo Schmitt                reg = <4>;
526*1b3cee41SMarcelo Schmitt                single-channel = <5>;
527*1b3cee41SMarcelo Schmitt                common-mode-channel = <29>;
528*1b3cee41SMarcelo Schmitt                adi,reference-select = <3>;
529*1b3cee41SMarcelo Schmitt            };
530*1b3cee41SMarcelo Schmitt            // Sample AIN6 with respect to 2.5V throughout REFIN+/REFIN- input range
531*1b3cee41SMarcelo Schmitt            // Pseudo-differential bipolar
532*1b3cee41SMarcelo Schmitt            channel@5 {
533*1b3cee41SMarcelo Schmitt                reg = <5>;
534*1b3cee41SMarcelo Schmitt                bipolar;
535*1b3cee41SMarcelo Schmitt                single-channel = <6>;
536*1b3cee41SMarcelo Schmitt                common-mode-channel = <29>;
537*1b3cee41SMarcelo Schmitt                adi,reference-select = <0>;
538*1b3cee41SMarcelo Schmitt            };
539*1b3cee41SMarcelo Schmitt            // Weigh scale sensor
540*1b3cee41SMarcelo Schmitt            channel@6 {
541*1b3cee41SMarcelo Schmitt                reg = <6>;
542*1b3cee41SMarcelo Schmitt                bipolar;
543*1b3cee41SMarcelo Schmitt                diff-channels = <7 8>;
544*1b3cee41SMarcelo Schmitt                adi,reference-select = <0>;
545*1b3cee41SMarcelo Schmitt                adi,sensor-type = "weighscale";
546*1b3cee41SMarcelo Schmitt                adi,excitation-pin-0 = <17>;
547*1b3cee41SMarcelo Schmitt                adi,excitation-pin-1 = <18>;
548*1b3cee41SMarcelo Schmitt                adi,excitation-pin-2 = <19>;
549*1b3cee41SMarcelo Schmitt                adi,excitation-pin-3 = <20>;
550*1b3cee41SMarcelo Schmitt                adi,excitation-ac;
551*1b3cee41SMarcelo Schmitt            };
552*1b3cee41SMarcelo Schmitt        };
553*1b3cee41SMarcelo Schmitt    };
554*1b3cee41SMarcelo Schmitt...
555