mirror of
https://github.com/reactos/reactos.git
synced 2025-08-04 03:55:41 +00:00
[USBUHCI]
- Implement starting the controller svn path=/trunk/; revision=55788
This commit is contained in:
parent
d8b2ccec60
commit
1511120650
1 changed files with 55 additions and 16 deletions
|
@ -370,25 +370,13 @@ CUSBHardwareDevice::PnpStart(
|
||||||
return Status;
|
return Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//
|
|
||||||
// Stop the controller before modifying schedules
|
|
||||||
//
|
|
||||||
Status = StopController();
|
|
||||||
if (!NT_SUCCESS(Status))
|
|
||||||
{
|
|
||||||
DPRINT1("Failed to stop the controller \n");
|
|
||||||
ASSERT(FALSE);
|
|
||||||
return Status;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// Start the controller
|
// Start the controller
|
||||||
//
|
//
|
||||||
DPRINT1("Starting Controller\n");
|
DPRINT1("Starting Controller\n");
|
||||||
Status = StartController();
|
Status = StartController();
|
||||||
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// done
|
// done
|
||||||
//
|
//
|
||||||
|
@ -475,9 +463,60 @@ CUSBHardwareDevice::GetUSBQueue(
|
||||||
NTSTATUS
|
NTSTATUS
|
||||||
CUSBHardwareDevice::StartController(void)
|
CUSBHardwareDevice::StartController(void)
|
||||||
{
|
{
|
||||||
UNIMPLEMENTED
|
ULONG Index;
|
||||||
ASSERT(FALSE);
|
USHORT Status;
|
||||||
return STATUS_NOT_IMPLEMENTED;
|
|
||||||
|
|
||||||
|
//
|
||||||
|
// debug info
|
||||||
|
//
|
||||||
|
DPRINT1("[USBUHCI] USBCMD: %x USBSTS %x\n", ReadRegister16(UHCI_USBCMD), ReadRegister16(UHCI_USBSTS));
|
||||||
|
|
||||||
|
//
|
||||||
|
// Set the run bit in the command register
|
||||||
|
//
|
||||||
|
WriteRegister16(UHCI_USBCMD, ReadRegister16(UHCI_USBCMD) | UHCI_USBCMD_RS);
|
||||||
|
|
||||||
|
for(Index = 0; Index < 10; Index++)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
// wait a bit
|
||||||
|
//
|
||||||
|
KeStallExecutionProcessor(100);
|
||||||
|
|
||||||
|
//
|
||||||
|
// get controller status
|
||||||
|
//
|
||||||
|
Status = ReadRegister16(UHCI_USBSTS);
|
||||||
|
DPRINT1("[USBUHCI] Status %x\n", Status);
|
||||||
|
|
||||||
|
if (!(Status & UHCI_USBSTS_HCHALT))
|
||||||
|
{
|
||||||
|
//
|
||||||
|
// controller started
|
||||||
|
//
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((Status & UHCI_USBSTS_HCHALT))
|
||||||
|
{
|
||||||
|
//
|
||||||
|
// failed to start controller
|
||||||
|
//
|
||||||
|
DPRINT1("[USBUHCI] Failed to start controller Status %x\n", Status);
|
||||||
|
ASSERT(FALSE);
|
||||||
|
return STATUS_UNSUCCESSFUL;
|
||||||
|
}
|
||||||
|
|
||||||
|
DPRINT1("[USBUHCI] Controller Started\n");
|
||||||
|
DPRINT1("[USBUHCI] Controller Status %x\n", ReadRegister16(UHCI_USBSTS));
|
||||||
|
DPRINT1("[USBUHCI] Controller Frame %x\n", ReadRegister16(UHCI_FRNUM));
|
||||||
|
|
||||||
|
//
|
||||||
|
// done
|
||||||
|
//
|
||||||
|
return STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue