aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb/host/ehci-q.c
diff options
context:
space:
mode:
authorStuart_Hayes@Dell.com <Stuart_Hayes@Dell.com>2007-05-03 11:58:49 -0400
committerGreg Kroah-Hartman <gregkh@suse.de>2007-07-12 19:29:45 -0400
commit196705c9bbc03540429b0f7cf9ee35c2f928a534 (patch)
tree37ddc23737bced60a8defc52f643f362e2744908 /drivers/usb/host/ehci-q.c
parentec22559e0b7a05283a3413bda5d177e42c950e23 (diff)
USB: EHCI cpufreq fix
EHCI controllers that don't cache enough microframes can get MMF errors when CPU frequency changes occur between the start and completion of split interrupt transactions, due to delays in reading main memory (caused by CPU cache snoop delays). This patch adds a cpufreq notifier to the EHCI driver that will inactivate split interrupt transactions during frequency transitions. It was tested on Intel ICH7 and Serverworks/Broadcom HT1000 EHCI controllers. Signed-off-by: Stuart Hayes <stuart_hayes@dell.com> Signed-off-by: David Brownell <dbrownell@users.sourceforge.net> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/usb/host/ehci-q.c')
-rw-r--r--drivers/usb/host/ehci-q.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/usb/host/ehci-q.c b/drivers/usb/host/ehci-q.c
index e7fbbd00e7cd..903510beb299 100644
--- a/drivers/usb/host/ehci-q.c
+++ b/drivers/usb/host/ehci-q.c
@@ -311,6 +311,10 @@ qh_completions (struct ehci_hcd *ehci, struct ehci_qh *qh)
311 struct urb *urb; 311 struct urb *urb;
312 u32 token = 0; 312 u32 token = 0;
313 313
314 /* ignore QHs that are currently inactive */
315 if (qh->hw_info1 & __constant_cpu_to_le32(QH_INACTIVATE))
316 break;
317
314 qtd = list_entry (entry, struct ehci_qtd, qtd_list); 318 qtd = list_entry (entry, struct ehci_qtd, qtd_list);
315 urb = qtd->urb; 319 urb = qtd->urb;
316 320