633 lines
21 KiB
YAML
633 lines
21 KiB
YAML
|
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
|
||
|
%YAML 1.2
|
||
|
---
|
||
|
$id: http://devicetree.org/schemas/phy/nvidia,tegra194-xusb-padctl.yaml#
|
||
|
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||
|
|
||
|
title: NVIDIA Tegra194 XUSB pad controller
|
||
|
|
||
|
maintainers:
|
||
|
- Thierry Reding <thierry.reding@gmail.com>
|
||
|
- Jon Hunter <jonathanh@nvidia.com>
|
||
|
|
||
|
description: |
|
||
|
The Tegra XUSB pad controller manages a set of I/O lanes (with differential
|
||
|
signals) which connect directly to pins/pads on the SoC package. Each lane
|
||
|
is controlled by a HW block referred to as a "pad" in the Tegra hardware
|
||
|
documentation. Each such "pad" may control either one or multiple lanes,
|
||
|
and thus contains any logic common to all its lanes. Each lane can be
|
||
|
separately configured and powered up.
|
||
|
|
||
|
Some of the lanes are high-speed lanes, which can be used for PCIe, SATA or
|
||
|
super-speed USB. Other lanes are for various types of low-speed, full-speed
|
||
|
or high-speed USB (such as UTMI, ULPI and HSIC). The XUSB pad controller
|
||
|
contains a software-configurable mux that sits between the I/O controller
|
||
|
ports (e.g. PCIe) and the lanes.
|
||
|
|
||
|
In addition to per-lane configuration, USB 3.0 ports may require additional
|
||
|
settings on a per-board basis.
|
||
|
|
||
|
Pads will be represented as children of the top-level XUSB pad controller
|
||
|
device tree node. Each lane exposed by the pad will be represented by its
|
||
|
own subnode and can be referenced by users of the lane using the standard
|
||
|
PHY bindings, as described by the phy-bindings.txt file in this directory.
|
||
|
|
||
|
The Tegra hardware documentation refers to the connection between the XUSB
|
||
|
pad controller and the XUSB controller as "ports". This is confusing since
|
||
|
"port" is typically used to denote the physical USB receptacle. The device
|
||
|
tree binding in this document uses the term "port" to refer to the logical
|
||
|
abstraction of the signals that are routed to a USB receptacle (i.e. a PHY
|
||
|
for the USB signal, the VBUS power supply, the USB 2.0 companion port for
|
||
|
USB 3.0 receptacles, ...).
|
||
|
|
||
|
properties:
|
||
|
compatible:
|
||
|
enum:
|
||
|
- nvidia,tegra194-xusb-padctl
|
||
|
- nvidia,tegra234-xusb-padctl
|
||
|
|
||
|
reg:
|
||
|
items:
|
||
|
- description: pad controller registers
|
||
|
- description: AO registers
|
||
|
|
||
|
reg-names:
|
||
|
items:
|
||
|
- const: padctl
|
||
|
- const: ao
|
||
|
|
||
|
interrupts:
|
||
|
items:
|
||
|
- description: XUSB pad controller interrupt
|
||
|
|
||
|
resets:
|
||
|
items:
|
||
|
- description: pad controller reset
|
||
|
|
||
|
reset-names:
|
||
|
items:
|
||
|
- const: padctl
|
||
|
|
||
|
avdd-usb-supply:
|
||
|
description: USB I/Os, VBUS, ID, REXT, D+/D- power supply. Must
|
||
|
supply 3.3 V.
|
||
|
|
||
|
vclamp-usb-supply:
|
||
|
description: Bias rail for USB pad. Must supply 1.8 V.
|
||
|
|
||
|
pads:
|
||
|
description: A required child node named "pads" contains a list of
|
||
|
subnodes, one for each of the pads exposed by the XUSB pad controller.
|
||
|
Each pad may need additional resources that can be referenced in its
|
||
|
pad node.
|
||
|
|
||
|
The "status" property is used to enable or disable the use of a pad.
|
||
|
If set to "disabled", the pad will not be used on the given board. In
|
||
|
order to use the pad and any of its lanes, this property must be set
|
||
|
to "okay" or absent.
|
||
|
type: object
|
||
|
additionalProperties: false
|
||
|
properties:
|
||
|
usb2:
|
||
|
type: object
|
||
|
additionalProperties: false
|
||
|
properties:
|
||
|
clocks:
|
||
|
items:
|
||
|
- description: USB2 tracking clock
|
||
|
|
||
|
clock-names:
|
||
|
items:
|
||
|
- const: trk
|
||
|
|
||
|
lanes:
|
||
|
type: object
|
||
|
additionalProperties: false
|
||
|
properties:
|
||
|
usb2-0:
|
||
|
type: object
|
||
|
additionalProperties: false
|
||
|
properties:
|
||
|
"#phy-cells":
|
||
|
const: 0
|
||
|
|
||
|
nvidia,function:
|
||
|
description: Function selection for this lane.
|
||
|
$ref: /schemas/types.yaml#/definitions/string
|
||
|
enum: [ xusb ]
|
||
|
|
||
|
usb2-1:
|
||
|
type: object
|
||
|
additionalProperties: false
|
||
|
properties:
|
||
|
"#phy-cells":
|
||
|
const: 0
|
||
|
|
||
|
nvidia,function:
|
||
|
description: Function selection for this lane.
|
||
|
$ref: /schemas/types.yaml#/definitions/string
|
||
|
enum: [ xusb ]
|
||
|
|
||
|
usb2-2:
|
||
|
type: object
|
||
|
additionalProperties: false
|
||
|
properties:
|
||
|
"#phy-cells":
|
||
|
const: 0
|
||
|
|
||
|
nvidia,function:
|
||
|
description: Function selection for this lane.
|
||
|
$ref: /schemas/types.yaml#/definitions/string
|
||
|
enum: [ xusb ]
|
||
|
|
||
|
usb2-3:
|
||
|
type: object
|
||
|
additionalProperties: false
|
||
|
properties:
|
||
|
"#phy-cells":
|
||
|
const: 0
|
||
|
|
||
|
nvidia,function:
|
||
|
description: Function selection for this lane.
|
||
|
$ref: /schemas/types.yaml#/definitions/string
|
||
|
enum: [ xusb ]
|
||
|
|
||
|
usb3:
|
||
|
type: object
|
||
|
additionalProperties: false
|
||
|
properties:
|
||
|
lanes:
|
||
|
type: object
|
||
|
additionalProperties: false
|
||
|
properties:
|
||
|
usb3-0:
|
||
|
type: object
|
||
|
additionalProperties: false
|
||
|
properties:
|
||
|
"#phy-cells":
|
||
|
const: 0
|
||
|
|
||
|
nvidia,function:
|
||
|
description: Function selection for this lane.
|
||
|
$ref: /schemas/types.yaml#/definitions/string
|
||
|
enum: [ xusb ]
|
||
|
|
||
|
usb3-1:
|
||
|
type: object
|
||
|
additionalProperties: false
|
||
|
properties:
|
||
|
"#phy-cells":
|
||
|
const: 0
|
||
|
|
||
|
nvidia,function:
|
||
|
description: Function selection for this lane.
|
||
|
$ref: /schemas/types.yaml#/definitions/string
|
||
|
enum: [ xusb ]
|
||
|
|
||
|
usb3-2:
|
||
|
type: object
|
||
|
additionalProperties: false
|
||
|
properties:
|
||
|
"#phy-cells":
|
||
|
const: 0
|
||
|
|
||
|
nvidia,function:
|
||
|
description: Function selection for this lane.
|
||
|
$ref: /schemas/types.yaml#/definitions/string
|
||
|
enum: [ xusb ]
|
||
|
|
||
|
usb3-3:
|
||
|
type: object
|
||
|
additionalProperties: false
|
||
|
properties:
|
||
|
"#phy-cells":
|
||
|
const: 0
|
||
|
|
||
|
nvidia,function:
|
||
|
description: Function selection for this lane.
|
||
|
$ref: /schemas/types.yaml#/definitions/string
|
||
|
enum: [ xusb ]
|
||
|
|
||
|
ports:
|
||
|
description: A required child node named "ports" contains a list of
|
||
|
subnodes, one for each of the ports exposed by the XUSB pad controller.
|
||
|
Each port may need additional resources that can be referenced in its
|
||
|
port node.
|
||
|
|
||
|
The "status" property is used to enable or disable the use of a port.
|
||
|
If set to "disabled", the port will not be used on the given board. In
|
||
|
order to use the port, this property must be set to "okay".
|
||
|
type: object
|
||
|
additionalProperties: false
|
||
|
properties:
|
||
|
usb2-0:
|
||
|
type: object
|
||
|
additionalProperties: false
|
||
|
properties:
|
||
|
# no need to further describe this because the connector will
|
||
|
# match on gpio-usb-b-connector or usb-b-connector and cause
|
||
|
# that binding to be selected for the subnode
|
||
|
connector:
|
||
|
type: object
|
||
|
|
||
|
mode:
|
||
|
description: A string that determines the mode in which to
|
||
|
run the port.
|
||
|
$ref: /schemas/types.yaml#/definitions/string
|
||
|
enum: [ host, peripheral, otg ]
|
||
|
|
||
|
nvidia,internal:
|
||
|
description: A boolean property whose presence determines
|
||
|
that a port is internal. In the absence of this property
|
||
|
the port is considered to be external.
|
||
|
$ref: /schemas/types.yaml#/definitions/flag
|
||
|
|
||
|
usb-role-switch:
|
||
|
description: |
|
||
|
A boolean property whole presence indicates that the port
|
||
|
supports OTG or peripheral mode. If present, the port
|
||
|
supports switching between USB host and peripheral roles.
|
||
|
A connector must be added as a subnode in that case.
|
||
|
|
||
|
See ../connector/usb-connector.yaml.
|
||
|
|
||
|
vbus-supply:
|
||
|
description: A phandle to the regulator supplying the VBUS
|
||
|
voltage.
|
||
|
|
||
|
dependencies:
|
||
|
usb-role-switch: [ connector ]
|
||
|
|
||
|
usb2-1:
|
||
|
type: object
|
||
|
additionalProperties: false
|
||
|
properties:
|
||
|
# no need to further describe this because the connector will
|
||
|
# match on gpio-usb-b-connector or usb-b-connector and cause
|
||
|
# that binding to be selected for the subnode
|
||
|
connector:
|
||
|
type: object
|
||
|
|
||
|
mode:
|
||
|
description: A string that determines the mode in which to
|
||
|
run the port.
|
||
|
$ref: /schemas/types.yaml#/definitions/string
|
||
|
enum: [ host, peripheral, otg ]
|
||
|
|
||
|
nvidia,internal:
|
||
|
description: A boolean property whose presence determines
|
||
|
that a port is internal. In the absence of this property
|
||
|
the port is considered to be external.
|
||
|
$ref: /schemas/types.yaml#/definitions/flag
|
||
|
|
||
|
usb-role-switch:
|
||
|
description: |
|
||
|
A boolean property whole presence indicates that the port
|
||
|
supports OTG or peripheral mode. If present, the port
|
||
|
supports switching between USB host and peripheral roles.
|
||
|
A connector must be added as a subnode in that case.
|
||
|
|
||
|
See ../connector/usb-connector.yaml.
|
||
|
|
||
|
vbus-supply:
|
||
|
description: A phandle to the regulator supplying the VBUS
|
||
|
voltage.
|
||
|
|
||
|
dependencies:
|
||
|
usb-role-switch: [ connector ]
|
||
|
|
||
|
usb2-2:
|
||
|
type: object
|
||
|
additionalProperties: false
|
||
|
properties:
|
||
|
# no need to further describe this because the connector will
|
||
|
# match on gpio-usb-b-connector or usb-b-connector and cause
|
||
|
# that binding to be selected for the subnode
|
||
|
connector:
|
||
|
type: object
|
||
|
|
||
|
mode:
|
||
|
description: A string that determines the mode in which to
|
||
|
run the port.
|
||
|
$ref: /schemas/types.yaml#/definitions/string
|
||
|
enum: [ host, peripheral, otg ]
|
||
|
|
||
|
nvidia,internal:
|
||
|
description: A boolean property whose presence determines
|
||
|
that a port is internal. In the absence of this property
|
||
|
the port is considered to be external.
|
||
|
$ref: /schemas/types.yaml#/definitions/flag
|
||
|
|
||
|
usb-role-switch:
|
||
|
description: |
|
||
|
A boolean property whole presence indicates that the port
|
||
|
supports OTG or peripheral mode. If present, the port
|
||
|
supports switching between USB host and peripheral roles.
|
||
|
A connector must be added as a subnode in that case.
|
||
|
|
||
|
See ../connector/usb-connector.yaml.
|
||
|
|
||
|
vbus-supply:
|
||
|
description: A phandle to the regulator supplying the VBUS
|
||
|
voltage.
|
||
|
|
||
|
dependencies:
|
||
|
usb-role-switch: [ connector ]
|
||
|
|
||
|
usb2-3:
|
||
|
type: object
|
||
|
additionalProperties: false
|
||
|
properties:
|
||
|
# no need to further describe this because the connector will
|
||
|
# match on gpio-usb-b-connector or usb-b-connector and cause
|
||
|
# that binding to be selected for the subnode
|
||
|
connector:
|
||
|
type: object
|
||
|
|
||
|
mode:
|
||
|
description: A string that determines the mode in which to
|
||
|
run the port.
|
||
|
$ref: /schemas/types.yaml#/definitions/string
|
||
|
enum: [ host, peripheral, otg ]
|
||
|
|
||
|
nvidia,internal:
|
||
|
description: A boolean property whose presence determines
|
||
|
that a port is internal. In the absence of this property
|
||
|
the port is considered to be external.
|
||
|
$ref: /schemas/types.yaml#/definitions/flag
|
||
|
|
||
|
usb-role-switch:
|
||
|
description: |
|
||
|
A boolean property whole presence indicates that the port
|
||
|
supports OTG or peripheral mode. If present, the port
|
||
|
supports switching between USB host and peripheral roles.
|
||
|
A connector must be added as a subnode in that case.
|
||
|
|
||
|
See ../connector/usb-connector.yaml.
|
||
|
|
||
|
vbus-supply:
|
||
|
description: A phandle to the regulator supplying the VBUS
|
||
|
voltage.
|
||
|
|
||
|
dependencies:
|
||
|
usb-role-switch: [ connector ]
|
||
|
|
||
|
usb3-0:
|
||
|
type: object
|
||
|
additionalProperties: false
|
||
|
properties:
|
||
|
maximum-speed:
|
||
|
description: A string property that specifies the maximum
|
||
|
supported speed of a USB3 port.
|
||
|
$ref: /schemas/types.yaml#/definitions/string
|
||
|
oneOf:
|
||
|
- description: The USB3 port supports USB 3.1 Gen 2 speed.
|
||
|
This is the default.
|
||
|
const: super-speed-plus
|
||
|
- description: The USB3 port supports USB 3.1 Gen 1 speed
|
||
|
only.
|
||
|
const: super-speed
|
||
|
|
||
|
nvidia,internal:
|
||
|
description: A boolean property whose presence determines
|
||
|
that a port is internal. In the absence of this property
|
||
|
the port is considered to be external.
|
||
|
$ref: /schemas/types.yaml#/definitions/flag
|
||
|
|
||
|
nvidia,usb2-companion:
|
||
|
description: A single cell that specifies the physical port
|
||
|
number to map this super-speed USB port to. The range of
|
||
|
valid port numbers varies with the SoC generation.
|
||
|
$ref: /schemas/types.yaml#/definitions/uint32
|
||
|
enum: [ 0, 1, 2, 3 ]
|
||
|
|
||
|
vbus-supply:
|
||
|
description: A phandle to the regulator supplying the VBUS
|
||
|
voltage.
|
||
|
|
||
|
usb3-1:
|
||
|
type: object
|
||
|
additionalProperties: false
|
||
|
properties:
|
||
|
maximum-speed:
|
||
|
description: A string property that specifies the maximum
|
||
|
supported speed of a USB3 port.
|
||
|
$ref: /schemas/types.yaml#/definitions/string
|
||
|
oneOf:
|
||
|
- description: The USB3 port supports USB 3.1 Gen 2 speed.
|
||
|
This is the default.
|
||
|
const: super-speed-plus
|
||
|
- description: The USB3 port supports USB 3.1 Gen 1 speed
|
||
|
only.
|
||
|
const: super-speed
|
||
|
|
||
|
nvidia,internal:
|
||
|
description: A boolean property whose presence determines
|
||
|
that a port is internal. In the absence of this property
|
||
|
the port is considered to be external.
|
||
|
$ref: /schemas/types.yaml#/definitions/flag
|
||
|
|
||
|
nvidia,usb2-companion:
|
||
|
description: A single cell that specifies the physical port
|
||
|
number to map this super-speed USB port to. The range of
|
||
|
valid port numbers varies with the SoC generation.
|
||
|
$ref: /schemas/types.yaml#/definitions/uint32
|
||
|
enum: [ 0, 1, 2, 3 ]
|
||
|
|
||
|
vbus-supply:
|
||
|
description: A phandle to the regulator supplying the VBUS
|
||
|
voltage.
|
||
|
|
||
|
usb3-2:
|
||
|
type: object
|
||
|
additionalProperties: false
|
||
|
properties:
|
||
|
maximum-speed:
|
||
|
description: A string property that specifies the maximum
|
||
|
supported speed of a USB3 port.
|
||
|
$ref: /schemas/types.yaml#/definitions/string
|
||
|
oneOf:
|
||
|
- description: The USB3 port supports USB 3.1 Gen 2 speed.
|
||
|
This is the default.
|
||
|
const: super-speed-plus
|
||
|
- description: The USB3 port supports USB 3.1 Gen 1 speed
|
||
|
only.
|
||
|
const: super-speed
|
||
|
|
||
|
nvidia,internal:
|
||
|
description: A boolean property whose presence determines
|
||
|
that a port is internal. In the absence of this property
|
||
|
the port is considered to be external.
|
||
|
$ref: /schemas/types.yaml#/definitions/flag
|
||
|
|
||
|
nvidia,usb2-companion:
|
||
|
description: A single cell that specifies the physical port
|
||
|
number to map this super-speed USB port to. The range of
|
||
|
valid port numbers varies with the SoC generation.
|
||
|
$ref: /schemas/types.yaml#/definitions/uint32
|
||
|
enum: [ 0, 1, 2, 3 ]
|
||
|
|
||
|
vbus-supply:
|
||
|
description: A phandle to the regulator supplying the VBUS
|
||
|
voltage.
|
||
|
|
||
|
usb3-3:
|
||
|
type: object
|
||
|
additionalProperties: false
|
||
|
properties:
|
||
|
maximum-speed:
|
||
|
description: A string property that specifies the maximum
|
||
|
supported speed of a USB3 port.
|
||
|
$ref: /schemas/types.yaml#/definitions/string
|
||
|
oneOf:
|
||
|
- description: The USB3 port supports USB 3.1 Gen 2 speed.
|
||
|
This is the default.
|
||
|
const: super-speed-plus
|
||
|
- description: The USB3 port supports USB 3.1 Gen 1 speed
|
||
|
only.
|
||
|
const: super-speed
|
||
|
|
||
|
nvidia,internal:
|
||
|
description: A boolean property whose presence determines
|
||
|
that a port is internal. In the absence of this property
|
||
|
the port is considered to be external.
|
||
|
$ref: /schemas/types.yaml#/definitions/flag
|
||
|
|
||
|
nvidia,usb2-companion:
|
||
|
description: A single cell that specifies the physical port
|
||
|
number to map this super-speed USB port to. The range of
|
||
|
valid port numbers varies with the SoC generation.
|
||
|
$ref: /schemas/types.yaml#/definitions/uint32
|
||
|
enum: [ 0, 1, 2, 3 ]
|
||
|
|
||
|
vbus-supply:
|
||
|
description: A phandle to the regulator supplying the VBUS
|
||
|
voltage.
|
||
|
|
||
|
additionalProperties: false
|
||
|
|
||
|
required:
|
||
|
- compatible
|
||
|
- reg
|
||
|
- resets
|
||
|
- reset-names
|
||
|
- avdd-usb-supply
|
||
|
- vclamp-usb-supply
|
||
|
|
||
|
examples:
|
||
|
- |
|
||
|
#include <dt-bindings/clock/tegra194-clock.h>
|
||
|
#include <dt-bindings/gpio/tegra194-gpio.h>
|
||
|
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
||
|
#include <dt-bindings/reset/tegra194-reset.h>
|
||
|
|
||
|
padctl@3520000 {
|
||
|
compatible = "nvidia,tegra194-xusb-padctl";
|
||
|
reg = <0x03520000 0x1000>,
|
||
|
<0x03540000 0x1000>;
|
||
|
reg-names = "padctl", "ao";
|
||
|
interrupts = <GIC_SPI 167 IRQ_TYPE_LEVEL_HIGH>;
|
||
|
|
||
|
resets = <&bpmp TEGRA194_RESET_XUSB_PADCTL>;
|
||
|
reset-names = "padctl";
|
||
|
|
||
|
avdd-usb-supply = <&vdd_usb_3v3>;
|
||
|
vclamp-usb-supply = <&vdd_1v8ao>;
|
||
|
|
||
|
pads {
|
||
|
usb2 {
|
||
|
clocks = <&bpmp TEGRA194_CLK_USB2_TRK>;
|
||
|
clock-names = "trk";
|
||
|
|
||
|
lanes {
|
||
|
usb2-0 {
|
||
|
nvidia,function = "xusb";
|
||
|
status = "disabled";
|
||
|
#phy-cells = <0>;
|
||
|
};
|
||
|
|
||
|
usb2-1 {
|
||
|
nvidia,function = "xusb";
|
||
|
#phy-cells = <0>;
|
||
|
};
|
||
|
|
||
|
usb2-2 {
|
||
|
nvidia,function = "xusb";
|
||
|
status = "disabled";
|
||
|
#phy-cells = <0>;
|
||
|
};
|
||
|
|
||
|
usb2-3 {
|
||
|
nvidia,function = "xusb";
|
||
|
#phy-cells = <0>;
|
||
|
};
|
||
|
};
|
||
|
};
|
||
|
|
||
|
usb3 {
|
||
|
lanes {
|
||
|
usb3-0 {
|
||
|
nvidia,function = "xusb";
|
||
|
#phy-cells = <0>;
|
||
|
};
|
||
|
|
||
|
usb3-1 {
|
||
|
nvidia,function = "xusb";
|
||
|
status = "disabled";
|
||
|
#phy-cells = <0>;
|
||
|
};
|
||
|
|
||
|
usb3-2 {
|
||
|
nvidia,function = "xusb";
|
||
|
status = "disabled";
|
||
|
#phy-cells = <0>;
|
||
|
};
|
||
|
|
||
|
usb3-3 {
|
||
|
nvidia,function = "xusb";
|
||
|
#phy-cells = <0>;
|
||
|
};
|
||
|
};
|
||
|
};
|
||
|
};
|
||
|
|
||
|
ports {
|
||
|
usb2-0 {
|
||
|
status = "disabled";
|
||
|
};
|
||
|
|
||
|
usb2-1 {
|
||
|
vbus-supply = <&vdd_5v0_sys>;
|
||
|
mode = "host";
|
||
|
};
|
||
|
|
||
|
usb2-2 {
|
||
|
status = "disabled";
|
||
|
};
|
||
|
|
||
|
usb2-3 {
|
||
|
vbus-supply = <&vdd_5v_sata>;
|
||
|
mode = "host";
|
||
|
};
|
||
|
|
||
|
usb3-0 {
|
||
|
vbus-supply = <&vdd_5v0_sys>;
|
||
|
nvidia,usb2-companion = <1>;
|
||
|
};
|
||
|
|
||
|
usb3-1 {
|
||
|
status = "disabled";
|
||
|
};
|
||
|
|
||
|
usb3-2 {
|
||
|
status = "disabled";
|
||
|
};
|
||
|
|
||
|
usb3-3 {
|
||
|
maximum-speed = "super-speed";
|
||
|
vbus-supply = <&vdd_5v0_sys>;
|
||
|
nvidia,usb2-companion = <3>;
|
||
|
};
|
||
|
};
|
||
|
};
|