usb: dwc2: host: sleep USB_RESUME_TIMEOUT during resume
msleep(USB_RESUME_TIMEOUT) must be done when the controller drives the resume. This is true after HPRT0_RES is written. Moreover, restore the delay after controller power is up. Signed-off-by: Gregory Herrero <gregory.herrero@intel.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
b9cd825d06
commit
42a6630a87
|
@ -1529,13 +1529,13 @@ static int dwc2_hcd_hub_control(struct dwc2_hsotg *hsotg, u16 typereq,
|
||||||
dev_dbg(hsotg->dev,
|
dev_dbg(hsotg->dev,
|
||||||
"ClearPortFeature USB_PORT_FEAT_SUSPEND\n");
|
"ClearPortFeature USB_PORT_FEAT_SUSPEND\n");
|
||||||
writel(0, hsotg->regs + PCGCTL);
|
writel(0, hsotg->regs + PCGCTL);
|
||||||
msleep(USB_RESUME_TIMEOUT);
|
usleep_range(20000, 40000);
|
||||||
|
|
||||||
hprt0 = dwc2_read_hprt0(hsotg);
|
hprt0 = dwc2_read_hprt0(hsotg);
|
||||||
hprt0 |= HPRT0_RES;
|
hprt0 |= HPRT0_RES;
|
||||||
writel(hprt0, hsotg->regs + HPRT0);
|
writel(hprt0, hsotg->regs + HPRT0);
|
||||||
hprt0 &= ~HPRT0_SUSP;
|
hprt0 &= ~HPRT0_SUSP;
|
||||||
usleep_range(100000, 150000);
|
msleep(USB_RESUME_TIMEOUT);
|
||||||
|
|
||||||
hprt0 &= ~HPRT0_RES;
|
hprt0 &= ~HPRT0_RES;
|
||||||
writel(hprt0, hsotg->regs + HPRT0);
|
writel(hprt0, hsotg->regs + HPRT0);
|
||||||
|
|
Loading…
Reference in New Issue