Now UHCI HCD driver supports recognizing Memory type of resource. Should
help James Tabor's problem (VIA chipset, getting only memory resource as
unrecognized, and thus driver failing loading).
Modified: trunk/reactos/drivers/usb/cromwell/uhci/uhci-hcd.c
Modified: trunk/reactos/drivers/usb/cromwell/uhci/uhci_main.c
_____
Modified: trunk/reactos/drivers/usb/cromwell/uhci/uhci-hcd.c
--- trunk/reactos/drivers/usb/cromwell/uhci/uhci-hcd.c 2005-05-25
14:25:19 UTC (rev 15495)
+++ trunk/reactos/drivers/usb/cromwell/uhci/uhci-hcd.c 2005-05-25
20:59:13 UTC (rev 15496)
@@ -2491,7 +2491,7 @@
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 */
_____
Modified: trunk/reactos/drivers/usb/cromwell/uhci/uhci_main.c
--- trunk/reactos/drivers/usb/cromwell/uhci/uhci_main.c 2005-05-25
14:25:19 UTC (rev 15495)
+++ trunk/reactos/drivers/usb/cromwell/uhci/uhci_main.c 2005-05-25
20:59:13 UTC (rev 15496)
@@ -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 @@
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 @@
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);
Show replies by date