Skip to content

Commit 3aa07f7

Browse files
Thinh Nguyengregkh
authored andcommitted
usb: dwc3: gadget: Disable GUSB2PHYCFG.SUSPHY for End Transfer
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.Nguyen@synopsys.com> Link: https://lore.kernel.org/r/5651117207803c26e2f22ddf4e5ce9e865dcf7c7.1668045468.git.Thinh.Nguyen@synopsys.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
1 parent 181babf commit 3aa07f7

File tree

1 file changed

+2
-1
lines changed

1 file changed

+2
-1
lines changed

drivers/usb/dwc3/gadget.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -291,7 +291,8 @@ int dwc3_send_gadget_ep_cmd(struct dwc3_ep *dep, unsigned int cmd,
291291
*
292292
* DWC_usb3 3.30a and DWC_usb31 1.90a programming guide section 3.2.2
293293
*/
294-
if (dwc->gadget->speed <= USB_SPEED_HIGH) {
294+
if (dwc->gadget->speed <= USB_SPEED_HIGH ||
295+
DWC3_DEPCMD_CMD(cmd) == DWC3_DEPCMD_ENDTRANSFER) {
295296
reg = dwc3_readl(dwc->regs, DWC3_GUSB2PHYCFG(0));
296297
if (unlikely(reg & DWC3_GUSB2PHYCFG_SUSPHY)) {
297298
saved_config |= DWC3_GUSB2PHYCFG_SUSPHY;

0 commit comments

Comments
 (0)