1# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) 2%YAML 1.2 3--- 4$id: http://devicetree.org/schemas/usb/qcom,dwc3.yaml# 5$schema: http://devicetree.org/meta-schemas/core.yaml# 6 7title: Qualcomm SuperSpeed DWC3 USB SoC controller 8 9maintainers: 10 - Manu Gautam <mgautam@codeaurora.org> 11 12properties: 13 compatible: 14 items: 15 - enum: 16 - qcom,ipq4019-dwc3 17 - qcom,ipq6018-dwc3 18 - qcom,ipq8064-dwc3 19 - qcom,ipq8074-dwc3 20 - qcom,msm8953-dwc3 21 - qcom,msm8994-dwc3 22 - qcom,msm8996-dwc3 23 - qcom,msm8998-dwc3 24 - qcom,qcs404-dwc3 25 - qcom,sc7180-dwc3 26 - qcom,sc7280-dwc3 27 - qcom,sdm660-dwc3 28 - qcom,sdm845-dwc3 29 - qcom,sdx55-dwc3 30 - qcom,sdx65-dwc3 31 - qcom,sm4250-dwc3 32 - qcom,sm6115-dwc3 33 - qcom,sm6125-dwc3 34 - qcom,sm6350-dwc3 35 - qcom,sm8150-dwc3 36 - qcom,sm8250-dwc3 37 - qcom,sm8350-dwc3 38 - qcom,sm8450-dwc3 39 - const: qcom,dwc3 40 41 reg: 42 description: Offset and length of register set for QSCRATCH wrapper 43 maxItems: 1 44 45 "#address-cells": 46 enum: [ 1, 2 ] 47 48 "#size-cells": 49 enum: [ 1, 2 ] 50 51 ranges: true 52 53 power-domains: 54 description: specifies a phandle to PM domain provider node 55 maxItems: 1 56 57 clocks: 58 description: | 59 Several clocks are used, depending on the variant. Typical ones are:: 60 - cfg_noc:: System Config NOC clock. 61 - core:: Master/Core clock, has to be >= 125 MHz for SS operation and >= 62 60MHz for HS operation. 63 - iface:: System bus AXI clock. 64 - sleep:: Sleep clock, used for wakeup when USB3 core goes into low 65 power mode (U3). 66 - mock_utmi:: Mock utmi clock needed for ITP/SOF generation in host 67 mode. Its frequency should be 19.2MHz. 68 minItems: 1 69 maxItems: 6 70 71 clock-names: 72 minItems: 1 73 maxItems: 6 74 75 assigned-clocks: 76 items: 77 - description: Phandle and clock specifier of MOCK_UTMI_CLK. 78 - description: Phandle and clock specifoer of MASTER_CLK. 79 80 assigned-clock-rates: 81 items: 82 - description: Must be 19.2MHz (19200000). 83 - description: Must be >= 60 MHz in HS mode, >= 125 MHz in SS mode. 84 resets: 85 maxItems: 1 86 87 interconnects: 88 maxItems: 2 89 90 interconnect-names: 91 items: 92 - const: usb-ddr 93 - const: apps-usb 94 95 interrupts: 96 items: 97 - description: The interrupt that is asserted 98 when a wakeup event is received on USB2 bus. 99 - description: The interrupt that is asserted 100 when a wakeup event is received on USB3 bus. 101 - description: Wakeup event on DM line. 102 - description: Wakeup event on DP line. 103 104 interrupt-names: 105 items: 106 - const: hs_phy_irq 107 - const: ss_phy_irq 108 - const: dm_hs_phy_irq 109 - const: dp_hs_phy_irq 110 111 qcom,select-utmi-as-pipe-clk: 112 description: 113 If present, disable USB3 pipe_clk requirement. 114 Used when dwc3 operates without SSPHY and only 115 HS/FS/LS modes are supported. 116 type: boolean 117 118# Required child node: 119 120patternProperties: 121 "^usb@[0-9a-f]+$": 122 $ref: snps,dwc3.yaml# 123 124required: 125 - compatible 126 - reg 127 - "#address-cells" 128 - "#size-cells" 129 - ranges 130 - power-domains 131 - clocks 132 - clock-names 133 - interrupts 134 - interrupt-names 135 136allOf: 137 - if: 138 properties: 139 compatible: 140 contains: 141 enum: 142 - qcom,ipq4019-dwc3 143 then: 144 properties: 145 clocks: 146 maxItems: 3 147 clock-names: 148 items: 149 - const: core 150 - const: sleep 151 - const: mock_utmi 152 153 - if: 154 properties: 155 compatible: 156 contains: 157 enum: 158 - qcom,ipq8064-dwc3 159 then: 160 properties: 161 clocks: 162 items: 163 - description: Master/Core clock, has to be >= 125 MHz 164 for SS operation and >= 60MHz for HS operation. 165 clock-names: 166 items: 167 - const: core 168 169 - if: 170 properties: 171 compatible: 172 contains: 173 enum: 174 - qcom,msm8953-dwc3 175 - qcom,msm8996-dwc3 176 - qcom,msm8998-dwc3 177 - qcom,sc7180-dwc3 178 - qcom,sc7280-dwc3 179 - qcom,sdm845-dwc3 180 - qcom,sdx55-dwc3 181 - qcom,sm6350-dwc3 182 then: 183 properties: 184 clocks: 185 maxItems: 5 186 clock-names: 187 items: 188 - const: cfg_noc 189 - const: core 190 - const: iface 191 - const: sleep 192 - const: mock_utmi 193 194 - if: 195 properties: 196 compatible: 197 contains: 198 enum: 199 - qcom,ipq6018-dwc3 200 then: 201 properties: 202 clocks: 203 minItems: 3 204 maxItems: 4 205 clock-names: 206 oneOf: 207 - items: 208 - const: core 209 - const: sleep 210 - const: mock_utmi 211 - items: 212 - const: cfg_noc 213 - const: core 214 - const: sleep 215 - const: mock_utmi 216 217 - if: 218 properties: 219 compatible: 220 contains: 221 enum: 222 - qcom,ipq8074-dwc3 223 then: 224 properties: 225 clocks: 226 maxItems: 4 227 clock-names: 228 items: 229 - const: cfg_noc 230 - const: core 231 - const: sleep 232 - const: mock_utmi 233 234 - if: 235 properties: 236 compatible: 237 contains: 238 enum: 239 - qcom,msm8994-dwc3 240 - qcom,qcs404-dwc3 241 then: 242 properties: 243 clocks: 244 maxItems: 4 245 clock-names: 246 items: 247 - const: core 248 - const: iface 249 - const: sleep 250 - const: mock_utmi 251 252 - if: 253 properties: 254 compatible: 255 contains: 256 enum: 257 - qcom,sdm660-dwc3 258 then: 259 properties: 260 clocks: 261 minItems: 6 262 clock-names: 263 items: 264 - const: cfg_noc 265 - const: core 266 - const: iface 267 - const: sleep 268 - const: mock_utmi 269 - const: bus 270 271 - if: 272 properties: 273 compatible: 274 contains: 275 enum: 276 - qcom,sm6125-dwc3 277 - qcom,sm8150-dwc3 278 - qcom,sm8250-dwc3 279 - qcom,sm8450-dwc3 280 then: 281 properties: 282 clocks: 283 minItems: 6 284 clock-names: 285 items: 286 - const: cfg_noc 287 - const: core 288 - const: iface 289 - const: sleep 290 - const: mock_utmi 291 - const: xo 292 293 - if: 294 properties: 295 compatible: 296 contains: 297 enum: 298 - qcom,sm8350-dwc3 299 then: 300 properties: 301 clocks: 302 minItems: 5 303 maxItems: 6 304 clock-names: 305 minItems: 5 306 items: 307 - const: cfg_noc 308 - const: core 309 - const: iface 310 - const: sleep 311 - const: mock_utmi 312 - const: xo 313 314 315additionalProperties: false 316 317examples: 318 - | 319 #include <dt-bindings/clock/qcom,gcc-sdm845.h> 320 #include <dt-bindings/interrupt-controller/arm-gic.h> 321 #include <dt-bindings/interrupt-controller/irq.h> 322 soc { 323 #address-cells = <2>; 324 #size-cells = <2>; 325 326 usb@a6f8800 { 327 compatible = "qcom,sdm845-dwc3", "qcom,dwc3"; 328 reg = <0 0x0a6f8800 0 0x400>; 329 330 #address-cells = <2>; 331 #size-cells = <2>; 332 ranges; 333 clocks = <&gcc GCC_CFG_NOC_USB3_PRIM_AXI_CLK>, 334 <&gcc GCC_USB30_PRIM_MASTER_CLK>, 335 <&gcc GCC_AGGRE_USB3_PRIM_AXI_CLK>, 336 <&gcc GCC_USB30_PRIM_SLEEP_CLK>, 337 <&gcc GCC_USB30_PRIM_MOCK_UTMI_CLK>; 338 clock-names = "cfg_noc", 339 "core", 340 "iface", 341 "sleep", 342 "mock_utmi"; 343 344 assigned-clocks = <&gcc GCC_USB30_PRIM_MOCK_UTMI_CLK>, 345 <&gcc GCC_USB30_PRIM_MASTER_CLK>; 346 assigned-clock-rates = <19200000>, <150000000>; 347 348 interrupts = <GIC_SPI 131 IRQ_TYPE_LEVEL_HIGH>, 349 <GIC_SPI 486 IRQ_TYPE_LEVEL_HIGH>, 350 <GIC_SPI 488 IRQ_TYPE_LEVEL_HIGH>, 351 <GIC_SPI 489 IRQ_TYPE_LEVEL_HIGH>; 352 interrupt-names = "hs_phy_irq", "ss_phy_irq", 353 "dm_hs_phy_irq", "dp_hs_phy_irq"; 354 355 power-domains = <&gcc USB30_PRIM_GDSC>; 356 357 resets = <&gcc GCC_USB30_PRIM_BCR>; 358 359 usb@a600000 { 360 compatible = "snps,dwc3"; 361 reg = <0 0x0a600000 0 0xcd00>; 362 interrupts = <GIC_SPI 133 IRQ_TYPE_LEVEL_HIGH>; 363 iommus = <&apps_smmu 0x740 0>; 364 snps,dis_u2_susphy_quirk; 365 snps,dis_enblslpm_quirk; 366 phys = <&usb_1_hsphy>, <&usb_1_ssphy>; 367 phy-names = "usb2-phy", "usb3-phy"; 368 }; 369 }; 370 }; 371