[USBEHCI]

- Wait for periodic scheduling to start
- Increase the wait interval for asynchronous scheduling to start

svn path=/branches/usb-bringup-trunk/; revision=55477
This commit is contained in:
Cameron Gutman 2012-02-07 02:22:34 +00:00
parent ec95123297
commit 27a04819e7

View file

@ -714,19 +714,26 @@ CUSBHardwareDevice::StartController(void)
// //
for (FailSafe = 100; FailSafe > 1; FailSafe--) for (FailSafe = 100; FailSafe > 1; FailSafe--)
{ {
KeStallExecutionProcessor(10); KeStallExecutionProcessor(100);
UsbSts = EHCI_READ_REGISTER_ULONG(EHCI_USBSTS); UsbSts = EHCI_READ_REGISTER_ULONG(EHCI_USBSTS);
if (!(UsbSts & EHCI_STS_HALT)) if (!(UsbSts & EHCI_STS_HALT) && (UsbSts & EHCI_STS_PSS))
{ {
break; break;
} }
} }
if (UsbSts & EHCI_STS_HALT) if (UsbSts & EHCI_STS_HALT)
{ {
DPRINT1("Could not start execution on the controller\n"); DPRINT1("Could not start execution on the controller\n");
ASSERT(FALSE);
return STATUS_UNSUCCESSFUL;
}
if (!(UsbSts & EHCI_STS_PSS))
{
DPRINT1("Could not enable periodic scheduling\n");
ASSERT(FALSE);
return STATUS_UNSUCCESSFUL; return STATUS_UNSUCCESSFUL;
} }
@ -755,7 +762,7 @@ CUSBHardwareDevice::StartController(void)
// //
for (FailSafe = 100; FailSafe > 1; FailSafe--) for (FailSafe = 100; FailSafe > 1; FailSafe--)
{ {
KeStallExecutionProcessor(10); KeStallExecutionProcessor(100);
UsbSts = EHCI_READ_REGISTER_ULONG(EHCI_USBSTS); UsbSts = EHCI_READ_REGISTER_ULONG(EHCI_USBSTS);
if ((UsbSts & EHCI_STS_ASS)) if ((UsbSts & EHCI_STS_ASS))