[PATCH v3 0/3] usb: dwc3: xilinx: error path and teardown fixes

From: Radhey Shyam Pandey

Date: Mon Sep 28 2026 - 08:16:11 EST


dwc3-xilinx does not release what it acquires: system suspend exits the
USB3 PHY without powering it off, the ZynqMP init error paths leave the
core resets deasserted, and neither probe failure nor remove undoes the
reset and PHY state at all. These three patches fix each in turn.

Changes in v3:
The usb_resets_released flag and the pltfm_exit pointer are gone. The
teardown is now a devm_add_action_or_reset() action, guarded on usb3-phy
so it only undoes the reset cycle init performed, and invoked explicitly
before the clocks are gated on both the probe error path and remove, so
.shutdown gets it too.

Changes in v2:
Split out of a five patch series so the fixes can be sent and backported
on their own, and reordered ahead of the platform-data cleanups. Patch
3 was reworked so it no longer depends on that cleanup, and all three
are tagged for stable.

All three are tagged for stable.
Tested on ZCU102: unbind and rebind cycle cleanly with the device
re-enumerating at SuperSpeed, and reboot is clean.

Link to v1:
https://lore.kernel.org/all/20260810174713.2325292-1-radhey.shyam.pandey@xxxxxxx/
Link to v2:
https://lore.kernel.org/all/20260922182125.11067-1-radhey.shyam.pandey@xxxxxxx/

Radhey Shyam Pandey (3):
usb: dwc3: xilinx: fix system suspend and resume PHY handling
usb: dwc3: xilinx: re-assert resets on ZynqMP init error paths
usb: dwc3: xilinx: unwind ZynqMP platform init on probe failure and
remove

drivers/usb/dwc3/dwc3-xilinx.c | 123 +++++++++++++++++++++++++++------
1 file changed, 100 insertions(+), 23 deletions(-)


base-commit: abc36cbda29d8f19cf3a580cd86ca9e865186a41
--
2.44.4