[PATCH 0/4] usb: dwc2: Add USB DRD support on CV1800 Series SoC
Inochi Amaoto
inochiama at gmail.com
Mon Nov 9 23:06:21 PST 2026
The current DRD implementation of DRD will cause a interrupt flow on
CV1800 Series SoC. It has two reasons:
1. The DRD does not sync the phy mode when change the controller mode,
it is a violation of the DRD as it does not rely on a OTG phy.
2. The CV1800 is entered with a Session End Detected interrupt, but the
DRD code has no change on it, so the controller will enter the
interrupt storm.
This patch add fixes for these two problem, and I have tested this on
a Huashan PI board (it has a CV1812H SoC).
Note: This patches set does not resolve all the problems, as
usb_add_hcd() will override the role set by dwc2, but I am not
sure whether it should change skip_phy_initialization of hcd.
So I kept it as it is and users still needs to set the role
in the userspace as "role-switch-default-mode" in devicetree
takes no effect.
Inochi Amaoto (4):
usb: dwc2: gadget: honor pullup requests in core_connect
usb: dwc2: drd: Sync the generic PHY mode with role requests
usb: dwc2: Add USB DRD support on CV1800 series SoC
riscv: dts: sophgo: Enable USB role switch on Huashan PI
.../boot/dts/sophgo/cv1812h-huashan-pi.dts | 4 +-
drivers/usb/dwc2/core.h | 5 +-
drivers/usb/dwc2/drd.c | 77 +++++++++++++++----
drivers/usb/dwc2/gadget.c | 3 +-
drivers/usb/dwc2/params.c | 1 +
drivers/usb/dwc2/platform.c | 4 +-
6 files changed, 73 insertions(+), 21 deletions(-)
--
2.56.0
More information about the linux-riscv
mailing list