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 */ |
