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 <[email protected]> 11 12properties: 13 compatible: 14 items: 15 - enum: 16 - qcom,ipq4019-dwc3 17 - qcom,ipq5018-dwc3 18 - qcom,ipq5332-dwc3 19 - qcom,ipq5424-dwc3 20 - qcom,ipq6018-dwc3 21 - qcom,ipq8064-dwc3 22 - qcom,ipq8074-dwc3 23 - qcom,ipq9574-dwc3 24 - qcom,msm8953-dwc3 25 - qcom,msm8994-dwc3 26 - qcom,msm8996-dwc3 27 - qcom,msm8998-dwc3 28 - qcom,qcm2290-dwc3 29 - qcom,qcs404-dwc3 30 - qcom,qcs615-dwc3 31 - qcom,qcs8300-dwc3 32 - qcom,qdu1000-dwc3 33 - qcom,sa8775p-dwc3 34 - qcom,sar2130p-dwc3 35 - qcom,sc7180-dwc3 36 - qcom,sc7280-dwc3 37 - qcom,sc8180x-dwc3 38 - qcom,sc8180x-dwc3-mp 39 - qcom,sc8280xp-dwc3 40 - qcom,sc8280xp-dwc3-mp 41 - qcom,sdm660-dwc3 42 - qcom,sdm670-dwc3 43 - qcom,sdm845-dwc3 44 - qcom,sdx55-dwc3 45 - qcom,sdx65-dwc3 46 - qcom,sdx75-dwc3 47 - qcom,sm4250-dwc3 48 - qcom,sm6115-dwc3 49 - qcom,sm6125-dwc3 50 - qcom,sm6350-dwc3 51 - qcom,sm6375-dwc3 52 - qcom,sm8150-dwc3 53 - qcom,sm8250-dwc3 54 - qcom,sm8350-dwc3 55 - qcom,sm8450-dwc3 56 - qcom,sm8550-dwc3 57 - qcom,sm8650-dwc3 58 - qcom,x1e80100-dwc3 59 - qcom,x1e80100-dwc3-mp 60 - const: qcom,dwc3 61 62 reg: 63 description: Offset and length of register set for QSCRATCH wrapper 64 maxItems: 1 65 66 "#address-cells": 67 enum: [ 1, 2 ] 68 69 "#size-cells": 70 enum: [ 1, 2 ] 71 72 ranges: true 73 74 power-domains: 75 description: specifies a phandle to PM domain provider node 76 maxItems: 1 77 78 required-opps: 79 maxItems: 1 80 81 clocks: 82 description: | 83 Several clocks are used, depending on the variant. Typical ones are:: 84 - cfg_noc:: System Config NOC clock. 85 - core:: Master/Core clock, has to be >= 125 MHz for SS operation and >= 86 60MHz for HS operation. 87 - iface:: System bus AXI clock. 88 - sleep:: Sleep clock, used for wakeup when USB3 core goes into low 89 power mode (U3). 90 - mock_utmi:: Mock utmi clock needed for ITP/SOF generation in host 91 mode. Its frequency should be 19.2MHz. 92 minItems: 1 93 maxItems: 9 94 95 clock-names: 96 minItems: 1 97 maxItems: 9 98 99 resets: 100 maxItems: 1 101 102 interconnects: 103 maxItems: 2 104 105 interconnect-names: 106 items: 107 - const: usb-ddr 108 - const: apps-usb 109 110 interrupts: 111 description: | 112 Different types of interrupts are used based on HS PHY used on target: 113 - pwr_event: Used for wakeup based on other power events. 114 - hs_phy_irq: Apart from DP/DM/QUSB2 PHY interrupts, there is 115 hs_phy_irq which is not triggered by default and its 116 functionality is mutually exclusive to that of 117 {dp/dm}_hs_phy_irq and qusb2_phy_irq. 118 - qusb2_phy: SoCs with QUSB2 PHY do not have separate DP/DM IRQs and 119 expose only a single IRQ whose behavior can be modified 120 by the QUSB2PHY_INTR_CTRL register. The required DPSE/ 121 DMSE configuration is done in QUSB2PHY_INTR_CTRL register 122 of PHY address space. 123 - {dp/dm}_hs_phy_irq: These IRQ's directly reflect changes on the DP/ 124 DM pads of the SoC. These are used for wakeup 125 only on SoCs with non-QUSB2 targets with 126 exception of SDM670/SDM845/SM6350. 127 - ss_phy_irq: Used for remote wakeup in Super Speed mode of operation. 128 minItems: 2 129 maxItems: 18 130 131 interrupt-names: 132 minItems: 2 133 maxItems: 18 134 135 qcom,select-utmi-as-pipe-clk: 136 description: 137 If present, disable USB3 pipe_clk requirement. 138 Used when dwc3 operates without SSPHY and only 139 HS/FS/LS modes are supported. 140 type: boolean 141 142 wakeup-source: true 143 144# Required child node: 145 146patternProperties: 147 "^usb@[0-9a-f]+$": 148 $ref: snps,dwc3.yaml# 149 unevaluatedProperties: false 150 151 properties: 152 wakeup-source: false 153 154required: 155 - compatible 156 - reg 157 - "#address-cells" 158 - "#size-cells" 159 - ranges 160 - clocks 161 - clock-names 162 - interrupts 163 - interrupt-names 164 165allOf: 166 - if: 167 properties: 168 compatible: 169 contains: 170 enum: 171 - qcom,ipq4019-dwc3 172 - qcom,ipq5332-dwc3 173 then: 174 properties: 175 clocks: 176 maxItems: 3 177 clock-names: 178 items: 179 - const: core 180 - const: sleep 181 - const: mock_utmi 182 183 - if: 184 properties: 185 compatible: 186 contains: 187 enum: 188 - qcom,ipq8064-dwc3 189 then: 190 properties: 191 clocks: 192 items: 193 - description: Master/Core clock, has to be >= 125 MHz 194 for SS operation and >= 60MHz for HS operation. 195 clock-names: 196 items: 197 - const: core 198 199 - if: 200 properties: 201 compatible: 202 contains: 203 enum: 204 - qcom,ipq9574-dwc3 205 - qcom,msm8953-dwc3 206 - qcom,msm8996-dwc3 207 - qcom,msm8998-dwc3 208 - qcom,qcs8300-dwc3 209 - qcom,sa8775p-dwc3 210 - qcom,sc7180-dwc3 211 - qcom,sc7280-dwc3 212 - qcom,sdm670-dwc3 213 - qcom,sdm845-dwc3 214 - qcom,sdx55-dwc3 215 - qcom,sdx65-dwc3 216 - qcom,sdx75-dwc3 217 - qcom,sm6350-dwc3 218 then: 219 properties: 220 clocks: 221 maxItems: 5 222 clock-names: 223 items: 224 - const: cfg_noc 225 - const: core 226 - const: iface 227 - const: sleep 228 - const: mock_utmi 229 230 - if: 231 properties: 232 compatible: 233 contains: 234 enum: 235 - qcom,ipq6018-dwc3 236 then: 237 properties: 238 clocks: 239 minItems: 3 240 maxItems: 4 241 clock-names: 242 oneOf: 243 - items: 244 - const: core 245 - const: sleep 246 - const: mock_utmi 247 - items: 248 - const: cfg_noc 249 - const: core 250 - const: sleep 251 - const: mock_utmi 252 253 - if: 254 properties: 255 compatible: 256 contains: 257 enum: 258 - qcom,ipq8074-dwc3 259 - qcom,qdu1000-dwc3 260 then: 261 properties: 262 clocks: 263 maxItems: 4 264 clock-names: 265 items: 266 - const: cfg_noc 267 - const: core 268 - const: sleep 269 - const: mock_utmi 270 271 - if: 272 properties: 273 compatible: 274 contains: 275 enum: 276 - qcom,ipq5018-dwc3 277 - qcom,msm8994-dwc3 278 - qcom,qcs404-dwc3 279 then: 280 properties: 281 clocks: 282 maxItems: 4 283 clock-names: 284 items: 285 - const: core 286 - const: iface 287 - const: sleep 288 - const: mock_utmi 289 290 - if: 291 properties: 292 compatible: 293 contains: 294 enum: 295 - qcom,sc8280xp-dwc3 296 - qcom,sc8280xp-dwc3-mp 297 - qcom,x1e80100-dwc3 298 - qcom,x1e80100-dwc3-mp 299 then: 300 properties: 301 clocks: 302 maxItems: 9 303 clock-names: 304 items: 305 - const: cfg_noc 306 - const: core 307 - const: iface 308 - const: sleep 309 - const: mock_utmi 310 - const: noc_aggr 311 - const: noc_aggr_north 312 - const: noc_aggr_south 313 - const: noc_sys 314 315 - if: 316 properties: 317 compatible: 318 contains: 319 enum: 320 - qcom,sdm660-dwc3 321 then: 322 properties: 323 clocks: 324 minItems: 4 325 maxItems: 5 326 clock-names: 327 oneOf: 328 - items: 329 - const: cfg_noc 330 - const: core 331 - const: iface 332 - const: sleep 333 - const: mock_utmi 334 - items: 335 - const: cfg_noc 336 - const: core 337 - const: sleep 338 - const: mock_utmi 339 340 - if: 341 properties: 342 compatible: 343 contains: 344 enum: 345 - qcom,qcm2290-dwc3 346 - qcom,qcs615-dwc3 347 - qcom,sar2130p-dwc3 348 - qcom,sc8180x-dwc3 349 - qcom,sc8180x-dwc3-mp 350 - qcom,sm6115-dwc3 351 - qcom,sm6125-dwc3 352 - qcom,sm8150-dwc3 353 - qcom,sm8250-dwc3 354 - qcom,sm8450-dwc3 355 - qcom,sm8550-dwc3 356 - qcom,sm8650-dwc3 357 then: 358 properties: 359 clocks: 360 minItems: 6 361 clock-names: 362 items: 363 - const: cfg_noc 364 - const: core 365 - const: iface 366 - const: sleep 367 - const: mock_utmi 368 - const: xo 369 370 - if: 371 properties: 372 compatible: 373 contains: 374 enum: 375 - qcom,sm8350-dwc3 376 then: 377 properties: 378 clocks: 379 minItems: 5 380 maxItems: 6 381 clock-names: 382 minItems: 5 383 items: 384 - const: cfg_noc 385 - const: core 386 - const: iface 387 - const: sleep 388 - const: mock_utmi 389 - const: xo 390 391 - if: 392 properties: 393 compatible: 394 contains: 395 enum: 396 - qcom,ipq5018-dwc3 397 - qcom,ipq6018-dwc3 398 - qcom,ipq8074-dwc3 399 - qcom,msm8953-dwc3 400 - qcom,msm8998-dwc3 401 then: 402 properties: 403 interrupts: 404 minItems: 2 405 maxItems: 3 406 interrupt-names: 407 items: 408 - const: pwr_event 409 - const: qusb2_phy 410 - const: ss_phy_irq 411 412 - if: 413 properties: 414 compatible: 415 contains: 416 enum: 417 - qcom,msm8996-dwc3 418 - qcom,qcs404-dwc3 419 - qcom,sdm660-dwc3 420 - qcom,sm6115-dwc3 421 - qcom,sm6125-dwc3 422 then: 423 properties: 424 interrupts: 425 minItems: 3 426 maxItems: 4 427 interrupt-names: 428 items: 429 - const: pwr_event 430 - const: qusb2_phy 431 - const: hs_phy_irq 432 - const: ss_phy_irq 433 434 - if: 435 properties: 436 compatible: 437 contains: 438 enum: 439 - qcom,ipq5332-dwc3 440 then: 441 properties: 442 interrupts: 443 maxItems: 3 444 interrupt-names: 445 items: 446 - const: pwr_event 447 - const: dp_hs_phy_irq 448 - const: dm_hs_phy_irq 449 450 - if: 451 properties: 452 compatible: 453 contains: 454 enum: 455 - qcom,x1e80100-dwc3 456 then: 457 properties: 458 interrupts: 459 minItems: 3 460 maxItems: 4 461 interrupt-names: 462 minItems: 3 463 items: 464 - const: pwr_event 465 - const: dp_hs_phy_irq 466 - const: dm_hs_phy_irq 467 - const: ss_phy_irq 468 469 - if: 470 properties: 471 compatible: 472 contains: 473 enum: 474 - qcom,ipq4019-dwc3 475 - qcom,ipq8064-dwc3 476 - qcom,msm8994-dwc3 477 - qcom,qcs615-dwc3 478 - qcom,qcs8300-dwc3 479 - qcom,qdu1000-dwc3 480 - qcom,sa8775p-dwc3 481 - qcom,sc7180-dwc3 482 - qcom,sc7280-dwc3 483 - qcom,sc8180x-dwc3 484 - qcom,sc8280xp-dwc3 485 - qcom,sdm670-dwc3 486 - qcom,sdm845-dwc3 487 - qcom,sdx55-dwc3 488 - qcom,sdx65-dwc3 489 - qcom,sdx75-dwc3 490 - qcom,sm4250-dwc3 491 - qcom,sm6350-dwc3 492 - qcom,sm8150-dwc3 493 - qcom,sm8250-dwc3 494 - qcom,sm8350-dwc3 495 - qcom,sm8450-dwc3 496 - qcom,sm8550-dwc3 497 - qcom,sm8650-dwc3 498 then: 499 properties: 500 interrupts: 501 minItems: 4 502 maxItems: 5 503 interrupt-names: 504 minItems: 4 505 items: 506 - const: pwr_event 507 - const: hs_phy_irq 508 - const: dp_hs_phy_irq 509 - const: dm_hs_phy_irq 510 - const: ss_phy_irq 511 512 - if: 513 properties: 514 compatible: 515 contains: 516 enum: 517 - qcom,sc8180x-dwc3-mp 518 - qcom,x1e80100-dwc3-mp 519 then: 520 properties: 521 interrupts: 522 minItems: 10 523 maxItems: 10 524 interrupt-names: 525 items: 526 - const: pwr_event_1 527 - const: pwr_event_2 528 - const: hs_phy_1 529 - const: hs_phy_2 530 - const: dp_hs_phy_1 531 - const: dm_hs_phy_1 532 - const: dp_hs_phy_2 533 - const: dm_hs_phy_2 534 - const: ss_phy_1 535 - const: ss_phy_2 536 537 - if: 538 properties: 539 compatible: 540 contains: 541 enum: 542 - qcom,sc8280xp-dwc3-mp 543 then: 544 properties: 545 interrupts: 546 minItems: 18 547 maxItems: 18 548 interrupt-names: 549 items: 550 - const: pwr_event_1 551 - const: pwr_event_2 552 - const: pwr_event_3 553 - const: pwr_event_4 554 - const: hs_phy_1 555 - const: hs_phy_2 556 - const: hs_phy_3 557 - const: hs_phy_4 558 - const: dp_hs_phy_1 559 - const: dm_hs_phy_1 560 - const: dp_hs_phy_2 561 - const: dm_hs_phy_2 562 - const: dp_hs_phy_3 563 - const: dm_hs_phy_3 564 - const: dp_hs_phy_4 565 - const: dm_hs_phy_4 566 - const: ss_phy_1 567 - const: ss_phy_2 568 569additionalProperties: false 570 571examples: 572 - | 573 #include <dt-bindings/clock/qcom,gcc-sdm845.h> 574 #include <dt-bindings/interrupt-controller/arm-gic.h> 575 #include <dt-bindings/interrupt-controller/irq.h> 576 soc { 577 #address-cells = <2>; 578 #size-cells = <2>; 579 580 usb@a6f8800 { 581 compatible = "qcom,sdm845-dwc3", "qcom,dwc3"; 582 reg = <0 0x0a6f8800 0 0x400>; 583 584 #address-cells = <2>; 585 #size-cells = <2>; 586 ranges; 587 clocks = <&gcc GCC_CFG_NOC_USB3_PRIM_AXI_CLK>, 588 <&gcc GCC_USB30_PRIM_MASTER_CLK>, 589 <&gcc GCC_AGGRE_USB3_PRIM_AXI_CLK>, 590 <&gcc GCC_USB30_PRIM_SLEEP_CLK>, 591 <&gcc GCC_USB30_PRIM_MOCK_UTMI_CLK>; 592 clock-names = "cfg_noc", 593 "core", 594 "iface", 595 "sleep", 596 "mock_utmi"; 597 598 assigned-clocks = <&gcc GCC_USB30_PRIM_MOCK_UTMI_CLK>, 599 <&gcc GCC_USB30_PRIM_MASTER_CLK>; 600 assigned-clock-rates = <19200000>, <150000000>; 601 602 interrupts = <GIC_SPI 130 IRQ_TYPE_LEVEL_HIGH>, 603 <GIC_SPI 131 IRQ_TYPE_LEVEL_HIGH>, 604 <GIC_SPI 489 IRQ_TYPE_EDGE_BOTH>, 605 <GIC_SPI 488 IRQ_TYPE_EDGE_BOTH>, 606 <GIC_SPI 486 IRQ_TYPE_LEVEL_HIGH>; 607 interrupt-names = "pwr_event", "hs_phy_irq", 608 "dp_hs_phy_irq", "dm_hs_phy_irq", "ss_phy_irq"; 609 610 power-domains = <&gcc USB30_PRIM_GDSC>; 611 612 resets = <&gcc GCC_USB30_PRIM_BCR>; 613 614 usb@a600000 { 615 compatible = "snps,dwc3"; 616 reg = <0 0x0a600000 0 0xcd00>; 617 interrupts = <GIC_SPI 133 IRQ_TYPE_LEVEL_HIGH>; 618 iommus = <&apps_smmu 0x740 0>; 619 snps,dis_u2_susphy_quirk; 620 snps,dis_enblslpm_quirk; 621 phys = <&usb_1_hsphy>, <&usb_1_ssphy>; 622 phy-names = "usb2-phy", "usb3-phy"; 623 }; 624 }; 625 }; 626