svn commit: r281881 - head/sys/dev/usb/controller
Hans Petter Selasky
hselasky at FreeBSD.org
Thu Apr 23 07:41:59 UTC 2015
Author: hselasky
Date: Thu Apr 23 07:41:58 2015
New Revision: 281881
URL: https://svnweb.freebsd.org/changeset/base/281881
Log:
Disable multi process interrupts, because the current code doesn't use
them. Else we can end up in an infinite interrupt loop in USB device
mode.
MFC after: 3 days
Modified:
head/sys/dev/usb/controller/dwc_otg.c
Modified: head/sys/dev/usb/controller/dwc_otg.c
==============================================================================
--- head/sys/dev/usb/controller/dwc_otg.c Thu Apr 23 07:32:28 2015 (r281880)
+++ head/sys/dev/usb/controller/dwc_otg.c Thu Apr 23 07:41:58 2015 (r281881)
@@ -3876,20 +3876,18 @@ dwc_otg_init(struct dwc_otg_softc *sc)
if (temp & GHWCFG2_MPI) {
uint8_t x;
- DPRINTF("Multi Process Interrupts\n");
+ DPRINTF("Disable Multi Process Interrupts\n");
for (x = 0; x != sc->sc_dev_in_ep_max; x++) {
- DWC_OTG_WRITE_4(sc, DOTG_DIEPEACHINTMSK(x),
- DIEPMSK_XFERCOMPLMSK);
+ DWC_OTG_WRITE_4(sc, DOTG_DIEPEACHINTMSK(x), 0);
DWC_OTG_WRITE_4(sc, DOTG_DOEPEACHINTMSK(x), 0);
}
- DWC_OTG_WRITE_4(sc, DOTG_DEACHINTMSK, 0xFFFF);
- } else {
- DWC_OTG_WRITE_4(sc, DOTG_DIEPMSK,
- DIEPMSK_XFERCOMPLMSK);
- DWC_OTG_WRITE_4(sc, DOTG_DOEPMSK, 0);
- DWC_OTG_WRITE_4(sc, DOTG_DAINTMSK, 0xFFFF);
+ DWC_OTG_WRITE_4(sc, DOTG_DEACHINTMSK, 0);
}
+ DWC_OTG_WRITE_4(sc, DOTG_DIEPMSK,
+ DIEPMSK_XFERCOMPLMSK);
+ DWC_OTG_WRITE_4(sc, DOTG_DOEPMSK, 0);
+ DWC_OTG_WRITE_4(sc, DOTG_DAINTMSK, 0xFFFF);
}
if (sc->sc_mode == DWC_MODE_OTG || sc->sc_mode == DWC_MODE_HOST) {
More information about the svn-src-all
mailing list