summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormake shi <b15407@freescale.com>2012-12-05 14:31:41 +0800
committerLin Fuzhen <fuzhen.lin@freescale.com>2012-12-06 10:45:35 +0800
commitbf36c76449a1e6ab0cc51438d7204727dc43de28 (patch)
tree7da7d60d506cef173dd1197529f028f307ba6c88
parent863ad6d5b0dec332fc834f56d06ff5e734f0d894 (diff)
ENGR00235630 MX6 USB :fix USB does not work when plug in device during suspend
USB does not work when plug in a usb device during system suspend. Under this case, USB driver will be in low power mode, but WIE bit not be set if usb wake up is not enabled.So there are only ID change interrupt no USB wakeup interrupt after system resume.In current bsp, after system resume ID change status not be clear,and ID change interrupt will continue happen, which cause the system busy. No checking WIR bit if ID change interrupt happen when USB in low power mode to fix this issue. Signed-off-by: make shi <b15407@freescale.com>
-rw-r--r--arch/arm/mach-mx6/usb_dr.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/arch/arm/mach-mx6/usb_dr.c b/arch/arm/mach-mx6/usb_dr.c
index cf84cf2b1296..8f909321e219 100644
--- a/arch/arm/mach-mx6/usb_dr.c
+++ b/arch/arm/mach-mx6/usb_dr.c
@@ -513,10 +513,10 @@ static enum usb_wakeup_event _is_host_wakeup(struct fsl_usb2_platform_data *pdat
pr_debug("the otgsc is 0x%x, usbsts is 0x%x, portsc is 0x%x, wakeup_irq is 0x%x\n", UOG_OTGSC, UOG_USBSTS, UOG_PORTSC1, wakeup_req);
}
/* if ID change sts, it is a host wakeup event */
- if (wakeup_req && (otgsc & OTGSC_IS_USB_ID)) {
+ if (otgsc & OTGSC_IS_USB_ID) {
pr_debug("otg host ID wakeup\n");
- /* if host ID wakeup, we must clear the b session change sts */
- otgsc &= (~OTGSC_IS_USB_ID);
+ /* if host ID wakeup, we must clear the ID change sts */
+ otgsc |= OTGSC_IS_USB_ID;
return WAKEUP_EVENT_ID;
}
if (wakeup_req && (!(otgsc & OTGSC_STS_USB_ID))) {