Author: janderwald
Date: Sun Jan 29 20:34:46 2012
New Revision: 55294

URL: http://svn.reactos.org/svn/reactos?rev=55294&view=rev
Log:
[USBEHCI]
- Enable device as pci bus master
- Fixes hanging of Vmware USB EHCI controller
- Revert changes from 55293 from usb_queue
- Currently crashes when usbstor wants to receive descriptors

Modified:
    branches/usb-bringup-trunk/drivers/usb/usbehci_new/hardware.cpp
    branches/usb-bringup-trunk/drivers/usb/usbehci_new/usb_queue.cpp
    branches/usb-bringup-trunk/drivers/usb/usbehci_new/usbehci.h

Modified: branches/usb-bringup-trunk/drivers/usb/usbehci_new/hardware.cpp
URL: 
http://svn.reactos.org/svn/reactos/branches/usb-bringup-trunk/drivers/usb/usbehci_new/hardware.cpp?rev=55294&r1=55293&r2=55294&view=diff
==============================================================================
--- branches/usb-bringup-trunk/drivers/usb/usbehci_new/hardware.cpp 
[iso-8859-1] (original)
+++ branches/usb-bringup-trunk/drivers/usb/usbehci_new/hardware.cpp 
[iso-8859-1] Sun Jan 29 20:34:46 2012
@@ -226,14 +226,42 @@
         return STATUS_SUCCESS;
     }
 
-    if (!(PciConfig.Command & PCI_ENABLE_BUS_MASTER))
-    {
-        DPRINT1("PCI Configuration shows this as a non Bus Mastering 
device!\n");
-    }
-
     m_VendorID = PciConfig.VendorID;
     m_DeviceID = PciConfig.DeviceID;
 
+
+    if (PciConfig.Command & PCI_ENABLE_BUS_MASTER)
+    {
+        //
+        // master is enabled
+        //
+        return STATUS_SUCCESS;
+    }
+
+     DPRINT1("PCI Configuration shows this as a non Bus Mastering device! 
Enabling...\n");
+
+     PciConfig.Command |= PCI_ENABLE_BUS_MASTER;
+     BusInterface.SetBusData(BusInterface.Context, PCI_WHICHSPACE_CONFIG, 
&PciConfig, 0, PCI_COMMON_HDR_LENGTH);
+
+     BytesRead = (*BusInterface.GetBusData)(BusInterface.Context,
+                                            PCI_WHICHSPACE_CONFIG,
+                                            &PciConfig,
+                                            0,
+                                            PCI_COMMON_HDR_LENGTH);
+
+    if (BytesRead != PCI_COMMON_HDR_LENGTH)
+    {
+        DPRINT1("Failed to get pci config information!\n");
+        ASSERT(FALSE);
+        return STATUS_SUCCESS;
+    }
+
+    if (!(PciConfig.Command & PCI_ENABLE_BUS_MASTER))
+    {
+        PciConfig.Command |= PCI_ENABLE_BUS_MASTER;
+        DPRINT1("Failed to enable master\n");
+        return STATUS_UNSUCCESSFUL;
+    }
     return STATUS_SUCCESS;
 }
 

Modified: branches/usb-bringup-trunk/drivers/usb/usbehci_new/usb_queue.cpp
URL: 
http://svn.reactos.org/svn/reactos/branches/usb-bringup-trunk/drivers/usb/usbehci_new/usb_queue.cpp?rev=55294&r1=55293&r2=55294&view=diff
==============================================================================
--- branches/usb-bringup-trunk/drivers/usb/usbehci_new/usb_queue.cpp 
[iso-8859-1] (original)
+++ branches/usb-bringup-trunk/drivers/usb/usbehci_new/usb_queue.cpp 
[iso-8859-1] Sun Jan 29 20:34:46 2012
@@ -368,8 +368,6 @@
         m_Hardware->GetCommandRegister(&UsbCmd);
         ASSERT(UsbCmd.AsyncEnable == TRUE);
 
-        m_Hardware->SetAsyncListRegister(QueueHead->PhysicalAddr);
-
     }
 
 

Modified: branches/usb-bringup-trunk/drivers/usb/usbehci_new/usbehci.h
URL: 
http://svn.reactos.org/svn/reactos/branches/usb-bringup-trunk/drivers/usb/usbehci_new/usbehci.h?rev=55294&r1=55293&r2=55294&view=diff
==============================================================================
--- branches/usb-bringup-trunk/drivers/usb/usbehci_new/usbehci.h [iso-8859-1] 
(original)
+++ branches/usb-bringup-trunk/drivers/usb/usbehci_new/usbehci.h [iso-8859-1] 
Sun Jan 29 20:34:46 2012
@@ -2,7 +2,7 @@
 #define USBEHCI_H__
 
 #include <ntddk.h>
-#define NDEBUG
+#define YDEBUG
 #include <debug.h>
 #include <hubbusif.h>
 #include <usbbusif.h>


Reply via email to