linux/drivers/usb/host
Sarah Sharp c21599a361 USB: xhci: Reduce reads and writes of interrupter registers.
The interrupter register set includes a register that says whether interrupts
are pending for each event ring (the IP bit).  Each MSI-X vector will get its
own interrupter set with separate IP bits.  The status register includes an
"Event Interrupt (EINT)" bit that is set when an IP bit is set in any of the
interrupters.

When PCI interrupts are used, the EINT bit exactly mirrors the IP bit in the
single interrupter set, and it is a waste of time to check both registers when
trying to figure out if the xHC interrupted or another device on the shared IRQ
line interrupted.  Only check the IP bit to reduce register reads.

The IP bit is automatically cleared by the xHC when MSI or MSI-X is enabled.  It
doesn't make sense to read that register to check for shared interrupts (since
MSI and MSI-X aren't shared).  It also doesn't make sense to write to that
register to clear the IP bit, since it is cleared by the hardware.

We can tell whether MSI or MSI-X is enabled by looking at the irq number in
hcd->irq.  If it's -1, we know MSI or MSI-X is enabled.

Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
2010-08-10 14:35:45 -07:00
..
whci USB: convert usb_hcd bitfields into atomic flags 2010-08-10 14:35:37 -07:00
ehci-atmel.c USB: ehci-atmel.c: use resource_size() 2010-03-02 14:53:18 -08:00
ehci-au1xxx.c USB: add do_wakeup parameter for PCI HCD suspend 2010-08-10 14:35:37 -07:00
ehci-dbg.c USB: ehci: fix remove of ehci debugfs dir 2010-08-10 14:35:44 -07:00
ehci-fsl.c USB: add do_wakeup parameter for PCI HCD suspend 2010-08-10 14:35:37 -07:00
ehci-fsl.h
ehci-hcd.c USB: EHCI: add missing frame -> microframe conversion 2010-08-10 14:35:40 -07:00
ehci-hub.c USB: controller resume should check the root hub 2010-08-10 14:35:37 -07:00
ehci-ixp4xx.c USB: EHCI: use the new clear_tt_buffer interface 2009-07-12 15:16:39 -07:00
ehci-lpm.c USB: EHCI: EHCI 1.1 addendum: Basic LPM feature support 2010-08-10 14:35:35 -07:00
ehci-mem.c USB: EHCI: defer reclamation of siTDs 2010-04-22 15:18:28 -07:00
ehci-mxc.c Merge branch 'for-rmk' of git://git.pengutronix.de/git/imx/linux-2.6 into devel-stable 2010-07-29 15:48:37 +01:00
ehci-omap.c USB: ehci_omap: fix device detect issue with modules 2010-08-10 14:35:39 -07:00
ehci-orion.c USB: ehci-orion.c: use resource_size() 2010-03-02 14:53:17 -08:00
ehci-pci.c USB: EHCI: remove PCI assumption 2010-08-10 14:35:40 -07:00
ehci-ppc-of.c of: Remove duplicate fields from of_platform_driver 2010-05-22 00:10:40 -06:00
ehci-ps3.c USB: EHCI: use the new clear_tt_buffer interface 2009-07-12 15:16:39 -07:00
ehci-q.c USB: convert usb_hcd bitfields into atomic flags 2010-08-10 14:35:37 -07:00
ehci-sched.c USB: EHCI: remove dead code in the periodic scheduler 2010-08-10 14:35:40 -07:00
ehci-w90x900.c USB: Add nuvoton Ehci driver for w90p910 platform 2009-09-23 06:46:20 -07:00
ehci-xilinx-of.c of/usb: fix build error due to of_node pointer move 2010-06-02 13:35:02 -06:00
ehci.h USB: ehci: fix remove of ehci debugfs dir 2010-08-10 14:35:44 -07:00
fhci-dbg.c USB: make hcd.h public (drivers dependency) 2010-05-20 13:21:30 -07:00
fhci-hcd.c Merge remote branch 'origin' into secretlab/next-devicetree 2010-05-22 00:36:56 -06:00
fhci-hub.c USB: make hcd.h public (drivers dependency) 2010-05-20 13:21:30 -07:00
fhci-mem.c USB: make hcd.h public (drivers dependency) 2010-05-20 13:21:30 -07:00
fhci-q.c USB: make hcd.h public (drivers dependency) 2010-05-20 13:21:30 -07:00
fhci-sched.c fix comment/printk typos concerning "already" 2010-07-11 21:45:40 +02:00
fhci-tds.c USB: make hcd.h public (drivers dependency) 2010-05-20 13:21:30 -07:00
fhci.h USB: FHCI: cq_get() should check kfifo_out()'s return value 2010-05-20 13:21:46 -07:00
hwa-hc.c USB: convert usb_hcd bitfields into atomic flags 2010-08-10 14:35:37 -07:00
imx21-dbg.c USB: MXC: Add i.MX21 specific USB host controller driver. 2010-03-02 14:52:55 -08:00
imx21-hcd.c usb: imx21-hcd: set task state with schedule_timeout_uninterruptible() 2010-08-10 14:35:43 -07:00
imx21-hcd.h USB: MXC: Add i.MX21 specific USB host controller driver. 2010-03-02 14:52:55 -08:00
isp116x-hcd.c USB: make hcd.h public (drivers dependency) 2010-05-20 13:21:30 -07:00
isp116x.h
isp1362-hcd.c USB: isp1362-hcd, fix double lock 2010-06-30 08:16:06 -07:00
isp1362.h USB: host: Remove dead CONFIG_ARCH_KARO 2010-08-10 14:35:40 -07:00
isp1760-hcd.c USB: convert usb_hcd bitfields into atomic flags 2010-08-10 14:35:37 -07:00
isp1760-hcd.h USB: isp1760: allow platform devices to customize devflags 2009-09-23 06:46:29 -07:00
isp1760-if.c Merge remote branch 'origin' into secretlab/next-devicetree 2010-05-22 00:36:56 -06:00
Kconfig USB: EHCI: make CONFIG_USB_EHCI_TT_NEWSCHED default to Y 2010-08-10 14:35:34 -07:00
Makefile USB: xhci: rename driver to xhci_hcd 2010-03-19 07:24:08 -07:00
ohci-at91.c USB: ohci-at91: fix power management hanging 2010-04-30 09:25:12 -07:00
ohci-au1xxx.c const: constify remaining dev_pm_ops 2009-12-15 08:53:25 -08:00
ohci-da8xx.c USB: OHCI: DA8xx/OMAP-L1x: fix up macro rename 2010-04-22 15:18:24 -07:00
ohci-dbg.c USB: convert usb_hcd bitfields into atomic flags 2010-08-10 14:35:37 -07:00
ohci-ep93xx.c USB: ohci-ep93xx.c: remove unused variable 2009-09-23 06:46:34 -07:00
ohci-hcd.c USB: convert usb_hcd bitfields into atomic flags 2010-08-10 14:35:37 -07:00
ohci-hub.c USB: controller resume should check the root hub 2010-08-10 14:35:37 -07:00
ohci-jz4740.c USB: Add JZ4740 OHCI support 2010-08-05 13:26:19 +01:00
ohci-lh7a404.c USB: Convert concatenated __FILE__ to %s, __FILE__ 2010-03-02 14:54:59 -08:00
ohci-mem.c
ohci-omap3.c USB: ohci: introduce omap3 ohci-hcd driver 2010-05-20 13:21:44 -07:00
ohci-omap.c omap: headers: Move remaining headers from include/mach to include/plat 2009-10-20 09:40:47 -07:00
ohci-pci.c USB: add do_wakeup parameter for PCI HCD suspend 2010-08-10 14:35:37 -07:00
ohci-pnx4008.c USB: fix I2C API usage in ohci-pnx4008. 2010-03-02 14:55:15 -08:00
ohci-pnx8550.c
ohci-ppc-of.c of: Remove duplicate fields from of_platform_driver 2010-05-22 00:10:40 -06:00
ohci-ppc-soc.c USB: Convert concatenated __FILE__ to %s, __FILE__ 2010-03-02 14:54:59 -08:00
ohci-ps3.c usb/ps3: Add missing annotations 2009-06-16 14:17:32 +10:00
ohci-pxa27x.c [ARM] pxa: fix incorrect CONFIG_CPU_PXA27x to CONFIG_PXA27x 2010-07-15 17:20:23 +08:00
ohci-q.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
ohci-s3c2410.c USB: S3C: Move usb-control.h to platform include 2009-03-24 16:20:45 -07:00
ohci-sa1111.c USB: Convert concatenated __FILE__ to %s, __FILE__ 2010-03-02 14:54:59 -08:00
ohci-sh.c
ohci-sm501.c
ohci-ssb.c USB: Add USB 2.0 to ssb ohci driver 2010-08-10 14:35:44 -07:00
ohci-tmio.c
ohci.h USB: ohci: quirk AMD prefetch for USB 1.1 ISO transfer 2009-11-17 16:46:33 -08:00
oxu210hp-hcd.c USB: convert usb_hcd bitfields into atomic flags 2010-08-10 14:35:37 -07:00
oxu210hp.h USB: replace uses of __constant_{endian} 2009-03-24 16:20:33 -07:00
pci-quirks.c Revert "USB: Work around BIOS bugs by quiescing USB controllers earlier" 2009-10-11 15:57:57 -07:00
pci-quirks.h
r8a66597-hcd.c USB: r8a66597: Fix failure in change of status 2010-06-30 08:16:05 -07:00
r8a66597.h usb: r8a66597-hcd pio to mmio accessor conversion. 2010-06-02 16:31:15 +09:00
sl811_cs.c pcmcia: do not use io_req_t when calling pcmcia_request_io() 2010-08-03 09:04:11 +02:00
sl811-hcd.c usb: host: sl811-hcd: check kzalloc() result 2010-08-10 14:35:42 -07:00
sl811.h
u132-hcd.c USB: fix u132-hcd code/data warning 2010-05-20 13:21:43 -07:00
uhci-debug.c USB-BKL: Remove BKL use in uhci-debug 2010-08-10 14:35:36 -07:00
uhci-hcd.c USB: UHCI: add support for Intel's wakeup flags 2010-08-10 14:35:38 -07:00
uhci-hcd.h USB: UHCI: add support for Intel's wakeup flags 2010-08-10 14:35:38 -07:00
uhci-hub.c USB: controller resume should check the root hub 2010-08-10 14:35:37 -07:00
uhci-q.c USB: UHCI: acquire spinlock before calling start_rh() 2010-08-10 14:35:33 -07:00
xhci-dbg.c USB: xhci: Correct assumptions about number of rings per endpoint. 2010-05-20 13:21:38 -07:00
xhci-ext-caps.h USB: xhci: Fix finding extended capabilities registers 2010-03-02 14:55:02 -08:00
xhci-hub.c USB: xhci: Remove the arbitrary limit of 15 xHCI ports 2010-05-20 13:21:45 -07:00
xhci-mem.c USB: xhci: Make xhci_set_hc_event_deq() static. 2010-08-10 14:35:44 -07:00
xhci-pci.c USB: xhci: Print NEC firmware version. 2010-06-04 13:16:19 -07:00
xhci-ring.c USB: xhci: Reduce reads and writes of interrupter registers. 2010-08-10 14:35:45 -07:00
xhci.c USB: xhci: Performance - move interrupt handlers into xhci-ring.c 2010-08-10 14:35:44 -07:00
xhci.h USB: xhci: Make xhci_set_hc_event_deq() static. 2010-08-10 14:35:44 -07:00