xref: /OK3568_Linux_fs/kernel/Documentation/devicetree/bindings/iio/adc/st,stm32-adc.yaml (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
2*4882a593Smuzhiyun%YAML 1.2
3*4882a593Smuzhiyun---
4*4882a593Smuzhiyun$id: "http://devicetree.org/schemas/iio/adc/st,stm32-adc.yaml#"
5*4882a593Smuzhiyun$schema: "http://devicetree.org/meta-schemas/core.yaml#"
6*4882a593Smuzhiyun
7*4882a593Smuzhiyuntitle: STMicroelectronics STM32 ADC bindings
8*4882a593Smuzhiyun
9*4882a593Smuzhiyundescription: |
10*4882a593Smuzhiyun  STM32 ADC is a successive approximation analog-to-digital converter.
11*4882a593Smuzhiyun  It has several multiplexed input channels. Conversions can be performed
12*4882a593Smuzhiyun  in single, continuous, scan or discontinuous mode. Result of the ADC is
13*4882a593Smuzhiyun  stored in a left-aligned or right-aligned 32-bit data register.
14*4882a593Smuzhiyun  Conversions can be launched in software or using hardware triggers.
15*4882a593Smuzhiyun
16*4882a593Smuzhiyun  The analog watchdog feature allows the application to detect if the input
17*4882a593Smuzhiyun  voltage goes beyond the user-defined, higher or lower thresholds.
18*4882a593Smuzhiyun
19*4882a593Smuzhiyun  Each STM32 ADC block can have up to 3 ADC instances.
20*4882a593Smuzhiyun
21*4882a593Smuzhiyunmaintainers:
22*4882a593Smuzhiyun  - Fabrice Gasnier <fabrice.gasnier@st.com>
23*4882a593Smuzhiyun
24*4882a593Smuzhiyunproperties:
25*4882a593Smuzhiyun  compatible:
26*4882a593Smuzhiyun    enum:
27*4882a593Smuzhiyun      - st,stm32f4-adc-core
28*4882a593Smuzhiyun      - st,stm32h7-adc-core
29*4882a593Smuzhiyun      - st,stm32mp1-adc-core
30*4882a593Smuzhiyun
31*4882a593Smuzhiyun  reg:
32*4882a593Smuzhiyun    maxItems: 1
33*4882a593Smuzhiyun
34*4882a593Smuzhiyun  interrupts:
35*4882a593Smuzhiyun    description: |
36*4882a593Smuzhiyun      One or more interrupts for ADC block, depending on part used:
37*4882a593Smuzhiyun        - stm32f4 and stm32h7 share a common ADC interrupt line.
38*4882a593Smuzhiyun        - stm32mp1 has two separate interrupt lines, one for each ADC within
39*4882a593Smuzhiyun          ADC block.
40*4882a593Smuzhiyun    minItems: 1
41*4882a593Smuzhiyun    maxItems: 2
42*4882a593Smuzhiyun
43*4882a593Smuzhiyun  clocks:
44*4882a593Smuzhiyun    description: |
45*4882a593Smuzhiyun      Core can use up to two clocks, depending on part used:
46*4882a593Smuzhiyun        - "adc" clock: for the analog circuitry, common to all ADCs.
47*4882a593Smuzhiyun          It's required on stm32f4.
48*4882a593Smuzhiyun          It's optional on stm32h7 and stm32mp1.
49*4882a593Smuzhiyun        - "bus" clock: for registers access, common to all ADCs.
50*4882a593Smuzhiyun          It's not present on stm32f4.
51*4882a593Smuzhiyun          It's required on stm32h7 and stm32mp1.
52*4882a593Smuzhiyun
53*4882a593Smuzhiyun  clock-names: true
54*4882a593Smuzhiyun
55*4882a593Smuzhiyun  st,max-clk-rate-hz:
56*4882a593Smuzhiyun    description:
57*4882a593Smuzhiyun      Allow to specify desired max clock rate used by analog circuitry.
58*4882a593Smuzhiyun
59*4882a593Smuzhiyun  vdda-supply:
60*4882a593Smuzhiyun    description: Phandle to the vdda input analog voltage.
61*4882a593Smuzhiyun
62*4882a593Smuzhiyun  vref-supply:
63*4882a593Smuzhiyun    description: Phandle to the vref input analog reference voltage.
64*4882a593Smuzhiyun
65*4882a593Smuzhiyun  booster-supply:
66*4882a593Smuzhiyun    description:
67*4882a593Smuzhiyun      Phandle to the embedded booster regulator that can be used to supply ADC
68*4882a593Smuzhiyun      analog input switches on stm32h7 and stm32mp1.
69*4882a593Smuzhiyun
70*4882a593Smuzhiyun  vdd-supply:
71*4882a593Smuzhiyun    description:
72*4882a593Smuzhiyun      Phandle to the vdd input voltage. It can be used to supply ADC analog
73*4882a593Smuzhiyun      input switches on stm32mp1.
74*4882a593Smuzhiyun
75*4882a593Smuzhiyun  st,syscfg:
76*4882a593Smuzhiyun    description:
77*4882a593Smuzhiyun      Phandle to system configuration controller. It can be used to control the
78*4882a593Smuzhiyun      analog circuitry on stm32mp1.
79*4882a593Smuzhiyun    $ref: "/schemas/types.yaml#/definitions/phandle-array"
80*4882a593Smuzhiyun
81*4882a593Smuzhiyun  interrupt-controller: true
82*4882a593Smuzhiyun
83*4882a593Smuzhiyun  '#interrupt-cells':
84*4882a593Smuzhiyun    const: 1
85*4882a593Smuzhiyun
86*4882a593Smuzhiyun  '#address-cells':
87*4882a593Smuzhiyun    const: 1
88*4882a593Smuzhiyun
89*4882a593Smuzhiyun  '#size-cells':
90*4882a593Smuzhiyun    const: 0
91*4882a593Smuzhiyun
92*4882a593SmuzhiyunallOf:
93*4882a593Smuzhiyun  - if:
94*4882a593Smuzhiyun      properties:
95*4882a593Smuzhiyun        compatible:
96*4882a593Smuzhiyun          contains:
97*4882a593Smuzhiyun            const: st,stm32f4-adc-core
98*4882a593Smuzhiyun
99*4882a593Smuzhiyun    then:
100*4882a593Smuzhiyun      properties:
101*4882a593Smuzhiyun        clocks:
102*4882a593Smuzhiyun          maxItems: 1
103*4882a593Smuzhiyun
104*4882a593Smuzhiyun        clock-names:
105*4882a593Smuzhiyun          const: adc
106*4882a593Smuzhiyun
107*4882a593Smuzhiyun        interrupts:
108*4882a593Smuzhiyun          items:
109*4882a593Smuzhiyun            - description: interrupt line common for all ADCs
110*4882a593Smuzhiyun
111*4882a593Smuzhiyun        st,max-clk-rate-hz:
112*4882a593Smuzhiyun          minimum: 600000
113*4882a593Smuzhiyun          maximum: 36000000
114*4882a593Smuzhiyun          default: 36000000
115*4882a593Smuzhiyun
116*4882a593Smuzhiyun        booster-supply: false
117*4882a593Smuzhiyun
118*4882a593Smuzhiyun        vdd-supply: false
119*4882a593Smuzhiyun
120*4882a593Smuzhiyun        st,syscfg: false
121*4882a593Smuzhiyun
122*4882a593Smuzhiyun  - if:
123*4882a593Smuzhiyun      properties:
124*4882a593Smuzhiyun        compatible:
125*4882a593Smuzhiyun          contains:
126*4882a593Smuzhiyun            const: st,stm32h7-adc-core
127*4882a593Smuzhiyun
128*4882a593Smuzhiyun    then:
129*4882a593Smuzhiyun      properties:
130*4882a593Smuzhiyun        clocks:
131*4882a593Smuzhiyun          minItems: 1
132*4882a593Smuzhiyun          maxItems: 2
133*4882a593Smuzhiyun
134*4882a593Smuzhiyun        clock-names:
135*4882a593Smuzhiyun          items:
136*4882a593Smuzhiyun            - const: bus
137*4882a593Smuzhiyun            - const: adc
138*4882a593Smuzhiyun          minItems: 1
139*4882a593Smuzhiyun          maxItems: 2
140*4882a593Smuzhiyun
141*4882a593Smuzhiyun        interrupts:
142*4882a593Smuzhiyun          items:
143*4882a593Smuzhiyun            - description: interrupt line common for all ADCs
144*4882a593Smuzhiyun
145*4882a593Smuzhiyun        st,max-clk-rate-hz:
146*4882a593Smuzhiyun          minimum: 120000
147*4882a593Smuzhiyun          maximum: 36000000
148*4882a593Smuzhiyun          default: 36000000
149*4882a593Smuzhiyun
150*4882a593Smuzhiyun        vdd-supply: false
151*4882a593Smuzhiyun
152*4882a593Smuzhiyun        st,syscfg: false
153*4882a593Smuzhiyun
154*4882a593Smuzhiyun  - if:
155*4882a593Smuzhiyun      properties:
156*4882a593Smuzhiyun        compatible:
157*4882a593Smuzhiyun          contains:
158*4882a593Smuzhiyun            const: st,stm32mp1-adc-core
159*4882a593Smuzhiyun
160*4882a593Smuzhiyun    then:
161*4882a593Smuzhiyun      properties:
162*4882a593Smuzhiyun        clocks:
163*4882a593Smuzhiyun          minItems: 1
164*4882a593Smuzhiyun          maxItems: 2
165*4882a593Smuzhiyun
166*4882a593Smuzhiyun        clock-names:
167*4882a593Smuzhiyun          items:
168*4882a593Smuzhiyun            - const: bus
169*4882a593Smuzhiyun            - const: adc
170*4882a593Smuzhiyun          minItems: 1
171*4882a593Smuzhiyun          maxItems: 2
172*4882a593Smuzhiyun
173*4882a593Smuzhiyun        interrupts:
174*4882a593Smuzhiyun          items:
175*4882a593Smuzhiyun            - description: interrupt line for ADC1
176*4882a593Smuzhiyun            - description: interrupt line for ADC2
177*4882a593Smuzhiyun
178*4882a593Smuzhiyun        st,max-clk-rate-hz:
179*4882a593Smuzhiyun          minimum: 120000
180*4882a593Smuzhiyun          maximum: 36000000
181*4882a593Smuzhiyun          default: 36000000
182*4882a593Smuzhiyun
183*4882a593SmuzhiyunadditionalProperties: false
184*4882a593Smuzhiyun
185*4882a593Smuzhiyunrequired:
186*4882a593Smuzhiyun  - compatible
187*4882a593Smuzhiyun  - reg
188*4882a593Smuzhiyun  - interrupts
189*4882a593Smuzhiyun  - clocks
190*4882a593Smuzhiyun  - clock-names
191*4882a593Smuzhiyun  - vdda-supply
192*4882a593Smuzhiyun  - vref-supply
193*4882a593Smuzhiyun  - interrupt-controller
194*4882a593Smuzhiyun  - '#interrupt-cells'
195*4882a593Smuzhiyun  - '#address-cells'
196*4882a593Smuzhiyun  - '#size-cells'
197*4882a593Smuzhiyun
198*4882a593SmuzhiyunpatternProperties:
199*4882a593Smuzhiyun  "^adc@[0-9]+$":
200*4882a593Smuzhiyun    type: object
201*4882a593Smuzhiyun    description:
202*4882a593Smuzhiyun      An ADC block node should contain at least one subnode, representing an
203*4882a593Smuzhiyun      ADC instance available on the machine.
204*4882a593Smuzhiyun
205*4882a593Smuzhiyun    properties:
206*4882a593Smuzhiyun      compatible:
207*4882a593Smuzhiyun        enum:
208*4882a593Smuzhiyun          - st,stm32f4-adc
209*4882a593Smuzhiyun          - st,stm32h7-adc
210*4882a593Smuzhiyun          - st,stm32mp1-adc
211*4882a593Smuzhiyun
212*4882a593Smuzhiyun      reg:
213*4882a593Smuzhiyun        description: |
214*4882a593Smuzhiyun          Offset of ADC instance in ADC block. Valid values are:
215*4882a593Smuzhiyun            - 0x0:   ADC1
216*4882a593Smuzhiyun            - 0x100: ADC2
217*4882a593Smuzhiyun            - 0x200: ADC3 (stm32f4 only)
218*4882a593Smuzhiyun        maxItems: 1
219*4882a593Smuzhiyun
220*4882a593Smuzhiyun      '#io-channel-cells':
221*4882a593Smuzhiyun        const: 1
222*4882a593Smuzhiyun
223*4882a593Smuzhiyun      interrupts:
224*4882a593Smuzhiyun        description: |
225*4882a593Smuzhiyun          IRQ Line for the ADC instance. Valid values are:
226*4882a593Smuzhiyun            - 0 for adc@0
227*4882a593Smuzhiyun            - 1 for adc@100
228*4882a593Smuzhiyun            - 2 for adc@200 (stm32f4 only)
229*4882a593Smuzhiyun        maxItems: 1
230*4882a593Smuzhiyun
231*4882a593Smuzhiyun      clocks:
232*4882a593Smuzhiyun        description:
233*4882a593Smuzhiyun          Input clock private to this ADC instance. It's required only on
234*4882a593Smuzhiyun          stm32f4, that has per instance clock input for registers access.
235*4882a593Smuzhiyun        maxItems: 1
236*4882a593Smuzhiyun
237*4882a593Smuzhiyun      dmas:
238*4882a593Smuzhiyun        description: RX DMA Channel
239*4882a593Smuzhiyun        maxItems: 1
240*4882a593Smuzhiyun
241*4882a593Smuzhiyun      dma-names:
242*4882a593Smuzhiyun        const: rx
243*4882a593Smuzhiyun
244*4882a593Smuzhiyun      assigned-resolution-bits:
245*4882a593Smuzhiyun        description: |
246*4882a593Smuzhiyun          Resolution (bits) to use for conversions:
247*4882a593Smuzhiyun            - can be 6, 8, 10 or 12 on stm32f4
248*4882a593Smuzhiyun            - can be 8, 10, 12, 14 or 16 on stm32h7 and stm32mp1
249*4882a593Smuzhiyun        $ref: /schemas/types.yaml#/definitions/uint32
250*4882a593Smuzhiyun
251*4882a593Smuzhiyun      st,adc-channels:
252*4882a593Smuzhiyun        description: |
253*4882a593Smuzhiyun          List of single-ended channels muxed for this ADC. It can have up to:
254*4882a593Smuzhiyun            - 16 channels, numbered from 0 to 15 (for in0..in15) on stm32f4
255*4882a593Smuzhiyun            - 20 channels, numbered from 0 to 19 (for in0..in19) on stm32h7 and
256*4882a593Smuzhiyun              stm32mp1.
257*4882a593Smuzhiyun        $ref: /schemas/types.yaml#/definitions/uint32-array
258*4882a593Smuzhiyun
259*4882a593Smuzhiyun      st,adc-diff-channels:
260*4882a593Smuzhiyun        description: |
261*4882a593Smuzhiyun          List of differential channels muxed for this ADC. Some channels can
262*4882a593Smuzhiyun          be configured as differential instead of single-ended on stm32h7 and
263*4882a593Smuzhiyun          on stm32mp1. Positive and negative inputs pairs are listed:
264*4882a593Smuzhiyun          <vinp vinn>, <vinp vinn>,... vinp and vinn are numbered from 0 to 19.
265*4882a593Smuzhiyun
266*4882a593Smuzhiyun          Note: At least one of "st,adc-channels" or "st,adc-diff-channels" is
267*4882a593Smuzhiyun          required. Both properties can be used together. Some channels can be
268*4882a593Smuzhiyun          used as single-ended and some other ones as differential (mixed). But
269*4882a593Smuzhiyun          channels can't be configured both as single-ended and differential.
270*4882a593Smuzhiyun        $ref: /schemas/types.yaml#/definitions/uint32-matrix
271*4882a593Smuzhiyun        items:
272*4882a593Smuzhiyun          items:
273*4882a593Smuzhiyun            - description: |
274*4882a593Smuzhiyun                "vinp" indicates positive input number
275*4882a593Smuzhiyun              minimum: 0
276*4882a593Smuzhiyun              maximum: 19
277*4882a593Smuzhiyun            - description: |
278*4882a593Smuzhiyun                "vinn" indicates negative input number
279*4882a593Smuzhiyun              minimum: 0
280*4882a593Smuzhiyun              maximum: 19
281*4882a593Smuzhiyun
282*4882a593Smuzhiyun      st,min-sample-time-nsecs:
283*4882a593Smuzhiyun        description:
284*4882a593Smuzhiyun          Minimum sampling time in nanoseconds. Depending on hardware (board)
285*4882a593Smuzhiyun          e.g. high/low analog input source impedance, fine tune of ADC
286*4882a593Smuzhiyun          sampling time may be recommended. This can be either one value or an
287*4882a593Smuzhiyun          array that matches "st,adc-channels" and/or "st,adc-diff-channels"
288*4882a593Smuzhiyun          list, to set sample time resp. for all channels, or independently for
289*4882a593Smuzhiyun          each channel.
290*4882a593Smuzhiyun        $ref: /schemas/types.yaml#/definitions/uint32-array
291*4882a593Smuzhiyun
292*4882a593Smuzhiyun    allOf:
293*4882a593Smuzhiyun      - if:
294*4882a593Smuzhiyun          properties:
295*4882a593Smuzhiyun            compatible:
296*4882a593Smuzhiyun              contains:
297*4882a593Smuzhiyun                const: st,stm32f4-adc
298*4882a593Smuzhiyun
299*4882a593Smuzhiyun        then:
300*4882a593Smuzhiyun          properties:
301*4882a593Smuzhiyun            reg:
302*4882a593Smuzhiyun              enum:
303*4882a593Smuzhiyun                - 0x0
304*4882a593Smuzhiyun                - 0x100
305*4882a593Smuzhiyun                - 0x200
306*4882a593Smuzhiyun
307*4882a593Smuzhiyun            interrupts:
308*4882a593Smuzhiyun              minimum: 0
309*4882a593Smuzhiyun              maximum: 2
310*4882a593Smuzhiyun
311*4882a593Smuzhiyun            assigned-resolution-bits:
312*4882a593Smuzhiyun              enum: [6, 8, 10, 12]
313*4882a593Smuzhiyun              default: 12
314*4882a593Smuzhiyun
315*4882a593Smuzhiyun            st,adc-channels:
316*4882a593Smuzhiyun              minItems: 1
317*4882a593Smuzhiyun              maxItems: 16
318*4882a593Smuzhiyun              items:
319*4882a593Smuzhiyun                minimum: 0
320*4882a593Smuzhiyun                maximum: 15
321*4882a593Smuzhiyun
322*4882a593Smuzhiyun            st,adc-diff-channels: false
323*4882a593Smuzhiyun
324*4882a593Smuzhiyun            st,min-sample-time-nsecs:
325*4882a593Smuzhiyun              minItems: 1
326*4882a593Smuzhiyun              maxItems: 16
327*4882a593Smuzhiyun              items:
328*4882a593Smuzhiyun                minimum: 80
329*4882a593Smuzhiyun
330*4882a593Smuzhiyun          required:
331*4882a593Smuzhiyun            - clocks
332*4882a593Smuzhiyun
333*4882a593Smuzhiyun      - if:
334*4882a593Smuzhiyun          properties:
335*4882a593Smuzhiyun            compatible:
336*4882a593Smuzhiyun              contains:
337*4882a593Smuzhiyun                enum:
338*4882a593Smuzhiyun                  - st,stm32h7-adc
339*4882a593Smuzhiyun                  - st,stm32mp1-adc
340*4882a593Smuzhiyun
341*4882a593Smuzhiyun        then:
342*4882a593Smuzhiyun          properties:
343*4882a593Smuzhiyun            reg:
344*4882a593Smuzhiyun              enum:
345*4882a593Smuzhiyun                - 0x0
346*4882a593Smuzhiyun                - 0x100
347*4882a593Smuzhiyun
348*4882a593Smuzhiyun            interrupts:
349*4882a593Smuzhiyun              minimum: 0
350*4882a593Smuzhiyun              maximum: 1
351*4882a593Smuzhiyun
352*4882a593Smuzhiyun            assigned-resolution-bits:
353*4882a593Smuzhiyun              enum: [8, 10, 12, 14, 16]
354*4882a593Smuzhiyun              default: 16
355*4882a593Smuzhiyun
356*4882a593Smuzhiyun            st,adc-channels:
357*4882a593Smuzhiyun              minItems: 1
358*4882a593Smuzhiyun              maxItems: 20
359*4882a593Smuzhiyun              items:
360*4882a593Smuzhiyun                minimum: 0
361*4882a593Smuzhiyun                maximum: 19
362*4882a593Smuzhiyun
363*4882a593Smuzhiyun            st,min-sample-time-nsecs:
364*4882a593Smuzhiyun              minItems: 1
365*4882a593Smuzhiyun              maxItems: 20
366*4882a593Smuzhiyun              items:
367*4882a593Smuzhiyun                minimum: 40
368*4882a593Smuzhiyun
369*4882a593Smuzhiyun    additionalProperties: false
370*4882a593Smuzhiyun
371*4882a593Smuzhiyun    anyOf:
372*4882a593Smuzhiyun      - required:
373*4882a593Smuzhiyun          - st,adc-channels
374*4882a593Smuzhiyun      - required:
375*4882a593Smuzhiyun          - st,adc-diff-channels
376*4882a593Smuzhiyun
377*4882a593Smuzhiyun    required:
378*4882a593Smuzhiyun      - compatible
379*4882a593Smuzhiyun      - reg
380*4882a593Smuzhiyun      - interrupts
381*4882a593Smuzhiyun      - '#io-channel-cells'
382*4882a593Smuzhiyun
383*4882a593Smuzhiyunexamples:
384*4882a593Smuzhiyun  - |
385*4882a593Smuzhiyun    // Example 1: with stm32f429, ADC1, single-ended channel 8
386*4882a593Smuzhiyun      adc123: adc@40012000 {
387*4882a593Smuzhiyun        compatible = "st,stm32f4-adc-core";
388*4882a593Smuzhiyun        reg = <0x40012000 0x400>;
389*4882a593Smuzhiyun        interrupts = <18>;
390*4882a593Smuzhiyun        clocks = <&rcc 0 168>;
391*4882a593Smuzhiyun        clock-names = "adc";
392*4882a593Smuzhiyun        st,max-clk-rate-hz = <36000000>;
393*4882a593Smuzhiyun        vdda-supply = <&vdda>;
394*4882a593Smuzhiyun        vref-supply = <&vref>;
395*4882a593Smuzhiyun        interrupt-controller;
396*4882a593Smuzhiyun        #interrupt-cells = <1>;
397*4882a593Smuzhiyun        #address-cells = <1>;
398*4882a593Smuzhiyun        #size-cells = <0>;
399*4882a593Smuzhiyun        adc@0 {
400*4882a593Smuzhiyun          compatible = "st,stm32f4-adc";
401*4882a593Smuzhiyun          #io-channel-cells = <1>;
402*4882a593Smuzhiyun          reg = <0x0>;
403*4882a593Smuzhiyun          clocks = <&rcc 0 168>;
404*4882a593Smuzhiyun          interrupt-parent = <&adc123>;
405*4882a593Smuzhiyun          interrupts = <0>;
406*4882a593Smuzhiyun          st,adc-channels = <8>;
407*4882a593Smuzhiyun          dmas = <&dma2 0 0 0x400 0x0>;
408*4882a593Smuzhiyun          dma-names = "rx";
409*4882a593Smuzhiyun          assigned-resolution-bits = <8>;
410*4882a593Smuzhiyun        };
411*4882a593Smuzhiyun        // ...
412*4882a593Smuzhiyun        // other adc child nodes follow...
413*4882a593Smuzhiyun      };
414*4882a593Smuzhiyun
415*4882a593Smuzhiyun  - |
416*4882a593Smuzhiyun    // Example 2: with stm32mp157c to setup ADC1 with:
417*4882a593Smuzhiyun    // - channels 0 & 1 as single-ended
418*4882a593Smuzhiyun    // - channels 2 & 3 as differential (with resp. 6 & 7 negative inputs)
419*4882a593Smuzhiyun      #include <dt-bindings/interrupt-controller/arm-gic.h>
420*4882a593Smuzhiyun      #include <dt-bindings/clock/stm32mp1-clks.h>
421*4882a593Smuzhiyun      adc12: adc@48003000 {
422*4882a593Smuzhiyun        compatible = "st,stm32mp1-adc-core";
423*4882a593Smuzhiyun        reg = <0x48003000 0x400>;
424*4882a593Smuzhiyun        interrupts = <GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH>,
425*4882a593Smuzhiyun                     <GIC_SPI 90 IRQ_TYPE_LEVEL_HIGH>;
426*4882a593Smuzhiyun        clocks = <&rcc ADC12>, <&rcc ADC12_K>;
427*4882a593Smuzhiyun        clock-names = "bus", "adc";
428*4882a593Smuzhiyun        booster-supply = <&booster>;
429*4882a593Smuzhiyun        vdd-supply = <&vdd>;
430*4882a593Smuzhiyun        vdda-supply = <&vdda>;
431*4882a593Smuzhiyun        vref-supply = <&vref>;
432*4882a593Smuzhiyun        st,syscfg = <&syscfg>;
433*4882a593Smuzhiyun        interrupt-controller;
434*4882a593Smuzhiyun        #interrupt-cells = <1>;
435*4882a593Smuzhiyun        #address-cells = <1>;
436*4882a593Smuzhiyun        #size-cells = <0>;
437*4882a593Smuzhiyun        adc@0 {
438*4882a593Smuzhiyun          compatible = "st,stm32mp1-adc";
439*4882a593Smuzhiyun          #io-channel-cells = <1>;
440*4882a593Smuzhiyun          reg = <0x0>;
441*4882a593Smuzhiyun          interrupt-parent = <&adc12>;
442*4882a593Smuzhiyun          interrupts = <0>;
443*4882a593Smuzhiyun          st,adc-channels = <0 1>;
444*4882a593Smuzhiyun          st,adc-diff-channels = <2 6>, <3 7>;
445*4882a593Smuzhiyun          st,min-sample-time-nsecs = <5000>;
446*4882a593Smuzhiyun          dmas = <&dmamux1 9 0x400 0x05>;
447*4882a593Smuzhiyun          dma-names = "rx";
448*4882a593Smuzhiyun        };
449*4882a593Smuzhiyun        // ...
450*4882a593Smuzhiyun        // other adc child node follow...
451*4882a593Smuzhiyun      };
452*4882a593Smuzhiyun
453*4882a593Smuzhiyun...
454