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 - Wesley Cheng <quic_wcheng@quicinc.com> 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,sc8280xp-dwc3 28 - qcom,sdm660-dwc3 29 - qcom,sdm670-dwc3 30 - qcom,sdm845-dwc3 31 - qcom,sdx55-dwc3 32 - qcom,sdx65-dwc3 33 - qcom,sm4250-dwc3 34 - qcom,sm6115-dwc3 35 - qcom,sm6125-dwc3 36 - qcom,sm6350-dwc3 37 - qcom,sm6375-dwc3 38 - qcom,sm8150-dwc3 39 - qcom,sm8250-dwc3 40 - qcom,sm8350-dwc3 41 - qcom,sm8450-dwc3 42 - qcom,sm8550-dwc3 43 - const: qcom,dwc3 44 45 reg: 46 description: Offset and length of register set for QSCRATCH wrapper 47 maxItems: 1 48 49 "#address-cells": 50 enum: [ 1, 2 ] 51 52 "#size-cells": 53 enum: [ 1, 2 ] 54 55 ranges: true 56 57 power-domains: 58 description: specifies a phandle to PM domain provider node 59 maxItems: 1 60 61 required-opps: 62 maxItems: 1 63 64 clocks: 65 description: | 66 Several clocks are used, depending on the variant. Typical ones are:: 67 - cfg_noc:: System Config NOC clock. 68 - core:: Master/Core clock, has to be >= 125 MHz for SS operation and >= 69 60MHz for HS operation. 70 - iface:: System bus AXI clock. 71 - sleep:: Sleep clock, used for wakeup when USB3 core goes into low 72 power mode (U3). 73 - mock_utmi:: Mock utmi clock needed for ITP/SOF generation in host 74 mode. Its frequency should be 19.2MHz. 75 minItems: 1 76 maxItems: 9 77 78 clock-names: 79 minItems: 1 80 maxItems: 9 81 82 assigned-clocks: 83 items: 84 - description: Phandle and clock specifier of MOCK_UTMI_CLK. 85 - description: Phandle and clock specifoer of MASTER_CLK. 86 87 assigned-clock-rates: 88 items: 89 - description: Must be 19.2MHz (19200000). 90 - description: Must be >= 60 MHz in HS mode, >= 125 MHz in SS mode. 91 resets: 92 maxItems: 1 93 94 interconnects: 95 maxItems: 2 96 97 interconnect-names: 98 items: 99 - const: usb-ddr 100 - const: apps-usb 101 102 interrupts: 103 minItems: 1 104 maxItems: 4 105 106 interrupt-names: 107 minItems: 1 108 maxItems: 4 109 110 qcom,select-utmi-as-pipe-clk: 111 description: 112 If present, disable USB3 pipe_clk requirement. 113 Used when dwc3 operates without SSPHY and only 114 HS/FS/LS modes are supported. 115 type: boolean 116 117 wakeup-source: true 118 119# Required child node: 120 121patternProperties: 122 "^usb@[0-9a-f]+$": 123 $ref: snps,dwc3.yaml# 124 125 properties: 126 wakeup-source: false 127 128required: 129 - compatible 130 - reg 131 - "#address-cells" 132 - "#size-cells" 133 - ranges 134 - power-domains 135 - clocks 136 - clock-names 137 - interrupts 138 - interrupt-names 139 140allOf: 141 - if: 142 properties: 143 compatible: 144 contains: 145 enum: 146 - qcom,ipq4019-dwc3 147 then: 148 properties: 149 clocks: 150 maxItems: 3 151 clock-names: 152 items: 153 - const: core 154 - const: sleep 155 - const: mock_utmi 156 157 - if: 158 properties: 159 compatible: 160 contains: 161 enum: 162 - qcom,ipq8064-dwc3 163 then: 164 properties: 165 clocks: 166 items: 167 - description: Master/Core clock, has to be >= 125 MHz 168 for SS operation and >= 60MHz for HS operation. 169 clock-names: 170 items: 171 - const: core 172 173 - if: 174 properties: 175 compatible: 176 contains: 177 enum: 178 - qcom,msm8953-dwc3 179 - qcom,msm8996-dwc3 180 - qcom,msm8998-dwc3 181 - qcom,sc7180-dwc3 182 - qcom,sc7280-dwc3 183 - qcom,sdm670-dwc3 184 - qcom,sdm845-dwc3 185 - qcom,sdx55-dwc3 186 - qcom,sm6350-dwc3 187 then: 188 properties: 189 clocks: 190 maxItems: 5 191 clock-names: 192 items: 193 - const: cfg_noc 194 - const: core 195 - const: iface 196 - const: sleep 197 - const: mock_utmi 198 199 - if: 200 properties: 201 compatible: 202 contains: 203 enum: 204 - qcom,ipq6018-dwc3 205 then: 206 properties: 207 clocks: 208 minItems: 3 209 maxItems: 4 210 clock-names: 211 oneOf: 212 - items: 213 - const: core 214 - const: sleep 215 - const: mock_utmi 216 - items: 217 - const: cfg_noc 218 - const: core 219 - const: sleep 220 - const: mock_utmi 221 222 - if: 223 properties: 224 compatible: 225 contains: 226 enum: 227 - qcom,ipq8074-dwc3 228 then: 229 properties: 230 clocks: 231 maxItems: 4 232 clock-names: 233 items: 234 - const: cfg_noc 235 - const: core 236 - const: sleep 237 - const: mock_utmi 238 239 - if: 240 properties: 241 compatible: 242 contains: 243 enum: 244 - qcom,msm8994-dwc3 245 - qcom,qcs404-dwc3 246 then: 247 properties: 248 clocks: 249 maxItems: 4 250 clock-names: 251 items: 252 - const: core 253 - const: iface 254 - const: sleep 255 - const: mock_utmi 256 257 - if: 258 properties: 259 compatible: 260 contains: 261 enum: 262 - qcom,sc8280xp-dwc3 263 then: 264 properties: 265 clocks: 266 maxItems: 9 267 clock-names: 268 items: 269 - const: cfg_noc 270 - const: core 271 - const: iface 272 - const: sleep 273 - const: mock_utmi 274 - const: noc_aggr 275 - const: noc_aggr_north 276 - const: noc_aggr_south 277 - const: noc_sys 278 279 - if: 280 properties: 281 compatible: 282 contains: 283 enum: 284 - qcom,sdm660-dwc3 285 then: 286 properties: 287 clocks: 288 minItems: 6 289 clock-names: 290 items: 291 - const: cfg_noc 292 - const: core 293 - const: iface 294 - const: sleep 295 - const: mock_utmi 296 - const: bus 297 298 - if: 299 properties: 300 compatible: 301 contains: 302 enum: 303 - qcom,sm6115-dwc3 304 - qcom,sm6125-dwc3 305 - qcom,sm8150-dwc3 306 - qcom,sm8250-dwc3 307 - qcom,sm8450-dwc3 308 - qcom,sm8550-dwc3 309 then: 310 properties: 311 clocks: 312 minItems: 6 313 clock-names: 314 items: 315 - const: cfg_noc 316 - const: core 317 - const: iface 318 - const: sleep 319 - const: mock_utmi 320 - const: xo 321 322 - if: 323 properties: 324 compatible: 325 contains: 326 enum: 327 - qcom,sm8350-dwc3 328 then: 329 properties: 330 clocks: 331 minItems: 5 332 maxItems: 6 333 clock-names: 334 minItems: 5 335 items: 336 - const: cfg_noc 337 - const: core 338 - const: iface 339 - const: sleep 340 - const: mock_utmi 341 - const: xo 342 343 - if: 344 properties: 345 compatible: 346 contains: 347 enum: 348 - qcom,ipq4019-dwc3 349 - qcom,ipq6018-dwc3 350 - qcom,ipq8064-dwc3 351 - qcom,ipq8074-dwc3 352 - qcom,msm8994-dwc3 353 - qcom,qcs404-dwc3 354 - qcom,sc7180-dwc3 355 - qcom,sdm670-dwc3 356 - qcom,sdm845-dwc3 357 - qcom,sdx55-dwc3 358 - qcom,sdx65-dwc3 359 - qcom,sm4250-dwc3 360 - qcom,sm6125-dwc3 361 - qcom,sm6350-dwc3 362 - qcom,sm8150-dwc3 363 - qcom,sm8250-dwc3 364 - qcom,sm8350-dwc3 365 - qcom,sm8450-dwc3 366 - qcom,sm8550-dwc3 367 then: 368 properties: 369 interrupts: 370 items: 371 - description: The interrupt that is asserted 372 when a wakeup event is received on USB2 bus. 373 - description: The interrupt that is asserted 374 when a wakeup event is received on USB3 bus. 375 - description: Wakeup event on DM line. 376 - description: Wakeup event on DP line. 377 interrupt-names: 378 items: 379 - const: hs_phy_irq 380 - const: ss_phy_irq 381 - const: dm_hs_phy_irq 382 - const: dp_hs_phy_irq 383 384 - if: 385 properties: 386 compatible: 387 contains: 388 enum: 389 - qcom,msm8953-dwc3 390 - qcom,msm8996-dwc3 391 - qcom,msm8998-dwc3 392 - qcom,sm6115-dwc3 393 then: 394 properties: 395 interrupts: 396 maxItems: 2 397 interrupt-names: 398 items: 399 - const: hs_phy_irq 400 - const: ss_phy_irq 401 402 - if: 403 properties: 404 compatible: 405 contains: 406 enum: 407 - qcom,sdm660-dwc3 408 then: 409 properties: 410 interrupts: 411 minItems: 1 412 maxItems: 2 413 interrupt-names: 414 minItems: 1 415 items: 416 - const: hs_phy_irq 417 - const: ss_phy_irq 418 419 - if: 420 properties: 421 compatible: 422 contains: 423 enum: 424 - qcom,sc7280-dwc3 425 then: 426 properties: 427 interrupts: 428 minItems: 3 429 maxItems: 4 430 interrupt-names: 431 minItems: 3 432 items: 433 - const: hs_phy_irq 434 - const: dp_hs_phy_irq 435 - const: dm_hs_phy_irq 436 - const: ss_phy_irq 437 438 - if: 439 properties: 440 compatible: 441 contains: 442 enum: 443 - qcom,sc8280xp-dwc3 444 then: 445 properties: 446 interrupts: 447 maxItems: 4 448 interrupt-names: 449 items: 450 - const: pwr_event 451 - const: dp_hs_phy_irq 452 - const: dm_hs_phy_irq 453 - const: ss_phy_irq 454 455additionalProperties: false 456 457examples: 458 - | 459 #include <dt-bindings/clock/qcom,gcc-sdm845.h> 460 #include <dt-bindings/interrupt-controller/arm-gic.h> 461 #include <dt-bindings/interrupt-controller/irq.h> 462 soc { 463 #address-cells = <2>; 464 #size-cells = <2>; 465 466 usb@a6f8800 { 467 compatible = "qcom,sdm845-dwc3", "qcom,dwc3"; 468 reg = <0 0x0a6f8800 0 0x400>; 469 470 #address-cells = <2>; 471 #size-cells = <2>; 472 ranges; 473 clocks = <&gcc GCC_CFG_NOC_USB3_PRIM_AXI_CLK>, 474 <&gcc GCC_USB30_PRIM_MASTER_CLK>, 475 <&gcc GCC_AGGRE_USB3_PRIM_AXI_CLK>, 476 <&gcc GCC_USB30_PRIM_SLEEP_CLK>, 477 <&gcc GCC_USB30_PRIM_MOCK_UTMI_CLK>; 478 clock-names = "cfg_noc", 479 "core", 480 "iface", 481 "sleep", 482 "mock_utmi"; 483 484 assigned-clocks = <&gcc GCC_USB30_PRIM_MOCK_UTMI_CLK>, 485 <&gcc GCC_USB30_PRIM_MASTER_CLK>; 486 assigned-clock-rates = <19200000>, <150000000>; 487 488 interrupts = <GIC_SPI 131 IRQ_TYPE_LEVEL_HIGH>, 489 <GIC_SPI 486 IRQ_TYPE_LEVEL_HIGH>, 490 <GIC_SPI 488 IRQ_TYPE_LEVEL_HIGH>, 491 <GIC_SPI 489 IRQ_TYPE_LEVEL_HIGH>; 492 interrupt-names = "hs_phy_irq", "ss_phy_irq", 493 "dm_hs_phy_irq", "dp_hs_phy_irq"; 494 495 power-domains = <&gcc USB30_PRIM_GDSC>; 496 497 resets = <&gcc GCC_USB30_PRIM_BCR>; 498 499 usb@a600000 { 500 compatible = "snps,dwc3"; 501 reg = <0 0x0a600000 0 0xcd00>; 502 interrupts = <GIC_SPI 133 IRQ_TYPE_LEVEL_HIGH>; 503 iommus = <&apps_smmu 0x740 0>; 504 snps,dis_u2_susphy_quirk; 505 snps,dis_enblslpm_quirk; 506 phys = <&usb_1_hsphy>, <&usb_1_ssphy>; 507 phy-names = "usb2-phy", "usb3-phy"; 508 }; 509 }; 510 }; 511