From b477515b56119a1319646e799ca540355e2a28c4 Mon Sep 17 00:00:00 2001 From: Alek Du Date: Mon, 13 Jul 2009 17:30:41 +0800 Subject: [PATCH] --- yaml --- r: 164968 b: refs/heads/master c: 403dbd36739e344d2d25f56ebbe342248487bd48 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/usb/host/ehci-hcd.c | 6 ++++++ trunk/drivers/usb/host/ehci-pci.c | 3 +++ trunk/drivers/usb/host/ehci.h | 1 + 4 files changed, 11 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index cffc263bc25e..13c15e49d5c9 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 4d155eb5f55b879e9947c3553b33764746fb15d5 +refs/heads/master: 403dbd36739e344d2d25f56ebbe342248487bd48 diff --git a/trunk/drivers/usb/host/ehci-hcd.c b/trunk/drivers/usb/host/ehci-hcd.c index 54715b875759..2dc15f3ad143 100644 --- a/trunk/drivers/usb/host/ehci-hcd.c +++ b/trunk/drivers/usb/host/ehci-hcd.c @@ -127,6 +127,8 @@ timer_action(struct ehci_hcd *ehci, enum ehci_timer_action action) switch (action) { case TIMER_IO_WATCHDOG: + if (!ehci->need_io_watchdog) + return; t = EHCI_IO_JIFFIES; break; case TIMER_ASYNC_OFF: @@ -508,6 +510,10 @@ static int ehci_init(struct usb_hcd *hcd) spin_lock_init(&ehci->lock); + /* + * keep io watchdog by default, those good HCDs could turn off it later + */ + ehci->need_io_watchdog = 1; init_timer(&ehci->watchdog); ehci->watchdog.function = ehci_watchdog; ehci->watchdog.data = (unsigned long) ehci; diff --git a/trunk/drivers/usb/host/ehci-pci.c b/trunk/drivers/usb/host/ehci-pci.c index b5b83c43898a..a88ad517ec5c 100644 --- a/trunk/drivers/usb/host/ehci-pci.c +++ b/trunk/drivers/usb/host/ehci-pci.c @@ -129,6 +129,9 @@ static int ehci_pci_setup(struct usb_hcd *hcd) return retval; switch (pdev->vendor) { + case PCI_VENDOR_ID_INTEL: + ehci->need_io_watchdog = 0; + break; case PCI_VENDOR_ID_TDI: if (pdev->device == PCI_DEVICE_ID_TDI_EHCI) { hcd->has_tt = 1; diff --git a/trunk/drivers/usb/host/ehci.h b/trunk/drivers/usb/host/ehci.h index 48b9e889a18b..acec10894078 100644 --- a/trunk/drivers/usb/host/ehci.h +++ b/trunk/drivers/usb/host/ehci.h @@ -126,6 +126,7 @@ struct ehci_hcd { /* one per controller */ unsigned big_endian_mmio:1; unsigned big_endian_desc:1; unsigned has_amcc_usb23:1; + unsigned need_io_watchdog:1; /* required for usb32 quirk */ #define OHCI_CTRL_HCFS (3 << 6)