summaryrefslogtreecommitdiff
path: root/drivers/usb
AgeCommit message (Collapse)Author
2026-08-09usb: mtu3: add SPL supportCarlo Caione
MediaTek platforms may need the MTU3 controller before U-Boot proper is available, but the driver is currently selected and built only with the main U-Boot configuration symbols. Add an explicit SPL controller option with host and gadget modes. Make the driver build and its role checks phase-aware so each phase can select the MTU3 role it needs without coupling it to the U-Boot proper controller configuration. The upstream binding locates the xHCI child registers through the parent ranges property. Select SPL_OF_TRANSLATE for host mode so SPL can resolve that address before mapping it. Signed-off-by: Julien Masson <[email protected]> Signed-off-by: Carlo Caione <[email protected]> Reviewed-by: Marek Vasut <[email protected]>
2026-08-09usb: mtu3: support the upstream devicetree bindingCarlo Caione
The MTU3 glue driver expects a synthetic mediatek,ssusb child that combines the device and xHCI register windows. Upstream devicetrees instead put the device resources on the controller node and describe the xHCI window with a standard child node, so U-Boot cannot use an upstream topology. Switch to the upstream layout. The controller owns the shared resources and the device MAC, with the device register offsets relative to it as in Linux. The gadget role binds as a node-less internal device, while the host role binds to an enabled xHCI child and uses its own clocks, supplies and register window. dr_mode selects the role and defaults to otg, and the Kconfig choice constrains which role the build provides. The legacy child layout is rejected explicitly so its combined register window cannot be mistaken for the device MAC. Convert the in-tree MT8183 and MT8512 devicetrees in the same commit so neither platform is left without USB. MT8512 stays peripheral-only because its xHCI host interrupt is not documented and the mediatek,mtk-xhci binding requires it. Reviewed-by: Marek Vasut <[email protected]> Signed-off-by: Carlo Caione <[email protected]>
2026-08-02usb: mtu3: wait for TX FIFO to drain before disconnectCarlo Caione
Fastboot unregisters the USB gadget from the completion callback of its final OKAY response. MTU3 QMU can report that request complete while bytes remain in the endpoint TX FIFO. Disabling the USB function immediately can therefore disconnect the host before it receives the response. Before selecting the high-speed or SuperSpeed disconnect operation, poll the FIFO state of enabled IN endpoints that have no pending requests. Bound the wait to 1 ms. If a FIFO does not drain, reset its endpoint, force the disconnect, and propagate -ETIMEDOUT through the gadget pullup operation. Endpoints with pending requests are skipped so an ordinary disconnect does not wait for an active transfer. Fixes: e09b88cd083d ("usb: add MediaTek USB3 DRD driver") Signed-off-by: Vitor Sato Eschholz <[email protected]> Signed-off-by: Carlo Caione <[email protected]> Reviewed-by: Marek Vasut <[email protected]>
2026-07-28Merge tag 'u-boot-dfu-20260728' of ↵Tom Rini
https://git.u-boot-project.org/u-boot/custodians/u-boot-dfu u-boot-dfu-20260728 CI: https://git.u-boot-project.org/u-boot/custodians/u-boot-dfu/-/pipelines/769 Android: * avb: Update libavb to AOSP 1.3.0 * avb: Fix memory leak on mmc_part * bootmeth_android: Fix memory leaks for AvbOps and verify-data * bootmeth_android: Fix out-of-bounds access in bootconfig parsing USB Gadget: * cmd: ums: Set serial# on iSerial device descriptor * dwc2: Set maxpacket_limit and endpoint capabilities to prepare for udc core migration * ci_udc: Fix ep type in ep_enable() * ci_udc: Set usb request status to handle complete callback * ci_udc: Ensure dtds are inactive before completing request
2026-07-22usb: ci_udc: verify all dtds are inactive before completing requestJason He
According to device mode spec, the ACTIVE status field of dtds should be check to determine whether the transfers completed successfully. However, this is not implemented in handle_ep_complete. When two EPs are enabled and transferring, EPa requests with multiple dtds and EPb request with one dtd. Irq is triggred on EPb. The udc_irq handler finds both EPb's and EPa's ENDPTCOMPLETE=1 while not all of EPa's dtds have been completed. Because ACTIVE status is not checked, this case causes crash in ci_udc driver. Signed-off-by: Jason He <[email protected]> Signed-off-by: Ye Li <[email protected]> Link: https://patch.msgid.link/[email protected] Signed-off-by: Mattijs Korpershoek <[email protected]>
2026-07-22usb: ci_udc: Update usb request statusYe Li
usb request status is not set in ci_udc driver. However in ci_ep_dequeue, it checks the request status for executing complete callback, so upper layer is not able to free these enqueued requests when calling usb_ep_dequeue. Signed-off-by: Ye Li <[email protected]> Fixes: 26cc5129ee64 ("USB: gadaget: add Marvell controller support") Reviewed-by: Mattijs Korpershoek <[email protected]> Link: https://patch.msgid.link/[email protected] Signed-off-by: Mattijs Korpershoek <[email protected]>
2026-07-22usb: ci_udc: set correct ep type in ep_enable()Xu Yang
The Endpoint Type in ENDPTCTRL register should be correctly set according to endpoint descriptor, not fixed to bulk. Otherwise, unexpected behaviors may happen. Fixes: 26cc5129ee64 ("USB: gadaget: add Marvell controller support") Signed-off-by: Xu Yang <[email protected]> Signed-off-by: Ye Li <[email protected]> Reviewed-by: Mattijs Korpershoek <[email protected]> Link: https://patch.msgid.link/[email protected] Signed-off-by: Mattijs Korpershoek <[email protected]>
2026-07-22usb: gadget: dwc2: Set endpoint capabilities via .caps fieldMattijs Korpershoek
Endpoint capabilities can be described via the .caps field of struct usb_ep since commit 77dcbdf3c1ce ("usb: gadget: Add match_ep() op to usb_gadget_ops") In linux, the following commit introduces it: b86f33a3a371 ("usb: gadget: epautoconf: add endpoint capabilities flags verification") Linux's change also reworks the ep matching function by relying on these new capabilities instead of guessing based on the endpoint name. Prepare the dwc2 UDC driver for capability-based matching by adding the required capabilities for each endpoint. Acked-by: Ilias Apalodimas <[email protected]> Link: https://patch.msgid.link/[email protected] Signed-off-by: Mattijs Korpershoek <[email protected]>
2026-07-22usb: gadget: dwc2: Use usb_ep_set_maxpacket_limit() for fifo sizesMattijs Korpershoek
More recent versions of usb_ep_autoconfig() use the maxpacket_limit field from struct usb_ep. This field has been introduced in the linux kernel via commit e117e742d310 ("usb: gadget: add "maxpacket_limit" field to struct usb_ep") And has been ported to U-Boot via commit 747a0a5b387f ("usb: dwc3: gadget: make dwc3 gadget build in uboot") However, the dwc2 gadget driver was not converted to use usb_ep_set_maxpacket_limit(). This is harmless for now, but the driver will break once usb_ep_autoconfig() is updated to a more recent version. Set maxpacket_limit via the recommended helper function to prepare for a core gadget update. Acked-by: Ilias Apalodimas <[email protected]> Link: https://patch.msgid.link/[email protected] Signed-off-by: Mattijs Korpershoek <[email protected]>
2026-07-22cmd: ums: Set Device Descriptor iSerial based on serial# env variableMarek Vasut
The DFU code currently sets the content of "serial#" environment variable into Device Descriptor iSerial field. This is useful when there are multiple devices connected to the same host PC and they have to be told apart. Replicate the same behavior in the UMS code. Example without serial# set, which is the original behavior: " u-boot=> ums 0 mmc 1 UMS: LUN 0, dev mmc 1, hwpart 0, sector 0x0, count 0x1d5a000 $ dmesg -w ... usb 5-2.3.7: New USB device found, idVendor=0525, idProduct=a4a5, bcdDevice=7e.a7 usb 5-2.3.7: New USB device strings: Mfr=1, Product=2, SerialNumber=0 usb 5-2.3.7: Product: USB download gadget usb 5-2.3.7: Manufacturer: Vendor <------------------------------- NOT HERE usb-storage 5-2.3.7:1.0: USB Mass Storage device detected ... $ lsusb -vd 0525:a4a5 Bus 005 Device 051: ID 0525:a4a5 Netchip Technology, Inc. Linux-USB File-backed Storage Gadget Negotiated speed: High Speed (480Mbps) Device Descriptor: bLength 18 bDescriptorType 1 bcdUSB 2.00 bDeviceClass 0 [unknown] bDeviceSubClass 0 [unknown] bDeviceProtocol 0 bMaxPacketSize0 64 idVendor 0x0525 Netchip Technology, Inc. idProduct 0xa4a5 Linux-USB File-backed Storage Gadget bcdDevice 7e.a7 iManufacturer 1 Vendor iProduct 2 USB download gadget iSerial 0 <------------------------------- NOT HERE ... " Example with serial# set to 1234abcd, which is the optional new behavior: " u-boot=> setenv serial# 1234abcd <------------------------------ HERE u-boot=> ums 0 mmc 1 UMS: LUN 0, dev mmc 1, hwpart 0, sector 0x0, count 0x1d5a000 $ dmesg -w ... usb 5-2.3.7: New USB device found, idVendor=0525, idProduct=a4a5, bcdDevice=7e.a7 usb 5-2.3.7: New USB device strings: Mfr=1, Product=2, SerialNumber=3 usb 5-2.3.7: Product: USB download gadget usb 5-2.3.7: Manufacturer: Vendor usb 5-2.3.7: SerialNumber: 1234abcd <--------------------------- HERE usb-storage 5-2.3.7:1.0: USB Mass Storage device detected ... $ lsusb -vd 0525:a4a5 Bus 005 Device 052: ID 0525:a4a5 Netchip Technology, Inc. Linux-USB File-backed Storage Gadget Negotiated speed: High Speed (480Mbps) Device Descriptor: bLength 18 bDescriptorType 1 bcdUSB 2.00 bDeviceClass 0 [unknown] bDeviceSubClass 0 [unknown] bDeviceProtocol 0 bMaxPacketSize0 64 idVendor 0x0525 Netchip Technology, Inc. idProduct 0xa4a5 Linux-USB File-backed Storage Gadget bcdDevice 7e.a7 iManufacturer 1 Vendor iProduct 2 USB download gadget iSerial 3 1234abcd <-------------------------- HERE ... " Signed-off-by: Marek Vasut <[email protected]> Reviewed-by: Mattijs Korpershoek <[email protected]> Link: https://patch.msgid.link/[email protected] Signed-off-by: Mattijs Korpershoek <[email protected]>
2026-07-21usb: xhci-dwc3: Call xhci_deregister() before asserting resetBoon Khai Ng
Reorder the remove path to deregister the controller first (and return early on failure), then shut down PHY/clocks and finally assert reset. This prevents register reads/writes after reset and avoids undefined behavior. Signed-off-by: Boon Khai Ng <[email protected]> Reviewed-by: Marek Vasut <[email protected]>
2026-07-10treewide: Kconfig: use bool instead of tristateAnshul Dalal
U-Boot does not support modules, so having tristate options is useless. Therefore this patch does a blind replace of all tristate options to bool tree-wide. Signed-off-by: Anshul Dalal <[email protected]> Reviewed-by: Heiko Schocher <[email protected]> Reviewed-by: Quentin Schulz <[email protected]> Reviewed-by: Siddharth Vadapalli <[email protected]> Reviewed-by: Neha Malcom Francis <[email protected]> Reviewed-by: Romain Gantois <[email protected]> Reviewed-by: Simon Glass <[email protected]>
2026-06-26usb: gadget: f_mass_storage: Disable eps during disconnectMattijs Korpershoek
When trying two ums commands in a row, the second one no longer enumerates properly from the host. This happens since commit 59310d1ecb9f ("usb: gadget: introduce 'enabled' flag in struct usb_ep") causing usb_ep_enable() to return early when ep->enabled is already set. Gadget function drivers (such as f_fastboot or f_mass_storage) implement a disable() function which is called whenever we are done using the gadget. Because f_mass_storage driver does not disable the endpoints, ep->enabled will never be set to false again. This can be reproduced on the STM32MP157C-DK2 or the Khadas VIM3 boards. Add calls to usb_ep_disable() as done in linux [1] to fix this. [1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=9fff139aeb11186fd8e75860c959c86cb43ab2f6 Fixes: 59310d1ecb9f ("usb: gadget: introduce 'enabled' flag in struct usb_ep") Reported-by: Patrice Chotard <[email protected]> Reviewed-by: Patrice Chotard <[email protected]> Link: https://patch.msgid.link/[email protected] Signed-off-by: Mattijs Korpershoek <[email protected]>
2026-06-26usb: f_sdp: handle the spl load function failureYe Li
Current implementation does not check the return value of spl load function. If the spl load is failed, SPL may meet crash due to spl_image variable is not initialized. Add the failure check, so SPL can print and stop with error. Signed-off-by: Ye Li <[email protected]> Fixes: 2c72ead73874 ("usb: gadget: f_sdp: Allow SPL to load and boot FIT via SDP") Reviewed-by: Mattijs Korpershoek <[email protected]> Link: https://patch.msgid.link/[email protected] Signed-off-by: Mattijs Korpershoek <[email protected]>
2026-06-25Kconfig: usb: restyleJohan Jonker
Restyle all Kconfigs for "usb": Menu entries : no space left Menu attributes: 1 TAB Help text : 1 TAB + 2 spaces Replace '---help---' by 'help' Signed-off-by: Johan Jonker <[email protected]>
2026-06-24treewide: move bi_dram[] from bd to gdIlias Apalodimas
Currently, the bi_dram[] information is stored in the board info structure (bd). Because bd is only valid after reserve_board(), dram_init_banksize() must be called late in the initialization process. This limitation is problematic, as it forces us to rely on a variety of bespoke functions to determine board RAM, bank memory sizes, and other early setup requirements. By moving bi_dram[] into the global data (gd), we can run it earlier. This is particularly convenient since boards define their own dram_init_banksize() routines, which do not always rely on parsing Device Tree (DT) memory nodes. Additionally, U-Boot defaults to relocating to the top of the first memory bank. While boards currently use custom functions to override this behavior, having the DRAM bank information available earlier in gd makes relocating to a different bank trivial and standardizes the process. Reviewed-by: Anshul Dalal <[email protected]> Tested-by: Michal Simek <[email protected]> # Versal Gen 2 Vek385 Tested-by: Anshul Dalal <[email protected]> Reviewed-by: Simon Glass <[email protected]> Signed-off-by: Ilias Apalodimas <[email protected]> Tested-by: Christophe Leroy (CS GROUP) <[email protected]>
2026-06-22Merge tag 'v2026.07-rc5' into nextTom Rini
Prepare v2026.07-rc5
2026-06-18usb: tcpm: fix inverted poll condition in tcpm_pd_transmit()Peng Fan
The read_poll_timeout() macro breaks out of its loop when the condition evaluates to true. The current code uses "!tx_complete" as the condition, which means it exits immediately when tx_complete is false (i.e., transmission has NOT completed yet), rather than waiting for completion. Fix the condition to "tx_complete" so that the poll loop waits until the TCPC signals transmission success/failure/discard before proceeding. Without this fix, tcpm_pd_transmit() returns before the TCPC has finished transmitting, causing the PD state machine to proceed with stale tx_status values. Fixes: 1db4c0ac77e3 ("usb: tcpm: add core framework") Reviewed-by: Neil Armstrong <[email protected]> Signed-off-by: Peng Fan <[email protected]>
2026-06-15usb: gadget: atmel: use calloc() to allocate endpoint listZixun LI
malloc() doesn't zero out memory, leaving ep->ep.enabled uninitiated, which could make this flag falsely true. In next usb_ep_enable() call since this flag is true, ep->ops->enable() will be skipped. Then usb_ep_queue() will fail on uninitialized endpoint. Fixes: 59310d1ecb9f ("usb: gadget: introduce 'enabled' flag in struct usb_ep") Signed-off-by: Zixun LI <[email protected]> Reviewed-by: Marek Vasut <[email protected]> Reviewed-by: Mattijs Korpershoek <[email protected]> Link: https://patch.msgid.link/[email protected] Signed-off-by: Mattijs Korpershoek <[email protected]>
2026-06-10treewide: prefer __func__ over __FUNCTION__ and __PRETTY_FUNCTION__Aristo Chen
__FUNCTION__ and __PRETTY_FUNCTION__ are gcc extensions that predate the C99 __func__ identifier. scripts/checkpatch.pl emits a warning for any new use of __FUNCTION__ and recommends __func__ instead. In C (unlike C++) __PRETTY_FUNCTION__ is identical to __func__ because C function names do not carry signature information, so the distinction has no behavioural effect here. The majority of the tree already uses __func__, but a handful of older files in arch/, board/, boot/, drivers/, examples/ and include/ still carry the gcc spellings (55 occurrences of __FUNCTION__ across 19 files plus one __PRETTY_FUNCTION__ in drivers/usb/musb-new/omap2430.c). Convert them all to the C99 form so the tree is consistent and new patches in these areas do not have to follow an outdated local style. Ten "Unnecessary ftrace-like logging - prefer using ftrace" warnings remain on the printf("%s\n", __func__) and dbg("%s\n", __func__) function-entry traces in drivers/net/rtl8169.c (behind DEBUG_RTL8169* preprocessor guards) and drivers/usb/host/ohci-hcd.c. checkpatch matches the literal "%s\n", __func__ shape regardless of the wrapper, so silencing those warnings would require changing the debug message text or removing the traces entirely. Signed-off-by: Aristo Chen <[email protected]> Reviewed-by: Tom Rini <[email protected]>
2026-06-08Merge tag 'v2026.07-rc4' into nextTom Rini
Prepare v2026.07-rc4
2026-06-07usb: typos 'requird', 'current'Heinrich Schuchardt
%s/requird/required/ %s/current XHCI/currently XHCI/ Reviewed-by: Marek Vasut <[email protected]> Reviewed-by: Bin Meng <[email protected]> Signed-off-by: Heinrich Schuchardt <[email protected]>
2026-06-03usb: dwc3: generic: Staticize and constify driver opsMarek Vasut
Set the ops structure as static const. The structure is not accessible from outside of this driver and is not going to be modified at runtime. Signed-off-by: Marek Vasut <[email protected]> Reviewed-by: Mattijs Korpershoek <[email protected]>
2026-06-03usb: dwc3: sti: Staticize and constify driver opsMarek Vasut
Set the ops structure as static const. The structure is not accessible from outside of this driver and is not going to be modified at runtime. Signed-off-by: Marek Vasut <[email protected]> Reviewed-by: Mattijs Korpershoek <[email protected]>
2026-06-03usb: dwc3: am62: Staticize and constify driver opsMarek Vasut
Set the ops structure as static const. The structure is not accessible from outside of this driver and is not going to be modified at runtime. Signed-off-by: Marek Vasut <[email protected]> Reviewed-by: Mattijs Korpershoek <[email protected]>
2026-06-02usb: xhci-mvebu: Enable Armada 375 in XHCI driverTony Dinh
Add armada-375-xhci to the compatible list in XHCI MVEBU driver. Tested with WD MyCloud Gen2 NAS. Signed-off-by: Tony Dinh <[email protected]> Reviewed-by: Marek Vasut <[email protected]>
2026-05-20usb: gadget: atmel: do not disable endpoints in reset_all_endpoints()Zixun LI
Endpoints should not be disabled on bus reset inside UDC driver, otherwise a race condition will happen between gadget driver. Gadget driver will free the requests and disable endpoints in disconnect ops. Also remove outdated comment about it in usba_ep_disable(). Signed-off-by: Zixun LI <[email protected]> Reviewed-by: Mattijs Korpershoek <[email protected]> Fixes: 59310d1ecb9f ("usb: gadget: introduce 'enabled' flag in struct usb_ep") Link: https://patch.msgid.link/[email protected] [mkorpershoek: removed empty newline between Fixes: and sob] Signed-off-by: Mattijs Korpershoek <[email protected]>
2026-05-13usb: gadget: f_acm: Fix memory leak in acm_addFrancois Berder
If udc_device_get_by_index fails, the f_acm struct was not released. Free it before returning the error. Signed-off-by: Francois Berder <[email protected]> Reviewed-by: Marek Vasut <[email protected]> Reviewed-by: Mattijs Korpershoek <[email protected]> Link: https://patch.msgid.link/BESP194MB2805271AD5DBE47B322F8DC3DA3A2@BESP194MB2805.EURP194.PROD.OUTLOOK.COM Signed-off-by: Mattijs Korpershoek <[email protected]>
2026-05-09usb: dwc3: Fix crash on fastboot exit due to incorrect memory freeBalaji Selvanathan
The dwc3_free_one_event_buffer() function incorrectly called free() on event buffer structures allocated with devm_kzalloc(). This caused heap corruption and a synchronous abort when exiting fastboot mode via "fastboot continue". Device-managed memory is automatically freed when the device is removed, so manual deallocation causes the heap allocator to access corrupted metadata. Fixes: 884b10e86a05 ("usb: dwc3: core: fix memory leaks in event buffer cleanup") Signed-off-by: Balaji Selvanathan <[email protected]> Reviewed-by: Marek Vasut <[email protected]>
2026-05-09usb: Correct dependencies around USB_EMULTom Rini
The symbol USB_EMUL is how sandbox has access to USB. It's implementation however enforces a few other requirements. It must have SCSI enabled, and in turn that means it must have BLK enabled. Finally, we should not be using SANDBOX itself as a symbol to decide what to build or not build here, as SANDBOX is selected for COMPILE_TEST builds as well and so may not have enabled the sandbox specific USB support. Signed-off-by: Tom Rini <[email protected]> Reviewed-by: Marek Vasut <[email protected]>
2026-05-09usb: gadget: Correct dependencies for USB_RENESAS_USBHSTom Rini
The USB_RENESAS_USBHS functionality can only work with DM_USB_GADGET enabled, so express this dependency in Kconfig. Signed-off-by: Tom Rini <[email protected]> Reviewed-by: Marek Vasut <[email protected]>
2026-04-27Merge patch series "net: migrate NO_NET out of the networking stack choice"Tom Rini
Quentin Schulz <[email protected]> says: This migrates the net options away from the main Kconfig to net/Kconfig, rename the current NET option to NET_LEGACY to really highlight what it is and hopefully encourage more people to use lwIP, add a new NET menuconfig (but keep NO_NET as an alias to NET=n for now) which then allows us to replace all the "if legacy_stack || lwip_stack" checks with "if net_support" which is easier to read and maintain. The only doubt I have is wrt SYS_RX_ETH_BUFFER which seems to be needed for now even when no network is configured? Likely due to include/net-common.h with PKTBUFSRX? No change in behavior is intended. Only change in defconfig including other defconfigs where NO_NET=y or NET is not set, in which case NO_NET is not set or NET=y should be set in the top defconfig. Similar change required for config fragments. See commit log in patch adding NET menuconfig for details. This was tested based on 70fd0c3bb7c2 ("x86: there is no CONFIG_UBOOT_ROMSIZE_KB_12288"), from within the GitLab CI container trini/u-boot-gitlab-ci-runner:noble-20251013-23Jan2026 and set up similarly as in "build all platforms in a single job" GitLab CI job. #!/usr/bin/env bash set -o pipefail set -eux ARGS="-BvelPEWM --reproducible-builds --step 0" ./tools/buildman/buildman -o ${O} --force-build $ARGS -CE $* ./tools/buildman/buildman -o ${O} $ARGS -Ssd $* O=../build/u-boot/ ../u-boot.sh -b master^..b4/net-kconfig |& tee ../log.txt I can't really decipher the log.txt, but there's no line starting with + which would be an error according to tools/buildman/builder.py help text. Additionally, because I started the script with set -e set and because buildman has an exit code != 0 when it fails to build a board, and I have the summary printed (which is the second buildman call), I believe it means all builds passed. The summary is the following: aarch64: (for 537/537 boards) all +0.0 rodata +0.0 uniphier_v8 : all +1 rodata +1 u-boot: add: 0/0, grow: 1/0 bytes: 1/0 (1) function old new delta data_gz 10640 10641 +1 arm: (for 733/733 boards) all -0.0 rodata -0.0 uniphier_v7 : all -1 rodata -1 u-boot: add: 0/0, grow: 0/-1 bytes: 0/-1 (-1) function old new delta data_gz 11919 11918 -1 opos6uldev : all -3 rodata -3 u-boot: add: 0/0, grow: 0/-1 bytes: 0/-3 (-3) function old new delta data_gz 18778 18775 -3 uniphier_ld4_sld8: all -3 rodata -3 u-boot: add: 0/0, grow: 0/-1 bytes: 0/-3 (-3) function old new delta data_gz 11276 11273 -3 stemmy : all -20 rodata -20 u-boot: add: 0/0, grow: 0/-1 bytes: 0/-20 (-20) function old new delta data_gz 15783 15763 -20 As far as I could tell this data_gz is an automatically generated array when CONFIG_CMD_CONFIG is enabled. It is the compressed .config stored in binary form. Because I'm changing the name of symbols, replacing a menu with a menuconfig, additional text makes it to .config and the "# Networking" section in .config disappears. Here is the diff for the 5 defconfigs listed above, generated with: for f in build/*-m; do diff --unified=0 $f/.config $(dirname $f)/$(basename -a -s '-m' $f)/.config done (-m is the build directory for master, and without the suffix, it's the top commit of this series) """ --- build/opos6uldev-m/.config 2026-04-20 10:53:49.804528526 +0200 +++ build/opos6uldev/.config 2026-04-20 11:03:37.430242767 +0200 @@ -970,4 +969,0 @@ - -# -# Networking -# @@ -975,0 +972 @@ +CONFIG_NET_LEGACY=y --- build/stemmy-m/.config 2026-04-20 11:01:33.653698123 +0200 +++ build/stemmy/.config 2026-04-20 11:04:53.452577311 +0200 @@ -733,4 +732,0 @@ - -# -# Networking -# @@ -738,2 +733,0 @@ -# CONFIG_NET is not set -# CONFIG_NET_LWIP is not set --- build/uniphier_ld4_sld8-m/.config 2026-04-20 11:00:41.605469071 +0200 +++ build/uniphier_ld4_sld8/.config 2026-04-20 11:04:22.226439899 +0200 @@ -997,4 +996,0 @@ - -# -# Networking -# @@ -1002,0 +999 @@ +CONFIG_NET_LEGACY=y --- build/uniphier_v7-m/.config 2026-04-20 10:53:04.019307319 +0200 +++ build/uniphier_v7/.config 2026-04-20 11:03:01.688085486 +0200 @@ -1004,4 +1003,0 @@ - -# -# Networking -# @@ -1009,0 +1006 @@ +CONFIG_NET_LEGACY=y --- build/uniphier_v8-m/.config 2026-04-20 10:43:05.614441175 +0200 +++ build/uniphier_v8/.config 2026-04-20 10:41:03.214852130 +0200 @@ -875,4 +874,0 @@ - -# -# Networking -# @@ -880,0 +877 @@ +CONFIG_NET_LEGACY=y """ This is fine: - Networking menu doesn't exist anymore so "#\n# Networking\n#\n" won't be in .config anymore. - opos6uldev, uniphier_ld4_sld8, uniphier_v7 and uniphier_v8 all have (old) CONFIG_NET enabled, (new) CONFIG_NET will still be set but CONFIG_NET_LEGACY also needs to be defined now to reflect the stack choice (even if default), - stemmy has CONFIG_NO_NET set, which means CONFIG_NET and CONFIG_NET_LWIP are not reachable anymore hence why they don't need to be part of .config, GitLab CI was run on this series (well, not exactly, but it's only changes to the git logs that were made): https://source.denx.de/u-boot/contributors/qschulz/u-boot/-/pipelines/29849 It passes. Link: https://lore.kernel.org/r/[email protected]
2026-04-27simplify NET_LEGACY || NET_LWIP condition with NET conditionQuentin Schulz
Since the move to make NET a menuconfig and NO_NET a synonym of NET=n, when NET is enabled, NET_LEGACY || NET_LWIP is necessarily true, so let's simplify the various checks across the codebase. SPL_NET_LWIP doesn't exist but SPL_NET_LEGACY is an alias for SPL_NET so the proper symbol is still defined in SPL whenever needed. Signed-off-by: Quentin Schulz <[email protected]> Reviewed-by: Simon Glass <[email protected]> Reviewed-by: Peter Robinson <[email protected]> Reviewed-by: Tom Rini <[email protected]>
2026-04-27rename NET to NET_LEGACYQuentin Schulz
Highlight that NET really is the legacy networking stack by renaming the option to NET_LEGACY. This requires us to add an SPL_NET_LEGACY alias to SPL_NET as otherwise CONFIG_IS_ENABLED(NET_LEGACY) will not work for SPL. The "depends on !NET_LWIP" for SPL_NET clearly highlights that it is using the legacy networking app so this seems fine to do. This also has the benefit of removing potential confusion on NET being a specific networking stack instead of "any" network stack. Signed-off-by: Quentin Schulz <[email protected]> Acked-by: Ilias Apalodimas <[email protected]> Reviewed-by: Peter Robinson <[email protected]> Reviewed-by: Tom Rini <[email protected]>
2026-04-27Merge branch 'casey/qcom-main-13Apr2026' of ↵Tom Rini
https://source.denx.de/u-boot/custodians/u-boot-snapdragon Various Qualcomm additions this cycle: * USB superspeed support for 1 platform * Initial support for the Milos platform and the Fairphone Gen 6 (chainloaded from ABL) * Improved support for booting with OP-TEE on supported platforms * Initial basic power domain support Notably there is a generic change to the device core, missing power domains will no longer cause a device to fail probe and instead will just print a warning. This shouldn't affect any existing platforms.
2026-04-27drivers: usb: dwc3: Add delay after core soft resetBalaji Selvanathan
Add a 100 ms delay after clearing the core soft reset bit to ensure the DWC3 controller has sufficient time to complete its reset sequence before subsequent register accesses. Without this delay, USB initialization can fail on some Qualcomm platforms, particularly when using super-speed capable PHYs like the QMP USB3-DP Combo PHY on SC7280/QCM6490. Taken from Linux commit f88359e1588b ("usb: dwc3: core: Do core softreset when switch mode") Signed-off-by: Balaji Selvanathan <[email protected]> Reviewed-by: Varadarajan Narayanan <[email protected]> Link: https://patch.msgid.link/[email protected] Signed-off-by: Casey Connolly <[email protected]>
2026-04-26usb: gadget: rcar: Add support for RZ/G2L (R9A07G044)Michele Bisogno
The Renesas RZ/G2L (and RZ/G2LC) USBHS controller requires the CNEN bit in the SYSCFG register to be set for function operation. Additionally, its CFIFO is byte-addressable. Introduce a new renesas_usbhs_driver_param structure for the RZ/G2L SoC and link it via the udevice_id data pointer. Update usbhs_probe() to accept the udevice pointer to retrieve these parameters during initialization. This alignment follows the logic used in the Linux kernel renesas_usbhs driver. Reviewed-by: Marek Vasut <[email protected]> Signed-off-by: Michele Bisogno <[email protected]>
2026-04-26usb: gadget: rcar: Add support for reset controllerMichele Bisogno
Some Renesas SoCs, such as the RZ/G2L, require the USBHS core to be explicitly deasserted from reset before register access is possible. Update the OTG probe to handle a bulk reset controller. To maintain hardware stability, the reset is deasserted after clocks are enabled in probe(), and asserted before clocks are disabled in remove(). Update the error paths in probe to ensures clocks are disabled if the reset initialization fails. Reviewed-by: Marek Vasut <[email protected]> Signed-off-by: Michele Bisogno <[email protected]>
2026-04-26usb: gadget: rcar: Fix gadget registration lifecycle in removeMichele Bisogno
The driver currently fails to unregister the USB gadget when the device is removed or the driver is unbound. This leads to dangling pointers in the UDC core and potential memory corruption. Add a call to usb_del_gadget_udc() in the remove path to ensure a clean teardown of the gadget interface. Reviewed-by: Marek Vasut <[email protected]> Signed-off-by: Michele Bisogno <[email protected]>
2026-04-17usb: dwc3: core: fix memory leaks in event buffer cleanupGurumoorthy Santhakumar
In dwc3_free_one_event_buffer(), only the DMA buffer (evt->buf) was being freed via dma_free_coherent(), but the evt structure itself was never explicitly freed, causing a memory leak. In dwc3_free_event_buffers(), the ev_buffs pointer array allocated with memalign() was never freed after iterating and releasing all individual event buffers, causing another memory leak. Fix both leaks by freeing the evt struct in dwc3_free_one_event_buffer() and freeing dwc->ev_buffs in dwc3_free_event_buffers() after all entries have been released. Signed-off-by: Gurumoorthy Santhakumar <[email protected]> Reviewed-by: Marek Vasut <[email protected]> Reviewed-by: Mattijs Korpershoek <[email protected]>
2026-04-07global: Correct duplicate U_BOOT_DRIVER entry namesTom Rini
The U_BOOT_DRIVER macro creates a list of drivers used at link time, and all entries here must be unique. This in turn means that all entries in the code should also be unique in order to not lead to build failures later with unexpected build combinations. Typically, the problem we have here is when a driver is obviously based on another driver and didn't update this particular field and so while the name field reflects something unique the linker entry itself is not. In a few places this provides a more suitable string name as well, however. Reviewed-by: Marek Vasut <[email protected]> Reviewed-by: Svyatoslav Ryhel <[email protected]> # Tegra Reviewed-by: Peter Robinson <[email protected]> Reviewed-by: Heiko Schocher <[email protected]> Reviewed-by: Simon Glass <[email protected]> Signed-off-by: Tom Rini <[email protected]>
2026-04-06Merge branch 'next'Tom Rini
2026-04-03Revert "usb: cdns3: use VBUS Valid to determine role for dr_mode OTG"Prasanth Babu Mantena
While USB DFU boot works with this patch, but the non USB boot modes like SD Boot and flash boot fails for J784S4 EVM device. So, Reverting this patch. This reverts commit bfb530e06ca6c19f66c079601e568c761a001993. Signed-off-by: Prasanth Babu Mantena <[email protected]>
2026-03-30usb: isp1760: Correct dependencies for USB_ISP1760Tom Rini
As exposed by "make randconfig", we have an issue with the dependencies for USB_ISP1760. It depends on DM && OF_CONTROL being set and functionally requires REGMAP. As part of fixing that issue, we change "tristate" to "bool" and remove mentions of module support as that's not a thing in U-Boot. Reviewed-by: Marek Vasut <[email protected]> Signed-off-by: Tom Rini <[email protected]>
2026-03-16Merge tag 'u-boot-dfu-20260316' of ↵Tom Rini
https://source.denx.de/u-boot/custodians/u-boot-dfu into next u-boot-dfu-20260316 DFU: * Make DFU_WRITE_ALT symbol available outside of DFU * Fix PCI subclass_code warning in spl_dfu Usb Gadget: * Mark udc_disconnect() as static
2026-03-10Merge tag 'u-boot-rockchip-20260309' of ↵Tom Rini
https://source.denx.de/u-boot/custodians/u-boot-rockchip into next CI: https://source.denx.de/u-boot/custodians/u-boot-rockchip/-/pipelines/29452 - New SoC support: RK3506, RK3582; - New Board support: RK3528 FriendlyElec NanoPi Zero2; - Other fixes
2026-03-10arch: arm: rockchip: Add initial support for RK3506Jonas Karlman
Rockchip RK3506 is a ARM-based SoC with tri-core Cortex-A7. Add initial arch support for the RK3506 SoC. Signed-off-by: Jonas Karlman <[email protected]> Acked-by: Mattijs Korpershoek <[email protected]> # drivers/usb/gadget Reviewed-by: Kever Yang <[email protected]>
2026-03-09Merge tag 'v2026.04-rc4' into nextTom Rini
Prepare v2026.04-rc4
2026-03-06usb: musb-new: Add compatibles for ti,musb-am33xxMarkus Schneider-Pargmann (TI.com)
The upstream devicetree am33xx.dtsi does not have a "ti,am33xx-usb" compatible, it uses "ti,sysc-omap4" for the same node. The implementation of ti-musb uses a wrapper driver that binds to ti,am33xx-usb and creates new devices ti-musb-host and ti-musb-peripheral depending on the dr_mode property. To avoid this wrapper driver with the upstream devicetree, add compatibles for "ti,musb-am33xx" to both ti-musb-host and ti-musb-peripheral. Add a bind function that checks for the correct dr_mode value and rejects binding if it is not the correct driver. Reviewed-by: Mattijs Korpershoek <[email protected]> Signed-off-by: Markus Schneider-Pargmann (TI.com) <[email protected]> Reviewed-by: Marek Vasut <[email protected]>
2026-03-06usb: musb-new: Relative ctrl_mod address parsingMarkus Schneider-Pargmann (TI.com)
For the upstream DT the ctrl_mod node is using a relative register address which is not translated by the current code. Make address parsing understand relative addresses. Reviewed-by: Mattijs Korpershoek <[email protected]> Signed-off-by: Markus Schneider-Pargmann (TI.com) <[email protected]> Reviewed-by: Marek Vasut <[email protected]>