aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb/host/ohci-omap.c
diff options
context:
space:
mode:
authorDavid Brownell <david-b@pacbell.net>2006-08-04 14:31:55 -0400
committerGreg Kroah-Hartman <gregkh@suse.de>2006-09-27 14:58:48 -0400
commitd413984ae936fad46678403b38d79c595e5aaafe (patch)
treef494a450d7289d941e3ca2b2e33bfacc29cac024 /drivers/usb/host/ohci-omap.c
parent06afff00bcab0e384afbef70194fd3469532abdf (diff)
USB: OHCI avoids root hub timer polling
This teaches OHCI to use the root hub status change (RHSC) IRQ, bypassing root hub timers most of the time and switching over to the "new" root hub polling scheme. It's complicated by the fact that implementations of OHCI trigger and ack that IRQ differently (the spec is vague there). Avoiding root hub timers helps mechanisms like "dynamic tick" leave the CPU in lowpower modes for longer intervals. Signed-off-by: David Brownell <dbrownell@users.sourceforge.net> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/usb/host/ohci-omap.c')
-rw-r--r--drivers/usb/host/ohci-omap.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/usb/host/ohci-omap.c b/drivers/usb/host/ohci-omap.c
index c4c4babd4767..47f1c9bbef87 100644
--- a/drivers/usb/host/ohci-omap.c
+++ b/drivers/usb/host/ohci-omap.c
@@ -382,8 +382,10 @@ ohci_omap_start (struct usb_hcd *hcd)
382 int ret; 382 int ret;
383 383
384 config = hcd->self.controller->platform_data; 384 config = hcd->self.controller->platform_data;
385 if (config->otg || config->rwc) 385 if (config->otg || config->rwc) {
386 ohci->hc_control = OHCI_CTRL_RWC;
386 writel(OHCI_CTRL_RWC, &ohci->regs->control); 387 writel(OHCI_CTRL_RWC, &ohci->regs->control);
388 }
387 389
388 if ((ret = ohci_run (ohci)) < 0) { 390 if ((ret = ohci_run (ohci)) < 0) {
389 dev_err(hcd->self.controller, "can't start\n"); 391 dev_err(hcd->self.controller, "can't start\n");
@@ -429,6 +431,7 @@ static const struct hc_driver ohci_omap_hc_driver = {
429 */ 431 */
430 .hub_status_data = ohci_hub_status_data, 432 .hub_status_data = ohci_hub_status_data,
431 .hub_control = ohci_hub_control, 433 .hub_control = ohci_hub_control,
434 .hub_irq_enable = ohci_rhsc_enable,
432#ifdef CONFIG_PM 435#ifdef CONFIG_PM
433 .bus_suspend = ohci_bus_suspend, 436 .bus_suspend = ohci_bus_suspend,
434 .bus_resume = ohci_bus_resume, 437 .bus_resume = ohci_bus_resume,