[PATCH v4 00/64] drivers: usb: dwc3: sync code with Linux v6.16
Mattijs Korpershoek
mkorpershoek at kernel.org
Tue Jun 30 11:36:59 CEST 2026
Hi Jens,
Thank you for the series.
This is a lot of work.
On Mon, Jun 29, 2026 at 10:43, Jens Wiklander <jens.wiklander at linaro.org> wrote:
> Hi,
>
> This is a follow up on my last two patchsets [1] [2], where the latter only
> with a small change in addition to posting all the patches.
>
> 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. 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).
> 3. U-Boot Adaptation: The final commits (based on Jerome's original work [3])
> re-introduce the necessary glue code, XHCI/UDC updates, and build fixes
> required for U-Boot integration.
>
> Note that this is compile-tested only. The CI pipeline on source.denx.de
> was used as an OK/NOK indicator [4].
>
> These patches are also available at [5].
I've tried this out on the Khadas VIM3 board using
khadas-vim3_android_defconfig and usb gadget (with fastboot) seems to
misbehave.
With the series applied, I see:
"""
U-Boot 2026.07-rc3-00064-g511db6941796 (Jun 30 2026 - 11:20:08 +0200) khadas-vim3
Model: Khadas VIM3
SoC: Amlogic Meson G12B (A311D) Revision 29:b (10:2)
DRAM: 2 GiB (total 3.8 GiB)
Core: 408 devices, 37 uclasses, devicetree: separate
MMC: mmc at ffe03000: 0, mmc at ffe05000: 1, mmc at ffe07000: 2
Loading Environment from MMC... MMC Device -1 not found
*** Warning - No MMC card found, using default environment
In: usbkbd,serial
Out: vidconsole,serial
Err: vidconsole,serial
Net: eth0: ethernet at ff3f0000
Hit any key to stop autoboot: 0
=> fastboot usb 0
failed to start <NULL>: -12
g_dnl_register: failed!, error: -12
exit not allowed from main input shell.
"""
With v2026.07-rc3, I see:
"""
U-Boot 2026.07-rc3 (Jun 30 2026 - 11:24:04 +0200) khadas-vim3
Model: Khadas VIM3
SoC: Amlogic Meson G12B (A311D) Revision 29:b (10:2)
DRAM: 2 GiB (total 3.8 GiB)
Core: 408 devices, 37 uclasses, devicetree: separate
MMC: mmc at ffe03000: 0, mmc at ffe05000: 1, mmc at ffe07000: 2
Loading Environment from MMC... MMC Device -1 not found
*** Warning - No MMC card found, using default environment
In: usbkbd,serial
Out: vidconsole,serial
Err: vidconsole,serial
Net: eth0: ethernet at ff3f0000
Hit any key to stop autoboot: 0
=> fastboot usb 0
crq->brequest:0x0
"""
The failure code path seems to go through:
g_dnl_register("usb_dnl_fastboot");
usb_composite_register(&g_dnl_driver);
usb_gadget_register_driver(&composite_driver);
usb_gadget_probe_driver(driver);
udc_bind_to_driver(udc, driver);
driver->bind(udc->gadget);
I don't know why it's happening but I wanted to give some feedback early
on.
I'll have a closer look.
Thanks,
Mattijs
>
> Thanks,
> Jens
>
> [1] https://lore.kernel.org/u-boot/20260507092843.358908-1-jens.wiklander@linaro.org/
> [2] https://lore.kernel.org/u-boot/20260624123025.GA3245275@rayden/
> [3] https://lore.kernel.org/all/20251121153812.2076440-1-jerome.forissier@linaro.org/
> [4] https://source.denx.de/u-boot/custodians/u-boot-tpm/-/pipelines/30524
> [5] https://github.com/jenswikl/u-boot-1/tree/poc/usb_dwc3_sync_v4
>
> v3 -> v4:
> - Restored obj-$(CONFIG_$(PHASE_)USB_DWC3_AM62) for dwc3-am62.o
>
> RFC v2 -> v3:
> - Rebased on v2026.07-rc3
> - Configured out a few prints in drivers/usb/gadget/udc/udc-core.c
> to make it build for am335x_evm_defconfig
> - Applied provided tags in [1]
> - Published as a branch
>
> 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
>
> Jerome Forissier (4):
> usb: host: re-import xhci-ext-caps.h from kernel v6.16
> usb: gadget: re-import epautoconf.c from kernel v6.16
> usb: udc: re-import udc-core.c from kernel v6.16
> usb: fix build after resync of DWC3 with kernel v6.16
>
> drivers/usb/cdns3/ep0.c | 8 +-
> drivers/usb/common/common.c | 23 +
> drivers/usb/dwc3/Makefile | 57 +-
> drivers/usb/dwc3/core.c | 1710 ++++++----
> drivers/usb/dwc3/core.h | 1060 ++++--
> drivers/usb/dwc3/debug.h | 432 +++
> drivers/usb/dwc3/dwc3-omap.c | 2 -
> drivers/usb/dwc3/ep0.c | 737 ++--
> drivers/usb/dwc3/gadget.c | 4256 ++++++++++++++++--------
> drivers/usb/dwc3/gadget.h | 112 +-
> 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 | 470 ---
> 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 | 1099 +++++-
> 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, 7591 insertions(+), 4175 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: 76d62273bc8a5dc126ed79ed0fb65e5a97359577
> --
> 2.43.0
More information about the U-Boot
mailing list