diff options
author | Alan Stern <stern@rowland.harvard.edu> | 2005-04-21 16:04:58 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2005-06-27 17:43:44 -0400 |
commit | 6c1b445c226dd82d0961725dec8051b95003723a (patch) | |
tree | 1e812a2e9e2d63879555bb48303a8bc344be3864 /drivers/usb/host/uhci-hcd.h | |
parent | 4daaa87c8f19c5f1978470e9e91b74d9e0fb0f8e (diff) |
[PATCH] USB UHCI: Use root-hub IRQs while suspended
This patch, which has as478b as a prerequisite, enables the uhci-hcd
driver to take advantage of root-hub IRQs rather than polling during the
time it is suspended. (Unfortunately the hardware doesn't support
port-change interrupts while the controller is running.) It also turns
off the driver's private timer while the controller is suspended, as it
isn't needed then. The combined elimination of polling interrupts and
timer interrupts ought to be enough to allow some systems to save a
noticeable amount of power while they are otherwise idle.
Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/usb/host/uhci-hcd.h')
-rw-r--r-- | drivers/usb/host/uhci-hcd.h | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/drivers/usb/host/uhci-hcd.h b/drivers/usb/host/uhci-hcd.h index 827df5e06800..d7c67b73eb7a 100644 --- a/drivers/usb/host/uhci-hcd.h +++ b/drivers/usb/host/uhci-hcd.h | |||
@@ -327,18 +327,19 @@ static inline int __interval_to_skel(int interval) | |||
327 | * driver learns to autosuspend.) | 327 | * driver learns to autosuspend.) |
328 | */ | 328 | */ |
329 | enum uhci_rh_state { | 329 | enum uhci_rh_state { |
330 | /* In the next 4 states the HC must be halted */ | 330 | /* In the following states the HC must be halted. |
331 | UHCI_RH_RESET, /* These two must come first */ | 331 | * These two must come first */ |
332 | UHCI_RH_RESET, | ||
332 | UHCI_RH_SUSPENDED, | 333 | UHCI_RH_SUSPENDED, |
333 | 334 | ||
334 | UHCI_RH_AUTO_STOPPED, | 335 | UHCI_RH_AUTO_STOPPED, |
335 | UHCI_RH_RESUMING, | 336 | UHCI_RH_RESUMING, |
336 | 337 | ||
337 | /* In the next state the HC changes from running to halted, so it | 338 | /* In this state the HC changes from running to halted, |
338 | * can legally appear either way */ | 339 | * so it can legally appear either way. */ |
339 | UHCI_RH_SUSPENDING, | 340 | UHCI_RH_SUSPENDING, |
340 | 341 | ||
341 | /* In the next two states it's an error if the HC is halted. | 342 | /* In the following states it's an error if the HC is halted. |
342 | * These two must come last */ | 343 | * These two must come last */ |
343 | UHCI_RH_RUNNING, /* The normal state */ | 344 | UHCI_RH_RUNNING, /* The normal state */ |
344 | UHCI_RH_RUNNING_NODEVS, /* Running with no devices attached */ | 345 | UHCI_RH_RUNNING_NODEVS, /* Running with no devices attached */ |
@@ -380,7 +381,6 @@ struct uhci_hcd { | |||
380 | 381 | ||
381 | unsigned int scan_in_progress:1; /* Schedule scan is running */ | 382 | unsigned int scan_in_progress:1; /* Schedule scan is running */ |
382 | unsigned int need_rescan:1; /* Redo the schedule scan */ | 383 | unsigned int need_rescan:1; /* Redo the schedule scan */ |
383 | unsigned int resume_detect:1; /* Need a Global Resume */ | ||
384 | unsigned int hc_inaccessible:1; /* HC is suspended or dead */ | 384 | unsigned int hc_inaccessible:1; /* HC is suspended or dead */ |
385 | 385 | ||
386 | /* Support for port suspend/resume/reset */ | 386 | /* Support for port suspend/resume/reset */ |