[USB-BRINGUP-TRUNK]
authorCameron Gutman <aicommander@gmail.com>
Mon, 23 Jan 2012 10:10:51 +0000 (10:10 +0000)
committerCameron Gutman <aicommander@gmail.com>
Mon, 23 Jan 2012 10:10:51 +0000 (10:10 +0000)
- Compute the frame interval correctly
- Fixes a deadlock on real hardware after enabling interrupts

svn path=/branches/usb-bringup-trunk/; revision=55094

drivers/usb/usbohci/hardware.cpp

index 80997e4..32da72c 100644 (file)
@@ -551,6 +551,7 @@ CUSBHardwareDevice::StartController(void)
     // get frame interval
     //
     FrameInterval = READ_REGISTER_ULONG((PULONG)((PUCHAR)m_Base + OHCI_FRAME_INTERVAL_OFFSET));
+    FrameInterval = ((FrameInterval & OHCI_FRAME_INTERVAL_TOGGLE) ^ OHCI_FRAME_INTERVAL_TOGGLE);
     DPRINT1("FrameInterval %x IntervalValue %x\n", FrameInterval, m_IntervalValue);
     FrameInterval |= OHCI_FSMPS(m_IntervalValue) | m_IntervalValue;
     DPRINT1("FrameInterval %x\n", FrameInterval);