svn commit: r260388 - head/sys/dev/usb/controller
Hans Petter Selasky
hselasky at FreeBSD.org
Tue Jan 7 09:52:27 UTC 2014
Author: hselasky
Date: Tue Jan 7 09:52:26 2014
New Revision: 260388
URL: http://svnweb.freebsd.org/changeset/base/260388
Log:
Check the XHCI event ring regardless of the XHCI status register
value. The "Intel Lynx Point" XHCI controller found in the MBP2013 has
been observed to not always set the event interrupt bit while there
are events to consume in the event ring.
MFC after: 1 week
Tested by: Huang Wen Hui <huanghwh at gmail.com>
Modified:
head/sys/dev/usb/controller/xhci.c
Modified: head/sys/dev/usb/controller/xhci.c
==============================================================================
--- head/sys/dev/usb/controller/xhci.c Tue Jan 7 01:51:48 2014 (r260387)
+++ head/sys/dev/usb/controller/xhci.c Tue Jan 7 09:52:26 2014 (r260388)
@@ -1582,8 +1582,6 @@ xhci_interrupt(struct xhci_softc *sc)
USB_BUS_LOCK(&sc->sc_bus);
status = XREAD4(sc, oper, XHCI_USBSTS);
- if (status == 0)
- goto done;
/* acknowledge interrupts */
@@ -1591,10 +1589,8 @@ xhci_interrupt(struct xhci_softc *sc)
DPRINTFN(16, "real interrupt (status=0x%08x)\n", status);
- if (status & XHCI_STS_EINT) {
- /* check for event(s) */
- xhci_interrupt_poll(sc);
- }
+ /* check for event(s) */
+ xhci_interrupt_poll(sc);
if (status & (XHCI_STS_PCD | XHCI_STS_HCH |
XHCI_STS_HSE | XHCI_STS_HCE)) {
@@ -1618,7 +1614,6 @@ xhci_interrupt(struct xhci_softc *sc)
__FUNCTION__);
}
}
-done:
USB_BUS_UNLOCK(&sc->sc_bus);
}
More information about the svn-src-all
mailing list