[RFC PATCH v2 00/64] drivers: usb: dwc3: sync code with Linux v6.16-rc7
Jens Wiklander
jens.wiklander at linaro.org
Thu May 7 11:27:07 CEST 2026
Hi,
This is a follow-up to Jerome's patchset [1], addressing previous feedback
regarding the monolithic nature of the driver update.
The DWC3 USB driver was forked from the Linux kernel v3.19-rc1 eleven years
ago by commit 85d5e7075f33 ("usb: dwc3: add dwc3 folder from linux kernel
to u-boot"). Since then, not many kernel changes have been ported back into
U-Boot.
This series synchronizes the DWC3 core with Linux v6.16-rc7. To provide
a clear audit trail and maintain bisectability, I have structured the
series as follows:
1. Restore to Baseline: The first commit reverts U-Boot-specific changes
to drivers/usb/dwc3 to return the directory to a clean v3.19-rc1 state.
2. Milestone Imports: A sequence of 50+ commits follows, each performing
a "snapshot" import of the drivers/usb/dwc3 directory for every major
kernel version (v3.19 through v6.16-rc7).
3. U-Boot Adaptation: The final commits (based on Jerome's original work)
re-introduce the necessary glue code, XHCI/UDC updates, and build fixes
required for U-Boot integration.
The final diff is identical to [1]. I decided to stick with that for now to
focus on the method of how we import or update the code.
Note that this is compile-tested only. The CI pipeline on source.denx.de
was used as an OK/NOK indicator [2].
The previous patchset was tested on xilinx_zynqmp_kria_defconfig and since
this diff is identical to the previous, it should still work on that
platform. With the help of a custom build script [3] and with an additional
patch [4], I could boot the Kria KV260 board and make it detect a USB SSD
plugged into one of its USB 3.0 ports. It certainly doesn't mean all
platforms using the DWC3 driver are still OK, but at least there is some
hope. If this breaks your platform I'd like to know, and if you can send a
fix it's even better.
I tried cherry-picking all the 1000+ patches in v3.19-rc1..v6.16-rc7. There
were a few conflicts, even when backing out the original U-Boot patches on
top of the original v3.19-rc1 import. However, the resulting state still
diverged significantly from [1].
Instead, I've imported each new kernel in a separate commit. That way it's
very clear which kernel patches are included. Since there aren't too many
patches for each kernel I'm listing the relevant commits in the U-Boot
commit message for easier reference. I did this with a script so it's easy
to make changes, if the approach is OK but we need to tune it. With this
approach it should be easy to tell if a Fixes patch for the kernel might
also be needed here.
Thanks,
Jens
[1] https://lore.kernel.org/all/20251121153812.2076440-1-jerome.forissier@linaro.org/
[2] https://source.denx.de/u-boot/custodians/u-boot-tpm/-/pipelines/30004
[3] https://source.denx.de/u-boot/u-boot-extras/-/raw/master/contrib/jforissier/zynqmp_kv260_build.sh
[4] https://gitlab.com/Linaro/trustedsubstrate/meta-ts/-/raw/master/meta-trustedsubstrate/recipes-bsp/u-boot/u-boot/zynqmp-kria-starter/0001-kv260-fix-usb.patch
RFC v1 -> RFC v2:
- Split the v1 ("usb: dwc3: re-import from kernel v6.16-rc7") into ("usb:
dwc3: restore to original v3.19-rc1 kernel import"), ("usb: dwc3: import
from kernel v3.19)..("usb: dwc3: import from kernel v6.16-rc7")
Jens Wiklander (60):
usb: dwc3: restore to original v3.19-rc1 kernel import
usb: dwc3: import from kernel v3.19
usb: dwc3: import from kernel v4.0
usb: dwc3: import from kernel v4.1
usb: dwc3: import from kernel v4.2
usb: dwc3: import from kernel v4.3
usb: dwc3: import from kernel v4.4
usb: dwc3: import from kernel v4.5
usb: dwc3: import from kernel v4.6
usb: dwc3: import from kernel v4.7
usb: dwc3: import from kernel v4.8
usb: dwc3: import from kernel v4.9
usb: dwc3: import from kernel v4.10
usb: dwc3: import from kernel v4.11
usb: dwc3: import from kernel v4.12
usb: dwc3: import from kernel v4.13
usb: dwc3: import from kernel v4.14
usb: dwc3: import from kernel v4.15
usb: dwc3: import from kernel v4.16
usb: dwc3: import from kernel v4.17
usb: dwc3: import from kernel v4.18
usb: dwc3: import from kernel v4.19
usb: dwc3: import from kernel v4.20
usb: dwc3: import from kernel v5.0
usb: dwc3: import from kernel v5.1
usb: dwc3: import from kernel v5.2
usb: dwc3: import from kernel v5.3
usb: dwc3: import from kernel v5.4
usb: dwc3: import from kernel v5.5
usb: dwc3: import from kernel v5.6
usb: dwc3: import from kernel v5.7
usb: dwc3: import from kernel v5.8
usb: dwc3: import from kernel v5.9
usb: dwc3: import from kernel v5.10
usb: dwc3: import from kernel v5.11
usb: dwc3: import from kernel v5.12
usb: dwc3: import from kernel v5.13
usb: dwc3: import from kernel v5.14
usb: dwc3: import from kernel v5.15
usb: dwc3: import from kernel v5.16
usb: dwc3: import from kernel v5.17
usb: dwc3: import from kernel v5.18
usb: dwc3: import from kernel v5.19
usb: dwc3: import from kernel v6.0
usb: dwc3: import from kernel v6.1
usb: dwc3: import from kernel v6.2
usb: dwc3: import from kernel v6.3
usb: dwc3: import from kernel v6.4
usb: dwc3: import from kernel v6.5
usb: dwc3: import from kernel v6.6
usb: dwc3: import from kernel v6.7
usb: dwc3: import from kernel v6.8
usb: dwc3: import from kernel v6.9
usb: dwc3: import from kernel v6.10
usb: dwc3: import from kernel v6.11
usb: dwc3: import from kernel v6.12
usb: dwc3: import from kernel v6.13
usb: dwc3: import from kernel v6.14
usb: dwc3: import from kernel v6.15
usb: dwc3: import from kernel v6.16-rc7
Jerome Forissier (4):
usb: host: re-import xhci-ext-caps.h from kernel v6.16-rc7
usb: gadget: re-import epautoconf.c from kernel v6.16-rc7
usb: udc: re-import udc-core.c from kernel v6.16-rc7
usb: fix build after resync of DWC3 with kernel v6.16-rc7
drivers/usb/cdns3/ep0.c | 8 +-
drivers/usb/common/common.c | 23 +
drivers/usb/dwc3/Makefile | 57 +-
drivers/usb/dwc3/core.c | 1780 ++++++----
drivers/usb/dwc3/core.h | 1120 +++++--
drivers/usb/dwc3/debug.h | 432 +++
drivers/usb/dwc3/dwc3-omap.c | 2 -
drivers/usb/dwc3/ep0.c | 737 +++--
drivers/usb/dwc3/gadget.c | 4152 ++++++++++++++++--------
drivers/usb/dwc3/gadget.h | 124 +-
drivers/usb/dwc3/glue.h | 36 +
drivers/usb/dwc3/io.h | 29 +-
drivers/usb/dwc3/linux-compat.h | 16 -
drivers/usb/dwc3/samsung_usb_phy.c | 77 -
drivers/usb/dwc3/ti_usb_phy.c | 2 -
drivers/usb/gadget/at91_udc.c | 46 -
drivers/usb/gadget/atmel_usba_udc.c | 102 +-
drivers/usb/gadget/ci_udc.c | 419 ---
drivers/usb/gadget/composite.c | 2 +-
drivers/usb/gadget/dwc2_udc_otg.c | 174 +-
drivers/usb/gadget/epautoconf.c | 289 +-
drivers/usb/gadget/ether.c | 21 +-
drivers/usb/gadget/f_acm.c | 20 +-
drivers/usb/gadget/f_fastboot.c | 10 +-
drivers/usb/gadget/f_mass_storage.c | 5 +-
drivers/usb/gadget/f_rockusb.c | 11 +-
drivers/usb/gadget/f_sdp.c | 12 +-
drivers/usb/gadget/f_thor.c | 19 +-
drivers/usb/gadget/udc/Makefile | 1 +
drivers/usb/gadget/udc/udc-core.c | 1096 ++++++-
drivers/usb/host/xhci-dwc3.c | 4 +-
drivers/usb/host/xhci-ext-caps.h | 158 +
drivers/usb/host/xhci-exynos5.c | 2 +-
drivers/usb/mtu3/mtu3_gadget_ep0.c | 16 +-
drivers/usb/musb-new/musb_gadget_ep0.c | 24 +-
drivers/usb/musb-new/musb_uboot.c | 39 -
include/dm/device_compat.h | 13 +
include/dm/read.h | 46 +
include/linux/compat.h | 15 +
include/linux/usb/ch9.h | 25 +-
include/linux/usb/gadget.h | 520 +--
include/linux/usb/otg.h | 10 +
include/linux/usb/phy.h | 56 +
43 files changed, 7659 insertions(+), 4091 deletions(-)
create mode 100644 drivers/usb/dwc3/debug.h
create mode 100644 drivers/usb/dwc3/glue.h
delete mode 100644 drivers/usb/dwc3/linux-compat.h
delete mode 100644 drivers/usb/dwc3/samsung_usb_phy.c
create mode 100644 drivers/usb/host/xhci-ext-caps.h
base-commit: 0f865ab5d68484b4dc1724809de1be06edc85df1
--
2.43.0
More information about the U-Boot
mailing list