Author: cgutman Date: Wed Jan 25 06:35:00 2012 New Revision: 55170
URL: http://svn.reactos.org/svn/reactos?rev=55170&view=rev Log: [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
Modified: branches/usb-bringup-trunk/drivers/usb/usbohci/hardware.cpp
Modified: branches/usb-bringup-trunk/drivers/usb/usbohci/hardware.cpp URL: http://svn.reactos.org/svn/reactos/branches/usb-bringup-trunk/drivers/usb/us... ============================================================================== --- branches/usb-bringup-trunk/drivers/usb/usbohci/hardware.cpp [iso-8859-1] (original) +++ branches/usb-bringup-trunk/drivers/usb/usbohci/hardware.cpp [iso-8859-1] Wed Jan 25 06:35:00 2012 @@ -884,11 +884,6 @@ ULONG Index, FrameInterval;
// - // first turn off all interrupts - // - WRITE_REGISTER_ULONG((PULONG)((PUCHAR)m_Base + OHCI_INTERRUPT_DISABLE_OFFSET), OHCI_ALL_INTERRUPTS); - - // // check context // Control = READ_REGISTER_ULONG((PULONG)((PUCHAR)m_Base + OHCI_CONTROL_OFFSET)); @@ -931,18 +926,17 @@ 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