Now UHCI HCD driver supports recognizing Memory type of resource. Should help James...
authorAleksey Bragin <aleksey@reactos.org>
Wed, 25 May 2005 20:59:13 +0000 (20:59 +0000)
committerAleksey Bragin <aleksey@reactos.org>
Wed, 25 May 2005 20:59:13 +0000 (20:59 +0000)
svn path=/trunk/; revision=15496

reactos/drivers/usb/cromwell/uhci/uhci-hcd.c
reactos/drivers/usb/cromwell/uhci/uhci_main.c

index e4022ed..99674c4 100644 (file)
@@ -2491,7 +2491,7 @@ static int uhci_hcd_get_frame_number(struct usb_hcd *hcd)
 
 static const char hcd_name[] = "uhci-hcd";
 
-static const struct hc_driver uhci_driver = {
+static struct hc_driver uhci_driver = {
        .description =          hcd_name,
 
        /* Generic hardware linkage */
index d329f5f..b19cb49 100644 (file)
@@ -6,9 +6,14 @@
 
 #include <ddk/ntddk.h>
 #include <debug.h>
-#include "../linux/linux_wrapper.h"
+
+// config and include core/hcd.h, for hc_device struct
+#include "../usb_wrapper.h"
+#include "../core/hcd.h"
+
 #include "../host/ohci_main.h"
 
+
 // declare basic init funcs
 void init_wrapper(struct pci_dev *probe_dev);
 int uhci_hcd_init(void);
@@ -16,15 +21,13 @@ void uhci_hcd_cleanup(void);
 int STDCALL usb_init(void);
 void STDCALL usb_exit(void);
 extern struct pci_driver uhci_pci_driver;
-extern const struct pci_device_id uhci_pci_ids[];
-
+extern struct pci_device_id uhci_pci_ids[];
 
 
 // This should be removed, but for testing purposes it's here
 struct pci_dev *dev;
 //struct pci_device_id *dev_id;
 
-
 #define USB_UHCI_TAG TAG('u','s','b','u')
 
 NTSTATUS STDCALL AddDevice(PDRIVER_OBJECT DriverObject, PDEVICE_OBJECT pdo)
@@ -229,10 +232,23 @@ OHCD_PnPStartDevice(IN PDEVICE_OBJECT DeviceObject,
                                        DeviceExtension->BaseAddress    = Descriptor->u.Port.Start;
                                        DeviceExtension->BaseAddrLength = Descriptor->u.Port.Length;
                                        DeviceExtension->Flags          = Descriptor->Flags;
+
+                                       ((struct hc_driver *)uhci_pci_ids->driver_data)->flags &= ~HCD_MEMORY;
                                        
                                DPRINT1("I/O resource: start=0x%x, length=0x%x\n",
                                  DeviceExtension->BaseAddress.u.LowPart, DeviceExtension->BaseAddrLength);
                                }
+                               else if (Descriptor->Type == CmResourceTypeMemory)
+                               {
+                                       DeviceExtension->BaseAddress    = Descriptor->u.Memory.Start;
+                                       DeviceExtension->BaseAddrLength = Descriptor->u.Memory.Length;
+                                       DeviceExtension->Flags          = Descriptor->Flags;
+
+                                       ((struct hc_driver *)uhci_pci_ids->driver_data)->flags |= HCD_MEMORY;
+                                       
+                               DPRINT1("Memory resource: start=0x%x, length=0x%x\n",
+                                 DeviceExtension->BaseAddress.u.LowPart, DeviceExtension->BaseAddrLength);
+                               }
                                else
                                DPRINT1("Get resource type: %d, Generic start=0x%x Generic length=0x%x\n",
                                        Descriptor->Type, Descriptor->u.Generic.Start.u.LowPart, Descriptor->u.Generic.Length);