xref: /OK3568_Linux_fs/kernel/Documentation/devicetree/bindings/usb/qcom,dwc3.yaml (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
2*4882a593Smuzhiyun%YAML 1.2
3*4882a593Smuzhiyun---
4*4882a593Smuzhiyun$id: http://devicetree.org/schemas/usb/qcom,dwc3.yaml#
5*4882a593Smuzhiyun$schema: http://devicetree.org/meta-schemas/core.yaml#
6*4882a593Smuzhiyun
7*4882a593Smuzhiyuntitle: Qualcomm SuperSpeed DWC3 USB SoC controller
8*4882a593Smuzhiyun
9*4882a593Smuzhiyunmaintainers:
10*4882a593Smuzhiyun  - Manu Gautam <mgautam@codeaurora.org>
11*4882a593Smuzhiyun
12*4882a593Smuzhiyunproperties:
13*4882a593Smuzhiyun  compatible:
14*4882a593Smuzhiyun    items:
15*4882a593Smuzhiyun      - enum:
16*4882a593Smuzhiyun          - qcom,msm8996-dwc3
17*4882a593Smuzhiyun          - qcom,msm8998-dwc3
18*4882a593Smuzhiyun          - qcom,sc7180-dwc3
19*4882a593Smuzhiyun          - qcom,sdm845-dwc3
20*4882a593Smuzhiyun          - qcom,sdx55-dwc3
21*4882a593Smuzhiyun          - qcom,sm8150-dwc3
22*4882a593Smuzhiyun          - qcom,sm8250-dwc3
23*4882a593Smuzhiyun          - qcom,sm8350-dwc3
24*4882a593Smuzhiyun      - const: qcom,dwc3
25*4882a593Smuzhiyun
26*4882a593Smuzhiyun  reg:
27*4882a593Smuzhiyun    description: Offset and length of register set for QSCRATCH wrapper
28*4882a593Smuzhiyun    maxItems: 1
29*4882a593Smuzhiyun
30*4882a593Smuzhiyun  "#address-cells":
31*4882a593Smuzhiyun    enum: [ 1, 2 ]
32*4882a593Smuzhiyun
33*4882a593Smuzhiyun  "#size-cells":
34*4882a593Smuzhiyun    enum: [ 1, 2 ]
35*4882a593Smuzhiyun
36*4882a593Smuzhiyun  ranges: true
37*4882a593Smuzhiyun
38*4882a593Smuzhiyun  power-domains:
39*4882a593Smuzhiyun    description: specifies a phandle to PM domain provider node
40*4882a593Smuzhiyun    maxItems: 1
41*4882a593Smuzhiyun
42*4882a593Smuzhiyun  clocks:
43*4882a593Smuzhiyun    description:
44*4882a593Smuzhiyun      A list of phandle and clock-specifier pairs for the clocks
45*4882a593Smuzhiyun      listed in clock-names.
46*4882a593Smuzhiyun    items:
47*4882a593Smuzhiyun      - description: System Config NOC clock.
48*4882a593Smuzhiyun      - description: Master/Core clock, has to be >= 125 MHz
49*4882a593Smuzhiyun          for SS operation and >= 60MHz for HS operation.
50*4882a593Smuzhiyun      - description: System bus AXI clock.
51*4882a593Smuzhiyun      - description: Mock utmi clock needed for ITP/SOF generation
52*4882a593Smuzhiyun          in host mode. Its frequency should be 19.2MHz.
53*4882a593Smuzhiyun      - description: Sleep clock, used for wakeup when
54*4882a593Smuzhiyun          USB3 core goes into low power mode (U3).
55*4882a593Smuzhiyun
56*4882a593Smuzhiyun  clock-names:
57*4882a593Smuzhiyun    items:
58*4882a593Smuzhiyun      - const: cfg_noc
59*4882a593Smuzhiyun      - const: core
60*4882a593Smuzhiyun      - const: iface
61*4882a593Smuzhiyun      - const: mock_utmi
62*4882a593Smuzhiyun      - const: sleep
63*4882a593Smuzhiyun
64*4882a593Smuzhiyun  assigned-clocks:
65*4882a593Smuzhiyun    items:
66*4882a593Smuzhiyun      - description: Phandle and clock specifier of MOCK_UTMI_CLK.
67*4882a593Smuzhiyun      - description: Phandle and clock specifoer of MASTER_CLK.
68*4882a593Smuzhiyun
69*4882a593Smuzhiyun  assigned-clock-rates:
70*4882a593Smuzhiyun    items:
71*4882a593Smuzhiyun      - description: Must be 19.2MHz (19200000).
72*4882a593Smuzhiyun      - description: Must be >= 60 MHz in HS mode, >= 125 MHz in SS mode.
73*4882a593Smuzhiyun  resets:
74*4882a593Smuzhiyun    maxItems: 1
75*4882a593Smuzhiyun
76*4882a593Smuzhiyun  interconnects:
77*4882a593Smuzhiyun    maxItems: 2
78*4882a593Smuzhiyun
79*4882a593Smuzhiyun  interconnect-names:
80*4882a593Smuzhiyun    items:
81*4882a593Smuzhiyun      - const: usb-ddr
82*4882a593Smuzhiyun      - const: apps-usb
83*4882a593Smuzhiyun
84*4882a593Smuzhiyun  interrupts:
85*4882a593Smuzhiyun    items:
86*4882a593Smuzhiyun      - description: The interrupt that is asserted
87*4882a593Smuzhiyun          when a wakeup event is received on USB2 bus.
88*4882a593Smuzhiyun      - description: The interrupt that is asserted
89*4882a593Smuzhiyun          when a wakeup event is received on USB3 bus.
90*4882a593Smuzhiyun      - description: Wakeup event on DM line.
91*4882a593Smuzhiyun      - description: Wakeup event on DP line.
92*4882a593Smuzhiyun
93*4882a593Smuzhiyun  interrupt-names:
94*4882a593Smuzhiyun    items:
95*4882a593Smuzhiyun      - const: hs_phy_irq
96*4882a593Smuzhiyun      - const: ss_phy_irq
97*4882a593Smuzhiyun      - const: dm_hs_phy_irq
98*4882a593Smuzhiyun      - const: dp_hs_phy_irq
99*4882a593Smuzhiyun
100*4882a593Smuzhiyun  qcom,select-utmi-as-pipe-clk:
101*4882a593Smuzhiyun    description:
102*4882a593Smuzhiyun      If present, disable USB3 pipe_clk requirement.
103*4882a593Smuzhiyun      Used when dwc3 operates without SSPHY and only
104*4882a593Smuzhiyun      HS/FS/LS modes are supported.
105*4882a593Smuzhiyun    type: boolean
106*4882a593Smuzhiyun
107*4882a593Smuzhiyun# Required child node:
108*4882a593Smuzhiyun
109*4882a593SmuzhiyunpatternProperties:
110*4882a593Smuzhiyun  "^dwc3@[0-9a-f]+$":
111*4882a593Smuzhiyun    type: object
112*4882a593Smuzhiyun    description:
113*4882a593Smuzhiyun      A child node must exist to represent the core DWC3 IP block
114*4882a593Smuzhiyun      The content of the node is defined in dwc3.txt.
115*4882a593Smuzhiyun
116*4882a593Smuzhiyunrequired:
117*4882a593Smuzhiyun  - compatible
118*4882a593Smuzhiyun  - reg
119*4882a593Smuzhiyun  - "#address-cells"
120*4882a593Smuzhiyun  - "#size-cells"
121*4882a593Smuzhiyun  - ranges
122*4882a593Smuzhiyun  - power-domains
123*4882a593Smuzhiyun  - clocks
124*4882a593Smuzhiyun  - clock-names
125*4882a593Smuzhiyun  - interrupts
126*4882a593Smuzhiyun  - interrupt-names
127*4882a593Smuzhiyun
128*4882a593SmuzhiyunadditionalProperties: false
129*4882a593Smuzhiyun
130*4882a593Smuzhiyunexamples:
131*4882a593Smuzhiyun  - |
132*4882a593Smuzhiyun    #include <dt-bindings/clock/qcom,gcc-sdm845.h>
133*4882a593Smuzhiyun    #include <dt-bindings/interrupt-controller/arm-gic.h>
134*4882a593Smuzhiyun    #include <dt-bindings/interrupt-controller/irq.h>
135*4882a593Smuzhiyun    soc {
136*4882a593Smuzhiyun        #address-cells = <2>;
137*4882a593Smuzhiyun        #size-cells = <2>;
138*4882a593Smuzhiyun
139*4882a593Smuzhiyun        usb@a6f8800 {
140*4882a593Smuzhiyun            compatible = "qcom,sdm845-dwc3", "qcom,dwc3";
141*4882a593Smuzhiyun            reg = <0 0x0a6f8800 0 0x400>;
142*4882a593Smuzhiyun
143*4882a593Smuzhiyun            #address-cells = <2>;
144*4882a593Smuzhiyun            #size-cells = <2>;
145*4882a593Smuzhiyun            ranges;
146*4882a593Smuzhiyun            clocks = <&gcc GCC_CFG_NOC_USB3_PRIM_AXI_CLK>,
147*4882a593Smuzhiyun                     <&gcc GCC_USB30_PRIM_MASTER_CLK>,
148*4882a593Smuzhiyun                     <&gcc GCC_AGGRE_USB3_PRIM_AXI_CLK>,
149*4882a593Smuzhiyun                     <&gcc GCC_USB30_PRIM_MOCK_UTMI_CLK>,
150*4882a593Smuzhiyun                     <&gcc GCC_USB30_PRIM_SLEEP_CLK>;
151*4882a593Smuzhiyun            clock-names = "cfg_noc", "core", "iface", "mock_utmi",
152*4882a593Smuzhiyun                      "sleep";
153*4882a593Smuzhiyun
154*4882a593Smuzhiyun            assigned-clocks = <&gcc GCC_USB30_PRIM_MOCK_UTMI_CLK>,
155*4882a593Smuzhiyun                          <&gcc GCC_USB30_PRIM_MASTER_CLK>;
156*4882a593Smuzhiyun            assigned-clock-rates = <19200000>, <150000000>;
157*4882a593Smuzhiyun
158*4882a593Smuzhiyun            interrupts = <GIC_SPI 131 IRQ_TYPE_LEVEL_HIGH>,
159*4882a593Smuzhiyun                         <GIC_SPI 486 IRQ_TYPE_LEVEL_HIGH>,
160*4882a593Smuzhiyun                         <GIC_SPI 488 IRQ_TYPE_LEVEL_HIGH>,
161*4882a593Smuzhiyun                         <GIC_SPI 489 IRQ_TYPE_LEVEL_HIGH>;
162*4882a593Smuzhiyun            interrupt-names = "hs_phy_irq", "ss_phy_irq",
163*4882a593Smuzhiyun                          "dm_hs_phy_irq", "dp_hs_phy_irq";
164*4882a593Smuzhiyun
165*4882a593Smuzhiyun            power-domains = <&gcc USB30_PRIM_GDSC>;
166*4882a593Smuzhiyun
167*4882a593Smuzhiyun            resets = <&gcc GCC_USB30_PRIM_BCR>;
168*4882a593Smuzhiyun
169*4882a593Smuzhiyun            dwc3@a600000 {
170*4882a593Smuzhiyun                compatible = "snps,dwc3";
171*4882a593Smuzhiyun                reg = <0 0x0a600000 0 0xcd00>;
172*4882a593Smuzhiyun                interrupts = <GIC_SPI 133 IRQ_TYPE_LEVEL_HIGH>;
173*4882a593Smuzhiyun                iommus = <&apps_smmu 0x740 0>;
174*4882a593Smuzhiyun                snps,dis_u2_susphy_quirk;
175*4882a593Smuzhiyun                snps,dis_enblslpm_quirk;
176*4882a593Smuzhiyun                phys = <&usb_1_hsphy>, <&usb_1_ssphy>;
177*4882a593Smuzhiyun                phy-names = "usb2-phy", "usb3-phy";
178*4882a593Smuzhiyun            };
179*4882a593Smuzhiyun        };
180*4882a593Smuzhiyun    };
181