[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

svn path=/branches/usb-bringup-trunk/; revision=55170
This commit is contained in:
Cameron Gutman 2012-01-25 06:35:00 +00:00
parent 75676e7e49
commit 6c55f96de8

View file

@ -883,11 +883,6 @@ CUSBHardwareDevice::StopController(void)
ULONG Control, Reset, Status;
ULONG Index, FrameInterval;
//
// first turn off all interrupts
//
WRITE_REGISTER_ULONG((PULONG)((PUCHAR)m_Base + OHCI_INTERRUPT_DISABLE_OFFSET), OHCI_ALL_INTERRUPTS);
//
// check context
//
@ -931,18 +926,17 @@ CUSBHardwareDevice::StopController(void)
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