XenevaOS
Loading...
Searching...
No Matches
Usb.h
Go to the documentation of this file.
1
15#ifndef __USB_H__
16#define __USB_H__
17
18//
19// Subset of Class and Subclass definitions from USB Specs
20//
21
22//
23// Usb mass storage class code
24//
25#define USB_MASS_STORE_CLASS 0x08
26
27//
28// Usb mass storage subclass code, specify the command set used.
29//
30#define USB_MASS_STORE_RBC 0x01
31#define USB_MASS_STORE_8020I 0x02
32#define USB_MASS_STORE_QIC 0x03
33#define USB_MASS_STORE_UFI 0x04
34#define USB_MASS_STORE_8070I 0x05
35#define USB_MASS_STORE_SCSI 0x06
36
37//
38// Usb mass storage protocol code, specify the transport protocol
39//
40#define USB_MASS_STORE_CBI0 0x00
41#define USB_MASS_STORE_CBI1 0x01
42#define USB_MASS_STORE_BOT 0x50
43
44//
45// Standard device request and request type
46// USB 2.0 spec, Section 9.4
47//
48#define USB_DEV_GET_STATUS 0x00
49#define USB_DEV_GET_STATUS_REQ_TYPE_D 0x80 // Receiver : Device
50#define USB_DEV_GET_STATUS_REQ_TYPE_I 0x81 // Receiver : Interface
51#define USB_DEV_GET_STATUS_REQ_TYPE_E 0x82 // Receiver : Endpoint
52
53#define USB_DEV_CLEAR_FEATURE 0x01
54#define USB_DEV_CLEAR_FEATURE_REQ_TYPE_D 0x00 // Receiver : Device
55#define USB_DEV_CLEAR_FEATURE_REQ_TYPE_I 0x01 // Receiver : Interface
56#define USB_DEV_CLEAR_FEATURE_REQ_TYPE_E 0x02 // Receiver : Endpoint
57
58#define USB_DEV_SET_FEATURE 0x03
59#define USB_DEV_SET_FEATURE_REQ_TYPE_D 0x00 // Receiver : Device
60#define USB_DEV_SET_FEATURE_REQ_TYPE_I 0x01 // Receiver : Interface
61#define USB_DEV_SET_FEATURE_REQ_TYPE_E 0x02 // Receiver : Endpoint
62
63#define USB_DEV_SET_ADDRESS 0x05
64#define USB_DEV_SET_ADDRESS_REQ_TYPE 0x00
65
66#define USB_DEV_GET_DESCRIPTOR 0x06
67#define USB_DEV_GET_DESCRIPTOR_REQ_TYPE 0x80
68
69#define USB_DEV_SET_DESCRIPTOR 0x07
70#define USB_DEV_SET_DESCRIPTOR_REQ_TYPE 0x00
71
72#define USB_DEV_GET_CONFIGURATION 0x08
73#define USB_DEV_GET_CONFIGURATION_REQ_TYPE 0x80
74
75#define USB_DEV_SET_CONFIGURATION 0x09
76#define USB_DEV_SET_CONFIGURATION_REQ_TYPE 0x00
77
78#define USB_DEV_GET_INTERFACE 0x0A
79#define USB_DEV_GET_INTERFACE_REQ_TYPE 0x81
80
81#define USB_DEV_SET_INTERFACE 0x0B
82#define USB_DEV_SET_INTERFACE_REQ_TYPE 0x01
83
84#define USB_DEV_SYNCH_FRAME 0x0C
85#define USB_DEV_SYNCH_FRAME_REQ_TYPE 0x82
86
87
88//
89// USB standard descriptors and reqeust
90//
91#pragma pack(1)
92
104
125
140
156
169
179
180#pragma pack()
181
182
183typedef enum {
184 //
185 // USB request type
186 //
188 USB_REQ_TYPE_CLASS = (0x01 << 5),
189 USB_REQ_TYPE_VENDOR = (0x02 << 5),
190
191 //
192 // Standard control transfer request type, or the value
193 // to fill in EFI_USB_DEVICE_REQUEST.Request
194 //
206
207 //
208 // Usb control transfer target
209 //
214
215 //
216 // USB Descriptor types
217 //
225
226 //
227 // Features to be cleared by CLEAR_FEATURE requests
228 //
230
231 //
232 // USB endpoint types: 00: control, 01: isochronous, 10: bulk, 11: interrupt
233 //
238
241
242 //
243 //Use 200 ms to increase the error handling response time
244 //
247
248
249//
250// HID constants definition, see Device Class Definition
251// for Human Interface Devices (HID) rev1.11
252//
253
254//
255// HID standard GET_DESCRIPTOR request.
256//
257#define USB_HID_GET_DESCRIPTOR_REQ_TYPE 0x81
258
259//
260// HID specific requests.
261//
262#define USB_HID_CLASS_GET_REQ_TYPE 0xa1
263#define USB_HID_CLASS_SET_REQ_TYPE 0x21
264
265//
266// HID report item format
267//
268#define HID_ITEM_FORMAT_SHORT 0
269#define HID_ITEM_FORMAT_LONG 1
270
271//
272// Special tag indicating long items
273//
274#define HID_ITEM_TAG_LONG 15
275
276//
277// HID report descriptor item type (prefix bit 2,3)
278//
279#define HID_ITEM_TYPE_MAIN 0
280#define HID_ITEM_TYPE_GLOBAL 1
281#define HID_ITEM_TYPE_LOCAL 2
282#define HID_ITEM_TYPE_RESERVED 3
283
284//
285// HID report descriptor main item tags
286//
287#define HID_MAIN_ITEM_TAG_INPUT 8
288#define HID_MAIN_ITEM_TAG_OUTPUT 9
289#define HID_MAIN_ITEM_TAG_FEATURE 11
290#define HID_MAIN_ITEM_TAG_BEGIN_COLLECTION 10
291#define HID_MAIN_ITEM_TAG_END_COLLECTION 12
292
293//
294// HID report descriptor main item contents
295//
296#define HID_MAIN_ITEM_CONSTANT 0x001
297#define HID_MAIN_ITEM_VARIABLE 0x002
298#define HID_MAIN_ITEM_RELATIVE 0x004
299#define HID_MAIN_ITEM_WRAP 0x008
300#define HID_MAIN_ITEM_NONLINEAR 0x010
301#define HID_MAIN_ITEM_NO_PREFERRED 0x020
302#define HID_MAIN_ITEM_NULL_STATE 0x040
303#define HID_MAIN_ITEM_VOLATILE 0x080
304#define HID_MAIN_ITEM_BUFFERED_BYTE 0x100
305
306//
307// HID report descriptor collection item types
308//
309#define HID_COLLECTION_PHYSICAL 0
310#define HID_COLLECTION_APPLICATION 1
311#define HID_COLLECTION_LOGICAL 2
312
313//
314// HID report descriptor global item tags
315//
316#define HID_GLOBAL_ITEM_TAG_USAGE_PAGE 0
317#define HID_GLOBAL_ITEM_TAG_LOGICAL_MINIMUM 1
318#define HID_GLOBAL_ITEM_TAG_LOGICAL_MAXIMUM 2
319#define HID_GLOBAL_ITEM_TAG_PHYSICAL_MINIMUM 3
320#define HID_GLOBAL_ITEM_TAG_PHYSICAL_MAXIMUM 4
321#define HID_GLOBAL_ITEM_TAG_UNIT_EXPONENT 5
322#define HID_GLOBAL_ITEM_TAG_UNIT 6
323#define HID_GLOBAL_ITEM_TAG_REPORT_SIZE 7
324#define HID_GLOBAL_ITEM_TAG_REPORT_ID 8
325#define HID_GLOBAL_ITEM_TAG_REPORT_COUNT 9
326#define HID_GLOBAL_ITEM_TAG_PUSH 10
327#define HID_GLOBAL_ITEM_TAG_POP 11
328
329//
330// HID report descriptor local item tags
331//
332#define HID_LOCAL_ITEM_TAG_USAGE 0
333#define HID_LOCAL_ITEM_TAG_USAGE_MINIMUM 1
334#define HID_LOCAL_ITEM_TAG_USAGE_MAXIMUM 2
335#define HID_LOCAL_ITEM_TAG_DESIGNATOR_INDEX 3
336#define HID_LOCAL_ITEM_TAG_DESIGNATOR_MINIMUM 4
337#define HID_LOCAL_ITEM_TAG_DESIGNATOR_MAXIMUM 5
338#define HID_LOCAL_ITEM_TAG_STRING_INDEX 7
339#define HID_LOCAL_ITEM_TAG_STRING_MINIMUM 8
340#define HID_LOCAL_ITEM_TAG_STRING_MAXIMUM 9
341#define HID_LOCAL_ITEM_TAG_DELIMITER 10
342
343//
344// HID report types
345//
346#define HID_INPUT_REPORT 1
347#define HID_OUTPUT_REPORT 2
348#define HID_FEATURE_REPORT 3
349
350//
351// HID class protocol request
352//
353#define EFI_USB_GET_REPORT_REQUEST 0x01
354#define EFI_USB_GET_IDLE_REQUEST 0x02
355#define EFI_USB_GET_PROTOCOL_REQUEST 0x03
356#define EFI_USB_SET_REPORT_REQUEST 0x09
357#define EFI_USB_SET_IDLE_REQUEST 0x0a
358#define EFI_USB_SET_PROTOCOL_REQUEST 0x0b
359
360#pragma pack(1)
369
383
384#pragma pack()
385
386#endif
unsigned short CHAR16
Definition ProcessorBind.h:105
struct hid_class_descriptor EFI_USB_HID_CLASS_DESCRIPTOR
struct hid_descriptor EFI_USB_HID_DESCRIPTOR
USB_TYPES_DEFINITION
Definition Usb.h:183
@ USB_DESC_TYPE_REPORT
Definition Usb.h:224
@ USB_REQ_SYNCH_FRAME
Definition Usb.h:205
@ USB_TARGET_INTERFACE
Definition Usb.h:211
@ USB_DESC_TYPE_ENDPOINT
Definition Usb.h:222
@ USB_REQ_SET_INTERFACE
Definition Usb.h:204
@ USB_REQ_GET_DESCRIPTOR
Definition Usb.h:199
@ USB_REQ_SET_DESCRIPTOR
Definition Usb.h:200
@ USB_ENDPOINT_TYPE_MASK
Definition Usb.h:239
@ USB_ENDPOINT_DIR_IN
Definition Usb.h:240
@ USB_DESC_TYPE_CONFIG
Definition Usb.h:219
@ USB_REQ_CLEAR_FEATURE
Definition Usb.h:196
@ USB_DESC_TYPE_HID
Definition Usb.h:223
@ USB_DESC_TYPE_INTERFACE
Definition Usb.h:221
@ USB_DESC_TYPE_DEVICE
Definition Usb.h:218
@ USB_TARGET_ENDPOINT
Definition Usb.h:212
@ USB_ENDPOINT_ISO
Definition Usb.h:235
@ USB_REQ_GET_INTERFACE
Definition Usb.h:203
@ USB_REQ_SET_ADDRESS
Definition Usb.h:198
@ USB_ENDPOINT_BULK
Definition Usb.h:236
@ USB_TARGET_DEVICE
Definition Usb.h:210
@ USB_REQ_GET_STATUS
Definition Usb.h:195
@ USB_ENDPOINT_CONTROL
Definition Usb.h:234
@ USB_REQ_TYPE_STANDARD
Definition Usb.h:187
@ USB_TARGET_OTHER
Definition Usb.h:213
@ EFI_USB_INTERRUPT_DELAY
Definition Usb.h:245
@ USB_REQ_GET_CONFIG
Definition Usb.h:201
@ USB_REQ_SET_FEATURE
Definition Usb.h:197
@ USB_REQ_SET_CONFIG
Definition Usb.h:202
@ USB_ENDPOINT_INTERRUPT
Definition Usb.h:237
@ USB_FEATURE_ENDPOINT_HALT
Definition Usb.h:229
@ USB_REQ_TYPE_CLASS
Definition Usb.h:188
@ USB_REQ_TYPE_VENDOR
Definition Usb.h:189
@ USB_DESC_TYPE_STRING
Definition Usb.h:220
unsigned short UINT16
Definition actypes.h:237
unsigned char UINT8
Definition actypes.h:236
Definition Usb.h:174
UINT8 DescriptorType
Definition Usb.h:176
UINT8 Length
Definition Usb.h:175
Definition Usb.h:130
UINT8 ConfigurationValue
Definition Usb.h:135
UINT16 TotalLength
Definition Usb.h:133
UINT8 Configuration
Definition Usb.h:136
UINT8 MaxPower
Definition Usb.h:138
UINT8 DescriptorType
Definition Usb.h:132
UINT8 NumInterfaces
Definition Usb.h:134
UINT8 Attributes
Definition Usb.h:137
UINT8 Length
Definition Usb.h:131
Definition Usb.h:109
UINT16 IdVendor
Definition Usb.h:117
UINT8 Length
Definition Usb.h:110
UINT8 StrProduct
Definition Usb.h:121
UINT8 DeviceProtocol
Definition Usb.h:115
UINT8 MaxPacketSize0
Definition Usb.h:116
UINT8 NumConfigurations
Definition Usb.h:123
UINT16 BcdDevice
Definition Usb.h:119
UINT8 DeviceSubClass
Definition Usb.h:114
UINT16 BcdUSB
Definition Usb.h:112
UINT8 DeviceClass
Definition Usb.h:113
UINT16 IdProduct
Definition Usb.h:118
UINT8 DescriptorType
Definition Usb.h:111
UINT8 StrManufacturer
Definition Usb.h:120
UINT8 StrSerialNumber
Definition Usb.h:122
Definition Usb.h:97
UINT16 Length
Definition Usb.h:102
UINT8 Request
Definition Usb.h:99
UINT16 Value
Definition Usb.h:100
UINT8 RequestType
Definition Usb.h:98
UINT16 Index
Definition Usb.h:101
Definition Usb.h:161
UINT8 Length
Definition Usb.h:162
UINT8 EndpointAddress
Definition Usb.h:164
UINT8 DescriptorType
Definition Usb.h:163
UINT8 Interval
Definition Usb.h:167
UINT8 Attributes
Definition Usb.h:165
UINT16 MaxPacketSize
Definition Usb.h:166
Definition Usb.h:145
UINT8 Length
Definition Usb.h:146
UINT8 Interface
Definition Usb.h:154
UINT8 DescriptorType
Definition Usb.h:147
UINT8 InterfaceSubClass
Definition Usb.h:152
UINT8 InterfaceClass
Definition Usb.h:151
UINT8 InterfaceNumber
Definition Usb.h:148
UINT8 AlternateSetting
Definition Usb.h:149
UINT8 InterfaceProtocol
Definition Usb.h:153
UINT8 NumEndpoints
Definition Usb.h:150
Definition Usb.h:365
UINT16 DescriptorLength
Definition Usb.h:367
UINT8 DescriptorType
Definition Usb.h:366
Definition Usb.h:375
UINT8 DescriptorType
Definition Usb.h:377
UINT8 NumDescriptors
Definition Usb.h:380
UINT8 Length
Definition Usb.h:376
EFI_USB_HID_CLASS_DESCRIPTOR HidClassDesc[1]
Definition Usb.h:381
UINT8 CountryCode
Definition Usb.h:379
UINT16 BcdHID
Definition Usb.h:378