Resguardo inicial

This commit is contained in:
lastdragon
2026-09-06 12:53:21 -06:00
parent 662efe3c2a
commit ad2088d178
94853 changed files with 43200404 additions and 0 deletions
@@ -0,0 +1,108 @@
# SPDX-License-Identifier: GPL-2.0
%YAML 1.2
---
$id: http://devicetree.org/schemas/usb/allwinner,sun4i-a10-musb.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Allwinner A10 mUSB OTG Controller
maintainers:
- Chen-Yu Tsai <wens@csie.org>
- Maxime Ripard <mripard@kernel.org>
properties:
compatible:
oneOf:
- enum:
- allwinner,sun4i-a10-musb
- allwinner,sun6i-a31-musb
- allwinner,sun8i-a33-musb
- allwinner,sun8i-h3-musb
- allwinner,suniv-f1c100s-musb
- items:
- enum:
- allwinner,sun8i-a83t-musb
- allwinner,sun20i-d1-musb
- allwinner,sun50i-a100-musb
- allwinner,sun50i-h6-musb
- allwinner,sun55i-a523-musb
- const: allwinner,sun8i-a33-musb
- items:
- const: allwinner,sun50i-h616-musb
- const: allwinner,sun8i-h3-musb
reg:
maxItems: 1
interrupts:
maxItems: 1
interrupt-names:
const: mc
clocks:
maxItems: 1
resets:
maxItems: 1
phys:
maxItems: 1
phy-names:
const: usb
extcon:
description: Extcon specifier for the OTG PHY
dr_mode:
enum:
- host
- otg
- peripheral
allwinner,sram:
description: Phandle to the device SRAM
$ref: /schemas/types.yaml#/definitions/phandle-array
required:
- compatible
- reg
- interrupts
- interrupt-names
- clocks
- phys
- phy-names
- dr_mode
- extcon
if:
properties:
compatible:
contains:
enum:
- allwinner,sun6i-a31-musb
- allwinner,sun8i-a33-musb
- allwinner,sun8i-h3-musb
then:
required:
- resets
additionalProperties: false
examples:
- |
usb_otg: usb@1c13000 {
compatible = "allwinner,sun4i-a10-musb";
reg = <0x01c13000 0x0400>;
clocks = <&ahb_gates 0>;
interrupts = <38>;
interrupt-names = "mc";
phys = <&usbphy 0>;
phy-names = "usb";
extcon = <&usbphy 0>;
dr_mode = "peripheral";
};
...
@@ -0,0 +1,200 @@
AM33xx MUSB
~~~~~~~~~~~~~~~
- compatible: ti,am33xx-usb
- reg: offset and length of the usbss register sets
- ti,hwmods : must be "usb_otg_hs"
The glue layer contains multiple child nodes. It is required to have
at least a control module node, USB node and a PHY node. The second USB
node and its PHY node are optional. The DMA node is also optional.
Reset module
~~~~~~~~~~~~
- compatible: ti,am335x-usb-ctrl-module
- reg: offset and length of the "USB control registers" in the "Control
Module" block. A second offset and length for the USB wake up control
in the same memory block.
- reg-names: "phy_ctrl" for the "USB control registers" and "wakeup" for
the USB wake up control register.
USB PHY
~~~~~~~
compatible: ti,am335x-usb-phy
reg: offset and length of the "USB PHY" register space
ti,ctrl_mod: reference to the "reset module" node
reg-names: phy
The PHY should have a "phy" alias numbered properly in the alias
node.
USB
~~~
- compatible: ti,musb-am33xx
- reg: offset and length of "USB Controller Registers", and offset and
length of "USB Core" register space.
- reg-names: control for the ""USB Controller Registers" and "mc" for
"USB Core" register space
- interrupts: USB interrupt number
- interrupt-names: mc
- dr_mode: Should be one of "host", "peripheral" or "otg".
- mentor,multipoint: Should be "1" indicating the musb controller supports
multipoint. This is a MUSB configuration-specific setting.
- mentor,num-eps: Specifies the number of endpoints. This is also a
MUSB configuration-specific setting. Should be set to "16"
- mentor,ram-bits: Specifies the ram address size. Should be set to "12"
- mentor,power: Should be "500". This signifies the controller can supply up to
500mA when operating in host mode.
- phys: reference to the USB phy
- dmas: specifies the dma channels
- dma-names: specifies the names of the channels. Use "rxN" for receive
and "txN" for transmit endpoints. N specifies the endpoint number.
The controller should have an "usb" alias numbered properly in the alias
node.
DMA
~~~
- compatible: ti,am3359-cppi41
- reg: offset and length of the following register spaces: USBSS, USB
CPPI DMA Controller, USB CPPI DMA Scheduler, USB Queue Manager
- reg-names: glue, controller, scheduler, queuemgr
- #dma-cells: should be set to 2. The first number represents the
endpoint number (0 … 14 for endpoints 1 … 15 on instance 0 and 15 … 29
for endpoints 1 … 15 on instance 1). The second number is 0 for RX and
1 for TX transfers.
- dma-channels: should be set to 30 representing the 15 endpoints for
each USB instance.
- #dma-channels: deprecated
Example:
~~~~~~~~
The following example contains all the nodes as used on am335x-evm:
aliases {
usb0 = &usb0;
usb1 = &usb1;
phy0 = &usb0_phy;
phy1 = &usb1_phy;
};
usb: usb@47400000 {
compatible = "ti,am33xx-usb";
reg = <0x47400000 0x1000>;
ranges;
#address-cells = <1>;
#size-cells = <1>;
ti,hwmods = "usb_otg_hs";
ctrl_mod: control@44e10000 {
compatible = "ti,am335x-usb-ctrl-module";
reg = <0x44e10620 0x10
0x44e10648 0x4>;
reg-names = "phy_ctrl", "wakeup";
};
usb0_phy: usb-phy@47401300 {
compatible = "ti,am335x-usb-phy";
reg = <0x47401300 0x100>;
reg-names = "phy";
ti,ctrl_mod = <&ctrl_mod>;
#phy-cells = <0>;
};
usb0: usb@47401000 {
compatible = "ti,musb-am33xx";
reg = <0x47401400 0x400
0x47401000 0x200>;
reg-names = "mc", "control";
interrupts = <18>;
interrupt-names = "mc";
dr_mode = "otg"
mentor,multipoint = <1>;
mentor,num-eps = <16>;
mentor,ram-bits = <12>;
mentor,power = <500>;
phys = <&usb0_phy>;
dmas = <&cppi41dma 0 0 &cppi41dma 1 0
&cppi41dma 2 0 &cppi41dma 3 0
&cppi41dma 4 0 &cppi41dma 5 0
&cppi41dma 6 0 &cppi41dma 7 0
&cppi41dma 8 0 &cppi41dma 9 0
&cppi41dma 10 0 &cppi41dma 11 0
&cppi41dma 12 0 &cppi41dma 13 0
&cppi41dma 14 0 &cppi41dma 0 1
&cppi41dma 1 1 &cppi41dma 2 1
&cppi41dma 3 1 &cppi41dma 4 1
&cppi41dma 5 1 &cppi41dma 6 1
&cppi41dma 7 1 &cppi41dma 8 1
&cppi41dma 9 1 &cppi41dma 10 1
&cppi41dma 11 1 &cppi41dma 12 1
&cppi41dma 13 1 &cppi41dma 14 1>;
dma-names =
"rx1", "rx2", "rx3", "rx4", "rx5", "rx6", "rx7",
"rx8", "rx9", "rx10", "rx11", "rx12", "rx13",
"rx14", "rx15",
"tx1", "tx2", "tx3", "tx4", "tx5", "tx6", "tx7",
"tx8", "tx9", "tx10", "tx11", "tx12", "tx13",
"tx14", "tx15";
};
usb1_phy: usb-phy@47401b00 {
compatible = "ti,am335x-usb-phy";
reg = <0x47401b00 0x100>;
reg-names = "phy";
ti,ctrl_mod = <&ctrl_mod>;
#phy-cells = <0>;
};
usb1: usb@47401800 {
compatible = "ti,musb-am33xx";
reg = <0x47401c00 0x400
0x47401800 0x200>;
reg-names = "mc", "control";
interrupts = <19>;
interrupt-names = "mc";
dr_mode = "host"
mentor,multipoint = <1>;
mentor,num-eps = <16>;
mentor,ram-bits = <12>;
mentor,power = <500>;
phys = <&usb1_phy>;
dmas = <&cppi41dma 15 0 &cppi41dma 16 0
&cppi41dma 17 0 &cppi41dma 18 0
&cppi41dma 19 0 &cppi41dma 20 0
&cppi41dma 21 0 &cppi41dma 22 0
&cppi41dma 23 0 &cppi41dma 24 0
&cppi41dma 25 0 &cppi41dma 26 0
&cppi41dma 27 0 &cppi41dma 28 0
&cppi41dma 29 0 &cppi41dma 15 1
&cppi41dma 16 1 &cppi41dma 17 1
&cppi41dma 18 1 &cppi41dma 19 1
&cppi41dma 20 1 &cppi41dma 21 1
&cppi41dma 22 1 &cppi41dma 23 1
&cppi41dma 24 1 &cppi41dma 25 1
&cppi41dma 26 1 &cppi41dma 27 1
&cppi41dma 28 1 &cppi41dma 29 1>;
dma-names =
"rx1", "rx2", "rx3", "rx4", "rx5", "rx6", "rx7",
"rx8", "rx9", "rx10", "rx11", "rx12", "rx13",
"rx14", "rx15",
"tx1", "tx2", "tx3", "tx4", "tx5", "tx6", "tx7",
"tx8", "tx9", "tx10", "tx11", "tx12", "tx13",
"tx14", "tx15";
};
cppi41dma: dma-controller@7402000 {
compatible = "ti,am3359-cppi41";
reg = <0x47400000 0x1000
0x47402000 0x1000
0x47403000 0x1000
0x47404000 0x4000>;
reg-names = "glue", "controller", "scheduler", "queuemgr";
interrupts = <17>;
interrupt-names = "glue";
#dma-cells = <2>;
dma-channels = <30>;
dma-requests = <256>;
};
};
@@ -0,0 +1,237 @@
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
# Copyright 2019 BayLibre, SAS
%YAML 1.2
---
$id: http://devicetree.org/schemas/usb/amlogic,meson-g12a-usb-ctrl.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Amlogic Meson G12A DWC3 USB SoC Controller Glue
maintainers:
- Neil Armstrong <neil.armstrong@linaro.org>
description: |
The Amlogic G12A embeds a DWC3 USB IP Core configured for USB2 and USB3
in host-only mode, and a DWC2 IP Core configured for USB2 peripheral mode
only.
A glue connects the DWC3 core to USB2 PHYs and optionally to an USB3 PHY.
One of the USB2 PHYs can be re-routed in peripheral mode to a DWC2 USB IP.
The DWC3 Glue controls the PHY routing and power, an interrupt line is
connected to the Glue to serve as OTG ID change detection.
The Amlogic A1 embeds a DWC3 USB IP Core configured for USB2 in
host-only mode.
The Amlogic GXL, GXM & AXG SoCs doesn't embed an USB3 PHY.
properties:
compatible:
enum:
- amlogic,meson-gxl-usb-ctrl
- amlogic,meson-gxm-usb-ctrl
- amlogic,meson-axg-usb-ctrl
- amlogic,meson-g12a-usb-ctrl
- amlogic,meson-a1-usb-ctrl
ranges: true
"#address-cells":
enum: [ 1, 2 ]
"#size-cells":
enum: [ 1, 2 ]
clocks:
minItems: 1
maxItems: 3
clock-names:
minItems: 1
maxItems: 3
resets:
minItems: 1
reg:
maxItems: 1
interrupts:
maxItems: 1
phy-names:
minItems: 1
maxItems: 3
phys:
minItems: 1
maxItems: 3
dr_mode: true
power-domains:
maxItems: 1
vbus-supply:
description: VBUS power supply when used in OTG switchable mode
patternProperties:
"^usb@[0-9a-f]+$":
oneOf:
- $ref: dwc2.yaml#
- $ref: snps,dwc3.yaml#
additionalProperties: false
required:
- compatible
- "#address-cells"
- "#size-cells"
- ranges
- clocks
- resets
- reg
- interrupts
- phy-names
- phys
- dr_mode
allOf:
- if:
properties:
compatible:
enum:
- amlogic,meson-g12a-usb-ctrl
then:
properties:
phy-names:
minItems: 2
items:
- const: usb2-phy0 # USB2 PHY0 if USBHOST_A port is used
- const: usb2-phy1 # USB2 PHY1 if USBOTG_B port is used
- const: usb3-phy0 # USB3 PHY if USB3_0 is used
- if:
properties:
compatible:
enum:
- amlogic,meson-gxl-usb-ctrl
then:
properties:
clocks:
minItems: 2
clock-names:
items:
- const: usb_ctrl
- const: ddr
phy-names:
items:
- const: usb2-phy0 # USB2 PHY0 if USBHOST_A port is used
- const: usb2-phy1 # USB2 PHY1 if USBOTG_B port is used
required:
- clock-names
- if:
properties:
compatible:
enum:
- amlogic,meson-gxm-usb-ctrl
then:
properties:
clocks:
minItems: 2
clock-names:
items:
- const: usb_ctrl
- const: ddr
phy-names:
items:
- const: usb2-phy0 # USB2 PHY0 if USBHOST_A port is used
- const: usb2-phy1 # USB2 PHY1 if USBOTG_B port is used
- const: usb2-phy2 # USB2 PHY2 if USBOTG_C port is used
required:
- clock-names
- if:
properties:
compatible:
enum:
- amlogic,meson-axg-usb-ctrl
then:
properties:
phy-names:
items:
- const: usb2-phy1 # USB2 PHY1 if USBOTG_B port is used
clocks:
minItems: 2
clock-names:
items:
- const: usb_ctrl
- const: ddr
required:
- clock-names
- if:
properties:
compatible:
enum:
- amlogic,meson-a1-usb-ctrl
then:
properties:
phy-names:
items:
- const: usb2-phy1 # USB2 PHY1 if USBOTG_B port is used
clocks:
minItems: 3
clock-names:
items:
- const: usb_ctrl
- const: usb_bus
- const: xtal_usb_ctrl
required:
- clock-names
examples:
- |
usb: usb@ffe09000 {
compatible = "amlogic,meson-g12a-usb-ctrl";
reg = <0xffe09000 0xa0>;
interrupts = <16>;
#address-cells = <1>;
#size-cells = <1>;
ranges;
clocks = <&clkc_usb>;
resets = <&reset_usb>;
dr_mode = "otg";
phys = <&usb2_phy0>, <&usb2_phy1>, <&usb3_phy0>;
phy-names = "usb2-phy0", "usb2-phy1", "usb3-phy0";
dwc2: usb@ff400000 {
compatible = "amlogic,meson-g12a-usb", "snps,dwc2";
reg = <0xff400000 0x40000>;
interrupts = <31>;
clocks = <&clkc_usb1>;
clock-names = "otg";
phys = <&usb2_phy1>;
dr_mode = "peripheral";
g-rx-fifo-size = <192>;
g-np-tx-fifo-size = <128>;
g-tx-fifo-size = <128 128 16 16 16>;
};
dwc3: usb@ff500000 {
compatible = "snps,dwc3";
reg = <0xff500000 0x100000>;
interrupts = <30>;
dr_mode = "host";
snps,dis_u2_susphy_quirk;
snps,quirk-frame-length-adjustment = <0x20>;
};
};
@@ -0,0 +1,70 @@
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/usb/analogix,anx7411.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Analogix ANX7411 Type-C controller
maintainers:
- Xin Ji <xji@analogixsemi.com>
properties:
compatible:
enum:
- analogix,anx7411
reg:
maxItems: 1
interrupts:
maxItems: 1
connector:
type: object
$ref: ../connector/usb-connector.yaml
properties:
compatible:
const: usb-c-connector
required:
- compatible
- reg
- connector
additionalProperties: false
examples:
- |
#include <dt-bindings/interrupt-controller/irq.h>
i2c {
#address-cells = <1>;
#size-cells = <0>;
typec@2c {
compatible = "analogix,anx7411";
reg = <0x2c>;
interrupts = <8 IRQ_TYPE_EDGE_FALLING>;
interrupt-parent = <&gpio0>;
typec_con: connector {
compatible = "usb-c-connector";
power-role = "dual";
data-role = "dual";
try-power-role = "source";
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
typec_con_ep: endpoint {
remote-endpoint = <&usbotg_hs_ep>;
};
};
};
};
};
};
...
@@ -0,0 +1,80 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/usb/apple,dwc3.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Apple Silicon DWC3 USB controller
maintainers:
- Sven Peter <sven@kernel.org>
description:
Apple Silicon SoCs use a Synopsys DesignWare DWC3 based controller for each of
their Type-C ports.
allOf:
- $ref: snps,dwc3-common.yaml#
properties:
compatible:
oneOf:
- items:
- enum:
- apple,t6000-dwc3
- apple,t6020-dwc3
- apple,t8112-dwc3
- const: apple,t8103-dwc3
- const: apple,t8103-dwc3
reg:
items:
- description: Core DWC3 region
- description: Apple-specific DWC3 region
reg-names:
items:
- const: dwc3-core
- const: dwc3-apple
interrupts:
maxItems: 1
iommus:
maxItems: 2
resets:
maxItems: 1
power-domains:
maxItems: 1
required:
- compatible
- reg
- reg-names
- interrupts
- iommus
- resets
- power-domains
- usb-role-switch
unevaluatedProperties: false
examples:
- |
#include <dt-bindings/interrupt-controller/apple-aic.h>
#include <dt-bindings/interrupt-controller/irq.h>
usb@82280000 {
compatible = "apple,t8103-dwc3";
reg = <0x82280000 0xcd00>, <0x8228cd00 0x3200>;
reg-names = "dwc3-core", "dwc3-apple";
interrupts = <AIC_IRQ 777 IRQ_TYPE_LEVEL_HIGH>;
iommus = <&dwc3_0_dart_0 0>, <&dwc3_0_dart_1 1>;
power-domains = <&ps_atc0_usb>;
resets = <&atcphy0>;
usb-role-switch;
};
@@ -0,0 +1,52 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
# Copyright (c) 2020 Facebook Inc.
%YAML 1.2
---
$id: http://devicetree.org/schemas/usb/aspeed,ast2600-udc.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: ASPEED USB 2.0 Device Controller
maintainers:
- Neal Liu <neal_liu@aspeedtech.com>
description: |+
The ASPEED USB 2.0 Device Controller implements 1 control endpoint and
4 generic endpoints for AST260x.
Supports independent DMA channel for each generic endpoint.
Supports 32/256 stages descriptor mode for all generic endpoints.
properties:
compatible:
enum:
- aspeed,ast2600-udc
reg:
maxItems: 1
clocks:
maxItems: 1
interrupts:
maxItems: 1
required:
- compatible
- reg
- clocks
- interrupts
additionalProperties: false
examples:
- |
#include <dt-bindings/clock/aspeed-clock.h>
udc: usb@1e6a2000 {
compatible = "aspeed,ast2600-udc";
reg = <0x1e6a2000 0x300>;
interrupts = <9>;
clocks = <&syscon ASPEED_CLK_GATE_USBPORT2CLK>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_usb2bd_default>;
};
@@ -0,0 +1,157 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
# Copyright (c) 2020 Facebook Inc.
%YAML 1.2
---
$id: http://devicetree.org/schemas/usb/aspeed,usb-vhub.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: ASPEED USB 2.0 Virtual Hub Controller
maintainers:
- Benjamin Herrenschmidt <benh@kernel.crashing.org>
description: |+
The ASPEED USB 2.0 Virtual Hub Controller implements 1 set of USB Hub
register and several sets of Device and Endpoint registers to support
the Virtual Hub's downstream USB devices.
Supported number of devices and endpoints vary depending on hardware
revisions. AST2400 and AST2500 Virtual Hub supports 5 downstream devices
and 15 generic endpoints, while AST2600 and AST2700 Virtual Hub supports
7 downstream devices and 21 generic endpoints.
properties:
compatible:
enum:
- aspeed,ast2400-usb-vhub
- aspeed,ast2500-usb-vhub
- aspeed,ast2600-usb-vhub
- aspeed,ast2700-usb-vhub
reg:
maxItems: 1
clocks:
maxItems: 1
resets:
maxItems: 1
interrupts:
maxItems: 1
aspeed,vhub-downstream-ports:
description: Number of downstream ports supported by the Virtual Hub
$ref: /schemas/types.yaml#/definitions/uint32
default: 5
minimum: 1
maximum: 7
aspeed,vhub-generic-endpoints:
description: Number of generic endpoints supported by the Virtual Hub
$ref: /schemas/types.yaml#/definitions/uint32
default: 15
minimum: 1
maximum: 21
vhub-vendor-id:
description: vhub Vendor ID
$ref: /schemas/types.yaml#/definitions/uint32
maximum: 65535
vhub-product-id:
description: vhub Product ID
$ref: /schemas/types.yaml#/definitions/uint32
maximum: 65535
vhub-device-revision:
description: vhub Device Revision in binary-coded decimal
$ref: /schemas/types.yaml#/definitions/uint32
maximum: 65535
vhub-strings:
type: object
additionalProperties: false
properties:
'#address-cells':
const: 1
'#size-cells':
const: 0
patternProperties:
'^string@[0-9a-f]+$':
type: object
additionalProperties: false
description: string descriptors of the specific language
properties:
reg:
maxItems: 1
description: 16-bit Language Identifier defined by USB-IF
manufacturer:
description: vhub manufacturer
$ref: /schemas/types.yaml#/definitions/string
product:
description: vhub product name
$ref: /schemas/types.yaml#/definitions/string
serial-number:
description: vhub device serial number
$ref: /schemas/types.yaml#/definitions/string
required:
- compatible
- reg
- clocks
- interrupts
- aspeed,vhub-downstream-ports
- aspeed,vhub-generic-endpoints
if:
properties:
compatible:
contains:
const: aspeed,ast2700-usb-vhub
then:
required:
- resets
else:
properties:
resets: false
additionalProperties: false
examples:
- |
#include <dt-bindings/clock/aspeed-clock.h>
vhub: usb-vhub@1e6a0000 {
compatible = "aspeed,ast2500-usb-vhub";
reg = <0x1e6a0000 0x300>;
interrupts = <5>;
clocks = <&syscon ASPEED_CLK_GATE_USBPORT1CLK>;
aspeed,vhub-downstream-ports = <5>;
aspeed,vhub-generic-endpoints = <15>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_usb2ad_default>;
vhub-vendor-id = <0x1d6b>;
vhub-product-id = <0x0107>;
vhub-device-revision = <0x0100>;
vhub-strings {
#address-cells = <1>;
#size-cells = <0>;
string@409 {
reg = <0x409>;
manufacturer = "ASPEED";
product = "USB Virtual Hub";
serial-number = "0000";
};
};
};
@@ -0,0 +1,76 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/usb/atmel,at91rm9200-udc.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Atmel AT91 USB Device Controller (UDC)
maintainers:
- Nicolas Ferre <nicolas.ferre@microchip.com>
- Alexandre Belloni <alexandre.belloni@bootlin.com>
description:
The Atmel AT91 USB Device Controller provides USB gadget (device-mode)
functionality on AT91 SoCs. It requires a peripheral clock and an AHB
clock for operation and may optionally control VBUS power through a GPIO.
properties:
compatible:
enum:
- atmel,at91rm9200-udc
- atmel,at91sam9260-udc
- atmel,at91sam9261-udc
- atmel,at91sam9263-udc
reg:
maxItems: 1
interrupts:
maxItems: 1
clocks:
maxItems: 2
clock-names:
items:
- const: pclk
- const: hclk
atmel,vbus-gpio:
description: GPIO used to enable or control VBUS power for the USB bus.
maxItems: 1
atmel,matrix:
$ref: /schemas/types.yaml#/definitions/phandle
description: Phandle to the Atmel bus matrix controller.
atmel,pullup-gpio:
description:
GPIO controlling the USB D+ pull-up resistor used to signal device
connection to the host.
maxItems: 1
required:
- compatible
- reg
- interrupts
- clocks
- clock-names
additionalProperties: false
examples:
- |
#include <dt-bindings/interrupt-controller/irq.h>
#include <dt-bindings/clock/at91.h>
#include <dt-bindings/gpio/gpio.h>
gadget@fffa4000 {
compatible = "atmel,at91rm9200-udc";
reg = <0xfffa4000 0x4000>;
interrupts = <11 IRQ_TYPE_LEVEL_HIGH 2>;
clocks = <&udc_clk>, <&udpck>;
clock-names = "pclk", "hclk";
atmel,vbus-gpio = <&pioC 5 GPIO_ACTIVE_HIGH>;
};
...
@@ -0,0 +1,74 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/usb/atmel,at91sam9rl-udc.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Atmel High-Speed USB Device Controller (USBA)
maintainers:
- Nicolas Ferre <nicolas.ferre@microchip.com>
- Alexandre Belloni <alexandre.belloni@bootlin.com>
description:
The Atmel High-Speed USB Device Controller (USBA) provides USB 2.0
high-speed gadget functionality on several Atmel and Microchip SoCs.
The controller requires a peripheral clock and a host clock for operation
and may optionally use a GPIO to detect VBUS presence.
properties:
compatible:
oneOf:
- enum:
- atmel,at91sam9rl-udc
- atmel,at91sam9g45-udc
- atmel,sama5d3-udc
- items:
- const: microchip,lan9662-udc
- const: atmel,sama5d3-udc
- const: microchip,sam9x60-udc
reg:
maxItems: 2
interrupts:
maxItems: 1
clocks:
maxItems: 2
clock-names:
minItems: 2
maxItems: 2
items:
enum: [pclk, hclk]
atmel,vbus-gpio:
description: GPIO used to detect the presence of VBUS, indicating that
the USB cable is connected.
maxItems: 1
required:
- compatible
- reg
- interrupts
- clocks
- clock-names
unevaluatedProperties: false
examples:
- |
#include <dt-bindings/interrupt-controller/irq.h>
#include <dt-bindings/clock/at91.h>
#include <dt-bindings/gpio/gpio.h>
gadget@fff78000 {
compatible = "atmel,at91sam9g45-udc";
reg = <0x00600000 0x80000
0xfff78000 0x400>;
interrupts = <27 IRQ_TYPE_LEVEL_HIGH 0>;
clocks = <&pmc PMC_TYPE_PERIPHERAL 27>, <&pmc PMC_TYPE_CORE PMC_UTMI>;
clock-names = "pclk", "hclk";
atmel,vbus-gpio = <&pioC 15 GPIO_ACTIVE_HIGH>;
};
...
@@ -0,0 +1,59 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/usb/brcm,bcm7445-ehci.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Broadcom STB USB EHCI Controller
allOf:
- $ref: usb-hcd.yaml
maintainers:
- Al Cooper <alcooperx@gmail.com>
properties:
compatible:
const: brcm,bcm7445-ehci
reg:
maxItems: 1
interrupts:
maxItems: 1
clocks:
maxItems: 1
description: Clock specifier for the EHCI clock
clock-names:
const: sw_usb
phys:
maxItems: 1
phy-names:
const: usbphy
required:
- compatible
- reg
- interrupts
- phys
- clocks
additionalProperties: false
examples:
- |
usb@f0b00300 {
compatible = "brcm,bcm7445-ehci";
reg = <0xf0b00300 0xa8>;
interrupts = <0x0 0x5a 0x0>;
phys = <&usbphy_0 0x0>;
phy-names = "usbphy";
clocks = <&usb20>;
clock-names = "sw_usb";
};
...
@@ -0,0 +1,50 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/usb/brcm,bdc.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Broadcom USB Device Controller (BDC)
maintainers:
- Al Cooper <alcooperx@gmail.com>
- Florian Fainelli <f.fainelli@gmail.com>
properties:
compatible:
items:
- enum:
- brcm,bdc-udc-v2
- brcm,bdc
reg:
maxItems: 1
interrupts:
maxItems: 1
phys:
minItems: 1
items:
- description: USB 2.0 or 3.0 PHY
- description: USB 3.0 PHY if there is a dedicated 2.0 PHY
clocks:
maxItems: 1
required:
- compatible
- reg
- interrupts
additionalProperties: false
examples:
- |
usb@f0b02000 {
compatible = "brcm,bdc-udc-v2";
reg = <0xf0b02000 0xfc4>;
interrupts = <0x0 0x60 0x0>;
phys = <&usbphy_0 0x0>;
clocks = <&sw_usbd>;
};
@@ -0,0 +1,73 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/usb/brcm,usb-pinmap.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Broadcom USB pin map Controller
maintainers:
- Al Cooper <alcooperx@gmail.com>
properties:
compatible:
items:
- const: brcm,usb-pinmap
reg:
maxItems: 1
interrupts:
maxItems: 1
description: Interrupt for signals mirrored to out-gpios.
in-gpios:
minItems: 1
maxItems: 2
description: Array of one or two GPIO pins used for input signals.
brcm,in-functions:
$ref: /schemas/types.yaml#/definitions/string-array
description: Array of input signal names, one per gpio in in-gpios.
brcm,in-masks:
$ref: /schemas/types.yaml#/definitions/uint32-array
description: Array of enable and mask pairs, one per gpio in-gpios.
out-gpios:
maxItems: 1
description: Array of one GPIO pin used for output signals.
brcm,out-functions:
$ref: /schemas/types.yaml#/definitions/string-array
description: Array of output signal names, one per gpio in out-gpios.
brcm,out-masks:
$ref: /schemas/types.yaml#/definitions/uint32-array
description: Array of enable, value, changed and clear masks, one
per gpio in out-gpios.
required:
- compatible
- reg
additionalProperties: false
dependencies:
in-gpios: [ interrupts ]
examples:
- |
usb_pinmap: usb-pinmap@22000d0 {
compatible = "brcm,usb-pinmap";
reg = <0x22000d0 0x4>;
in-gpios = <&gpio 18 0>, <&gpio 19 0>;
brcm,in-functions = "VBUS", "PWRFLT";
brcm,in-masks = <0x8000 0x40000 0x10000 0x80000>;
out-gpios = <&gpio 20 0>;
brcm,out-functions = "PWRON";
brcm,out-masks = <0x20000 0x800000 0x400000 0x200000>;
interrupts = <0x0 0xb2 0x4>;
};
...
@@ -0,0 +1,161 @@
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/usb/cdns,usb3.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Cadence USBSS and USBSSP DRD controller
maintainers:
- Pawel Laszczak <pawell@cadence.com>
description:
Cadence USB dual-role controller. Covers USBSS (SuperSpeed, USB 3.0) and
USBSSP (SuperSpeed Plus, USB 3.1 gen2x1). Both variants share the same
DRD/OTG register interface, so the driver auto-detects the controller
version at runtime.
properties:
compatible:
oneOf:
- const: cdns,usb3
- items:
- {}
- const: cdns,cdnsp
reg:
minItems: 2
maxItems: 3
reg-names:
minItems: 2
maxItems: 3
items:
enum: [ otg, xhci, dev ]
interrupts:
minItems: 2
items:
- description: XHCI host controller interrupt
- description: Device controller interrupt
- description: OTG/DRD controller interrupt
- description: interrupt used to wake up core, e.g when usbcmd.rs is
cleared by xhci core, this interrupt is optional
interrupt-names:
minItems: 2
items:
- const: host
- const: peripheral
- const: otg
- const: wakeup
port:
$ref: /schemas/graph.yaml#/properties/port
description:
This port is used with the 'usb-role-switch' property to connect the
cdns3 to type C connector.
maximum-speed:
enum: [super-speed-plus, super-speed, high-speed, full-speed]
phys:
minItems: 1
maxItems: 2
phy-names:
minItems: 1
maxItems: 2
items:
anyOf:
- const: cdns3,usb2-phy
- const: cdns3,usb3-phy
cdns,on-chip-buff-size:
description:
size of memory intended as internal memory for endpoints
buffers expressed in KB
$ref: /schemas/types.yaml#/definitions/uint16
cdns,phyrst-a-enable:
description: Enable resetting of PHY if Rx fail is detected
type: boolean
dependencies:
port: [ usb-role-switch ]
required:
- compatible
- reg
- reg-names
- interrupts
- interrupt-names
allOf:
- $ref: usb-drd.yaml#
- $ref: usb-xhci.yaml#
- if:
properties:
compatible:
contains:
const: cdns,cdnsp
then:
properties:
reg:
items:
- description: XHCI Host controller registers
- description: DEVICE controller registers
reg-names:
items:
- const: xhci
- const: dev
interrupts:
maxItems: 2
interrupt-names:
items:
- const: host
- const: peripheral
dr_mode:
enum: [host, peripheral]
else:
properties:
reg:
items:
- description: OTG controller registers
- description: XHCI Host controller registers
- description: DEVICE controller registers
reg-names:
items:
- const: otg
- const: xhci
- const: dev
interrupts:
minItems: 3
maxItems: 4
interrupt-names:
minItems: 3
unevaluatedProperties: false
examples:
- |
#include <dt-bindings/interrupt-controller/arm-gic.h>
bus {
#address-cells = <2>;
#size-cells = <2>;
usb@6000000 {
compatible = "cdns,usb3";
reg = <0x00 0x6000000 0x00 0x10000>,
<0x00 0x6010000 0x00 0x10000>,
<0x00 0x6020000 0x00 0x10000>;
reg-names = "otg", "xhci", "dev";
interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 102 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "host", "peripheral", "otg";
maximum-speed = "super-speed";
dr_mode = "otg";
};
};
@@ -0,0 +1,205 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/usb/chipidea,usb2-common.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: USB2 ChipIdea USB controller Common Properties
maintainers:
- Xu Yang <xu.yang_2@nxp.com>
properties:
reg:
minItems: 1
maxItems: 2
interrupts:
minItems: 1
maxItems: 2
clocks:
minItems: 1
maxItems: 3
clock-names:
minItems: 1
maxItems: 3
dr_mode: true
power-domains:
maxItems: 1
resets:
maxItems: 1
reset-names:
maxItems: 1
"#reset-cells":
const: 1
phy_type: true
iommus:
maxItems: 1
itc-setting:
description:
interrupt threshold control register control, the setting should be
aligned with ITC bits at register USBCMD.
$ref: /schemas/types.yaml#/definitions/uint32
ahb-burst-config:
description:
it is vendor dependent, the required value should be aligned with
AHBBRST at SBUSCFG, the range is from 0x0 to 0x7. This property is
used to change AHB burst configuration, check the chipidea spec for
meaning of each value. If this property is not existed, it will use
the reset value.
$ref: /schemas/types.yaml#/definitions/uint32
minimum: 0x0
maximum: 0x7
tx-burst-size-dword:
description:
it is vendor dependent, the tx burst size in dword (4 bytes), This
register represents the maximum length of a the burst in 32-bit
words while moving data from system memory to the USB bus, the value
of this property will only take effect if property "ahb-burst-config"
is set to 0, if this property is missing the reset default of the
hardware implementation will be used.
$ref: /schemas/types.yaml#/definitions/uint32
minimum: 0x0
maximum: 0x20
rx-burst-size-dword:
description:
it is vendor dependent, the rx burst size in dword (4 bytes), This
register represents the maximum length of a the burst in 32-bit words
while moving data from the USB bus to system memory, the value of
this property will only take effect if property "ahb-burst-config"
is set to 0, if this property is missing the reset default of the
hardware implementation will be used.
$ref: /schemas/types.yaml#/definitions/uint32
minimum: 0x0
maximum: 0x20
extcon:
description:
Phandles to external connector devices. First phandle should point
to external connector, which provide "USB" cable events, the second
should point to external connector device, which provide "USB-HOST"
cable events. If one of the external connector devices is not
required, empty <0> phandle should be specified.
$ref: /schemas/types.yaml#/definitions/phandle-array
minItems: 1
items:
- description: vbus extcon
maxItems: 1
- description: id extcon
maxItems: 1
phy-clkgate-delay-us:
description:
The delay time (us) between putting the PHY into low power mode and
gating the PHY clock.
non-zero-ttctrl-ttha:
description:
After setting this property, the value of register ttctrl.ttha
will be 0x7f; if not, the value will be 0x0, this is the default
value. It needs to be very carefully for setting this property, it
is recommended that consult with your IC engineer before setting
this value. On the most of chipidea platforms, the "usage_tt" flag
at RTL is 0, so this property only affects siTD.
If this property is not set, the max packet size is 1023 bytes, and
if the total of packet size for previous transactions are more than
256 bytes, it can't accept any transactions within this frame. The
use case is single transaction, but higher frame rate.
If this property is set, the max packet size is 188 bytes, it can
handle more transactions than above case, it can accept transactions
until it considers the left room size within frame is less than 188
bytes, software needs to make sure it does not send more than 90%
maximum_periodic_data_per_frame. The use case is multiple
transactions, but less frame rate.
type: boolean
mux-controls:
description:
The mux control for toggling host/device output of this controller.
It's expected that a mux state of 0 indicates device mode and a mux
state of 1 indicates host mode.
maxItems: 1
mux-control-names:
const: usb_switch
pinctrl-names:
description:
Names for optional pin modes in "default", "host", "device".
In case of HSIC-mode, "idle" and "active" pin modes are mandatory.
In this case, the "idle" state needs to pull down the data and
strobe pin and the "active" state needs to pull up the strobe pin.
oneOf:
- items:
- const: idle
- const: active
- items:
- const: default
- const: host
- const: device
- items:
- const: default
- enum:
- host
- device
- items:
- const: default
pinctrl-0:
maxItems: 1
pinctrl-1:
maxItems: 1
phys:
maxItems: 1
phy-names:
const: usb-phy
vbus-supply:
description: reference to the VBUS regulator.
usb-phy:
description: phandle for the PHY device. Use "phys" instead.
maxItems: 1
deprecated: true
port:
description:
Any connector to the data bus of this controller should be modelled
using the OF graph bindings specified, if the "usb-role-switch"
property is used.
$ref: /schemas/graph.yaml#/properties/port
reset-gpios:
maxItems: 1
dependencies:
port: [ usb-role-switch ]
mux-controls: [ mux-control-names ]
required:
- reg
- interrupts
allOf:
- $ref: usb-hcd.yaml#
- $ref: usb-drd.yaml#
additionalProperties: true
@@ -0,0 +1,309 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/usb/chipidea,usb2-imx.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: NXP USB2 ChipIdea USB controller
maintainers:
- Xu Yang <xu.yang_2@nxp.com>
properties:
compatible:
oneOf:
- enum:
- fsl,imx27-usb
- items:
- enum:
- fsl,imx23-usb
- fsl,imx25-usb
- fsl,imx28-usb
- fsl,imx35-usb
- fsl,imx50-usb
- fsl,imx51-usb
- fsl,imx53-usb
- fsl,imx6q-usb
- fsl,imx6sl-usb
- fsl,imx6sx-usb
- fsl,imx6ul-usb
- fsl,imx7d-usb
- fsl,vf610-usb
- const: fsl,imx27-usb
- items:
- enum:
- fsl,imx8dxl-usb
- fsl,imx8ulp-usb
- const: fsl,imx7ulp-usb
- const: fsl,imx6ul-usb
- items:
- enum:
- fsl,imx8mm-usb
- fsl,imx8mn-usb
- fsl,imx93-usb
- fsl,imx95-usb
- const: fsl,imx7d-usb
- const: fsl,imx27-usb
- items:
- enum:
- fsl,imx6sll-usb
- fsl,imx7ulp-usb
- const: fsl,imx6ul-usb
- const: fsl,imx27-usb
reg:
maxItems: 1
interrupts:
minItems: 1
items:
- description: USB controller interrupt or combine USB controller
and wakeup interrupts.
- description: Wakeup interrupt
clocks:
minItems: 1
maxItems: 3
clock-names:
minItems: 1
maxItems: 3
fsl,usbmisc:
description:
Phandler of non-core register device, with one argument that
indicate usb controller index
$ref: /schemas/types.yaml#/definitions/phandle-array
items:
- items:
- description: phandle to usbmisc node
- description: index of usb controller
disable-over-current:
type: boolean
description: disable over current detect
over-current-active-low:
type: boolean
description: over current signal polarity is active low
over-current-active-high:
type: boolean
description:
Over current signal polarity is active high. It's recommended to
specify the over current polarity.
power-active-high:
type: boolean
description: power signal polarity is active high
external-vbus-divider:
type: boolean
description: enables off-chip resistor divider for Vbus
samsung,picophy-pre-emp-curr-control:
description:
HS Transmitter Pre-Emphasis Current Control. This signal controls
the amount of current sourced to the USB_OTG*_DP and USB_OTG*_DN
pins after a J-to-K or K-to-J transition. The range is from 0x0 to
0x3, the default value is 0x1. Details can refer to TXPREEMPAMPTUNE0
bits of USBNC_n_PHY_CFG1.
$ref: /schemas/types.yaml#/definitions/uint32
minimum: 0x0
maximum: 0x3
samsung,picophy-dc-vol-level-adjust:
description:
HS DC Voltage Level Adjustment. Adjust the high-speed transmitter DC
level voltage. The range is from 0x0 to 0xf, the default value is
0x3. Details can refer to TXVREFTUNE0 bits of USBNC_n_PHY_CFG1.
$ref: /schemas/types.yaml#/definitions/uint32
minimum: 0x0
maximum: 0xf
fsl,picophy-rise-fall-time-adjust:
description:
HS Transmitter Rise/Fall Time Adjustment. Adjust the rise/fall times
of the high-speed transmitter waveform. It has no unit. The rise/fall
time will be increased or decreased by a certain percentage relative
to design default time. (0:-10%; 1:design default; 2:+15%; 3:+20%)
Details can refer to TXRISETUNE0 bit of USBNC_n_PHY_CFG1.
$ref: /schemas/types.yaml#/definitions/uint32
minimum: 0
maximum: 3
default: 1
fsl,usbphy:
description: phandle of usb phy that connects to the port. Use "phys" instead.
$ref: /schemas/types.yaml#/definitions/phandle
deprecated: true
required:
- compatible
allOf:
- $ref: chipidea,usb2-common.yaml#
- if:
properties:
phy_type:
const: hsic
required:
- phy_type
then:
properties:
pinctrl-names:
items:
- const: idle
- const: active
# imx27 Soc needs three clocks
- if:
properties:
compatible:
const: fsl,imx27-usb
then:
properties:
clocks:
minItems: 3
clock-names:
items:
- const: ipg
- const: ahb
- const: per
# imx25 and imx35 Soc need three clocks
- if:
properties:
compatible:
contains:
enum:
- fsl,imx25-usb
- fsl,imx35-usb
then:
properties:
clocks:
minItems: 3
clock-names:
items:
- const: ipg
- const: ahb
- const: per
# imx93 Soc needs two clocks
- if:
properties:
compatible:
contains:
enum:
- fsl,imx93-usb
- fsl,imx95-usb
then:
properties:
clocks:
minItems: 2
maxItems: 2
clock-names:
items:
- const: usb_ctrl_root
- const: usb_wakeup
# imx7d Soc need one clock
- if:
properties:
compatible:
items:
- const: fsl,imx7d-usb
- const: fsl,imx27-usb
then:
properties:
clocks:
maxItems: 1
clock-names: false
# other Soc need one clock
- if:
properties:
compatible:
contains:
enum:
- fsl,imx23-usb
- fsl,imx28-usb
- fsl,imx50-usb
- fsl,imx51-usb
- fsl,imx53-usb
- fsl,imx6q-usb
- fsl,imx6sl-usb
- fsl,imx6sx-usb
- fsl,imx6ul-usb
- fsl,imx8mm-usb
- fsl,imx8mn-usb
- fsl,vf610-usb
then:
properties:
clocks:
maxItems: 1
clock-names: false
# imx95 soc use two interrupts
- if:
properties:
compatible:
contains:
enum:
- fsl,imx95-usb
then:
properties:
interrupts:
minItems: 2
else:
properties:
interrupts:
maxItems: 1
unevaluatedProperties: false
examples:
- |
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/clock/imx7d-clock.h>
usb@30b10000 {
compatible = "fsl,imx7d-usb", "fsl,imx27-usb";
reg = <0x30b10000 0x200>;
interrupts = <GIC_SPI 43 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clks IMX7D_USB_CTRL_CLK>;
fsl,usbphy = <&usbphynop1>;
fsl,usbmisc = <&usbmisc1 0>;
phy-clkgate-delay-us = <400>;
};
# Example for HSIC:
- |
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/clock/imx6qdl-clock.h>
usb@2184400 {
compatible = "fsl,imx6q-usb", "fsl,imx27-usb";
reg = <0x02184400 0x200>;
interrupts = <0 41 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clks IMX6QDL_CLK_USBOH3>;
fsl,usbphy = <&usbphynop1>;
fsl,usbmisc = <&usbmisc 2>;
phy_type = "hsic";
dr_mode = "host";
ahb-burst-config = <0x0>;
tx-burst-size-dword = <0x10>;
rx-burst-size-dword = <0x10>;
pinctrl-names = "idle", "active";
pinctrl-0 = <&pinctrl_usbh2_idle>;
pinctrl-1 = <&pinctrl_usbh2_active>;
#address-cells = <1>;
#size-cells = <0>;
ethernet@1 {
compatible = "usb424,9730";
reg = <1>;
};
};
...
@@ -0,0 +1,143 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/usb/ci-hdrc-usb2.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: USB2 ChipIdea USB controller
maintainers:
- Xu Yang <xu.yang_2@nxp.com>
- Peng Fan <peng.fan@nxp.com>
properties:
compatible:
oneOf:
- enum:
- chipidea,usb2
- lsi,zevio-usb
- nuvoton,npcm750-udc
- nvidia,tegra20-ehci
- nvidia,tegra20-udc
- nvidia,tegra30-ehci
- nvidia,tegra30-udc
- nvidia,tegra114-udc
- nvidia,tegra124-udc
- nxp,s32g2-usb
- qcom,ci-hdrc
- items:
- enum:
- nvidia,tegra114-ehci
- nvidia,tegra124-ehci
- nvidia,tegra210-ehci
- const: nvidia,tegra30-ehci
- items:
- const: xlnx,zynq-usb-2.20a
- const: chipidea,usb2
- items:
- enum:
- nuvoton,npcm845-udc
- const: nuvoton,npcm750-udc
- items:
- enum:
- nxp,s32g3-usb
- const: nxp,s32g2-usb
clocks:
minItems: 1
maxItems: 3
clock-names:
minItems: 1
maxItems: 3
operating-points-v2:
description: A phandle to the OPP table containing the performance states.
$ref: /schemas/types.yaml#/definitions/phandle
phy-select:
description:
Phandler of TCSR node with two argument that indicate register
offset, and phy index
$ref: /schemas/types.yaml#/definitions/phandle-array
items:
- items:
- description: phandle to TCSR node
- description: register offset
- description: phy index
nvidia,phy:
description: phandle of usb phy that connects to the port. Use "phys" instead.
$ref: /schemas/types.yaml#/definitions/phandle
deprecated: true
nvidia,needs-double-reset:
description: Indicates double reset or not.
type: boolean
deprecated: true
ulpi:
type: object
additionalProperties: false
patternProperties:
"^phy(-[0-9])?$":
description: The phy child node for Qcom chips.
type: object
$ref: /schemas/phy/qcom,usb-hs-phy.yaml
required:
- compatible
allOf:
- $ref: chipidea,usb2-common.yaml#
- $ref: usb-hcd.yaml#
- $ref: usb-drd.yaml#
- if:
properties:
compatible:
contains:
const: qcom,ci-hdrc
then:
properties:
clocks:
minItems: 2
clock-names:
minItems: 2
items:
- const: iface
- const: core
- const: fs
else:
properties:
clocks:
maxItems: 2
clock-names:
maxItems: 2
unevaluatedProperties: false
examples:
- |
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/clock/berlin2.h>
usb@f7ed0000 {
compatible = "chipidea,usb2";
reg = <0xf7ed0000 0x10000>;
interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&chip CLKID_USB0>;
phys = <&usb_phy0>;
phy-names = "usb-phy";
vbus-supply = <&reg_usb0_vbus>;
itc-setting = <0x4>; /* 4 micro-frames */
/* Incremental burst of unspecified length */
ahb-burst-config = <0x0>;
tx-burst-size-dword = <0x10>; /* 64 bytes */
rx-burst-size-dword = <0x10>;
extcon = <0>, <&usb_id>;
phy-clkgate-delay-us = <400>;
mux-controls = <&usb_switch>;
mux-control-names = "usb_switch";
};
...
@@ -0,0 +1,79 @@
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/usb/corechips,sl6341.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Corechips SL6341 USB 2.0/3.0 Hub Controller
maintainers:
- Alexey Charkov <alchark@flipper.net>
allOf:
- $ref: usb-hub.yaml#
properties:
compatible:
enum:
- usb3431,6241
- usb3431,6341
reg: true
peer-hub: true
reset-gpios:
description: GPIO controlling the RSTN pin.
vdd1v1-supply:
description:
The regulator that provides 1.1V core power to the hub.
vdd3v3-supply:
description:
The regulator that provides 3.3V IO power to the hub.
ports:
$ref: /schemas/graph.yaml#/properties/ports
patternProperties:
'^port@':
$ref: /schemas/graph.yaml#/properties/port
properties:
reg:
minimum: 1
maximum: 4
required:
- compatible
- reg
- vdd1v1-supply
unevaluatedProperties: false
examples:
- |
#include <dt-bindings/gpio/gpio.h>
usb {
#address-cells = <1>;
#size-cells = <0>;
/* 2.0 hub */
hub_2_0: hub@1 {
compatible = "usb3431,6241";
reg = <1>;
peer-hub = <&hub_3_0>;
reset-gpios = <&gpio0 20 GPIO_ACTIVE_LOW>;
vdd1v1-supply = <&vdd1v1_hub>;
};
/* 3.0 hub */
hub_3_0: hub@2 {
compatible = "usb3431,6341";
reg = <2>;
peer-hub = <&hub_2_0>;
reset-gpios = <&gpio0 20 GPIO_ACTIVE_LOW>;
vdd1v1-supply = <&vdd1v1_hub>;
};
};
@@ -0,0 +1,93 @@
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/usb/cypress,cypd4226.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Cypress cypd4226 Type-C Controller
maintainers:
- Wayne Chang <waynec@nvidia.com>
description:
The Cypress cypd4226 is a dual Type-C controller that is controlled
via an I2C interface.
properties:
compatible:
const: cypress,cypd4226
'#address-cells':
const: 1
'#size-cells':
const: 0
reg:
const: 0x08
interrupts:
items:
- description: cypd4226 host interrupt
firmware-name:
enum:
- nvidia,gpu
- nvidia,jetson-agx-xavier
description: |
The name of the CCGx firmware built for product series.
should be set one of following:
- "nvidia,gpu" for the NVIDIA RTX product series
- "nvidia,jetson-agx-xavier" for the NVIDIA Jetson product series
patternProperties:
'^connector@[01]$':
$ref: /schemas/connector/usb-connector.yaml#
required:
- reg
required:
- compatible
- reg
- interrupts
anyOf:
- required:
- connector@0
- required:
- connector@1
additionalProperties: false
examples:
- |
#include <dt-bindings/interrupt-controller/arm-gic.h>
i2c {
#address-cells = <1>;
#size-cells = <0>;
typec@8 {
compatible = "cypress,cypd4226";
reg = <0x08>;
interrupts = <2 IRQ_TYPE_LEVEL_LOW>;
firmware-name = "nvidia,jetson-agx-xavier";
#address-cells = <1>;
#size-cells = <0>;
connector@0 {
compatible = "usb-c-connector";
reg = <0>;
label = "USB-C";
data-role = "dual";
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
endpoint {
remote-endpoint = <&usb_role_switch0>;
};
};
};
};
};
};
@@ -0,0 +1,89 @@
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/usb/cypress,hx3.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Cypress HX3 USB 3.0 hub controller family
maintainers:
- Benjamin Bara <benjamin.bara@skidata.com>
allOf:
- $ref: usb-device.yaml#
properties:
compatible:
oneOf:
- enum:
- usb4b4,6504
- usb4b4,6506
- items:
- enum:
- usb4b4,6500
- usb4b4,6508
- const: usb4b4,6504
- items:
- enum:
- usb4b4,6502
- usb4b4,6503
- usb4b4,6507
- usb4b4,650a
- const: usb4b4,6506
reg: true
reset-gpios:
items:
- description: GPIO specifier for RESETN pin.
vdd-supply:
description:
1V2 power supply (VDD_EFUSE, AVDD12, DVDD12).
vdd2-supply:
description:
3V3 power supply (AVDD33, VDD_IO).
peer-hub:
$ref: /schemas/types.yaml#/definitions/phandle
description:
phandle to the peer hub on the controller.
required:
- compatible
- reg
- peer-hub
- vdd-supply
- vdd2-supply
additionalProperties: false
examples:
- |
#include <dt-bindings/gpio/gpio.h>
usb {
#address-cells = <1>;
#size-cells = <0>;
/* 2.0 hub on port 1 */
hub_2_0: hub@1 {
compatible = "usb4b4,6504";
reg = <1>;
peer-hub = <&hub_3_0>;
reset-gpios = <&gpio1 11 GPIO_ACTIVE_LOW>;
vdd-supply = <&reg_1v2_usb>;
vdd2-supply = <&reg_3v3_usb>;
};
/* 3.0 hub on port 2 */
hub_3_0: hub@2 {
compatible = "usb4b4,6506";
reg = <2>;
peer-hub = <&hub_2_0>;
reset-gpios = <&gpio1 11 GPIO_ACTIVE_LOW>;
vdd-supply = <&reg_1v2_usb>;
vdd2-supply = <&reg_3v3_usb>;
};
};
@@ -0,0 +1,81 @@
TI DA8xx MUSB
~~~~~~~~~~~~~
For DA8xx/OMAP-L1x/AM17xx/AM18xx platforms.
Required properties:
~~~~~~~~~~~~~~~~~~~~
- compatible : Should be set to "ti,da830-musb".
- reg: Offset and length of the USB controller register set.
- interrupts: The USB interrupt number.
- interrupt-names: Should be set to "mc".
- dr_mode: The USB operation mode. Should be one of "host", "peripheral" or "otg".
- phys: Phandle for the PHY device
- phy-names: Should be "usb-phy"
- dmas: specifies the dma channels
- dma-names: specifies the names of the channels. Use "rxN" for receive
and "txN" for transmit endpoints. N specifies the endpoint number.
Optional properties:
~~~~~~~~~~~~~~~~~~~~
- vbus-supply: Phandle to a regulator providing the USB bus power.
DMA
~~~
- compatible: ti,da830-cppi41
- reg: offset and length of the following register spaces: CPPI DMA Controller,
CPPI DMA Scheduler, Queue Manager
- reg-names: "controller", "scheduler", "queuemgr"
- #dma-cells: should be set to 2. The first number represents the
channel number (0 … 3 for endpoints 1 … 4).
The second number is 0 for RX and 1 for TX transfers.
- dma-channels: should be set to 4 representing the 4 endpoints.
- #dma-channels: deprecated
Example:
usb_phy: usb-phy {
compatible = "ti,da830-usb-phy";
#phy-cells = <0>;
};
usb0: usb@200000 {
compatible = "ti,da830-musb";
reg = <0x00200000 0x1000>;
ranges;
#address-cells = <1>;
#size-cells = <1>;
interrupts = <58>;
interrupt-names = "mc";
dr_mode = "host";
vbus-supply = <&usb_vbus>;
phys = <&usb_phy 0>;
phy-names = "usb-phy";
dmas = <&cppi41dma 0 0 &cppi41dma 1 0
&cppi41dma 2 0 &cppi41dma 3 0
&cppi41dma 0 1 &cppi41dma 1 1
&cppi41dma 2 1 &cppi41dma 3 1>;
dma-names =
"rx1", "rx2", "rx3", "rx4",
"tx1", "tx2", "tx3", "tx4";
cppi41dma: dma-controller@201000 {
compatible = "ti,da830-cppi41";
reg = <0x201000 0x1000
0x202000 0x1000
0x204000 0x4000>;
reg-names = "controller", "scheduler", "queuemgr";
interrupts = <58>;
#dma-cells = <2>;
dma-channels = <4>;
};
};
@@ -0,0 +1,205 @@
# SPDX-License-Identifier: GPL-2.0
%YAML 1.2
---
$id: http://devicetree.org/schemas/usb/dwc2.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: DesignWare HS OTG USB 2.0 controller
maintainers:
- Rob Herring <robh@kernel.org>
allOf:
- $ref: usb-drd.yaml#
- $ref: usb-hcd.yaml#
properties:
compatible:
oneOf:
- const: brcm,bcm2835-usb
- const: hisilicon,hi6220-usb
- const: ingenic,jz4775-otg
- const: ingenic,jz4780-otg
- const: ingenic,x1000-otg
- const: ingenic,x1600-otg
- const: ingenic,x1700-otg
- const: ingenic,x1830-otg
- const: ingenic,x2000-otg
- items:
- const: rockchip,rk3066-usb
- const: snps,dwc2
- items:
- enum:
- rockchip,px30-usb
- rockchip,rk3036-usb
- rockchip,rk3128-usb
- rockchip,rk3188-usb
- rockchip,rk3228-usb
- rockchip,rk3288-usb
- rockchip,rk3308-usb
- rockchip,rk3328-usb
- rockchip,rk3368-usb
- rockchip,rv1108-usb
- const: rockchip,rk3066-usb
- const: snps,dwc2
- const: lantiq,arx100-usb
- const: lantiq,ase-usb
- const: lantiq,danube-usb
- const: lantiq,xrx200-usb
- const: lantiq,xrx300-usb
- items:
- enum:
- amlogic,meson8-usb
- amlogic,meson8b-usb
- amlogic,meson-gxbb-usb
- amlogic,meson-g12a-usb
- amlogic,meson-a1-usb
- intel,socfpga-agilex-hsotg
- const: snps,dwc2
- const: amcc,dwc-otg
- const: apm,apm82181-dwc-otg
- const: snps,dwc2
- const: sophgo,cv1800b-usb
- const: st,stm32f4x9-fsotg
- const: st,stm32f4x9-hsotg
- const: st,stm32f7-hsotg
- const: st,stm32mp15-fsotg
- items:
- const: st,stm32mp15-hsotg
- const: snps,dwc2
- const: samsung,s3c6400-hsotg
- const: intel,socfpga-agilex-hsotg
reg:
maxItems: 1
interrupts:
maxItems: 1
clocks:
minItems: 1
maxItems: 2
clock-names:
items:
- const: otg
- const: utmi
minItems: 1
disable-over-current:
type: boolean
description: whether to disable detection of over-current condition.
iommus:
maxItems: 1
resets:
items:
- description: common reset
- description: ecc reset
minItems: 1
reset-names:
items:
- const: dwc2
- const: dwc2-ecc
minItems: 1
phys:
maxItems: 1
phy-names:
const: usb2-phy
power-domains:
maxItems: 1
vbus-supply:
description: reference to the VBUS regulator. Depending on the current mode
this is enabled (in "host" mode") or disabled (in "peripheral" mode). The
regulator is updated if the controller is configured in "otg" mode and the
status changes between "host" and "peripheral".
vusb_d-supply:
description: phandle to voltage regulator of digital section,
vusb_a-supply:
description: phandle to voltage regulator of analog section.
usb33d-supply:
description: reference to the VBUS and ID sensing comparators supply, in
order to perform OTG operation, used on STM32MP15 SoCs.
dr_mode: true
otg-rev: true
hnp-disable: true
srp-disable: true
usb-role-switch: true
role-switch-default-mode: true
g-rx-fifo-size:
$ref: /schemas/types.yaml#/definitions/uint32
description: size of rx fifo size in gadget mode.
g-np-tx-fifo-size:
$ref: /schemas/types.yaml#/definitions/uint32
description: size of non-periodic tx fifo size in gadget mode.
g-tx-fifo-size:
$ref: /schemas/types.yaml#/definitions/uint32-array
description: size of periodic tx fifo per endpoint (except ep0) in gadget mode.
snps,need-phy-for-wake:
$ref: /schemas/types.yaml#/definitions/flag
description: If present indicates that the phy needs to be left on for
remote wakeup during suspend.
snps,reset-phy-on-wake:
$ref: /schemas/types.yaml#/definitions/flag
description: If present indicates that we need to reset the PHY when we
detect a wakeup. This is due to a hardware errata.
port:
description:
Any connector to the data bus of this controller should be modelled
using the OF graph bindings specified, if the "usb-role-switch"
property is used.
$ref: /schemas/graph.yaml#/properties/port
tpl-support: true
access-controllers:
minItems: 1
maxItems: 2
dependencies:
port: [ usb-role-switch ]
role-switch-default-mode: [ usb-role-switch ]
required:
- compatible
- reg
- interrupts
- clocks
- clock-names
unevaluatedProperties: false
examples:
- |
usb@101c0000 {
compatible = "rockchip,rk3066-usb", "snps,dwc2";
reg = <0x10180000 0x40000>;
interrupts = <18>;
clocks = <&usb_otg_ahb_clk>;
clock-names = "otg";
phys = <&usbphy>;
phy-names = "usb2-phy";
};
...
@@ -0,0 +1,28 @@
Cavium SuperSpeed DWC3 USB SoC controller
Required properties:
- compatible: Should contain "cavium,octeon-7130-usb-uctl"
Required child node:
A child node must exist to represent the core DWC3 IP block. The name of
the node is not important. The content of the node is defined in dwc3.txt.
Example device node:
uctl@1180069000000 {
compatible = "cavium,octeon-7130-usb-uctl";
reg = <0x00011800 0x69000000 0x00000000 0x00000100>;
ranges;
#address-cells = <0x00000002>;
#size-cells = <0x00000002>;
refclk-frequency = <0x05f5e100>;
refclk-type-ss = "dlmc_ref_clk0";
refclk-type-hs = "dlmc_ref_clk0";
power = <0x00000002 0x00000002 0x00000001>;
xhci@1690000000000 {
compatible = "cavium,octeon-7130-xhci", "snps,dwc3";
reg = <0x00016900 0x00000000 0x00000010 0x00000000>;
interrupt-parent = <0x00000010>;
interrupts = <0x00000009 0x00000004>;
};
};
@@ -0,0 +1,66 @@
ST DWC3 glue logic
This file documents the parameters for the dwc3-st driver.
This driver controls the glue logic used to configure the dwc3 core on
STiH407 based platforms.
Required properties:
- compatible : must be "st,stih407-dwc3"
- reg : glue logic base address and USB syscfg ctrl register offset
- reg-names : should be "reg-glue" and "syscfg-reg"
- st,syscon : should be phandle to system configuration node which
encompasses the glue registers
- resets : list of phandle and reset specifier pairs. There should be two entries, one
for the powerdown and softreset lines of the usb3 IP
- reset-names : list of reset signal names. Names should be "powerdown" and "softreset"
See: Documentation/devicetree/bindings/reset/st,stih407-powerdown.yaml
See: Documentation/devicetree/bindings/reset/reset.txt
- #address-cells, #size-cells : should be '1' if the device has sub-nodes
with 'reg' property
- pinctl-names : A pinctrl state named "default" must be defined
See: Documentation/devicetree/bindings/pinctrl/pinctrl-bindings.txt
- pinctrl-0 : Pin control group
See: Documentation/devicetree/bindings/pinctrl/pinctrl-bindings.txt
- ranges : allows valid 1:1 translation between child's address space and
parent's address space
Sub-nodes:
The dwc3 core should be added as subnode to ST DWC3 glue as shown in the
example below. The DT binding details of dwc3 can be found in:
Documentation/devicetree/bindings/usb/snps,dwc3.yaml
NB: The dr_mode property described in [1] is NOT optional for this driver, as the default value
is "otg", which isn't supported by this SoC. Valid dr_mode values for dwc3-st are either "host"
or "device".
[1] Documentation/devicetree/bindings/usb/usb-drd.yaml
Example:
st_dwc3: dwc3@8f94000 {
compatible = "st,stih407-dwc3";
reg = <0x08f94000 0x1000>, <0x110 0x4>;
reg-names = "reg-glue", "syscfg-reg";
st,syscfg = <&syscfg_core>;
resets = <&powerdown STIH407_USB3_POWERDOWN>,
<&softreset STIH407_MIPHY2_SOFTRESET>;
reset-names = "powerdown", "softreset";
#address-cells = <1>;
#size-cells = <1>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_usb3>;
ranges;
dwc3: dwc3@9900000 {
compatible = "snps,dwc3";
reg = <0x09900000 0x100000>;
interrupts = <GIC_SPI 155 IRQ_TYPE_NONE>;
dr_mode = "host";
phy-names = "usb2-phy", "usb3-phy";
phys = <&usb2_picophy2>, <&phy_port2 PHY_TYPE_USB3>;
};
};
@@ -0,0 +1,158 @@
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/usb/dwc3-xilinx.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Xilinx SuperSpeed DWC3 USB SoC controller
maintainers:
- Radhey Shyam Pandey <radhey.shyam.pandey@amd.com>
properties:
compatible:
items:
- enum:
- xlnx,zynqmp-dwc3
- xlnx,versal-dwc3
reg:
maxItems: 1
"#address-cells":
enum: [ 1, 2 ]
"#size-cells":
enum: [ 1, 2 ]
ranges: true
dma-coherent: true
power-domains:
description: specifies a phandle to PM domain provider node
maxItems: 1
clocks:
description:
A list of phandle and clock-specifier pairs for the clocks
listed in clock-names.
items:
- description: Master/Core clock, has to be >= 125 MHz
for SS operation and >= 60MHz for HS operation.
- description: Clock source to core during PHY power down.
clock-names:
items:
- const: bus_clk
- const: ref_clk
resets:
minItems: 1
description:
A list of phandles for resets listed in reset-names.
items:
- description: USB core reset
- description: USB hibernation reset
- description: USB APB reset
reset-names:
minItems: 1
items:
- const: usb_crst
- const: usb_hibrst
- const: usb_apbrst
phys:
minItems: 1
maxItems: 2
phy-names:
minItems: 1
maxItems: 2
items:
enum:
- usb2-phy
- usb3-phy
reset-gpios:
description: GPIO used for the reset ulpi-phy
maxItems: 1
# Required child node:
patternProperties:
"^usb@[0-9a-f]+$":
$ref: snps,dwc3.yaml#
required:
- compatible
- reg
- "#address-cells"
- "#size-cells"
- ranges
- power-domains
- clocks
- clock-names
- resets
- reset-names
allOf:
- if:
properties:
compatible:
contains:
enum:
- xlnx,versal-dwc3
then:
properties:
resets:
maxItems: 1
reset-names:
maxItems: 1
else:
properties:
resets:
minItems: 3
reset-names:
minItems: 3
additionalProperties: false
examples:
- |
#include <dt-bindings/dma/xlnx-zynqmp-dpdma.h>
#include <dt-bindings/power/xlnx-zynqmp-power.h>
#include <dt-bindings/reset/xlnx-zynqmp-resets.h>
#include <dt-bindings/reset/xlnx-zynqmp-resets.h>
#include <dt-bindings/phy/phy.h>
axi {
#address-cells = <2>;
#size-cells = <2>;
usb@0 {
#address-cells = <0x2>;
#size-cells = <0x2>;
compatible = "xlnx,zynqmp-dwc3";
reg = <0x0 0xff9d0000 0x0 0x100>;
clocks = <&zynqmp_clk 32>, <&zynqmp_clk 34>;
clock-names = "bus_clk", "ref_clk";
power-domains = <&zynqmp_firmware PD_USB_0>;
resets = <&zynqmp_reset ZYNQMP_RESET_USB1_CORERESET>,
<&zynqmp_reset ZYNQMP_RESET_USB1_HIBERRESET>,
<&zynqmp_reset ZYNQMP_RESET_USB1_APB>;
reset-names = "usb_crst", "usb_hibrst", "usb_apbrst";
phys = <&psgtr 2 PHY_TYPE_USB3 0 2>;
phy-names = "usb3-phy";
ranges;
usb@fe200000 {
compatible = "snps,dwc3";
reg = <0x0 0xfe200000 0x0 0x40000>;
interrupt-names = "host", "otg";
interrupts = <0 65 4>, <0 69 4>;
dr_mode = "host";
dma-coherent;
};
};
};
@@ -0,0 +1,38 @@
ST USB EHCI controller
Required properties:
- compatible : must be "st,st-ehci-300x"
- reg : physical base addresses of the controller and length of memory mapped
region
- interrupts : one EHCI interrupt should be described here
- pinctrl-names : a pinctrl state named "default" must be defined
- pinctrl-0 : phandle referencing pin configuration of the USB controller
See: Documentation/devicetree/bindings/pinctrl/pinctrl-bindings.txt
- clocks : phandle list of usb clocks
- clock-names : should be "ic" for interconnect clock and "clk48"
See: Documentation/devicetree/bindings/clock/clock-bindings.txt
- phys : phandle for the PHY device
- phy-names : should be "usb"
- resets : phandle + reset specifier pairs to the powerdown and softreset lines
of the USB IP
- reset-names : should be "power" and "softreset"
See: Documentation/devicetree/bindings/reset/st,stih407-powerdown.yaml
See: Documentation/devicetree/bindings/reset/reset.txt
Example:
ehci1: usb@fe203e00 {
compatible = "st,st-ehci-300x";
reg = <0xfe203e00 0x100>;
interrupts = <GIC_SPI 148 IRQ_TYPE_NONE>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_usb1>;
clocks = <&clk_s_a1_ls 0>;
phys = <&usb2_phy>;
phy-names = "usb";
resets = <&powerdown STIH416_USB1_POWERDOWN>,
<&softreset STIH416_USB1_SOFTRESET>;
reset-names = "power", "softreset";
};
@@ -0,0 +1,95 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/usb/eswin,eic7700-usb.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: ESWIN EIC7700 SoC Usb Controller
maintainers:
- Wei Yang <yangwei1@eswincomputing.com>
- Senchuan Zhang <zhangsenchuan@eswincomputing.com>
- Hang Cao <caohang@eswincomputing.com>
description:
The Usb controller on EIC7700 SoC.
allOf:
- $ref: snps,dwc3-common.yaml#
properties:
compatible:
const: eswin,eic7700-dwc3
reg:
maxItems: 1
interrupts:
maxItems: 1
interrupt-names:
items:
- const: peripheral
clocks:
maxItems: 3
clock-names:
items:
- const: aclk
- const: cfg
- const: usb_en
resets:
maxItems: 3
reset-names:
items:
- const: vaux
- const: usb_rst
- const: usb_phy
eswin,hsp-sp-csr:
description:
HSP CSR is to control and get status of different high-speed peripherals
(such as Ethernet, USB, SATA, etc.) via register, which can tune
board-level's parameters of PHY, etc.
$ref: /schemas/types.yaml#/definitions/phandle-array
items:
- items:
- description: phandle to HSP Register Controller hsp_sp_csr node.
- description: USB bus register offset.
- description: AXI low power register offset.
required:
- compatible
- reg
- clocks
- clock-names
- interrupts
- interrupt-names
- resets
- reset-names
- eswin,hsp-sp-csr
unevaluatedProperties: false
examples:
- |
usb@50480000 {
compatible = "eswin,eic7700-dwc3";
reg = <0x50480000 0x10000>;
clocks = <&clock 135>,
<&clock 136>,
<&hspcrg 18>;
clock-names = "aclk", "cfg", "usb_en";
interrupt-parent = <&plic>;
interrupts = <85>;
interrupt-names = "peripheral";
resets = <&reset 84>, <&hspcrg 2>, <&hspcrg 4>;
reset-names = "vaux", "usb_rst", "usb_phy";
dr_mode = "peripheral";
maximum-speed = "high-speed";
phy_type = "utmi";
eswin,hsp-sp-csr = <&hsp_sp_csr 0x800 0x818>;
};
@@ -0,0 +1,78 @@
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
# Copyright 2022 Linaro Ltd.
%YAML 1.2
---
$id: http://devicetree.org/schemas/usb/faraday,fotg210.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Faraday Technology FOTG200 series HS OTG USB 2.0 controller
maintainers:
- Linus Walleij <linusw@kernel.org>
allOf:
- $ref: usb-drd.yaml#
- $ref: usb-hcd.yaml#
properties:
compatible:
oneOf:
- const: faraday,fotg200
- const: faraday,fotg210
- items:
- const: cortina,gemini-usb
- const: faraday,fotg200
reg:
maxItems: 1
interrupts:
maxItems: 1
clocks:
maxItems: 1
clock-names:
items:
- const: PCLK
resets:
maxItems: 1
syscon:
$ref: /schemas/types.yaml#/definitions/phandle
description: a phandle to the global Gemini system controller on
Gemini systems
dr_mode: true
phys:
maxItems: 1
phy-names:
const: usb2-phy
required:
- compatible
- reg
- interrupts
- clocks
- clock-names
additionalProperties: false
examples:
- |
#include <dt-bindings/interrupt-controller/irq.h>
#include <dt-bindings/clock/cortina,gemini-clock.h>
#include <dt-bindings/reset/cortina,gemini-reset.h>
usb0: usb@68000000 {
compatible = "cortina,gemini-usb", "faraday,fotg200";
reg = <0x68000000 0x1000>;
interrupts = <10 IRQ_TYPE_LEVEL_HIGH>;
resets = <&syscon GEMINI_RESET_USB0>;
clocks = <&syscon GEMINI_CLK_GATE_USB0>;
clock-names = "PCLK";
syscon = <&syscon>;
dr_mode = "host";
};
@@ -0,0 +1,108 @@
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/usb/fcs,fsa4480.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: ON Semiconductor Analog Audio Switch
maintainers:
- Bjorn Andersson <bjorn.andersson@linaro.org>
properties:
compatible:
oneOf:
- const: fcs,fsa4480
- items:
- enum:
- ocs,ocp96011
- const: fcs,fsa4480
reg:
maxItems: 1
interrupts:
maxItems: 1
vcc-supply:
description: power supply (2.7V-5.5V)
mode-switch: true
orientation-switch: true
port:
$ref: /schemas/graph.yaml#/$defs/port-base
description:
A port node to link the FSA4480 to a TypeC controller for the purpose of
handling altmode muxing and orientation switching.
unevaluatedProperties: false
properties:
endpoint:
$ref: /schemas/graph.yaml#/$defs/endpoint-base
unevaluatedProperties: false
properties:
data-lanes:
$ref: /schemas/types.yaml#/definitions/uint32-array
description:
Specifies how the AUX+/- lines are connected to SBU1/2.
oneOf:
- items:
- const: 0
- const: 1
description: |
Default AUX/SBU layout (FSA4480)
- AUX+ connected to SBU2
- AUX- connected to SBU1
Default AUX/SBU layout (OCP96011)
- AUX+ connected to SBU1
- AUX- connected to SBU2
- items:
- const: 1
- const: 0
description: |
Swapped AUX/SBU layout (FSA4480)
- AUX+ connected to SBU1
- AUX- connected to SBU2
Swapped AUX/SBU layout (OCP96011)
- AUX+ connected to SBU2
- AUX- connected to SBU1
required:
- compatible
- reg
- port
allOf:
- $ref: usb-switch.yaml#
- $ref: usb-switch-ports.yaml#
additionalProperties: false
examples:
- |
#include <dt-bindings/interrupt-controller/irq.h>
i2c13 {
#address-cells = <1>;
#size-cells = <0>;
typec-mux@42 {
compatible = "fcs,fsa4480";
reg = <0x42>;
interrupts-extended = <&tlmm 2 IRQ_TYPE_LEVEL_LOW>;
vcc-supply = <&vreg_bob>;
mode-switch;
orientation-switch;
port {
fsa4480_ept: endpoint {
remote-endpoint = <&typec_controller>;
};
};
};
};
...
@@ -0,0 +1,67 @@
# SPDX-License-Identifier: GPL-2.0
%YAML 1.2
---
$id: http://devicetree.org/schemas/usb/fcs,fusb302.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Fairchild FUSB302 Type-C Port controller
maintainers:
- Rob Herring <robh@kernel.org>
properties:
compatible:
const: fcs,fusb302
reg:
maxItems: 1
interrupts:
maxItems: 1
vbus-supply:
description: VBUS power supply
connector:
type: object
$ref: /schemas/connector/usb-connector.yaml#
unevaluatedProperties: false
required:
- compatible
- reg
- interrupts
- vbus-supply
- connector
additionalProperties: false
examples:
- |
#include <dt-bindings/interrupt-controller/irq.h>
#include <dt-bindings/usb/pd.h>
i2c {
#address-cells = <1>;
#size-cells = <0>;
typec-portc@54 {
compatible = "fcs,fusb302";
reg = <0x54>;
interrupt-parent = <&nmi_intc>;
interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
vbus-supply = <&vbus_typec>;
connector {
compatible = "usb-c-connector";
label = "USB-C";
power-role = "dual";
try-power-role = "sink";
source-pdos = <PDO_FIXED(5000, 3000, PDO_FIXED_USB_COMM)>;
sink-pdos = <PDO_FIXED(5000, 3000, PDO_FIXED_USB_COMM)
PDO_VAR(3000, 12000, 3000)
PDO_PPS_APDO(3000, 11000, 3000)>;
op-sink-microwatt = <10000000>;
};
};
};
@@ -0,0 +1,145 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
# Copyright (c) 2020 NXP
%YAML 1.2
---
$id: http://devicetree.org/schemas/usb/fsl,imx8mp-dwc3.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: NXP iMX8MP Soc USB Controller
maintainers:
- Li Jun <jun.li@nxp.com>
deprecated: true
properties:
compatible:
oneOf:
- items:
- const: fsl,imx95-dwc3
- const: fsl,imx8mp-dwc3
- const: fsl,imx8mp-dwc3
reg:
items:
- description: Address and length of the register set for HSIO Block Control
- description: Address and length of the register set for the wrapper of dwc3 core on the SOC.
"#address-cells":
enum: [ 1, 2 ]
"#size-cells":
enum: [ 1, 2 ]
dma-ranges:
description:
See section 2.3.9 of the DeviceTree Specification.
ranges: true
interrupts:
maxItems: 1
description: The interrupt that is asserted when a wakeup event is
received.
clocks:
description:
A list of phandle and clock-specifier pairs for the clocks
listed in clock-names.
items:
- description: system hsio root clock.
- description: suspend clock, used for usb wakeup logic.
clock-names:
items:
- const: hsio
- const: suspend
fsl,permanently-attached:
type: boolean
description:
Indicates if the device attached to a downstream port is
permanently attached.
fsl,disable-port-power-control:
type: boolean
description:
Indicates whether the host controller implementation includes port
power control. Defines Bit 3 in capability register (HCCPARAMS).
fsl,over-current-active-low:
type: boolean
description:
Over current signal polarity is active low.
fsl,power-active-low:
type: boolean
description:
Power pad (PWR) polarity is active low.
power-domains:
maxItems: 1
# Required child node:
patternProperties:
"^usb@[0-9a-f]+$":
$ref: snps,dwc3.yaml#
required:
- compatible
- reg
- "#address-cells"
- "#size-cells"
- ranges
- clocks
- clock-names
- interrupts
- power-domains
allOf:
- if:
properties:
compatible:
const: fsl,imx8mp-dwc3
then:
required:
- dma-ranges
additionalProperties: false
examples:
- |
#include <dt-bindings/clock/imx8mp-clock.h>
#include <dt-bindings/power/imx8mp-power.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
usb3_0: usb@32f10100 {
compatible = "fsl,imx8mp-dwc3";
reg = <0x32f10100 0x8>,
<0x381f0000 0x20>;
clocks = <&clk IMX8MP_CLK_HSIO_ROOT>,
<&clk IMX8MP_CLK_USB_ROOT>;
clock-names = "hsio", "suspend";
interrupts = <GIC_SPI 148 IRQ_TYPE_LEVEL_HIGH>;
power-domains = <&hsio_blk_ctrl IMX8MP_HSIOBLK_PD_USB>;
#address-cells = <1>;
#size-cells = <1>;
dma-ranges = <0x40000000 0x40000000 0xc0000000>;
ranges;
usb@38100000 {
compatible = "snps,dwc3";
reg = <0x38100000 0x10000>;
clocks = <&clk IMX8MP_CLK_HSIO_AXI>,
<&clk IMX8MP_CLK_USB_CORE_REF>,
<&clk IMX8MP_CLK_USB_ROOT>;
clock-names = "bus_early", "ref", "suspend";
assigned-clocks = <&clk IMX8MP_CLK_HSIO_AXI>;
assigned-clock-parents = <&clk IMX8MP_SYS_PLL2_500M>;
assigned-clock-rates = <500000000>;
interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>;
phys = <&usb3_phy0>, <&usb3_phy0>;
phy-names = "usb2-phy", "usb3-phy";
snps,dis-u2-freeclk-exists-quirk;
};
};
@@ -0,0 +1,48 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/usb/fsl,imx8mq-dwc3.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: NXP iMX8MQ Soc USB Controller
maintainers:
- Li Jun <jun.li@nxp.com>
- Peng Fan <peng.fan@nxp.com>
select:
properties:
compatible:
contains:
enum:
- fsl,imx8mq-dwc3
required:
- compatible
properties:
compatible:
items:
- const: fsl,imx8mq-dwc3
- const: snps,dwc3
allOf:
- $ref: snps,dwc3.yaml#
unevaluatedProperties: false
examples:
- |
#include <dt-bindings/clock/imx8mq-clock.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
usb_dwc3_1: usb@38200000 {
compatible = "fsl,imx8mq-dwc3", "snps,dwc3";
reg = <0x38200000 0x10000>;
clocks = <&clk IMX8MQ_CLK_USB2_CTRL_ROOT>,
<&clk IMX8MQ_CLK_USB_CORE_REF>,
<&clk IMX8MQ_CLK_32K>;
clock-names = "bus_early", "ref", "suspend";
interrupts = <GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>;
phys = <&usb3_phy1>, <&usb3_phy1>;
phy-names = "usb2-phy", "usb3-phy";
};
@@ -0,0 +1,103 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
# Copyright (c) 2020 NXP
%YAML 1.2
---
$id: http://devicetree.org/schemas/usb/fsl,imx8qm-cdns3.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: NXP iMX8QM Soc USB Controller
maintainers:
- Frank Li <Frank.Li@nxp.com>
properties:
compatible:
const: fsl,imx8qm-usb3
reg:
items:
- description: Register set for iMX USB3 Platform Control
"#address-cells":
enum: [ 1, 2 ]
"#size-cells":
enum: [ 1, 2 ]
ranges: true
clocks:
items:
- description: Standby clock. Used during ultra low power states.
- description: USB bus clock for usb3 controller.
- description: AXI clock for AXI interface.
- description: ipg clock for register access.
- description: Core clock for usb3 controller.
clock-names:
items:
- const: lpm
- const: bus
- const: aclk
- const: ipg
- const: core
power-domains:
maxItems: 1
# Required child node:
patternProperties:
"^usb@[0-9a-f]+$":
$ref: cdns,usb3.yaml#
required:
- compatible
- reg
- "#address-cells"
- "#size-cells"
- ranges
- clocks
- clock-names
- power-domains
additionalProperties: false
examples:
- |
#include <dt-bindings/clock/imx8-lpcg.h>
#include <dt-bindings/firmware/imx/rsrc.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
usb@5b110000 {
compatible = "fsl,imx8qm-usb3";
reg = <0x5b110000 0x10000>;
ranges;
clocks = <&usb3_lpcg IMX_LPCG_CLK_1>,
<&usb3_lpcg IMX_LPCG_CLK_0>,
<&usb3_lpcg IMX_LPCG_CLK_7>,
<&usb3_lpcg IMX_LPCG_CLK_4>,
<&usb3_lpcg IMX_LPCG_CLK_5>;
clock-names = "lpm", "bus", "aclk", "ipg", "core";
assigned-clocks = <&clk IMX_SC_R_USB_2 IMX_SC_PM_CLK_MST_BUS>;
assigned-clock-rates = <250000000>;
power-domains = <&pd IMX_SC_R_USB_2>;
#address-cells = <1>;
#size-cells = <1>;
usb@5b120000 {
compatible = "cdns,usb3";
reg = <0x5b120000 0x10000>, /* memory area for OTG/DRD registers */
<0x5b130000 0x10000>, /* memory area for HOST registers */
<0x5b140000 0x10000>; /* memory area for DEVICE registers */
reg-names = "otg", "xhci", "dev";
interrupt-parent = <&gic>;
interrupts = <GIC_SPI 271 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 271 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 271 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 271 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "host", "peripheral", "otg", "wakeup";
phys = <&usb3_phy>;
phy-names = "cdns3,usb3-phy";
};
};
@@ -0,0 +1,55 @@
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/usb/fsl,ls1028a.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Freescale layerscape SuperSpeed DWC3 USB SoC controller
maintainers:
- Frank Li <Frank.Li@nxp.com>
properties:
compatible:
oneOf:
- items:
- enum:
- fsl,ls1012a-dwc3
- fsl,ls1043a-dwc3
- fsl,ls1046a-dwc3
- fsl,ls1088a-dwc3
- fsl,ls208xa-dwc3
- fsl,lx2160a-dwc3
- const: fsl,ls1028a-dwc3
- const: fsl,ls1028a-dwc3
reg:
maxItems: 1
interrupts:
maxItems: 1
iommus:
maxItems: 1
dma-coherent: true
unevaluatedProperties: false
required:
- compatible
- reg
- interrupts
allOf:
- $ref: snps,dwc3-common.yaml#
examples:
- |
#include <dt-bindings/interrupt-controller/arm-gic.h>
usb@fe800000 {
compatible = "fsl,ls1028a-dwc3";
reg = <0xfe800000 0x100000>;
interrupts = <GIC_SPI 105 IRQ_TYPE_LEVEL_HIGH>;
};
@@ -0,0 +1,95 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/usb/fsl,usb2.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Freescale SOC USB controllers
maintainers:
- Frank Li <Frank.Li@nxp.com>
description: |
The device node for a USB controller that is part of a Freescale
SOC is as described in the document "Open Firmware Recommended
Practice: Universal Serial Bus" with the following modifications
and additions.
properties:
compatible:
oneOf:
- enum:
- fsl-usb2-mph
- fsl-usb2-dr
- items:
- enum:
- fsl-usb2-dr-v2.2
- fsl-usb2-dr-v2.5
- const: fsl-usb2-dr
reg:
maxItems: 1
interrupts:
maxItems: 1
phy_type:
$ref: /schemas/types.yaml#/definitions/string
enum: [ulpi, serial, utmi, utmi_wide]
port0:
$ref: /schemas/types.yaml#/definitions/flag
description:
Indicates port0 is connected for fsl-usb2-mph compatible controllers.
port1:
$ref: /schemas/types.yaml#/definitions/flag
description:
Indicates port1 is connected for "fsl-usb2-mph" compatible controllers.
fsl,invert-drvvbus:
$ref: /schemas/types.yaml#/definitions/flag
description:
for MPC5121 USB0 only. Indicates the
port power polarity of internal PHY signal DRVVBUS is inverted.
fsl,invert-pwr-fault:
$ref: /schemas/types.yaml#/definitions/flag
description:
for MPC5121 USB0 only. Indicates
the PWR_FAULT signal polarity is inverted.
required:
- compatible
- reg
- interrupts
- phy_type
allOf:
- $ref: usb-drd.yaml#
unevaluatedProperties: false
examples:
- |
#include <dt-bindings/interrupt-controller/irq.h>
usb@22000 {
compatible = "fsl-usb2-mph";
reg = <22000 1000>;
interrupts = <27 IRQ_TYPE_EDGE_RISING>;
phy_type = "ulpi";
port0;
port1;
};
- |
#include <dt-bindings/interrupt-controller/irq.h>
usb@23000 {
compatible = "fsl-usb2-dr";
reg = <23000 1000>;
interrupts = <26 IRQ_TYPE_EDGE_RISING>;
dr_mode = "otg";
phy_type = "ulpi";
};
@@ -0,0 +1,93 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/usb/fsl,usbmisc.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Freescale i.MX wrapper module for Chipidea USB2 controller
maintainers:
- Xu Yang <xu.yang_2@nxp.com>
- Peng Fan <peng.fan@nxp.com>
properties:
compatible:
oneOf:
- enum:
- fsl,imx25-usbmisc
- fsl,imx27-usbmisc
- fsl,imx35-usbmisc
- fsl,imx51-usbmisc
- fsl,imx53-usbmisc
- fsl,imx6q-usbmisc
- fsl,vf610-usbmisc
- nxp,s32g2-usbmisc
- nxp,s32g3-usbmisc
- items:
- enum:
- fsl,imx6ul-usbmisc
- fsl,imx6sl-usbmisc
- fsl,imx6sx-usbmisc
- fsl,imx7d-usbmisc
- const: fsl,imx6q-usbmisc
- items:
- enum:
- fsl,imx7ulp-usbmisc
- fsl,imx8mm-usbmisc
- fsl,imx8mn-usbmisc
- fsl,imx8ulp-usbmisc
- fsl,imx94-usbmisc
- fsl,imx95-usbmisc
- const: fsl,imx7d-usbmisc
- const: fsl,imx6q-usbmisc
- items:
- const: fsl,imx6sll-usbmisc
- const: fsl,imx6ul-usbmisc
- const: fsl,imx6q-usbmisc
clocks:
maxItems: 1
reg:
minItems: 1
items:
- description: Base and length of the Wrapper module register
- description: Base and length of the HSIO Block Control register
'#index-cells':
const: 1
description: Cells used to describe usb controller index.
deprecated: true
required:
- compatible
- reg
allOf:
# imx95 soc needs use HSIO Block Control
- if:
properties:
compatible:
contains:
enum:
- fsl,imx95-usbmisc
then:
properties:
reg:
minItems: 2
else:
properties:
reg:
maxItems: 1
additionalProperties: false
examples:
- |
usbmisc@2184800 {
compatible = "fsl,imx6q-usbmisc";
reg = <0x02184800 0x200>;
#index-cells = <1>;
};
...
@@ -0,0 +1,212 @@
# SPDX-License-Identifier: GPL-2.0
%YAML 1.2
---
$id: http://devicetree.org/schemas/usb/generic-ehci.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: USB EHCI Controller
maintainers:
- Greg Kroah-Hartman <gregkh@linuxfoundation.org>
properties:
compatible:
oneOf:
- items:
- enum:
- allwinner,sun4i-a10-ehci
- allwinner,sun50i-a100-ehci
- allwinner,sun50i-a64-ehci
- allwinner,sun50i-h6-ehci
- allwinner,sun50i-h616-ehci
- allwinner,sun55i-a523-ehci
- allwinner,sun5i-a13-ehci
- allwinner,sun6i-a31-ehci
- allwinner,sun7i-a20-ehci
- allwinner,sun8i-a23-ehci
- allwinner,sun8i-a83t-ehci
- allwinner,sun8i-h3-ehci
- allwinner,sun8i-r40-ehci
- allwinner,sun8i-v3s-ehci
- allwinner,sun9i-a80-ehci
- allwinner,sun20i-d1-ehci
- aspeed,ast2400-ehci
- aspeed,ast2500-ehci
- aspeed,ast2600-ehci
- aspeed,ast2700-ehci
- brcm,bcm3384-ehci
- brcm,bcm63268-ehci
- brcm,bcm6328-ehci
- brcm,bcm6358-ehci
- brcm,bcm6362-ehci
- brcm,bcm6368-ehci
- brcm,bcm7125-ehci
- brcm,bcm7346-ehci
- brcm,bcm7358-ehci
- brcm,bcm7360-ehci
- brcm,bcm7362-ehci
- brcm,bcm7420-ehci
- brcm,bcm7425-ehci
- brcm,bcm7435-ehci
- hpe,gxp-ehci
- ibm,476gtr-ehci
- nxp,lpc1850-ehci
- qca,ar7100-ehci
- rockchip,rk3588-ehci
- snps,hsdk-v1.0-ehci
- socionext,uniphier-ehci
- const: generic-ehci
- items:
- enum:
- atmel,at91sam9g45-ehci
- cavium,octeon-6335-ehci
- ibm,usb-ehci-440epx
- ibm,usb-ehci-460ex
- nintendo,hollywood-usb-ehci
- st,spear600-ehci
- const: usb-ehci
- enum:
- generic-ehci
- marvell,ac5-ehci
- marvell,armada-3700-ehci
- marvell,orion-ehci
- nuvoton,npcm750-ehci
- nuvoton,npcm845-ehci
- ti,ehci-omap
- usb-ehci
- via,vt8500-ehci
reg:
minItems: 1
maxItems: 2
dma-coherent: true
interrupts:
maxItems: 1
resets:
minItems: 1
maxItems: 4
clocks:
minItems: 1
maxItems: 4
description: |
In case the Renesas R-Car Gen3 SoCs:
- if a host only channel: first clock should be host.
- if a USB DRD channel: first clock should be host and second
one should be peripheral
power-domains:
maxItems: 1
big-endian:
$ref: /schemas/types.yaml#/definitions/flag
description:
Set this flag for HCDs with big endian descriptors and big
endian registers.
big-endian-desc:
$ref: /schemas/types.yaml#/definitions/flag
description:
Set this flag for HCDs with big endian descriptors.
big-endian-regs:
$ref: /schemas/types.yaml#/definitions/flag
description:
Set this flag for HCDs with big endian registers.
has-transaction-translator:
$ref: /schemas/types.yaml#/definitions/flag
description:
Set this flag if EHCI has a Transaction Translator built into
the root hub.
needs-reset-on-resume:
$ref: /schemas/types.yaml#/definitions/flag
description:
Set this flag to force EHCI reset after resume.
spurious-oc:
$ref: /schemas/types.yaml#/definitions/flag
description:
Set this flag to indicate that the hardware sometimes turns on
the OC bit when an over-current isn't actually present.
phys:
minItems: 1
maxItems: 3
phy-names:
const: usb
iommus:
maxItems: 1
dr_mode:
enum:
- host
- otg
required:
- compatible
- reg
- interrupts
allOf:
- $ref: usb-hcd.yaml
- if:
properties:
compatible:
not:
contains:
const: ibm,usb-ehci-440epx
then:
properties:
reg:
maxItems: 1
- if:
properties:
compatible:
contains:
const: atmel,at91sam9g45-ehci
then:
properties:
clock-names:
items:
- const: usb_clk
- const: ehci_clk
phy_type:
enum:
- utmi
- hsic
required:
- clocks
- clock-names
unevaluatedProperties: false
examples:
- |
usb@e0000300 {
compatible = "ibm,usb-ehci-440epx", "usb-ehci";
interrupt-parent = <&UIC0>;
interrupts = <0x1a 4>;
reg = <0xe0000300 90>, <0xe0000390 70>;
big-endian;
};
- |
ehci0: usb@1c14000 {
compatible = "allwinner,sun4i-a10-ehci", "generic-ehci";
reg = <0x01c14000 0x100>;
interrupts = <39>;
clocks = <&ahb_gates 1>;
phys = <&usbphy 1>;
phy-names = "usb";
};
...
@@ -0,0 +1,225 @@
# SPDX-License-Identifier: GPL-2.0
%YAML 1.2
---
$id: http://devicetree.org/schemas/usb/generic-ohci.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: USB OHCI Controller
maintainers:
- Greg Kroah-Hartman <gregkh@linuxfoundation.org>
properties:
compatible:
oneOf:
- items:
- enum:
- allwinner,sun4i-a10-ohci
- allwinner,sun50i-a100-ohci
- allwinner,sun50i-a64-ohci
- allwinner,sun50i-h6-ohci
- allwinner,sun50i-h616-ohci
- allwinner,sun55i-a523-ohci
- allwinner,sun5i-a13-ohci
- allwinner,sun6i-a31-ohci
- allwinner,sun7i-a20-ohci
- allwinner,sun8i-a23-ohci
- allwinner,sun8i-a83t-ohci
- allwinner,sun8i-h3-ohci
- allwinner,sun8i-r40-ohci
- allwinner,sun8i-v3s-ohci
- allwinner,sun9i-a80-ohci
- allwinner,sun20i-d1-ohci
- brcm,bcm3384-ohci
- brcm,bcm63268-ohci
- brcm,bcm6328-ohci
- brcm,bcm6358-ohci
- brcm,bcm6362-ohci
- brcm,bcm6368-ohci
- brcm,bcm7125-ohci
- brcm,bcm7346-ohci
- brcm,bcm7358-ohci
- brcm,bcm7360-ohci
- brcm,bcm7362-ohci
- brcm,bcm7420-ohci
- brcm,bcm7425-ohci
- brcm,bcm7435-ohci
- hpe,gxp-ohci
- ibm,476gtr-ohci
- ingenic,jz4740-ohci
- rockchip,rk3588-ohci
- snps,hsdk-v1.0-ohci
- const: generic-ohci
- enum:
- generic-ohci
- ti,ohci-omap3
- items:
- enum:
- atmel,at91rm9200-ohci
- cavium,octeon-6335-ohci
- nintendo,hollywood-usb-ohci
- nxp,ohci-nxp
- st,spear600-ohci
- const: usb-ohci
reg:
maxItems: 1
dma-coherent: true
interrupts:
maxItems: 1
resets:
minItems: 1
maxItems: 2
clocks:
minItems: 1
maxItems: 4
description: |
In case the Renesas R-Car Gen3 SoCs:
- if a host only channel: first clock should be host.
- if a USB DRD channel: first clock should be host and second
one should be peripheral
power-domains:
maxItems: 1
big-endian:
$ref: /schemas/types.yaml#/definitions/flag
description:
Set this flag for HCDs with big endian descriptors and big
endian registers.
big-endian-desc:
$ref: /schemas/types.yaml#/definitions/flag
description:
Set this flag for HCDs with big endian descriptors.
big-endian-regs:
$ref: /schemas/types.yaml#/definitions/flag
description:
Set this flag for HCDs with big endian registers.
remote-wakeup-connected:
$ref: /schemas/types.yaml#/definitions/flag
description:
Remote wakeup is wired on the platform.
no-big-frame-no:
$ref: /schemas/types.yaml#/definitions/flag
description:
Set if frame_no lives in bits [15:0] of HCCA
num-ports:
$ref: /schemas/types.yaml#/definitions/uint32
description:
Overrides the detected port count
phys:
minItems: 1
maxItems: 3
phy-names:
const: usb
iommus:
maxItems: 1
dr_mode:
enum:
- host
- otg
transceiver:
$ref: /schemas/types.yaml#/definitions/phandle
description:
The associated ISP1301 device. Necessary for the UDC controller for
connecting to the USB physical layer.
atmel,vbus-gpio:
description:
GPIO used to control or sense the USB VBUS power. Each entry
represents a VBUS-related GPIO; count and order may vary by hardware.
Entries follow standard GPIO specifier format. A value of 0 indicates
an unused or unavailable VBUS signal.
minItems: 1
maxItems: 3
atmel,oc-gpio:
description:
GPIO used to signal USB overcurrent condition. Each entry represents
an OC detection GPIO; count and order may vary by hardware. Entries
follow standard GPIO specifier format. A value of 0 indicates an
unused or unavailable OC signal.
minItems: 1
maxItems: 3
required:
- compatible
- reg
- interrupts
allOf:
- $ref: usb-hcd.yaml
- if:
properties:
compatible:
contains:
const: atmel,at91rm9200-ohci
then:
properties:
clock-names:
items:
- const: ohci_clk
- const: hclk
- const: uhpck
required:
- clocks
- clock-names
else:
properties:
atmel,vbus-gpio: false
atmel,oc-gpio: false
- if:
not:
properties:
compatible:
contains:
const: nxp,ohci-nxp
then:
properties:
transceiver: false
- if:
properties:
compatible:
contains:
const: rockchip,rk3588-ohci
then:
properties:
clocks:
minItems: 4
else:
properties:
clocks:
minItems: 1
maxItems: 3
unevaluatedProperties: false
examples:
- |
ohci0: usb@1c14400 {
compatible = "allwinner,sun4i-a10-ohci", "generic-ohci";
reg = <0x01c14400 0x100>;
interrupts = <64>;
clocks = <&usb_clk 6>, <&ahb_gates 2>;
phys = <&usbphy 1>;
phy-names = "usb";
};
...
@@ -0,0 +1,97 @@
# SPDX-License-Identifier: GPL-2.0
%YAML 1.2
---
$id: http://devicetree.org/schemas/usb/generic-xhci.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: USB xHCI Controller
maintainers:
- Mathias Nyman <mathias.nyman@intel.com>
properties:
compatible:
oneOf:
- description: Generic xHCI device
const: generic-xhci
- description: Armada 375/38x SoCs
items:
- enum:
- marvell,armada-375-xhci
- marvell,armada-380-xhci
- description: Armada 37xx/8k SoCs
items:
- enum:
- marvell,armada3700-xhci
- marvell,armada-8k-xhci
- const: generic-xhci
- description: Broadcom SoCs with power domains
items:
- enum:
- brcm,bcm2711-xhci
- const: brcm,xhci-brcm-v2
- description: Broadcom STB SoCs with xHCI
enum:
- brcm,xhci-brcm-v2
- brcm,bcm7445-xhci
- description: Generic xHCI device
const: xhci-platform
deprecated: true
reg:
maxItems: 1
interrupts:
maxItems: 1
clocks:
minItems: 1
maxItems: 2
clock-names:
minItems: 1
items:
- const: core
- const: reg
dma-coherent: true
dr_mode:
enum:
- host
- otg
iommus:
maxItems: 1
power-domains:
maxItems: 1
unevaluatedProperties: false
required:
- compatible
- reg
- interrupts
allOf:
- $ref: usb-xhci.yaml#
- if:
properties:
compatible:
contains:
const: brcm,bcm2711-xhci
then:
required:
- power-domains
else:
properties:
power-domains: false
examples:
- |
usb@f0931000 {
compatible = "generic-xhci";
reg = <0xf0931000 0x8c8>;
interrupts = <0x0 0x4e 0x0>;
};
@@ -0,0 +1,131 @@
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/usb/genesys,gl850g.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Genesys Logic USB hub controller
maintainers:
- Icenowy Zheng <uwu@icenowy.me>
properties:
compatible:
enum:
- usb5e3,608
- usb5e3,610
- usb5e3,620
- usb5e3,625
- usb5e3,626
reg: true
reset-gpios:
description: GPIO controlling the RESET# pin.
vdd-supply:
description:
The regulator that provides 3.3V or 5.0V core power to the hub.
vdd12-supply:
description:
The regulator that provides 1.2V power to the hub.
peer-hub: true
ports:
$ref: /schemas/graph.yaml#/properties/ports
patternProperties:
'^port@':
$ref: /schemas/graph.yaml#/properties/port
properties:
reg:
minimum: 1
maximum: 4
required:
- compatible
- reg
allOf:
- $ref: usb-hub.yaml#
- if:
properties:
compatible:
contains:
enum:
- usb5e3,608
then:
properties:
peer-hub: false
vdd-supply: false
vdd12-supply: false
- if:
properties:
compatible:
contains:
enum:
- usb5e3,610
- usb5e3,620
then:
properties:
peer-hub: true
vdd-supply: true
vdd12-supply: false
- if:
properties:
compatible:
contains:
enum:
- usb5e3,625
then:
properties:
peer-hub: true
vdd-supply: true
unevaluatedProperties: false
examples:
- |
#include <dt-bindings/gpio/gpio.h>
usb {
dr_mode = "host";
#address-cells = <1>;
#size-cells = <0>;
hub: hub@1 {
compatible = "usb5e3,608";
reg = <1>;
reset-gpios = <&pio 7 2 GPIO_ACTIVE_LOW>;
};
};
- |
#include <dt-bindings/gpio/gpio.h>
usb {
dr_mode = "host";
#address-cells = <1>;
#size-cells = <0>;
/* 2.0 hub on port 1 */
hub_2_0: hub@1 {
compatible = "usb5e3,610";
reg = <1>;
peer-hub = <&hub_3_0>;
reset-gpios = <&gpio 20 GPIO_ACTIVE_LOW>;
vdd-supply = <&vcc_5v>;
};
/* 3.1 hub on port 4 */
hub_3_0: hub@2 {
compatible = "usb5e3,620";
reg = <2>;
peer-hub = <&hub_2_0>;
reset-gpios = <&gpio 20 GPIO_ACTIVE_LOW>;
vdd-supply = <&vcc_5v>;
};
};
@@ -0,0 +1,140 @@
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
# Copyright (c) 2025, Google LLC
%YAML 1.2
---
$id: http://devicetree.org/schemas/usb/google,lga-dwc3.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Google Tensor Series G5 (Laguna) DWC3 USB SoC Controller
maintainers:
- Roy Luo <royluo@google.com>
description:
Describes the DWC3 USB controller block implemented on Google Tensor SoCs,
starting with the G5 generation (laguna). Based on Synopsys DWC3 IP, the
controller features Dual-Role Device single port with hibernation add-on.
properties:
compatible:
const: google,lga-dwc3
reg:
items:
- description: Core DWC3 IP registers.
interrupts:
items:
- description: Core DWC3 interrupt.
- description: High speed power management event for remote wakeup.
- description: Super speed power management event for remote wakeup.
interrupt-names:
items:
- const: core
- const: hs_pme
- const: ss_pme
clocks:
items:
- description: Non-sticky module clock.
- description: Sticky module clock.
clock-names:
items:
- const: non_sticky
- const: sticky
resets:
items:
- description: Non-sticky module reset.
- description: Sticky module reset.
- description: DRD bus reset.
- description: Top-level reset.
reset-names:
items:
- const: non_sticky
- const: sticky
- const: drd_bus
- const: top
power-domains:
items:
- description: Power switchable domain, the child of top domain.
Turning it on puts the controller into full power state,
turning it off puts the controller into power gated state.
- description: Top domain, the parent of power switchable domain.
Turning it on puts the controller into power gated state,
turning it off completely shuts off the controller.
power-domain-names:
items:
- const: psw
- const: top
iommus:
maxItems: 1
google,usb-cfg-csr:
description:
A phandle to a syscon node used to access the USB configuration
registers. These registers are the top-level wrapper of the USB
subsystem and provide control and status for the integrated USB
controller and USB PHY.
$ref: /schemas/types.yaml#/definitions/phandle-array
items:
- items:
- description: phandle to the syscon node.
- description: USB host controller configuration register offset.
- description: USB custom interrrupts control register offset.
required:
- compatible
- reg
- interrupts
- interrupt-names
- clocks
- clock-names
- resets
- reset-names
- power-domains
- power-domain-names
- google,usb-cfg-csr
allOf:
- $ref: snps,dwc3-common.yaml#
unevaluatedProperties: false
examples:
- |
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/interrupt-controller/irq.h>
soc {
#address-cells = <2>;
#size-cells = <2>;
usb@c400000 {
compatible = "google,lga-dwc3";
reg = <0 0x0c400000 0 0xd060>;
interrupts = <GIC_SPI 580 IRQ_TYPE_LEVEL_HIGH 0>,
<GIC_SPI 597 IRQ_TYPE_LEVEL_HIGH 0>,
<GIC_SPI 598 IRQ_TYPE_LEVEL_HIGH 0>;
interrupt-names = "core", "hs_pme", "ss_pme";
clocks = <&hsion_usbc_non_sticky_clk>, <&hsion_usbc_sticky_clk>;
clock-names = "non_sticky", "sticky";
resets = <&hsion_resets_usbc_non_sticky>, <&hsion_resets_usbc_sticky>,
<&hsion_resets_usb_drd_bus>, <&hsion_resets_usb_top>;
reset-names = "non_sticky", "sticky", "drd_bus", "top";
power-domains = <&hsio_n_usb_psw>, <&hsio_n_usb>;
power-domain-names = "psw", "top";
phys = <&usb_phy 0>;
phy-names = "usb2-phy";
snps,quirk-frame-length-adjustment = <0x20>;
snps,gfladj-refclk-lpm-sel-quirk;
snps,incr-burst-type-adjustment = <4>;
google,usb-cfg-csr = <&usb_cfg_csr 0x0 0x20>;
};
};
...
@@ -0,0 +1,116 @@
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/usb/gpio-sbu-mux.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: GPIO-based SBU mux
maintainers:
- Bjorn Andersson <andersson@kernel.org>
description:
In USB Type-C applications the SBU lines needs to be connected, disconnected
and swapped depending on the altmode and orientation. This binding describes
a family of hardware solutions which switches between these modes using GPIO
signals.
properties:
compatible:
items:
- enum:
- nxp,cbdtu02043
- onnn,fsusb42
- onnn,fsusb43l10x
- pericom,pi3usb102
- ti,tmuxhs4212
- const: gpio-sbu-mux
enable-gpios:
description: Switch enable GPIO
select-gpios:
description: Orientation select
vcc-supply:
description: power supply
mode-switch: true
orientation-switch: true
port:
$ref: /schemas/graph.yaml#/properties/port
description:
A port node to link the SBU mux to a TypeC controller for the purpose of
handling altmode muxing and orientation switching.
required:
- compatible
- select-gpios
- orientation-switch
- port
allOf:
- $ref: usb-switch.yaml#
- $ref: usb-switch-ports.yaml#
- if:
required:
- mode-switch
then:
required:
- enable-gpios
additionalProperties: false
examples:
- |
#include <dt-bindings/gpio/gpio.h>
tcpm {
connector {
compatible = "usb-c-connector";
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
tcpm_hs_out: endpoint {
remote-endpoint = <&usb_hs_phy_in>;
};
};
port@1 {
reg = <1>;
tcpm_ss_out: endpoint {
remote-endpoint = <&usb_ss_phy_in>;
};
};
port@2 {
reg = <2>;
tcpm_sbu_out: endpoint {
remote-endpoint = <&sbu_mux_in>;
};
};
};
};
};
sbu-mux {
compatible = "pericom,pi3usb102", "gpio-sbu-mux";
enable-gpios = <&tlmm 101 GPIO_ACTIVE_LOW>;
select-gpios = <&tlmm 164 GPIO_ACTIVE_HIGH>;
mode-switch;
orientation-switch;
port {
sbu_mux_in: endpoint {
remote-endpoint = <&tcpm_sbu_out>;
};
};
};
...
@@ -0,0 +1,34 @@
USB Peripheral Controller driver for Aeroflex Gaisler GRUSBDC.
The GRUSBDC USB Device Controller core is available in the GRLIB VHDL
IP core library.
Note: In the ordinary environment for the core, a Leon SPARC system,
these properties are built from information in the AMBA plug&play.
Required properties:
- name : Should be "GAISLER_USBDC" or "01_021"
- reg : Address and length of the register set for the device
- interrupts : Interrupt numbers for this device. Either one interrupt number
for all interrupts, or one for status related interrupts, one for IN
endpoint related interrupts and one for OUT endpoint related interrupts.
Optional properties:
- epobufsizes : Array of buffer sizes for OUT endpoints when they differ
from the default size of 1024. The array is indexed by the OUT endpoint
number. If the property is present it typically contains one entry for
each OUT endpoint of the core. Fewer entries overrides the default sizes
only for as many endpoints as the array contains.
- epibufsizes : Array of buffer sizes for IN endpoints when they differ
from the default size of 1024. The array is indexed by the IN endpoint
number. If the property is present it typically contains one entry for
each IN endpoint of the core. Fewer entries overrides the default sizes
only for as many endpoints as the array contains.
For further information look in the documentation for the GLIB IP core library:
http://www.gaisler.com/products/grlib/grip.pdf
@@ -0,0 +1,99 @@
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/usb/hisilicon,hi3798mv200-dwc3.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: HiSilicon Hi3798MV200 DWC3 USB SoC controller
maintainers:
- Yang Xiwen <forbidden405@foxmail.com>
properties:
compatible:
const: hisilicon,hi3798mv200-dwc3
'#address-cells':
const: 1
'#size-cells':
const: 1
ranges: true
clocks:
items:
- description: Controller bus clock
- description: Controller suspend clock
- description: Controller reference clock
- description: Controller gm clock
- description: Controller gs clock
- description: Controller utmi clock
- description: Controller pipe clock
clock-names:
items:
- const: bus
- const: suspend
- const: ref
- const: gm
- const: gs
- const: utmi
- const: pipe
resets:
maxItems: 1
reset-names:
const: soft
patternProperties:
'^usb@[0-9a-f]+$':
$ref: snps,dwc3.yaml#
required:
- compatible
- ranges
- '#address-cells'
- '#size-cells'
- clocks
- clock-names
- resets
- reset-names
additionalProperties: false
examples:
- |
#include <dt-bindings/interrupt-controller/arm-gic.h>
usb {
compatible = "hisilicon,hi3798mv200-dwc3";
ranges;
#address-cells = <1>;
#size-cells = <1>;
clocks = <&clk_bus>,
<&clk_suspend>,
<&clk_ref>,
<&clk_gm>,
<&clk_gs>,
<&clk_utmi>,
<&clk_pipe>;
clock-names = "bus", "suspend", "ref", "gm", "gs", "utmi", "pipe";
resets = <&crg 0xb0 12>;
reset-names = "soft";
usb@98a0000 {
compatible = "snps,dwc3";
reg = <0x98a0000 0x10000>;
interrupts = <GIC_SPI 69 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clk_bus>,
<&clk_suspend>,
<&clk_ref>;
clock-names = "bus_early", "suspend", "ref";
phys = <&usb2_phy1_port2>, <&combphy0 0>;
phy-names = "usb2-phy", "usb3-phy";
maximum-speed = "super-speed";
dr_mode = "host";
};
};
@@ -0,0 +1,45 @@
HiSilicon STB xHCI
The device node for HiSilicon STB xHCI host controller
Required properties:
- compatible: should be "hisilicon,hi3798cv200-xhci"
- reg: specifies physical base address and size of the registers
- interrupts : interrupt used by the controller
- clocks: a list of phandle + clock-specifier pairs, one for each
entry in clock-names
- clock-names: must contain
"bus": for bus clock
"utmi": for utmi clock
"pipe": for pipe clock
"suspend": for suspend clock
- resets: a list of phandle and reset specifier pairs as listed in
reset-names property.
- reset-names: must contain
"soft": for soft reset
- phys: a list of phandle + phy specifier pairs
- phy-names: must contain at least one of following:
"inno": for inno phy
"combo": for combo phy
Optional properties:
- usb2-lpm-disable: indicate if we don't want to enable USB2 HW LPM
- usb3-lpm-capable: determines if platform is USB3 LPM capable
- imod-interval-ns: default interrupt moderation interval is 40000ns
Example:
xhci0: xchi@f98a0000 {
compatible = "hisilicon,hi3798cv200-xhci";
reg = <0xf98a0000 0x10000>;
interrupts = <GIC_SPI 69 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&crg HISTB_USB3_BUS_CLK>,
<&crg HISTB_USB3_UTMI_CLK>,
<&crg HISTB_USB3_PIPE_CLK>,
<&crg HISTB_USB3_SUSPEND_CLK>;
clock-names = "bus", "utmi", "pipe", "suspend";
resets = <&crg 0xb0 12>;
reset-names = "soft";
phys = <&usb2_phy1_port1 0>, <&combphy0 PHY_TYPE_USB3>;
phy-names = "inno", "combo";
};
@@ -0,0 +1,79 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/usb/ingenic,musb.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Ingenic JZ47xx USB IP
maintainers:
- Paul Cercueil <paul@crapouillou.net>
properties:
$nodename:
pattern: '^usb@.*'
compatible:
oneOf:
- enum:
- ingenic,jz4770-musb
- ingenic,jz4740-musb
- items:
- const: ingenic,jz4725b-musb
- const: ingenic,jz4740-musb
reg:
maxItems: 1
clocks:
maxItems: 1
clock-names:
items:
- const: udc
interrupts:
maxItems: 1
interrupt-names:
items:
- const: mc
phys:
maxItems: 1
usb-role-switch:
type: boolean
required:
- compatible
- reg
- clocks
- clock-names
- interrupts
- interrupt-names
- phys
additionalProperties: false
examples:
- |
#include <dt-bindings/clock/ingenic,jz4740-cgu.h>
usb_phy: usb-phy {
compatible = "usb-nop-xceiv";
#phy-cells = <0>;
};
udc: usb@13040000 {
compatible = "ingenic,jz4740-musb";
reg = <0x13040000 0x10000>;
interrupt-parent = <&intc>;
interrupts = <24>;
interrupt-names = "mc";
clocks = <&cgu JZ4740_CLK_UDC>;
clock-names = "udc";
phys = <&usb_phy>;
};
@@ -0,0 +1,39 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/usb/intel,ixp4xx-udc.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Intel IXP4xx SoC USB Device Controller (UDC)
description: The IXP4xx SoCs has a full-speed USB Device
Controller with 16 endpoints and a built-in transceiver.
maintainers:
- Linus Walleij <linusw@kernel.org>
properties:
compatible:
const: intel,ixp4xx-udc
reg:
maxItems: 1
interrupts:
maxItems: 1
required:
- compatible
- reg
- interrupts
additionalProperties: false
examples:
- |
#include <dt-bindings/interrupt-controller/irq.h>
usb@c800b000 {
compatible = "intel,ixp4xx-udc";
reg = <0xc800b000 0x1000>;
interrupts = <12 IRQ_TYPE_LEVEL_HIGH>;
};
@@ -0,0 +1,77 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/usb/intel,keembay-dwc3.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Intel Keem Bay DWC3 USB controller
maintainers:
- Wan Ahmad Zainie <wan.ahmad.zainie.wan.mohamad@intel.com>
properties:
compatible:
const: intel,keembay-dwc3
reg:
maxItems: 1
clocks:
maxItems: 4
clock-names:
items:
- const: async_master
- const: ref
- const: alt_ref
- const: suspend
ranges: true
'#address-cells':
enum: [ 1, 2 ]
'#size-cells':
enum: [ 1, 2 ]
# Required child node:
patternProperties:
"^usb@[0-9a-f]+$":
$ref: snps,dwc3.yaml#
required:
- compatible
- clocks
- clock-names
- ranges
additionalProperties: false
examples:
- |
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/interrupt-controller/irq.h>
#define KEEM_BAY_A53_AUX_USB
#define KEEM_BAY_A53_AUX_USB_REF
#define KEEM_BAY_A53_AUX_USB_ALT_REF
#define KEEM_BAY_A53_AUX_USB_SUSPEND
usb {
compatible = "intel,keembay-dwc3";
clocks = <&scmi_clk KEEM_BAY_A53_AUX_USB>,
<&scmi_clk KEEM_BAY_A53_AUX_USB_REF>,
<&scmi_clk KEEM_BAY_A53_AUX_USB_ALT_REF>,
<&scmi_clk KEEM_BAY_A53_AUX_USB_SUSPEND>;
clock-names = "async_master", "ref", "alt_ref", "suspend";
ranges;
#address-cells = <1>;
#size-cells = <1>;
usb@34000000 {
compatible = "snps,dwc3";
reg = <0x34000000 0x10000>;
interrupts = <GIC_SPI 91 IRQ_TYPE_LEVEL_HIGH>;
dr_mode = "peripheral";
};
};
@@ -0,0 +1,21 @@
Broadcom IPROC USB Device controller.
The device node is used for UDCs integrated into Broadcom's
iProc family (Northstar2, Cygnus) of SoCs'. The UDC is based
on Synopsys Designware Cores AHB Subsystem Device Controller
IP.
Required properties:
- compatible: Add the compatibility strings for supported platforms.
For Broadcom NS2 platform, add "brcm,ns2-udc","brcm,iproc-udc".
For Broadcom Cygnus platform, add "brcm,cygnus-udc", "brcm,iproc-udc".
- reg: Offset and length of UDC register set
- interrupts: description of interrupt line
- phys: phandle to phy node.
Example:
udc_dwc: usb@664e0000 {
compatible = "brcm,ns2-udc", "brcm,iproc-udc";
reg = <0x664e0000 0x2000>;
interrupts = <GIC_SPI 424 IRQ_TYPE_LEVEL_HIGH>;
phys = <&usbdrd_phy>;
@@ -0,0 +1,72 @@
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/usb/ite,it5205.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: ITE IT5202 Type-C USB Alternate Mode Passive MUX
maintainers:
- AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
- Tianping Fang <tianping.fang@mediatek.com>
properties:
compatible:
const: ite,it5205
reg:
maxItems: 1
vcc-supply:
description: Power supply for VCC pin (3.3V)
mode-switch:
description: Flag the port as possible handle of altmode switching
type: boolean
orientation-switch:
description: Flag the port as possible handler of orientation switching
type: boolean
ite,ovp-enable:
description: Enable Over Voltage Protection functionality
type: boolean
port:
$ref: /schemas/graph.yaml#/properties/port
description:
A port node to link the IT5205 to a TypeC controller for the purpose of
handling altmode muxing and orientation switching.
required:
- compatible
- reg
- orientation-switch
- port
additionalProperties: false
examples:
- |
#include <dt-bindings/interrupt-controller/irq.h>
i2c {
#address-cells = <1>;
#size-cells = <0>;
typec-mux@48 {
compatible = "ite,it5205";
reg = <0x48>;
mode-switch;
orientation-switch;
vcc-supply = <&mt6359_vibr_ldo_reg>;
port {
it5205_usbss_sbu: endpoint {
remote-endpoint = <&typec_controller>;
};
};
};
};
...
@@ -0,0 +1,62 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
# Copyright 2019,2020 Lubomir Rintel <lkundrak@v3.sk>
%YAML 1.2
---
$id: http://devicetree.org/schemas/usb/marvell,pxau2o-ehci.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Marvell PXA/MMP EHCI
maintainers:
- Lubomir Rintel <lkundrak@v3.sk>
allOf:
- $ref: usb-hcd.yaml#
properties:
compatible:
const: marvell,pxau2o-ehci
reg:
maxItems: 1
interrupts:
maxItems: 1
clocks:
maxItems: 1
clock-names:
const: USBCLK
phys:
maxItems: 1
phy-names:
const: usb
required:
- compatible
- reg
- interrupts
- clocks
- clock-names
- phys
- phy-names
unevaluatedProperties: false
examples:
- |
#include <dt-bindings/clock/marvell,mmp2.h>
usb@d4208000 {
compatible = "marvell,pxau2o-ehci";
reg = <0xd4208000 0x200>;
interrupts = <44>;
clocks = <&soc_clocks MMP2_CLK_USB>;
clock-names = "USBCLK";
phys = <&usb_otg_phy>;
phy-names = "usb";
};
...
@@ -0,0 +1,89 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/usb/maxim,max33359.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Maxim TCPCI Type-C PD controller
maintainers:
- Badhri Jagan Sridharan <badhri@google.com>
description: Maxim TCPCI Type-C PD controller
properties:
compatible:
oneOf:
- enum:
- maxim,max33359
- items:
- const: maxim,max77759-tcpci
- const: maxim,max33359
reg:
maxItems: 1
interrupts:
maxItems: 1
connector:
type: object
$ref: ../connector/usb-connector.yaml#
description:
Properties for usb c connector.
vbus-supply:
description: Regulator to control sourcing Vbus.
required:
- compatible
- reg
- interrupts
- connector
additionalProperties: false
examples:
- |
#include <dt-bindings/interrupt-controller/irq.h>
#include <dt-bindings/usb/pd.h>
i2c {
#address-cells = <1>;
#size-cells = <0>;
maxtcpc@25 {
compatible = "maxim,max33359";
reg = <0x25>;
interrupt-parent = <&gpa8>;
interrupts = <2 IRQ_TYPE_LEVEL_LOW>;
vbus-supply = <&chgin_otg_reg>;
connector {
compatible = "usb-c-connector";
label = "USB-C";
data-role = "dual";
power-role = "dual";
try-power-role = "sink";
self-powered;
op-sink-microwatt = <2600000>;
new-source-frs-typec-current = <FRS_5V_1P5A>;
source-pdos = <PDO_FIXED(5000, 900,
PDO_FIXED_SUSPEND |
PDO_FIXED_USB_COMM |
PDO_FIXED_DATA_SWAP |
PDO_FIXED_DUAL_ROLE)>;
sink-pdos = <PDO_FIXED(5000, 3000,
PDO_FIXED_USB_COMM |
PDO_FIXED_DATA_SWAP |
PDO_FIXED_DUAL_ROLE)
PDO_FIXED(9000, 2000, 0)>;
sink-bc12-completion-time-ms = <500>;
pd-revision = /bits/ 8 <0x03 0x01 0x01 0x08>;
sink-load-step = <150>;
sink-load-characteristics = /bits/ 16 <SINK_LOAD_CHAR(0, 1, 1, 2)>;
sink-compliance = /bits/ 8 <(COMPLIANCE_LPS | COMPLIANCE_PS1)>;
charging-adapter-pdp-milliwatt = <18000>;
};
};
};
...
@@ -0,0 +1,67 @@
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/usb/maxim,max3420-udc.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: MAXIM MAX3420/1 USB Peripheral Controller
maintainers:
- Jassi Brar <jaswinder.singh@linaro.org>
description: |
The controller provices USB2.0 compliant FullSpeed peripheral
implementation over the SPI interface.
Specifications about the part can be found at:
http://datasheets.maximintegrated.com/en/ds/MAX3420E.pdf
properties:
compatible:
enum:
- maxim,max3420-udc
- maxim,max3421-udc
reg:
maxItems: 1
interrupts:
items:
- description: usb irq from max3420
- description: vbus detection irq
minItems: 1
interrupt-names:
items:
- const: udc
- const: vbus
minItems: 1
spi-max-frequency:
maximum: 26000000
required:
- compatible
- reg
- interrupts
- interrupt-names
additionalProperties: false
examples:
- |
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/interrupt-controller/irq.h>
spi {
#address-cells = <1>;
#size-cells = <0>;
udc@0 {
compatible = "maxim,max3420-udc";
reg = <0>;
interrupt-parent = <&gpio>;
interrupts = <0 IRQ_TYPE_EDGE_FALLING>, <10 IRQ_TYPE_EDGE_BOTH>;
interrupt-names = "udc", "vbus";
spi-max-frequency = <12500000>;
};
};
@@ -0,0 +1,67 @@
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/usb/maxim,max3421.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: MAXIM MAX3421e USB Peripheral/Host Controller
maintainers:
- David Mosberger <davidm@egauge.net>
description: |
The controller provides USB2.0 compliant with Full Speed or Low Speed when in
the host mode. At peripheral, it operates at Full Speed. At both cases, it
uses a SPI interface.
Datasheet at:
https://www.analog.com/media/en/technical-documentation/data-sheets/max3421e.pdf
properties:
compatible:
const: maxim,max3421
reg:
maxItems: 1
interrupts:
maxItems: 1
spi-max-frequency:
maximum: 26000000
maxim,vbus-en-pin:
$ref: /schemas/types.yaml#/definitions/uint32-array
description:
One of eight GPOUT pins to control external VBUS power and the polarity
of the active level. It's an array of GPIO number and the active level of it.
minItems: 2
maxItems: 2
required:
- compatible
- reg
- interrupts
- maxim,vbus-en-pin
allOf:
- $ref: /schemas/spi/spi-peripheral-props.yaml#
unevaluatedProperties: false
examples:
- |
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/interrupt-controller/irq.h>
spi {
#address-cells = <1>;
#size-cells = <0>;
usb@0 {
compatible = "maxim,max3421";
reg = <0>;
maxim,vbus-en-pin = <3 1>;
spi-max-frequency = <26000000>;
interrupt-parent = <&gpio>;
interrupts = <42>;
};
};
@@ -0,0 +1,100 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/usb/mediatek,mt6360-tcpc.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Mediatek MT6360 Type-C Port Switch and Power Delivery controller
maintainers:
- ChiYuan Huang <cy_huang@richtek.com>
description: |
Mediatek MT6360 is a multi-functional device. It integrates charger, ADC, flash, RGB indicators,
regulators (BUCKs/LDOs), and TypeC Port Switch with Power Delivery controller.
This document only describes MT6360 Type-C Port Switch and Power Delivery controller.
properties:
compatible:
enum:
- mediatek,mt6360-tcpc
interrupts:
maxItems: 1
interrupt-names:
items:
- const: PD_IRQB
connector:
type: object
$ref: ../connector/usb-connector.yaml#
description:
Properties for usb c connector.
additionalProperties: false
required:
- compatible
- interrupts
- interrupt-names
examples:
- |
#include <dt-bindings/interrupt-controller/irq.h>
#include <dt-bindings/usb/pd.h>
i2c {
#address-cells = <1>;
#size-cells = <0>;
mt6360@34 {
compatible = "mediatek,mt6360";
reg = <0x34>;
interrupts-extended = <&gpio26 0 IRQ_TYPE_LEVEL_LOW>;
interrupt-names = "IRQB";
interrupt-controller;
#interrupt-cells = <1>;
tcpc {
compatible = "mediatek,mt6360-tcpc";
interrupts-extended = <&gpio26 3 IRQ_TYPE_LEVEL_LOW>;
interrupt-names = "PD_IRQB";
connector {
compatible = "usb-c-connector";
label = "USB-C";
data-role = "dual";
power-role = "dual";
try-power-role = "sink";
source-pdos = <PDO_FIXED(5000, 1000, PDO_FIXED_DUAL_ROLE | PDO_FIXED_DATA_SWAP)>;
sink-pdos = <PDO_FIXED(5000, 2000, PDO_FIXED_DUAL_ROLE | PDO_FIXED_DATA_SWAP)>;
op-sink-microwatt = <10000000>;
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
endpoint {
remote-endpoint = <&usb_hs>;
};
};
port@1 {
reg = <1>;
endpoint {
remote-endpoint = <&usb_ss>;
};
};
port@2 {
reg = <2>;
endpoint {
remote-endpoint = <&dp_aux>;
};
};
};
};
};
};
};
...
@@ -0,0 +1,36 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/usb/mediatek,mt6370-tcpc.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: MediatTek MT6370 Type-C Port Switch and Power Delivery controller
maintainers:
- ChiYuan Huang <cy_huang@richtek.com>
description: |
MediaTek MT6370 is a multi-functional device.
It integrates charger, ADC, flash, RGB indicators,
regulators (DSV/VIBLDO), and TypeC Port Switch with Power Delivery controller.
This document only describes MT6370 Type-C Port Switch and
Power Delivery controller.
properties:
compatible:
enum:
- mediatek,mt6370-tcpc
interrupts:
maxItems: 1
connector:
type: object
$ref: /schemas/connector/usb-connector.yaml#
unevaluatedProperties: false
additionalProperties: false
required:
- compatible
- interrupts
@@ -0,0 +1,233 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
# Copyright (c) 2020 MediaTek
%YAML 1.2
---
$id: http://devicetree.org/schemas/usb/mediatek,mtk-xhci.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: MediaTek USB3 xHCI
maintainers:
- Chunfeng Yun <chunfeng.yun@mediatek.com>
allOf:
- $ref: usb-xhci.yaml
description: |
There are two scenarios:
case 1: only supports xHCI driver;
case 2: supports dual-role mode, and the host is based on xHCI driver.
properties:
# common properties for both case 1 and case 2
compatible:
items:
- enum:
- mediatek,mt2701-xhci
- mediatek,mt2712-xhci
- mediatek,mt7622-xhci
- mediatek,mt7623-xhci
- mediatek,mt7629-xhci
- mediatek,mt7986-xhci
- mediatek,mt7988-xhci
- mediatek,mt8173-xhci
- mediatek,mt8183-xhci
- mediatek,mt8186-xhci
- mediatek,mt8188-xhci
- mediatek,mt8189-xhci
- mediatek,mt8192-xhci
- mediatek,mt8195-xhci
- mediatek,mt8365-xhci
- const: mediatek,mtk-xhci
reg:
minItems: 1
items:
- description: the registers of xHCI MAC
- description: the registers of IP Port Control
reg-names:
minItems: 1
items:
- const: mac
- const: ippc # optional, only needed for case 1.
interrupts:
description:
use "interrupts-extended" when the interrupts are connected to the
separate interrupt controllers
minItems: 1
items:
- description: xHCI host controller interrupt
- description: optional, wakeup interrupt used to support runtime PM
interrupt-names:
minItems: 1
items:
- const: host
- const: wakeup
power-domains:
description: A phandle to USB power domain node to control USB's MTCMOS
maxItems: 1
clocks:
minItems: 1
items:
- description: Controller clock used by normal mode
- description: Reference clock used by low power mode etc
- description: Mcu bus clock for register access
- description: DMA bus clock for data transfer
- description: controller clock
- description: frame count clock
clock-names:
minItems: 1
items:
- const: sys_ck # required, the following ones are optional
- const: ref_ck
- const: mcu_ck
- const: dma_ck
- const: xhci_ck
- const: frmcnt_ck
phys:
description:
List of all PHYs used on this HCD, it's better to keep PHYs in order
as the hardware layout
minItems: 1
items:
- description: USB2/HS PHY # required, others are optional
- description: USB3/SS(P) PHY
- description: USB2/HS PHY
- description: USB3/SS(P) PHY
- description: USB2/HS PHY
- description: USB3/SS(P) PHY
- description: USB2/HS PHY
- description: USB3/SS(P) PHY
- description: USB2/HS PHY
port:
$ref: /schemas/graph.yaml#/properties/port
description: Super Speed (SS) Output endpoint to a Type-C connector
vusb33-supply:
description: Regulator of USB AVDD3.3v
vbus-supply:
description: Regulator of USB VBUS5v
resets:
maxItems: 1
usb3-lpm-capable: true
usb2-lpm-disable: true
imod-interval-ns:
description:
Interrupt moderation interval value, it is 8 times as much as that
defined in the xHCI spec on MTK's controller.
default: 5000
rx-fifo-depth:
$ref: /schemas/types.yaml#/definitions/uint32
description:
It is a quirk used to work around Gen1 isoc-in endpoint transfer issue
that still send out unexpected ACK after device finishes the burst
transfer with a short packet and cause an exception, specially on a 4K
camera device, it happens on controller before about IPM v1.6.0;
the side-effect is that it may cause performance drop about 10%,
including bulk transfer, prefer to use 3k here. The size is in bytes.
enum: [1024, 2048, 3072, 4096]
# the following properties are only used for case 1
wakeup-source:
description: enable USB remote wakeup, see power/wakeup-source.txt
type: boolean
mediatek,syscon-wakeup:
$ref: /schemas/types.yaml#/definitions/phandle-array
maxItems: 1
description:
A phandle to syscon used to access the register of the USB wakeup glue
layer between xHCI and SPM, the field should always be 3 cells long.
items:
items:
- description:
The first cell represents a phandle to syscon
- description:
The second cell represents the register base address of the glue
layer in syscon
- description: |
The third cell represents the hardware version of the glue layer,
1 - used by mt8173 etc, revision 1 without following IPM rule;
2 - used by mt2712 etc, revision 2 following IPM rule;
101 - used by mt8183, specific 1.01;
102 - used by mt8192, specific 1.02;
103 - used by mt8195, IP0, specific 1.03;
104 - used by mt8195, IP1, specific 1.04;
105 - used by mt8195, IP2, specific 1.05;
106 - used by mt8195, IP3, specific 1.06;
110 - used by mt8189, IP4, specific 1.10;
enum: [1, 2, 101, 102, 103, 104, 105, 106, 110]
mediatek,u3p-dis-msk:
$ref: /schemas/types.yaml#/definitions/uint32
description: The mask to disable u3ports, bit0 for u3port0,
bit1 for u3port1, ... etc
mediatek,u2p-dis-msk:
$ref: /schemas/types.yaml#/definitions/uint32
description: The mask to disable u2ports, bit0 for u2port0,
bit1 for u2port1, ... etc
"#address-cells":
const: 1
"#size-cells":
const: 0
patternProperties:
"@[0-9a-f]{1}$":
type: object
description: The hard wired USB devices.
dependencies:
wakeup-source: [ 'mediatek,syscon-wakeup' ]
required:
- compatible
- reg
- reg-names
- interrupts
- clocks
- clock-names
additionalProperties: false
examples:
- |
#include <dt-bindings/clock/mt8173-clk.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/interrupt-controller/irq.h>
#include <dt-bindings/phy/phy.h>
#include <dt-bindings/power/mt8173-power.h>
usb@11270000 {
compatible = "mediatek,mt8173-xhci", "mediatek,mtk-xhci";
reg = <0x11270000 0x1000>, <0x11280700 0x0100>;
reg-names = "mac", "ippc";
interrupts = <GIC_SPI 115 IRQ_TYPE_LEVEL_LOW>;
power-domains = <&scpsys MT8173_POWER_DOMAIN_USB>;
clocks = <&topckgen CLK_TOP_USB30_SEL>, <&clk26m>;
clock-names = "sys_ck", "ref_ck";
phys = <&u3port0 PHY_TYPE_USB3>, <&u2port1 PHY_TYPE_USB2>;
vusb33-supply = <&mt6397_vusb_reg>;
vbus-supply = <&usb_p1_vbus>;
imod-interval-ns = <10000>;
mediatek,syscon-wakeup = <&pericfg 0x400 1>;
wakeup-source;
usb3-lpm-capable;
};
...
@@ -0,0 +1,354 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
# Copyright (c) 2020 MediaTek
%YAML 1.2
---
$id: http://devicetree.org/schemas/usb/mediatek,mtu3.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: MediaTek USB3 DRD Controller
maintainers:
- Chunfeng Yun <chunfeng.yun@mediatek.com>
allOf:
- $ref: usb-drd.yaml
description: |
The DRD controller has a glue layer IPPC (IP Port Control), and its host is
based on xHCI.
properties:
compatible:
items:
- enum:
- mediatek,mt2712-mtu3
- mediatek,mt8173-mtu3
- mediatek,mt8183-mtu3
- mediatek,mt8186-mtu3
- mediatek,mt8188-mtu3
- mediatek,mt8192-mtu3
- mediatek,mt8195-mtu3
- mediatek,mt8365-mtu3
- const: mediatek,mtu3
reg:
items:
- description: the registers of device MAC
- description: the registers of IP Port Control
reg-names:
items:
- const: mac
- const: ippc
interrupts:
description:
use "interrupts-extended" when the interrupts are connected to the
separate interrupt controllers
minItems: 1
items:
- description: SSUSB device controller interrupt
- description: optional, wakeup interrupt used to support runtime PM
interrupt-names:
items:
- const: device
- const: wakeup
power-domains:
description: A phandle to USB power domain node to control USB's MTCMOS
maxItems: 1
clocks:
minItems: 1
items:
- description: Controller clock used by normal mode
- description: Reference clock used by low power mode etc
- description: Mcu bus clock for register access
- description: DMA bus clock for data transfer
- description: DRD controller clock
- description: Frame count clock
clock-names:
minItems: 1
items:
- const: sys_ck # required, others are optional
- const: ref_ck
- const: mcu_ck
- const: dma_ck
- const: xhci_ck
- const: frmcnt_ck
phys:
description:
List of all the USB PHYs used, it's better to keep the sequence
as the hardware layout.
minItems: 1
items:
- description: USB2/HS PHY # required, others are optional
- description: USB3/SS(P) PHY
- description: USB2/HS PHY # the following for backward compatible
- description: USB3/SS(P) PHY
- description: USB2/HS PHY
- description: USB3/SS(P) PHY
- description: USB2/HS PHY
- description: USB3/SS(P) PHY
- description: USB2/HS PHY
vusb33-supply:
description: Regulator of USB AVDD3.3v
vbus-supply:
deprecated: true
description: |
Regulator of USB VBUS5v, needed when supports dual-role mode.
Particularly, if use an output GPIO to control a VBUS regulator, should
model it as a regulator. See bindings/regulator/fixed-regulator.yaml
It's considered valid for compatibility reasons, not allowed for
new bindings, and put into a usb-connector node.
dr_mode:
enum: [host, peripheral, otg]
default: otg
maximum-speed:
enum: [super-speed-plus, super-speed, high-speed, full-speed]
resets:
maxItems: 1
"#address-cells":
enum: [1, 2]
"#size-cells":
enum: [1, 2]
ranges: true
extcon:
deprecated: true
description: |
Phandle to the extcon device detecting the IDDIG state, needed
when supports dual-role mode.
It's considered valid for compatibility reasons, not allowed for
new bindings, and use "usb-role-switch" property instead.
usb-role-switch:
$ref: /schemas/types.yaml#/definitions/flag
description: Support role switch.
type: boolean
role-switch-default-mode:
enum: [host, peripheral]
default: host
connector:
$ref: /schemas/connector/usb-connector.yaml#
description:
Connector for dual role switch, especially for "gpio-usb-b-connector"
type: object
port:
description:
Any connector to the data bus of this controller should be modelled
using the OF graph bindings specified, if the "usb-role-switch"
property is used. See graph.txt
$ref: /schemas/graph.yaml#/properties/port
ports:
$ref: /schemas/graph.yaml#/properties/ports
properties:
port@0:
$ref: /schemas/graph.yaml#/properties/port
description: High Speed (HS) data bus.
port@1:
$ref: /schemas/graph.yaml#/properties/port
description: Super Speed (SS) data bus.
enable-manual-drd:
$ref: /schemas/types.yaml#/definitions/flag
description:
supports manual dual-role switch via debugfs; usually used when
receptacle is TYPE-A and also wants to support dual-role mode.
type: boolean
wakeup-source:
description: enable USB remote wakeup, see power/wakeup-source.txt
type: boolean
mediatek,syscon-wakeup:
$ref: /schemas/types.yaml#/definitions/phandle-array
maxItems: 1
description:
A phandle to syscon used to access the register of the USB wakeup glue
layer between xHCI and SPM, the field should always be 3 cells long.
items:
items:
- description:
The first cell represents a phandle to syscon
- description:
The second cell represents the register base address of the glue
layer in syscon
- description: |
The third cell represents the hardware version of the glue layer,
1 - used by mt8173 etc, revision 1 without following IPM rule;
2 - used by mt2712 etc, revision 2 with following IPM rule;
101 - used by mt8183, specific 1.01;
102 - used by mt8192, specific 1.02;
103 - used by mt8195, IP0, specific 1.03;
105 - used by mt8195, IP2, specific 1.05;
106 - used by mt8195, IP3, specific 1.06;
enum: [1, 2, 101, 102, 103, 105, 106]
mediatek,u3p-dis-msk:
$ref: /schemas/types.yaml#/definitions/uint32
description: The mask to disable u3ports, bit0 for u3port0,
bit1 for u3port1, ... etc
mediatek,u2p-dis-msk:
$ref: /schemas/types.yaml#/definitions/uint32
description: The mask to disable u2ports, bit0 for u2port0,
bit1 for u2port1, ... etc; but can't disable u2port0 if dual role mode
is enabled, so will be skipped in this case.
# Required child node when support dual-role
patternProperties:
"^usb@[0-9a-f]+$":
type: object
$ref: /schemas/usb/mediatek,mtk-xhci.yaml#
description:
The xhci should be added as subnode to mtu3 as shown in the following
example if the host mode is enabled.
dependencies:
connector: [ usb-role-switch ]
port: [ usb-role-switch ]
role-switch-default-mode: [ usb-role-switch ]
wakeup-source: [ 'mediatek,syscon-wakeup' ]
required:
- compatible
- reg
- reg-names
- interrupts
- clocks
- clock-names
additionalProperties: false
examples:
# Dual role switch by extcon
- |
#include <dt-bindings/clock/mt8173-clk.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/interrupt-controller/irq.h>
#include <dt-bindings/phy/phy.h>
#include <dt-bindings/power/mt8173-power.h>
usb@11271000 {
compatible = "mediatek,mt8173-mtu3", "mediatek,mtu3";
reg = <0x11271000 0x3000>, <0x11280700 0x0100>;
reg-names = "mac", "ippc";
interrupts = <GIC_SPI 64 IRQ_TYPE_LEVEL_LOW>;
phys = <&phy_port0 PHY_TYPE_USB3>, <&phy_port1 PHY_TYPE_USB2>;
power-domains = <&scpsys MT8173_POWER_DOMAIN_USB>;
clocks = <&topckgen CLK_TOP_USB30_SEL>;
clock-names = "sys_ck";
vusb33-supply = <&mt6397_vusb_reg>;
vbus-supply = <&usb_p0_vbus>;
extcon = <&extcon_usb>;
dr_mode = "otg";
wakeup-source;
mediatek,syscon-wakeup = <&pericfg 0x400 1>;
#address-cells = <1>;
#size-cells = <1>;
ranges;
xhci: usb@11270000 {
compatible = "mediatek,mt8173-xhci", "mediatek,mtk-xhci";
reg = <0x11270000 0x1000>;
reg-names = "mac";
interrupts = <GIC_SPI 115 IRQ_TYPE_LEVEL_LOW>;
power-domains = <&scpsys MT8173_POWER_DOMAIN_USB>;
clocks = <&topckgen CLK_TOP_USB30_SEL>, <&clk26m>;
clock-names = "sys_ck", "ref_ck";
vusb33-supply = <&mt6397_vusb_reg>;
};
};
# Dual role switch by gpio-usb-b-connector
- |
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/power/mt2712-power.h>
usb@112c1000 {
compatible = "mediatek,mt2712-mtu3", "mediatek,mtu3";
reg = <0x112c1000 0x3000>, <0x112d0700 0x0100>;
reg-names = "mac", "ippc";
interrupts = <GIC_SPI 248 IRQ_TYPE_LEVEL_LOW>;
phys = <&u2port2 PHY_TYPE_USB2>;
power-domains = <&scpsys MT2712_POWER_DOMAIN_USB2>;
clocks = <&topckgen CLK_TOP_USB30_SEL>;
clock-names = "sys_ck";
dr_mode = "otg";
usb-role-switch;
#address-cells = <1>;
#size-cells = <1>;
ranges;
host0: usb@11270000 {
compatible = "mediatek,mt2712-xhci", "mediatek,mtk-xhci";
reg = <0x11270000 0x1000>;
reg-names = "mac";
interrupts = <GIC_SPI 123 IRQ_TYPE_LEVEL_LOW>;
power-domains = <&scpsys MT2712_POWER_DOMAIN_USB>;
clocks = <&topckgen CLK_TOP_USB30_SEL>, <&clk26m>;
clock-names = "sys_ck", "ref_ck";
};
connector {
compatible = "gpio-usb-b-connector", "usb-b-connector";
type = "micro";
id-gpios = <&pio 12 GPIO_ACTIVE_HIGH>;
vbus-supply = <&usb_p0_vbus>;
};
};
# Dual role switch with type-c
- |
usb@11201000 {
compatible = "mediatek,mt8183-mtu3", "mediatek,mtu3";
reg = <0x11201000 0x2e00>, <0x11203e00 0x0100>;
reg-names = "mac", "ippc";
interrupts = <GIC_SPI 72 IRQ_TYPE_LEVEL_LOW>;
phys = <&u2port0 PHY_TYPE_USB2>;
clocks = <&clk26m>;
clock-names = "sys_ck";
mediatek,syscon-wakeup = <&pericfg 0x400 1>;
wakeup-source;
dr_mode = "otg";
usb-role-switch;
role-switch-default-mode = "host";
#address-cells = <1>;
#size-cells = <1>;
ranges;
host: usb@11200000 {
compatible = "mediatek,mt8183-xhci", "mediatek,mtk-xhci";
reg = <0x11200000 0x1000>;
reg-names = "mac";
interrupts = <GIC_SPI 73 IRQ_TYPE_LEVEL_LOW>;
clocks = <&clk26m>;
clock-names = "sys_ck";
};
port {
usb_role_sw: endpoint {
remote-endpoint = <&hs_ep>;
};
};
};
...
@@ -0,0 +1,115 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
# Copyright (c) 2020 MediaTek
%YAML 1.2
---
$id: http://devicetree.org/schemas/usb/mediatek,musb.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: MediaTek MUSB DRD/OTG Controller
maintainers:
- Min Guo <min.guo@mediatek.com>
properties:
$nodename:
pattern: '^usb@[0-9a-f]+$'
compatible:
items:
- enum:
- mediatek,mt8516-musb
- mediatek,mt2701-musb
- mediatek,mt7623-musb
- const: mediatek,mtk-musb
reg:
maxItems: 1
interrupts:
maxItems: 1
interrupt-names:
items:
- const: mc
clocks:
items:
- description: The main/core clock
- description: The system bus clock
- description: The 48Mhz clock
clock-names:
items:
- const: main
- const: mcu
- const: univpll
phys:
maxItems: 1
usb-role-switch:
$ref: /schemas/types.yaml#/definitions/flag
description: Support role switch. See usb/generic.txt
type: boolean
dr_mode:
enum:
- host
- otg
- peripheral
power-domains:
description: A phandle to USB power domain node to control USB's MTCMOS
maxItems: 1
connector:
$ref: /schemas/connector/usb-connector.yaml#
description: Connector for dual role switch
type: object
dependencies:
usb-role-switch: [ connector ]
connector: [ usb-role-switch ]
required:
- compatible
- reg
- interrupts
- interrupt-names
- phys
- clocks
- clock-names
additionalProperties: false
examples:
- |
#include <dt-bindings/clock/mt2701-clk.h>
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/interrupt-controller/irq.h>
#include <dt-bindings/phy/phy.h>
#include <dt-bindings/power/mt2701-power.h>
usb@11200000 {
compatible = "mediatek,mt2701-musb", "mediatek,mtk-musb";
reg = <0x11200000 0x1000>;
interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_LOW>;
interrupt-names = "mc";
phys = <&u2port2 PHY_TYPE_USB2>;
dr_mode = "otg";
clocks = <&pericfg CLK_PERI_USB0>,
<&pericfg CLK_PERI_USB0_MCU>,
<&pericfg CLK_PERI_USB_SLV>;
clock-names = "main","mcu","univpll";
power-domains = <&scpsys MT2701_POWER_DOMAIN_IFR_MSC>;
usb-role-switch;
connector {
compatible = "gpio-usb-b-connector", "usb-b-connector";
type = "micro";
id-gpios = <&pio 44 GPIO_ACTIVE_HIGH>;
vbus-supply = <&usb_vbus>;
};
};
...
@@ -0,0 +1,66 @@
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/usb/microchip,lan9691-dwc3.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Microchip LAN969x SuperSpeed DWC3 USB SoC controller
maintainers:
- Robert Marko <robert.marko@sartura.hr>
select:
properties:
compatible:
contains:
enum:
- microchip,lan9691-dwc3
required:
- compatible
properties:
compatible:
items:
- enum:
- microchip,lan9691-dwc3
- const: snps,dwc3
reg:
maxItems: 1
interrupts:
maxItems: 1
clocks:
items:
- description: Gated USB DRD clock
- description: Controller reference clock
clock-names:
items:
- const: bus_early
- const: ref
unevaluatedProperties: false
required:
- compatible
- reg
- interrupts
- clocks
- clock-names
allOf:
- $ref: snps,dwc3.yaml#
examples:
- |
#include <dt-bindings/interrupt-controller/arm-gic.h>
usb@300000 {
compatible = "microchip,lan9691-dwc3", "snps,dwc3";
reg = <0x300000 0x80000>;
interrupts = <GIC_SPI 80 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clks 12>, <&clks 11>;
clock-names = "bus_early", "ref";
};
@@ -0,0 +1,72 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/usb/microchip,mpfs-musb.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Microchip MPFS USB Controller
allOf:
- $ref: usb-drd.yaml#
maintainers:
- Conor Dooley <conor.dooley@microchip.com>
properties:
compatible:
oneOf:
- items:
- const: microchip,pic64gx-musb
- const: microchip,mpfs-musb
- const: microchip,mpfs-musb
dr_mode: true
reg:
maxItems: 1
interrupts:
minItems: 2
maxItems: 2
interrupt-names:
items:
- const: dma
- const: mc
clocks:
maxItems: 1
resets:
maxItems: 1
microchip,ext-vbus-drv:
description:
Some ULPI USB PHYs do not support an internal VBUS supply and driving
the CPEN pin requires the configuration of the UPLI_USE__EXTVBUS
bit in ULPI_BUSCONTROL.
$ref: /schemas/types.yaml#/definitions/flag
required:
- compatible
- reg
- interrupts
- interrupt-names
- clocks
additionalProperties: false
examples:
- |
#include "dt-bindings/clock/microchip,mpfs-clock.h"
usb@20201000 {
compatible = "microchip,mpfs-musb";
reg = <0x20201000 0x1000>;
clocks = <&clkcfg CLK_USB>;
interrupt-parent = <&plic>;
interrupts = <86>, <87>;
interrupt-names = "dma", "mc";
dr_mode = "host";
};
...
@@ -0,0 +1,90 @@
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/usb/microchip,usb2514.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Microchip USB2514 Hub Controller
maintainers:
- Fabio Estevam <festevam@gmail.com>
properties:
compatible:
oneOf:
- enum:
- usb424,2412
- usb424,2417
- usb424,2514
- usb424,2517
- items:
- enum:
- usb424,2512
- usb424,2513
- const: usb424,2514
reg: true
reset-gpios:
description: GPIO connected to the RESET_N pin.
vdd-supply:
description: 3.3V power supply.
vdda-supply:
description: 3.3V analog power supply.
clocks:
description: External 24MHz clock connected to the CLKIN pin.
maxItems: 1
required:
- compatible
- reg
patternProperties:
"^.*@[0-9a-f]{1,2}$":
description: The hard wired USB devices
type: object
$ref: /schemas/usb/usb-device.yaml
additionalProperties: true
allOf:
- $ref: usb-device.yaml#
- if:
not:
properties:
compatible:
contains:
const: usb424,2514
then:
properties:
vdda-supply: false
unevaluatedProperties: false
examples:
- |
#include <dt-bindings/clock/imx6qdl-clock.h>
#include <dt-bindings/gpio/gpio.h>
usb {
#address-cells = <1>;
#size-cells = <0>;
usb-hub@1 {
compatible = "usb424,2514";
reg = <1>;
clocks = <&clks IMX6QDL_CLK_CKO>;
reset-gpios = <&gpio7 12 GPIO_ACTIVE_LOW>;
vdd-supply = <&reg_3v3_hub>;
vdda-supply = <&reg_3v3a_hub>;
#address-cells = <1>;
#size-cells = <0>;
ethernet@1 {
compatible = "usbb95,772b";
reg = <1>;
};
};
};
@@ -0,0 +1,110 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/usb/microchip,usb5744.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Microchip USB5744 4-port Hub Controller
description:
Microchip's USB5744 SmartHubTM IC is a 4 port, SuperSpeed (SS)/Hi-Speed (HS),
low power, low pin count configurable and fully compliant with the USB 3.1
Gen 1 specification. The USB5744 also supports Full Speed (FS) and Low Speed
(LS) USB signaling, offering complete coverage of all defined USB operating
speeds. The new SuperSpeed hubs operate in parallel with the USB 2.0
controller, so 5 Gbps SuperSpeed data transfers are not affected by slower
USB 2.0 traffic.
maintainers:
- Michal Simek <michal.simek@amd.com>
- Radhey Shyam Pandey <radhey.shyam.pandey@amd.com>
properties:
compatible:
enum:
- usb424,2744
- usb424,5744
- microchip,usb5744
reg:
maxItems: 1
reset-gpios:
maxItems: 1
description:
GPIO controlling the GRST# pin.
vdd-supply:
description:
3V3 power supply to the hub
vdd2-supply:
description:
1V2 power supply to the hub
peer-hub:
$ref: /schemas/types.yaml#/definitions/phandle
description:
phandle to the peer hub on the controller.
i2c-bus:
$ref: /schemas/types.yaml#/definitions/phandle
description:
phandle of an usb hub connected via i2c bus.
required:
- compatible
- reg
allOf:
- if:
properties:
compatible:
contains:
const: microchip,usb5744
then:
properties:
reset-gpios: false
vdd-supply: false
vdd2-supply: false
peer-hub: false
i2c-bus: false
else:
$ref: /schemas/usb/usb-device.yaml
additionalProperties: false
examples:
- |
#include <dt-bindings/gpio/gpio.h>
i2c: i2c {
#address-cells = <1>;
#size-cells = <0>;
hub: usb-hub@2d {
compatible = "microchip,usb5744";
reg = <0x2d>;
};
};
usb {
#address-cells = <1>;
#size-cells = <0>;
/* 2.0 hub on port 1 */
hub_2_0: hub@1 {
compatible = "usb424,2744";
reg = <1>;
peer-hub = <&hub_3_0>;
i2c-bus = <&hub>;
reset-gpios = <&gpio 3 GPIO_ACTIVE_LOW>;
};
/* 3.0 hub on port 2 */
hub_3_0: hub@2 {
compatible = "usb424,5744";
reg = <2>;
peer-hub = <&hub_2_0>;
i2c-bus = <&hub>;
reset-gpios = <&gpio 3 GPIO_ACTIVE_LOW>;
};
};
@@ -0,0 +1,211 @@
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/usb/nvidia,tegra-xudc.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: NVIDIA Tegra XUSB device mode controller (XUDC)
description:
The Tegra XUDC controller supports both USB 2.0 HighSpeed/FullSpeed and
USB 3.0 SuperSpeed protocols.
maintainers:
- Nagarjuna Kristam <nkristam@nvidia.com>
- JC Kuo <jckuo@nvidia.com>
- Thierry Reding <treding@nvidia.com>
properties:
compatible:
items:
- enum:
- nvidia,tegra210-xudc # For Tegra210
- nvidia,tegra186-xudc # For Tegra186
- nvidia,tegra194-xudc # For Tegra194
- nvidia,tegra234-xudc # For Tegra234
reg:
minItems: 2
items:
- description: XUSB device controller registers
- description: XUSB device PCI Config registers
- description: XUSB device registers.
reg-names:
minItems: 2
items:
- const: base
- const: fpci
- const: ipfs
interrupts:
maxItems: 1
description: Must contain the XUSB device interrupt.
clocks:
minItems: 4
items:
- description: Clock to enable core XUSB dev clock.
- description: Clock to enable XUSB super speed clock.
- description: Clock to enable XUSB super speed dev clock.
- description: Clock to enable XUSB high speed dev clock.
- description: Clock to enable XUSB full speed dev clock.
clock-names:
minItems: 4
items:
- const: dev
- const: ss
- const: ss_src
- const: fs_src
- const: hs_src
interconnects:
items:
- description: memory read client
- description: memory write client
interconnect-names:
items:
- const: dma-mem # read
- const: write
iommus:
maxItems: 1
power-domains:
items:
- description: XUSBB(device) power-domain
- description: XUSBA(superspeed) power-domain
power-domain-names:
items:
- const: dev
- const: ss
nvidia,xusb-padctl:
$ref: /schemas/types.yaml#/definitions/phandle
description:
phandle to the XUSB pad controller that is used to configure the USB pads
used by the XUDC controller.
phys:
minItems: 1
maxItems: 2
description:
Must contain an entry for each entry in phy-names.
See ../phy/phy-bindings.txt for details.
phy-names:
minItems: 1
items:
- const: usb2-0
- const: usb3-0
avddio-usb-supply:
description: PCIe/USB3 analog logic power supply. Must supply 1.05 V.
hvdd-usb-supply:
description: USB controller power supply. Must supply 3.3 V.
dma-coherent: true
required:
- compatible
- reg
- reg-names
- interrupts
- clocks
- clock-names
- power-domains
- power-domain-names
- nvidia,xusb-padctl
- phys
- phy-names
allOf:
- if:
properties:
compatible:
contains:
enum:
- nvidia,tegra210-xudc
then:
properties:
reg:
minItems: 3
reg-names:
minItems: 3
clocks:
minItems: 5
clock-names:
minItems: 5
required:
- avddio-usb-supply
- hvdd-usb-supply
- if:
properties:
compatible:
contains:
enum:
- nvidia,tegra186-xudc
- nvidia,tegra194-xudc
- nvidia,tegra234-xudc
then:
properties:
reg:
maxItems: 2
reg-names:
maxItems: 2
clocks:
maxItems: 4
clock-names:
maxItems: 4
- if:
properties:
compatible:
contains:
enum:
- nvidia,tegra194-xudc
- nvidia,tegra234-xudc
then:
required:
- dma-coherent
additionalProperties: false
examples:
- |
#include <dt-bindings/clock/tegra210-car.h>
#include <dt-bindings/gpio/tegra-gpio.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
usb@700d0000 {
compatible = "nvidia,tegra210-xudc";
reg = <0x700d0000 0x8000>,
<0x700d8000 0x1000>,
<0x700d9000 0x1000>;
reg-names = "base", "fpci", "ipfs";
interrupts = <GIC_SPI 44 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&tegra_car TEGRA210_CLK_XUSB_DEV>,
<&tegra_car TEGRA210_CLK_XUSB_SS>,
<&tegra_car TEGRA210_CLK_XUSB_SSP_SRC>,
<&tegra_car TEGRA210_CLK_XUSB_FS_SRC>,
<&tegra_car TEGRA210_CLK_XUSB_HS_SRC>;
clock-names = "dev", "ss", "ss_src", "fs_src", "hs_src";
power-domains = <&pd_xusbdev>, <&pd_xusbss>;
power-domain-names = "dev", "ss";
nvidia,xusb-padctl = <&padctl>;
phys = <&micro_b>;
phy-names = "usb2-0";
avddio-usb-supply = <&vdd_pex_1v05>;
hvdd-usb-supply = <&vdd_3v3_sys>;
};
@@ -0,0 +1,200 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/usb/nvidia,tegra124-xusb.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: NVIDIA Tegra124 xHCI controller
maintainers:
- Thierry Reding <thierry.reding@gmail.com>
- Jon Hunter <jonathanh@nvidia.com>
description: The Tegra xHCI controller supports both USB2 and USB3 interfaces
exposed by the Tegra XUSB pad controller.
properties:
# required
compatible:
oneOf:
- description: NVIDIA Tegra124
const: nvidia,tegra124-xusb
- description: NVIDIA Tegra132
items:
- const: nvidia,tegra132-xusb
- const: nvidia,tegra124-xusb
reg:
items:
- description: base and length of the xHCI host registers
- description: base and length of the XUSB FPCI registers
- description: base and length of the XUSB IPFS registers
reg-names:
items:
- const: hcd
- const: fpci
- const: ipfs
interrupts:
items:
- description: xHCI host interrupt
- description: mailbox interrupt
clocks:
items:
- description: XUSB host clock
- description: XUSB host source clock
- description: XUSB Falcon source clock
- description: XUSB SuperSpeed clock
- description: XUSB SuperSpeed clock divider
- description: XUSB SuperSpeed source clock
- description: XUSB HighSpeed clock source
- description: XUSB FullSpeed clock source
- description: USB PLL
- description: reference clock
- description: I/O PLL
clock-names:
items:
- const: xusb_host
- const: xusb_host_src
- const: xusb_falcon_src
- const: xusb_ss
- const: xusb_ss_div2
- const: xusb_ss_src
- const: xusb_hs_src
- const: xusb_fs_src
- const: pll_u_480m
- const: clk_m
- const: pll_e
resets:
items:
- description: reset for the XUSB host controller
- description: reset for the SuperSpeed logic
- description: shared reset for xusb_{ss,hs,fs,falcon,host}_src.
reset-names:
items:
- const: xusb_host
- const: xusb_ss
- const: xusb_src
nvidia,xusb-padctl:
$ref: /schemas/types.yaml#/definitions/phandle
description: phandle to the XUSB pad controller that is used to configure
the USB pads used by the XHCI controller
# optional
phys:
minItems: 1
maxItems: 7
phy-names:
minItems: 1
maxItems: 7
items:
enum:
- usb2-0
- usb2-1
- usb2-2
- hsic-0
- hsic-1
- usb3-0
- usb3-1
avddio-pex-supply:
description: PCIe/USB3 analog logic power supply. Must supply 1.05 V.
dvddio-pex-supply:
description: PCIe/USB3 digital logic power supply. Must supply 1.05 V.
avdd-usb-supply:
description: USB controller power supply. Must supply 3.3 V.
avdd-pll-utmip-supply:
description: UTMI PLL power supply. Must supply 1.8 V.
avdd-pll-erefe-supply:
description: PLLE reference PLL power supply. Must supply 1.05 V.
avdd-usb-ss-pll-supply:
description: PCIe/USB3 PLL power supply. Must supply 1.05 V.
hvdd-usb-ss-supply:
description: High-voltage PCIe/USB3 power supply. Must supply 3.3 V.
hvdd-usb-ss-pll-e-supply:
description: High-voltage PLLE power supply. Must supply 3.3 V.
allOf:
- $ref: usb-xhci.yaml
unevaluatedProperties: false
required:
- compatible
- reg
- reg-names
- interrupts
- clocks
- clock-names
- resets
- reset-names
- nvidia,xusb-padctl
- phys
- phy-names
- avddio-pex-supply
- dvddio-pex-supply
- avdd-usb-supply
- hvdd-usb-ss-supply
examples:
- |
#include <dt-bindings/clock/tegra124-car.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
usb@70090000 {
compatible = "nvidia,tegra124-xusb";
reg = <0x70090000 0x8000>,
<0x70098000 0x1000>,
<0x70099000 0x1000>;
reg-names = "hcd", "fpci", "ipfs";
interrupts = <GIC_SPI 39 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&tegra_car TEGRA124_CLK_XUSB_HOST>,
<&tegra_car TEGRA124_CLK_XUSB_HOST_SRC>,
<&tegra_car TEGRA124_CLK_XUSB_FALCON_SRC>,
<&tegra_car TEGRA124_CLK_XUSB_SS>,
<&tegra_car TEGRA124_CLK_XUSB_SS_DIV2>,
<&tegra_car TEGRA124_CLK_XUSB_SS_SRC>,
<&tegra_car TEGRA124_CLK_XUSB_HS_SRC>,
<&tegra_car TEGRA124_CLK_XUSB_FS_SRC>,
<&tegra_car TEGRA124_CLK_PLL_U_480M>,
<&tegra_car TEGRA124_CLK_CLK_M>,
<&tegra_car TEGRA124_CLK_PLL_E>;
clock-names = "xusb_host", "xusb_host_src", "xusb_falcon_src",
"xusb_ss", "xusb_ss_div2", "xusb_ss_src",
"xusb_hs_src", "xusb_fs_src", "pll_u_480m",
"clk_m", "pll_e";
resets = <&tegra_car 89>, <&tegra_car 156>, <&tegra_car 143>;
reset-names = "xusb_host", "xusb_ss", "xusb_src";
nvidia,xusb-padctl = <&padctl>;
phys = <&phy_usb2_1>, <&phy_usb2_2>, <&phy_pcie_0>;
phy-names = "usb2-1", "usb2-2", "usb3-0";
avddio-pex-supply = <&vdd_1v05_run>;
dvddio-pex-supply = <&vdd_1v05_run>;
avdd-usb-supply = <&vdd_3v3_lp0>;
avdd-pll-utmip-supply = <&vddio_1v8>;
avdd-pll-erefe-supply = <&avdd_1v05_run>;
avdd-usb-ss-pll-supply = <&vdd_1v05_run>;
hvdd-usb-ss-supply = <&vdd_3v3_lp0>;
hvdd-usb-ss-pll-e-supply = <&vdd_3v3_lp0>;
};
@@ -0,0 +1,171 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/usb/nvidia,tegra186-xusb.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: NVIDIA Tegra186 xHCI controller
maintainers:
- Thierry Reding <thierry.reding@gmail.com>
- Jon Hunter <jonathanh@nvidia.com>
description: The Tegra xHCI controller supports both USB2 and USB3 interfaces
exposed by the Tegra XUSB pad controller.
properties:
compatible:
const: nvidia,tegra186-xusb
reg:
items:
- description: base and length of the xHCI host registers
- description: base and length of the XUSB FPCI registers
reg-names:
items:
- const: hcd
- const: fpci
interrupts:
items:
- description: xHCI host interrupt
- description: mailbox interrupt
clocks:
items:
- description: XUSB host clock
- description: XUSB Falcon source clock
- description: XUSB SuperSpeed clock
- description: XUSB SuperSpeed source clock
- description: XUSB HighSpeed clock source
- description: XUSB FullSpeed clock source
- description: USB PLL
- description: reference clock
- description: I/O PLL
clock-names:
items:
- const: xusb_host
- const: xusb_falcon_src
- const: xusb_ss
- const: xusb_ss_src
- const: xusb_hs_src
- const: xusb_fs_src
- const: pll_u_480m
- const: clk_m
- const: pll_e
interconnects:
items:
- description: read client
- description: write client
interconnect-names:
items:
- const: dma-mem # read
- const: write
iommus:
maxItems: 1
nvidia,xusb-padctl:
$ref: /schemas/types.yaml#/definitions/phandle
description: phandle to the XUSB pad controller that is used to configure
the USB pads used by the XHCI controller
phys:
minItems: 1
maxItems: 7
phy-names:
minItems: 1
maxItems: 7
items:
enum:
- usb2-0
- usb2-1
- usb2-2
- hsic-0
- usb3-0
- usb3-1
- usb3-2
power-domains:
items:
- description: XUSBC power domain (for Host and USB 2.0)
- description: XUSBA power domain (for SuperSpeed)
power-domain-names:
items:
- const: xusb_host
- const: xusb_ss
dvddio-pex-supply:
description: PCIe/USB3 analog logic power supply. Must supply 1.05 V.
hvddio-pex-supply:
description: High-voltage PCIe/USB3 power supply. Must supply 1.8 V.
avdd-usb-supply:
description: USB controller power supply. Must supply 3.3 V.
avdd-pll-utmip-supply:
description: UTMI PLL power supply. Must supply 1.8 V.
avdd-pll-uerefe-supply:
description: PLLE reference PLL power supply. Must supply 1.05 V.
dvdd-usb-ss-pll-supply:
description: PCIe/USB3 PLL power supply. Must supply 1.05 V.
hvdd-usb-ss-pll-e-supply:
description: High-voltage PLLE power supply. Must supply 1.8 V.
allOf:
- $ref: usb-xhci.yaml
unevaluatedProperties: false
examples:
- |
#include <dt-bindings/clock/tegra186-clock.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/memory/tegra186-mc.h>
#include <dt-bindings/power/tegra186-powergate.h>
#include <dt-bindings/reset/tegra186-reset.h>
usb@3530000 {
compatible = "nvidia,tegra186-xusb";
reg = <0x03530000 0x8000>,
<0x03538000 0x1000>;
reg-names = "hcd", "fpci";
interrupts = <GIC_SPI 163 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 164 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&bpmp TEGRA186_CLK_XUSB_HOST>,
<&bpmp TEGRA186_CLK_XUSB_FALCON>,
<&bpmp TEGRA186_CLK_XUSB_SS>,
<&bpmp TEGRA186_CLK_XUSB_CORE_SS>,
<&bpmp TEGRA186_CLK_CLK_M>,
<&bpmp TEGRA186_CLK_XUSB_FS>,
<&bpmp TEGRA186_CLK_PLLU>,
<&bpmp TEGRA186_CLK_CLK_M>,
<&bpmp TEGRA186_CLK_PLLE>;
clock-names = "xusb_host", "xusb_falcon_src", "xusb_ss",
"xusb_ss_src", "xusb_hs_src", "xusb_fs_src",
"pll_u_480m", "clk_m", "pll_e";
power-domains = <&bpmp TEGRA186_POWER_DOMAIN_XUSBC>,
<&bpmp TEGRA186_POWER_DOMAIN_XUSBA>;
power-domain-names = "xusb_host", "xusb_ss";
interconnects = <&mc TEGRA186_MEMORY_CLIENT_XUSB_HOSTR &emc>,
<&mc TEGRA186_MEMORY_CLIENT_XUSB_HOSTW &emc>;
interconnect-names = "dma-mem", "write";
iommus = <&smmu TEGRA186_SID_XUSB_HOST>;
nvidia,xusb-padctl = <&padctl>;
#address-cells = <1>;
#size-cells = <0>;
phys = <&phy_usb2_0>, <&phy_usb2_1>, <&phy_usb3_0>;
phy-names = "usb2-0", "usb2-1", "usb3-0";
};
@@ -0,0 +1,175 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/usb/nvidia,tegra194-xusb.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: NVIDIA Tegra194 xHCI controller
maintainers:
- Thierry Reding <thierry.reding@gmail.com>
- Jon Hunter <jonathanh@nvidia.com>
description: The Tegra xHCI controller supports both USB2 and USB3 interfaces
exposed by the Tegra XUSB pad controller.
properties:
compatible:
const: nvidia,tegra194-xusb
reg:
items:
- description: base and length of the xHCI host registers
- description: base and length of the XUSB FPCI registers
reg-names:
items:
- const: hcd
- const: fpci
interrupts:
items:
- description: xHCI host interrupt
- description: mailbox interrupt
clocks:
items:
- description: XUSB host clock
- description: XUSB Falcon source clock
- description: XUSB SuperSpeed clock
- description: XUSB SuperSpeed source clock
- description: XUSB HighSpeed clock source
- description: XUSB FullSpeed clock source
- description: USB PLL
- description: reference clock
- description: I/O PLL
clock-names:
items:
- const: xusb_host
- const: xusb_falcon_src
- const: xusb_ss
- const: xusb_ss_src
- const: xusb_hs_src
- const: xusb_fs_src
- const: pll_u_480m
- const: clk_m
- const: pll_e
interconnects:
items:
- description: read client
- description: write client
interconnect-names:
items:
- const: dma-mem # read
- const: write
iommus:
maxItems: 1
nvidia,xusb-padctl:
$ref: /schemas/types.yaml#/definitions/phandle
description: phandle to the XUSB pad controller that is used to configure
the USB pads used by the XHCI controller
phys:
minItems: 1
maxItems: 8
phy-names:
minItems: 1
maxItems: 8
items:
enum:
- usb2-0
- usb2-1
- usb2-2
- usb2-3
- usb3-0
- usb3-1
- usb3-2
- usb3-3
power-domains:
items:
- description: XUSBC power domain (for Host and USB 2.0)
- description: XUSBA power domain (for SuperSpeed)
power-domain-names:
items:
- const: xusb_host
- const: xusb_ss
dvddio-pex-supply:
description: PCIe/USB3 analog logic power supply. Must supply 1.05 V.
hvddio-pex-supply:
description: High-voltage PCIe/USB3 power supply. Must supply 1.8 V.
avdd-usb-supply:
description: USB controller power supply. Must supply 3.3 V.
avdd-pll-utmip-supply:
description: UTMI PLL power supply. Must supply 1.8 V.
avdd-pll-uerefe-supply:
description: PLLE reference PLL power supply. Must supply 1.05 V.
dvdd-usb-ss-pll-supply:
description: PCIe/USB3 PLL power supply. Must supply 1.05 V.
hvdd-usb-ss-pll-e-supply:
description: High-voltage PLLE power supply. Must supply 1.8 V.
allOf:
- $ref: usb-xhci.yaml
unevaluatedProperties: false
examples:
- |
#include <dt-bindings/clock/tegra194-clock.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/memory/tegra194-mc.h>
#include <dt-bindings/power/tegra194-powergate.h>
#include <dt-bindings/reset/tegra194-reset.h>
usb@3610000 {
compatible = "nvidia,tegra194-xusb";
reg = <0x03610000 0x40000>,
<0x03600000 0x10000>;
reg-names = "hcd", "fpci";
interrupts = <GIC_SPI 163 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 164 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&bpmp TEGRA194_CLK_XUSB_CORE_HOST>,
<&bpmp TEGRA194_CLK_XUSB_FALCON>,
<&bpmp TEGRA194_CLK_XUSB_CORE_SS>,
<&bpmp TEGRA194_CLK_XUSB_SS>,
<&bpmp TEGRA194_CLK_CLK_M>,
<&bpmp TEGRA194_CLK_XUSB_FS>,
<&bpmp TEGRA194_CLK_UTMIPLL>,
<&bpmp TEGRA194_CLK_CLK_M>,
<&bpmp TEGRA194_CLK_PLLE>;
clock-names = "xusb_host", "xusb_falcon_src",
"xusb_ss", "xusb_ss_src", "xusb_hs_src",
"xusb_fs_src", "pll_u_480m", "clk_m",
"pll_e";
interconnects = <&mc TEGRA194_MEMORY_CLIENT_XUSB_HOSTR &emc>,
<&mc TEGRA194_MEMORY_CLIENT_XUSB_HOSTW &emc>;
interconnect-names = "dma-mem", "write";
iommus = <&smmu TEGRA194_SID_XUSB_HOST>;
power-domains = <&bpmp TEGRA194_POWER_DOMAIN_XUSBC>,
<&bpmp TEGRA194_POWER_DOMAIN_XUSBA>;
power-domain-names = "xusb_host", "xusb_ss";
nvidia,xusb-padctl = <&xusb_padctl>;
phys = <&phy_usb2_0>, <&phy_usb2_1>, <&phy_usb2_3>, <&phy_usb3_0>,
<&phy_usb3_2>, <&phy_usb3_3>;
phy-names = "usb2-0", "usb2-1", "usb2-3", "usb3-0", "usb3-2", "usb3-3";
};
@@ -0,0 +1,195 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/usb/nvidia,tegra210-xusb.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: NVIDIA Tegra210 xHCI controller
maintainers:
- Thierry Reding <thierry.reding@gmail.com>
- Jon Hunter <jonathanh@nvidia.com>
description: The Tegra xHCI controller supports both USB2 and USB3 interfaces
exposed by the Tegra XUSB pad controller.
properties:
compatible:
const: nvidia,tegra210-xusb
reg:
items:
- description: base and length of the xHCI host registers
- description: base and length of the XUSB FPCI registers
- description: base and length of the XUSB IPFS registers
reg-names:
items:
- const: hcd
- const: fpci
- const: ipfs
interrupts:
items:
- description: xHCI host interrupt
- description: mailbox interrupt
clocks:
items:
- description: XUSB host clock
- description: XUSB host source clock
- description: XUSB Falcon source clock
- description: XUSB SuperSpeed clock
- description: XUSB SuperSpeed clock divider
- description: XUSB SuperSpeed source clock
- description: XUSB HighSpeed clock source
- description: XUSB FullSpeed clock source
- description: USB PLL
- description: reference clock
- description: I/O PLL
clock-names:
items:
- const: xusb_host
- const: xusb_host_src
- const: xusb_falcon_src
- const: xusb_ss
- const: xusb_ss_div2
- const: xusb_ss_src
- const: xusb_hs_src
- const: xusb_fs_src
- const: pll_u_480m
- const: clk_m
- const: pll_e
resets:
items:
- description: reset for the XUSB host controller
- description: reset for the SuperSpeed logic
- description: shared reset for xusb_{ss,hs,fs,falcon,host}_src.
reset-names:
items:
- const: xusb_host
- const: xusb_ss
- const: xusb_src
nvidia,xusb-padctl:
$ref: /schemas/types.yaml#/definitions/phandle
description: phandle to the XUSB pad controller that is used to configure
the USB pads used by the XHCI controller
phys:
minItems: 1
maxItems: 9
phy-names:
minItems: 1
maxItems: 9
items:
enum:
- usb2-0
- usb2-1
- usb2-2
- usb2-3
- hsic-0
- usb3-0
- usb3-1
- usb3-2
- usb3-3
power-domains:
items:
- description: XUSBC power domain (for Host and USB 2.0)
- description: XUSBA power domain (for SuperSpeed)
power-domain-names:
items:
- const: xusb_host
- const: xusb_ss
dvddio-pex-supply:
description: PCIe/USB3 analog logic power supply. Must supply 1.05 V.
hvddio-pex-supply:
description: High-voltage PCIe/USB3 power supply. Must supply 1.8 V.
avdd-usb-supply:
description: USB controller power supply. Must supply 3.3 V.
avdd-pll-utmip-supply:
description: UTMI PLL power supply. Must supply 1.8 V.
avdd-pll-uerefe-supply:
description: PLLE reference PLL power supply. Must supply 1.05 V.
dvdd-usb-ss-pll-supply:
description: PCIe/USB3 PLL power supply. Must supply 1.05 V.
hvdd-usb-ss-pll-e-supply:
description: High-voltage PLLE power supply. Must supply 1.8 V.
allOf:
- $ref: usb-xhci.yaml
unevaluatedProperties: false
examples:
- |
#include <dt-bindings/clock/tegra210-car.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
usb@70090000 {
compatible = "nvidia,tegra210-xusb";
reg = <0x70090000 0x8000>,
<0x70098000 0x1000>,
<0x70099000 0x1000>;
reg-names = "hcd", "fpci", "ipfs";
interrupts = <GIC_SPI 39 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&tegra_car TEGRA210_CLK_XUSB_HOST>,
<&tegra_car TEGRA210_CLK_XUSB_HOST_SRC>,
<&tegra_car TEGRA210_CLK_XUSB_FALCON_SRC>,
<&tegra_car TEGRA210_CLK_XUSB_SS>,
<&tegra_car TEGRA210_CLK_XUSB_SS_DIV2>,
<&tegra_car TEGRA210_CLK_XUSB_SS_SRC>,
<&tegra_car TEGRA210_CLK_XUSB_HS_SRC>,
<&tegra_car TEGRA210_CLK_XUSB_FS_SRC>,
<&tegra_car TEGRA210_CLK_PLL_U_480M>,
<&tegra_car TEGRA210_CLK_CLK_M>,
<&tegra_car TEGRA210_CLK_PLL_E>;
clock-names = "xusb_host", "xusb_host_src",
"xusb_falcon_src", "xusb_ss",
"xusb_ss_div2", "xusb_ss_src",
"xusb_hs_src", "xusb_fs_src",
"pll_u_480m", "clk_m", "pll_e";
resets = <&tegra_car 89>, <&tegra_car 156>,
<&tegra_car 143>;
reset-names = "xusb_host", "xusb_ss", "xusb_src";
power-domains = <&pd_xusbhost>, <&pd_xusbss>;
power-domain-names = "xusb_host", "xusb_ss";
nvidia,xusb-padctl = <&padctl>;
phys = <&phy_usb2_0>, <&phy_usb2_1>, <&phy_usb2_2>, <&phy_usb2_3>,
<&phy_pcie_6>, <&phy_pcie_5>;
phy-names = "usb2-0", "usb2-1", "usb2-2", "usb2-3", "usb3-0",
"usb3-1";
dvddio-pex-supply = <&vdd_pex_1v05>;
hvddio-pex-supply = <&vdd_1v8>;
avdd-usb-supply = <&vdd_3v3_sys>;
avdd-pll-utmip-supply = <&vdd_1v8>;
avdd-pll-uerefe-supply = <&vdd_pex_1v05>;
dvdd-usb-ss-pll-supply = <&vdd_pex_1v05>;
hvdd-usb-ss-pll-e-supply = <&vdd_1v8>;
#address-cells = <1>;
#size-cells = <0>;
ethernet@1 {
compatible = "usb955,9ff";
reg = <1>;
};
};
@@ -0,0 +1,186 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/usb/nvidia,tegra234-xusb.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: NVIDIA Tegra234 xHCI controller
maintainers:
- Thierry Reding <thierry.reding@gmail.com>
- Jon Hunter <jonathanh@nvidia.com>
description: |
The Tegra xHCI controller supports both USB2 and USB3 interfaces exposed by
the Tegra XUSB pad controller. The xHCI controller controls up to eight
ports; there are four USB 2.0 ports and four USB 3.2 Gen1 x1 ports.
properties:
compatible:
const: nvidia,tegra234-xusb
reg:
items:
- description: xHCI host registers
- description: XUSB FPCI registers
- description: XUSB bar2 registers
reg-names:
items:
- const: hcd
- const: fpci
- const: bar2
interrupts:
minItems: 2
items:
- description: xHCI host interrupt
- description: mailbox interrupt
- description: USB wake event 0
- description: USB wake event 1
- description: USB wake event 2
- description: USB wake event 3
- description: USB wake event 4
- description: USB wake event 5
- description: USB wake event 6
description: |
The first two interrupts are required for the USB host controller. The
remaining USB wake event interrupts are optional. Each USB wake event is
independent; it is not necessary to use all of these events on a
platform. The USB host controller can function even if no wake-up events
are defined. The USB wake event interrupts are handled by the Tegra PMC;
hence, the interrupt controller for these is the PMC and the interrupt
IDs correspond to the PMC wake event IDs. A complete list of wake event
IDs is provided below, and this information is also present in the Tegra
TRM document.
PMC wake-up 76 for USB3 port 0 wakeup
PMC wake-up 77 for USB3 port 1 wakeup
PMC wake-up 78 for USB3 port 2 and port 3 wakeup
PMC wake-up 79 for USB2 port 0 wakeup
PMC wake-up 80 for USB2 port 1 wakeup
PMC wake-up 81 for USB2 port 2 wakeup
PMC wake-up 82 for USB2 port 3 wakeup
clocks:
items:
- description: XUSB host clock
- description: XUSB Falcon source clock
- description: XUSB SuperSpeed clock
- description: XUSB SuperSpeed source clock
- description: XUSB HighSpeed clock source
- description: XUSB FullSpeed clock source
- description: USB PLL
- description: reference clock
- description: I/O PLL
clock-names:
items:
- const: xusb_host
- const: xusb_falcon_src
- const: xusb_ss
- const: xusb_ss_src
- const: xusb_hs_src
- const: xusb_fs_src
- const: pll_u_480m
- const: clk_m
- const: pll_e
interconnects:
items:
- description: read client
- description: write client
interconnect-names:
items:
- const: dma-mem # read
- const: write
iommus:
maxItems: 1
nvidia,xusb-padctl:
$ref: /schemas/types.yaml#/definitions/phandle
description: phandle to the XUSB pad controller that is used to configure
the USB pads used by the XHCI controller
phys:
minItems: 1
maxItems: 8
phy-names:
minItems: 1
maxItems: 8
items:
enum:
- usb2-0
- usb2-1
- usb2-2
- usb2-3
- usb3-0
- usb3-1
- usb3-2
- usb3-3
power-domains:
items:
- description: XUSBC power domain (for Host and USB 2.0)
- description: XUSBA power domain (for SuperSpeed)
power-domain-names:
items:
- const: xusb_host
- const: xusb_ss
dma-coherent: true
allOf:
- $ref: usb-xhci.yaml
unevaluatedProperties: false
examples:
- |
#include <dt-bindings/clock/tegra234-clock.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/memory/tegra234-mc.h>
#include <dt-bindings/power/tegra234-powergate.h>
usb@3610000 {
compatible = "nvidia,tegra234-xusb";
reg = <0x03610000 0x40000>,
<0x03600000 0x10000>,
<0x03650000 0x10000>;
reg-names = "hcd", "fpci", "bar2";
interrupts-extended = <&gic GIC_SPI 163 IRQ_TYPE_LEVEL_HIGH>,
<&gic GIC_SPI 164 IRQ_TYPE_LEVEL_HIGH>,
<&pmc 76 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&bpmp TEGRA234_CLK_XUSB_CORE_HOST>,
<&bpmp TEGRA234_CLK_XUSB_FALCON>,
<&bpmp TEGRA234_CLK_XUSB_CORE_SS>,
<&bpmp TEGRA234_CLK_XUSB_SS>,
<&bpmp TEGRA234_CLK_CLK_M>,
<&bpmp TEGRA234_CLK_XUSB_FS>,
<&bpmp TEGRA234_CLK_UTMIP_PLL>,
<&bpmp TEGRA234_CLK_CLK_M>,
<&bpmp TEGRA234_CLK_PLLE>;
clock-names = "xusb_host", "xusb_falcon_src",
"xusb_ss", "xusb_ss_src", "xusb_hs_src",
"xusb_fs_src", "pll_u_480m", "clk_m",
"pll_e";
interconnects = <&mc TEGRA234_MEMORY_CLIENT_XUSB_HOSTR &emc>,
<&mc TEGRA234_MEMORY_CLIENT_XUSB_HOSTW &emc>;
interconnect-names = "dma-mem", "write";
iommus = <&smmu_niso1 TEGRA234_SID_XUSB_HOST>;
power-domains = <&bpmp TEGRA234_POWER_DOMAIN_XUSBC>,
<&bpmp TEGRA234_POWER_DOMAIN_XUSBA>;
power-domain-names = "xusb_host", "xusb_ss";
nvidia,xusb-padctl = <&xusb_padctl>;
phys = <&pad_lanes_usb2_0>;
phy-names = "usb2-0";
};
@@ -0,0 +1,123 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
# Copyright 2026 NXP
%YAML 1.2
---
$id: http://devicetree.org/schemas/usb/nxp,imx-dwc3.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: NXP i.MX Soc USB Controller
maintainers:
- Xu Yang <xu.yang_2@nxp.com>
properties:
compatible:
oneOf:
- items:
- enum:
- nxp,imx94-dwc3
- nxp,imx95-dwc3
- const: nxp,imx8mp-dwc3
- const: nxp,imx8mp-dwc3
reg:
items:
- description: DWC3 core registers
- description: HSIO Block Control registers
- description: Wrapper registers of dwc3 core
reg-names:
items:
- const: core
- const: blkctl
- const: glue
interrupts:
items:
- description: DWC3 controller interrupt
- description: Wakeup interrupt from glue logic
interrupt-names:
items:
- const: dwc_usb3
- const: wakeup
iommus:
maxItems: 1
clocks:
items:
- description: System hsio root clock
- description: SoC Bus Clock for AHB/AXI/Native
- description: Reference clock for generating ITP when UTMI/ULPI PHY is suspended
- description: Suspend clock used for usb wakeup logic
clock-names:
items:
- const: hsio
- const: bus_early
- const: ref
- const: suspend
fsl,permanently-attached:
type: boolean
description:
Indicates if the device attached to a downstream port is
permanently attached
fsl,disable-port-power-control:
type: boolean
description:
Indicates whether the host controller implementation includes port
power control. Defines Bit 3 in capability register (HCCPARAMS)
fsl,over-current-active-low:
type: boolean
description:
Over current signal polarity is active low
fsl,power-active-low:
type: boolean
description:
Power pad (PWR) polarity is active low
power-domains:
maxItems: 1
required:
- compatible
- reg
- clocks
- clock-names
- interrupts
- power-domains
allOf:
- $ref: snps,dwc3-common.yaml#
unevaluatedProperties: false
examples:
- |
#include <dt-bindings/interrupt-controller/arm-gic.h>
usb@4c100000 {
compatible = "nxp,imx94-dwc3", "nxp,imx8mp-dwc3";
reg = <0x4c100000 0x10000>,
<0x4c010010 0x04>,
<0x4c1f0000 0x20>;
reg-names = "core", "blkctl", "glue";
clocks = <&scmi_clk 74>, //IMX94_CLK_HSIO
<&scmi_clk 74>, //IMX94_CLK_HSIO
<&scmi_clk 2>, //IMX94_CLK_24M
<&scmi_clk 1>; //IMX94_CLK_32K
clock-names = "hsio", "bus_early", "ref", "suspend";
interrupts = <GIC_SPI 180 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 386 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "dwc_usb3", "wakeup";
power-domains = <&scmi_devpd 13>; //IMX94_PD_HSIO_TOP
phys = <&usb3_phy>, <&usb3_phy>;
phy-names = "usb2-phy", "usb3-phy";
snps,gfladj-refclk-lpm-sel-quirk;
snps,parkmode-disable-ss-quirk;
};
@@ -0,0 +1,67 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/usb/nxp,isp1760.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: NXP ISP1760 family controller
maintainers:
- Sebastian Siewior <bigeasy@linutronix.de>
- Laurent Pinchart <laurent.pinchart@ideasonboard.com>
description: |
NXP ISP1760 family, which includes ISP1760/1761/1763 devicetree controller
bindings
properties:
compatible:
enum:
- nxp,usb-isp1760
- nxp,usb-isp1761
- nxp,usb-isp1763
reg:
maxItems: 1
interrupts:
minItems: 1
items:
- description: Host controller interrupt
- description: Device controller interrupt in isp1761
interrupt-names:
minItems: 1
items:
- const: host
- const: peripheral
bus-width:
description:
Number of data lines.
enum: [8, 16, 32]
default: 32
dr_mode:
enum:
- host
- peripheral
required:
- compatible
- reg
- interrupts
additionalProperties: false
examples:
- |
#include <dt-bindings/interrupt-controller/arm-gic.h>
usb@40200000 {
compatible = "nxp,usb-isp1763";
reg = <0x40200000 0x100000>;
interrupts = <GIC_SPI 114 IRQ_TYPE_LEVEL_HIGH>;
bus-width = <16>;
dr_mode = "host";
};
...
@@ -0,0 +1,50 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/usb/nxp,lpc3220-udc.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: NXP LPC32xx SoC USB Device Controller (UDC)
maintainers:
- Frank Li <Frank.Li@nxp.com>
properties:
compatible:
const: nxp,lpc3220-udc
reg:
maxItems: 1
interrupts:
items:
- description: USB Device Low Priority Interrupt
- description: USB Device High Priority Interrupt
- description: USB Device DMA Interrupt
- description: External USB Transceiver Interrupt (OTG ATX)
clocks:
maxItems: 1
transceiver:
description:
phandle of the associated ISP1301 device - this is necessary for
the UDC controller for connecting to the USB physical layer
required:
- compatible
- reg
- interrupts
- transceiver
additionalProperties: false
examples:
- |
usbd@31020000 {
compatible = "nxp,lpc3220-udc";
reg = <0x31020000 0x300>;
interrupt-parent = <&mic>;
interrupts = <0x3d 0>, <0x3e 0>, <0x3c 0>, <0x3a 0>;
transceiver = <&isp1301>;
};
@@ -0,0 +1,93 @@
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/usb/nxp,ptn36502.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: NXP PTN36502 Type-C USB 3.1 Gen 1 and DisplayPort v1.2 combo redriver
maintainers:
- Luca Weiss <luca.weiss@fairphone.com>
properties:
compatible:
enum:
- nxp,ptn36502
reg:
maxItems: 1
vdd18-supply:
description: Power supply for VDD18 pin
orientation-switch: true
retimer-switch: true
ports:
$ref: /schemas/graph.yaml#/properties/ports
properties:
port@0:
$ref: /schemas/graph.yaml#/properties/port
description: Super Speed (SS) Output endpoint to the Type-C connector
port@1:
$ref: /schemas/graph.yaml#/properties/port
description: Super Speed (SS) Input endpoint from the Super-Speed PHY
port@2:
$ref: /schemas/graph.yaml#/properties/port
description:
Sideband Use (SBU) AUX lines endpoint to the Type-C connector for the purpose of
handling altmode muxing and orientation switching.
required:
- compatible
- reg
allOf:
- $ref: usb-switch.yaml#
- $ref: usb-switch-ports.yaml#
additionalProperties: false
examples:
- |
i2c {
#address-cells = <1>;
#size-cells = <0>;
typec-mux@1a {
compatible = "nxp,ptn36502";
reg = <0x1a>;
vdd18-supply = <&usb_redrive_1v8>;
retimer-switch;
orientation-switch;
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
usb_con_ss: endpoint {
remote-endpoint = <&typec_con_ss>;
};
};
port@1 {
reg = <1>;
phy_con_ss: endpoint {
remote-endpoint = <&usb_phy_ss>;
};
};
port@2 {
reg = <2>;
usb_con_sbu: endpoint {
remote-endpoint = <&typec_dp_aux>;
};
};
};
};
};
...
@@ -0,0 +1,78 @@
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/usb/nxp,ptn5110.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: NXP PTN5110 Type-C Port Controller
maintainers:
- Li Jun <jun.li@nxp.com>
properties:
compatible:
items:
- const: nxp,ptn5110
- const: tcpci
reg:
maxItems: 1
interrupts:
maxItems: 1
connector:
type: object
$ref: /schemas/connector/usb-connector.yaml#
unevaluatedProperties: false
orientation-gpios:
maxItems: 1
description: Optional orientation select control
required:
- compatible
- reg
- interrupts
- connector
additionalProperties: false
examples:
- |
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/usb/pd.h>
i2c {
#address-cells = <1>;
#size-cells = <0>;
tcpci@50 {
compatible = "nxp,ptn5110", "tcpci";
reg = <0x50>;
interrupt-parent = <&gpio3>;
interrupts = <3 IRQ_TYPE_LEVEL_LOW>;
usb_con: connector {
compatible = "usb-c-connector";
label = "USB-C";
data-role = "dual";
power-role = "dual";
try-power-role = "sink";
source-pdos = <PDO_FIXED(5000, 2000, PDO_FIXED_USB_COMM)>;
sink-pdos = <PDO_FIXED(5000, 2000, PDO_FIXED_USB_COMM) PDO_VAR(5000, 12000, 2000)>;
op-sink-microwatt = <10000000>;
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
typec1_dr_sw: endpoint {
remote-endpoint = <&usb1_drd_sw>;
};
};
};
};
};
};
@@ -0,0 +1,62 @@
OCTEON/OCTEON+ USB BLOCK
1) Main node
Required properties:
- compatible: must be "cavium,octeon-5750-usbn"
- reg: specifies the physical base address of the USBN block and
the length of the memory mapped region.
- #address-cells: specifies the number of cells needed to encode an
address. The value must be 2.
- #size-cells: specifies the number of cells used to represent the size
of an address. The value must be 2.
- ranges: specifies the translation between child address space and parent
address space.
- clock-frequency: speed of the USB reference clock. Allowed values are
12000000, 24000000 or 48000000.
- cavium,refclk-type: type of the USB reference clock. Allowed values are
"crystal" or "external".
- refclk-frequency: deprecated, use "clock-frequency".
- refclk-type: deprecated, use "cavium,refclk-type".
2) Child node
The main node must have one child node which describes the built-in
USB controller.
Required properties:
- compatible: must be "cavium,octeon-5750-usbc"
- reg: specifies the physical base address of the USBC block and
the length of the memory mapped region.
- interrupts: specifies the interrupt number for the USB controller.
3) Example:
usbn: usbn@1180068000000 {
compatible = "cavium,octeon-5750-usbn";
reg = <0x11800 0x68000000 0x0 0x1000>;
ranges; /* Direct mapping */
#address-cells = <2>;
#size-cells = <2>;
clock-frequency = <12000000>;
cavium,refclk-type = "crystal";
usbc@16f0010000000 {
compatible = "cavium,octeon-5750-usbc";
reg = <0x16f00 0x10000000 0x0 0x80000>;
interrupts = <0 56>;
};
};
@@ -0,0 +1,23 @@
DA8XX USB OHCI controller
Required properties:
- compatible: Should be "ti,da830-ohci"
- reg: Should contain one register range i.e. start and length
- interrupts: Description of the interrupt line
- phys: Phandle for the PHY device
- phy-names: Should be "usb-phy"
Optional properties:
- vbus-supply: phandle of regulator that controls vbus power / over-current
Example:
ohci: usb@225000 {
compatible = "ti,da830-ohci";
reg = <0x225000 0x1000>;
interrupts = <59>;
phys = <&usb_phy 1>;
phy-names = "usb-phy";
vbus-supply = <&reg_usb_ohci>;
};
@@ -0,0 +1,139 @@
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/usb/onnn,nb7vpq904m.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: ON Semiconductor Type-C DisplayPort ALT Mode Linear Redriver
maintainers:
- Neil Armstrong <neil.armstrong@linaro.org>
properties:
compatible:
enum:
- onnn,nb7vpq904m
reg:
maxItems: 1
vcc-supply:
description: power supply (1.8V)
enable-gpios: true
orientation-switch: true
retimer-switch: true
ports:
$ref: /schemas/graph.yaml#/properties/ports
properties:
port@0:
$ref: /schemas/graph.yaml#/properties/port
description: Super Speed (SS) Output endpoint to the Type-C connector
port@1:
$ref: /schemas/graph.yaml#/$defs/port-base
description: Super Speed (SS) Input endpoint from the Super-Speed PHY
unevaluatedProperties: false
properties:
endpoint:
$ref: /schemas/graph.yaml#/$defs/endpoint-base
unevaluatedProperties: false
properties:
data-lanes:
$ref: /schemas/types.yaml#/definitions/uint32-array
description: |
An array of physical data lane indexes. Position determines how
lanes are connected to the redriver, It is assumed the same order
is kept on the other side of the redriver.
Lane number represents the following
- 0 is RX2 lane
- 1 is TX2 lane
- 2 is TX1 lane
- 3 is RX1 lane
The position determines the physical port of the redriver, in the
order A, B, C & D.
oneOf:
- items:
- const: 0
- const: 1
- const: 2
- const: 3
description: |
This is the lanes default layout
- Port A to RX2 lane
- Port B to TX2 lane
- Port C to TX1 lane
- Port D to RX1 lane
- items:
- const: 3
- const: 2
- const: 1
- const: 0
description: |
This is the USBRX2/USBTX2 and USBRX1/USBTX1 swapped lanes layout
- Port A to RX1 lane
- Port B to TX1 lane
- Port C to TX2 lane
- Port D to RX2 lane
port@2:
$ref: /schemas/graph.yaml#/properties/port
description:
Sideband Use (SBU) AUX lines endpoint to the Type-C connector for the purpose of
handling altmode muxing and orientation switching.
required:
- compatible
- reg
allOf:
- $ref: usb-switch.yaml#
- $ref: usb-switch-ports.yaml#
additionalProperties: false
examples:
- |
i2c {
#address-cells = <1>;
#size-cells = <0>;
typec-mux@32 {
compatible = "onnn,nb7vpq904m";
reg = <0x32>;
vcc-supply = <&vreg_l15b_1p8>;
retimer-switch;
orientation-switch;
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
usb_con_ss: endpoint {
remote-endpoint = <&typec_con_ss>;
};
};
port@1 {
reg = <1>;
phy_con_ss: endpoint {
remote-endpoint = <&usb_phy_ss>;
data-lanes = <3 2 1 0>;
};
};
port@2 {
reg = <2>;
usb_con_sbu: endpoint {
remote-endpoint = <&typec_dp_aux>;
};
};
};
};
};
...
@@ -0,0 +1,108 @@
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/usb/parade,ps5511.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Parade PS5511 4+1 Port USB 3.2 Gen 1 Hub Controller
maintainers:
- Pin-yen Lin <treapking@chromium.org>
properties:
compatible:
enum:
- usb1da0,5511
- usb1da0,55a1
reset-gpios:
items:
- description: GPIO specifier for RESETB pin.
vddd11-supply:
description:
1V1 power supply to the hub
vdd33-supply:
description:
3V3 power supply to the hub
peer-hub: true
ports:
$ref: /schemas/graph.yaml#/properties/ports
patternProperties:
'^port@':
$ref: /schemas/graph.yaml#/properties/port
properties:
reg:
minimum: 1
maximum: 5
additionalProperties:
properties:
reg:
minimum: 1
maximum: 5
required:
- peer-hub
allOf:
- $ref: usb-hub.yaml#
- if:
not:
properties:
compatible:
enum:
- usb1da0,55a1
then:
properties:
ports:
properties:
port@5: false
patternProperties:
'^.*@5$': false
examples:
- |
usb {
#address-cells = <1>;
#size-cells = <0>;
/* 2.0 hub on port 1 */
hub_2_0: hub@1 {
compatible = "usb1da0,55a1";
reg = <1>;
peer-hub = <&hub_3_0>;
#address-cells = <1>;
#size-cells = <0>;
/* USB 2.0 device on port 5 */
device@5 {
reg = <5>;
compatible = "usb123,4567";
};
};
/* 3.0 hub on port 2 */
hub_3_0: hub@2 {
compatible = "usb1da0,5511";
reg = <2>;
peer-hub = <&hub_2_0>;
ports {
#address-cells = <1>;
#size-cells = <0>;
/* Type-A connector on port 3 */
port@3 {
reg = <3>;
endpoint {
remote-endpoint = <&usb_a0_ss>;
};
};
};
};
};
@@ -0,0 +1,144 @@
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/usb/parade,ps8830.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Parade PS883x USB and DisplayPort Retimer
maintainers:
- Abel Vesa <abel.vesa@linaro.org>
properties:
compatible:
oneOf:
- items:
- const: parade,ps8833
- const: parade,ps8830
- const: parade,ps8830
reg:
maxItems: 1
clocks:
items:
- description: XO Clock
reset-gpios:
maxItems: 1
vdd-supply:
description: power supply (1.07V)
vdd33-supply:
description: power supply (3.3V)
vdd33-cap-supply:
description: power supply (3.3V)
vddar-supply:
description: power supply (1.07V)
vddat-supply:
description: power supply (1.07V)
vddio-supply:
description: power supply (1.2V or 1.8V)
orientation-switch: true
retimer-switch: true
ports:
$ref: /schemas/graph.yaml#/properties/ports
properties:
port@0:
$ref: /schemas/graph.yaml#/properties/port
description: Super Speed (SS) Output endpoint to the Type-C connector
port@1:
$ref: /schemas/graph.yaml#/$defs/port-base
description: Super Speed (SS) Input endpoint from the Super-Speed PHY
unevaluatedProperties: false
port@2:
$ref: /schemas/graph.yaml#/properties/port
description:
Sideband Use (SBU) AUX lines endpoint to the Type-C connector for the purpose of
handling altmode muxing and orientation switching.
required:
- compatible
- reg
- clocks
- reset-gpios
- vdd-supply
- vdd33-supply
- vdd33-cap-supply
- vddat-supply
- vddio-supply
- orientation-switch
- retimer-switch
allOf:
- $ref: usb-switch.yaml#
- $ref: usb-switch-ports.yaml#
additionalProperties: false
examples:
- |
#include <dt-bindings/gpio/gpio.h>
i2c {
#address-cells = <1>;
#size-cells = <0>;
typec-mux@8 {
compatible = "parade,ps8830";
reg = <0x8>;
clocks = <&clk_rtmr_xo>;
vdd-supply = <&vreg_rtmr_1p15>;
vdd33-supply = <&vreg_rtmr_3p3>;
vdd33-cap-supply = <&vreg_rtmr_3p3>;
vddar-supply = <&vreg_rtmr_1p15>;
vddat-supply = <&vreg_rtmr_1p15>;
vddio-supply = <&vreg_rtmr_1p8>;
reset-gpios = <&tlmm 10 GPIO_ACTIVE_LOW>;
retimer-switch;
orientation-switch;
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
endpoint {
remote-endpoint = <&typec_con_ss>;
};
};
port@1 {
reg = <1>;
endpoint {
remote-endpoint = <&usb_phy_ss>;
};
};
port@2 {
reg = <2>;
endpoint {
remote-endpoint = <&typec_dp_aux>;
};
};
};
};
};
...
@@ -0,0 +1,53 @@
PXA USB controllers
OHCI
Required properties:
- compatible: Should be "marvell,pxa-ohci" for USB controllers
used in host mode.
Optional properties:
- "marvell,enable-port1", "marvell,enable-port2", "marvell,enable-port3"
If present, enables the appropriate USB port of the controller.
- "marvell,port-mode" selects the mode of the ports:
1 = PMM_NPS_MODE
2 = PMM_GLOBAL_MODE
3 = PMM_PERPORT_MODE
- "marvell,power-sense-low" - power sense pin is low-active.
- "marvell,power-control-low" - power control pin is low-active.
- "marvell,no-oc-protection" - disable over-current protection.
- "marvell,oc-mode-perport" - enable per-port over-current protection.
- "marvell,power_on_delay" Power On to Power Good time - in ms.
Example:
usb0: ohci@4c000000 {
compatible = "marvell,pxa-ohci";
reg = <0x4c000000 0x100000>;
interrupts = <18>;
marvell,enable-port1;
marvell,port-mode = <2>; /* PMM_GLOBAL_MODE */
};
UDC
Required properties:
- compatible: Should be "marvell,pxa270-udc" for USB controllers
used in device mode.
- reg: usb device MMIO address space
- interrupts: single interrupt generated by the UDC IP
- clocks: input clock of the UDC IP (see clock-bindings.txt)
Optional properties:
- gpios:
- gpio activated to control the USB D+ pullup (see gpio.txt)
Example:
pxa27x_udc: udc@40600000 {
compatible = "marvell,pxa270-udc";
reg = <0x40600000 0x10000>;
interrupts = <11>;
clocks = <&pxa2xx_clks 11>;
gpios = <&gpio 22 GPIO_ACTIVE_LOW>;
};
@@ -0,0 +1,641 @@
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/usb/qcom,dwc3.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Legacy Qualcomm SuperSpeed DWC3 USB SoC controller
maintainers:
- Wesley Cheng <quic_wcheng@quicinc.com>
# Use the combined qcom,snps-dwc3 instead
deprecated: true
select:
properties:
compatible:
contains:
const: qcom,dwc3
required:
- compatible
properties:
compatible:
items:
- enum:
- qcom,ipq4019-dwc3
- qcom,ipq5018-dwc3
- qcom,ipq5332-dwc3
- qcom,ipq5424-dwc3
- qcom,ipq6018-dwc3
- qcom,ipq8064-dwc3
- qcom,ipq8074-dwc3
- qcom,ipq9574-dwc3
- qcom,msm8953-dwc3
- qcom,msm8994-dwc3
- qcom,msm8996-dwc3
- qcom,msm8998-dwc3
- qcom,qcm2290-dwc3
- qcom,qcs404-dwc3
- qcom,qcs615-dwc3
- qcom,qcs8300-dwc3
- qcom,qdu1000-dwc3
- qcom,sa8775p-dwc3
- qcom,sar2130p-dwc3
- qcom,sc7180-dwc3
- qcom,sc7280-dwc3
- qcom,sc8180x-dwc3
- qcom,sc8180x-dwc3-mp
- qcom,sc8280xp-dwc3
- qcom,sc8280xp-dwc3-mp
- qcom,sdm660-dwc3
- qcom,sdm670-dwc3
- qcom,sdm845-dwc3
- qcom,sdx55-dwc3
- qcom,sdx65-dwc3
- qcom,sdx75-dwc3
- qcom,sm4250-dwc3
- qcom,sm6115-dwc3
- qcom,sm6125-dwc3
- qcom,sm6350-dwc3
- qcom,sm6375-dwc3
- qcom,sm8150-dwc3
- qcom,sm8250-dwc3
- qcom,sm8350-dwc3
- qcom,sm8450-dwc3
- qcom,sm8550-dwc3
- qcom,sm8650-dwc3
- qcom,sm8750-dwc3
- qcom,x1e80100-dwc3
- qcom,x1e80100-dwc3-mp
- const: qcom,dwc3
reg:
description: Offset and length of register set for QSCRATCH wrapper
maxItems: 1
"#address-cells":
enum: [ 1, 2 ]
"#size-cells":
enum: [ 1, 2 ]
ranges: true
power-domains:
description: specifies a phandle to PM domain provider node
maxItems: 1
required-opps:
maxItems: 1
clocks:
description: |
Several clocks are used, depending on the variant. Typical ones are::
- cfg_noc:: System Config NOC clock.
- core:: Master/Core clock, has to be >= 125 MHz for SS operation and >=
60MHz for HS operation.
- iface:: System bus AXI clock.
- sleep:: Sleep clock, used for wakeup when USB3 core goes into low
power mode (U3).
- mock_utmi:: Mock utmi clock needed for ITP/SOF generation in host
mode. Its frequency should be 19.2MHz.
minItems: 1
maxItems: 9
clock-names:
minItems: 1
maxItems: 9
resets:
maxItems: 1
interconnects:
maxItems: 2
interconnect-names:
items:
- const: usb-ddr
- const: apps-usb
interrupts:
description: |
Different types of interrupts are used based on HS PHY used on target:
- pwr_event: Used for wakeup based on other power events.
- hs_phy_irq: Apart from DP/DM/QUSB2 PHY interrupts, there is
hs_phy_irq which is not triggered by default and its
functionality is mutually exclusive to that of
{dp/dm}_hs_phy_irq and qusb2_phy_irq.
- qusb2_phy: SoCs with QUSB2 PHY do not have separate DP/DM IRQs and
expose only a single IRQ whose behavior can be modified
by the QUSB2PHY_INTR_CTRL register. The required DPSE/
DMSE configuration is done in QUSB2PHY_INTR_CTRL register
of PHY address space.
- {dp/dm}_hs_phy_irq: These IRQ's directly reflect changes on the DP/
DM pads of the SoC. These are used for wakeup
only on SoCs with non-QUSB2 targets with
exception of SDM670/SDM845/SM6350.
- ss_phy_irq: Used for remote wakeup in Super Speed mode of operation.
minItems: 2
maxItems: 18
interrupt-names:
minItems: 2
maxItems: 18
qcom,select-utmi-as-pipe-clk:
description:
If present, disable USB3 pipe_clk requirement.
Used when dwc3 operates without SSPHY and only
HS/FS/LS modes are supported.
type: boolean
wakeup-source: true
# Required child node:
patternProperties:
"^usb@[0-9a-f]+$":
$ref: snps,dwc3.yaml#
unevaluatedProperties: false
properties:
wakeup-source: false
required:
- compatible
- reg
- "#address-cells"
- "#size-cells"
- ranges
- clocks
- clock-names
- interrupts
- interrupt-names
allOf:
- if:
properties:
compatible:
contains:
enum:
- qcom,ipq4019-dwc3
- qcom,ipq5332-dwc3
then:
properties:
clocks:
maxItems: 3
clock-names:
items:
- const: core
- const: sleep
- const: mock_utmi
- if:
properties:
compatible:
contains:
enum:
- qcom,ipq8064-dwc3
then:
properties:
clocks:
items:
- description: Master/Core clock, has to be >= 125 MHz
for SS operation and >= 60MHz for HS operation.
clock-names:
items:
- const: core
- if:
properties:
compatible:
contains:
enum:
- qcom,ipq9574-dwc3
- qcom,msm8953-dwc3
- qcom,msm8996-dwc3
- qcom,msm8998-dwc3
- qcom,qcs8300-dwc3
- qcom,sa8775p-dwc3
- qcom,sc7180-dwc3
- qcom,sc7280-dwc3
- qcom,sdm670-dwc3
- qcom,sdm845-dwc3
- qcom,sdx55-dwc3
- qcom,sdx65-dwc3
- qcom,sdx75-dwc3
- qcom,sm6350-dwc3
then:
properties:
clocks:
maxItems: 5
clock-names:
items:
- const: cfg_noc
- const: core
- const: iface
- const: sleep
- const: mock_utmi
- if:
properties:
compatible:
contains:
enum:
- qcom,ipq6018-dwc3
then:
properties:
clocks:
minItems: 3
maxItems: 4
clock-names:
oneOf:
- items:
- const: core
- const: sleep
- const: mock_utmi
- items:
- const: cfg_noc
- const: core
- const: sleep
- const: mock_utmi
- if:
properties:
compatible:
contains:
enum:
- qcom,ipq8074-dwc3
- qcom,qdu1000-dwc3
then:
properties:
clocks:
maxItems: 4
clock-names:
items:
- const: cfg_noc
- const: core
- const: sleep
- const: mock_utmi
- if:
properties:
compatible:
contains:
enum:
- qcom,ipq5018-dwc3
- qcom,msm8994-dwc3
- qcom,qcs404-dwc3
then:
properties:
clocks:
maxItems: 4
clock-names:
items:
- const: core
- const: iface
- const: sleep
- const: mock_utmi
- if:
properties:
compatible:
contains:
enum:
- qcom,sc8280xp-dwc3
- qcom,sc8280xp-dwc3-mp
- qcom,x1e80100-dwc3
- qcom,x1e80100-dwc3-mp
then:
properties:
clocks:
maxItems: 9
clock-names:
items:
- const: cfg_noc
- const: core
- const: iface
- const: sleep
- const: mock_utmi
- const: noc_aggr
- const: noc_aggr_north
- const: noc_aggr_south
- const: noc_sys
- if:
properties:
compatible:
contains:
enum:
- qcom,sdm660-dwc3
then:
properties:
clocks:
minItems: 4
maxItems: 5
clock-names:
oneOf:
- items:
- const: cfg_noc
- const: core
- const: iface
- const: sleep
- const: mock_utmi
- items:
- const: cfg_noc
- const: core
- const: sleep
- const: mock_utmi
- if:
properties:
compatible:
contains:
enum:
- qcom,qcm2290-dwc3
- qcom,qcs615-dwc3
- qcom,sar2130p-dwc3
- qcom,sc8180x-dwc3
- qcom,sc8180x-dwc3-mp
- qcom,sm6115-dwc3
- qcom,sm6125-dwc3
- qcom,sm8150-dwc3
- qcom,sm8250-dwc3
- qcom,sm8450-dwc3
- qcom,sm8550-dwc3
- qcom,sm8650-dwc3
- qcom,sm8750-dwc3
then:
properties:
clocks:
minItems: 6
clock-names:
items:
- const: cfg_noc
- const: core
- const: iface
- const: sleep
- const: mock_utmi
- const: xo
- if:
properties:
compatible:
contains:
enum:
- qcom,sm8350-dwc3
then:
properties:
clocks:
minItems: 5
maxItems: 6
clock-names:
minItems: 5
items:
- const: cfg_noc
- const: core
- const: iface
- const: sleep
- const: mock_utmi
- const: xo
- if:
properties:
compatible:
contains:
enum:
- qcom,ipq6018-dwc3
- qcom,ipq8074-dwc3
- qcom,msm8953-dwc3
- qcom,msm8998-dwc3
then:
properties:
interrupts:
minItems: 2
maxItems: 3
interrupt-names:
minItems: 2
items:
- const: pwr_event
- const: qusb2_phy
- const: ss_phy_irq
- if:
properties:
compatible:
contains:
enum:
- qcom,msm8994-dwc3
- qcom,msm8996-dwc3
- qcom,qcs404-dwc3
- qcom,sdm660-dwc3
- qcom,sm6115-dwc3
- qcom,sm6125-dwc3
then:
properties:
interrupts:
minItems: 3
maxItems: 4
interrupt-names:
minItems: 3
items:
- const: pwr_event
- const: qusb2_phy
- const: hs_phy_irq
- const: ss_phy_irq
- if:
properties:
compatible:
contains:
enum:
- qcom,ipq5018-dwc3
- qcom,ipq5332-dwc3
then:
properties:
interrupts:
maxItems: 3
interrupt-names:
items:
- const: pwr_event
- const: dp_hs_phy_irq
- const: dm_hs_phy_irq
- if:
properties:
compatible:
contains:
enum:
- qcom,x1e80100-dwc3
then:
properties:
interrupts:
minItems: 3
maxItems: 4
interrupt-names:
minItems: 3
items:
- const: pwr_event
- const: dp_hs_phy_irq
- const: dm_hs_phy_irq
- const: ss_phy_irq
- if:
properties:
compatible:
contains:
enum:
- qcom,ipq4019-dwc3
- qcom,ipq8064-dwc3
- qcom,qcs615-dwc3
- qcom,qcs8300-dwc3
- qcom,qdu1000-dwc3
- qcom,sa8775p-dwc3
- qcom,sc7180-dwc3
- qcom,sc7280-dwc3
- qcom,sc8180x-dwc3
- qcom,sc8280xp-dwc3
- qcom,sdm670-dwc3
- qcom,sdm845-dwc3
- qcom,sdx55-dwc3
- qcom,sdx65-dwc3
- qcom,sdx75-dwc3
- qcom,sm4250-dwc3
- qcom,sm6350-dwc3
- qcom,sm8150-dwc3
- qcom,sm8250-dwc3
- qcom,sm8350-dwc3
- qcom,sm8450-dwc3
- qcom,sm8550-dwc3
- qcom,sm8650-dwc3
- qcom,sm8750-dwc3
then:
properties:
interrupts:
minItems: 4
maxItems: 5
interrupt-names:
minItems: 4
items:
- const: pwr_event
- const: hs_phy_irq
- const: dp_hs_phy_irq
- const: dm_hs_phy_irq
- const: ss_phy_irq
- if:
properties:
compatible:
contains:
enum:
- qcom,sc8180x-dwc3-mp
- qcom,x1e80100-dwc3-mp
then:
properties:
interrupts:
minItems: 10
maxItems: 10
interrupt-names:
items:
- const: pwr_event_1
- const: pwr_event_2
- const: hs_phy_1
- const: hs_phy_2
- const: dp_hs_phy_1
- const: dm_hs_phy_1
- const: dp_hs_phy_2
- const: dm_hs_phy_2
- const: ss_phy_1
- const: ss_phy_2
- if:
properties:
compatible:
contains:
enum:
- qcom,sc8280xp-dwc3-mp
then:
properties:
interrupts:
minItems: 18
maxItems: 18
interrupt-names:
items:
- const: pwr_event_1
- const: pwr_event_2
- const: pwr_event_3
- const: pwr_event_4
- const: hs_phy_1
- const: hs_phy_2
- const: hs_phy_3
- const: hs_phy_4
- const: dp_hs_phy_1
- const: dm_hs_phy_1
- const: dp_hs_phy_2
- const: dm_hs_phy_2
- const: dp_hs_phy_3
- const: dm_hs_phy_3
- const: dp_hs_phy_4
- const: dm_hs_phy_4
- const: ss_phy_1
- const: ss_phy_2
additionalProperties: false
examples:
- |
#include <dt-bindings/clock/qcom,gcc-sdm845.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/interrupt-controller/irq.h>
soc {
#address-cells = <2>;
#size-cells = <2>;
usb@a6f8800 {
compatible = "qcom,sdm845-dwc3", "qcom,dwc3";
reg = <0 0x0a6f8800 0 0x400>;
#address-cells = <2>;
#size-cells = <2>;
ranges;
clocks = <&gcc GCC_CFG_NOC_USB3_PRIM_AXI_CLK>,
<&gcc GCC_USB30_PRIM_MASTER_CLK>,
<&gcc GCC_AGGRE_USB3_PRIM_AXI_CLK>,
<&gcc GCC_USB30_PRIM_SLEEP_CLK>,
<&gcc GCC_USB30_PRIM_MOCK_UTMI_CLK>;
clock-names = "cfg_noc",
"core",
"iface",
"sleep",
"mock_utmi";
assigned-clocks = <&gcc GCC_USB30_PRIM_MOCK_UTMI_CLK>,
<&gcc GCC_USB30_PRIM_MASTER_CLK>;
assigned-clock-rates = <19200000>, <150000000>;
interrupts = <GIC_SPI 130 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 131 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 489 IRQ_TYPE_EDGE_BOTH>,
<GIC_SPI 488 IRQ_TYPE_EDGE_BOTH>,
<GIC_SPI 486 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "pwr_event", "hs_phy_irq",
"dp_hs_phy_irq", "dm_hs_phy_irq", "ss_phy_irq";
power-domains = <&gcc USB30_PRIM_GDSC>;
resets = <&gcc GCC_USB30_PRIM_BCR>;
usb@a600000 {
compatible = "snps,dwc3";
reg = <0 0x0a600000 0 0xcd00>;
interrupts = <GIC_SPI 133 IRQ_TYPE_LEVEL_HIGH>;
iommus = <&apps_smmu 0x740 0>;
snps,dis_u2_susphy_quirk;
snps,dis_enblslpm_quirk;
phys = <&usb_1_hsphy>, <&usb_1_ssphy>;
phy-names = "usb2-phy", "usb3-phy";
};
};
};
@@ -0,0 +1,243 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/usb/qcom,pmic-typec.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Qualcomm PMIC based USB Type-C block
maintainers:
- Bryan O'Donoghue <bryan.odonoghue@linaro.org>
description:
Qualcomm PMIC Type-C block
properties:
compatible:
oneOf:
- enum:
- qcom,pmi632-typec
- qcom,pm8150b-typec
- items:
- enum:
- qcom,pm6150-typec
- qcom,pm7250b-typec
- const: qcom,pm8150b-typec
- items:
- enum:
- qcom,pm4125-typec
- const: qcom,pmi632-typec
connector:
type: object
$ref: /schemas/connector/usb-connector.yaml#
unevaluatedProperties: false
reg:
description: Type-C port and pdphy SPMI register base offsets
minItems: 1
maxItems: 2
interrupts:
minItems: 8
items:
- description: Type-C CC attach notification, VBUS error, tCCDebounce done
- description: Type-C VCONN powered
- description: Type-C CC state change
- description: Type-C VCONN over-current
- description: Type-C VBUS state change
- description: Type-C Attach/detach notification
- description: Type-C Legacy cable detect
- description: Type-C Try.Src Try.Snk state change
- description: Power Domain Signal TX - HardReset or CableReset signal TX
- description: Power Domain Signal RX - HardReset or CableReset signal RX
- description: Power Domain TX complete
- description: Power Domain RX complete
- description: Power Domain TX fail
- description: Power Domain TX message discard
- description: Power Domain RX message discard
- description: Power Domain Fast Role Swap event
interrupt-names:
minItems: 8
items:
- const: or-rid-detect-change
- const: vpd-detect
- const: cc-state-change
- const: vconn-oc
- const: vbus-change
- const: attach-detach
- const: legacy-cable-detect
- const: try-snk-src-detect
- const: sig-tx
- const: sig-rx
- const: msg-tx
- const: msg-rx
- const: msg-tx-failed
- const: msg-tx-discarded
- const: msg-rx-discarded
- const: fr-swap
vdd-vbus-supply:
deprecated: true
description: use connector/vbus-supply instead.
vdd-pdphy-supply:
description: VDD regulator supply to the PDPHY.
required:
- compatible
- reg
- interrupts
- interrupt-names
allOf:
- if:
properties:
compatible:
contains:
enum:
- qcom,pmi632-typec
then:
properties:
reg:
maxItems: 1
interrupts:
maxItems: 8
interrupt-names:
maxItems: 8
vdd-pdphy-supply: false
else:
properties:
reg:
maxItems: 2
interrupts:
minItems: 16
interrupt-names:
maxItems: 16
required:
- vdd-pdphy-supply
additionalProperties: false
examples:
- |
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/usb/pd.h>
pmic {
#address-cells = <1>;
#size-cells = <0>;
pm8150b_typec: typec@1500 {
compatible = "qcom,pm8150b-typec";
reg = <0x1500>,
<0x1700>;
interrupts = <0x2 0x15 0x00 IRQ_TYPE_EDGE_RISING>,
<0x2 0x15 0x01 IRQ_TYPE_EDGE_BOTH>,
<0x2 0x15 0x02 IRQ_TYPE_EDGE_RISING>,
<0x2 0x15 0x03 IRQ_TYPE_EDGE_BOTH>,
<0x2 0x15 0x04 IRQ_TYPE_EDGE_RISING>,
<0x2 0x15 0x05 IRQ_TYPE_EDGE_RISING>,
<0x2 0x15 0x06 IRQ_TYPE_EDGE_BOTH>,
<0x2 0x15 0x07 IRQ_TYPE_EDGE_RISING>,
<0x2 0x17 0x00 IRQ_TYPE_EDGE_RISING>,
<0x2 0x17 0x01 IRQ_TYPE_EDGE_RISING>,
<0x2 0x17 0x02 IRQ_TYPE_EDGE_RISING>,
<0x2 0x17 0x03 IRQ_TYPE_EDGE_RISING>,
<0x2 0x17 0x04 IRQ_TYPE_EDGE_RISING>,
<0x2 0x17 0x05 IRQ_TYPE_EDGE_RISING>,
<0x2 0x17 0x06 IRQ_TYPE_EDGE_RISING>,
<0x2 0x17 0x07 IRQ_TYPE_EDGE_RISING>;
interrupt-names = "or-rid-detect-change",
"vpd-detect",
"cc-state-change",
"vconn-oc",
"vbus-change",
"attach-detach",
"legacy-cable-detect",
"try-snk-src-detect",
"sig-tx",
"sig-rx",
"msg-tx",
"msg-rx",
"msg-tx-failed",
"msg-tx-discarded",
"msg-rx-discarded",
"fr-swap";
vdd-vbus-supply = <&pm8150b_vbus>;
vdd-pdphy-supply = <&vreg_l2a_3p1>;
connector {
compatible = "usb-c-connector";
power-role = "source";
data-role = "dual";
self-powered;
source-pdos = <PDO_FIXED(5000, 3000, PDO_FIXED_DUAL_ROLE |
PDO_FIXED_USB_COMM | PDO_FIXED_DATA_SWAP)>;
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
pmic_typec_hs_in: endpoint {
remote-endpoint = <&usb_hs_out>;
};
};
port@1 {
reg = <1>;
pmic_typec_ss_in: endpoint {
remote-endpoint = <&usb_phy_typec_ss_out>;
};
};
port@2 {
reg = <2>;
pmic_typec_sbu: endpoint {
remote-endpoint = <&usb_mux_sbu>;
};
};
};
};
};
};
usb {
dr_mode = "otg";
usb-role-switch;
port {
usb_hs_out: endpoint {
remote-endpoint = <&pmic_typec_hs_in>;
};
};
};
usb-phy {
orientation-switch;
port {
usb_phy_typec_ss_out: endpoint {
remote-endpoint = <&pmic_typec_ss_in>;
};
};
};
usb-mux {
orientation-switch;
mode-switch;
port {
usb_mux_sbu: endpoint {
remote-endpoint = <&pmic_typec_sbu>;
};
};
};
...
@@ -0,0 +1,693 @@
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/usb/qcom,snps-dwc3.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Qualcomm SuperSpeed DWC3 USB SoC controller
maintainers:
- Wesley Cheng <quic_wcheng@quicinc.com>
description:
Describes the Qualcomm USB block, based on Synopsys DWC3.
select:
properties:
compatible:
contains:
const: qcom,snps-dwc3
required:
- compatible
properties:
compatible:
items:
- enum:
- qcom,eliza-dwc3
- qcom,glymur-dwc3
- qcom,glymur-dwc3-mp
- qcom,ipq4019-dwc3
- qcom,ipq5018-dwc3
- qcom,ipq5332-dwc3
- qcom,ipq5424-dwc3
- qcom,ipq6018-dwc3
- qcom,ipq8064-dwc3
- qcom,ipq8074-dwc3
- qcom,ipq9574-dwc3
- qcom,kaanapali-dwc3
- qcom,milos-dwc3
- qcom,msm8953-dwc3
- qcom,msm8994-dwc3
- qcom,msm8996-dwc3
- qcom,msm8998-dwc3
- qcom,qcm2290-dwc3
- qcom,qcs404-dwc3
- qcom,qcs615-dwc3
- qcom,qcs8300-dwc3
- qcom,qdu1000-dwc3
- qcom,sa8775p-dwc3
- qcom,sar2130p-dwc3
- qcom,sc7180-dwc3
- qcom,sc7280-dwc3
- qcom,sc8180x-dwc3
- qcom,sc8180x-dwc3-mp
- qcom,sc8280xp-dwc3
- qcom,sc8280xp-dwc3-mp
- qcom,sdm660-dwc3
- qcom,sdm670-dwc3
- qcom,sdm845-dwc3
- qcom,sdx55-dwc3
- qcom,sdx65-dwc3
- qcom,sdx75-dwc3
- qcom,sm4250-dwc3
- qcom,sm6115-dwc3
- qcom,sm6125-dwc3
- qcom,sm6350-dwc3
- qcom,sm6375-dwc3
- qcom,sm8150-dwc3
- qcom,sm8250-dwc3
- qcom,sm8350-dwc3
- qcom,sm8450-dwc3
- qcom,sm8550-dwc3
- qcom,sm8650-dwc3
- qcom,sm8750-dwc3
- qcom,x1e80100-dwc3
- qcom,x1e80100-dwc3-mp
- const: qcom,snps-dwc3
reg:
maxItems: 1
power-domains:
maxItems: 1
required-opps:
maxItems: 1
clocks:
description: |
Several clocks are used, depending on the variant. Typical ones are::
- cfg_noc:: System Config NOC clock.
- core:: Master/Core clock, has to be >= 125 MHz for SS operation and >=
60MHz for HS operation.
- iface:: System bus AXI clock.
- sleep:: Sleep clock, used for wakeup when USB3 core goes into low
power mode (U3).
- mock_utmi:: Mock utmi clock needed for ITP/SOF generation in host
mode. Its frequency should be 19.2MHz.
minItems: 1
maxItems: 9
clock-names:
minItems: 1
maxItems: 9
dma-coherent: true
iommus:
maxItems: 1
resets:
maxItems: 1
interconnects:
maxItems: 2
interconnect-names:
items:
- const: usb-ddr
- const: apps-usb
interrupts:
description: |
Different types of interrupts are used based on HS PHY used on target:
- dwc_usb3: Core DWC3 interrupt
- pwr_event: Used for wakeup based on other power events.
- hs_phy_irq: Apart from DP/DM/QUSB2 PHY interrupts, there is
hs_phy_irq which is not triggered by default and its
functionality is mutually exclusive to that of
{dp/dm}_hs_phy_irq and qusb2_phy_irq.
- qusb2_phy: SoCs with QUSB2 PHY do not have separate DP/DM IRQs and
expose only a single IRQ whose behavior can be modified
by the QUSB2PHY_INTR_CTRL register. The required DPSE/
DMSE configuration is done in QUSB2PHY_INTR_CTRL register
of PHY address space.
- {dp/dm}_hs_phy_irq: These IRQ's directly reflect changes on the DP/
DM pads of the SoC. These are used for wakeup
only on SoCs with non-QUSB2 targets with
exception of SDM670/SDM845/SM6350.
- ss_phy_irq: Used for remote wakeup in Super Speed mode of operation.
minItems: 3
maxItems: 19
interrupt-names:
minItems: 3
maxItems: 19
qcom,select-utmi-as-pipe-clk:
description:
If present, disable USB3 pipe_clk requirement.
Used when dwc3 operates without SSPHY and only
HS/FS/LS modes are supported.
type: boolean
wakeup-source: true
required:
- compatible
- reg
- clocks
- clock-names
- interrupts
- interrupt-names
allOf:
- $ref: snps,dwc3-common.yaml#
- if:
properties:
compatible:
contains:
enum:
- qcom,ipq4019-dwc3
- qcom,ipq5332-dwc3
then:
properties:
clocks:
minItems: 3
maxItems: 3
clock-names:
items:
- const: core
- const: sleep
- const: mock_utmi
- if:
properties:
compatible:
contains:
enum:
- qcom,ipq8064-dwc3
then:
properties:
clocks:
items:
- description: Master/Core clock, has to be >= 125 MHz
for SS operation and >= 60MHz for HS operation.
clock-names:
items:
- const: core
- if:
properties:
compatible:
contains:
enum:
- qcom,ipq5424-dwc3
- qcom,ipq9574-dwc3
- qcom,kaanapali-dwc3
- qcom,msm8953-dwc3
- qcom,msm8996-dwc3
- qcom,msm8998-dwc3
- qcom,qcs8300-dwc3
- qcom,sa8775p-dwc3
- qcom,sc7180-dwc3
- qcom,sc7280-dwc3
- qcom,sdm670-dwc3
- qcom,sdm845-dwc3
- qcom,sdx55-dwc3
- qcom,sdx65-dwc3
- qcom,sdx75-dwc3
- qcom,sm6350-dwc3
- qcom,sm8750-dwc3
then:
properties:
clocks:
minItems: 5
maxItems: 5
clock-names:
items:
- const: cfg_noc
- const: core
- const: iface
- const: sleep
- const: mock_utmi
- if:
properties:
compatible:
contains:
enum:
- qcom,ipq6018-dwc3
then:
properties:
clocks:
minItems: 3
maxItems: 4
clock-names:
oneOf:
- items:
- const: core
- const: sleep
- const: mock_utmi
- items:
- const: cfg_noc
- const: core
- const: sleep
- const: mock_utmi
- if:
properties:
compatible:
contains:
enum:
- qcom,ipq8074-dwc3
- qcom,qdu1000-dwc3
then:
properties:
clocks:
minItems: 4
maxItems: 4
clock-names:
items:
- const: cfg_noc
- const: core
- const: sleep
- const: mock_utmi
- if:
properties:
compatible:
contains:
enum:
- qcom,ipq5018-dwc3
- qcom,msm8994-dwc3
- qcom,qcs404-dwc3
then:
properties:
clocks:
minItems: 4
maxItems: 4
clock-names:
items:
- const: core
- const: iface
- const: sleep
- const: mock_utmi
- if:
properties:
compatible:
contains:
enum:
- qcom,sc8280xp-dwc3
- qcom,sc8280xp-dwc3-mp
- qcom,x1e80100-dwc3
- qcom,x1e80100-dwc3-mp
then:
properties:
clocks:
minItems: 9
maxItems: 9
clock-names:
items:
- const: cfg_noc
- const: core
- const: iface
- const: sleep
- const: mock_utmi
- const: noc_aggr
- const: noc_aggr_north
- const: noc_aggr_south
- const: noc_sys
- if:
properties:
compatible:
contains:
enum:
- qcom,sdm660-dwc3
then:
properties:
clocks:
minItems: 4
maxItems: 5
clock-names:
oneOf:
- items:
- const: cfg_noc
- const: core
- const: iface
- const: sleep
- const: mock_utmi
- items:
- const: cfg_noc
- const: core
- const: sleep
- const: mock_utmi
- if:
properties:
compatible:
contains:
enum:
- qcom,eliza-dwc3
- qcom,milos-dwc3
- qcom,qcm2290-dwc3
- qcom,qcs615-dwc3
- qcom,sar2130p-dwc3
- qcom,sc8180x-dwc3
- qcom,sc8180x-dwc3-mp
- qcom,sm4250-dwc3
- qcom,sm6115-dwc3
- qcom,sm6125-dwc3
- qcom,sm6375-dwc3
- qcom,sm8150-dwc3
- qcom,sm8250-dwc3
- qcom,sm8450-dwc3
- qcom,sm8550-dwc3
- qcom,sm8650-dwc3
then:
properties:
clocks:
minItems: 6
maxItems: 6
clock-names:
items:
- const: cfg_noc
- const: core
- const: iface
- const: sleep
- const: mock_utmi
- const: xo
- if:
properties:
compatible:
contains:
enum:
- qcom,sm8350-dwc3
then:
properties:
clocks:
minItems: 5
maxItems: 6
clock-names:
minItems: 5
items:
- const: cfg_noc
- const: core
- const: iface
- const: sleep
- const: mock_utmi
- const: xo
- if:
properties:
compatible:
contains:
enum:
- qcom,glymur-dwc3
- qcom,glymur-dwc3-mp
then:
properties:
clocks:
minItems: 7
maxItems: 7
clock-names:
items:
- const: cfg_noc
- const: core
- const: iface
- const: sleep
- const: mock_utmi
- const: noc_aggr_north
- const: noc_aggr_south
- if:
properties:
compatible:
contains:
enum:
- qcom,ipq6018-dwc3
- qcom,ipq8074-dwc3
- qcom,msm8953-dwc3
- qcom,msm8998-dwc3
then:
properties:
interrupts:
minItems: 3
maxItems: 4
interrupt-names:
minItems: 3
items:
- const: dwc_usb3
- const: pwr_event
- const: qusb2_phy
- const: ss_phy_irq
- if:
properties:
compatible:
contains:
enum:
- qcom,msm8994-dwc3
- qcom,msm8996-dwc3
- qcom,qcs404-dwc3
- qcom,sdm660-dwc3
- qcom,sm4250-dwc3
- qcom,sm6115-dwc3
- qcom,sm6125-dwc3
then:
properties:
interrupts:
minItems: 4
maxItems: 5
interrupt-names:
minItems: 4
items:
- const: dwc_usb3
- const: pwr_event
- const: qusb2_phy
- const: hs_phy_irq
- const: ss_phy_irq
- if:
properties:
compatible:
contains:
enum:
- qcom,ipq5018-dwc3
- qcom,ipq5332-dwc3
then:
properties:
interrupts:
minItems: 4
maxItems: 4
interrupt-names:
items:
- const: dwc_usb3
- const: pwr_event
- const: dp_hs_phy_irq
- const: dm_hs_phy_irq
- if:
properties:
compatible:
contains:
enum:
- qcom,ipq5424-dwc3
- qcom,ipq9574-dwc3
then:
properties:
interrupts:
minItems: 5
maxItems: 5
interrupt-names:
items:
- const: dwc_usb3
- const: pwr_event
- const: qusb2_phy
- const: dp_hs_phy_irq
- const: dm_hs_phy_irq
- if:
properties:
compatible:
contains:
enum:
- qcom,glymur-dwc3
- qcom,milos-dwc3
- qcom,x1e80100-dwc3
then:
properties:
interrupts:
minItems: 4
maxItems: 5
interrupt-names:
minItems: 4
items:
- const: dwc_usb3
- const: pwr_event
- const: dp_hs_phy_irq
- const: dm_hs_phy_irq
- enum: [hs_phy_irq, ss_phy_irq]
- if:
properties:
compatible:
contains:
enum:
- qcom,eliza-dwc3
- qcom,ipq4019-dwc3
- qcom,ipq8064-dwc3
- qcom,kaanapali-dwc3
- qcom,qcs615-dwc3
- qcom,qcs8300-dwc3
- qcom,qdu1000-dwc3
- qcom,sa8775p-dwc3
- qcom,sc7180-dwc3
- qcom,sc7280-dwc3
- qcom,sc8180x-dwc3
- qcom,sc8280xp-dwc3
- qcom,sdm670-dwc3
- qcom,sdm845-dwc3
- qcom,sdx55-dwc3
- qcom,sdx65-dwc3
- qcom,sdx75-dwc3
- qcom,sm6350-dwc3
- qcom,sm6375-dwc3
- qcom,sm8150-dwc3
- qcom,sm8250-dwc3
- qcom,sm8350-dwc3
- qcom,sm8450-dwc3
- qcom,sm8550-dwc3
- qcom,sm8650-dwc3
- qcom,sm8750-dwc3
then:
properties:
interrupts:
minItems: 5
maxItems: 6
interrupt-names:
minItems: 5
items:
- const: dwc_usb3
- const: pwr_event
- const: hs_phy_irq
- const: dp_hs_phy_irq
- const: dm_hs_phy_irq
- const: ss_phy_irq
- if:
properties:
compatible:
contains:
enum:
- qcom,glymur-dwc3-mp
- qcom,sc8180x-dwc3-mp
- qcom,x1e80100-dwc3-mp
then:
properties:
interrupts:
minItems: 11
maxItems: 11
interrupt-names:
items:
- const: dwc_usb3
- const: pwr_event_1
- const: pwr_event_2
- const: hs_phy_1
- const: hs_phy_2
- const: dp_hs_phy_1
- const: dm_hs_phy_1
- const: dp_hs_phy_2
- const: dm_hs_phy_2
- const: ss_phy_1
- const: ss_phy_2
- if:
properties:
compatible:
contains:
enum:
- qcom,sc8280xp-dwc3-mp
then:
properties:
interrupts:
minItems: 19
maxItems: 19
interrupt-names:
items:
- const: dwc_usb3
- const: pwr_event_1
- const: pwr_event_2
- const: pwr_event_3
- const: pwr_event_4
- const: hs_phy_1
- const: hs_phy_2
- const: hs_phy_3
- const: hs_phy_4
- const: dp_hs_phy_1
- const: dm_hs_phy_1
- const: dp_hs_phy_2
- const: dm_hs_phy_2
- const: dp_hs_phy_3
- const: dm_hs_phy_3
- const: dp_hs_phy_4
- const: dm_hs_phy_4
- const: ss_phy_1
- const: ss_phy_2
unevaluatedProperties: false
examples:
- |
#include <dt-bindings/clock/qcom,gcc-sdm845.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/interrupt-controller/irq.h>
soc {
#address-cells = <2>;
#size-cells = <2>;
usb@a600000 {
compatible = "qcom,sdm845-dwc3", "qcom,snps-dwc3";
reg = <0 0x0a600000 0 0x100000>;
clocks = <&gcc GCC_CFG_NOC_USB3_PRIM_AXI_CLK>,
<&gcc GCC_USB30_PRIM_MASTER_CLK>,
<&gcc GCC_AGGRE_USB3_PRIM_AXI_CLK>,
<&gcc GCC_USB30_PRIM_SLEEP_CLK>,
<&gcc GCC_USB30_PRIM_MOCK_UTMI_CLK>;
clock-names = "cfg_noc",
"core",
"iface",
"sleep",
"mock_utmi";
assigned-clocks = <&gcc GCC_USB30_PRIM_MOCK_UTMI_CLK>,
<&gcc GCC_USB30_PRIM_MASTER_CLK>;
assigned-clock-rates = <19200000>, <150000000>;
interrupts = <GIC_SPI 133 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 130 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 131 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 489 IRQ_TYPE_EDGE_BOTH>,
<GIC_SPI 488 IRQ_TYPE_EDGE_BOTH>,
<GIC_SPI 486 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "dwc_usb3", "pwr_event", "hs_phy_irq",
"dp_hs_phy_irq", "dm_hs_phy_irq", "ss_phy_irq";
power-domains = <&gcc USB30_PRIM_GDSC>;
resets = <&gcc GCC_USB30_PRIM_BCR>;
iommus = <&apps_smmu 0x740 0>;
snps,dis_u2_susphy_quirk;
snps,dis_enblslpm_quirk;
phys = <&usb_1_hsphy>, <&usb_1_ssphy>;
phy-names = "usb2-phy", "usb3-phy";
};
};
...
@@ -0,0 +1,101 @@
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/usb/qcom,wcd939x-usbss.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Qualcomm WCD9380/WCD9385 USB SubSystem Altmode/Analog Audio Switch
maintainers:
- Neil Armstrong <neil.armstrong@linaro.org>
description:
Qualcomm WCD9390/WCD9395 is a standalone Hi-Fi audio codec IC with a
functionally separate USB SubSystem for Altmode/Analog Audio Switch
accessible over an I2C interface.
The Audio Headphone and Microphone data path between the Codec and the
USB-C Mux subsystems are external to the IC, thus requiring DT port-endpoint
graph description to handle USB-C altmode & orientation switching for Audio
Accessory Mode.
properties:
compatible:
oneOf:
- const: qcom,wcd9390-usbss
- items:
- const: qcom,wcd9395-usbss
- const: qcom,wcd9390-usbss
reg:
maxItems: 1
reset-gpios:
maxItems: 1
vdd-supply:
description: USBSS VDD power supply
mode-switch: true
orientation-switch: true
ports:
$ref: /schemas/graph.yaml#/properties/ports
properties:
port@0:
$ref: /schemas/graph.yaml#/properties/port
description:
A port node to link the WCD939x USB SubSystem to a TypeC controller for the
purpose of handling altmode muxing and orientation switching.
port@1:
$ref: /schemas/graph.yaml#/properties/port
description:
A port node to link the WCD939x USB SubSystem to the Codec SubSystem for the
purpose of handling USB-C Audio Accessory Mode muxing and orientation switching.
required:
- compatible
- reg
- ports
allOf:
- $ref: usb-switch.yaml#
- $ref: usb-switch-ports.yaml#
additionalProperties: false
examples:
- |
i2c {
#address-cells = <1>;
#size-cells = <0>;
typec-mux@42 {
compatible = "qcom,wcd9390-usbss";
reg = <0x42>;
vdd-supply = <&vreg_bob>;
mode-switch;
orientation-switch;
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
wcd9390_usbss_sbu: endpoint {
remote-endpoint = <&typec_sbu>;
};
};
port@1 {
reg = <1>;
wcd9390_usbss_codec: endpoint {
remote-endpoint = <&wcd9390_codec_usbss>;
};
};
};
};
};
...
@@ -0,0 +1,80 @@
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
# Copyright 2023 Realtek Semiconductor Corporation
%YAML 1.2
---
$id: http://devicetree.org/schemas/usb/realtek,rtd-dwc3.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Realtek DWC3 USB SoC Controller Glue
maintainers:
- Stanley Chang <stanley_chang@realtek.com>
description:
The Realtek DHC SoC embeds a DWC3 USB IP Core configured for USB 2.0
and USB 3.0 in host or dual-role mode.
properties:
compatible:
items:
- enum:
- realtek,rtd1295-dwc3
- realtek,rtd1315e-dwc3
- realtek,rtd1319-dwc3
- realtek,rtd1319d-dwc3
- realtek,rtd1395-dwc3
- realtek,rtd1619-dwc3
- realtek,rtd1619b-dwc3
- const: realtek,rtd-dwc3
reg:
items:
- description: Address and length of register set for wrapper of dwc3 core.
- description: Address and length of register set for pm control.
'#address-cells':
const: 1
'#size-cells':
const: 1
ranges: true
patternProperties:
"^usb@[0-9a-f]+$":
$ref: snps,dwc3.yaml#
description: Required child node
required:
- compatible
- reg
- "#address-cells"
- "#size-cells"
- ranges
additionalProperties: false
examples:
- |
usb@98013e00 {
compatible = "realtek,rtd1319d-dwc3", "realtek,rtd-dwc3";
reg = <0x98013e00 0x140>, <0x98013f60 0x4>;
#address-cells = <1>;
#size-cells = <1>;
ranges;
usb@98050000 {
compatible = "snps,dwc3";
reg = <0x98050000 0x9000>;
interrupts = <0 94 4>;
phys = <&usb2phy &usb3phy>;
phy-names = "usb2-phy", "usb3-phy";
dr_mode = "otg";
usb-role-switch;
role-switch-default-mode = "host";
snps,dis_u2_susphy_quirk;
snps,parkmode-disable-ss-quirk;
snps,parkmode-disable-hs-quirk;
maximum-speed = "high-speed";
};
};
@@ -0,0 +1,82 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
# Copyright 2023 Realtek Semiconductor Corporation
%YAML 1.2
---
$id: http://devicetree.org/schemas/usb/realtek,rtd-type-c.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Realtek DHC RTD SoCs USB Type-C Connector detection
maintainers:
- Stanley Chang <stanley_chang@realtek.com>
description:
Realtek digital home center (DHC) RTD series SoCs include a type c module.
This module is able to detect the state of type c connector.
properties:
compatible:
enum:
- realtek,rtd1295-type-c
- realtek,rtd1312c-type-c
- realtek,rtd1315e-type-c
- realtek,rtd1319-type-c
- realtek,rtd1319d-type-c
- realtek,rtd1395-type-c
- realtek,rtd1619-type-c
- realtek,rtd1619b-type-c
reg:
maxItems: 1
interrupts:
maxItems: 1
nvmem-cell-names:
items:
- const: usb-cal
nvmem-cells:
maxItems: 1
description:
The phandle to nvmem cell that contains the trimming data.
The type c parameter trimming data specified via efuse.
If unspecified, default value is used.
realtek,rd-ctrl-gpios:
description: The gpio node to control external Rd on board.
maxItems: 1
connector:
$ref: /schemas/connector/usb-connector.yaml#
description: Properties for usb c connector.
type: object
required:
- compatible
- reg
- interrupts
additionalProperties: false
examples:
- |
#include <dt-bindings/interrupt-controller/irq.h>
type-c@7220 {
compatible = "realtek,rtd1619b-type-c";
reg = <0x7220 0x20>;
interrupts = <0 60 IRQ_TYPE_LEVEL_HIGH>;
pinctrl-names = "default";
pinctrl-0 = <&usb_cc1_pins>, <&usb_cc2_pins>;
nvmem-cells = <&otp_usb_cal>;
nvmem-cell-names = "usb-cal";
connector {
compatible = "usb-c-connector";
label = "USB-C";
data-role = "dual";
power-role = "dual";
};
};
@@ -0,0 +1,92 @@
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/usb/realtek,rts5411.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Realtek RTS5411 USB 3.0 hub controller
maintainers:
- Matthias Kaehlcke <mka@chromium.org>
allOf:
- $ref: usb-hub.yaml#
properties:
compatible:
items:
- enum:
- usbbda,5411
- usbbda,411
vdd-supply:
description:
phandle to the regulator that provides power to the hub.
peer-hub: true
ports:
$ref: /schemas/graph.yaml#/properties/ports
patternProperties:
'^port@':
$ref: /schemas/graph.yaml#/properties/port
properties:
reg:
minimum: 1
maximum: 4
additionalProperties:
properties:
reg:
minimum: 1
maximum: 4
required:
- peer-hub
- compatible
- reg
examples:
- |
usb {
dr_mode = "host";
#address-cells = <1>;
#size-cells = <0>;
/* 2.0 hub on port 1 */
hub_2_0: hub@1 {
compatible = "usbbda,5411";
reg = <1>;
vdd-supply = <&pp3300_hub>;
peer-hub = <&hub_3_0>;
#address-cells = <1>;
#size-cells = <0>;
/* USB 2.0 device on port 2 */
device@2 {
compatible = "usb123,4567";
reg = <2>;
};
};
/* 3.0 hub on port 2 */
hub_3_0: hub@2 {
compatible = "usbbda,411";
reg = <2>;
vdd-supply = <&pp3300_hub>;
peer-hub = <&hub_2_0>;
ports {
#address-cells = <1>;
#size-cells = <0>;
/* Type-A connector on port 4 */
port@4 {
reg = <4>;
endpoint {
remote-endpoint = <&usb_a0_ss>;
};
};
};
};
};
@@ -0,0 +1,95 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/usb/renesas,rzg3e-xhci.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Renesas USB 3.2 Gen2 Host controller
maintainers:
- Biju Das <biju.das.jz@bp.renesas.com>
properties:
compatible:
oneOf:
- items:
- enum:
- renesas,r9a09g056-xhci # RZ/V2N
- renesas,r9a09g057-xhci # RZ/V2H(P)
- const: renesas,r9a09g047-xhci
- items:
- const: renesas,r9a09g047-xhci # RZ/G3E
reg:
maxItems: 1
interrupts:
items:
- description: Logical OR of all interrupt signals.
- description: System management interrupt
- description: Host system error interrupt
- description: Power management event interrupt
- description: xHC interrupt
interrupt-names:
items:
- const: all
- const: smi
- const: hse
- const: pme
- const: xhc
clocks:
maxItems: 1
phys:
maxItems: 2
phy-names:
items:
- const: usb2-phy
- const: usb3-phy
power-domains:
maxItems: 1
resets:
maxItems: 1
required:
- compatible
- reg
- interrupts
- interrupt-names
- clocks
- power-domains
- resets
- phys
- phy-names
allOf:
- $ref: usb-xhci.yaml
additionalProperties: false
examples:
- |
#include <dt-bindings/clock/renesas,r9a09g047-cpg.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
usb@15850000 {
compatible = "renesas,r9a09g047-xhci";
reg = <0x15850000 0x10000>;
interrupts = <GIC_SPI 759 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 758 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 757 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 756 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 755 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "all", "smi", "hse", "pme", "xhc";
clocks = <&cpg CPG_MOD 0xaf>;
power-domains = <&cpg>;
resets = <&cpg 0xaa>;
phys = <&usb3_phy>, <&usb3_phy>;
phy-names = "usb2-phy", "usb3-phy";
};
@@ -0,0 +1,68 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/usb/renesas,rzn1-usbf.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Renesas RZ/N1 SoCs USBF (USB Function) controller
description: |
The Renesas USBF controller is an USB2.0 device
controller (UDC).
maintainers:
- Herve Codina <herve.codina@bootlin.com>
properties:
compatible:
items:
- enum:
- renesas,r9a06g032-usbf
- const: renesas,rzn1-usbf
reg:
maxItems: 1
clocks:
items:
- description: Internal bus clock (AHB) for Function
- description: Internal bus clock (AHB) for Power Management
clock-names:
items:
- const: hclkf
- const: hclkpm
power-domains:
maxItems: 1
interrupts:
items:
- description: The USBF EPC interrupt
- description: The USBF AHB-EPC interrupt
required:
- compatible
- reg
- clocks
- clock-names
- power-domains
- interrupts
additionalProperties: false
examples:
- |
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/clock/r9a06g032-sysctrl.h>
usb@4001e000 {
compatible = "renesas,r9a06g032-usbf", "renesas,rzn1-usbf";
reg = <0x4001e000 0x2000>;
interrupts = <GIC_SPI 77 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 78 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&sysctrl R9A06G032_HCLK_USBF>,
<&sysctrl R9A06G032_HCLK_USBPM>;
clock-names = "hclkf", "hclkpm";
power-domains = <&sysctrl>;
};
@@ -0,0 +1,129 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/usb/renesas,rzv2m-usb3drd.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Renesas RZ/V2M USB 3.1 DRD controller
maintainers:
- Biju Das <biju.das.jz@bp.renesas.com>
description: |
The RZ/V2{M, MA} USB3.1 DRD module supports the following functions
* Role swapping function by the ID pin of the Micro-AB receptacle
* Battery Charging Specification Revision 1.2
properties:
compatible:
items:
- enum:
- renesas,r9a09g011-usb3drd # RZ/V2M
- renesas,r9a09g055-usb3drd # RZ/V2MA
- const: renesas,rzv2m-usb3drd
reg:
maxItems: 1
interrupts:
items:
- description: Dual Role Device (DRD)
- description: Battery Charging
- description: Global Purpose Input
interrupt-names:
items:
- const: drd
- const: bc
- const: gpi
clocks:
items:
- description: Peripheral AXI clock
- description: APB clock
clock-names:
items:
- const: axi
- const: reg
power-domains:
maxItems: 1
resets:
maxItems: 1
ranges: true
'#address-cells':
enum: [ 1, 2 ]
'#size-cells':
enum: [ 1, 2 ]
patternProperties:
"^usb3peri@[0-9a-f]+$":
type: object
$ref: /schemas/usb/renesas,usb3-peri.yaml
"^usb@[0-9a-f]+$":
type: object
$ref: renesas,usb-xhci.yaml#
required:
- compatible
- reg
- interrupts
- interrupt-names
- clocks
- clock-names
- power-domains
- resets
additionalProperties: false
examples:
- |
#include <dt-bindings/clock/r9a09g011-cpg.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
usb3drd: usb@85070400 {
compatible = "renesas,r9a09g011-usb3drd", "renesas,rzv2m-usb3drd";
reg = <0x85070400 0x100>;
interrupts = <GIC_SPI 242 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 243 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 244 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "drd", "bc", "gpi";
clocks = <&cpg CPG_MOD R9A09G011_USB_ACLK_P>,
<&cpg CPG_MOD R9A09G011_USB_PCLK>;
clock-names = "axi", "reg";
power-domains = <&cpg>;
resets = <&cpg R9A09G011_USB_DRD_RESET>;
ranges;
#address-cells = <1>;
#size-cells = <1>;
usb3host: usb@85060000 {
compatible = "renesas,r9a09g011-xhci",
"renesas,rzv2m-xhci";
reg = <0x85060000 0x2000>;
interrupts = <GIC_SPI 245 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&cpg CPG_MOD R9A09G011_USB_ACLK_H>,
<&cpg CPG_MOD R9A09G011_USB_PCLK>;
clock-names = "axi", "reg";
power-domains = <&cpg>;
resets = <&cpg R9A09G011_USB_ARESETN_H>;
};
usb3peri: usb3peri@85070000 {
compatible = "renesas,r9a09g011-usb3-peri",
"renesas,rzv2m-usb3-peri";
reg = <0x85070000 0x400>;
interrupts = <GIC_SPI 246 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&cpg CPG_MOD R9A09G011_USB_ACLK_P>,
<&cpg CPG_MOD R9A09G011_USB_PCLK>;
clock-names = "axi", "reg";
power-domains = <&cpg>;
resets = <&cpg R9A09G011_USB_ARESETN_P>;
};
};
@@ -0,0 +1,63 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/usb/renesas,upd720201-pci.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: UPD720201/UPD720202 USB 3.0 xHCI Host Controller (PCIe)
maintainers:
- Neil Armstrong <neil.armstrong@linaro.org>
description:
UPD720201 USB 3.0 xHCI Host Controller via PCIe x1 Gen2 interface.
The UPD720202 supports up to two downstream ports, while UPD720201
supports up to four downstream USB 3.0 rev1.0 ports.
properties:
compatible:
enum:
- pci1912,0014 # UPD720201
- pci1912,0015 # UPD720202
reg:
maxItems: 1
avdd33-supply:
description: +3.3 V power supply for analog circuit
vdd10-supply:
description: +1.05 V power supply
vdd33-supply:
description: +3.3 V power supply
required:
- compatible
- reg
- avdd33-supply
- vdd10-supply
- vdd33-supply
allOf:
- $ref: usb-xhci.yaml
additionalProperties: true
examples:
- |
pcie@0 {
reg = <0x0 0x1000>;
ranges = <0x02000000 0x0 0x100000 0x10000000 0x0 0x0>;
#address-cells = <3>;
#size-cells = <2>;
device_type = "pci";
usb-controller@0 {
compatible = "pci1912,0014";
reg = <0x0 0x0 0x0 0x0 0x0>;
avdd33-supply = <&avdd33_reg>;
vdd10-supply = <&vdd10_reg>;
vdd33-supply = <&vdd33_reg>;
};
};
@@ -0,0 +1,119 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/usb/renesas,usb-xhci.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Renesas USB xHCI controllers
maintainers:
- Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
- Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
properties:
compatible:
oneOf:
- items:
- enum:
- renesas,xhci-r8a7742 # RZ/G1H
- renesas,xhci-r8a7743 # RZ/G1M
- renesas,xhci-r8a7744 # RZ/G1N
- renesas,xhci-r8a7790 # R-Car H2
- renesas,xhci-r8a7791 # R-Car M2-W
- renesas,xhci-r8a7793 # R-Car M2-N
- const: renesas,rcar-gen2-xhci # R-Car Gen2 and RZ/G1
- items:
- enum:
- renesas,xhci-r8a774a1 # RZ/G2M
- renesas,xhci-r8a774b1 # RZ/G2N
- renesas,xhci-r8a774c0 # RZ/G2E
- renesas,xhci-r8a774e1 # RZ/G2H
- renesas,xhci-r8a7795 # R-Car H3
- renesas,xhci-r8a7796 # R-Car M3-W
- renesas,xhci-r8a77961 # R-Car M3-W+
- renesas,xhci-r8a77965 # R-Car M3-N
- renesas,xhci-r8a77990 # R-Car E3
- const: renesas,rcar-gen3-xhci # R-Car Gen3 and RZ/G2
- items:
- enum:
- renesas,r9a09g011-xhci # RZ/V2M
- renesas,r9a09g055-xhci # RZ/V2MA
- const: renesas,rzv2m-xhci # RZ/{V2M, V2MA}
reg:
maxItems: 1
interrupts:
maxItems: 1
clocks:
minItems: 1
items:
- description: Main clock for host
- description: Register access clock
clock-names:
minItems: 1
items:
- const: axi
- const: reg
phys:
maxItems: 1
phy-names:
items:
- const: usb
power-domains:
maxItems: 1
resets:
maxItems: 1
required:
- compatible
- reg
- interrupts
- clocks
- power-domains
- resets
allOf:
- $ref: usb-xhci.yaml
- if:
properties:
compatible:
contains:
enum:
- renesas,rzv2m-xhci
then:
properties:
clocks:
minItems: 2
clock-names:
minItems: 2
required:
- clock-names
else:
properties:
clocks:
maxItems: 1
unevaluatedProperties: false
examples:
- |
#include <dt-bindings/clock/r8a7795-cpg-mssr.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/power/r8a7795-sysc.h>
xhci0: usb@ee000000 {
compatible = "renesas,xhci-r8a7795", "renesas,rcar-gen3-xhci";
reg = <0xee000000 0xc00>;
interrupts = <GIC_SPI 102 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&cpg CPG_MOD 328>;
power-domains = <&sysc R8A7795_PD_ALWAYS_ON>;
resets = <&cpg 328>;
};
@@ -0,0 +1,150 @@
# SPDX-License-Identifier: GPL-2.0-only
%YAML 1.2
---
$id: http://devicetree.org/schemas/usb/renesas,usb3-peri.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Renesas USB 3.0 Peripheral controller
maintainers:
- Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
properties:
compatible:
oneOf:
- items:
- enum:
- renesas,r8a774a1-usb3-peri # RZ/G2M
- renesas,r8a774b1-usb3-peri # RZ/G2N
- renesas,r8a774c0-usb3-peri # RZ/G2E
- renesas,r8a774e1-usb3-peri # RZ/G2H
- renesas,r8a7795-usb3-peri # R-Car H3
- renesas,r8a7796-usb3-peri # R-Car M3-W
- renesas,r8a77961-usb3-peri # R-Car M3-W+
- renesas,r8a77965-usb3-peri # R-Car M3-N
- renesas,r8a77990-usb3-peri # R-Car E3
- const: renesas,rcar-gen3-usb3-peri
- items:
- enum:
- renesas,r9a09g011-usb3-peri # RZ/V2M
- renesas,r9a09g055-usb3-peri # RZ/V2MA
- const: renesas,rzv2m-usb3-peri
reg:
maxItems: 1
interrupts:
maxItems: 1
clocks:
minItems: 1
items:
- description: Main clock
- description: Register access clock
clock-names:
minItems: 1
items:
- const: axi
- const: reg
phys:
maxItems: 1
phy-names:
const: usb
power-domains:
maxItems: 1
resets:
maxItems: 1
usb-role-switch:
$ref: /schemas/types.yaml#/definitions/flag
description: Support role switch.
companion:
$ref: /schemas/types.yaml#/definitions/phandle
description: phandle of a companion.
ports:
$ref: /schemas/graph.yaml#/properties/ports
description: |
any connector to the data bus of this controller should be modelled
using the OF graph bindings specified, if the "usb-role-switch"
property is used.
properties:
port@0:
$ref: /schemas/graph.yaml#/properties/port
description: High Speed (HS) data bus.
port@1:
$ref: /schemas/graph.yaml#/properties/port
description: Super Speed (SS) data bus.
required:
- port@0
- port@1
required:
- compatible
- interrupts
- clocks
allOf:
- if:
properties:
compatible:
contains:
enum:
- renesas,rzv2m-usb3-peri
then:
properties:
clocks:
minItems: 2
clock-names:
minItems: 2
required:
- clock-names
- resets
else:
properties:
clocks:
maxItems: 1
additionalProperties: false
examples:
- |
#include <dt-bindings/clock/r8a774c0-cpg-mssr.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/power/r8a774c0-sysc.h>
usb3_peri0: usb@ee020000 {
compatible = "renesas,r8a774c0-usb3-peri", "renesas,rcar-gen3-usb3-peri";
reg = <0xee020000 0x400>;
interrupts = <GIC_SPI 104 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&cpg CPG_MOD 328>;
companion = <&xhci0>;
usb-role-switch;
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
usb3_hs_ep: endpoint {
remote-endpoint = <&hs_ep>;
};
};
port@1 {
reg = <1>;
usb3_role_switch: endpoint {
remote-endpoint = <&hd3ss3220_out_ep>;
};
};
};
};
@@ -0,0 +1,184 @@
# SPDX-License-Identifier: GPL-2.0-only
%YAML 1.2
---
$id: http://devicetree.org/schemas/usb/renesas,usbhs.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Renesas USBHS (HS-USB) controller
maintainers:
- Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
properties:
compatible:
oneOf:
- items:
- const: renesas,usbhs-r7s72100 # RZ/A1
- const: renesas,rza1-usbhs
- items:
- enum:
- renesas,usbhs-r7s9210 # RZ/A2
- const: renesas,rza2-usbhs
- items:
- enum:
- renesas,usbhs-r9a07g043 # RZ/G2UL and RZ/Five
- renesas,usbhs-r9a07g044 # RZ/G2{L,LC}
- renesas,usbhs-r9a07g054 # RZ/V2L
- renesas,usbhs-r9a08g045 # RZ/G3S
- renesas,usbhs-r9a09g047 # RZ/G3E
- renesas,usbhs-r9a09g056 # RZ/V2N
- renesas,usbhs-r9a09g057 # RZ/V2H(P)
- const: renesas,rzg2l-usbhs
- items:
- enum:
- renesas,usbhs-r8a7742 # RZ/G1H
- renesas,usbhs-r8a7743 # RZ/G1M
- renesas,usbhs-r8a7744 # RZ/G1N
- renesas,usbhs-r8a7745 # RZ/G1E
- renesas,usbhs-r8a77470 # RZ/G1C
- renesas,usbhs-r8a7790 # R-Car H2
- renesas,usbhs-r8a7791 # R-Car M2-W
- renesas,usbhs-r8a7792 # R-Car V2H
- renesas,usbhs-r8a7793 # R-Car M2-N
- renesas,usbhs-r8a7794 # R-Car E2
- const: renesas,rcar-gen2-usbhs
- items:
- enum:
- renesas,usbhs-r8a774a1 # RZ/G2M
- renesas,usbhs-r8a774b1 # RZ/G2N
- renesas,usbhs-r8a774c0 # RZ/G2E
- renesas,usbhs-r8a774e1 # RZ/G2H
- renesas,usbhs-r8a7795 # R-Car H3
- renesas,usbhs-r8a7796 # R-Car M3-W
- renesas,usbhs-r8a77961 # R-Car M3-W+
- renesas,usbhs-r8a77965 # R-Car M3-N
- renesas,usbhs-r8a77990 # R-Car E3
- renesas,usbhs-r8a77995 # R-Car D3
- const: renesas,rcar-gen3-usbhs
- const: renesas,usbhs-r9a09g077 # RZ/T2H
- items:
- const: renesas,usbhs-r9a09g087 # RZ/N2H
- const: renesas,usbhs-r9a09g077 # RZ/T2H
reg:
maxItems: 1
clocks:
minItems: 1
items:
- description: USB 2.0 host
- description: USB 2.0 peripheral
- description: USB 2.0 clock selector
interrupts:
minItems: 1
maxItems: 4
renesas,buswait:
$ref: /schemas/types.yaml#/definitions/uint32
description: |
Integer to use BUSWAIT register.
renesas,enable-gpio:
deprecated: true
maxItems: 1
renesas,enable-gpios:
maxItems: 1
description: |
gpio specifier to check GPIO determining if USB function should be
enabled.
phys:
maxItems: 1
phy-names:
items:
- const: usb
dmas:
minItems: 2
maxItems: 4
dma-names:
minItems: 2
items:
- const: ch0
- const: ch1
- const: ch2
- const: ch3
dr_mode: true
power-domains:
maxItems: 1
resets:
minItems: 1
items:
- description: USB 2.0 host
- description: USB 2.0 peripheral
required:
- compatible
- reg
- clocks
- interrupts
allOf:
- if:
properties:
compatible:
contains:
const: renesas,rzg2l-usbhs
then:
properties:
interrupts:
items:
- description: U2P_IXL_INT
- description: U2P_INT_DMA[0]
- description: U2P_INT_DMA[1]
- description: U2P_INT_DMAERR
required:
- resets
else:
if:
properties:
compatible:
contains:
const: renesas,usbhs-r9a09g077
then:
properties:
resets: false
clocks:
maxItems: 1
interrupts:
items:
- description: USB function interrupt USB_FI
- description: USB function DMA0 transmit completion interrupt USB_FDMA0
- description: USB function DMA1 transmit completion interrupt USB_FDMA1
else:
properties:
interrupts:
maxItems: 1
additionalProperties: false
examples:
- |
#include <dt-bindings/clock/r8a7790-cpg-mssr.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/power/r8a7790-sysc.h>
usbhs: usb@e6590000 {
compatible = "renesas,usbhs-r8a7790", "renesas,rcar-gen2-usbhs";
reg = <0xe6590000 0x100>;
interrupts = <GIC_SPI 107 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&cpg CPG_MOD 704>;
};
@@ -0,0 +1,112 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/usb/richtek,rt1711h.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Richtek RT1711H Type-C Port Switch and Power Delivery controller
maintainers:
- Gene Chen <gene_chen@richtek.com>
description: |
The RT1711H is a USB Type-C controller that complies with the latest
USB Type-C and PD standards. It does the USB Type-C detection including attach
and orientation. It integrates the physical layer of the USB BMC power
delivery protocol to allow up to 100W of power. The BMC PD block enables full
support for alternative interfaces of the Type-C specification.
properties:
compatible:
oneOf:
- enum:
- richtek,rt1711h
- richtek,rt1715
- items:
- enum:
- hynetek,husb311
- const: richtek,rt1711h
- items:
- enum:
- etekmicro,et7304
- const: richtek,rt1715
description:
RT1711H support PD20, ET7304 and RT1715 support PD30 except Fast Role Swap.
HUSB311 is a rebrand of RT1711H which is pin and register compatible.
reg:
maxItems: 1
interrupts:
maxItems: 1
vbus-supply:
description: VBUS power supply
wakeup-source: true
connector:
type: object
$ref: /schemas/connector/usb-connector.yaml#
description:
Properties for usb c connector.
additionalProperties: false
required:
- compatible
- reg
- connector
- interrupts
examples:
- |
#include <dt-bindings/interrupt-controller/irq.h>
#include <dt-bindings/usb/pd.h>
i2c {
#address-cells = <1>;
#size-cells = <0>;
rt1711h@4e {
compatible = "richtek,rt1711h";
reg = <0x4e>;
interrupts-extended = <&gpio26 3 IRQ_TYPE_LEVEL_LOW>;
wakeup-source;
connector {
compatible = "usb-c-connector";
label = "USB-C";
data-role = "dual";
power-role = "dual";
try-power-role = "sink";
source-pdos = <PDO_FIXED(5000, 2000, PDO_FIXED_DUAL_ROLE | PDO_FIXED_DATA_SWAP)>;
sink-pdos = <PDO_FIXED(5000, 2000, PDO_FIXED_DUAL_ROLE | PDO_FIXED_DATA_SWAP)>;
op-sink-microwatt = <10000000>;
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
endpoint {
remote-endpoint = <&usb_hs>;
};
};
port@1 {
reg = <1>;
endpoint {
remote-endpoint = <&usb_ss>;
};
};
port@2 {
reg = <2>;
endpoint {
remote-endpoint = <&dp_aux>;
};
};
};
};
};
};
...
@@ -0,0 +1,85 @@
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/usb/richtek,rt1719.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Richtek RT1719 sink-only Type-C PD controller
maintainers:
- ChiYuan Huang <cy_huang@richtek.com>
description: |
The RT1719 is a sink-only USB Type-C controller that complies with the latest
USB Type-C and PD standards. It does the USB Type-C detection including attach
and orientation. It integrates the physical layer of the USB BMC power
delivery protocol to allow up to 100W of power. The BMC PD block enables full
support for alternative interfaces of the Type-C specification.
properties:
compatible:
enum:
- richtek,rt1719
reg:
maxItems: 1
interrupts:
maxItems: 1
wakeup-source:
description: enable IRQ remote wakeup, see power/wakeup-source.txt
type: boolean
connector:
type: object
$ref: ../connector/usb-connector.yaml#
description:
Properties for usb c connector.
additionalProperties: false
required:
- compatible
- reg
- connector
- interrupts
examples:
- |
#include <dt-bindings/interrupt-controller/irq.h>
i2c {
#address-cells = <1>;
#size-cells = <0>;
rt1719@43 {
compatible = "richtek,rt1719";
reg = <0x43>;
interrupts-extended = <&gpio26 2 IRQ_TYPE_LEVEL_LOW>;
wakeup-source;
connector {
compatible = "usb-c-connector";
label = "USB-C";
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
endpoint {
remote-endpoint = <&usb_hs>;
};
};
port@1 {
reg = <1>;
endpoint {
remote-endpoint = <&usb_ss>;
};
};
};
};
};
};
...
@@ -0,0 +1,184 @@
# SPDX-License-Identifier: GPL-2.0
%YAML 1.2
---
$id: http://devicetree.org/schemas/usb/rockchip,dwc3.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Rockchip SuperSpeed DWC3 USB SoC controller
maintainers:
- Heiko Stuebner <heiko@sntech.de>
description:
The common content of the node is defined in snps,dwc3.yaml.
Phy documentation is provided in the following places.
USB2.0 PHY
Documentation/devicetree/bindings/phy/rockchip,inno-usb2phy.yaml
Type-C PHY
Documentation/devicetree/bindings/phy/rockchip,rk3399-typec-phy.yaml
select:
properties:
compatible:
contains:
enum:
- rockchip,rk3328-dwc3
- rockchip,rk3528-dwc3
- rockchip,rk3562-dwc3
- rockchip,rk3568-dwc3
- rockchip,rk3576-dwc3
- rockchip,rk3588-dwc3
required:
- compatible
properties:
compatible:
items:
- enum:
- rockchip,rk3328-dwc3
- rockchip,rk3528-dwc3
- rockchip,rk3562-dwc3
- rockchip,rk3568-dwc3
- rockchip,rk3576-dwc3
- rockchip,rk3588-dwc3
- const: snps,dwc3
reg:
maxItems: 1
interrupts:
maxItems: 1
clocks:
minItems: 3
items:
- description:
Controller reference clock, must to be 24 MHz
- description:
Controller suspend clock, must to be 24 MHz or 32 KHz
- description:
Master/Core clock, must to be >= 62.5 MHz for SS
operation and >= 30MHz for HS operation
- description:
Controller grf clock OR UTMI clock
- description:
PIPE clock
clock-names:
minItems: 3
items:
- const: ref_clk
- const: suspend_clk
- const: bus_clk
- enum:
- grf_clk
- utmi
- pipe
- const: pipe
power-domains:
maxItems: 1
resets:
maxItems: 1
reset-names:
const: usb3-otg
unevaluatedProperties: false
required:
- compatible
- reg
- interrupts
- clocks
- clock-names
allOf:
- $ref: snps,dwc3.yaml#
- if:
properties:
compatible:
contains:
const: rockchip,rk3328-dwc3
then:
properties:
clocks:
minItems: 3
maxItems: 4
clock-names:
minItems: 3
items:
- const: ref_clk
- const: suspend_clk
- const: bus_clk
- const: grf_clk
- if:
properties:
compatible:
contains:
const: rockchip,rk3562-dwc3
then:
properties:
clocks:
minItems: 4
maxItems: 4
clock-names:
items:
- const: ref_clk
- const: suspend_clk
- const: bus_clk
- const: pipe
- if:
properties:
compatible:
contains:
enum:
- rockchip,rk3528-dwc3
- rockchip,rk3568-dwc3
- rockchip,rk3576-dwc3
then:
properties:
clocks:
maxItems: 3
clock-names:
maxItems: 3
- if:
properties:
compatible:
contains:
const: rockchip,rk3588-dwc3
then:
properties:
clock-names:
minItems: 3
items:
- const: ref_clk
- const: suspend_clk
- const: bus_clk
- const: utmi
- const: pipe
examples:
- |
#include <dt-bindings/clock/rk3328-cru.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
bus {
#address-cells = <2>;
#size-cells = <2>;
usbdrd3_0: usb@fe800000 {
compatible = "rockchip,rk3328-dwc3", "snps,dwc3";
reg = <0x0 0xfe800000 0x0 0x100000>;
interrupts = <GIC_SPI 105 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&cru SCLK_USB3OTG_REF>, <&cru SCLK_USB3OTG_SUSPEND>,
<&cru ACLK_USB3OTG>;
clock-names = "ref_clk", "suspend_clk",
"bus_clk", "grf_clk";
dr_mode = "otg";
};
};
@@ -0,0 +1,115 @@
# SPDX-License-Identifier: GPL-2.0
%YAML 1.2
---
$id: http://devicetree.org/schemas/usb/rockchip,rk3399-dwc3.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Rockchip RK3399 SuperSpeed DWC3 USB SoC controller
maintainers:
- Heiko Stuebner <heiko@sntech.de>
properties:
compatible:
const: rockchip,rk3399-dwc3
'#address-cells':
const: 2
'#size-cells':
const: 2
ranges: true
clocks:
items:
- description:
Controller reference clock, must to be 24 MHz
- description:
Controller suspend clock, must to be 24 MHz or 32 KHz
- description:
Master/Core clock, must to be >= 62.5 MHz for SS
operation and >= 30MHz for HS operation
- description:
USB3 aclk peri
- description:
USB3 aclk
- description:
Controller grf clock
clock-names:
items:
- const: ref_clk
- const: suspend_clk
- const: bus_clk
- const: aclk_usb3_rksoc_axi_perf
- const: aclk_usb3
- const: grf_clk
resets:
maxItems: 1
reset-names:
const: usb3-otg
patternProperties:
'^usb@':
$ref: snps,dwc3.yaml#
additionalProperties: false
required:
- compatible
- '#address-cells'
- '#size-cells'
- ranges
- clocks
- clock-names
- resets
- reset-names
examples:
- |
#include <dt-bindings/clock/rk3399-cru.h>
#include <dt-bindings/power/rk3399-power.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
bus {
#address-cells = <2>;
#size-cells = <2>;
usb {
compatible = "rockchip,rk3399-dwc3";
#address-cells = <2>;
#size-cells = <2>;
ranges;
clocks = <&cru SCLK_USB3OTG0_REF>, <&cru SCLK_USB3OTG0_SUSPEND>,
<&cru ACLK_USB3OTG0>, <&cru ACLK_USB3_RKSOC_AXI_PERF>,
<&cru ACLK_USB3>, <&cru ACLK_USB3_GRF>;
clock-names = "ref_clk", "suspend_clk",
"bus_clk", "aclk_usb3_rksoc_axi_perf",
"aclk_usb3", "grf_clk";
resets = <&cru SRST_A_USB3_OTG0>;
reset-names = "usb3-otg";
usb@fe800000 {
compatible = "snps,dwc3";
reg = <0x0 0xfe800000 0x0 0x100000>;
interrupts = <GIC_SPI 105 IRQ_TYPE_LEVEL_HIGH 0>;
clocks = <&cru SCLK_USB3OTG0_REF>, <&cru ACLK_USB3OTG0>,
<&cru SCLK_USB3OTG0_SUSPEND>;
clock-names = "ref", "bus_early", "suspend";
dr_mode = "otg";
phys = <&u2phy0_otg>, <&tcphy0_usb3>;
phy-names = "usb2-phy", "usb3-phy";
phy_type = "utmi_wide";
snps,dis_enblslpm_quirk;
snps,dis-u2-freeclk-exists-quirk;
snps,dis_u2_susphy_quirk;
snps,dis-del-phy-power-chg-quirk;
snps,dis-tx-ipgap-linecheck-quirk;
power-domains = <&power RK3399_PD_USB3>;
};
};
};
...
@@ -0,0 +1,229 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/usb/samsung,exynos-dwc3.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Samsung Exynos SoC USB 3.0 DWC3 Controller
maintainers:
- Krzysztof Kozlowski <krzk@kernel.org>
properties:
compatible:
oneOf:
- enum:
- google,gs101-dwusb3
- samsung,exynos2200-dwusb3
- samsung,exynos5250-dwusb3
- samsung,exynos5433-dwusb3
- samsung,exynos7-dwusb3
- samsung,exynos7870-dwusb3
- samsung,exynos850-dwusb3
- samsung,exynosautov920-dwusb3
- items:
- const: samsung,exynos8890-dwusb3
- const: samsung,exynos7-dwusb3
- items:
- const: samsung,exynos990-dwusb3
- const: samsung,exynos850-dwusb3
'#address-cells':
const: 1
clocks:
minItems: 1
maxItems: 4
clock-names:
minItems: 1
maxItems: 4
power-domains:
maxItems: 1
ranges: true
'#size-cells':
const: 1
vdd10-supply:
description: 1.0V power supply
vdd33-supply:
description: 3.0V/3.3V power supply
patternProperties:
"^usb@[0-9a-f]+$":
$ref: snps,dwc3.yaml#
description: Required child node
required:
- compatible
- '#address-cells'
- clocks
- clock-names
- ranges
- '#size-cells'
- vdd33-supply
allOf:
- if:
properties:
compatible:
contains:
const: google,gs101-dwusb3
then:
properties:
clocks:
minItems: 4
maxItems: 4
clock-names:
items:
- const: bus_early
- const: susp_clk
- const: link_aclk
- const: link_pclk
required:
- vdd10-supply
- if:
properties:
compatible:
contains:
const: samsung,exynos2200-dwusb3
then:
properties:
clocks:
maxItems: 1
clock-names:
items:
- const: link_aclk
- if:
properties:
compatible:
contains:
const: samsung,exynos5250-dwusb3
then:
properties:
clocks:
minItems: 1
maxItems: 1
clock-names:
items:
- const: usbdrd30
required:
- vdd10-supply
- if:
properties:
compatible:
contains:
const: samsung,exynos5433-dwusb3
then:
properties:
clocks:
minItems: 4
maxItems: 4
clock-names:
items:
- const: aclk
- const: susp_clk
- const: phyclk
- const: pipe_pclk
required:
- vdd10-supply
- if:
properties:
compatible:
contains:
const: samsung,exynos7-dwusb3
then:
properties:
clocks:
minItems: 3
maxItems: 3
clock-names:
items:
- const: usbdrd30
- const: usbdrd30_susp_clk
- const: usbdrd30_axius_clk
required:
- vdd10-supply
- if:
properties:
compatible:
contains:
const: samsung,exynos7870-dwusb3
then:
properties:
clocks:
minItems: 3
maxItems: 3
clock-names:
items:
- const: bus_early
- const: ref
- const: ctrl
- if:
properties:
compatible:
contains:
const: samsung,exynos850-dwusb3
then:
properties:
clocks:
minItems: 2
maxItems: 2
clock-names:
items:
- const: bus_early
- const: ref
required:
- vdd10-supply
- if:
properties:
compatible:
contains:
const: samsung,exynosautov920-dwusb3
then:
properties:
clocks:
minItems: 2
maxItems: 2
clock-names:
items:
- const: ref
- const: susp_clk
additionalProperties: false
examples:
- |
#include <dt-bindings/clock/exynos5420.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
usb@12000000 {
compatible = "samsung,exynos5250-dwusb3";
#address-cells = <1>;
#size-cells = <1>;
ranges = <0x0 0x12000000 0x10000>;
clocks = <&clock CLK_USBD300>;
clock-names = "usbdrd30";
vdd33-supply = <&ldo9_reg>;
vdd10-supply = <&ldo11_reg>;
usb@0 {
compatible = "snps,dwc3";
reg = <0x0 0x10000>;
interrupts = <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>;
phys = <&usbdrd_phy0 0>, <&usbdrd_phy0 1>;
phy-names = "usb2-phy", "usb3-phy";
snps,dis_u3_susphy_quirk;
};
};
@@ -0,0 +1,107 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/usb/samsung,exynos-usb2.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Samsung Exynos SoC USB 2.0 EHCI/OHCI Controller
maintainers:
- Krzysztof Kozlowski <krzk@kernel.org>
properties:
compatible:
enum:
- samsung,exynos4210-ehci
- samsung,exynos4210-ohci
clocks:
maxItems: 1
clock-names:
items:
- const: usbhost
interrupts:
maxItems: 1
phys:
minItems: 1
maxItems: 3
phy-names:
items:
enum: [host, hsic0, hsic1]
minItems: 1
maxItems: 3
reg:
maxItems: 1
samsung,vbus-gpio:
description:
Only for controller in EHCI mode, if present, specifies the GPIO that
needs to be pulled up for the bus to be powered.
required:
- compatible
- clocks
- clock-names
- interrupts
- phys
- phy-names
- reg
allOf:
- $ref: usb-hcd.yaml#
- if:
properties:
compatible:
contains:
const: samsung,exynos4210-ohci
then:
properties:
samsung,vbus-gpio: false
unevaluatedProperties: false
examples:
- |
#include <dt-bindings/clock/exynos5420.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
usb@12110000 {
compatible = "samsung,exynos4210-ehci";
reg = <0x12110000 0x100>;
interrupts = <GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clock CLK_USBH20>;
clock-names = "usbhost";
phys = <&usb2_phy 0>;
phy-names = "host";
#address-cells = <1>;
#size-cells = <0>;
hub@1 {
compatible = "usb0424,9514";
reg = <1>;
#address-cells = <1>;
#size-cells = <0>;
usbether@1 {
compatible = "usb0424,ec00";
reg = <1>;
local-mac-address = [00 00 00 00 00 00];
};
};
};
usb@12120000 {
compatible = "samsung,exynos4210-ohci";
reg = <0x12120000 0x100>;
interrupts = <GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clock CLK_USBH20>;
clock-names = "usbhost";
phys = <&usb2_phy 0>;
phy-names = "host";
};
@@ -0,0 +1,159 @@
# SPDX-License-Identifier: GPL-2.0
%YAML 1.2
---
$id: http://devicetree.org/schemas/usb/smsc,usb3503.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: SMSC USB3503 High-Speed Hub Controller
maintainers:
- Dongjin Kim <tobetter@gmail.com>
properties:
compatible:
enum:
- smsc,usb3503
- smsc,usb3503a
- smsc,usb3803
reg:
maxItems: 1
connect-gpios:
maxItems: 1
description: >
GPIO for connect
intn-gpios:
maxItems: 1
description: >
GPIO for interrupt
reset-gpios:
maxItems: 1
description: >
GPIO for reset
bypass-gpios:
maxItems: 1
description: >
GPIO for bypass.
Control signal to select between HUB MODE and BYPASS MODE.
disabled-ports:
$ref: /schemas/types.yaml#/definitions/uint32-array
minItems: 1
maxItems: 3
items:
minimum: 1
maximum: 3
description: >
Specifies the ports unused using their port number. Do not describe this
property if all ports have to be enabled.
initial-mode:
$ref: /schemas/types.yaml#/definitions/uint32
description: >
Specifies initial mode. 1 for Hub mode, 2 for standby mode and 3 for bypass mode.
In bypass mode the downstream port 3 is connected to the upstream port with low
switch resistance R_on.
clocks:
maxItems: 1
description: >
Clock used for driving REFCLK signal. If not provided the driver assumes
that clock signal is always available, its rate is specified by REF_SEL
pins and a value from the primary reference clock frequencies table is
used.
clock-names:
const: refclk
refclk-frequency:
$ref: /schemas/types.yaml#/definitions/uint32
description: >
Frequency of the REFCLK signal as defined by REF_SEL pins. If not
provided, driver will not set rate of the REFCLK signal and assume that a
value from the primary reference clock frequencies table is used.
required:
- compatible
allOf:
- if:
not:
properties:
compatible:
enum:
- smsc,usb3803
then:
properties:
bypass-gpios: false
- if:
required:
- bypass-gpios
then:
properties:
initial-mode:
enum: [1, 2, 3]
else:
properties:
initial-mode:
enum: [1, 2]
additionalProperties: false
examples:
- |
i2c {
#address-cells = <1>;
#size-cells = <0>;
usb-hub@8 {
compatible = "smsc,usb3503";
reg = <0x08>;
connect-gpios = <&gpx3 0 1>;
disabled-ports = <2 3>;
intn-gpios = <&gpx3 4 1>;
reset-gpios = <&gpx3 5 1>;
initial-mode = <1>;
clocks = <&clks 80>;
clock-names = "refclk";
};
};
- |
i2c {
#address-cells = <1>;
#size-cells = <0>;
usb-hub@8 {
compatible = "smsc,usb3803";
reg = <0x08>;
connect-gpios = <&gpx3 0 1>;
disabled-ports = <2 3>;
intn-gpios = <&gpx3 4 1>;
reset-gpios = <&gpx3 5 1>;
bypass-gpios = <&gpx3 6 1>;
initial-mode = <3>;
clocks = <&clks 80>;
clock-names = "refclk";
};
};
- |
#include <dt-bindings/gpio/gpio.h>
usb-hub {
/* I2C is not connected */
compatible = "smsc,usb3503";
initial-mode = <1>; /* initialize in HUB mode */
disabled-ports = <1>;
intn-gpios = <&pio 7 5 GPIO_ACTIVE_HIGH>; /* PH5 */
reset-gpios = <&pio 4 16 GPIO_ACTIVE_LOW>; /* PE16 */
connect-gpios = <&pio 4 17 GPIO_ACTIVE_HIGH>; /* PE17 */
refclk-frequency = <19200000>;
};
...

Some files were not shown because too many files have changed in this diff Show More