xref: /linux/Documentation/devicetree/bindings/usb/dwc3-xilinx.yaml (revision ee628d9cc8d5b96fdceeb270cf662efc4f85f2b6)
1# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/usb/dwc3-xilinx.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Xilinx SuperSpeed DWC3 USB SoC controller
8
9maintainers:
10  - Radhey Shyam Pandey <radhey.shyam.pandey@amd.com>
11
12properties:
13  compatible:
14    items:
15      - enum:
16          - xlnx,zynqmp-dwc3
17          - xlnx,versal-dwc3
18  reg:
19    maxItems: 1
20
21  "#address-cells":
22    enum: [ 1, 2 ]
23
24  "#size-cells":
25    enum: [ 1, 2 ]
26
27  ranges: true
28
29  dma-coherent: true
30
31  power-domains:
32    description: specifies a phandle to PM domain provider node
33    maxItems: 1
34
35  clocks:
36    description:
37      A list of phandle and clock-specifier pairs for the clocks
38      listed in clock-names.
39    items:
40      - description: Master/Core clock, has to be >= 125 MHz
41          for SS operation and >= 60MHz for HS operation.
42      - description: Clock source to core during PHY power down.
43
44  clock-names:
45    items:
46      - const: bus_clk
47      - const: ref_clk
48
49  resets:
50    minItems: 1
51    description:
52      A list of phandles for resets listed in reset-names.
53
54    items:
55      - description: USB core reset
56      - description: USB hibernation reset
57      - description: USB APB reset
58
59  reset-names:
60    minItems: 1
61    items:
62      - const: usb_crst
63      - const: usb_hibrst
64      - const: usb_apbrst
65
66  phys:
67    minItems: 1
68    maxItems: 2
69
70  phy-names:
71    minItems: 1
72    maxItems: 2
73    items:
74      enum:
75        - usb2-phy
76        - usb3-phy
77
78  reset-gpios:
79    description: GPIO used for the reset ulpi-phy
80    maxItems: 1
81
82# Required child node:
83
84patternProperties:
85  "^usb@[0-9a-f]+$":
86    $ref: snps,dwc3.yaml#
87
88required:
89  - compatible
90  - reg
91  - "#address-cells"
92  - "#size-cells"
93  - ranges
94  - power-domains
95  - clocks
96  - clock-names
97  - resets
98  - reset-names
99
100allOf:
101  - if:
102      properties:
103        compatible:
104          contains:
105            enum:
106              - xlnx,versal-dwc3
107    then:
108      properties:
109        resets:
110          maxItems: 1
111        reset-names:
112          maxItems: 1
113    else:
114      properties:
115        resets:
116          minItems: 3
117        reset-names:
118          minItems: 3
119
120additionalProperties: false
121
122examples:
123  - |
124    #include <dt-bindings/dma/xlnx-zynqmp-dpdma.h>
125    #include <dt-bindings/power/xlnx-zynqmp-power.h>
126    #include <dt-bindings/reset/xlnx-zynqmp-resets.h>
127    #include <dt-bindings/reset/xlnx-zynqmp-resets.h>
128    #include <dt-bindings/phy/phy.h>
129    axi {
130        #address-cells = <2>;
131        #size-cells = <2>;
132
133        usb@0 {
134            #address-cells = <0x2>;
135            #size-cells = <0x2>;
136            compatible = "xlnx,zynqmp-dwc3";
137            reg = <0x0 0xff9d0000 0x0 0x100>;
138            clocks = <&zynqmp_clk 32>, <&zynqmp_clk 34>;
139            clock-names = "bus_clk", "ref_clk";
140            power-domains = <&zynqmp_firmware PD_USB_0>;
141            resets = <&zynqmp_reset ZYNQMP_RESET_USB1_CORERESET>,
142                     <&zynqmp_reset ZYNQMP_RESET_USB1_HIBERRESET>,
143                     <&zynqmp_reset ZYNQMP_RESET_USB1_APB>;
144            reset-names = "usb_crst", "usb_hibrst", "usb_apbrst";
145            phys = <&psgtr 2 PHY_TYPE_USB3 0 2>;
146            phy-names = "usb3-phy";
147            ranges;
148
149            usb@fe200000 {
150                compatible = "snps,dwc3";
151                reg = <0x0 0xfe200000 0x0 0x40000>;
152                interrupt-names = "host", "otg";
153                interrupts = <0 65 4>, <0 69 4>;
154                dr_mode = "host";
155                dma-coherent;
156            };
157        };
158    };
159