aboutsummaryrefslogtreecommitdiffstats
path: root/usb
diff options
context:
space:
mode:
authorGreg Kroah-Hartman <gregkh@suse.de>2006-06-02 14:36:33 -0700
committerGreg Kroah-Hartman <gregkh@suse.de>2006-06-02 14:36:33 -0700
commit1243a917553e97fa5adaa2010bbfaf6e86acefb3 (patch)
tree8ab21ae03d8f4fe9701d46a1c452a256b14fa5a4 /usb
parentc46712383fb783184b95f6fe448475e006b6b2b4 (diff)
downloadpatches-1243a917553e97fa5adaa2010bbfaf6e86acefb3.tar.gz
updated patch
Diffstat (limited to 'usb')
-rw-r--r--usb/usb-ohci-avoids-root-hub-timer-polling.patch16
1 files changed, 10 insertions, 6 deletions
diff --git a/usb/usb-ohci-avoids-root-hub-timer-polling.patch b/usb/usb-ohci-avoids-root-hub-timer-polling.patch
index 2fc890e2bcaa6..58530d89e0229 100644
--- a/usb/usb-ohci-avoids-root-hub-timer-polling.patch
+++ b/usb/usb-ohci-avoids-root-hub-timer-polling.patch
@@ -1,9 +1,9 @@
From linux-usb-devel-admin@lists.sourceforge.net Tue May 16 05:23:39 2006
From: David Brownell <david-b@pacbell.net>
+Cc: Andrew Morton <akpm@osdl.org>
Message-Id: <200605121849.09003.david-b@pacbell.net>
Subject: USB: OHCI avoids root hub timer polling
-Date: Fri, 12 May 2006 18:49:08 -0700
-
+Date: Fri, 2 Jun 2006 09:19:37 -0700
This teaches OHCI to use the root hub status change (RHSC) IRQ, bypassing
the root hub timer except to trigger autosuspend. Avoiding that timer means
@@ -14,12 +14,13 @@ If there are any OHCI implementations where INTR_RHSC doesn't work, they
will need to turn off the "uses_new_polling" flag.
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
+Cc: Rafael Wysocki <rjw@sisk.pl>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
drivers/usb/host/ohci-at91.c | 2 -
drivers/usb/host/ohci-au1xxx.c | 1
- drivers/usb/host/ohci-hcd.c | 23 +++++++++++++-------
+ drivers/usb/host/ohci-hcd.c | 26 ++++++++++++++++-------
drivers/usb/host/ohci-hub.c | 45 +++++++++++++++++++++++++++-------------
drivers/usb/host/ohci-lh7a404.c | 1
drivers/usb/host/ohci-omap.c | 1
@@ -29,7 +30,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/usb/host/ohci-s3c2410.c | 1
drivers/usb/host/ohci-sa1111.c | 1
drivers/usb/host/ohci.h | 2 -
- 12 files changed, 56 insertions(+), 24 deletions(-)
+ 12 files changed, 59 insertions(+), 24 deletions(-)
--- gregkh-2.6.orig/drivers/usb/host/ohci-at91.c
+++ gregkh-2.6/drivers/usb/host/ohci-at91.c
@@ -59,7 +60,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
#include "../core/hcd.h"
-#define DRIVER_VERSION "2005 April 22"
-+#define DRIVER_VERSION "2006 May 12"
++#define DRIVER_VERSION "2006 May 24"
#define DRIVER_AUTHOR "Roman Weissgaerber, David Brownell"
#define DRIVER_DESC "USB 1.1 'Open' Host Controller (OHCI) Driver"
@@ -106,7 +107,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
ohci_writel (ohci, mask, &ohci->regs->intrenable);
/* handle root hub init quirks ... */
-@@ -710,7 +711,13 @@ static irqreturn_t ohci_irq (struct usb_
+@@ -710,7 +711,16 @@ static irqreturn_t ohci_irq (struct usb_
/* interrupt for some other device? */
} else if ((ints &= ohci_readl (ohci, &regs->intrenable)) == 0) {
return IRQ_NOTMINE;
@@ -115,6 +116,9 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+ if (ints & OHCI_INTR_RHSC) {
+ ohci_vdbg (ohci, "rhsc\n");
++ /* some silicon won't clear RHSC before khubd kicks in */
++ ohci_writel (ohci, OHCI_INTR_RHSC, &regs->intrdisable);
++ hcd->poll_rh = 1;
+ ohci_writel (ohci, OHCI_INTR_RHSC, &regs->intrstatus);
+ usb_hcd_poll_rh_status(hcd);
+ }