1
0
mirror of https://git.FreeBSD.org/src.git synced 2025-01-30 16:51:41 +00:00

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@gmail.com>
This commit is contained in:
Hans Petter Selasky 2014-01-07 09:52:26 +00:00
parent aacea395b4
commit d08bc9e548
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=260388

View File

@ -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);
}