Skip to content

Commit

Permalink
usb: dwc3: shorten long delay in dwc3_gadget_set_link_state()
Browse files Browse the repository at this point in the history
The loop in dwc3_gadget_set_link_state() was using a udelay(500),
which is a long time to delay in interrupt context. Change it to
udelay(5) and increase the loop count to match.

Signed-off-by: Paul Zimmerman <paulz@synopsys.com>
Signed-off-by: Felipe Balbi <balbi@ti.com>
  • Loading branch information
Paul Zimmerman authored and Felipe Balbi committed Mar 2, 2012
1 parent 7d26b58 commit aee63e3
Showing 1 changed file with 3 additions and 4 deletions.
7 changes: 3 additions & 4 deletions drivers/usb/dwc3/gadget.c
Original file line number Diff line number Diff line change
Expand Up @@ -95,11 +95,11 @@ int dwc3_gadget_set_test_mode(struct dwc3 *dwc, int mode)
* @state: the state to put link into
*
* Caller should take care of locking. This function will
* return 0 on success or -EINVAL.
* return 0 on success or -ETIMEDOUT.
*/
int dwc3_gadget_set_link_state(struct dwc3 *dwc, enum dwc3_link_state state)
{
int retries = 100;
int retries = 10000;
u32 reg;

reg = dwc3_readl(dwc->regs, DWC3_DCTL);
Expand All @@ -113,11 +113,10 @@ int dwc3_gadget_set_link_state(struct dwc3 *dwc, enum dwc3_link_state state)
while (--retries) {
reg = dwc3_readl(dwc->regs, DWC3_DSTS);

/* in HS, means ON */
if (DWC3_DSTS_USBLNKST(reg) == state)
return 0;

udelay(500);
udelay(5);
}

dev_vdbg(dwc->dev, "link state change request timed out\n");
Expand Down

0 comments on commit aee63e3

Please sign in to comment.