diff options
author | Greg Kroah-Hartman <gregkh@suse.de> | 2006-06-02 14:36:33 -0700 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2006-06-02 14:36:33 -0700 |
commit | 1243a917553e97fa5adaa2010bbfaf6e86acefb3 (patch) | |
tree | 8ab21ae03d8f4fe9701d46a1c452a256b14fa5a4 /usb | |
parent | c46712383fb783184b95f6fe448475e006b6b2b4 (diff) | |
download | patches-1243a917553e97fa5adaa2010bbfaf6e86acefb3.tar.gz |
updated patch
Diffstat (limited to 'usb')
-rw-r--r-- | usb/usb-ohci-avoids-root-hub-timer-polling.patch | 16 |
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 2fc890e2bcaa67..58530d89e0229e 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, ®s->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, ®s->intrdisable); ++ hcd->poll_rh = 1; + ohci_writel (ohci, OHCI_INTR_RHSC, ®s->intrstatus); + usb_hcd_poll_rh_status(hcd); + } |