Merge tag 'usb-5.8-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb
[linux-2.6-microblaze.git] / Documentation / devicetree / bindings / usb / nvidia,tegra-xudc.yaml
1 # SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
2 %YAML 1.2
3 ---
4 $id: "http://devicetree.org/schemas/usb/nvidia,tegra-xudc.yaml#"
5 $schema: "http://devicetree.org/meta-schemas/core.yaml#"
6
7 title: Device tree binding for NVIDIA Tegra XUSB device mode controller (XUDC)
8
9 description:
10   The Tegra XUDC controller supports both USB 2.0 HighSpeed/FullSpeed and
11   USB 3.0 SuperSpeed protocols.
12
13 maintainers:
14   - Nagarjuna Kristam <nkristam@nvidia.com>
15   - JC Kuo <jckuo@nvidia.com>
16   - Thierry Reding <treding@nvidia.com>
17
18 properties:
19   compatible:
20     items:
21       - enum:
22           - nvidia,tegra210-xudc # For Tegra210
23           - nvidia,tegra186-xudc # For Tegra186
24           - nvidia,tegra194-xudc # For Tegra194
25
26   reg:
27     minItems: 2
28     maxItems: 3
29     items:
30       - description: XUSB device controller registers
31       - description: XUSB device PCI Config registers
32       - description: XUSB device registers.
33
34   reg-names:
35     minItems: 2
36     maxItems: 3
37     items:
38       - const: base
39       - const: fpci
40       - const: ipfs
41
42   interrupts:
43     maxItems: 1
44     description: Must contain the XUSB device interrupt.
45
46   clocks:
47     minItems: 4
48     maxItems: 5
49     items:
50       - description: Clock to enable core XUSB dev clock.
51       - description: Clock to enable XUSB super speed clock.
52       - description: Clock to enable XUSB super speed dev clock.
53       - description: Clock to enable XUSB high speed dev clock.
54       - description: Clock to enable XUSB full speed dev clock.
55
56   clock-names:
57     minItems: 4
58     maxItems: 5
59     items:
60      - const: dev
61      - const: ss
62      - const: ss_src
63      - const: fs_src
64      - const: hs_src
65
66   power-domains:
67     maxItems: 2
68     items:
69       - description: XUSBB(device) power-domain
70       - description: XUSBA(superspeed) power-domain
71
72   power-domain-names:
73     maxItems: 2
74     items:
75       - const: dev
76       - const: ss
77
78   nvidia,xusb-padctl:
79     $ref: /schemas/types.yaml#/definitions/phandle-array
80     description:
81       phandle to the XUSB pad controller that is used to configure the USB pads
82       used by the XUDC controller.
83
84   phys:
85     minItems: 1
86     description:
87       Must contain an entry for each entry in phy-names.
88       See ../phy/phy-bindings.txt for details.
89
90   phy-names:
91     minItems: 1
92     items:
93       - const: usb2-0
94       - const: usb2-1
95       - const: usb2-2
96       - const: usb2-3
97       - const: usb3-0
98       - const: usb3-1
99       - const: usb3-2
100       - const: usb3-3
101
102   avddio-usb-supply:
103     description: PCIe/USB3 analog logic power supply. Must supply 1.05 V.
104
105   hvdd-usb-supply:
106     description: USB controller power supply. Must supply 3.3 V.
107
108 required:
109   - compatible
110   - reg
111   - reg-names
112   - interrupts
113   - clocks
114   - clock-names
115   - power-domains
116   - power-domain-names
117   - nvidia,xusb-padctl
118   - phys
119   - phy-names
120
121 allOf:
122   - if:
123       properties:
124         compatible:
125           contains:
126             enum:
127               - nvidia,tegra210-xudc
128     then:
129       properties:
130         reg:
131           minItems: 3
132         reg-names:
133           minItems: 3
134         clocks:
135           minItems: 5
136         clock-names:
137           minItems: 5
138       required:
139         - avddio-usb-supply
140         - hvdd-usb-supply
141
142   - if:
143       properties:
144         compatible:
145           contains:
146             enum:
147               - nvidia,tegra186-xudc
148               - nvidia,tegra194-xudc
149     then:
150       properties:
151         reg:
152           maxItems: 2
153         reg-names:
154           maxItems: 2
155         clocks:
156           maxItems: 4
157         clock-names:
158           maxItems: 4
159
160 examples:
161   - |
162     #include <dt-bindings/clock/tegra210-car.h>
163     #include <dt-bindings/gpio/tegra-gpio.h>
164     #include <dt-bindings/interrupt-controller/arm-gic.h>
165
166     usb@700d0000 {
167         compatible = "nvidia,tegra210-xudc";
168         reg = <0x700d0000 0x8000>,
169               <0x700d8000 0x1000>,
170               <0x700d9000 0x1000>;
171         reg-names = "base", "fpci", "ipfs";
172
173         interrupts = <GIC_SPI 44 IRQ_TYPE_LEVEL_HIGH>;
174
175         clocks = <&tegra_car TEGRA210_CLK_XUSB_DEV>,
176                  <&tegra_car TEGRA210_CLK_XUSB_SS>,
177                  <&tegra_car TEGRA210_CLK_XUSB_SSP_SRC>,
178                  <&tegra_car TEGRA210_CLK_XUSB_FS_SRC>,
179                  <&tegra_car TEGRA210_CLK_XUSB_HS_SRC>;
180         clock-names = "dev", "ss", "ss_src", "fs_src", "hs_src";
181
182         power-domains = <&pd_xusbdev>, <&pd_xusbss>;
183         power-domain-names = "dev", "ss";
184
185         nvidia,xusb-padctl = <&padctl>;
186
187         phys = <&micro_b>;
188         phy-names = "usb2-0";
189
190         avddio-usb-supply = <&vdd_pex_1v05>;
191         hvdd-usb-supply = <&vdd_3v3_sys>;
192     };