Linux USB
 help / color / mirror / Atom feed
* [PATCH v4 0/2] usb: core: Pair ports of different host controllers through their connector
@ 2026-11-15  8:57 Arun Iyengar via B4 Relay
  2026-11-15  8:57 ` [PATCH v4 1/2] usb: core: Pair ports of different hubs " Arun Iyengar via B4 Relay
  2026-11-15  8:57 ` [PATCH v4 2/2] usb: hub: Retry SuperSpeed for a device stuck on its USB 2.0 peer Arun Iyengar via B4 Relay
  0 siblings, 2 replies; 5+ messages in thread
From: Arun Iyengar via B4 Relay @ 2026-11-15  8:57 UTC (permalink / raw)
  To: Greg Kroah-Hartman, Alan Stern
  Cc: linux-usb, linux-kernel, Mathias Nyman, Chen-Yu Tsai, Rob Herring,
	Arun Iyengar

On the RK3588, USB 3.0 host 2 is a SuperSpeed-only xHCI; the USB 2.0
lines of its connector go to a separate EHCI. The USB core pairs the
SuperSpeed port with a dead USB 2.0 port of the same xHCI. On the
Orange Pi 5 (VBUS always on) a USB 3 device present at boot connects
to the EHCI before the xHCI is up and stays at 480 Mb/s.

Patch 1 pairs the two ports through their usb-connector and marks them
hotplug. Patch 2 resets the USB 2.0 port of such a device when the
SuperSpeed root hub starts, so that it retries SuperSpeed.

The Orange Pi 5/5B DT goes to the Rockchip tree separately; its EHCI
"ports" node needs Chen-Yu Tsai's usb-hcd binding [1]. This series
does not depend on his M.2 series [2].

Tested on an Orange Pi 5 (7.3-based kernel): a USB 3 disk present at
boot came up at 5 Gb/s in 3/3 boots and after 8/8 xHCI rebinds; a
high-speed-only disk kept its drivers bound and its data. Not tested
with an external USB 3 hub.

Developed with Claude (Anthropic), which wrote the code and the commit
messages. I reviewed every change.

[1] https://lore.kernel.org/all/20261014082037.1774672-2-wenst@chromium.org/
[2] https://lore.kernel.org/all/20260916075745.3549953-1-wenst@chromium.org/

---
Changes in v4:
- Patch 1: say that dwc3-numbered graphs keep today's pairing (Sashiko)
- Patch 1: mark a connector-paired port hotplug (Sashiko)
- Patch 2: stop the peer reset work when the hub is quiescing (Sashiko)
- Patch 2: don't leave the EHCI port with its companion: reset once
- Patch 2: resume a runtime-suspended device before the reset
- Fewer, shorter comments; shorter cover
- Link to v3: https://patch.msgid.link/20261113-usb-port-pairing-v3-0-d6c6edb4341c@gmail.com

Changes in v3:
- Patch 1: find root hub ports in the graph by the raw controller port
  number (usb_hcd_find_raw_port_number()) on both sides (Chen-Yu Tsai)
- Patch 1: don't skip a connector peer whose connect_type is "not
  used"
- Shorter commit messages and comments; patch 2 code unchanged
- Link to v2: https://patch.msgid.link/20261112-usb-port-pairing-v2-0-45f5a1a29f1f@gmail.com

Changes in v2:
- Dropped v1 patch 1 (generic-ehci binding) for Chen-Yu Tsai's
  usb-hcd binding (Chen-Yu Tsai, Rob Herring)
- Patch 2: reset only when the SuperSpeed root hub starts, never a hub,
  only on USB 2.0 root hub ports of another controller; cancel in
  hub_quiesce(), runtime PM reference, freezable hub_wq (Sashiko)
- v1 patch 4 (DTS) split out (Krzysztof Kozlowski)
- Link to v1: https://patch.msgid.link/20261110-usb-port-pairing-v1-0-9307e29d2ed2@gmail.com

---
Arun Iyengar (2):
      usb: core: Pair ports of different hubs through their connector
      usb: hub: Retry SuperSpeed for a device stuck on its USB 2.0 peer

 drivers/usb/core/hub.c  | 132 ++++++++++++++++++++++++++++++++++++++++++++++++
 drivers/usb/core/hub.h  |   3 ++
 drivers/usb/core/of.c   |  87 +++++++++++++++++++++++++++++++
 drivers/usb/core/port.c |  62 +++++++++++++++++++++--
 include/linux/usb/of.h  |   8 +++
 5 files changed, 288 insertions(+), 4 deletions(-)
---
base-commit: 6628e7d4c6b25c8d18f1345e3a20d21829aae7e4
change-id: 20261110-usb-port-pairing-af0f66f0ab2e

Best regards,
--  
Arun Iyengar <aiyengar1990@gmail.com>



^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2026-11-15  9:50 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-11-15  8:57 [PATCH v4 0/2] usb: core: Pair ports of different host controllers through their connector Arun Iyengar via B4 Relay
2026-11-15  8:57 ` [PATCH v4 1/2] usb: core: Pair ports of different hubs " Arun Iyengar via B4 Relay
2026-11-15  9:50   ` sashiko-bot
2026-11-15  8:57 ` [PATCH v4 2/2] usb: hub: Retry SuperSpeed for a device stuck on its USB 2.0 peer Arun Iyengar via B4 Relay
2026-11-15  9:27   ` sashiko-bot

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox