Merge tag 'input-for-v6.6-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor...
[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: 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           - nvidia,tegra234-xudc # For Tegra234
26
27   reg:
28     minItems: 2
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     items:
37       - const: base
38       - const: fpci
39       - const: ipfs
40
41   interrupts:
42     maxItems: 1
43     description: Must contain the XUSB device interrupt.
44
45   clocks:
46     minItems: 4
47     items:
48       - description: Clock to enable core XUSB dev clock.
49       - description: Clock to enable XUSB super speed clock.
50       - description: Clock to enable XUSB super speed dev clock.
51       - description: Clock to enable XUSB high speed dev clock.
52       - description: Clock to enable XUSB full speed dev clock.
53
54   clock-names:
55     minItems: 4
56     items:
57       - const: dev
58       - const: ss
59       - const: ss_src
60       - const: fs_src
61       - const: hs_src
62
63   interconnects:
64     items:
65       - description: memory read client
66       - description: memory write client
67
68   interconnect-names:
69     items:
70       - const: dma-mem # read
71       - const: write
72
73   iommus:
74     maxItems: 1
75
76   power-domains:
77     items:
78       - description: XUSBB(device) power-domain
79       - description: XUSBA(superspeed) power-domain
80
81   power-domain-names:
82     items:
83       - const: dev
84       - const: ss
85
86   nvidia,xusb-padctl:
87     $ref: /schemas/types.yaml#/definitions/phandle
88     description:
89       phandle to the XUSB pad controller that is used to configure the USB pads
90       used by the XUDC controller.
91
92   phys:
93     minItems: 1
94     maxItems: 2
95     description:
96       Must contain an entry for each entry in phy-names.
97       See ../phy/phy-bindings.txt for details.
98
99   phy-names:
100     minItems: 1
101     items:
102       - const: usb2-0
103       - const: usb3-0
104
105   avddio-usb-supply:
106     description: PCIe/USB3 analog logic power supply. Must supply 1.05 V.
107
108   hvdd-usb-supply:
109     description: USB controller power supply. Must supply 3.3 V.
110
111   dma-coherent: true
112
113 required:
114   - compatible
115   - reg
116   - reg-names
117   - interrupts
118   - clocks
119   - clock-names
120   - power-domains
121   - power-domain-names
122   - nvidia,xusb-padctl
123   - phys
124   - phy-names
125
126 allOf:
127   - if:
128       properties:
129         compatible:
130           contains:
131             enum:
132               - nvidia,tegra210-xudc
133     then:
134       properties:
135         reg:
136           minItems: 3
137         reg-names:
138           minItems: 3
139         clocks:
140           minItems: 5
141         clock-names:
142           minItems: 5
143       required:
144         - avddio-usb-supply
145         - hvdd-usb-supply
146
147   - if:
148       properties:
149         compatible:
150           contains:
151             enum:
152               - nvidia,tegra186-xudc
153               - nvidia,tegra194-xudc
154               - nvidia,tegra234-xudc
155     then:
156       properties:
157         reg:
158           maxItems: 2
159         reg-names:
160           maxItems: 2
161         clocks:
162           maxItems: 4
163         clock-names:
164           maxItems: 4
165
166   - if:
167       properties:
168         compatible:
169           contains:
170             enum:
171               - nvidia,tegra194-xudc
172               - nvidia,tegra234-xudc
173     then:
174       required:
175         - dma-coherent
176
177 additionalProperties: false
178
179 examples:
180   - |
181     #include <dt-bindings/clock/tegra210-car.h>
182     #include <dt-bindings/gpio/tegra-gpio.h>
183     #include <dt-bindings/interrupt-controller/arm-gic.h>
184
185     usb@700d0000 {
186         compatible = "nvidia,tegra210-xudc";
187         reg = <0x700d0000 0x8000>,
188               <0x700d8000 0x1000>,
189               <0x700d9000 0x1000>;
190         reg-names = "base", "fpci", "ipfs";
191
192         interrupts = <GIC_SPI 44 IRQ_TYPE_LEVEL_HIGH>;
193
194         clocks = <&tegra_car TEGRA210_CLK_XUSB_DEV>,
195                  <&tegra_car TEGRA210_CLK_XUSB_SS>,
196                  <&tegra_car TEGRA210_CLK_XUSB_SSP_SRC>,
197                  <&tegra_car TEGRA210_CLK_XUSB_FS_SRC>,
198                  <&tegra_car TEGRA210_CLK_XUSB_HS_SRC>;
199         clock-names = "dev", "ss", "ss_src", "fs_src", "hs_src";
200
201         power-domains = <&pd_xusbdev>, <&pd_xusbss>;
202         power-domain-names = "dev", "ss";
203
204         nvidia,xusb-padctl = <&padctl>;
205
206         phys = <&micro_b>;
207         phy-names = "usb2-0";
208
209         avddio-usb-supply = <&vdd_pex_1v05>;
210         hvdd-usb-supply = <&vdd_3v3_sys>;
211     };