[PATCH v5 0/2] Add SpacemiT K1 USB3.0 host controller support

From: Ze Huang
Date: Sat Jul 05 2025 - 09:02:25 EST


The USB 3.0 controller found in the SpacemiT K1 SoC[1] supports both USB3.0
Host and USB2.0 Dual-Role Device (DRD).

This controller is compatible with DesignWare Core USB 3 (DWC3) driver.
However, constraints in the `snps,dwc3` bindings limit the ability to describe
hardware-specific features in a clean and maintainable way. While
`dwc3-of-simple` still serves as a glue layer for many platforms, it requires a
split device tree node structure, which is less desirable in newer platforms.

To promote a transition toward a flattened `dwc` node structure, this series
introduces `dwc3-generic-plat`, building upon prior efforts that exposed the
DWC3 core driver [2].

The device tree support for SpacemiT K1 will be submitted separately when the
associated PHY driver is ready.

This series is based on 6.16-rc1 and has been tested on BananaPi development
boards.

Link: https://developer.spacemit.com/documentation?token=AjHDwrW78igAAEkiHracBI9HnTb [1]
Link: https://lore.kernel.org/all/20250414-dwc3-refactor-v7-3-f015b358722d@xxxxxxxxxxxxxxxx [2]

Signed-off-by: Ze Huang <huang.ze@xxxxxxxxx>
---
Changes in v5:
- drop DTS patch (will submit when PHY driver is ready)
- drop interconnects and update resets property in dt-bindings
- remove unnecessary __maybe_unused attribute and PM guards
- switch to devres APIs for reset and clock management
- Link to v4: https://lore.kernel.org/all/20250526-b4-k1-dwc3-v3-v4-0-63e4e525e5cb@xxxxxxxxxxx/

Changes in v4:
- dt-bindings spacemit,k1-dwc:
- reorder properties
- add properties of phys & phy-names
- add usb hub nodes in example dt
- add support for spacemit,k1-mbus
- dwc3 generic plat driver:
- rename dwc3-common.c to dwc3-generic-plat.c
- use SYSTEM_SLEEP_PM_OPS macros and drop PM guards
- dts:
- reorder dts properties of usb dwc3 node
- move "dr_mode" of dwc3 from dtsi to dts
- Link to v3: https://lore.kernel.org/r/20250518-b4-k1-dwc3-v3-v3-0-7609c8baa2a6@xxxxxxxxxxx

Changes in v3:
- introduce dwc3-common for generic dwc3 hardware
- fix warnings in usb host dt-bindings
- fix errors in dts
- Link to v2: https://lore.kernel.org/r/20250428-b4-k1-dwc3-v2-v1-0-7cb061abd619@xxxxxxxxxxx

Changes in v2:
- dt-bindings:
- add missing 'maxItems'
- remove 'status' property in exmaple
- fold dwc3 node into parent
- drop dwc3 glue driver and use snps,dwc3 driver directly
- rename dts nodes and reorder properties to fit coding style
- Link to v1: https://lore.kernel.org/all/20250407-b4-k1-usb3-v3-2-v1-0-bf0bcc41c9ba@xxxxxxxxxxx

---
Ze Huang (2):
dt-bindings: usb: dwc3: add support for SpacemiT K1
usb: dwc3: add generic driver to support flattened

.../devicetree/bindings/usb/spacemit,k1-dwc3.yaml | 107 ++++++++++++
drivers/usb/dwc3/Kconfig | 11 ++
drivers/usb/dwc3/Makefile | 1 +
drivers/usb/dwc3/dwc3-generic-plat.c | 182 +++++++++++++++++++++
4 files changed, 301 insertions(+)
---
base-commit: d9946fe286439c2aeaa7953b8c316efe5b83d515
change-id: 20250705-dwc3_generic-8d02859722c3

Best regards,
--
Ze Huang <huang.ze@xxxxxxxxx>