More work on USB related definitions
[reactos.git] / include / ddk / usb200.h
1 #ifndef __USB200_H__
2 #define __USB200_H__
3
4 /* Helper macro to enable gcc's extension. */
5 #ifndef __GNU_EXTENSION
6 #ifdef __GNUC__
7 #define __GNU_EXTENSION __extension__
8 #else
9 #define __GNU_EXTENSION
10 #endif
11 #endif
12
13 #include "usb100.h"
14
15 #include <pshpack1.h>
16
17
18 typedef enum _USB_DEVICE_TYPE
19 {
20 Usb11Device = 0,
21 Usb20Device
22 } USB_DEVICE_TYPE;
23
24 typedef enum _USB_DEVICE_SPEED
25 {
26 UsbLowSpeed = 0,
27 UsbFullSpeed,
28 UsbHighSpeed
29 } USB_DEVICE_SPEED;
30
31 typedef union _BM_REQUEST_TYPE
32 {
33 struct _BM
34 {
35 UCHAR Recipient:2;
36 UCHAR Reserved:3;
37 UCHAR Type:2;
38 UCHAR Dir:1;
39 } _BM;
40 UCHAR B;
41 } BM_REQUEST_TYPE, *PBM_REQUEST_TYPE;
42
43 typedef struct _USB_DEFAULT_PIPE_SETUP_PACKET
44 {
45 BM_REQUEST_TYPE bmRequestType;
46 UCHAR bRequest;
47 union _wValue
48 {
49 __GNU_EXTENSION struct
50 {
51 UCHAR LowByte;
52 UCHAR HiByte;
53 };
54 USHORT W;
55 } wValue;
56 union _wIndex
57 {
58 __GNU_EXTENSION struct
59 {
60 UCHAR LowByte;
61 UCHAR HiByte;
62 };
63 USHORT W;
64 } wIndex;
65 USHORT wLength;
66 } USB_DEFAULT_PIPE_SETUP_PACKET, *PUSB_DEFAULT_PIPE_SETUP_PACKET;
67
68
69 C_ASSERT(sizeof(USB_DEFAULT_PIPE_SETUP_PACKET) == 8);
70
71 typedef struct _USB_DEVICE_QUALIFIER_DESCRIPTOR
72 {
73 UCHAR bLength;
74 UCHAR bDescriptorType;
75 USHORT bcdUSB;
76 UCHAR bDeviceClass;
77 UCHAR bDeviceSubClass;
78 UCHAR bDeviceProtocol;
79 UCHAR bMaxPacketSize0;
80 UCHAR bNumConfigurations;
81 UCHAR bReserved;
82 } USB_DEVICE_QUALIFIER_DESCRIPTOR, *PUSB_DEVICE_QUALIFIER_DESCRIPTOR;
83
84
85 typedef union _USB_HIGH_SPEED_MAXPACKET
86 {
87 struct _MP
88 {
89 USHORT MaxPacket:11;
90 USHORT HSmux:2;
91 USHORT Reserved:3;
92 } _MP;
93 USHORT us;
94 } USB_HIGH_SPEED_MAXPACKET, *PUSB_HIGH_SPEED_MAXPACKET;
95
96 typedef struct _USB_INTERFACE_ASSOCIATION_DESCRIPTOR
97 {
98 UCHAR bLength;
99 UCHAR bDescriptorType;
100 UCHAR bFirstInterface;
101 UCHAR bInterfaceCount;
102 UCHAR bFunctionClass;
103 UCHAR bFunctionSubClass;
104 UCHAR bFunctionProtocol;
105 UCHAR iFunction;
106 } USB_INTERFACE_ASSOCIATION_DESCRIPTOR, *PUSB_INTERFACE_ASSOCIATION_DESCRIPTOR;
107
108 #define USB_PORT_STATUS_CONNECT 0x0001
109 #define USB_PORT_STATUS_ENABLE 0x0002
110 #define USB_PORT_STATUS_SUSPEND 0x0004
111 #define USB_PORT_STATUS_OVER_CURRENT 0x0008
112 #define USB_PORT_STATUS_RESET 0x0010
113 #define USB_PORT_STATUS_POWER 0x0100
114 #define USB_PORT_STATUS_LOW_SPEED 0x0200
115 #define USB_PORT_STATUS_HIGH_SPEED 0x0400
116 #define USB_DEVICE_QUALIFIER_DESCRIPTOR_TYPE 0x06
117 #define USB_INTERFACE_ASSOCIATION_DESCRIPTOR_TYPE 0x0B
118
119 #include <poppack.h>
120
121 #endif //__USB200_H__