[ros-diffs] [cgutman] 55365: [USBEHCI] - Wait 20 milliseconds after enabling power for the port to stabilize

cgutman at svn.reactos.org cgutman at svn.reactos.org
Wed Feb 1 11:22:44 UTC 2012


Author: cgutman
Date: Wed Feb  1 11:22:43 2012
New Revision: 55365

URL: http://svn.reactos.org/svn/reactos?rev=55365&view=rev
Log:
[USBEHCI]
- Wait 20 milliseconds after enabling power for the port to stabilize

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

Modified: branches/usb-bringup-trunk/drivers/usb/usbehci_new/hardware.cpp
URL: http://svn.reactos.org/svn/reactos/branches/usb-bringup-trunk/drivers/usb/usbehci_new/hardware.cpp?rev=55365&r1=55364&r2=55365&view=diff
==============================================================================
--- branches/usb-bringup-trunk/drivers/usb/usbehci_new/hardware.cpp [iso-8859-1] (original)
+++ branches/usb-bringup-trunk/drivers/usb/usbehci_new/hardware.cpp [iso-8859-1] Wed Feb  1 11:22:43 2012
@@ -957,11 +957,30 @@
     {
         if (m_Capabilities.HCSParams.PortPowerControl)
         {
+            ULONG Value;
+            LARGE_INTEGER Timeout;
+
             //
             // enable port power
             //
-            ULONG Value = EHCI_READ_REGISTER_ULONG(EHCI_PORTSC + (4 * PortId)) | EHCI_PRT_POWER;
+            Value = EHCI_READ_REGISTER_ULONG(EHCI_PORTSC + (4 * PortId)) | EHCI_PRT_POWER;
             EHCI_WRITE_REGISTER_ULONG(EHCI_PORTSC, Value);
+
+            //
+            // delay is 20 ms
+            //
+            Timeout.QuadPart = 20;
+            DPRINT1("Waiting %d milliseconds for port power up\n", Timeout.LowPart);
+
+            //
+            // convert to 100 ns units (absolute)
+            //
+            Timeout.QuadPart *= -10000;
+
+            //
+            // perform the wait
+            //
+            KeDelayExecutionThread(KernelMode, FALSE, &Timeout);
         }
     }
     return STATUS_SUCCESS;




More information about the Ros-diffs mailing list