Hi, Thinh Nguyen wrote: > The controller always supports link recovery for device in SS and SSP. > Remove the speed limit check. Also, when the device is in RESUME or > RESET state, it means the controller received the resume/reset request. > The driver must send the link recovery to acknowledge the request. They > are valid states for the driver to send link recovery. > > Fixes: 72246da40f37 ("usb: Introduce DesignWare USB3 DRD Driver") > Fixes: ee5cd41c9117 ("usb: dwc3: Update speed checks for SuperSpeedPlus") > Signed-off-by: Thinh Nguyen <thinhn@xxxxxxxxxxxx> > --- > > Resend note - > This was on Felipe's next branch some time ago, > but it was lost somehow. > > Changes in v2 - > Added Fixes tags > > drivers/usb/dwc3/gadget.c | 8 ++------ > 1 file changed, 2 insertions(+), 6 deletions(-) > > diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c > index a9aba716bf80..3dcdde9080f5 100644 > --- a/drivers/usb/dwc3/gadget.c > +++ b/drivers/usb/dwc3/gadget.c > @@ -1712,7 +1712,6 @@ static int __dwc3_gadget_wakeup(struct dwc3 *dwc) > u32 reg; > > u8 link_state; > - u8 speed; > > /* > * According to the Databook Remote wakeup request should > @@ -1722,16 +1721,13 @@ static int __dwc3_gadget_wakeup(struct dwc3 *dwc) > */ > reg = dwc3_readl(dwc->regs, DWC3_DSTS); > > - speed = reg & DWC3_DSTS_CONNECTSPD; > - if ((speed == DWC3_DSTS_SUPERSPEED) || > - (speed == DWC3_DSTS_SUPERSPEED_PLUS)) > - return 0; > - > link_state = DWC3_DSTS_USBLNKST(reg); > > switch (link_state) { > + case DWC3_LINK_STATE_RESET: > case DWC3_LINK_STATE_RX_DET: /* in HS, means Early Suspend */ > case DWC3_LINK_STATE_U3: /* in HS, means SUSPEND */ > + case DWC3_LINK_STATE_RESUME: > break; > default: > return -EINVAL; Maybe this patch was lost somewhere. Let me know if there's any issue with this patch. Thanks, Thinh