aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/usb/host/ehci-hcd.c6
-rw-r--r--drivers/usb/host/ehci-pci.c3
-rw-r--r--drivers/usb/host/ehci.h1
3 files changed, 10 insertions, 0 deletions
diff --git a/drivers/usb/host/ehci-hcd.c b/drivers/usb/host/ehci-hcd.c
index 54715b875759..2dc15f3ad143 100644
--- a/drivers/usb/host/ehci-hcd.c
+++ b/drivers/usb/host/ehci-hcd.c
@@ -127,6 +127,8 @@ timer_action(struct ehci_hcd *ehci, enum ehci_timer_action action)
127 127
128 switch (action) { 128 switch (action) {
129 case TIMER_IO_WATCHDOG: 129 case TIMER_IO_WATCHDOG:
130 if (!ehci->need_io_watchdog)
131 return;
130 t = EHCI_IO_JIFFIES; 132 t = EHCI_IO_JIFFIES;
131 break; 133 break;
132 case TIMER_ASYNC_OFF: 134 case TIMER_ASYNC_OFF:
@@ -508,6 +510,10 @@ static int ehci_init(struct usb_hcd *hcd)
508 510
509 spin_lock_init(&ehci->lock); 511 spin_lock_init(&ehci->lock);
510 512
513 /*
514 * keep io watchdog by default, those good HCDs could turn off it later
515 */
516 ehci->need_io_watchdog = 1;
511 init_timer(&ehci->watchdog); 517 init_timer(&ehci->watchdog);
512 ehci->watchdog.function = ehci_watchdog; 518 ehci->watchdog.function = ehci_watchdog;
513 ehci->watchdog.data = (unsigned long) ehci; 519 ehci->watchdog.data = (unsigned long) ehci;
diff --git a/drivers/usb/host/ehci-pci.c b/drivers/usb/host/ehci-pci.c
index b5b83c43898a..a88ad517ec5c 100644
--- a/drivers/usb/host/ehci-pci.c
+++ b/drivers/usb/host/ehci-pci.c
@@ -129,6 +129,9 @@ static int ehci_pci_setup(struct usb_hcd *hcd)
129 return retval; 129 return retval;
130 130
131 switch (pdev->vendor) { 131 switch (pdev->vendor) {
132 case PCI_VENDOR_ID_INTEL:
133 ehci->need_io_watchdog = 0;
134 break;
132 case PCI_VENDOR_ID_TDI: 135 case PCI_VENDOR_ID_TDI:
133 if (pdev->device == PCI_DEVICE_ID_TDI_EHCI) { 136 if (pdev->device == PCI_DEVICE_ID_TDI_EHCI) {
134 hcd->has_tt = 1; 137 hcd->has_tt = 1;
diff --git a/drivers/usb/host/ehci.h b/drivers/usb/host/ehci.h
index 48b9e889a18b..acec10894078 100644
--- a/drivers/usb/host/ehci.h
+++ b/drivers/usb/host/ehci.h
@@ -126,6 +126,7 @@ struct ehci_hcd { /* one per controller */
126 unsigned big_endian_mmio:1; 126 unsigned big_endian_mmio:1;
127 unsigned big_endian_desc:1; 127 unsigned big_endian_desc:1;
128 unsigned has_amcc_usb23:1; 128 unsigned has_amcc_usb23:1;
129 unsigned need_io_watchdog:1;
129 130
130 /* required for usb32 quirk */ 131 /* required for usb32 quirk */
131 #define OHCI_CTRL_HCFS (3 << 6) 132 #define OHCI_CTRL_HCFS (3 << 6)