Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit aee63e3c authored by Paul Zimmerman's avatar Paul Zimmerman Committed by Felipe Balbi
Browse files

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: default avatarPaul Zimmerman <paulz@synopsys.com>
Signed-off-by: default avatarFelipe Balbi <balbi@ti.com>
parent 7d26b587
Loading
Loading
Loading
Loading
+3 −4
Original line number Diff line number Diff line
@@ -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");