aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThierry Reding <treding@nvidia.com>2015-11-04 10:53:36 -0500
committerThierry Reding <treding@nvidia.com>2016-04-29 10:44:46 -0400
commitb1accd107b7a5db06d2c5a303cb5d419f788392d (patch)
treef648e1f925e8eaa79158eee94c28e37d388784f5
parent1140f7c8994a3a2a0d7c4972509d98b792617d39 (diff)
dt-bindings: phy: Add NVIDIA Tegra XUSB pad controller binding
The NVIDIA Tegra XUSB pad controller provides a set of pads, each with a set of lanes that are used for PCIe, SATA and USB. A binding exists for the XUSB pad controller already, but it turned out not to be flexible enough to describe all aspects of the controller. In particular, the addition of XUSB support (for SuperSpeed USB) has shown that the existing binding is no longer suitable. Mark the old binding as deprecated and link to the new binding. Acked-by: Rob Herring <robh@kernel.org> Acked-by: Stephen Warren <swarren@nvidia.com> Signed-off-by: Thierry Reding <treding@nvidia.com>
-rw-r--r--Documentation/devicetree/bindings/phy/nvidia,tegra124-xusb-padctl.txt392
-rw-r--r--Documentation/devicetree/bindings/pinctrl/nvidia,tegra124-xusb-padctl.txt6
2 files changed, 398 insertions, 0 deletions
diff --git a/Documentation/devicetree/bindings/phy/nvidia,tegra124-xusb-padctl.txt b/Documentation/devicetree/bindings/phy/nvidia,tegra124-xusb-padctl.txt
new file mode 100644
index 000000000000..6a5bb4311cfe
--- /dev/null
+++ b/Documentation/devicetree/bindings/phy/nvidia,tegra124-xusb-padctl.txt
@@ -0,0 +1,392 @@
1Device tree binding for NVIDIA Tegra XUSB pad controller
2========================================================
3
4The Tegra XUSB pad controller manages a set of I/O lanes (with differential
5signals) which connect directly to pins/pads on the SoC package. Each lane
6is controlled by a HW block referred to as a "pad" in the Tegra hardware
7documentation. Each such "pad" may control either one or multiple lanes,
8and thus contains any logic common to all its lanes. Each lane can be
9separately configured and powered up.
10
11Some of the lanes are high-speed lanes, which can be used for PCIe, SATA or
12super-speed USB. Other lanes are for various types of low-speed, full-speed
13or high-speed USB (such as UTMI, ULPI and HSIC). The XUSB pad controller
14contains a software-configurable mux that sits between the I/O controller
15ports (e.g. PCIe) and the lanes.
16
17In addition to per-lane configuration, USB 3.0 ports may require additional
18settings on a per-board basis.
19
20Pads will be represented as children of the top-level XUSB pad controller
21device tree node. Each lane exposed by the pad will be represented by its
22own subnode and can be referenced by users of the lane using the standard
23PHY bindings, as described by the phy-bindings.txt file in this directory.
24
25The Tegra hardware documentation refers to the connection between the XUSB
26pad controller and the XUSB controller as "ports". This is confusing since
27"port" is typically used to denote the physical USB receptacle. The device
28tree binding in this document uses the term "port" to refer to the logical
29abstraction of the signals that are routed to a USB receptacle (i.e. a PHY
30for the USB signal, the VBUS power supply, the USB 2.0 companion port for
31USB 3.0 receptacles, ...).
32
33Required properties:
34--------------------
35- compatible: Must be:
36 - Tegra124: "nvidia,tegra124-xusb-padctl"
37 - Tegra132: "nvidia,tegra132-xusb-padctl", "nvidia,tegra124-xusb-padctl"
38- reg: Physical base address and length of the controller's registers.
39- resets: Must contain an entry for each entry in reset-names.
40- reset-names: Must include the following entries:
41 - "padctl"
42
43
44Pad nodes:
45==========
46
47A required child node named "pads" contains a list of subnodes, one for each
48of the pads exposed by the XUSB pad controller. Each pad may need additional
49resources that can be referenced in its pad node.
50
51The "status" property is used to enable or disable the use of a pad. If set
52to "disabled", the pad will not be used on the given board. In order to use
53the pad and any of its lanes, this property must be set to "okay".
54
55For Tegra124 and Tegra132, the following pads exist: usb2, ulpi, hsic, pcie
56and sata. No extra resources are required for operation of these pads.
57
58
59PHY nodes:
60==========
61
62Each pad node has a child named "lanes" that contains one or more children of
63its own, each representing one of the lanes controlled by the pad.
64
65Required properties:
66--------------------
67- status: Defines the operation status of the PHY. Valid values are:
68 - "disabled": the PHY is disabled
69 - "okay": the PHY is enabled
70- #phy-cells: Should be 0. Since each lane represents a single PHY, there is
71 no need for an additional specifier.
72- nvidia,function: The output function of the PHY. See below for a list of
73 valid functions per SoC generation.
74
75For Tegra124 and Tegra132, the list of valid PHY nodes is given below:
76- usb2: usb2-0, usb2-1, usb2-2
77 - functions: "snps", "xusb", "uart"
78- ulpi: ulpi-0
79 - functions: "snps", "xusb"
80- hsic: hsic-0, hsic-1
81 - functions: "snps", "xusb"
82- pcie: pcie-0, pcie-1, pcie-2, pcie-3, pcie-4
83 - functions: "pcie", "usb3-ss"
84- sata: sata-0
85 - functions: "usb3-ss", "sata"
86
87
88Port nodes:
89===========
90
91A required child node named "ports" contains a list of all the ports exposed
92by the XUSB pad controller. Per-port configuration is only required for USB.
93
94USB2 ports:
95-----------
96
97Required properties:
98- status: Defines the operation status of the port. Valid values are:
99 - "disabled": the port is disabled
100 - "okay": the port is enabled
101- mode: A string that determines the mode in which to run the port. Valid
102 values are:
103 - "host": for USB host mode
104 - "device": for USB device mode
105 - "otg": for USB OTG mode
106
107Optional properties:
108- nvidia,internal: A boolean property whose presence determines that a port
109 is internal. In the absence of this property the port is considered to be
110 external.
111- vbus-supply: phandle to a regulator supplying the VBUS voltage.
112
113ULPI ports:
114-----------
115
116Optional properties:
117- status: Defines the operation status of the port. Valid values are:
118 - "disabled": the port is disabled
119 - "okay": the port is enabled
120- nvidia,internal: A boolean property whose presence determines that a port
121 is internal. In the absence of this property the port is considered to be
122 external.
123- vbus-supply: phandle to a regulator supplying the VBUS voltage.
124
125HSIC ports:
126-----------
127
128Required properties:
129- status: Defines the operation status of the port. Valid values are:
130 - "disabled": the port is disabled
131 - "okay": the port is enabled
132
133Optional properties:
134- vbus-supply: phandle to a regulator supplying the VBUS voltage.
135
136Super-speed USB ports:
137----------------------
138
139Required properties:
140- status: Defines the operation status of the port. Valid values are:
141 - "disabled": the port is disabled
142 - "okay": the port is enabled
143- nvidia,usb2-companion: A single cell that specifies the physical port number
144 to map this super-speed USB port to. The range of valid port numbers varies
145 with the SoC generation:
146 - 0-2: for Tegra124 and Tegra132
147
148Optional properties:
149- nvidia,internal: A boolean property whose presence determines that a port
150 is internal. In the absence of this property the port is considered to be
151 external.
152
153For Tegra124 and Tegra132, the XUSB pad controller exposes the following
154ports:
155- 3x USB2: usb2-0, usb2-1, usb2-2
156- 1x ULPI: ulpi-0
157- 2x HSIC: hsic-0, hsic-1
158- 2x super-speed USB: usb3-0, usb3-1
159
160
161Examples:
162=========
163
164Tegra124 and Tegra132:
165----------------------
166
167SoC include:
168
169 padctl@7009f000 {
170 /* for Tegra124 */
171 compatible = "nvidia,tegra124-xusb-padctl";
172 /* for Tegra132 */
173 compatible = "nvidia,tegra132-xusb-padctl",
174 "nvidia,tegra124-xusb-padctl";
175 reg = <0x0 0x7009f000 0x0 0x1000>;
176 resets = <&tegra_car 142>;
177 reset-names = "padctl";
178
179 pads {
180 usb2 {
181 status = "disabled";
182
183 lanes {
184 usb2-0 {
185 status = "disabled";
186 #phy-cells = <0>;
187 };
188
189 usb2-1 {
190 status = "disabled";
191 #phy-cells = <0>;
192 };
193
194 usb2-2 {
195 status = "disabled";
196 #phy-cells = <0>;
197 };
198 };
199 };
200
201 ulpi {
202 status = "disabled";
203
204 lanes {
205 ulpi-0 {
206 status = "disabled";
207 #phy-cells = <0>;
208 };
209 };
210 };
211
212 hsic {
213 status = "disabled";
214
215 lanes {
216 hsic-0 {
217 status = "disabled";
218 #phy-cells = <0>;
219 };
220
221 hsic-1 {
222 status = "disabled";
223 #phy-cells = <0>;
224 };
225 };
226 };
227
228 pcie {
229 status = "disabled";
230
231 lanes {
232 pcie-0 {
233 status = "disabled";
234 #phy-cells = <0>;
235 };
236
237 pcie-1 {
238 status = "disabled";
239 #phy-cells = <0>;
240 };
241
242 pcie-2 {
243 status = "disabled";
244 #phy-cells = <0>;
245 };
246
247 pcie-3 {
248 status = "disabled";
249 #phy-cells = <0>;
250 };
251
252 pcie-4 {
253 status = "disabled";
254 #phy-cells = <0>;
255 };
256 };
257 };
258
259 sata {
260 status = "disabled";
261
262 lanes {
263 sata-0 {
264 status = "disabled";
265 #phy-cells = <0>;
266 };
267 };
268 };
269 };
270
271 ports {
272 usb2-0 {
273 status = "disabled";
274 };
275
276 usb2-1 {
277 status = "disabled";
278 };
279
280 usb2-2 {
281 status = "disabled";
282 };
283
284 ulpi-0 {
285 status = "disabled";
286 };
287
288 hsic-0 {
289 status = "disabled";
290 };
291
292 hsic-1 {
293 status = "disabled";
294 };
295
296 usb3-0 {
297 status = "disabled";
298 };
299
300 usb3-1 {
301 status = "disabled";
302 };
303 };
304 };
305
306Board file:
307
308 padctl@7009f000 {
309 status = "okay";
310
311 pads {
312 usb2 {
313 status = "okay";
314
315 lanes {
316 usb2-0 {
317 nvidia,function = "xusb";
318 status = "okay";
319 };
320
321 usb2-1 {
322 nvidia,function = "xusb";
323 status = "okay";
324 };
325
326 usb2-2 {
327 nvidia,function = "xusb";
328 status = "okay";
329 };
330 };
331 };
332
333 pcie {
334 status = "okay";
335
336 lanes {
337 pcie-0 {
338 nvidia,function = "usb3-ss";
339 status = "okay";
340 };
341
342 pcie-2 {
343 nvidia,function = "pcie";
344 status = "okay";
345 };
346
347 pcie-4 {
348 nvidia,function = "pcie";
349 status = "okay";
350 };
351 };
352 };
353
354 sata {
355 status = "okay";
356
357 lanes {
358 sata-0 {
359 nvidia,function = "sata";
360 status = "okay";
361 };
362 };
363 };
364 };
365
366 ports {
367 /* Micro A/B */
368 usb2-0 {
369 status = "okay";
370 mode = "otg";
371 };
372
373 /* Mini PCIe */
374 usb2-1 {
375 status = "okay";
376 mode = "host";
377 };
378
379 /* USB3 */
380 usb2-2 {
381 status = "okay";
382 mode = "host";
383
384 vbus-supply = <&vdd_usb3_vbus>;
385 };
386
387 usb3-0 {
388 nvidia,port = <2>;
389 status = "okay";
390 };
391 };
392 };
diff --git a/Documentation/devicetree/bindings/pinctrl/nvidia,tegra124-xusb-padctl.txt b/Documentation/devicetree/bindings/pinctrl/nvidia,tegra124-xusb-padctl.txt
index 30676ded85bb..8a6223dbc143 100644
--- a/Documentation/devicetree/bindings/pinctrl/nvidia,tegra124-xusb-padctl.txt
+++ b/Documentation/devicetree/bindings/pinctrl/nvidia,tegra124-xusb-padctl.txt
@@ -1,6 +1,12 @@
1Device tree binding for NVIDIA Tegra XUSB pad controller 1Device tree binding for NVIDIA Tegra XUSB pad controller
2======================================================== 2========================================================
3 3
4NOTE: It turns out that this binding isn't an accurate description of the XUSB
5pad controller. While the description is good enough for the functional subset
6required for PCIe and SATA, it lacks the flexibility to represent the features
7needed for USB. For the new binding, see ../phy/nvidia,tegra-xusb-padctl.txt.
8The binding described in this file is deprecated and should not be used.
9
4The Tegra XUSB pad controller manages a set of lanes, each of which can be 10The Tegra XUSB pad controller manages a set of lanes, each of which can be
5assigned to one out of a set of different pads. Some of these pads have an 11assigned to one out of a set of different pads. Some of these pads have an
6associated PHY that must be powered up before the pad can be used. 12associated PHY that must be powered up before the pad can be used.