162306a36Sopenharmony_ci# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
262306a36Sopenharmony_ci%YAML 1.2
362306a36Sopenharmony_ci---
462306a36Sopenharmony_ci$id: http://devicetree.org/schemas/usb/dwc3-xilinx.yaml#
562306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml#
662306a36Sopenharmony_ci
762306a36Sopenharmony_cititle: Xilinx SuperSpeed DWC3 USB SoC controller
862306a36Sopenharmony_ci
962306a36Sopenharmony_cimaintainers:
1062306a36Sopenharmony_ci  - Piyush Mehta <piyush.mehta@amd.com>
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_ciproperties:
1362306a36Sopenharmony_ci  compatible:
1462306a36Sopenharmony_ci    items:
1562306a36Sopenharmony_ci      - enum:
1662306a36Sopenharmony_ci          - xlnx,zynqmp-dwc3
1762306a36Sopenharmony_ci          - xlnx,versal-dwc3
1862306a36Sopenharmony_ci  reg:
1962306a36Sopenharmony_ci    maxItems: 1
2062306a36Sopenharmony_ci
2162306a36Sopenharmony_ci  "#address-cells":
2262306a36Sopenharmony_ci    enum: [ 1, 2 ]
2362306a36Sopenharmony_ci
2462306a36Sopenharmony_ci  "#size-cells":
2562306a36Sopenharmony_ci    enum: [ 1, 2 ]
2662306a36Sopenharmony_ci
2762306a36Sopenharmony_ci  ranges: true
2862306a36Sopenharmony_ci
2962306a36Sopenharmony_ci  power-domains:
3062306a36Sopenharmony_ci    description: specifies a phandle to PM domain provider node
3162306a36Sopenharmony_ci    maxItems: 1
3262306a36Sopenharmony_ci
3362306a36Sopenharmony_ci  clocks:
3462306a36Sopenharmony_ci    description:
3562306a36Sopenharmony_ci      A list of phandle and clock-specifier pairs for the clocks
3662306a36Sopenharmony_ci      listed in clock-names.
3762306a36Sopenharmony_ci    items:
3862306a36Sopenharmony_ci      - description: Master/Core clock, has to be >= 125 MHz
3962306a36Sopenharmony_ci          for SS operation and >= 60MHz for HS operation.
4062306a36Sopenharmony_ci      - description: Clock source to core during PHY power down.
4162306a36Sopenharmony_ci
4262306a36Sopenharmony_ci  clock-names:
4362306a36Sopenharmony_ci    items:
4462306a36Sopenharmony_ci      - const: bus_clk
4562306a36Sopenharmony_ci      - const: ref_clk
4662306a36Sopenharmony_ci
4762306a36Sopenharmony_ci  resets:
4862306a36Sopenharmony_ci    description:
4962306a36Sopenharmony_ci      A list of phandles for resets listed in reset-names.
5062306a36Sopenharmony_ci
5162306a36Sopenharmony_ci    items:
5262306a36Sopenharmony_ci      - description: USB core reset
5362306a36Sopenharmony_ci      - description: USB hibernation reset
5462306a36Sopenharmony_ci      - description: USB APB reset
5562306a36Sopenharmony_ci
5662306a36Sopenharmony_ci  reset-names:
5762306a36Sopenharmony_ci    items:
5862306a36Sopenharmony_ci      - const: usb_crst
5962306a36Sopenharmony_ci      - const: usb_hibrst
6062306a36Sopenharmony_ci      - const: usb_apbrst
6162306a36Sopenharmony_ci
6262306a36Sopenharmony_ci  phys:
6362306a36Sopenharmony_ci    minItems: 1
6462306a36Sopenharmony_ci    maxItems: 2
6562306a36Sopenharmony_ci
6662306a36Sopenharmony_ci  phy-names:
6762306a36Sopenharmony_ci    minItems: 1
6862306a36Sopenharmony_ci    maxItems: 2
6962306a36Sopenharmony_ci    items:
7062306a36Sopenharmony_ci      enum:
7162306a36Sopenharmony_ci        - usb2-phy
7262306a36Sopenharmony_ci        - usb3-phy
7362306a36Sopenharmony_ci
7462306a36Sopenharmony_ci  reset-gpios:
7562306a36Sopenharmony_ci    description: GPIO used for the reset ulpi-phy
7662306a36Sopenharmony_ci    maxItems: 1
7762306a36Sopenharmony_ci
7862306a36Sopenharmony_ci# Required child node:
7962306a36Sopenharmony_ci
8062306a36Sopenharmony_cipatternProperties:
8162306a36Sopenharmony_ci  "^usb@[0-9a-f]+$":
8262306a36Sopenharmony_ci    $ref: snps,dwc3.yaml#
8362306a36Sopenharmony_ci
8462306a36Sopenharmony_cirequired:
8562306a36Sopenharmony_ci  - compatible
8662306a36Sopenharmony_ci  - reg
8762306a36Sopenharmony_ci  - "#address-cells"
8862306a36Sopenharmony_ci  - "#size-cells"
8962306a36Sopenharmony_ci  - ranges
9062306a36Sopenharmony_ci  - power-domains
9162306a36Sopenharmony_ci  - clocks
9262306a36Sopenharmony_ci  - clock-names
9362306a36Sopenharmony_ci  - resets
9462306a36Sopenharmony_ci  - reset-names
9562306a36Sopenharmony_ci
9662306a36Sopenharmony_ciadditionalProperties: false
9762306a36Sopenharmony_ci
9862306a36Sopenharmony_ciexamples:
9962306a36Sopenharmony_ci  - |
10062306a36Sopenharmony_ci    #include <dt-bindings/dma/xlnx-zynqmp-dpdma.h>
10162306a36Sopenharmony_ci    #include <dt-bindings/power/xlnx-zynqmp-power.h>
10262306a36Sopenharmony_ci    #include <dt-bindings/reset/xlnx-zynqmp-resets.h>
10362306a36Sopenharmony_ci    #include <dt-bindings/clock/xlnx-zynqmp-clk.h>
10462306a36Sopenharmony_ci    #include <dt-bindings/reset/xlnx-zynqmp-resets.h>
10562306a36Sopenharmony_ci    #include <dt-bindings/phy/phy.h>
10662306a36Sopenharmony_ci    axi {
10762306a36Sopenharmony_ci        #address-cells = <2>;
10862306a36Sopenharmony_ci        #size-cells = <2>;
10962306a36Sopenharmony_ci
11062306a36Sopenharmony_ci        usb@0 {
11162306a36Sopenharmony_ci            #address-cells = <0x2>;
11262306a36Sopenharmony_ci            #size-cells = <0x2>;
11362306a36Sopenharmony_ci            compatible = "xlnx,zynqmp-dwc3";
11462306a36Sopenharmony_ci            reg = <0x0 0xff9d0000 0x0 0x100>;
11562306a36Sopenharmony_ci            clocks = <&zynqmp_clk USB0_BUS_REF>, <&zynqmp_clk USB3_DUAL_REF>;
11662306a36Sopenharmony_ci            clock-names = "bus_clk", "ref_clk";
11762306a36Sopenharmony_ci            power-domains = <&zynqmp_firmware PD_USB_0>;
11862306a36Sopenharmony_ci            resets = <&zynqmp_reset ZYNQMP_RESET_USB1_CORERESET>,
11962306a36Sopenharmony_ci                     <&zynqmp_reset ZYNQMP_RESET_USB1_HIBERRESET>,
12062306a36Sopenharmony_ci                     <&zynqmp_reset ZYNQMP_RESET_USB1_APB>;
12162306a36Sopenharmony_ci            reset-names = "usb_crst", "usb_hibrst", "usb_apbrst";
12262306a36Sopenharmony_ci            phys = <&psgtr 2 PHY_TYPE_USB3 0 2>;
12362306a36Sopenharmony_ci            phy-names = "usb3-phy";
12462306a36Sopenharmony_ci            ranges;
12562306a36Sopenharmony_ci
12662306a36Sopenharmony_ci            usb@fe200000 {
12762306a36Sopenharmony_ci                compatible = "snps,dwc3";
12862306a36Sopenharmony_ci                reg = <0x0 0xfe200000 0x0 0x40000>;
12962306a36Sopenharmony_ci                interrupt-names = "host", "otg";
13062306a36Sopenharmony_ci                interrupts = <0 65 4>, <0 69 4>;
13162306a36Sopenharmony_ci                dr_mode = "host";
13262306a36Sopenharmony_ci                dma-coherent;
13362306a36Sopenharmony_ci            };
13462306a36Sopenharmony_ci        };
13562306a36Sopenharmony_ci    };
136