Author: cgutman Date: Wed Feb 1 11:49:57 2012 New Revision: 55366
URL: http://svn.reactos.org/svn/reactos?rev=55366&view=rev Log: [USBEHCI] - Wait 20 milliseconds for port reset
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/us... ============================================================================== --- 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:49:57 2012 @@ -735,6 +735,7 @@ IN ULONG PortIndex) { ULONG PortStatus; + LARGE_INTEGER Timeout;
if (PortIndex > m_Capabilities.HCSParams.PortCount) return STATUS_UNSUCCESSFUL; @@ -759,7 +760,21 @@ PortStatus &= ~EHCI_PRT_ENABLED; EHCI_WRITE_REGISTER_ULONG(EHCI_PORTSC + (4 * PortIndex), PortStatus);
- KeStallExecutionProcessor(100); + // + // delay is 20 ms for port reset as per USB 2.0 spec + // + Timeout.QuadPart = 20; + DPRINT1("Waiting %d milliseconds for port reset\n", Timeout.LowPart); + + // + // convert to 100 ns units (absolute) + // + Timeout.QuadPart *= -10000; + + // + // perform the wait + // + KeDelayExecutionThread(KernelMode, FALSE, &Timeout);
// // Clear reset