Back to home page

OSCL-LXR

 
 

    


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     };