aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb/host
diff options
context:
space:
mode:
authorSarah Sharp <sarah.a.sharp@linux.intel.com>2009-05-14 14:44:26 -0400
committerGreg Kroah-Hartman <gregkh@suse.de>2009-06-16 00:44:51 -0400
commita4d88302268d1e458f7c6eb7855f1ba4b3a7cffc (patch)
treefb039a911f47b4ae6b696fd101eb19649d5cb065 /drivers/usb/host
parent98441973105b80e133fcaa47ebf17be1e024ea30 (diff)
USB: xHCI: Fix interrupt moderation.
Mask off the lower 16 bits of the interrupt control register, instead of masking off the upper 16 bits. The interrupt moderation interval field is the lower 16 bytes, and is set to 0x4000 (1ms) by default. The previous code was adding 40 us to the default value, instead of setting it to 40 us. This makes performance really bad. Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/usb/host')
-rw-r--r--drivers/usb/host/xhci-hcd.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/usb/host/xhci-hcd.c b/drivers/usb/host/xhci-hcd.c
index 59ee61d2a198..489657c853e7 100644
--- a/drivers/usb/host/xhci-hcd.c
+++ b/drivers/usb/host/xhci-hcd.c
@@ -384,7 +384,7 @@ int xhci_run(struct usb_hcd *hcd)
384 384
385 xhci_dbg(xhci, "// Set the interrupt modulation register\n"); 385 xhci_dbg(xhci, "// Set the interrupt modulation register\n");
386 temp = xhci_readl(xhci, &xhci->ir_set->irq_control); 386 temp = xhci_readl(xhci, &xhci->ir_set->irq_control);
387 temp &= 0xffff; 387 temp &= ~ER_IRQ_INTERVAL_MASK;
388 temp |= (u32) 160; 388 temp |= (u32) 160;
389 xhci_writel(xhci, temp, &xhci->ir_set->irq_control); 389 xhci_writel(xhci, temp, &xhci->ir_set->irq_control);
390 390