Author: mjmartin Date: Fri Apr 29 06:14:44 2011 New Revision: 51491
URL: http://svn.reactos.org/svn/reactos?rev=51491&view=rev Log: [USBEHCI_NEW] - Set the NakCountReload to 0 in the QueueHead that is set in the Async register, as this is a dead QueueHead marked as halted and does not need it. - Set the Async register in StartController. Note: The Async and Periodic registers can only be modified when the controller is stopped. - Driver now works in Qemu.
Modified: branches/usb-bringup/drivers/usb/usbehci_new/hardware.cpp
Modified: branches/usb-bringup/drivers/usb/usbehci_new/hardware.cpp URL: http://svn.reactos.org/svn/reactos/branches/usb-bringup/drivers/usb/usbehci_... ============================================================================== --- branches/usb-bringup/drivers/usb/usbehci_new/hardware.cpp [iso-8859-1] (original) +++ branches/usb-bringup/drivers/usb/usbehci_new/hardware.cpp [iso-8859-1] Fri Apr 29 06:14:44 2011 @@ -417,7 +417,7 @@ AsyncQueueHead->EndPointCharacteristics.HeadOfReclamation = TRUE; AsyncQueueHead->Token.Bits.Halted = TRUE; AsyncQueueHead->EndPointCharacteristics.MaximumPacketLength = 64; - AsyncQueueHead->EndPointCharacteristics.NakCountReload = 0xF; + AsyncQueueHead->EndPointCharacteristics.NakCountReload = 0; AsyncQueueHead->EndPointCharacteristics.EndPointSpeed = QH_ENDPOINT_HIGHSPEED; AsyncQueueHead->EndPointCapabilities.NumberOfTransactionPerFrame = 0x03;
@@ -438,18 +438,6 @@ // DPRINT1("Starting Controller\n"); Status = StartController(); - - // - // check for success - // - if (NT_SUCCESS(Status)) - { - // - // set async list head - // - SetAsyncListRegister(AsyncQueueHead->PhysicalAddr); - } -
// // done @@ -560,8 +548,9 @@ EHCI_WRITE_REGISTER_ULONG(EHCI_USBSTS, 0x0000001f);
// - // FIXME: Assign the AsyncList Register - // + // Assign the AsyncList Register + // + EHCI_WRITE_REGISTER_ULONG(EHCI_ASYNCLISTBASE, AsyncQueueHead->PhysicalAddr);
// // Set Schedules to Enable and Interrupt Threshold to 1ms.