mirror of
https://github.com/torvalds/linux.git
synced 2024-12-18 17:12:55 +00:00
usb: dwc3: shorten long delay in dwc3_gadget_set_link_state()
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>
This commit is contained in:
parent
7d26b58735
commit
aee63e3cb6
@ -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);
|
||||
@ -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");
|
||||
|
Loading…
Reference in New Issue
Block a user