Merge tag 'linux-kselftest-kunit-fixes-5.11-rc3' of git://git.kernel.org/pub/scm...
[linux/fpc-iii.git] / Documentation / devicetree / bindings / usb / nvidia,tegra-xudc.yaml
blobe60e590dbe12d49100e7c310934f9bfcc5833bbd
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#"
7 title: Device tree binding for NVIDIA Tegra XUSB device mode controller (XUDC)
9 description:
10   The Tegra XUDC controller supports both USB 2.0 HighSpeed/FullSpeed and
11   USB 3.0 SuperSpeed protocols.
13 maintainers:
14   - Nagarjuna Kristam <nkristam@nvidia.com>
15   - JC Kuo <jckuo@nvidia.com>
16   - Thierry Reding <treding@nvidia.com>
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
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.
34   reg-names:
35     minItems: 2
36     maxItems: 3
37     items:
38       - const: base
39       - const: fpci
40       - const: ipfs
42   interrupts:
43     maxItems: 1
44     description: Must contain the XUSB device interrupt.
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.
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
66   power-domains:
67     items:
68       - description: XUSBB(device) power-domain
69       - description: XUSBA(superspeed) power-domain
71   power-domain-names:
72     items:
73       - const: dev
74       - const: ss
76   nvidia,xusb-padctl:
77     $ref: /schemas/types.yaml#/definitions/phandle-array
78     description:
79       phandle to the XUSB pad controller that is used to configure the USB pads
80       used by the XUDC controller.
82   phys:
83     minItems: 1
84     description:
85       Must contain an entry for each entry in phy-names.
86       See ../phy/phy-bindings.txt for details.
88   phy-names:
89     minItems: 1
90     items:
91       - const: usb2-0
92       - const: usb2-1
93       - const: usb2-2
94       - const: usb2-3
95       - const: usb3-0
96       - const: usb3-1
97       - const: usb3-2
98       - const: usb3-3
100   avddio-usb-supply:
101     description: PCIe/USB3 analog logic power supply. Must supply 1.05 V.
103   hvdd-usb-supply:
104     description: USB controller power supply. Must supply 3.3 V.
106 required:
107   - compatible
108   - reg
109   - reg-names
110   - interrupts
111   - clocks
112   - clock-names
113   - power-domains
114   - power-domain-names
115   - nvidia,xusb-padctl
116   - phys
117   - phy-names
119 allOf:
120   - if:
121       properties:
122         compatible:
123           contains:
124             enum:
125               - nvidia,tegra210-xudc
126     then:
127       properties:
128         reg:
129           minItems: 3
130         reg-names:
131           minItems: 3
132         clocks:
133           minItems: 5
134         clock-names:
135           minItems: 5
136       required:
137         - avddio-usb-supply
138         - hvdd-usb-supply
140   - if:
141       properties:
142         compatible:
143           contains:
144             enum:
145               - nvidia,tegra186-xudc
146               - nvidia,tegra194-xudc
147     then:
148       properties:
149         reg:
150           maxItems: 2
151         reg-names:
152           maxItems: 2
153         clocks:
154           maxItems: 4
155         clock-names:
156           maxItems: 4
158 additionalProperties: false
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>
166     usb@700d0000 {
167         compatible = "nvidia,tegra210-xudc";
168         reg = <0x700d0000 0x8000>,
169               <0x700d8000 0x1000>,
170               <0x700d9000 0x1000>;
171         reg-names = "base", "fpci", "ipfs";
173         interrupts = <GIC_SPI 44 IRQ_TYPE_LEVEL_HIGH>;
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";
182         power-domains = <&pd_xusbdev>, <&pd_xusbss>;
183         power-domain-names = "dev", "ss";
185         nvidia,xusb-padctl = <&padctl>;
187         phys = <&micro_b>;
188         phy-names = "usb2-0";
190         avddio-usb-supply = <&vdd_pex_1v05>;
191         hvdd-usb-supply = <&vdd_3v3_sys>;
192     };