Author: cgutman
Date: Wed Jan 25 06:35:00 2012
New Revision: 55170

URL: http://svn.reactos.org/svn/reactos?rev=55170&view=rev
Log:
[USBOHCI]
- Don't turn off interrupts before setting the OHCI_OWNERSHIP_CHANGE_REQUEST 
bit because it prevents the SMM driver from receiving the interrupt that tells 
it to give up ownership of the host controller
- This fix should be merged to Haiku also which has the same bug

Modified:
    branches/usb-bringup-trunk/drivers/usb/usbohci/hardware.cpp

Modified: branches/usb-bringup-trunk/drivers/usb/usbohci/hardware.cpp
URL: 
http://svn.reactos.org/svn/reactos/branches/usb-bringup-trunk/drivers/usb/usbohci/hardware.cpp?rev=55170&r1=55169&r2=55170&view=diff
==============================================================================
--- branches/usb-bringup-trunk/drivers/usb/usbohci/hardware.cpp [iso-8859-1] 
(original)
+++ branches/usb-bringup-trunk/drivers/usb/usbohci/hardware.cpp [iso-8859-1] 
Wed Jan 25 06:35:00 2012
@@ -884,11 +884,6 @@
     ULONG Index, FrameInterval;
 
     //
-    // first turn off all interrupts
-    //
-    WRITE_REGISTER_ULONG((PULONG)((PUCHAR)m_Base + 
OHCI_INTERRUPT_DISABLE_OFFSET), OHCI_ALL_INTERRUPTS);
-
-    //
     // check context
     //
     Control = READ_REGISTER_ULONG((PULONG)((PUCHAR)m_Base + 
OHCI_CONTROL_OFFSET));
@@ -931,18 +926,17 @@
         if (Control & OHCI_INTERRUPT_ROUTING)
         {
             DPRINT1("SMM not responding\n");
-            //
-            // some controllers also depend on this
-            //
-            WRITE_REGISTER_ULONG((PULONG)((PUCHAR)m_Base + 
OHCI_CONTROL_OFFSET), OHCI_HC_FUNCTIONAL_STATE_RESET);
-
-            //
-            // wait a bit
-            //
-            KeStallExecutionProcessor(100);
         }
-    }
-
+        else
+        {
+            DPRINT1("SMM has given up ownership\n");
+        }
+    }
+
+    //
+    // turn off interrupts
+    //
+    WRITE_REGISTER_ULONG((PULONG)((PUCHAR)m_Base + 
OHCI_INTERRUPT_DISABLE_OFFSET), OHCI_ALL_INTERRUPTS);
 
     //
     // have a break


Reply via email to