Hi, On 10/28/26 7:45 PM, Anders Roxell wrote:
Hi,This is part two of two. It applies on top of part one [1], which resets the DWC3 driver and imports it up to Linux v6.16. Part one alone breaks the build for every board that enables DWC3. This part adds back the U-Boot glue, the XHCI and UDC updates and the build fixes, so the tree builds and the gadget works again. It builds on Jerome's work [2]. The two parts have to go in together. Part one changed too this time, so I resend both as v10. The resynced epautoconf matches endpoints on their caps field instead of on their name. Five UDC drivers never filled that in, so each one gets a patch next to its other fixup: at91_udc, atmel_usba_udc, ci_udc, musb-new and mtu3. With those and dwc2, every UDC driver in the tree sets caps. Build tested one board per driver: every DWC3 glue layer in the tree, dwc3 on riscv (spacemit_k1), dwc2 with and without DM_USB_GADGET, at91_udc, atmel_usba_udc, ci_udc, musb-new, mtu3 and am335x_evm. 19 boards, no warnings. Tested on hardware, per vendor: - AMD/Xilinx: Love tested and sent a Tested-by. - TI: DFU and ums on BeagleBoard-X15 (me), and on AM62p and BeaglePlay (Anshul). - NXP: ci_udc with ums on an i.MX93 board (me). - Amlogic: gadget and host on Khadas VIM3 (Mattijs). - Rockchip: host on RK3588 Tiger and RK3399 Puma (Quentin). The rest is build tested only. Two things are still open. Anshul sees a single "unknown endpoint event 0" line on AM62p during enumeration. Siddharth ran mainline with a debug print and did not see it there. I asked for the raw event value with this series. No answer yet. On RK3588 Tiger, Quentin got "WARN endpoint is halted" and a failed usb write on one port. The resynced core clears SUSPHY when it puts a DRD controller in host mode, and nothing sets it again. The last patch fixes that. It is not tested on that board, so I do not know yet if this was the cause. The branch has both parts [3]. [1] part one, subject: [PATCH v10 00/63] usb: dwc3: part 1, reset and import from Linux v6.16 [2] Jerome's adaptation work: https://lore.kernel.org/all/[email protected]/ [3] https://github.com/roxell/u-boot/tree/usb_dwc3_sync_v10 [4] v9 part two: https://lore.kernel.org/u-boot/[email protected]/ v9 -> v10: - Rebased on 8649a54d301a. - dm helpers: reset_control_*() moved to include/reset.h and call reset_assert() and reset_deassert(). Kept Mattijs' Reviewed-by. (Marek) - New patch: sierra and torrent use the reset.h helpers. Only build tested. (Marek) - usb_phy helpers: x -> phy. (Marek) - "usb: dwc3: make the core driver build in U-Boot" is split in four. The first only deletes, the second adds back the old U-Boot functions unchanged, and the third has the real changes. (Marek) - Dropped the samsung usb phy patch, since part one keeps the file now. (Marek) - udc-core: udc_bind_to_driver() is after the async callback helpers, so no forward declaration. (Marek) - am62 glue: check dev_remap_addr_index() for NULL again. The rebase lost David's fix in 83abf9120071 without a conflict. - New patch last: enable SUSPHY again after xhci is registered. Found while looking at Quentin's RK3588 Tiger report. - am335x_evm SPL fits again, CI passes on v10. Older changes are listed in v9 [4]. Cheers, Anders Anders Roxell (30): x86: asm: io.h: add rmb() and wmb() dm: add helpers needed by the resynced DWC3 code phy: cadence: use reset_control_assert() from reset.h usb: phy: add the usb_phy helpers needed by the resynced DWC3 code usb: gadget: adapt the gadget API after the resync usb: gadget: udc: make udc-core build in U-Boot usb: dwc3: core: remove the code U-Boot does not use usb: dwc3: core: bring back the U-Boot entry points usb: dwc3: core: adapt to the U-Boot APIs usb: dwc3: adapt io.h, the Makefile and the TI glue usb: dwc3: make gadget and ep0 build in U-Boot usb: gadget: udc: enable async callbacks on bind usb: dwc3: ep0: flush and invalidate cache around ep0 transfers usb: dwc3: gadget: flush and invalidate cache around transfers usb: dwc3: make the am62 glue build in U-Boot usb: gadget: ci_udc: move to the udc-core registration usb: gadget: ci_udc: set endpoint capabilities usb: gadget: dwc2_udc_otg: fix up after the resync usb: gadget: fix up the function drivers after the resync usb: gadget: fix up the last UDC drivers after the resync usb: gadget: atmel_usba_udc: set endpoint capabilities usb: gadget: at91_udc: register with udc-core usb: gadget: at91_udc: set endpoint capabilities usb: musb-new: fix up after the resync usb: musb-new: set endpoint capabilities usb: mtu3: fix up after the resync usb: mtu3: set endpoint capabilities usb: host: xhci: fix up after the resync usb: cdns3: fix up after the resync usb: dwc3: enable SUSPHY again after xhci is registered arch/x86/include/asm/io.h | 2 + drivers/phy/cadence/phy-cadence-sierra.c | 18 - drivers/phy/cadence/phy-cadence-torrent.c | 2 - drivers/usb/cdns3/ep0.c | 8 +- drivers/usb/dwc3/Makefile | 16 +- drivers/usb/dwc3/core.c | 1762 +++++---------------- drivers/usb/dwc3/core.h | 41 +- drivers/usb/dwc3/dwc3-am62.c | 424 +---- drivers/usb/dwc3/dwc3-generic.c | 8 +- drivers/usb/dwc3/dwc3-layerscape.c | 8 +- drivers/usb/dwc3/dwc3-omap.c | 2 - drivers/usb/dwc3/ep0.c | 117 +- drivers/usb/dwc3/gadget.c | 724 ++------- drivers/usb/dwc3/gadget.h | 4 +- drivers/usb/dwc3/io.h | 36 +- drivers/usb/dwc3/ti_usb_phy.c | 2 - drivers/usb/gadget/at91_udc.c | 83 +- drivers/usb/gadget/atmel_usba_udc.c | 114 +- drivers/usb/gadget/ci_udc.c | 86 +- drivers/usb/gadget/composite.c | 2 +- drivers/usb/gadget/dwc2_udc_otg.c | 86 +- drivers/usb/gadget/epautoconf.c | 2 - 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 | 931 ++--------- drivers/usb/host/xhci-dwc3.c | 4 +- drivers/usb/mtu3/mtu3_gadget.c | 10 + drivers/usb/mtu3/mtu3_gadget_ep0.c | 16 +- drivers/usb/musb-new/musb_gadget.c | 21 +- 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 | 51 + include/linux/compat.h | 2 + include/linux/usb/ch9.h | 25 +- include/linux/usb/gadget.h | 529 ++----- include/linux/usb/phy.h | 57 + include/reset.h | 16 + 44 files changed, 1354 insertions(+), 4030 deletions(-)
Tested on AMD/Xilinx ZynqMP, Versal, Versal-Net, and Versal Gen 2 boards. No issues observed.
Tested-by: Love Kumar <[email protected]> Regards, Love Kumar
