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.