8b05ef37f1903b4d990dd9ee3d16993e345e8959
[reactos.git] / reactos / drivers / usb / usbehci / usbehci.h
1 #ifndef USBEHCI_H__
2 #define USBEHCI_H__
3
4 #include <ntddk.h>
5 #define NDEBUG
6 #include <debug.h>
7 #include <hubbusif.h>
8 #include <usbbusif.h>
9 #include <usbioctl.h>
10 //
11 // FIXME:
12 // #include <usbprotocoldefs.h>
13 //
14 #include <usb.h>
15 #include <stdio.h>
16 #include <wdmguid.h>
17
18 //
19 // FIXME:
20 // the following includes are required to get kcom to compile
21 //
22 #include <portcls.h>
23 #include <dmusicks.h>
24 #include <kcom.h>
25
26 #include "interfaces.h"
27
28 //
29 // flags for handling USB_REQUEST_SET_FEATURE / USB_REQUEST_GET_FEATURE
30 //
31 #define PORT_ENABLE 1
32 #define PORT_SUSPEND 2
33 #define PORT_OVER_CURRENT 3
34 #define PORT_RESET 4
35 #define PORT_POWER 8
36 #define C_PORT_CONNECTION 16
37 #define C_PORT_ENABLE 17
38 #define C_PORT_SUSPEND 18
39 #define C_PORT_OVER_CURRENT 19
40 #define C_PORT_RESET 20
41
42 typedef struct _USB_ENDPOINT
43 {
44 USB_ENDPOINT_DESCRIPTOR EndPointDescriptor;
45 UCHAR HubAddress;
46 UCHAR HubPort;
47 UCHAR DataToggle;
48 } USB_ENDPOINT, *PUSB_ENDPOINT;
49
50 typedef struct _USB_INTERFACE
51 {
52 USB_INTERFACE_DESCRIPTOR InterfaceDescriptor;
53 USB_ENDPOINT *EndPoints;
54 } USB_INTERFACE, *PUSB_INTERFACE;
55
56 typedef struct _USB_CONFIGURATION
57 {
58 USB_CONFIGURATION_DESCRIPTOR ConfigurationDescriptor;
59 USB_INTERFACE *Interfaces;
60 } USB_CONFIGURATION, *PUSB_CONFIGURATION;
61
62
63
64 typedef struct
65 {
66 BOOLEAN IsFDO; // is device a FDO or PDO
67 BOOLEAN IsHub; // is device a hub / child - not yet used
68 PDISPATCHIRP Dispatcher; // dispatches the code
69 }COMMON_DEVICE_EXTENSION, *PCOMMON_DEVICE_EXTENSION;
70
71 //
72 // tag for allocations
73 //
74 #define TAG_USBEHCI 'ICHE'
75
76 //
77 // assert for c++ - taken from portcls
78 //
79 #define PC_ASSERT(exp) \
80 (VOID)((!(exp)) ? \
81 RtlAssert((PVOID) #exp, (PVOID)__FILE__, __LINE__, NULL ), FALSE : TRUE)
82
83 //
84 // hcd_controller.cpp
85 //
86 NTSTATUS CreateHCDController(PHCDCONTROLLER *HcdController);
87
88 //
89 // hardware.cpp
90 //
91 NTSTATUS CreateUSBHardware(PUSBHARDWAREDEVICE *OutHardware);
92
93 //
94 // misc.cpp
95 //
96 NTSTATUS NTAPI SyncForwardIrp(PDEVICE_OBJECT DeviceObject, PIRP Irp);
97 NTSTATUS NTAPI GetBusInterface(PDEVICE_OBJECT DeviceObject, PBUS_INTERFACE_STANDARD busInterface);
98
99 //
100 // root_hub_controller.cpp
101 //
102 NTSTATUS CreateHubController(PHUBCONTROLLER * OutHubController);
103
104 //
105 // memory_manager.cpp
106 //
107 NTSTATUS CreateDMAMemoryManager(PDMAMEMORYMANAGER *OutMemoryManager);
108
109
110 //
111 // usb_device.cpp
112 //
113 NTSTATUS CreateUSBDevice(PUSBDEVICE *OutDevice);
114
115 //
116 // usb_queue.cpp
117 //
118 NTSTATUS CreateUSBQueue(PUSBQUEUE *OutUsbQueue);
119
120 //
121 // usb_request.cpp
122 //
123 NTSTATUS InternalCreateUSBRequest(PUSBREQUEST *OutRequest);
124
125 #endif