Hi Alexander, Thank you for the patch.
On ven., avril 12, 2024 at 22:26, "A. Sverdlin" <alexander.sverd...@siemens.com> wrote: > From: Thinh Nguyen <thinh.ngu...@synopsys.com> > > Upstream Linux commit 3aa07f72894d. > > If there's a disconnection while operating in eSS, there may be a delay > in VBUS drop response from the connector. In that case, the internal > link state may drop to operate in usb2 speed while the controller thinks > the VBUS is still high. The driver must make sure to disable > GUSB2PHYCFG.SUSPHY when sending endpoint command while in usb2 speed. > The End Transfer command may be called, and only that command needs to > go through at this point. Let's keep it simple and unconditionally > disable GUSB2PHYCFG.SUSPHY whenever we issue the command. > > This scenario is not seen in real hardware. In a rare case, our > prototype type-c controller/interface may have a slow response > triggerring this issue. > > Signed-off-by: Thinh Nguyen <thinh.ngu...@synopsys.com> > Link: > https://lore.kernel.org/r/5651117207803c26e2f22ddf4e5ce9e865dcf7c7.1668045468.git.thinh.ngu...@synopsys.com > Signed-off-by: Greg Kroah-Hartman <gre...@linuxfoundation.org> > Signed-off-by: Alexander Sverdlin <alexander.sverd...@siemens.com> I've dropped Greg from the cc list as I understand by [1] that he prefers to not receives responses on this. Reviewed-by: Mattijs Korpershoek <mkorpersh...@baylibre.com> [1] https://lore.kernel.org/r/all/2024041354-exciting-suggest-b896@gregkh/ > --- > drivers/usb/dwc3/gadget.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c > index c14d7870b9461..debfd4d6781db 100644 > --- a/drivers/usb/dwc3/gadget.c > +++ b/drivers/usb/dwc3/gadget.c > @@ -316,7 +316,8 @@ int dwc3_send_gadget_ep_cmd(struct dwc3 *dwc, unsigned ep, > * > * DWC_usb3 3.30a and DWC_usb31 1.90a programming guide section 3.2.2 > */ > - if (dwc->gadget.speed <= USB_SPEED_HIGH) { > + if (dwc->gadget.speed <= USB_SPEED_HIGH || > + DWC3_DEPCMD_CMD(cmd) == DWC3_DEPCMD_ENDTRANSFER) { > reg = dwc3_readl(dwc->regs, DWC3_GUSB2PHYCFG(0)); > if (unlikely(reg & DWC3_GUSB2PHYCFG_SUSPHY)) { > saved_config |= DWC3_GUSB2PHYCFG_SUSPHY; > -- > 2.44.0