diff options
Diffstat (limited to 'drivers/usb/host/ehci-hcd.c')
-rw-r--r-- | drivers/usb/host/ehci-hcd.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/drivers/usb/host/ehci-hcd.c b/drivers/usb/host/ehci-hcd.c index 806cc95317aa..4a3bc5b7a06f 100644 --- a/drivers/usb/host/ehci-hcd.c +++ b/drivers/usb/host/ehci-hcd.c | |||
@@ -858,8 +858,13 @@ static irqreturn_t ehci_irq (struct usb_hcd *hcd) | |||
858 | goto dead; | 858 | goto dead; |
859 | } | 859 | } |
860 | 860 | ||
861 | /* | ||
862 | * We don't use STS_FLR, but some controllers don't like it to | ||
863 | * remain on, so mask it out along with the other status bits. | ||
864 | */ | ||
865 | masked_status = status & (INTR_MASK | STS_FLR); | ||
866 | |||
861 | /* Shared IRQ? */ | 867 | /* Shared IRQ? */ |
862 | masked_status = status & INTR_MASK; | ||
863 | if (!masked_status || unlikely(ehci->rh_state == EHCI_RH_HALTED)) { | 868 | if (!masked_status || unlikely(ehci->rh_state == EHCI_RH_HALTED)) { |
864 | spin_unlock(&ehci->lock); | 869 | spin_unlock(&ehci->lock); |
865 | return IRQ_NONE; | 870 | return IRQ_NONE; |
@@ -910,7 +915,7 @@ static irqreturn_t ehci_irq (struct usb_hcd *hcd) | |||
910 | pcd_status = status; | 915 | pcd_status = status; |
911 | 916 | ||
912 | /* resume root hub? */ | 917 | /* resume root hub? */ |
913 | if (!(cmd & CMD_RUN)) | 918 | if (ehci->rh_state == EHCI_RH_SUSPENDED) |
914 | usb_hcd_resume_root_hub(hcd); | 919 | usb_hcd_resume_root_hub(hcd); |
915 | 920 | ||
916 | /* get per-port change detect bits */ | 921 | /* get per-port change detect bits */ |