diff options
-rw-r--r-- | drivers/usb/host/ehci-hcd.c | 6 | ||||
-rw-r--r-- | drivers/usb/host/ehci-pci.c | 3 | ||||
-rw-r--r-- | drivers/usb/host/ehci.h | 1 |
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) |