xref: /freebsd/sys/contrib/device-tree/Bindings/usb/qcom,dwc3.yaml (revision b2d2a78ad80ec68d4a17f5aef97d21686cb1e29b)
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
297d0873ebSEmmanuel Vadot          - qcom,qdu1000-dwc3
30f126890aSEmmanuel Vadot          - qcom,sa8775p-dwc3
31c66ec88fSEmmanuel Vadot          - qcom,sc7180-dwc3
322eb4d8dcSEmmanuel Vadot          - qcom,sc7280-dwc3
330e8011faSEmmanuel Vadot          - qcom,sc8180x-dwc3
340e8011faSEmmanuel Vadot          - qcom,sc8180x-dwc3-mp
35b97ee269SEmmanuel Vadot          - qcom,sc8280xp-dwc3
367d0873ebSEmmanuel Vadot          - qcom,sc8280xp-dwc3-mp
37354d7675SEmmanuel Vadot          - qcom,sdm660-dwc3
387ef62cebSEmmanuel Vadot          - qcom,sdm670-dwc3
39c66ec88fSEmmanuel Vadot          - qcom,sdm845-dwc3
405def4c47SEmmanuel Vadot          - qcom,sdx55-dwc3
41d5b0e70fSEmmanuel Vadot          - qcom,sdx65-dwc3
4284943d6fSEmmanuel Vadot          - qcom,sdx75-dwc3
435956d97fSEmmanuel Vadot          - qcom,sm4250-dwc3
445956d97fSEmmanuel Vadot          - qcom,sm6115-dwc3
45d5b0e70fSEmmanuel Vadot          - qcom,sm6125-dwc3
46e67e8565SEmmanuel Vadot          - qcom,sm6350-dwc3
47b97ee269SEmmanuel Vadot          - qcom,sm6375-dwc3
485def4c47SEmmanuel Vadot          - qcom,sm8150-dwc3
495def4c47SEmmanuel Vadot          - qcom,sm8250-dwc3
505def4c47SEmmanuel Vadot          - qcom,sm8350-dwc3
51e67e8565SEmmanuel Vadot          - qcom,sm8450-dwc3
528bab661aSEmmanuel Vadot          - qcom,sm8550-dwc3
538d13bc63SEmmanuel Vadot          - qcom,sm8650-dwc3
548d13bc63SEmmanuel Vadot          - qcom,x1e80100-dwc3
55*b2d2a78aSEmmanuel Vadot          - qcom,x1e80100-dwc3-mp
56c66ec88fSEmmanuel Vadot      - const: qcom,dwc3
57c66ec88fSEmmanuel Vadot
58c66ec88fSEmmanuel Vadot  reg:
59c66ec88fSEmmanuel Vadot    description: Offset and length of register set for QSCRATCH wrapper
60c66ec88fSEmmanuel Vadot    maxItems: 1
61c66ec88fSEmmanuel Vadot
62c66ec88fSEmmanuel Vadot  "#address-cells":
63c66ec88fSEmmanuel Vadot    enum: [ 1, 2 ]
64c66ec88fSEmmanuel Vadot
65c66ec88fSEmmanuel Vadot  "#size-cells":
66c66ec88fSEmmanuel Vadot    enum: [ 1, 2 ]
67c66ec88fSEmmanuel Vadot
68c66ec88fSEmmanuel Vadot  ranges: true
69c66ec88fSEmmanuel Vadot
70c66ec88fSEmmanuel Vadot  power-domains:
71c66ec88fSEmmanuel Vadot    description: specifies a phandle to PM domain provider node
72c66ec88fSEmmanuel Vadot    maxItems: 1
73c66ec88fSEmmanuel Vadot
74cb7aa33aSEmmanuel Vadot  required-opps:
75cb7aa33aSEmmanuel Vadot    maxItems: 1
76cb7aa33aSEmmanuel Vadot
77c66ec88fSEmmanuel Vadot  clocks:
78d5b0e70fSEmmanuel Vadot    description: |
79d5b0e70fSEmmanuel Vadot      Several clocks are used, depending on the variant. Typical ones are::
80d5b0e70fSEmmanuel Vadot       - cfg_noc:: System Config NOC clock.
81d5b0e70fSEmmanuel Vadot       - core:: Master/Core clock, has to be >= 125 MHz for SS operation and >=
82d5b0e70fSEmmanuel Vadot                60MHz for HS operation.
83d5b0e70fSEmmanuel Vadot       - iface:: System bus AXI clock.
84d5b0e70fSEmmanuel Vadot       - sleep:: Sleep clock, used for wakeup when USB3 core goes into low
85d5b0e70fSEmmanuel Vadot                 power mode (U3).
86d5b0e70fSEmmanuel Vadot       - mock_utmi:: Mock utmi clock needed for ITP/SOF generation in host
87d5b0e70fSEmmanuel Vadot                     mode. Its frequency should be 19.2MHz.
88d5b0e70fSEmmanuel Vadot    minItems: 1
89b97ee269SEmmanuel Vadot    maxItems: 9
90c66ec88fSEmmanuel Vadot
91c66ec88fSEmmanuel Vadot  clock-names:
92d5b0e70fSEmmanuel Vadot    minItems: 1
93b97ee269SEmmanuel Vadot    maxItems: 9
94c66ec88fSEmmanuel Vadot
95c66ec88fSEmmanuel Vadot  resets:
96c66ec88fSEmmanuel Vadot    maxItems: 1
97c66ec88fSEmmanuel Vadot
98c66ec88fSEmmanuel Vadot  interconnects:
99c66ec88fSEmmanuel Vadot    maxItems: 2
100c66ec88fSEmmanuel Vadot
101c66ec88fSEmmanuel Vadot  interconnect-names:
102c66ec88fSEmmanuel Vadot    items:
103c66ec88fSEmmanuel Vadot      - const: usb-ddr
104c66ec88fSEmmanuel Vadot      - const: apps-usb
105c66ec88fSEmmanuel Vadot
106c66ec88fSEmmanuel Vadot  interrupts:
1078d13bc63SEmmanuel Vadot    description: |
1088d13bc63SEmmanuel Vadot      Different types of interrupts are used based on HS PHY used on target:
1098d13bc63SEmmanuel Vadot        - pwr_event: Used for wakeup based on other power events.
11001950c46SEmmanuel Vadot        - hs_phy_irq: Apart from DP/DM/QUSB2 PHY interrupts, there is
1118d13bc63SEmmanuel Vadot                       hs_phy_irq which is not triggered by default and its
1128d13bc63SEmmanuel Vadot                       functionality is mutually exclusive to that of
1138d13bc63SEmmanuel Vadot                       {dp/dm}_hs_phy_irq and qusb2_phy_irq.
1148d13bc63SEmmanuel Vadot        - qusb2_phy: SoCs with QUSB2 PHY do not have separate DP/DM IRQs and
1158d13bc63SEmmanuel Vadot                      expose only a single IRQ whose behavior can be modified
1168d13bc63SEmmanuel Vadot                      by the QUSB2PHY_INTR_CTRL register. The required DPSE/
1178d13bc63SEmmanuel Vadot                      DMSE configuration is done in QUSB2PHY_INTR_CTRL register
1188d13bc63SEmmanuel Vadot                      of PHY address space.
1198d13bc63SEmmanuel Vadot        - {dp/dm}_hs_phy_irq: These IRQ's directly reflect changes on the DP/
1208d13bc63SEmmanuel Vadot                               DM pads of the SoC. These are used for wakeup
1218d13bc63SEmmanuel Vadot                               only on SoCs with non-QUSB2 targets with
1228d13bc63SEmmanuel Vadot                               exception of SDM670/SDM845/SM6350.
1238d13bc63SEmmanuel Vadot        - ss_phy_irq: Used for remote wakeup in Super Speed mode of operation.
1248d13bc63SEmmanuel Vadot    minItems: 2
1257d0873ebSEmmanuel Vadot    maxItems: 18
126c66ec88fSEmmanuel Vadot
127c66ec88fSEmmanuel Vadot  interrupt-names:
1288d13bc63SEmmanuel Vadot    minItems: 2
1297d0873ebSEmmanuel Vadot    maxItems: 18
130c66ec88fSEmmanuel Vadot
131c66ec88fSEmmanuel Vadot  qcom,select-utmi-as-pipe-clk:
132c66ec88fSEmmanuel Vadot    description:
133c66ec88fSEmmanuel Vadot      If present, disable USB3 pipe_clk requirement.
134c66ec88fSEmmanuel Vadot      Used when dwc3 operates without SSPHY and only
135c66ec88fSEmmanuel Vadot      HS/FS/LS modes are supported.
136c66ec88fSEmmanuel Vadot    type: boolean
137c66ec88fSEmmanuel Vadot
138b97ee269SEmmanuel Vadot  wakeup-source: true
139b97ee269SEmmanuel Vadot
140c66ec88fSEmmanuel Vadot# Required child node:
141c66ec88fSEmmanuel Vadot
142c66ec88fSEmmanuel VadotpatternProperties:
1435def4c47SEmmanuel Vadot  "^usb@[0-9a-f]+$":
1445def4c47SEmmanuel Vadot    $ref: snps,dwc3.yaml#
145fac71e4eSEmmanuel Vadot    unevaluatedProperties: false
146c66ec88fSEmmanuel Vadot
147b97ee269SEmmanuel Vadot    properties:
148b97ee269SEmmanuel Vadot      wakeup-source: false
149b97ee269SEmmanuel Vadot
150c66ec88fSEmmanuel Vadotrequired:
151c66ec88fSEmmanuel Vadot  - compatible
152c66ec88fSEmmanuel Vadot  - reg
153c66ec88fSEmmanuel Vadot  - "#address-cells"
154c66ec88fSEmmanuel Vadot  - "#size-cells"
155c66ec88fSEmmanuel Vadot  - ranges
156c66ec88fSEmmanuel Vadot  - clocks
157c66ec88fSEmmanuel Vadot  - clock-names
158c66ec88fSEmmanuel Vadot  - interrupts
159c66ec88fSEmmanuel Vadot  - interrupt-names
160c66ec88fSEmmanuel Vadot
161d5b0e70fSEmmanuel VadotallOf:
162d5b0e70fSEmmanuel Vadot  - if:
163d5b0e70fSEmmanuel Vadot      properties:
164d5b0e70fSEmmanuel Vadot        compatible:
165d5b0e70fSEmmanuel Vadot          contains:
166d5b0e70fSEmmanuel Vadot            enum:
167d5b0e70fSEmmanuel Vadot              - qcom,ipq4019-dwc3
168*b2d2a78aSEmmanuel Vadot              - qcom,ipq5332-dwc3
169d5b0e70fSEmmanuel Vadot    then:
170d5b0e70fSEmmanuel Vadot      properties:
171d5b0e70fSEmmanuel Vadot        clocks:
172d5b0e70fSEmmanuel Vadot          maxItems: 3
173d5b0e70fSEmmanuel Vadot        clock-names:
174d5b0e70fSEmmanuel Vadot          items:
175d5b0e70fSEmmanuel Vadot            - const: core
176d5b0e70fSEmmanuel Vadot            - const: sleep
177d5b0e70fSEmmanuel Vadot            - const: mock_utmi
178d5b0e70fSEmmanuel Vadot
179d5b0e70fSEmmanuel Vadot  - if:
180d5b0e70fSEmmanuel Vadot      properties:
181d5b0e70fSEmmanuel Vadot        compatible:
182d5b0e70fSEmmanuel Vadot          contains:
183d5b0e70fSEmmanuel Vadot            enum:
184d5b0e70fSEmmanuel Vadot              - qcom,ipq8064-dwc3
185d5b0e70fSEmmanuel Vadot    then:
186d5b0e70fSEmmanuel Vadot      properties:
187d5b0e70fSEmmanuel Vadot        clocks:
188d5b0e70fSEmmanuel Vadot          items:
189d5b0e70fSEmmanuel Vadot            - description: Master/Core clock, has to be >= 125 MHz
190d5b0e70fSEmmanuel Vadot                for SS operation and >= 60MHz for HS operation.
191d5b0e70fSEmmanuel Vadot        clock-names:
192d5b0e70fSEmmanuel Vadot          items:
193d5b0e70fSEmmanuel Vadot            - const: core
194d5b0e70fSEmmanuel Vadot
195d5b0e70fSEmmanuel Vadot  - if:
196d5b0e70fSEmmanuel Vadot      properties:
197d5b0e70fSEmmanuel Vadot        compatible:
198d5b0e70fSEmmanuel Vadot          contains:
199d5b0e70fSEmmanuel Vadot            enum:
200f126890aSEmmanuel Vadot              - qcom,ipq9574-dwc3
201d5b0e70fSEmmanuel Vadot              - qcom,msm8953-dwc3
202d5b0e70fSEmmanuel Vadot              - qcom,msm8996-dwc3
203d5b0e70fSEmmanuel Vadot              - qcom,msm8998-dwc3
204f126890aSEmmanuel Vadot              - qcom,sa8775p-dwc3
205d5b0e70fSEmmanuel Vadot              - qcom,sc7180-dwc3
206d5b0e70fSEmmanuel Vadot              - qcom,sc7280-dwc3
2077ef62cebSEmmanuel Vadot              - qcom,sdm670-dwc3
208d5b0e70fSEmmanuel Vadot              - qcom,sdm845-dwc3
209d5b0e70fSEmmanuel Vadot              - qcom,sdx55-dwc3
21084943d6fSEmmanuel Vadot              - qcom,sdx65-dwc3
21184943d6fSEmmanuel Vadot              - qcom,sdx75-dwc3
212d5b0e70fSEmmanuel Vadot              - qcom,sm6350-dwc3
213d5b0e70fSEmmanuel Vadot    then:
214d5b0e70fSEmmanuel Vadot      properties:
215d5b0e70fSEmmanuel Vadot        clocks:
216d5b0e70fSEmmanuel Vadot          maxItems: 5
217d5b0e70fSEmmanuel Vadot        clock-names:
218d5b0e70fSEmmanuel Vadot          items:
219d5b0e70fSEmmanuel Vadot            - const: cfg_noc
220d5b0e70fSEmmanuel Vadot            - const: core
221d5b0e70fSEmmanuel Vadot            - const: iface
222d5b0e70fSEmmanuel Vadot            - const: sleep
223d5b0e70fSEmmanuel Vadot            - const: mock_utmi
224d5b0e70fSEmmanuel Vadot
225d5b0e70fSEmmanuel Vadot  - if:
226d5b0e70fSEmmanuel Vadot      properties:
227d5b0e70fSEmmanuel Vadot        compatible:
228d5b0e70fSEmmanuel Vadot          contains:
229d5b0e70fSEmmanuel Vadot            enum:
230d5b0e70fSEmmanuel Vadot              - qcom,ipq6018-dwc3
231d5b0e70fSEmmanuel Vadot    then:
232d5b0e70fSEmmanuel Vadot      properties:
233d5b0e70fSEmmanuel Vadot        clocks:
234d5b0e70fSEmmanuel Vadot          minItems: 3
235d5b0e70fSEmmanuel Vadot          maxItems: 4
236d5b0e70fSEmmanuel Vadot        clock-names:
237d5b0e70fSEmmanuel Vadot          oneOf:
238d5b0e70fSEmmanuel Vadot            - items:
239d5b0e70fSEmmanuel Vadot                - const: core
240d5b0e70fSEmmanuel Vadot                - const: sleep
241d5b0e70fSEmmanuel Vadot                - const: mock_utmi
242d5b0e70fSEmmanuel Vadot            - items:
243d5b0e70fSEmmanuel Vadot                - const: cfg_noc
244d5b0e70fSEmmanuel Vadot                - const: core
245d5b0e70fSEmmanuel Vadot                - const: sleep
246d5b0e70fSEmmanuel Vadot                - const: mock_utmi
247d5b0e70fSEmmanuel Vadot
248d5b0e70fSEmmanuel Vadot  - if:
249d5b0e70fSEmmanuel Vadot      properties:
250d5b0e70fSEmmanuel Vadot        compatible:
251d5b0e70fSEmmanuel Vadot          contains:
252d5b0e70fSEmmanuel Vadot            enum:
253d5b0e70fSEmmanuel Vadot              - qcom,ipq8074-dwc3
2547d0873ebSEmmanuel Vadot              - qcom,qdu1000-dwc3
255d5b0e70fSEmmanuel Vadot    then:
256d5b0e70fSEmmanuel Vadot      properties:
257d5b0e70fSEmmanuel Vadot        clocks:
258d5b0e70fSEmmanuel Vadot          maxItems: 4
259d5b0e70fSEmmanuel Vadot        clock-names:
260d5b0e70fSEmmanuel Vadot          items:
261d5b0e70fSEmmanuel Vadot            - const: cfg_noc
262d5b0e70fSEmmanuel Vadot            - const: core
263d5b0e70fSEmmanuel Vadot            - const: sleep
264d5b0e70fSEmmanuel Vadot            - const: mock_utmi
265d5b0e70fSEmmanuel Vadot
266d5b0e70fSEmmanuel Vadot  - if:
267d5b0e70fSEmmanuel Vadot      properties:
268d5b0e70fSEmmanuel Vadot        compatible:
269d5b0e70fSEmmanuel Vadot          contains:
270d5b0e70fSEmmanuel Vadot            enum:
27184943d6fSEmmanuel Vadot              - qcom,ipq5018-dwc3
272d5b0e70fSEmmanuel Vadot              - qcom,msm8994-dwc3
273d5b0e70fSEmmanuel Vadot              - qcom,qcs404-dwc3
274d5b0e70fSEmmanuel Vadot    then:
275d5b0e70fSEmmanuel Vadot      properties:
276d5b0e70fSEmmanuel Vadot        clocks:
277d5b0e70fSEmmanuel Vadot          maxItems: 4
278d5b0e70fSEmmanuel Vadot        clock-names:
279d5b0e70fSEmmanuel Vadot          items:
280d5b0e70fSEmmanuel Vadot            - const: core
281d5b0e70fSEmmanuel Vadot            - const: iface
282d5b0e70fSEmmanuel Vadot            - const: sleep
283d5b0e70fSEmmanuel Vadot            - const: mock_utmi
284d5b0e70fSEmmanuel Vadot
285d5b0e70fSEmmanuel Vadot  - if:
286d5b0e70fSEmmanuel Vadot      properties:
287d5b0e70fSEmmanuel Vadot        compatible:
288d5b0e70fSEmmanuel Vadot          contains:
289d5b0e70fSEmmanuel Vadot            enum:
290b97ee269SEmmanuel Vadot              - qcom,sc8280xp-dwc3
2917d0873ebSEmmanuel Vadot              - qcom,sc8280xp-dwc3-mp
2928d13bc63SEmmanuel Vadot              - qcom,x1e80100-dwc3
293*b2d2a78aSEmmanuel Vadot              - qcom,x1e80100-dwc3-mp
294b97ee269SEmmanuel Vadot    then:
295b97ee269SEmmanuel Vadot      properties:
296b97ee269SEmmanuel Vadot        clocks:
297b97ee269SEmmanuel Vadot          maxItems: 9
298b97ee269SEmmanuel Vadot        clock-names:
299b97ee269SEmmanuel Vadot          items:
300b97ee269SEmmanuel Vadot            - const: cfg_noc
301b97ee269SEmmanuel Vadot            - const: core
302b97ee269SEmmanuel Vadot            - const: iface
303b97ee269SEmmanuel Vadot            - const: sleep
304b97ee269SEmmanuel Vadot            - const: mock_utmi
305b97ee269SEmmanuel Vadot            - const: noc_aggr
306b97ee269SEmmanuel Vadot            - const: noc_aggr_north
307b97ee269SEmmanuel Vadot            - const: noc_aggr_south
308b97ee269SEmmanuel Vadot            - const: noc_sys
309b97ee269SEmmanuel Vadot
310b97ee269SEmmanuel Vadot  - if:
311b97ee269SEmmanuel Vadot      properties:
312b97ee269SEmmanuel Vadot        compatible:
313b97ee269SEmmanuel Vadot          contains:
314b97ee269SEmmanuel Vadot            enum:
315d5b0e70fSEmmanuel Vadot              - qcom,sdm660-dwc3
316d5b0e70fSEmmanuel Vadot    then:
317d5b0e70fSEmmanuel Vadot      properties:
318d5b0e70fSEmmanuel Vadot        clocks:
3198d13bc63SEmmanuel Vadot          minItems: 4
3208d13bc63SEmmanuel Vadot          maxItems: 5
321d5b0e70fSEmmanuel Vadot        clock-names:
322aa1a8ff2SEmmanuel Vadot          oneOf:
323aa1a8ff2SEmmanuel Vadot            - items:
324d5b0e70fSEmmanuel Vadot                - const: cfg_noc
325d5b0e70fSEmmanuel Vadot                - const: core
326d5b0e70fSEmmanuel Vadot                - const: iface
327d5b0e70fSEmmanuel Vadot                - const: sleep
328d5b0e70fSEmmanuel Vadot                - const: mock_utmi
329aa1a8ff2SEmmanuel Vadot            - items:
330aa1a8ff2SEmmanuel Vadot                - const: cfg_noc
331aa1a8ff2SEmmanuel Vadot                - const: core
332aa1a8ff2SEmmanuel Vadot                - const: sleep
333aa1a8ff2SEmmanuel Vadot                - const: mock_utmi
334d5b0e70fSEmmanuel Vadot
335d5b0e70fSEmmanuel Vadot  - if:
336d5b0e70fSEmmanuel Vadot      properties:
337d5b0e70fSEmmanuel Vadot        compatible:
338d5b0e70fSEmmanuel Vadot          contains:
339d5b0e70fSEmmanuel Vadot            enum:
340fac71e4eSEmmanuel Vadot              - qcom,qcm2290-dwc3
3410e8011faSEmmanuel Vadot              - qcom,sc8180x-dwc3
3420e8011faSEmmanuel Vadot              - qcom,sc8180x-dwc3-mp
3437ef62cebSEmmanuel Vadot              - qcom,sm6115-dwc3
344d5b0e70fSEmmanuel Vadot              - qcom,sm6125-dwc3
345d5b0e70fSEmmanuel Vadot              - qcom,sm8150-dwc3
346d5b0e70fSEmmanuel Vadot              - qcom,sm8250-dwc3
347d5b0e70fSEmmanuel Vadot              - qcom,sm8450-dwc3
3488bab661aSEmmanuel Vadot              - qcom,sm8550-dwc3
3498d13bc63SEmmanuel Vadot              - qcom,sm8650-dwc3
350d5b0e70fSEmmanuel Vadot    then:
351d5b0e70fSEmmanuel Vadot      properties:
352d5b0e70fSEmmanuel Vadot        clocks:
353d5b0e70fSEmmanuel Vadot          minItems: 6
354d5b0e70fSEmmanuel Vadot        clock-names:
355d5b0e70fSEmmanuel Vadot          items:
356d5b0e70fSEmmanuel Vadot            - const: cfg_noc
357d5b0e70fSEmmanuel Vadot            - const: core
358d5b0e70fSEmmanuel Vadot            - const: iface
359d5b0e70fSEmmanuel Vadot            - const: sleep
360d5b0e70fSEmmanuel Vadot            - const: mock_utmi
361d5b0e70fSEmmanuel Vadot            - const: xo
362d5b0e70fSEmmanuel Vadot
363d5b0e70fSEmmanuel Vadot  - if:
364d5b0e70fSEmmanuel Vadot      properties:
365d5b0e70fSEmmanuel Vadot        compatible:
366d5b0e70fSEmmanuel Vadot          contains:
367d5b0e70fSEmmanuel Vadot            enum:
368d5b0e70fSEmmanuel Vadot              - qcom,sm8350-dwc3
369d5b0e70fSEmmanuel Vadot    then:
370d5b0e70fSEmmanuel Vadot      properties:
371d5b0e70fSEmmanuel Vadot        clocks:
372d5b0e70fSEmmanuel Vadot          minItems: 5
373d5b0e70fSEmmanuel Vadot          maxItems: 6
374d5b0e70fSEmmanuel Vadot        clock-names:
375d5b0e70fSEmmanuel Vadot          minItems: 5
376d5b0e70fSEmmanuel Vadot          items:
377d5b0e70fSEmmanuel Vadot            - const: cfg_noc
378d5b0e70fSEmmanuel Vadot            - const: core
379d5b0e70fSEmmanuel Vadot            - const: iface
380d5b0e70fSEmmanuel Vadot            - const: sleep
381d5b0e70fSEmmanuel Vadot            - const: mock_utmi
382d5b0e70fSEmmanuel Vadot            - const: xo
383d5b0e70fSEmmanuel Vadot
384b97ee269SEmmanuel Vadot  - if:
385b97ee269SEmmanuel Vadot      properties:
386b97ee269SEmmanuel Vadot        compatible:
387b97ee269SEmmanuel Vadot          contains:
388b97ee269SEmmanuel Vadot            enum:
3898d13bc63SEmmanuel Vadot              - qcom,ipq5018-dwc3
390b97ee269SEmmanuel Vadot              - qcom,ipq6018-dwc3
391b97ee269SEmmanuel Vadot              - qcom,ipq8074-dwc3
3928d13bc63SEmmanuel Vadot              - qcom,msm8953-dwc3
3938d13bc63SEmmanuel Vadot              - qcom,msm8998-dwc3
3948d13bc63SEmmanuel Vadot    then:
3958d13bc63SEmmanuel Vadot      properties:
3968d13bc63SEmmanuel Vadot        interrupts:
3978d13bc63SEmmanuel Vadot          minItems: 2
3988d13bc63SEmmanuel Vadot          maxItems: 3
3998d13bc63SEmmanuel Vadot        interrupt-names:
4008d13bc63SEmmanuel Vadot          items:
4018d13bc63SEmmanuel Vadot            - const: pwr_event
4028d13bc63SEmmanuel Vadot            - const: qusb2_phy
4038d13bc63SEmmanuel Vadot            - const: ss_phy_irq
4048d13bc63SEmmanuel Vadot
4058d13bc63SEmmanuel Vadot  - if:
4068d13bc63SEmmanuel Vadot      properties:
4078d13bc63SEmmanuel Vadot        compatible:
4088d13bc63SEmmanuel Vadot          contains:
4098d13bc63SEmmanuel Vadot            enum:
4108d13bc63SEmmanuel Vadot              - qcom,msm8996-dwc3
411b97ee269SEmmanuel Vadot              - qcom,qcs404-dwc3
4128d13bc63SEmmanuel Vadot              - qcom,sdm660-dwc3
4138d13bc63SEmmanuel Vadot              - qcom,sm6115-dwc3
4148d13bc63SEmmanuel Vadot              - qcom,sm6125-dwc3
4158d13bc63SEmmanuel Vadot    then:
4168d13bc63SEmmanuel Vadot      properties:
4178d13bc63SEmmanuel Vadot        interrupts:
4188d13bc63SEmmanuel Vadot          minItems: 3
4198d13bc63SEmmanuel Vadot          maxItems: 4
4208d13bc63SEmmanuel Vadot        interrupt-names:
4218d13bc63SEmmanuel Vadot          items:
4228d13bc63SEmmanuel Vadot            - const: pwr_event
4238d13bc63SEmmanuel Vadot            - const: qusb2_phy
4248d13bc63SEmmanuel Vadot            - const: hs_phy_irq
4258d13bc63SEmmanuel Vadot            - const: ss_phy_irq
4268d13bc63SEmmanuel Vadot
4278d13bc63SEmmanuel Vadot  - if:
4288d13bc63SEmmanuel Vadot      properties:
4298d13bc63SEmmanuel Vadot        compatible:
4308d13bc63SEmmanuel Vadot          contains:
4318d13bc63SEmmanuel Vadot            enum:
4328d13bc63SEmmanuel Vadot              - qcom,ipq5332-dwc3
433*b2d2a78aSEmmanuel Vadot    then:
434*b2d2a78aSEmmanuel Vadot      properties:
435*b2d2a78aSEmmanuel Vadot        interrupts:
436*b2d2a78aSEmmanuel Vadot          maxItems: 3
437*b2d2a78aSEmmanuel Vadot        interrupt-names:
438*b2d2a78aSEmmanuel Vadot          items:
439*b2d2a78aSEmmanuel Vadot            - const: pwr_event
440*b2d2a78aSEmmanuel Vadot            - const: dp_hs_phy_irq
441*b2d2a78aSEmmanuel Vadot            - const: dm_hs_phy_irq
442*b2d2a78aSEmmanuel Vadot
443*b2d2a78aSEmmanuel Vadot  - if:
444*b2d2a78aSEmmanuel Vadot      properties:
445*b2d2a78aSEmmanuel Vadot        compatible:
446*b2d2a78aSEmmanuel Vadot          contains:
447*b2d2a78aSEmmanuel Vadot            enum:
4488d13bc63SEmmanuel Vadot              - qcom,x1e80100-dwc3
4498d13bc63SEmmanuel Vadot    then:
4508d13bc63SEmmanuel Vadot      properties:
4518d13bc63SEmmanuel Vadot        interrupts:
4528d13bc63SEmmanuel Vadot          maxItems: 4
4538d13bc63SEmmanuel Vadot        interrupt-names:
4548d13bc63SEmmanuel Vadot          items:
4558d13bc63SEmmanuel Vadot            - const: pwr_event
4568d13bc63SEmmanuel Vadot            - const: dp_hs_phy_irq
4578d13bc63SEmmanuel Vadot            - const: dm_hs_phy_irq
4588d13bc63SEmmanuel Vadot            - const: ss_phy_irq
4598d13bc63SEmmanuel Vadot
4608d13bc63SEmmanuel Vadot  - if:
4618d13bc63SEmmanuel Vadot      properties:
4628d13bc63SEmmanuel Vadot        compatible:
4638d13bc63SEmmanuel Vadot          contains:
4648d13bc63SEmmanuel Vadot            enum:
4658d13bc63SEmmanuel Vadot              - qcom,ipq4019-dwc3
4668d13bc63SEmmanuel Vadot              - qcom,ipq8064-dwc3
4678d13bc63SEmmanuel Vadot              - qcom,msm8994-dwc3
4687d0873ebSEmmanuel Vadot              - qcom,qdu1000-dwc3
4698d13bc63SEmmanuel Vadot              - qcom,sa8775p-dwc3
470b97ee269SEmmanuel Vadot              - qcom,sc7180-dwc3
4718d13bc63SEmmanuel Vadot              - qcom,sc7280-dwc3
4720e8011faSEmmanuel Vadot              - qcom,sc8180x-dwc3
4738d13bc63SEmmanuel Vadot              - qcom,sc8280xp-dwc3
4747ef62cebSEmmanuel Vadot              - qcom,sdm670-dwc3
475b97ee269SEmmanuel Vadot              - qcom,sdm845-dwc3
476b97ee269SEmmanuel Vadot              - qcom,sdx55-dwc3
477b97ee269SEmmanuel Vadot              - qcom,sdx65-dwc3
47884943d6fSEmmanuel Vadot              - qcom,sdx75-dwc3
479b97ee269SEmmanuel Vadot              - qcom,sm4250-dwc3
480b97ee269SEmmanuel Vadot              - qcom,sm6350-dwc3
481b97ee269SEmmanuel Vadot              - qcom,sm8150-dwc3
482b97ee269SEmmanuel Vadot              - qcom,sm8250-dwc3
483b97ee269SEmmanuel Vadot              - qcom,sm8350-dwc3
484b97ee269SEmmanuel Vadot              - qcom,sm8450-dwc3
4858bab661aSEmmanuel Vadot              - qcom,sm8550-dwc3
4868d13bc63SEmmanuel Vadot              - qcom,sm8650-dwc3
487b97ee269SEmmanuel Vadot    then:
488b97ee269SEmmanuel Vadot      properties:
489b97ee269SEmmanuel Vadot        interrupts:
4908d13bc63SEmmanuel Vadot          minItems: 4
4918d13bc63SEmmanuel Vadot          maxItems: 5
492b97ee269SEmmanuel Vadot        interrupt-names:
493b97ee269SEmmanuel Vadot          items:
494b97ee269SEmmanuel Vadot            - const: pwr_event
4958d13bc63SEmmanuel Vadot            - const: hs_phy_irq
496f126890aSEmmanuel Vadot            - const: dp_hs_phy_irq
497f126890aSEmmanuel Vadot            - const: dm_hs_phy_irq
498f126890aSEmmanuel Vadot            - const: ss_phy_irq
499f126890aSEmmanuel Vadot
5007d0873ebSEmmanuel Vadot  - if:
5017d0873ebSEmmanuel Vadot      properties:
5027d0873ebSEmmanuel Vadot        compatible:
5037d0873ebSEmmanuel Vadot          contains:
5047d0873ebSEmmanuel Vadot            enum:
5050e8011faSEmmanuel Vadot              - qcom,sc8180x-dwc3-mp
506*b2d2a78aSEmmanuel Vadot              - qcom,x1e80100-dwc3-mp
5070e8011faSEmmanuel Vadot    then:
5080e8011faSEmmanuel Vadot      properties:
5090e8011faSEmmanuel Vadot        interrupts:
5100e8011faSEmmanuel Vadot          minItems: 10
5110e8011faSEmmanuel Vadot          maxItems: 10
5120e8011faSEmmanuel Vadot        interrupt-names:
5130e8011faSEmmanuel Vadot          items:
5140e8011faSEmmanuel Vadot            - const: pwr_event_1
5150e8011faSEmmanuel Vadot            - const: pwr_event_2
5160e8011faSEmmanuel Vadot            - const: hs_phy_1
5170e8011faSEmmanuel Vadot            - const: hs_phy_2
5180e8011faSEmmanuel Vadot            - const: dp_hs_phy_1
5190e8011faSEmmanuel Vadot            - const: dm_hs_phy_1
5200e8011faSEmmanuel Vadot            - const: dp_hs_phy_2
5210e8011faSEmmanuel Vadot            - const: dm_hs_phy_2
5220e8011faSEmmanuel Vadot            - const: ss_phy_1
5230e8011faSEmmanuel Vadot            - const: ss_phy_2
5240e8011faSEmmanuel Vadot
5250e8011faSEmmanuel Vadot  - if:
5260e8011faSEmmanuel Vadot      properties:
5270e8011faSEmmanuel Vadot        compatible:
5280e8011faSEmmanuel Vadot          contains:
5290e8011faSEmmanuel Vadot            enum:
5307d0873ebSEmmanuel Vadot              - qcom,sc8280xp-dwc3-mp
5317d0873ebSEmmanuel Vadot    then:
5327d0873ebSEmmanuel Vadot      properties:
5337d0873ebSEmmanuel Vadot        interrupts:
5347d0873ebSEmmanuel Vadot          minItems: 18
5357d0873ebSEmmanuel Vadot          maxItems: 18
5367d0873ebSEmmanuel Vadot        interrupt-names:
5377d0873ebSEmmanuel Vadot          items:
5387d0873ebSEmmanuel Vadot            - const: pwr_event_1
5397d0873ebSEmmanuel Vadot            - const: pwr_event_2
5407d0873ebSEmmanuel Vadot            - const: pwr_event_3
5417d0873ebSEmmanuel Vadot            - const: pwr_event_4
5427d0873ebSEmmanuel Vadot            - const: hs_phy_1
5437d0873ebSEmmanuel Vadot            - const: hs_phy_2
5447d0873ebSEmmanuel Vadot            - const: hs_phy_3
5457d0873ebSEmmanuel Vadot            - const: hs_phy_4
5467d0873ebSEmmanuel Vadot            - const: dp_hs_phy_1
5477d0873ebSEmmanuel Vadot            - const: dm_hs_phy_1
5487d0873ebSEmmanuel Vadot            - const: dp_hs_phy_2
5497d0873ebSEmmanuel Vadot            - const: dm_hs_phy_2
5507d0873ebSEmmanuel Vadot            - const: dp_hs_phy_3
5517d0873ebSEmmanuel Vadot            - const: dm_hs_phy_3
5527d0873ebSEmmanuel Vadot            - const: dp_hs_phy_4
5537d0873ebSEmmanuel Vadot            - const: dm_hs_phy_4
5547d0873ebSEmmanuel Vadot            - const: ss_phy_1
5557d0873ebSEmmanuel Vadot            - const: ss_phy_2
5567d0873ebSEmmanuel Vadot
5576be33864SEmmanuel VadotadditionalProperties: false
5586be33864SEmmanuel Vadot
559c66ec88fSEmmanuel Vadotexamples:
560c66ec88fSEmmanuel Vadot  - |
561c66ec88fSEmmanuel Vadot    #include <dt-bindings/clock/qcom,gcc-sdm845.h>
562c66ec88fSEmmanuel Vadot    #include <dt-bindings/interrupt-controller/arm-gic.h>
563c66ec88fSEmmanuel Vadot    #include <dt-bindings/interrupt-controller/irq.h>
564c66ec88fSEmmanuel Vadot    soc {
565c66ec88fSEmmanuel Vadot        #address-cells = <2>;
566c66ec88fSEmmanuel Vadot        #size-cells = <2>;
567c66ec88fSEmmanuel Vadot
568c66ec88fSEmmanuel Vadot        usb@a6f8800 {
569c66ec88fSEmmanuel Vadot            compatible = "qcom,sdm845-dwc3", "qcom,dwc3";
570c66ec88fSEmmanuel Vadot            reg = <0 0x0a6f8800 0 0x400>;
571c66ec88fSEmmanuel Vadot
572c66ec88fSEmmanuel Vadot            #address-cells = <2>;
573c66ec88fSEmmanuel Vadot            #size-cells = <2>;
574c66ec88fSEmmanuel Vadot            ranges;
575c66ec88fSEmmanuel Vadot            clocks = <&gcc GCC_CFG_NOC_USB3_PRIM_AXI_CLK>,
576c66ec88fSEmmanuel Vadot                     <&gcc GCC_USB30_PRIM_MASTER_CLK>,
577c66ec88fSEmmanuel Vadot                     <&gcc GCC_AGGRE_USB3_PRIM_AXI_CLK>,
578d5b0e70fSEmmanuel Vadot                     <&gcc GCC_USB30_PRIM_SLEEP_CLK>,
579d5b0e70fSEmmanuel Vadot                     <&gcc GCC_USB30_PRIM_MOCK_UTMI_CLK>;
580d5b0e70fSEmmanuel Vadot            clock-names = "cfg_noc",
581d5b0e70fSEmmanuel Vadot                          "core",
582d5b0e70fSEmmanuel Vadot                          "iface",
583d5b0e70fSEmmanuel Vadot                          "sleep",
584d5b0e70fSEmmanuel Vadot                          "mock_utmi";
585c66ec88fSEmmanuel Vadot
586c66ec88fSEmmanuel Vadot            assigned-clocks = <&gcc GCC_USB30_PRIM_MOCK_UTMI_CLK>,
587c66ec88fSEmmanuel Vadot                          <&gcc GCC_USB30_PRIM_MASTER_CLK>;
588c66ec88fSEmmanuel Vadot            assigned-clock-rates = <19200000>, <150000000>;
589c66ec88fSEmmanuel Vadot
5908d13bc63SEmmanuel Vadot            interrupts = <GIC_SPI 130 IRQ_TYPE_LEVEL_HIGH>,
5918d13bc63SEmmanuel Vadot                         <GIC_SPI 131 IRQ_TYPE_LEVEL_HIGH>,
5928d13bc63SEmmanuel Vadot                         <GIC_SPI 489 IRQ_TYPE_EDGE_BOTH>,
59384943d6fSEmmanuel Vadot                         <GIC_SPI 488 IRQ_TYPE_EDGE_BOTH>,
5948d13bc63SEmmanuel Vadot                         <GIC_SPI 486 IRQ_TYPE_LEVEL_HIGH>;
5958d13bc63SEmmanuel Vadot            interrupt-names = "pwr_event", "hs_phy_irq",
5968d13bc63SEmmanuel Vadot                          "dp_hs_phy_irq", "dm_hs_phy_irq", "ss_phy_irq";
597c66ec88fSEmmanuel Vadot
598c66ec88fSEmmanuel Vadot            power-domains = <&gcc USB30_PRIM_GDSC>;
599c66ec88fSEmmanuel Vadot
600c66ec88fSEmmanuel Vadot            resets = <&gcc GCC_USB30_PRIM_BCR>;
601c66ec88fSEmmanuel Vadot
6025def4c47SEmmanuel Vadot            usb@a600000 {
603c66ec88fSEmmanuel Vadot                compatible = "snps,dwc3";
604c66ec88fSEmmanuel Vadot                reg = <0 0x0a600000 0 0xcd00>;
605c66ec88fSEmmanuel Vadot                interrupts = <GIC_SPI 133 IRQ_TYPE_LEVEL_HIGH>;
606c66ec88fSEmmanuel Vadot                iommus = <&apps_smmu 0x740 0>;
607c66ec88fSEmmanuel Vadot                snps,dis_u2_susphy_quirk;
608c66ec88fSEmmanuel Vadot                snps,dis_enblslpm_quirk;
609c66ec88fSEmmanuel Vadot                phys = <&usb_1_hsphy>, <&usb_1_ssphy>;
610c66ec88fSEmmanuel Vadot                phy-names = "usb2-phy", "usb3-phy";
611c66ec88fSEmmanuel Vadot            };
612c66ec88fSEmmanuel Vadot        };
613c66ec88fSEmmanuel Vadot    };
614