diff options
Diffstat (limited to 'drivers/usb/host/ehci-hcd.c')
-rw-r--r-- | drivers/usb/host/ehci-hcd.c | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/drivers/usb/host/ehci-hcd.c b/drivers/usb/host/ehci-hcd.c index 78561d112c04..b435ed67dd5c 100644 --- a/drivers/usb/host/ehci-hcd.c +++ b/drivers/usb/host/ehci-hcd.c | |||
@@ -739,7 +739,7 @@ static int ehci_run (struct usb_hcd *hcd) | |||
739 | up_write(&ehci_cf_port_reset_rwsem); | 739 | up_write(&ehci_cf_port_reset_rwsem); |
740 | ehci->last_periodic_enable = ktime_get_real(); | 740 | ehci->last_periodic_enable = ktime_get_real(); |
741 | 741 | ||
742 | temp = HC_VERSION(ehci_readl(ehci, &ehci->caps->hc_capbase)); | 742 | temp = HC_VERSION(ehci, ehci_readl(ehci, &ehci->caps->hc_capbase)); |
743 | ehci_info (ehci, | 743 | ehci_info (ehci, |
744 | "USB %x.%x started, EHCI %x.%02x%s\n", | 744 | "USB %x.%x started, EHCI %x.%02x%s\n", |
745 | ((ehci->sbrn & 0xf0)>>4), (ehci->sbrn & 0x0f), | 745 | ((ehci->sbrn & 0xf0)>>4), (ehci->sbrn & 0x0f), |
@@ -777,8 +777,9 @@ static irqreturn_t ehci_irq (struct usb_hcd *hcd) | |||
777 | goto dead; | 777 | goto dead; |
778 | } | 778 | } |
779 | 779 | ||
780 | /* Shared IRQ? */ | ||
780 | masked_status = status & INTR_MASK; | 781 | masked_status = status & INTR_MASK; |
781 | if (!masked_status) { /* irq sharing? */ | 782 | if (!masked_status || unlikely(hcd->state == HC_STATE_HALT)) { |
782 | spin_unlock(&ehci->lock); | 783 | spin_unlock(&ehci->lock); |
783 | return IRQ_NONE; | 784 | return IRQ_NONE; |
784 | } | 785 | } |
@@ -873,6 +874,7 @@ static irqreturn_t ehci_irq (struct usb_hcd *hcd) | |||
873 | dead: | 874 | dead: |
874 | ehci_reset(ehci); | 875 | ehci_reset(ehci); |
875 | ehci_writel(ehci, 0, &ehci->regs->configured_flag); | 876 | ehci_writel(ehci, 0, &ehci->regs->configured_flag); |
877 | usb_hc_died(hcd); | ||
876 | /* generic layer kills/unlinks all urbs, then | 878 | /* generic layer kills/unlinks all urbs, then |
877 | * uses ehci_stop to clean up the rest | 879 | * uses ehci_stop to clean up the rest |
878 | */ | 880 | */ |
@@ -1265,6 +1267,21 @@ MODULE_LICENSE ("GPL"); | |||
1265 | #define PLATFORM_DRIVER tegra_ehci_driver | 1267 | #define PLATFORM_DRIVER tegra_ehci_driver |
1266 | #endif | 1268 | #endif |
1267 | 1269 | ||
1270 | #ifdef CONFIG_USB_EHCI_S5P | ||
1271 | #include "ehci-s5p.c" | ||
1272 | #define PLATFORM_DRIVER s5p_ehci_driver | ||
1273 | #endif | ||
1274 | |||
1275 | #ifdef CONFIG_USB_EHCI_ATH79 | ||
1276 | #include "ehci-ath79.c" | ||
1277 | #define PLATFORM_DRIVER ehci_ath79_driver | ||
1278 | #endif | ||
1279 | |||
1280 | #ifdef CONFIG_SPARC_LEON | ||
1281 | #include "ehci-grlib.c" | ||
1282 | #define PLATFORM_DRIVER ehci_grlib_driver | ||
1283 | #endif | ||
1284 | |||
1268 | #if !defined(PCI_DRIVER) && !defined(PLATFORM_DRIVER) && \ | 1285 | #if !defined(PCI_DRIVER) && !defined(PLATFORM_DRIVER) && \ |
1269 | !defined(PS3_SYSTEM_BUS_DRIVER) && !defined(OF_PLATFORM_DRIVER) && \ | 1286 | !defined(PS3_SYSTEM_BUS_DRIVER) && !defined(OF_PLATFORM_DRIVER) && \ |
1270 | !defined(XILINX_OF_PLATFORM_DRIVER) | 1287 | !defined(XILINX_OF_PLATFORM_DRIVER) |