0001 # SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
0002 %YAML 1.2
0003 ---
0004 $id: http://devicetree.org/schemas/usb/qcom,dwc3.yaml#
0005 $schema: http://devicetree.org/meta-schemas/core.yaml#
0006
0007 title: Qualcomm SuperSpeed DWC3 USB SoC controller
0008
0009 maintainers:
0010 - Wesley Cheng <quic_wcheng@quicinc.com>
0011
0012 properties:
0013 compatible:
0014 items:
0015 - enum:
0016 - qcom,ipq4019-dwc3
0017 - qcom,ipq6018-dwc3
0018 - qcom,ipq8064-dwc3
0019 - qcom,ipq8074-dwc3
0020 - qcom,msm8953-dwc3
0021 - qcom,msm8994-dwc3
0022 - qcom,msm8996-dwc3
0023 - qcom,msm8998-dwc3
0024 - qcom,qcs404-dwc3
0025 - qcom,sc7180-dwc3
0026 - qcom,sc7280-dwc3
0027 - qcom,sc8280xp-dwc3
0028 - qcom,sdm660-dwc3
0029 - qcom,sdm845-dwc3
0030 - qcom,sdx55-dwc3
0031 - qcom,sdx65-dwc3
0032 - qcom,sm4250-dwc3
0033 - qcom,sm6115-dwc3
0034 - qcom,sm6125-dwc3
0035 - qcom,sm6350-dwc3
0036 - qcom,sm6375-dwc3
0037 - qcom,sm8150-dwc3
0038 - qcom,sm8250-dwc3
0039 - qcom,sm8350-dwc3
0040 - qcom,sm8450-dwc3
0041 - const: qcom,dwc3
0042
0043 reg:
0044 description: Offset and length of register set for QSCRATCH wrapper
0045 maxItems: 1
0046
0047 "#address-cells":
0048 enum: [ 1, 2 ]
0049
0050 "#size-cells":
0051 enum: [ 1, 2 ]
0052
0053 ranges: true
0054
0055 power-domains:
0056 description: specifies a phandle to PM domain provider node
0057 maxItems: 1
0058
0059 clocks:
0060 description: |
0061 Several clocks are used, depending on the variant. Typical ones are::
0062 - cfg_noc:: System Config NOC clock.
0063 - core:: Master/Core clock, has to be >= 125 MHz for SS operation and >=
0064 60MHz for HS operation.
0065 - iface:: System bus AXI clock.
0066 - sleep:: Sleep clock, used for wakeup when USB3 core goes into low
0067 power mode (U3).
0068 - mock_utmi:: Mock utmi clock needed for ITP/SOF generation in host
0069 mode. Its frequency should be 19.2MHz.
0070 minItems: 1
0071 maxItems: 9
0072
0073 clock-names:
0074 minItems: 1
0075 maxItems: 9
0076
0077 assigned-clocks:
0078 items:
0079 - description: Phandle and clock specifier of MOCK_UTMI_CLK.
0080 - description: Phandle and clock specifoer of MASTER_CLK.
0081
0082 assigned-clock-rates:
0083 items:
0084 - description: Must be 19.2MHz (19200000).
0085 - description: Must be >= 60 MHz in HS mode, >= 125 MHz in SS mode.
0086 resets:
0087 maxItems: 1
0088
0089 interconnects:
0090 maxItems: 2
0091
0092 interconnect-names:
0093 items:
0094 - const: usb-ddr
0095 - const: apps-usb
0096
0097 interrupts:
0098 minItems: 1
0099 maxItems: 4
0100
0101 interrupt-names:
0102 minItems: 1
0103 maxItems: 4
0104
0105 qcom,select-utmi-as-pipe-clk:
0106 description:
0107 If present, disable USB3 pipe_clk requirement.
0108 Used when dwc3 operates without SSPHY and only
0109 HS/FS/LS modes are supported.
0110 type: boolean
0111
0112 wakeup-source: true
0113
0114 # Required child node:
0115
0116 patternProperties:
0117 "^usb@[0-9a-f]+$":
0118 $ref: snps,dwc3.yaml#
0119
0120 properties:
0121 wakeup-source: false
0122
0123 required:
0124 - compatible
0125 - reg
0126 - "#address-cells"
0127 - "#size-cells"
0128 - ranges
0129 - power-domains
0130 - clocks
0131 - clock-names
0132 - interrupts
0133 - interrupt-names
0134
0135 allOf:
0136 - if:
0137 properties:
0138 compatible:
0139 contains:
0140 enum:
0141 - qcom,ipq4019-dwc3
0142 then:
0143 properties:
0144 clocks:
0145 maxItems: 3
0146 clock-names:
0147 items:
0148 - const: core
0149 - const: sleep
0150 - const: mock_utmi
0151
0152 - if:
0153 properties:
0154 compatible:
0155 contains:
0156 enum:
0157 - qcom,ipq8064-dwc3
0158 then:
0159 properties:
0160 clocks:
0161 items:
0162 - description: Master/Core clock, has to be >= 125 MHz
0163 for SS operation and >= 60MHz for HS operation.
0164 clock-names:
0165 items:
0166 - const: core
0167
0168 - if:
0169 properties:
0170 compatible:
0171 contains:
0172 enum:
0173 - qcom,msm8953-dwc3
0174 - qcom,msm8996-dwc3
0175 - qcom,msm8998-dwc3
0176 - qcom,sc7180-dwc3
0177 - qcom,sc7280-dwc3
0178 - qcom,sdm845-dwc3
0179 - qcom,sdx55-dwc3
0180 - qcom,sm6350-dwc3
0181 then:
0182 properties:
0183 clocks:
0184 maxItems: 5
0185 clock-names:
0186 items:
0187 - const: cfg_noc
0188 - const: core
0189 - const: iface
0190 - const: sleep
0191 - const: mock_utmi
0192
0193 - if:
0194 properties:
0195 compatible:
0196 contains:
0197 enum:
0198 - qcom,ipq6018-dwc3
0199 then:
0200 properties:
0201 clocks:
0202 minItems: 3
0203 maxItems: 4
0204 clock-names:
0205 oneOf:
0206 - items:
0207 - const: core
0208 - const: sleep
0209 - const: mock_utmi
0210 - items:
0211 - const: cfg_noc
0212 - const: core
0213 - const: sleep
0214 - const: mock_utmi
0215
0216 - if:
0217 properties:
0218 compatible:
0219 contains:
0220 enum:
0221 - qcom,ipq8074-dwc3
0222 then:
0223 properties:
0224 clocks:
0225 maxItems: 4
0226 clock-names:
0227 items:
0228 - const: cfg_noc
0229 - const: core
0230 - const: sleep
0231 - const: mock_utmi
0232
0233 - if:
0234 properties:
0235 compatible:
0236 contains:
0237 enum:
0238 - qcom,msm8994-dwc3
0239 - qcom,qcs404-dwc3
0240 then:
0241 properties:
0242 clocks:
0243 maxItems: 4
0244 clock-names:
0245 items:
0246 - const: core
0247 - const: iface
0248 - const: sleep
0249 - const: mock_utmi
0250
0251 - if:
0252 properties:
0253 compatible:
0254 contains:
0255 enum:
0256 - qcom,sc8280xp-dwc3
0257 then:
0258 properties:
0259 clocks:
0260 maxItems: 9
0261 clock-names:
0262 items:
0263 - const: cfg_noc
0264 - const: core
0265 - const: iface
0266 - const: sleep
0267 - const: mock_utmi
0268 - const: noc_aggr
0269 - const: noc_aggr_north
0270 - const: noc_aggr_south
0271 - const: noc_sys
0272
0273 - if:
0274 properties:
0275 compatible:
0276 contains:
0277 enum:
0278 - qcom,sdm660-dwc3
0279 then:
0280 properties:
0281 clocks:
0282 minItems: 6
0283 clock-names:
0284 items:
0285 - const: cfg_noc
0286 - const: core
0287 - const: iface
0288 - const: sleep
0289 - const: mock_utmi
0290 - const: bus
0291
0292 - if:
0293 properties:
0294 compatible:
0295 contains:
0296 enum:
0297 - qcom,sm6125-dwc3
0298 - qcom,sm8150-dwc3
0299 - qcom,sm8250-dwc3
0300 - qcom,sm8450-dwc3
0301 then:
0302 properties:
0303 clocks:
0304 minItems: 6
0305 clock-names:
0306 items:
0307 - const: cfg_noc
0308 - const: core
0309 - const: iface
0310 - const: sleep
0311 - const: mock_utmi
0312 - const: xo
0313
0314 - if:
0315 properties:
0316 compatible:
0317 contains:
0318 enum:
0319 - qcom,sm8350-dwc3
0320 then:
0321 properties:
0322 clocks:
0323 minItems: 5
0324 maxItems: 6
0325 clock-names:
0326 minItems: 5
0327 items:
0328 - const: cfg_noc
0329 - const: core
0330 - const: iface
0331 - const: sleep
0332 - const: mock_utmi
0333 - const: xo
0334
0335 - if:
0336 properties:
0337 compatible:
0338 contains:
0339 enum:
0340 - qcom,ipq4019-dwc3
0341 - qcom,ipq6018-dwc3
0342 - qcom,ipq8064-dwc3
0343 - qcom,ipq8074-dwc3
0344 - qcom,msm8994-dwc3
0345 - qcom,qcs404-dwc3
0346 - qcom,sc7180-dwc3
0347 - qcom,sdm845-dwc3
0348 - qcom,sdx55-dwc3
0349 - qcom,sdx65-dwc3
0350 - qcom,sm4250-dwc3
0351 - qcom,sm6115-dwc3
0352 - qcom,sm6125-dwc3
0353 - qcom,sm6350-dwc3
0354 - qcom,sm8150-dwc3
0355 - qcom,sm8250-dwc3
0356 - qcom,sm8350-dwc3
0357 - qcom,sm8450-dwc3
0358 then:
0359 properties:
0360 interrupts:
0361 items:
0362 - description: The interrupt that is asserted
0363 when a wakeup event is received on USB2 bus.
0364 - description: The interrupt that is asserted
0365 when a wakeup event is received on USB3 bus.
0366 - description: Wakeup event on DM line.
0367 - description: Wakeup event on DP line.
0368 interrupt-names:
0369 items:
0370 - const: hs_phy_irq
0371 - const: ss_phy_irq
0372 - const: dm_hs_phy_irq
0373 - const: dp_hs_phy_irq
0374
0375 - if:
0376 properties:
0377 compatible:
0378 contains:
0379 enum:
0380 - qcom,msm8953-dwc3
0381 - qcom,msm8996-dwc3
0382 - qcom,msm8998-dwc3
0383 then:
0384 properties:
0385 interrupts:
0386 maxItems: 2
0387 interrupt-names:
0388 items:
0389 - const: hs_phy_irq
0390 - const: ss_phy_irq
0391
0392 - if:
0393 properties:
0394 compatible:
0395 contains:
0396 enum:
0397 - qcom,sdm660-dwc3
0398 then:
0399 properties:
0400 interrupts:
0401 minItems: 1
0402 maxItems: 2
0403 interrupt-names:
0404 minItems: 1
0405 items:
0406 - const: hs_phy_irq
0407 - const: ss_phy_irq
0408
0409 - if:
0410 properties:
0411 compatible:
0412 contains:
0413 enum:
0414 - qcom,sc7280-dwc3
0415 then:
0416 properties:
0417 interrupts:
0418 minItems: 3
0419 maxItems: 4
0420 interrupt-names:
0421 minItems: 3
0422 items:
0423 - const: hs_phy_irq
0424 - const: dp_hs_phy_irq
0425 - const: dm_hs_phy_irq
0426 - const: ss_phy_irq
0427
0428 - if:
0429 properties:
0430 compatible:
0431 contains:
0432 enum:
0433 - qcom,sc8280xp-dwc3
0434 then:
0435 properties:
0436 interrupts:
0437 maxItems: 4
0438 interrupt-names:
0439 items:
0440 - const: pwr_event
0441 - const: dp_hs_phy_irq
0442 - const: dm_hs_phy_irq
0443 - const: ss_phy_irq
0444
0445 additionalProperties: false
0446
0447 examples:
0448 - |
0449 #include <dt-bindings/clock/qcom,gcc-sdm845.h>
0450 #include <dt-bindings/interrupt-controller/arm-gic.h>
0451 #include <dt-bindings/interrupt-controller/irq.h>
0452 soc {
0453 #address-cells = <2>;
0454 #size-cells = <2>;
0455
0456 usb@a6f8800 {
0457 compatible = "qcom,sdm845-dwc3", "qcom,dwc3";
0458 reg = <0 0x0a6f8800 0 0x400>;
0459
0460 #address-cells = <2>;
0461 #size-cells = <2>;
0462 ranges;
0463 clocks = <&gcc GCC_CFG_NOC_USB3_PRIM_AXI_CLK>,
0464 <&gcc GCC_USB30_PRIM_MASTER_CLK>,
0465 <&gcc GCC_AGGRE_USB3_PRIM_AXI_CLK>,
0466 <&gcc GCC_USB30_PRIM_SLEEP_CLK>,
0467 <&gcc GCC_USB30_PRIM_MOCK_UTMI_CLK>;
0468 clock-names = "cfg_noc",
0469 "core",
0470 "iface",
0471 "sleep",
0472 "mock_utmi";
0473
0474 assigned-clocks = <&gcc GCC_USB30_PRIM_MOCK_UTMI_CLK>,
0475 <&gcc GCC_USB30_PRIM_MASTER_CLK>;
0476 assigned-clock-rates = <19200000>, <150000000>;
0477
0478 interrupts = <GIC_SPI 131 IRQ_TYPE_LEVEL_HIGH>,
0479 <GIC_SPI 486 IRQ_TYPE_LEVEL_HIGH>,
0480 <GIC_SPI 488 IRQ_TYPE_LEVEL_HIGH>,
0481 <GIC_SPI 489 IRQ_TYPE_LEVEL_HIGH>;
0482 interrupt-names = "hs_phy_irq", "ss_phy_irq",
0483 "dm_hs_phy_irq", "dp_hs_phy_irq";
0484
0485 power-domains = <&gcc USB30_PRIM_GDSC>;
0486
0487 resets = <&gcc GCC_USB30_PRIM_BCR>;
0488
0489 usb@a600000 {
0490 compatible = "snps,dwc3";
0491 reg = <0 0x0a600000 0 0xcd00>;
0492 interrupts = <GIC_SPI 133 IRQ_TYPE_LEVEL_HIGH>;
0493 iommus = <&apps_smmu 0x740 0>;
0494 snps,dis_u2_susphy_quirk;
0495 snps,dis_enblslpm_quirk;
0496 phys = <&usb_1_hsphy>, <&usb_1_ssphy>;
0497 phy-names = "usb2-phy", "usb3-phy";
0498 };
0499 };
0500 };