18c2ecf20Sopenharmony_ci# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
28c2ecf20Sopenharmony_ci%YAML 1.2
38c2ecf20Sopenharmony_ci---
48c2ecf20Sopenharmony_ci$id: http://devicetree.org/schemas/usb/qcom,dwc3.yaml#
58c2ecf20Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
68c2ecf20Sopenharmony_ci
78c2ecf20Sopenharmony_cititle: Qualcomm SuperSpeed DWC3 USB SoC controller
88c2ecf20Sopenharmony_ci
98c2ecf20Sopenharmony_cimaintainers:
108c2ecf20Sopenharmony_ci  - Manu Gautam <mgautam@codeaurora.org>
118c2ecf20Sopenharmony_ci
128c2ecf20Sopenharmony_ciproperties:
138c2ecf20Sopenharmony_ci  compatible:
148c2ecf20Sopenharmony_ci    items:
158c2ecf20Sopenharmony_ci      - enum:
168c2ecf20Sopenharmony_ci          - qcom,msm8996-dwc3
178c2ecf20Sopenharmony_ci          - qcom,msm8998-dwc3
188c2ecf20Sopenharmony_ci          - qcom,sc7180-dwc3
198c2ecf20Sopenharmony_ci          - qcom,sdm845-dwc3
208c2ecf20Sopenharmony_ci      - const: qcom,dwc3
218c2ecf20Sopenharmony_ci
228c2ecf20Sopenharmony_ci  reg:
238c2ecf20Sopenharmony_ci    description: Offset and length of register set for QSCRATCH wrapper
248c2ecf20Sopenharmony_ci    maxItems: 1
258c2ecf20Sopenharmony_ci
268c2ecf20Sopenharmony_ci  "#address-cells":
278c2ecf20Sopenharmony_ci    enum: [ 1, 2 ]
288c2ecf20Sopenharmony_ci
298c2ecf20Sopenharmony_ci  "#size-cells":
308c2ecf20Sopenharmony_ci    enum: [ 1, 2 ]
318c2ecf20Sopenharmony_ci
328c2ecf20Sopenharmony_ci  ranges: true
338c2ecf20Sopenharmony_ci
348c2ecf20Sopenharmony_ci  power-domains:
358c2ecf20Sopenharmony_ci    description: specifies a phandle to PM domain provider node
368c2ecf20Sopenharmony_ci    maxItems: 1
378c2ecf20Sopenharmony_ci
388c2ecf20Sopenharmony_ci  clocks:
398c2ecf20Sopenharmony_ci    description:
408c2ecf20Sopenharmony_ci      A list of phandle and clock-specifier pairs for the clocks
418c2ecf20Sopenharmony_ci      listed in clock-names.
428c2ecf20Sopenharmony_ci    items:
438c2ecf20Sopenharmony_ci      - description: System Config NOC clock.
448c2ecf20Sopenharmony_ci      - description: Master/Core clock, has to be >= 125 MHz
458c2ecf20Sopenharmony_ci          for SS operation and >= 60MHz for HS operation.
468c2ecf20Sopenharmony_ci      - description: System bus AXI clock.
478c2ecf20Sopenharmony_ci      - description: Mock utmi clock needed for ITP/SOF generation
488c2ecf20Sopenharmony_ci          in host mode. Its frequency should be 19.2MHz.
498c2ecf20Sopenharmony_ci      - description: Sleep clock, used for wakeup when
508c2ecf20Sopenharmony_ci          USB3 core goes into low power mode (U3).
518c2ecf20Sopenharmony_ci
528c2ecf20Sopenharmony_ci  clock-names:
538c2ecf20Sopenharmony_ci    items:
548c2ecf20Sopenharmony_ci      - const: cfg_noc
558c2ecf20Sopenharmony_ci      - const: core
568c2ecf20Sopenharmony_ci      - const: iface
578c2ecf20Sopenharmony_ci      - const: mock_utmi
588c2ecf20Sopenharmony_ci      - const: sleep
598c2ecf20Sopenharmony_ci
608c2ecf20Sopenharmony_ci  assigned-clocks:
618c2ecf20Sopenharmony_ci    items:
628c2ecf20Sopenharmony_ci      - description: Phandle and clock specifier of MOCK_UTMI_CLK.
638c2ecf20Sopenharmony_ci      - description: Phandle and clock specifoer of MASTER_CLK.
648c2ecf20Sopenharmony_ci
658c2ecf20Sopenharmony_ci  assigned-clock-rates:
668c2ecf20Sopenharmony_ci    items:
678c2ecf20Sopenharmony_ci      - description: Must be 19.2MHz (19200000).
688c2ecf20Sopenharmony_ci      - description: Must be >= 60 MHz in HS mode, >= 125 MHz in SS mode.
698c2ecf20Sopenharmony_ci  resets:
708c2ecf20Sopenharmony_ci    maxItems: 1
718c2ecf20Sopenharmony_ci
728c2ecf20Sopenharmony_ci  interconnects:
738c2ecf20Sopenharmony_ci    maxItems: 2
748c2ecf20Sopenharmony_ci
758c2ecf20Sopenharmony_ci  interconnect-names:
768c2ecf20Sopenharmony_ci    items:
778c2ecf20Sopenharmony_ci      - const: usb-ddr
788c2ecf20Sopenharmony_ci      - const: apps-usb
798c2ecf20Sopenharmony_ci
808c2ecf20Sopenharmony_ci  interrupts:
818c2ecf20Sopenharmony_ci    items:
828c2ecf20Sopenharmony_ci      - description: The interrupt that is asserted
838c2ecf20Sopenharmony_ci          when a wakeup event is received on USB2 bus.
848c2ecf20Sopenharmony_ci      - description: The interrupt that is asserted
858c2ecf20Sopenharmony_ci          when a wakeup event is received on USB3 bus.
868c2ecf20Sopenharmony_ci      - description: Wakeup event on DM line.
878c2ecf20Sopenharmony_ci      - description: Wakeup event on DP line.
888c2ecf20Sopenharmony_ci
898c2ecf20Sopenharmony_ci  interrupt-names:
908c2ecf20Sopenharmony_ci    items:
918c2ecf20Sopenharmony_ci      - const: hs_phy_irq
928c2ecf20Sopenharmony_ci      - const: ss_phy_irq
938c2ecf20Sopenharmony_ci      - const: dm_hs_phy_irq
948c2ecf20Sopenharmony_ci      - const: dp_hs_phy_irq
958c2ecf20Sopenharmony_ci
968c2ecf20Sopenharmony_ci  qcom,select-utmi-as-pipe-clk:
978c2ecf20Sopenharmony_ci    description:
988c2ecf20Sopenharmony_ci      If present, disable USB3 pipe_clk requirement.
998c2ecf20Sopenharmony_ci      Used when dwc3 operates without SSPHY and only
1008c2ecf20Sopenharmony_ci      HS/FS/LS modes are supported.
1018c2ecf20Sopenharmony_ci    type: boolean
1028c2ecf20Sopenharmony_ci
1038c2ecf20Sopenharmony_ci# Required child node:
1048c2ecf20Sopenharmony_ci
1058c2ecf20Sopenharmony_cipatternProperties:
1068c2ecf20Sopenharmony_ci  "^dwc3@[0-9a-f]+$":
1078c2ecf20Sopenharmony_ci    type: object
1088c2ecf20Sopenharmony_ci    description:
1098c2ecf20Sopenharmony_ci      A child node must exist to represent the core DWC3 IP block
1108c2ecf20Sopenharmony_ci      The content of the node is defined in dwc3.txt.
1118c2ecf20Sopenharmony_ci
1128c2ecf20Sopenharmony_cirequired:
1138c2ecf20Sopenharmony_ci  - compatible
1148c2ecf20Sopenharmony_ci  - reg
1158c2ecf20Sopenharmony_ci  - "#address-cells"
1168c2ecf20Sopenharmony_ci  - "#size-cells"
1178c2ecf20Sopenharmony_ci  - ranges
1188c2ecf20Sopenharmony_ci  - power-domains
1198c2ecf20Sopenharmony_ci  - clocks
1208c2ecf20Sopenharmony_ci  - clock-names
1218c2ecf20Sopenharmony_ci  - interrupts
1228c2ecf20Sopenharmony_ci  - interrupt-names
1238c2ecf20Sopenharmony_ci
1248c2ecf20Sopenharmony_ciadditionalProperties: false
1258c2ecf20Sopenharmony_ci
1268c2ecf20Sopenharmony_ciexamples:
1278c2ecf20Sopenharmony_ci  - |
1288c2ecf20Sopenharmony_ci    #include <dt-bindings/clock/qcom,gcc-sdm845.h>
1298c2ecf20Sopenharmony_ci    #include <dt-bindings/interrupt-controller/arm-gic.h>
1308c2ecf20Sopenharmony_ci    #include <dt-bindings/interrupt-controller/irq.h>
1318c2ecf20Sopenharmony_ci    soc {
1328c2ecf20Sopenharmony_ci        #address-cells = <2>;
1338c2ecf20Sopenharmony_ci        #size-cells = <2>;
1348c2ecf20Sopenharmony_ci
1358c2ecf20Sopenharmony_ci        usb@a6f8800 {
1368c2ecf20Sopenharmony_ci            compatible = "qcom,sdm845-dwc3", "qcom,dwc3";
1378c2ecf20Sopenharmony_ci            reg = <0 0x0a6f8800 0 0x400>;
1388c2ecf20Sopenharmony_ci
1398c2ecf20Sopenharmony_ci            #address-cells = <2>;
1408c2ecf20Sopenharmony_ci            #size-cells = <2>;
1418c2ecf20Sopenharmony_ci            ranges;
1428c2ecf20Sopenharmony_ci            clocks = <&gcc GCC_CFG_NOC_USB3_PRIM_AXI_CLK>,
1438c2ecf20Sopenharmony_ci                     <&gcc GCC_USB30_PRIM_MASTER_CLK>,
1448c2ecf20Sopenharmony_ci                     <&gcc GCC_AGGRE_USB3_PRIM_AXI_CLK>,
1458c2ecf20Sopenharmony_ci                     <&gcc GCC_USB30_PRIM_MOCK_UTMI_CLK>,
1468c2ecf20Sopenharmony_ci                     <&gcc GCC_USB30_PRIM_SLEEP_CLK>;
1478c2ecf20Sopenharmony_ci            clock-names = "cfg_noc", "core", "iface", "mock_utmi",
1488c2ecf20Sopenharmony_ci                      "sleep";
1498c2ecf20Sopenharmony_ci
1508c2ecf20Sopenharmony_ci            assigned-clocks = <&gcc GCC_USB30_PRIM_MOCK_UTMI_CLK>,
1518c2ecf20Sopenharmony_ci                          <&gcc GCC_USB30_PRIM_MASTER_CLK>;
1528c2ecf20Sopenharmony_ci            assigned-clock-rates = <19200000>, <150000000>;
1538c2ecf20Sopenharmony_ci
1548c2ecf20Sopenharmony_ci            interrupts = <GIC_SPI 131 IRQ_TYPE_LEVEL_HIGH>,
1558c2ecf20Sopenharmony_ci                         <GIC_SPI 486 IRQ_TYPE_LEVEL_HIGH>,
1568c2ecf20Sopenharmony_ci                         <GIC_SPI 488 IRQ_TYPE_LEVEL_HIGH>,
1578c2ecf20Sopenharmony_ci                         <GIC_SPI 489 IRQ_TYPE_LEVEL_HIGH>;
1588c2ecf20Sopenharmony_ci            interrupt-names = "hs_phy_irq", "ss_phy_irq",
1598c2ecf20Sopenharmony_ci                          "dm_hs_phy_irq", "dp_hs_phy_irq";
1608c2ecf20Sopenharmony_ci
1618c2ecf20Sopenharmony_ci            power-domains = <&gcc USB30_PRIM_GDSC>;
1628c2ecf20Sopenharmony_ci
1638c2ecf20Sopenharmony_ci            resets = <&gcc GCC_USB30_PRIM_BCR>;
1648c2ecf20Sopenharmony_ci
1658c2ecf20Sopenharmony_ci            dwc3@a600000 {
1668c2ecf20Sopenharmony_ci                compatible = "snps,dwc3";
1678c2ecf20Sopenharmony_ci                reg = <0 0x0a600000 0 0xcd00>;
1688c2ecf20Sopenharmony_ci                interrupts = <GIC_SPI 133 IRQ_TYPE_LEVEL_HIGH>;
1698c2ecf20Sopenharmony_ci                iommus = <&apps_smmu 0x740 0>;
1708c2ecf20Sopenharmony_ci                snps,dis_u2_susphy_quirk;
1718c2ecf20Sopenharmony_ci                snps,dis_enblslpm_quirk;
1728c2ecf20Sopenharmony_ci                phys = <&usb_1_hsphy>, <&usb_1_ssphy>;
1738c2ecf20Sopenharmony_ci                phy-names = "usb2-phy", "usb3-phy";
1748c2ecf20Sopenharmony_ci            };
1758c2ecf20Sopenharmony_ci        };
1768c2ecf20Sopenharmony_ci    };
177