Hi, On Thu, Nov 12, 2026 at 06:01:06PM -0800, Peter Chen wrote: > On 26-10-21 20:05:25, Sebastian Reichel wrote: > > - drop generic PHY reset notifier API; I discussed this series at Linux > > Plumbers Conference with Vinod Koul and he prefers a local driver > > hack/quirk instead > > Hi Sebastian and Vinod, > > Sorry to jump out late, do we really decide to use private callback between > USB controller and USB Combo PHY, and notify PHY's reset events for > controller? Many platforms which support USB/DP altmode feature need this > requirement, besides Rockchip, Qualcomm and the platforms use Cadence USB > controller and PHY also need this. > > For this scenario, USB controller works at USB3 mode (also configures PHY for > USB3) first. Later, Type-C/DP event tells PHY that it needs to work for DP(4lane), > since this event doesn't go to controller now, sudden switch PHY from USB3 > to DP (4lane) will turn off PIPE clock, and cause all controller's event which > needs PHY (PIPE) clock abnormal, that's the reason why controller needs > this PHY switch (reset) notification and let the controller know it needs > to work at USB2 mode from now on. This is similar to the Rockchip requirements. But the issue is partially covered within the PHY by muxing the clock differently (which is also somewhat of a hack, as common clock framework is not aware of this). FWIW I expected more platforms to run into this over time. Having combined PHYs for USB-C handling makes a lot of sense. But I think it makes sense to proceed with this considering it is a Fix. It has been going on for a very long time already and meanwhile the problem is already there right now. Moving this from the internal custom API to an official API is always possible as a follow-up - it's all within the kernel, neither DT nor userspace ABI is involved. Also having some users makes it easy to figure out how the common API should look like. Greetings, -- Sebastian > > So, it is more like a general requirement, but not quirk for special platform. > > Peter > > > - rework USBDP and DWC3 rockchip glue for the local driver quirk > > using direct function calls > > - Ensure that the reset handler in DWC3 is only called when the PHY is > > initialized (and thus DWC3 is running) > > - Also set vbus in the last patch when dwc3 is configured to device only > > mode (in contrast to dual-role mode being in device mode). > > > > Changes in v16: > > - Link to v15 (sorry, I missed force setting the revision for this > > part in the series split, so the series says v1 in the patch subject): > > https://patch.msgid.link/20260915-b4-rockchip-dwc3-rockchip-glue-v1-0-763bb546824e@collabora.com > > - Update first patch to also build the PM functions even when > > PM is disabled > > - Add new patch for defining an empty usb_udc_vbus_handler stub > > when USB_GADGET is disabled > > - Add dependency to Rockchip DWC3 glue, which disallows the > > configuration with USB_DWC3_ROCKCHIP=y and USB_GADGET=m > > - Collect tags > > > > Changes in v15: > > - Link to v14: https://patch.msgid.link/20260813-rockchip-usbdp-cleanup-v14-0-b5ad9c68fa11@collabora.com > > - Avoid #ifdef for CONFIG_PM in the new glue driver (Thinh Nguyen) > > - Do not add #if IS_ENABLED around the DT compatible blacklist in the > > generic driver, using the glue driver should be mandatory as the > > generic driver results in arbitrary system hangs. Thinh Nguyen suggested > > updating Kconfig for this, but did not clarify what that means. > > Current Kconfig works the same way as the other mandatory glue > > drivers. > > - Split series to simplify review > > > > Signed-off-by: Sebastian Reichel > > --- > > Sebastian Reichel (7): > > phy: rockchip: usbdp: Track PHY power state > > phy: rockchip: usbdp: Add reset hook support for dwc3 > > usb: dwc3: rockchip: introduce glue driver > > usb: dwc3: core: add post PHY registration hook for platform glue > > usb: dwc3: rockchip: add USBDP PHY reset quirk > > usb: gadget: define stub for usb_udc_vbus_handler > > usb: dwc3: rockchip: fix USB-C reconnect in gadget mode > > > > drivers/phy/rockchip/phy-rockchip-usbdp.c | 82 ++++++++++- > > drivers/usb/dwc3/Kconfig | 13 ++ > > drivers/usb/dwc3/Makefile | 1 + > > drivers/usb/dwc3/core.c | 17 ++- > > drivers/usb/dwc3/core.h | 9 ++ > > drivers/usb/dwc3/dwc3-rockchip.c | 227 ++++++++++++++++++++++++++++++ > > drivers/usb/dwc3/trace.c | 3 + > > include/linux/phy/rockchip-usbdp.h | 31 ++++ > > include/linux/usb/gadget.h | 5 + > > 9 files changed, 383 insertions(+), 5 deletions(-) > > --- > > base-commit: 8f56fdf3d8cb9f1dbdc93bf9ac816698aa6f70b7 > > change-id: 20260914-b4-rockchip-dwc3-rockchip-glue-979ea3735d43 > > > > Best regards, > > -- > > Sebastian Reichel > > > > > > -- > > Thanks, > Peter Chen