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) {
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to