2 * PROJECT: ReactOS Universal Serial Bus Bulk Enhanced Host Controller Interface
3 * LICENSE: GPL - See COPYING in the top level directory
4 * FILE: drivers/usb/usbehci/usbehci.c
5 * PURPOSE: USB EHCI device driver.
7 * Michael Martin (mjmartin@reactos.com)
10 /* DEFINES *******************************************************************/
14 DispatchDeviceControl(PDEVICE_OBJECT DeviceObject
, PIRP Irp
)
16 DPRINT("DispatchDeviceControl\n");
17 Irp
->IoStatus
.Information
= 0;
18 Irp
->IoStatus
.Status
= STATUS_UNSUCCESSFUL
;
20 IoCompleteRequest(Irp
, IO_NO_INCREMENT
);
21 return STATUS_UNSUCCESSFUL
;
25 DispatchInternalDeviceControl(PDEVICE_OBJECT DeviceObject
, PIRP Irp
)
27 DPRINT("DispatchInternalDeviceControl\n");
28 if (((PCOMMON_DEVICE_EXTENSION
)DeviceObject
->DeviceExtension
)->IsFdo
)
30 return FdoDispatchInternalDeviceControl(DeviceObject
, Irp
);
33 return PdoDispatchInternalDeviceControl(DeviceObject
, Irp
);
37 UsbEhciCleanup(PDEVICE_OBJECT DeviceObject
, PIRP Irp
)
39 DPRINT1("UsbEhciCleanup\n");
40 Irp
->IoStatus
.Information
= 0;
41 Irp
->IoStatus
.Status
= STATUS_SUCCESS
;
43 IoCompleteRequest(Irp
, IO_NO_INCREMENT
);
44 return STATUS_SUCCESS
;
48 UsbEhciCreate(PDEVICE_OBJECT DeviceObject
, PIRP Irp
)
50 DPRINT1("UsbEhciCreate\n");
51 Irp
->IoStatus
.Information
= 0;
52 Irp
->IoStatus
.Status
= STATUS_SUCCESS
;
54 IoCompleteRequest(Irp
, IO_NO_INCREMENT
);
55 return STATUS_SUCCESS
;
59 UsbEhciClose(PDEVICE_OBJECT DeviceObject
, PIRP Irp
)
62 Irp
->IoStatus
.Information
= 0;
63 Irp
->IoStatus
.Status
= STATUS_SUCCESS
;
65 IoCompleteRequest(Irp
, IO_NO_INCREMENT
);
66 return STATUS_SUCCESS
;
70 DriverUnload(PDRIVER_OBJECT DriverObject
)
72 DPRINT1("Unloading Driver\n");
77 DispatchPnp(PDEVICE_OBJECT DeviceObject
, PIRP Irp
)
79 if (((PCOMMON_DEVICE_EXTENSION
)DeviceObject
->DeviceExtension
)->IsFdo
)
80 return FdoDispatchPnp(DeviceObject
, Irp
);
82 return PdoDispatchPnp(DeviceObject
, Irp
);
86 DriverEntry(PDRIVER_OBJECT DriverObject
, PUNICODE_STRING RegistryPath
)
88 DPRINT1("Driver Entry %wZ!\n", RegistryPath
);
90 DriverObject
->DriverExtension
->AddDevice
= AddDevice
;
92 DriverObject
->MajorFunction
[IRP_MJ_CREATE
] = UsbEhciCreate
;
93 DriverObject
->MajorFunction
[IRP_MJ_CLOSE
] = UsbEhciClose
;
94 DriverObject
->MajorFunction
[IRP_MJ_CLEANUP
] = UsbEhciCleanup
;
95 DriverObject
->MajorFunction
[IRP_MJ_DEVICE_CONTROL
] = DispatchDeviceControl
;
96 DriverObject
->MajorFunction
[IRP_MJ_INTERNAL_DEVICE_CONTROL
] = DispatchInternalDeviceControl
;
97 DriverObject
->MajorFunction
[IRP_MJ_PNP
] = DispatchPnp
;
99 DriverObject
->DriverUnload
= DriverUnload
;
100 DPRINT1("Driver entry done\n");
102 return STATUS_SUCCESS
;