1 # SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
4 $id: http://devicetree.org/schemas/phy/nvidia,tegra194-xusb-padctl.yaml#
5 $schema: http://devicetree.org/meta-schemas/core.yaml#
7 title: NVIDIA Tegra194 XUSB pad controller
10 - Thierry Reding <thierry.reding@gmail.com>
11 - Jon Hunter <jonathanh@nvidia.com>
14 The Tegra XUSB pad controller manages a set of I/O lanes (with differential
15 signals) which connect directly to pins/pads on the SoC package. Each lane
16 is controlled by a HW block referred to as a "pad" in the Tegra hardware
17 documentation. Each such "pad" may control either one or multiple lanes,
18 and thus contains any logic common to all its lanes. Each lane can be
19 separately configured and powered up.
21 Some of the lanes are high-speed lanes, which can be used for PCIe, SATA or
22 super-speed USB. Other lanes are for various types of low-speed, full-speed
23 or high-speed USB (such as UTMI, ULPI and HSIC). The XUSB pad controller
24 contains a software-configurable mux that sits between the I/O controller
25 ports (e.g. PCIe) and the lanes.
27 In addition to per-lane configuration, USB 3.0 ports may require additional
28 settings on a per-board basis.
30 Pads will be represented as children of the top-level XUSB pad controller
31 device tree node. Each lane exposed by the pad will be represented by its
32 own subnode and can be referenced by users of the lane using the standard
33 PHY bindings, as described by the phy-bindings.txt file in this directory.
35 The Tegra hardware documentation refers to the connection between the XUSB
36 pad controller and the XUSB controller as "ports". This is confusing since
37 "port" is typically used to denote the physical USB receptacle. The device
38 tree binding in this document uses the term "port" to refer to the logical
39 abstraction of the signals that are routed to a USB receptacle (i.e. a PHY
40 for the USB signal, the VBUS power supply, the USB 2.0 companion port for
41 USB 3.0 receptacles, ...).
46 - nvidia,tegra194-xusb-padctl
47 - nvidia,tegra234-xusb-padctl
51 - description: pad controller registers
52 - description: AO registers
61 - description: XUSB pad controller interrupt
65 - description: pad controller reset
72 description: USB I/Os, VBUS, ID, REXT, D+/D- power supply. Must
76 description: Bias rail for USB pad. Must supply 1.8 V.
79 description: A required child node named "pads" contains a list of
80 subnodes, one for each of the pads exposed by the XUSB pad controller.
81 Each pad may need additional resources that can be referenced in its
84 The "status" property is used to enable or disable the use of a pad.
85 If set to "disabled", the pad will not be used on the given board. In
86 order to use the pad and any of its lanes, this property must be set
89 additionalProperties: false
93 additionalProperties: false
97 - description: USB2 tracking clock
105 additionalProperties: false
109 additionalProperties: false
115 description: Function selection for this lane.
116 $ref: /schemas/types.yaml#/definitions/string
121 additionalProperties: false
127 description: Function selection for this lane.
128 $ref: /schemas/types.yaml#/definitions/string
133 additionalProperties: false
139 description: Function selection for this lane.
140 $ref: /schemas/types.yaml#/definitions/string
145 additionalProperties: false
151 description: Function selection for this lane.
152 $ref: /schemas/types.yaml#/definitions/string
157 additionalProperties: false
161 additionalProperties: false
165 additionalProperties: false
171 description: Function selection for this lane.
172 $ref: /schemas/types.yaml#/definitions/string
177 additionalProperties: false
183 description: Function selection for this lane.
184 $ref: /schemas/types.yaml#/definitions/string
189 additionalProperties: false
195 description: Function selection for this lane.
196 $ref: /schemas/types.yaml#/definitions/string
201 additionalProperties: false
207 description: Function selection for this lane.
208 $ref: /schemas/types.yaml#/definitions/string
212 description: A required child node named "ports" contains a list of
213 subnodes, one for each of the ports exposed by the XUSB pad controller.
214 Each port may need additional resources that can be referenced in its
217 The "status" property is used to enable or disable the use of a port.
218 If set to "disabled", the port will not be used on the given board. In
219 order to use the port, this property must be set to "okay".
221 additionalProperties: false
225 additionalProperties: false
227 # no need to further describe this because the connector will
228 # match on gpio-usb-b-connector or usb-b-connector and cause
229 # that binding to be selected for the subnode
234 description: A string that determines the mode in which to
236 $ref: /schemas/types.yaml#/definitions/string
237 enum: [ host, peripheral, otg ]
240 description: A boolean property whose presence determines
241 that a port is internal. In the absence of this property
242 the port is considered to be external.
243 $ref: /schemas/types.yaml#/definitions/flag
247 A boolean property whole presence indicates that the port
248 supports OTG or peripheral mode. If present, the port
249 supports switching between USB host and peripheral roles.
250 A connector must be added as a subnode in that case.
252 See ../connector/usb-connector.yaml.
255 description: A phandle to the regulator supplying the VBUS
259 usb-role-switch: [ connector ]
263 additionalProperties: false
265 # no need to further describe this because the connector will
266 # match on gpio-usb-b-connector or usb-b-connector and cause
267 # that binding to be selected for the subnode
272 description: A string that determines the mode in which to
274 $ref: /schemas/types.yaml#/definitions/string
275 enum: [ host, peripheral, otg ]
278 description: A boolean property whose presence determines
279 that a port is internal. In the absence of this property
280 the port is considered to be external.
281 $ref: /schemas/types.yaml#/definitions/flag
285 A boolean property whole presence indicates that the port
286 supports OTG or peripheral mode. If present, the port
287 supports switching between USB host and peripheral roles.
288 A connector must be added as a subnode in that case.
290 See ../connector/usb-connector.yaml.
293 description: A phandle to the regulator supplying the VBUS
297 usb-role-switch: [ connector ]
301 additionalProperties: false
303 # no need to further describe this because the connector will
304 # match on gpio-usb-b-connector or usb-b-connector and cause
305 # that binding to be selected for the subnode
310 description: A string that determines the mode in which to
312 $ref: /schemas/types.yaml#/definitions/string
313 enum: [ host, peripheral, otg ]
316 description: A boolean property whose presence determines
317 that a port is internal. In the absence of this property
318 the port is considered to be external.
319 $ref: /schemas/types.yaml#/definitions/flag
323 A boolean property whole presence indicates that the port
324 supports OTG or peripheral mode. If present, the port
325 supports switching between USB host and peripheral roles.
326 A connector must be added as a subnode in that case.
328 See ../connector/usb-connector.yaml.
331 description: A phandle to the regulator supplying the VBUS
335 usb-role-switch: [ connector ]
339 additionalProperties: false
341 # no need to further describe this because the connector will
342 # match on gpio-usb-b-connector or usb-b-connector and cause
343 # that binding to be selected for the subnode
348 description: A string that determines the mode in which to
350 $ref: /schemas/types.yaml#/definitions/string
351 enum: [ host, peripheral, otg ]
354 description: A boolean property whose presence determines
355 that a port is internal. In the absence of this property
356 the port is considered to be external.
357 $ref: /schemas/types.yaml#/definitions/flag
361 A boolean property whole presence indicates that the port
362 supports OTG or peripheral mode. If present, the port
363 supports switching between USB host and peripheral roles.
364 A connector must be added as a subnode in that case.
366 See ../connector/usb-connector.yaml.
369 description: A phandle to the regulator supplying the VBUS
373 usb-role-switch: [ connector ]
377 additionalProperties: false
380 description: A string property that specifies the maximum
381 supported speed of a USB3 port.
382 $ref: /schemas/types.yaml#/definitions/string
384 - description: The USB3 port supports USB 3.1 Gen 2 speed.
386 const: super-speed-plus
387 - description: The USB3 port supports USB 3.1 Gen 1 speed
392 description: A boolean property whose presence determines
393 that a port is internal. In the absence of this property
394 the port is considered to be external.
395 $ref: /schemas/types.yaml#/definitions/flag
397 nvidia,usb2-companion:
398 description: A single cell that specifies the physical port
399 number to map this super-speed USB port to. The range of
400 valid port numbers varies with the SoC generation.
401 $ref: /schemas/types.yaml#/definitions/uint32
405 description: A phandle to the regulator supplying the VBUS
410 additionalProperties: false
413 description: A string property that specifies the maximum
414 supported speed of a USB3 port.
415 $ref: /schemas/types.yaml#/definitions/string
417 - description: The USB3 port supports USB 3.1 Gen 2 speed.
419 const: super-speed-plus
420 - description: The USB3 port supports USB 3.1 Gen 1 speed
425 description: A boolean property whose presence determines
426 that a port is internal. In the absence of this property
427 the port is considered to be external.
428 $ref: /schemas/types.yaml#/definitions/flag
430 nvidia,usb2-companion:
431 description: A single cell that specifies the physical port
432 number to map this super-speed USB port to. The range of
433 valid port numbers varies with the SoC generation.
434 $ref: /schemas/types.yaml#/definitions/uint32
438 description: A phandle to the regulator supplying the VBUS
443 additionalProperties: false
446 description: A string property that specifies the maximum
447 supported speed of a USB3 port.
448 $ref: /schemas/types.yaml#/definitions/string
450 - description: The USB3 port supports USB 3.1 Gen 2 speed.
452 const: super-speed-plus
453 - description: The USB3 port supports USB 3.1 Gen 1 speed
458 description: A boolean property whose presence determines
459 that a port is internal. In the absence of this property
460 the port is considered to be external.
461 $ref: /schemas/types.yaml#/definitions/flag
463 nvidia,usb2-companion:
464 description: A single cell that specifies the physical port
465 number to map this super-speed USB port to. The range of
466 valid port numbers varies with the SoC generation.
467 $ref: /schemas/types.yaml#/definitions/uint32
471 description: A phandle to the regulator supplying the VBUS
476 additionalProperties: false
479 description: A string property that specifies the maximum
480 supported speed of a USB3 port.
481 $ref: /schemas/types.yaml#/definitions/string
483 - description: The USB3 port supports USB 3.1 Gen 2 speed.
485 const: super-speed-plus
486 - description: The USB3 port supports USB 3.1 Gen 1 speed
491 description: A boolean property whose presence determines
492 that a port is internal. In the absence of this property
493 the port is considered to be external.
494 $ref: /schemas/types.yaml#/definitions/flag
496 nvidia,usb2-companion:
497 description: A single cell that specifies the physical port
498 number to map this super-speed USB port to. The range of
499 valid port numbers varies with the SoC generation.
500 $ref: /schemas/types.yaml#/definitions/uint32
504 description: A phandle to the regulator supplying the VBUS
507 additionalProperties: false
519 #include <dt-bindings/clock/tegra194-clock.h>
520 #include <dt-bindings/gpio/tegra194-gpio.h>
521 #include <dt-bindings/interrupt-controller/arm-gic.h>
522 #include <dt-bindings/reset/tegra194-reset.h>
525 compatible = "nvidia,tegra194-xusb-padctl";
526 reg = <0x03520000 0x1000>,
528 reg-names = "padctl", "ao";
529 interrupts = <GIC_SPI 167 IRQ_TYPE_LEVEL_HIGH>;
531 resets = <&bpmp TEGRA194_RESET_XUSB_PADCTL>;
532 reset-names = "padctl";
534 avdd-usb-supply = <&vdd_usb_3v3>;
535 vclamp-usb-supply = <&vdd_1v8ao>;
539 clocks = <&bpmp TEGRA194_CLK_USB2_TRK>;
544 nvidia,function = "xusb";
550 nvidia,function = "xusb";
555 nvidia,function = "xusb";
561 nvidia,function = "xusb";
570 nvidia,function = "xusb";
575 nvidia,function = "xusb";
581 nvidia,function = "xusb";
587 nvidia,function = "xusb";
600 vbus-supply = <&vdd_5v0_sys>;
609 vbus-supply = <&vdd_5v_sata>;
614 vbus-supply = <&vdd_5v0_sys>;
615 nvidia,usb2-companion = <1>;
627 maximum-speed = "super-speed";
628 vbus-supply = <&vdd_5v0_sys>;
629 nvidia,usb2-companion = <3>;