[ros-diffs] [mjmartin] 51491: [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 ...

mjmartin at svn.reactos.org mjmartin at svn.reactos.org
Fri Apr 29 06:14:46 UTC 2011


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_new/hardware.cpp?rev=51491&r1=51490&r2=51491&view=diff
==============================================================================
--- 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.




More information about the Ros-diffs mailing list