| Qualcomm SuperSpeed DWC3 USB SoC controller |
| |
| Required properties: |
| - compatible: Compatible list, contains |
| "qcom,dwc3" |
| "qcom,msm8996-dwc3" for msm8996 SOC. |
| "qcom,sdm845-dwc3" for sdm845 SOC. |
| - reg: Offset and length of register set for QSCRATCH wrapper |
| - power-domains: specifies a phandle to PM domain provider node |
| - clocks: A list of phandle + clock-specifier pairs for the |
| clocks listed in clock-names |
| - clock-names: Should contain the following: |
| "core" Master/Core clock, have to be >= 125 MHz for SS |
| operation and >= 60MHz for HS operation |
| "mock_utmi" Mock utmi clock needed for ITP/SOF generation in |
| host mode. Its frequency should be 19.2MHz. |
| "sleep" Sleep clock, used for wakeup when USB3 core goes |
| into low power mode (U3). |
| |
| Optional clocks: |
| "iface" System bus AXI clock. |
| Not present on "qcom,msm8996-dwc3" compatible. |
| "cfg_noc" System Config NOC clock. |
| Not present on "qcom,msm8996-dwc3" compatible. |
| - assigned-clocks: Should be: |
| MOCK_UTMI_CLK |
| MASTER_CLK |
| - assigned-clock-rates: Should be: |
| 19.2Mhz (192000000) for MOCK_UTMI_CLK |
| >=125Mhz (125000000) for MASTER_CLK in SS mode |
| >=60Mhz (60000000) for MASTER_CLK in HS mode |
| |
| Optional properties: |
| - resets: Phandle to reset control that resets core and wrapper. |
| - interrupts: specifies interrupts from controller wrapper used |
| to wakeup from low power/susepnd state. Must contain |
| one or more entry for interrupt-names property |
| - interrupt-names: Must include the following entries: |
| - "hs_phy_irq": The interrupt that is asserted when a |
| wakeup event is received on USB2 bus |
| - "ss_phy_irq": The interrupt that is asserted when a |
| wakeup event is received on USB3 bus |
| - "dm_hs_phy_irq" and "dp_hs_phy_irq": Separate |
| interrupts for any wakeup event on DM and DP lines |
| - qcom,select-utmi-as-pipe-clk: if present, disable USB3 pipe_clk requirement. |
| Used when dwc3 operates without SSPHY and only |
| HS/FS/LS modes are supported. |
| |
| Required child node: |
| A child node must exist to represent the core DWC3 IP block. The name of |
| the node is not important. The content of the node is defined in dwc3.txt. |
| |
| Phy documentation is provided in the following places: |
| Documentation/devicetree/bindings/phy/qcom-qmp-phy.txt - USB3 QMP PHY |
| Documentation/devicetree/bindings/phy/qcom-qusb2-phy.txt - USB2 QUSB2 PHY |
| |
| Example device nodes: |
| |
| hs_phy: phy@100f8800 { |
| compatible = "qcom,qusb2-v2-phy"; |
| ... |
| }; |
| |
| ss_phy: phy@100f8830 { |
| compatible = "qcom,qmp-v3-usb3-phy"; |
| ... |
| }; |
| |
| usb3_0: usb30@a6f8800 { |
| compatible = "qcom,dwc3"; |
| reg = <0xa6f8800 0x400>; |
| #address-cells = <1>; |
| #size-cells = <1>; |
| ranges; |
| |
| interrupts = <0 131 0>, <0 486 0>, <0 488 0>, <0 489 0>; |
| interrupt-names = "hs_phy_irq", "ss_phy_irq", |
| "dm_hs_phy_irq", "dp_hs_phy_irq"; |
| |
| clocks = <&gcc GCC_USB30_PRIM_MASTER_CLK>, |
| <&gcc GCC_USB30_PRIM_MOCK_UTMI_CLK>, |
| <&gcc GCC_USB30_PRIM_SLEEP_CLK>; |
| clock-names = "core", "mock_utmi", "sleep"; |
| |
| assigned-clocks = <&gcc GCC_USB30_PRIM_MOCK_UTMI_CLK>, |
| <&gcc GCC_USB30_PRIM_MASTER_CLK>; |
| assigned-clock-rates = <19200000>, <133000000>; |
| |
| resets = <&gcc GCC_USB30_PRIM_BCR>; |
| reset-names = "core_reset"; |
| power-domains = <&gcc USB30_PRIM_GDSC>; |
| qcom,select-utmi-as-pipe-clk; |
| |
| dwc3@10000000 { |
| compatible = "snps,dwc3"; |
| reg = <0x10000000 0xcd00>; |
| interrupts = <0 205 0x4>; |
| phys = <&hs_phy>, <&ss_phy>; |
| phy-names = "usb2-phy", "usb3-phy"; |
| dr_mode = "host"; |
| }; |
| }; |
| |