xref: /linux/Documentation/devicetree/bindings/usb/qcom,dwc3.yaml (revision 5027ec19f1049a07df5b0a37b1f462514cf2724b)
1# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/usb/qcom,dwc3.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Qualcomm SuperSpeed DWC3 USB SoC controller
8
9maintainers:
10  - Wesley Cheng <quic_wcheng@quicinc.com>
11
12properties:
13  compatible:
14    items:
15      - enum:
16          - qcom,ipq4019-dwc3
17          - qcom,ipq5018-dwc3
18          - qcom,ipq5332-dwc3
19          - qcom,ipq6018-dwc3
20          - qcom,ipq8064-dwc3
21          - qcom,ipq8074-dwc3
22          - qcom,ipq9574-dwc3
23          - qcom,msm8953-dwc3
24          - qcom,msm8994-dwc3
25          - qcom,msm8996-dwc3
26          - qcom,msm8998-dwc3
27          - qcom,qcm2290-dwc3
28          - qcom,qcs404-dwc3
29          - qcom,sa8775p-dwc3
30          - qcom,sc7180-dwc3
31          - qcom,sc7280-dwc3
32          - qcom,sc8280xp-dwc3
33          - qcom,sdm660-dwc3
34          - qcom,sdm670-dwc3
35          - qcom,sdm845-dwc3
36          - qcom,sdx55-dwc3
37          - qcom,sdx65-dwc3
38          - qcom,sdx75-dwc3
39          - qcom,sm4250-dwc3
40          - qcom,sm6115-dwc3
41          - qcom,sm6125-dwc3
42          - qcom,sm6350-dwc3
43          - qcom,sm6375-dwc3
44          - qcom,sm8150-dwc3
45          - qcom,sm8250-dwc3
46          - qcom,sm8350-dwc3
47          - qcom,sm8450-dwc3
48          - qcom,sm8550-dwc3
49      - const: qcom,dwc3
50
51  reg:
52    description: Offset and length of register set for QSCRATCH wrapper
53    maxItems: 1
54
55  "#address-cells":
56    enum: [ 1, 2 ]
57
58  "#size-cells":
59    enum: [ 1, 2 ]
60
61  ranges: true
62
63  power-domains:
64    description: specifies a phandle to PM domain provider node
65    maxItems: 1
66
67  required-opps:
68    maxItems: 1
69
70  clocks:
71    description: |
72      Several clocks are used, depending on the variant. Typical ones are::
73       - cfg_noc:: System Config NOC clock.
74       - core:: Master/Core clock, has to be >= 125 MHz for SS operation and >=
75                60MHz for HS operation.
76       - iface:: System bus AXI clock.
77       - sleep:: Sleep clock, used for wakeup when USB3 core goes into low
78                 power mode (U3).
79       - mock_utmi:: Mock utmi clock needed for ITP/SOF generation in host
80                     mode. Its frequency should be 19.2MHz.
81    minItems: 1
82    maxItems: 9
83
84  clock-names:
85    minItems: 1
86    maxItems: 9
87
88  resets:
89    maxItems: 1
90
91  interconnects:
92    maxItems: 2
93
94  interconnect-names:
95    items:
96      - const: usb-ddr
97      - const: apps-usb
98
99  interrupts:
100    minItems: 1
101    maxItems: 4
102
103  interrupt-names:
104    minItems: 1
105    maxItems: 4
106
107  qcom,select-utmi-as-pipe-clk:
108    description:
109      If present, disable USB3 pipe_clk requirement.
110      Used when dwc3 operates without SSPHY and only
111      HS/FS/LS modes are supported.
112    type: boolean
113
114  wakeup-source: true
115
116# Required child node:
117
118patternProperties:
119  "^usb@[0-9a-f]+$":
120    $ref: snps,dwc3.yaml#
121    unevaluatedProperties: false
122
123    properties:
124      wakeup-source: false
125
126required:
127  - compatible
128  - reg
129  - "#address-cells"
130  - "#size-cells"
131  - ranges
132  - clocks
133  - clock-names
134  - interrupts
135  - interrupt-names
136
137allOf:
138  - if:
139      properties:
140        compatible:
141          contains:
142            enum:
143              - qcom,ipq4019-dwc3
144    then:
145      properties:
146        clocks:
147          maxItems: 3
148        clock-names:
149          items:
150            - const: core
151            - const: sleep
152            - const: mock_utmi
153
154  - if:
155      properties:
156        compatible:
157          contains:
158            enum:
159              - qcom,ipq8064-dwc3
160    then:
161      properties:
162        clocks:
163          items:
164            - description: Master/Core clock, has to be >= 125 MHz
165                for SS operation and >= 60MHz for HS operation.
166        clock-names:
167          items:
168            - const: core
169
170  - if:
171      properties:
172        compatible:
173          contains:
174            enum:
175              - qcom,ipq9574-dwc3
176              - qcom,msm8953-dwc3
177              - qcom,msm8996-dwc3
178              - qcom,msm8998-dwc3
179              - qcom,sa8775p-dwc3
180              - qcom,sc7180-dwc3
181              - qcom,sc7280-dwc3
182              - qcom,sdm670-dwc3
183              - qcom,sdm845-dwc3
184              - qcom,sdx55-dwc3
185              - qcom,sdx65-dwc3
186              - qcom,sdx75-dwc3
187              - qcom,sm6350-dwc3
188    then:
189      properties:
190        clocks:
191          maxItems: 5
192        clock-names:
193          items:
194            - const: cfg_noc
195            - const: core
196            - const: iface
197            - const: sleep
198            - const: mock_utmi
199
200  - if:
201      properties:
202        compatible:
203          contains:
204            enum:
205              - qcom,ipq6018-dwc3
206    then:
207      properties:
208        clocks:
209          minItems: 3
210          maxItems: 4
211        clock-names:
212          oneOf:
213            - items:
214                - const: core
215                - const: sleep
216                - const: mock_utmi
217            - items:
218                - const: cfg_noc
219                - const: core
220                - const: sleep
221                - const: mock_utmi
222
223  - if:
224      properties:
225        compatible:
226          contains:
227            enum:
228              - qcom,ipq8074-dwc3
229    then:
230      properties:
231        clocks:
232          maxItems: 4
233        clock-names:
234          items:
235            - const: cfg_noc
236            - const: core
237            - const: sleep
238            - const: mock_utmi
239
240  - if:
241      properties:
242        compatible:
243          contains:
244            enum:
245              - qcom,ipq5018-dwc3
246              - qcom,ipq5332-dwc3
247              - qcom,msm8994-dwc3
248              - qcom,qcs404-dwc3
249    then:
250      properties:
251        clocks:
252          maxItems: 4
253        clock-names:
254          items:
255            - const: core
256            - const: iface
257            - const: sleep
258            - const: mock_utmi
259
260  - if:
261      properties:
262        compatible:
263          contains:
264            enum:
265              - qcom,sc8280xp-dwc3
266    then:
267      properties:
268        clocks:
269          maxItems: 9
270        clock-names:
271          items:
272            - const: cfg_noc
273            - const: core
274            - const: iface
275            - const: sleep
276            - const: mock_utmi
277            - const: noc_aggr
278            - const: noc_aggr_north
279            - const: noc_aggr_south
280            - const: noc_sys
281
282  - if:
283      properties:
284        compatible:
285          contains:
286            enum:
287              - qcom,sdm660-dwc3
288    then:
289      properties:
290        clocks:
291          minItems: 5
292          maxItems: 6
293        clock-names:
294          oneOf:
295            - items:
296                - const: cfg_noc
297                - const: core
298                - const: iface
299                - const: sleep
300                - const: mock_utmi
301                - const: bus
302            - items:
303                - const: cfg_noc
304                - const: core
305                - const: sleep
306                - const: mock_utmi
307                - const: bus
308
309  - if:
310      properties:
311        compatible:
312          contains:
313            enum:
314              - qcom,qcm2290-dwc3
315              - qcom,sm6115-dwc3
316              - qcom,sm6125-dwc3
317              - qcom,sm8150-dwc3
318              - qcom,sm8250-dwc3
319              - qcom,sm8450-dwc3
320              - qcom,sm8550-dwc3
321    then:
322      properties:
323        clocks:
324          minItems: 6
325        clock-names:
326          items:
327            - const: cfg_noc
328            - const: core
329            - const: iface
330            - const: sleep
331            - const: mock_utmi
332            - const: xo
333
334  - if:
335      properties:
336        compatible:
337          contains:
338            enum:
339              - qcom,sm8350-dwc3
340    then:
341      properties:
342        clocks:
343          minItems: 5
344          maxItems: 6
345        clock-names:
346          minItems: 5
347          items:
348            - const: cfg_noc
349            - const: core
350            - const: iface
351            - const: sleep
352            - const: mock_utmi
353            - const: xo
354
355  - if:
356      properties:
357        compatible:
358          contains:
359            enum:
360              - qcom,ipq4019-dwc3
361              - qcom,ipq6018-dwc3
362              - qcom,ipq8064-dwc3
363              - qcom,ipq8074-dwc3
364              - qcom,msm8994-dwc3
365              - qcom,qcs404-dwc3
366              - qcom,sc7180-dwc3
367              - qcom,sdm670-dwc3
368              - qcom,sdm845-dwc3
369              - qcom,sdx55-dwc3
370              - qcom,sdx65-dwc3
371              - qcom,sdx75-dwc3
372              - qcom,sm4250-dwc3
373              - qcom,sm6125-dwc3
374              - qcom,sm6350-dwc3
375              - qcom,sm8150-dwc3
376              - qcom,sm8250-dwc3
377              - qcom,sm8350-dwc3
378              - qcom,sm8450-dwc3
379              - qcom,sm8550-dwc3
380    then:
381      properties:
382        interrupts:
383          items:
384            - description: The interrupt that is asserted
385                when a wakeup event is received on USB2 bus.
386            - description: The interrupt that is asserted
387                when a wakeup event is received on USB3 bus.
388            - description: Wakeup event on DM line.
389            - description: Wakeup event on DP line.
390        interrupt-names:
391          items:
392            - const: hs_phy_irq
393            - const: ss_phy_irq
394            - const: dm_hs_phy_irq
395            - const: dp_hs_phy_irq
396
397  - if:
398      properties:
399        compatible:
400          contains:
401            enum:
402              - qcom,msm8953-dwc3
403              - qcom,msm8996-dwc3
404              - qcom,msm8998-dwc3
405              - qcom,sm6115-dwc3
406    then:
407      properties:
408        interrupts:
409          maxItems: 2
410        interrupt-names:
411          items:
412            - const: hs_phy_irq
413            - const: ss_phy_irq
414
415  - if:
416      properties:
417        compatible:
418          contains:
419            enum:
420              - qcom,ipq5018-dwc3
421              - qcom,ipq5332-dwc3
422              - qcom,sdm660-dwc3
423    then:
424      properties:
425        interrupts:
426          minItems: 1
427          maxItems: 2
428        interrupt-names:
429          minItems: 1
430          items:
431            - const: hs_phy_irq
432            - const: ss_phy_irq
433
434  - if:
435      properties:
436        compatible:
437          contains:
438            enum:
439              - qcom,sc7280-dwc3
440    then:
441      properties:
442        interrupts:
443          minItems: 3
444          maxItems: 4
445        interrupt-names:
446          minItems: 3
447          items:
448            - const: hs_phy_irq
449            - const: dp_hs_phy_irq
450            - const: dm_hs_phy_irq
451            - const: ss_phy_irq
452
453  - if:
454      properties:
455        compatible:
456          contains:
457            enum:
458              - qcom,sc8280xp-dwc3
459    then:
460      properties:
461        interrupts:
462          maxItems: 4
463        interrupt-names:
464          items:
465            - const: pwr_event
466            - const: dp_hs_phy_irq
467            - const: dm_hs_phy_irq
468            - const: ss_phy_irq
469
470  - if:
471      properties:
472        compatible:
473          contains:
474            enum:
475              - qcom,sa8775p-dwc3
476    then:
477      properties:
478        interrupts:
479          minItems: 3
480          maxItems: 4
481        interrupt-names:
482          minItems: 3
483          items:
484            - const: pwr_event
485            - const: dp_hs_phy_irq
486            - const: dm_hs_phy_irq
487            - const: ss_phy_irq
488
489additionalProperties: false
490
491examples:
492  - |
493    #include <dt-bindings/clock/qcom,gcc-sdm845.h>
494    #include <dt-bindings/interrupt-controller/arm-gic.h>
495    #include <dt-bindings/interrupt-controller/irq.h>
496    soc {
497        #address-cells = <2>;
498        #size-cells = <2>;
499
500        usb@a6f8800 {
501            compatible = "qcom,sdm845-dwc3", "qcom,dwc3";
502            reg = <0 0x0a6f8800 0 0x400>;
503
504            #address-cells = <2>;
505            #size-cells = <2>;
506            ranges;
507            clocks = <&gcc GCC_CFG_NOC_USB3_PRIM_AXI_CLK>,
508                     <&gcc GCC_USB30_PRIM_MASTER_CLK>,
509                     <&gcc GCC_AGGRE_USB3_PRIM_AXI_CLK>,
510                     <&gcc GCC_USB30_PRIM_SLEEP_CLK>,
511                     <&gcc GCC_USB30_PRIM_MOCK_UTMI_CLK>;
512            clock-names = "cfg_noc",
513                          "core",
514                          "iface",
515                          "sleep",
516                          "mock_utmi";
517
518            assigned-clocks = <&gcc GCC_USB30_PRIM_MOCK_UTMI_CLK>,
519                          <&gcc GCC_USB30_PRIM_MASTER_CLK>;
520            assigned-clock-rates = <19200000>, <150000000>;
521
522            interrupts = <GIC_SPI 131 IRQ_TYPE_LEVEL_HIGH>,
523                         <GIC_SPI 486 IRQ_TYPE_LEVEL_HIGH>,
524                         <GIC_SPI 488 IRQ_TYPE_LEVEL_HIGH>,
525                         <GIC_SPI 489 IRQ_TYPE_LEVEL_HIGH>;
526            interrupt-names = "hs_phy_irq", "ss_phy_irq",
527                          "dm_hs_phy_irq", "dp_hs_phy_irq";
528
529            power-domains = <&gcc USB30_PRIM_GDSC>;
530
531            resets = <&gcc GCC_USB30_PRIM_BCR>;
532
533            usb@a600000 {
534                compatible = "snps,dwc3";
535                reg = <0 0x0a600000 0 0xcd00>;
536                interrupts = <GIC_SPI 133 IRQ_TYPE_LEVEL_HIGH>;
537                iommus = <&apps_smmu 0x740 0>;
538                snps,dis_u2_susphy_quirk;
539                snps,dis_enblslpm_quirk;
540                phys = <&usb_1_hsphy>, <&usb_1_ssphy>;
541                phy-names = "usb2-phy", "usb3-phy";
542            };
543        };
544    };
545