Hi, Baolin Wang <baolin.wang@xxxxxxxxxx> writes: > @@ -1487,10 +1496,22 @@ static int dwc3_gadget_pullup(struct usb_gadget *g, int is_on) > > is_on = !!is_on; > > +try_again: > spin_lock_irqsave(&dwc->lock, flags); > ret = dwc3_gadget_run_stop(dwc, is_on, false); > spin_unlock_irqrestore(&dwc->lock, flags); > > + if (ret == -EBUSY) { > + ret = wait_for_completion_timeout(&dwc->ep0_in_setup, > + msecs_to_jiffies(500)); > + if (ret == 0) { > + dev_err(dwc->dev, "timeout to stop gadget.\n"); > + ret = -ETIMEDOUT; > + } else { > + goto try_again; you are not really reading my comments. It's the third time I tell you there's no need for try_again. If you can't complete a control transfer in 500ms, you already have other issues. Take this thing out of here. -- balbi
Attachment:
signature.asc
Description: PGP signature