blob: c6e661e8915ca4d3e905331299d981f4d3964314 [file] [log] [blame]
Tom Rini53633a82024-02-29 12:33:36 -05001# 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
7title: NVIDIA Tegra XUSB device mode controller (XUDC)
8
9description:
10 The Tegra XUDC controller supports both USB 2.0 HighSpeed/FullSpeed and
11 USB 3.0 SuperSpeed protocols.
12
13maintainers:
14 - Nagarjuna Kristam <nkristam@nvidia.com>
15 - JC Kuo <jckuo@nvidia.com>
16 - Thierry Reding <treding@nvidia.com>
17
18properties:
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
113required:
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
126allOf:
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
177additionalProperties: false
178
179examples:
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 };