aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb/host/ehci-hcd.c
diff options
context:
space:
mode:
authorAlek Du <alek.du@intel.com>2009-07-13 05:30:41 -0400
committerGreg Kroah-Hartman <gregkh@suse.de>2009-09-23 09:46:28 -0400
commit403dbd36739e344d2d25f56ebbe342248487bd48 (patch)
tree1df40f2ae38d5a83ac0a1d04a0fe4d29f4d04002 /drivers/usb/host/ehci-hcd.c
parent4d155eb5f55b879e9947c3553b33764746fb15d5 (diff)
USB: EHCI: add need_io_watchdog flag to ehci_hcd
Basically the io watchdog is only useful for those quirk HCDs. For most good ones, it only brings unnecessary wakeups. At least, I know the Intel EHCI HCDs should turn off the flag. Signed-off-by: Alek Du <alek.du@intel.com> Cc: David Brownell <dbrownell@users.sourceforge.net> Cc: Alan Stern <stern@rowland.harvard.edu> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/usb/host/ehci-hcd.c')
-rw-r--r--drivers/usb/host/ehci-hcd.c6
1 files changed, 6 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;