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