usb: dwc2: host: sleep USB_RESUME_TIMEOUT during resume
authorGregory Herrero <gregory.herrero@intel.com>
Fri, 3 Apr 2015 08:53:25 +0000 (10:53 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 10 Apr 2015 11:52:49 +0000 (13:52 +0200)
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>
drivers/usb/dwc2/hcd.c

index 93bd4a10ab528694c8b706c5082562cca3dd5ae6..fbbbac2150a53fbcf7536088c563a46167eada3d 100644 (file)
@@ -1529,13 +1529,13 @@ static int dwc2_hcd_hub_control(struct dwc2_hsotg *hsotg, u16 typereq,
                        dev_dbg(hsotg->dev,
                                "ClearPortFeature USB_PORT_FEAT_SUSPEND\n");
                        writel(0, hsotg->regs + PCGCTL);
-                       msleep(USB_RESUME_TIMEOUT);
+                       usleep_range(20000, 40000);
 
                        hprt0 = dwc2_read_hprt0(hsotg);
                        hprt0 |= HPRT0_RES;
                        writel(hprt0, hsotg->regs + HPRT0);
                        hprt0 &= ~HPRT0_SUSP;
-                       usleep_range(100000, 150000);
+                       msleep(USB_RESUME_TIMEOUT);
 
                        hprt0 &= ~HPRT0_RES;
                        writel(hprt0, hsotg->regs + HPRT0);