USB / Thunderbolt changes for 7.0-rc1

Here is the "big" set of USB and Thunderbolt driver updates for 7.0-rc1.
 Overall more lines were removed than added, thanks to dropping the
 obsolete isp1362 USB host controller driver, always a nice change.
 
 Other than that, nothing major happening here, highlights are:
   - lots of dwc3 driver updates and new hardware support added
   - usb gadget function driver updates
   - usb phy driver updates
   - typec driver updates and additions
   - USB rust binding updates for syntax and formatting changes
   - more usb serial device ids added
   - other smaller USB core and driver updates and additions
 
 All of these have been in linux-next for a long time, with no reported
 problems.
 
 Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
 -----BEGIN PGP SIGNATURE-----
 
 iG0EABECAC0WIQT0tgzFv3jCIUoxPcsxR9QN2y37KQUCaZR0Sw8cZ3JlZ0Brcm9h
 aC5jb20ACgkQMUfUDdst+ylcCgCfUyUFi0UOMPRyrU/fo5nyeWomgvsAnRst3nva
 y7BvYwC2L4FIP23snrTM
 =8S4Q
 -----END PGP SIGNATURE-----

Merge tag 'usb-7.0-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb

Pull USB / Thunderbolt updates from Greg KH:
 "Here is the "big" set of USB and Thunderbolt driver updates for
  7.0-rc1. Overall more lines were removed than added, thanks to
  dropping the obsolete isp1362 USB host controller driver, always a
  nice change.

  Other than that, nothing major happening here, highlights are:

   - lots of dwc3 driver updates and new hardware support added

   - usb gadget function driver updates

   - usb phy driver updates

   - typec driver updates and additions

   - USB rust binding updates for syntax and formatting changes

   - more usb serial device ids added

   - other smaller USB core and driver updates and additions

  All of these have been in linux-next for a long time, with no reported
  problems"

* tag 'usb-7.0-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb: (77 commits)
  usb: typec: ucsi: Add Thunderbolt alternate mode support
  usb: typec: hd3ss3220: Check if regulator needs to be switched
  usb: phy: tegra: parametrize PORTSC1 register offset
  usb: phy: tegra: parametrize HSIC PTS value
  usb: phy: tegra: return error value from utmi_wait_register
  usb: phy: tegra: cosmetic fixes
  dt-bindings: usb: renesas,usbhs: Add RZ/G3E SoC support
  usb: dwc2: fix resume failure if dr_mode is host
  usb: cdns3: fix role switching during resume
  usb: dwc3: gadget: Move vbus draw to workqueue context
  USB: serial: option: add Telit FN920C04 RNDIS compositions
  usb: dwc3: Log dwc3 address in traces
  usb: gadget: tegra-xudc: Add handling for BLCG_COREPLL_PWRDN
  usb: phy: tegra: add HSIC support
  usb: phy: tegra: use phy type directly
  usb: typec: ucsi: Enforce mode selection for cros_ec_ucsi
  usb: typec: ucsi: Support mode selection to activate altmodes
  usb: typec: Introduce mode_selection bit
  usb: typec: Implement mode selection
  usb: typec: Expose alternate mode priority via sysfs
  ...
This commit is contained in:
Linus Torvalds 2026-02-17 09:36:43 -08:00
commit 17f8d20093
110 changed files with 3494 additions and 4594 deletions

View file

@ -4,11 +4,12 @@ KernelVersion: 3.19
Description:
The attributes:
========== ====================================
index index value for the USB MIDI adapter
id ID string for the USB MIDI adapter
buflen MIDI buffer length
qlen USB read request queue length
in_ports number of MIDI input ports
out_ports number of MIDI output ports
========== ====================================
================ ====================================
index index value for the USB MIDI adapter
id ID string for the USB MIDI adapter
buflen MIDI buffer length
qlen USB read request queue length
in_ports number of MIDI input ports
out_ports number of MIDI output ports
interface_string USB AudioControl interface string
================ ====================================

View file

@ -85,3 +85,45 @@ Description:
up to 5000. The default value is 64 ms.
This polling interval is used while DbC is enabled but has no
active data transfers.
What: /sys/bus/pci/drivers/xhci_hcd/.../dbc_serial
Date: January 2026
Contact: Łukasz Bartosik <ukaszb@chromium.org>
Description:
The dbc_serial attribute allows to change the serial number
string descriptor presented by the debug device when a host
requests a string descriptor with iSerialNumber index.
Index is found in the iSerialNumber field in the device
descriptor.
Value can only be changed while debug capability (DbC) is in
disabled state to prevent USB device descriptor change while
connected to a USB host.
The default value is "0001".
The field length can be from 1 to 126 characters.
What: /sys/bus/pci/drivers/xhci_hcd/.../dbc_product
Date: January 2026
Contact: Łukasz Bartosik <ukaszb@chromium.org>
Description:
The dbc_product attribute allows to change the product string
descriptor presented by the debug device when a host requests
a string descriptor with iProduct index.
Index is found in the iProduct field in the device descriptor.
Value can only be changed while debug capability (DbC) is in
disabled state to prevent USB device descriptor change while
connected to a USB host.
The default value is "Linux USB Debug Target".
The field length can be from 1 to 126 characters.
What: /sys/bus/pci/drivers/xhci_hcd/.../dbc_manufacturer
Date: January 2026
Contact: Łukasz Bartosik <ukaszb@chromium.org>
Description:
The dbc_manufacturer attribute allows to change the manufacturer
string descriptor presented by the debug device when a host
requests a string descriptor with iManufacturer index.
Value can only be changed while debug capability (DbC) is in
disabled state to prevent USB device descriptor change while
connected to a USB host.
The default value is "Linux Foundation".
The field length can be from 1 to 126 characters.

View file

@ -162,6 +162,17 @@ Description: Lists the supported USB Modes. The default USB mode that is used
- usb3 (USB 3.2)
- usb4 (USB4)
What: /sys/class/typec/<port>/<alt-mode>/priority
Date: July 2025
Contact: Andrei Kuchynski <akuchynski@chromium.org>
Description:
Displays and allows setting the priority for a specific alternate mode.
The priority is an integer in the range 0-255. A lower numerical value
indicates a higher priority (0 is the highest).
If the new value is already in use by another mode, the priority of the
conflicting mode and any subsequent modes will be incremented until they
are all unique.
USB Type-C partner devices (eg. /sys/class/typec/port0-partner/)
What: /sys/class/typec/<port>-partner/accessory_mode

View file

@ -370,7 +370,7 @@ is built-in to the kernel image, there is no need to do anything.
The driver will create one virtual ethernet interface per Thunderbolt
port which are named like ``thunderbolt0`` and so on. From this point
you can either use standard userspace tools like ``ifconfig`` to
you can either use standard userspace tools like ``ip`` to
configure the interface or let your GUI handle it automatically.
Forcing power

View file

@ -17,8 +17,8 @@ description: |+
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 Virtual Hub supports 7 downstream
devices and 21 generic endpoints.
and 15 generic endpoints, while AST2600 and AST2700 Virtual Hub supports
7 downstream devices and 21 generic endpoints.
properties:
compatible:
@ -26,6 +26,7 @@ properties:
- aspeed,ast2400-usb-vhub
- aspeed,ast2500-usb-vhub
- aspeed,ast2600-usb-vhub
- aspeed,ast2700-usb-vhub
reg:
maxItems: 1
@ -33,6 +34,9 @@ properties:
clocks:
maxItems: 1
resets:
maxItems: 1
interrupts:
maxItems: 1
@ -107,6 +111,20 @@ required:
- 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:

View file

@ -93,6 +93,8 @@ properties:
minItems: 1
maxItems: 2
dma-coherent: true
interrupts:
maxItems: 1

View file

@ -64,6 +64,8 @@ properties:
reg:
maxItems: 1
dma-coherent: true
interrupts:
maxItems: 1

View file

@ -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>;
};
};
...

View file

@ -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";
};

View file

@ -27,6 +27,7 @@ properties:
- 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

View file

@ -0,0 +1,89 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/usb/socionext,uniphier-dwc3.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Socionext Uniphier SuperSpeed DWC3 USB SoC controller
maintainers:
- Kunihiko Hayashi <hayashi.kunihiko@socionext.com>
- Masami Hiramatsu <mhiramat@kernel.org>
select:
properties:
compatible:
contains:
const: socionext,uniphier-dwc3
required:
- compatible
properties:
compatible:
items:
- const: socionext,uniphier-dwc3
- const: snps,dwc3
reg:
maxItems: 1
interrupts:
minItems: 1
items:
- description: Host or single combined interrupt
- description: Peripheral interrupt
interrupt-names:
minItems: 1
items:
- enum:
- dwc_usb3
- host
- const: peripheral
clocks:
maxItems: 3
clock-names:
items:
- const: ref
- const: bus_early
- const: suspend
phys:
description: 1 to 4 HighSpeed PHYs followed by 1 or 2 SuperSpeed PHYs
minItems: 1
maxItems: 6
resets:
maxItems: 1
required:
- compatible
- reg
- interrupts
- clocks
- clock-names
- phys
unevaluatedProperties: false
allOf:
- $ref: snps,dwc3.yaml#
examples:
- |
#include <dt-bindings/interrupt-controller/arm-gic.h>
usb@65a00000 {
compatible = "socionext,uniphier-dwc3", "snps,dwc3";
reg = <0x65a00000 0xcd00>;
interrupt-names = "dwc_usb3";
interrupts = <GIC_SPI 134 IRQ_TYPE_LEVEL_HIGH>;
clock-names = "ref", "bus_early", "suspend";
clocks = <&sys_clk 12>, <&sys_clk 12>, <&sys_clk 12>;
resets = <&usb0_rst 15>;
phys = <&usb0_hsphy0>, <&usb0_hsphy1>,
<&usb0_ssphy0>, <&usb0_ssphy1>;
dr_mode = "host";
};

View file

@ -0,0 +1,65 @@
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/usb/wch,ch334.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: WCH CH334/CH335 USB 2.0 Hub Controller
maintainers:
- Chaoyi Chen <kernel@airkyi.com>
allOf:
- $ref: usb-hub.yaml#
properties:
compatible:
enum:
- usb1a86,8091
reg: true
reset-gpios:
description: GPIO controlling the RESET# pin.
vdd33-supply:
description:
The regulator that provides 3.3V core power to the hub.
v5-supply:
description:
The regulator that provides 3.3V or 5V 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
additionalProperties: false
examples:
- |
#include <dt-bindings/gpio/gpio.h>
usb {
#address-cells = <1>;
#size-cells = <0>;
hub: hub@1 {
compatible = "usb1a86,8091";
reg = <1>;
reset-gpios = <&gpio0 2 GPIO_ACTIVE_LOW>;
v5-supply = <&vcc_3v3>;
vdd33-supply = <&vcc_3v3>;
};
};

View file

@ -368,14 +368,15 @@ Function-specific configfs interface
The function name to use when creating the function directory is "midi".
The MIDI function provides these attributes in its function directory:
=============== ====================================
buflen MIDI buffer length
id ID string for the USB MIDI adapter
in_ports number of MIDI input ports
index index value for the USB MIDI adapter
out_ports number of MIDI output ports
qlen USB read request queue length
=============== ====================================
================ ====================================
buflen MIDI buffer length
id ID string for the USB MIDI adapter
in_ports number of MIDI input ports
index index value for the USB MIDI adapter
out_ports number of MIDI output ports
qlen USB read request queue length
interface_string USB AudioControl interface string
================ ====================================
Testing the MIDI function
-------------------------
@ -686,6 +687,7 @@ The SOURCESINK function provides these attributes in its function directory:
isoc_mult 0..2 (hs/ss only)
isoc_maxburst 0..15 (ss only)
bulk_buflen buffer length
bulk_maxburst 0..15 (ss only)
bulk_qlen depth of queue for bulk
iso_qlen depth of queue for iso
=============== ==================================