Skip to content

Commit f5e9d31

Browse files
committed
Merge tag 'usb-6.19-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 6.19-rc1. Nothing major here, just lots of tiny updates for most of the common USB drivers. Included in here are: - more xhci driver updates and fixes - Thunderbolt driver cleanups - usb serial driver updates - typec driver updates - USB tracepoint additions - dwc3 driver updates, including support for Apple hardware - lots of other smaller driver updates and cleanups All of these have been in linux-next for a while with no reported issues" * tag 'usb-6.19-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb: (161 commits) usb: gadget: tegra-xudc: Always reinitialize data toggle when clear halt USB: serial: option: move Telit 0x10c7 composition in the right place USB: serial: option: add Telit Cinterion FE910C04 new compositions usb: typec: ucsi: fix use-after-free caused by uec->work usb: typec: ucsi: fix probe failure in gaokun_ucsi_probe() usb: dwc3: core: Remove redundant comment in core init usb: phy: Initialize struct usb_phy list_head USB: serial: option: add Foxconn T99W760 usb: usb-storage: No additional quirks need to be added to the EL-R12 optical drive. usb: typec: hd3ss3220: Enable VBUS based on ID pin state dt-bindings: usb: ti,hd3ss3220: Add support for VBUS based on ID state usb: typec: anx7411: add WQ_PERCPU to alloc_workqueue users USB: add WQ_PERCPU to alloc_workqueue users dt-bindings: usb: dwc3-xilinx: Describe the reset constraint for the versal platform drivers/usb/storage: use min() instead of min_t() usb: raw-gadget: cap raw_io transfer length to KMALLOC_MAX_SIZE usb: ohci-da8xx: remove unused platform data usb: gadget: functionfs: use dma_buf_unmap_attachment_unlocked() helper usb: uas: reduce time under spinlock usb: dwc3: eic7700: Add EIC7700 USB driver ...
2 parents edf602a + 2585973 commit f5e9d31

139 files changed

Lines changed: 2937 additions & 1241 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

Documentation/ABI/testing/sysfs-class-usb_power_delivery

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -254,3 +254,31 @@ Contact: Heikki Krogerus <heikki.krogerus@linux.intel.com>
254254
Description:
255255
The PPS Power Limited bit indicates whether or not the source
256256
supply will exceed the rated output power if requested.
257+
258+
Standard Power Range (SPR) Adjustable Voltage Supplies
259+
260+
What: /sys/class/usb_power_delivery/.../<capability>/<position>:spr_adjustable_voltage_supply
261+
Date: Oct 2025
262+
Contact: Badhri Jagan Sridharan <badhri@google.com>
263+
Description:
264+
Adjustable Voltage Supply (AVS) Augmented PDO (APDO).
265+
266+
What: /sys/class/usb_power_delivery/.../<capability>/<position>:spr_adjustable_voltage_supply/maximum_current_9V_to_15V
267+
Date: Oct 2025
268+
Contact: Badhri Jagan Sridharan <badhri@google.com>
269+
Description:
270+
Maximum Current for 9V to 15V range in milliamperes.
271+
272+
What: /sys/class/usb_power_delivery/.../<capability>/<position>:spr_adjustable_voltage_supply/maximum_current_15V_to_20V
273+
Date: Oct 2025
274+
Contact: Badhri Jagan Sridharan <badhri@google.com>
275+
Description:
276+
Maximum Current for greater than 15V till 20V range in
277+
milliamperes.
278+
279+
What: /sys/class/usb_power_delivery/.../<capability>/<position>:spr_adjustable_voltage_supply/peak_current
280+
Date: Oct 2025
281+
Contact: Badhri Jagan Sridharan <badhri@google.com>
282+
Description:
283+
This file shows the value of the Adjustable Voltage Supply Peak Current
284+
Capability field.

Documentation/admin-guide/thunderbolt.rst

Lines changed: 35 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -203,10 +203,10 @@ host controller or a device, it is important that the firmware can be
203203
upgraded to the latest where possible bugs in it have been fixed.
204204
Typically OEMs provide this firmware from their support site.
205205

206-
There is also a central site which has links where to download firmware
207-
for some machines:
208-
209-
`Thunderbolt Updates <https://thunderbolttechnology.net/updates>`_
206+
Currently, recommended method of updating firmware is through "fwupd" tool.
207+
It uses LVFS (Linux Vendor Firmware Service) portal by default to get the
208+
latest firmware from hardware vendors and updates connected devices if found
209+
compatible. For details refer to: https://github.com/fwupd/fwupd.
210210

211211
Before you upgrade firmware on a device, host or retimer, please make
212212
sure it is a suitable upgrade. Failing to do that may render the device
@@ -215,18 +215,40 @@ tools!
215215

216216
Host NVM upgrade on Apple Macs is not supported.
217217

218-
Once the NVM image has been downloaded, you need to plug in a
219-
Thunderbolt device so that the host controller appears. It does not
220-
matter which device is connected (unless you are upgrading NVM on a
221-
device - then you need to connect that particular device).
218+
Fwupd is installed by default. If you don't have it on your system, simply
219+
use your distro package manager to get it.
220+
221+
To see possible updates through fwupd, you need to plug in a Thunderbolt
222+
device so that the host controller appears. It does not matter which
223+
device is connected (unless you are upgrading NVM on a device - then you
224+
need to connect that particular device).
222225

223226
Note an OEM-specific method to power the controller up ("force power") may
224227
be available for your system in which case there is no need to plug in a
225228
Thunderbolt device.
226229

227-
After that we can write the firmware to the non-active parts of the NVM
228-
of the host or device. As an example here is how Intel NUC6i7KYK (Skull
229-
Canyon) Thunderbolt controller NVM is upgraded::
230+
Updating firmware using fwupd is straightforward - refer to official
231+
readme on fwupd github.
232+
233+
If firmware image is written successfully, the device shortly disappears.
234+
Once it comes back, the driver notices it and initiates a full power
235+
cycle. After a while device appears again and this time it should be
236+
fully functional.
237+
238+
Device of interest should display new version under "Current version"
239+
and "Update State: Success" in fwupd's interface.
240+
241+
Upgrading firmware manually
242+
---------------------------------------------------------------
243+
If possible, use fwupd to updated the firmware. However, if your device OEM
244+
has not uploaded the firmware to LVFS, but it is available for download
245+
from their side, you can use method below to directly upgrade the
246+
firmware.
247+
248+
Manual firmware update can be done with 'dd' tool. To update firmware
249+
using this method, you need to write it to the non-active parts of NVM
250+
of the host or device. Example on how to update Intel NUC6i7KYK
251+
(Skull Canyon) Thunderbolt controller NVM::
230252

231253
# dd if=KYK_TBT_FW_0018.bin of=/sys/bus/thunderbolt/devices/0-0/nvm_non_active0/nvmem
232254

@@ -235,10 +257,8 @@ upgrade process as follows::
235257

236258
# echo 1 > /sys/bus/thunderbolt/devices/0-0/nvm_authenticate
237259

238-
If no errors are returned, the host controller shortly disappears. Once
239-
it comes back the driver notices it and initiates a full power cycle.
240-
After a while the host controller appears again and this time it should
241-
be fully functional.
260+
If no errors are returned, device should behave as described in previous
261+
section.
242262

243263
We can verify that the new NVM firmware is active by running the following
244264
commands::
Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2+
%YAML 1.2
3+
---
4+
$id: http://devicetree.org/schemas/usb/apple,dwc3.yaml#
5+
$schema: http://devicetree.org/meta-schemas/core.yaml#
6+
7+
title: Apple Silicon DWC3 USB controller
8+
9+
maintainers:
10+
- Sven Peter <sven@kernel.org>
11+
12+
description:
13+
Apple Silicon SoCs use a Synopsys DesignWare DWC3 based controller for each of
14+
their Type-C ports.
15+
16+
allOf:
17+
- $ref: snps,dwc3-common.yaml#
18+
19+
properties:
20+
compatible:
21+
oneOf:
22+
- items:
23+
- enum:
24+
- apple,t6000-dwc3
25+
- apple,t6020-dwc3
26+
- apple,t8112-dwc3
27+
- const: apple,t8103-dwc3
28+
- const: apple,t8103-dwc3
29+
30+
reg:
31+
items:
32+
- description: Core DWC3 region
33+
- description: Apple-specific DWC3 region
34+
35+
reg-names:
36+
items:
37+
- const: dwc3-core
38+
- const: dwc3-apple
39+
40+
interrupts:
41+
maxItems: 1
42+
43+
iommus:
44+
maxItems: 2
45+
46+
resets:
47+
maxItems: 1
48+
49+
power-domains:
50+
maxItems: 1
51+
52+
required:
53+
- compatible
54+
- reg
55+
- reg-names
56+
- interrupts
57+
- iommus
58+
- resets
59+
- power-domains
60+
- usb-role-switch
61+
62+
unevaluatedProperties: false
63+
64+
examples:
65+
- |
66+
#include <dt-bindings/interrupt-controller/apple-aic.h>
67+
#include <dt-bindings/interrupt-controller/irq.h>
68+
69+
usb@82280000 {
70+
compatible = "apple,t8103-dwc3";
71+
reg = <0x82280000 0xcd00>, <0x8228cd00 0x3200>;
72+
reg-names = "dwc3-core", "dwc3-apple";
73+
interrupts = <AIC_IRQ 777 IRQ_TYPE_LEVEL_HIGH>;
74+
iommus = <&dwc3_0_dart_0 0>, <&dwc3_0_dart_1 1>;
75+
76+
power-domains = <&ps_atc0_usb>;
77+
resets = <&atcphy0>;
78+
79+
usb-role-switch;
80+
};

Documentation/devicetree/bindings/usb/dwc3-xilinx.yaml

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ properties:
4747
- const: ref_clk
4848

4949
resets:
50+
minItems: 1
5051
description:
5152
A list of phandles for resets listed in reset-names.
5253

@@ -56,6 +57,7 @@ properties:
5657
- description: USB APB reset
5758

5859
reset-names:
60+
minItems: 1
5961
items:
6062
- const: usb_crst
6163
- const: usb_hibrst
@@ -95,6 +97,26 @@ required:
9597
- resets
9698
- reset-names
9799

100+
allOf:
101+
- if:
102+
properties:
103+
compatible:
104+
contains:
105+
enum:
106+
- xlnx,versal-dwc3
107+
then:
108+
properties:
109+
resets:
110+
maxItems: 1
111+
reset-names:
112+
maxItems: 1
113+
else:
114+
properties:
115+
resets:
116+
minItems: 3
117+
reset-names:
118+
minItems: 3
119+
98120
additionalProperties: false
99121

100122
examples:
Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2+
%YAML 1.2
3+
---
4+
$id: http://devicetree.org/schemas/usb/eswin,eic7700-usb.yaml#
5+
$schema: http://devicetree.org/meta-schemas/core.yaml#
6+
7+
title: ESWIN EIC7700 SoC Usb Controller
8+
9+
maintainers:
10+
- Wei Yang <yangwei1@eswincomputing.com>
11+
- Senchuan Zhang <zhangsenchuan@eswincomputing.com>
12+
- Hang Cao <caohang@eswincomputing.com>
13+
14+
description:
15+
The Usb controller on EIC7700 SoC.
16+
17+
allOf:
18+
- $ref: snps,dwc3-common.yaml#
19+
20+
properties:
21+
compatible:
22+
const: eswin,eic7700-dwc3
23+
24+
reg:
25+
maxItems: 1
26+
27+
interrupts:
28+
maxItems: 1
29+
30+
interrupt-names:
31+
items:
32+
- const: peripheral
33+
34+
clocks:
35+
maxItems: 3
36+
37+
clock-names:
38+
items:
39+
- const: aclk
40+
- const: cfg
41+
- const: usb_en
42+
43+
resets:
44+
maxItems: 2
45+
46+
reset-names:
47+
items:
48+
- const: vaux
49+
- const: usb_rst
50+
51+
eswin,hsp-sp-csr:
52+
description:
53+
HSP CSR is to control and get status of different high-speed peripherals
54+
(such as Ethernet, USB, SATA, etc.) via register, which can tune
55+
board-level's parameters of PHY, etc.
56+
$ref: /schemas/types.yaml#/definitions/phandle-array
57+
items:
58+
- items:
59+
- description: phandle to HSP Register Controller hsp_sp_csr node.
60+
- description: USB bus register offset.
61+
- description: AXI low power register offset.
62+
63+
required:
64+
- compatible
65+
- reg
66+
- clocks
67+
- clock-names
68+
- interrupts
69+
- interrupt-names
70+
- resets
71+
- reset-names
72+
- eswin,hsp-sp-csr
73+
74+
unevaluatedProperties: false
75+
76+
examples:
77+
- |
78+
usb@50480000 {
79+
compatible = "eswin,eic7700-dwc3";
80+
reg = <0x50480000 0x10000>;
81+
clocks = <&clock 135>,
82+
<&clock 136>,
83+
<&hspcrg 18>;
84+
clock-names = "aclk", "cfg", "usb_en";
85+
interrupt-parent = <&plic>;
86+
interrupts = <85>;
87+
interrupt-names = "peripheral";
88+
resets = <&reset 84>, <&hspcrg 2>;
89+
reset-names = "vaux", "usb_rst";
90+
dr_mode = "peripheral";
91+
maximum-speed = "high-speed";
92+
phy_type = "utmi";
93+
eswin,hsp-sp-csr = <&hsp_sp_csr 0x800 0x818>;
94+
};

Documentation/devicetree/bindings/usb/fsl,ls1028a.yaml

Lines changed: 18 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -9,28 +9,31 @@ title: Freescale layerscape SuperSpeed DWC3 USB SoC controller
99
maintainers:
1010
- Frank Li <Frank.Li@nxp.com>
1111

12-
select:
13-
properties:
14-
compatible:
15-
contains:
16-
enum:
17-
- fsl,ls1028a-dwc3
18-
required:
19-
- compatible
20-
2112
properties:
2213
compatible:
23-
items:
24-
- enum:
25-
- fsl,ls1028a-dwc3
26-
- const: snps,dwc3
14+
oneOf:
15+
- items:
16+
- enum:
17+
- fsl,ls1012a-dwc3
18+
- fsl,ls1043a-dwc3
19+
- fsl,ls1046a-dwc3
20+
- fsl,ls1088a-dwc3
21+
- fsl,ls208xa-dwc3
22+
- fsl,lx2160a-dwc3
23+
- const: fsl,ls1028a-dwc3
24+
- const: fsl,ls1028a-dwc3
2725

2826
reg:
2927
maxItems: 1
3028

3129
interrupts:
3230
maxItems: 1
3331

32+
iommus:
33+
maxItems: 1
34+
35+
dma-coherent: true
36+
3437
unevaluatedProperties: false
3538

3639
required:
@@ -39,14 +42,14 @@ required:
3942
- interrupts
4043

4144
allOf:
42-
- $ref: snps,dwc3.yaml#
45+
- $ref: snps,dwc3-common.yaml#
4346

4447
examples:
4548
- |
4649
#include <dt-bindings/interrupt-controller/arm-gic.h>
4750
4851
usb@fe800000 {
49-
compatible = "fsl,ls1028a-dwc3", "snps,dwc3";
52+
compatible = "fsl,ls1028a-dwc3";
5053
reg = <0xfe800000 0x100000>;
5154
interrupts = <GIC_SPI 105 IRQ_TYPE_LEVEL_HIGH>;
5255
};

Documentation/devicetree/bindings/usb/fsl,usbmisc.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ properties:
3636
- fsl,imx8mm-usbmisc
3737
- fsl,imx8mn-usbmisc
3838
- fsl,imx8ulp-usbmisc
39+
- fsl,imx94-usbmisc
3940
- fsl,imx95-usbmisc
4041
- const: fsl,imx7d-usbmisc
4142
- const: fsl,imx6q-usbmisc

0 commit comments

Comments
 (0)