iPXE
UsbIo.h
Go to the documentation of this file.
1 /** @file
2  EFI Usb I/O Protocol as defined in UEFI specification.
3  This protocol is used by code, typically drivers, running in the EFI
4  boot services environment to access USB devices like USB keyboards,
5  mice and mass storage devices. In particular, functions for managing devices
6  on USB buses are defined here.
7 
8  Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>
9  This program and the accompanying materials
10  are licensed and made available under the terms and conditions of the BSD License
11  which accompanies this distribution. The full text of the license may be found at
12  http://opensource.org/licenses/bsd-license.php
13 
14  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
15  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
16 
17 **/
18 
19 #ifndef __USB_IO_H__
20 #define __USB_IO_H__
21 
22 FILE_LICENCE ( BSD3 );
23 
25 
26 //
27 // Global ID for the USB I/O Protocol
28 //
29 #define EFI_USB_IO_PROTOCOL_GUID \
30  { \
31  0x2B2F68D6, 0x0CD2, 0x44cf, {0x8E, 0x8B, 0xBB, 0xA2, 0x0B, 0x1B, 0x5B, 0x75 } \
32  }
33 
35 
36 //
37 // Related Definition for EFI USB I/O protocol
38 //
39 
40 //
41 // USB standard descriptors and reqeust
42 //
48 
49 ///
50 /// USB data transfer direction
51 ///
52 typedef enum {
57 
58 //
59 // USB Transfer Results
60 //
61 #define EFI_USB_NOERROR 0x00
62 #define EFI_USB_ERR_NOTEXECUTE 0x01
63 #define EFI_USB_ERR_STALL 0x02
64 #define EFI_USB_ERR_BUFFER 0x04
65 #define EFI_USB_ERR_BABBLE 0x08
66 #define EFI_USB_ERR_NAK 0x10
67 #define EFI_USB_ERR_CRC 0x20
68 #define EFI_USB_ERR_TIMEOUT 0x40
69 #define EFI_USB_ERR_BITSTUFF 0x80
70 #define EFI_USB_ERR_SYSTEM 0x100
71 
72 /**
73  Async USB transfer callback routine.
74 
75  @param Data Data received or sent via the USB Asynchronous Transfer, if the
76  transfer completed successfully.
77  @param DataLength The length of Data received or sent via the Asynchronous
78  Transfer, if transfer successfully completes.
79  @param Context Data passed from UsbAsyncInterruptTransfer() request.
80  @param Status Indicates the result of the asynchronous transfer.
81 
82  @retval EFI_SUCCESS The asynchronous USB transfer request has been successfully executed.
83  @retval EFI_DEVICE_ERROR The asynchronous USB transfer request failed.
84 
85 **/
86 typedef
89  IN VOID *Data,
91  IN VOID *Context,
93  );
94 
95 //
96 // Prototype for EFI USB I/O protocol
97 //
98 
99 
100 /**
101  This function is used to manage a USB device with a control transfer pipe. A control transfer is
102  typically used to perform device initialization and configuration.
103 
104  @param This A pointer to the EFI_USB_IO_PROTOCOL instance.
105  @param Request A pointer to the USB device request that will be sent to the USB
106  device.
107  @param Direction Indicates the data direction.
108  @param Timeout Indicating the transfer should be completed within this time frame.
109  The units are in milliseconds.
110  @param Data A pointer to the buffer of data that will be transmitted to USB
111  device or received from USB device.
112  @param DataLength The size, in bytes, of the data buffer specified by Data.
113  @param Status A pointer to the result of the USB transfer.
114 
115  @retval EFI_SUCCESS The control transfer has been successfully executed.
116  @retval EFI_DEVICE_ERROR The transfer failed. The transfer status is returned in Status.
117  @retval EFI_INVALID_PARAMETE One or more parameters are invalid.
118  @retval EFI_OUT_OF_RESOURCES The request could not be completed due to a lack of resources.
119  @retval EFI_TIMEOUT The control transfer fails due to timeout.
120 
121 **/
122 typedef
125  IN EFI_USB_IO_PROTOCOL *This,
126  IN EFI_USB_DEVICE_REQUEST *Request,
127  IN EFI_USB_DATA_DIRECTION Direction,
128  IN UINT32 Timeout,
129  IN OUT VOID *Data OPTIONAL,
131  OUT UINT32 *Status
132  );
133 
134 /**
135  This function is used to manage a USB device with the bulk transfer pipe. Bulk Transfers are
136  typically used to transfer large amounts of data to/from USB devices.
137 
138  @param This A pointer to the EFI_USB_IO_PROTOCOL instance.
139  @param DeviceEndpoint The destination USB device endpoint to which the
140  device request is being sent. DeviceEndpoint must
141  be between 0x01 and 0x0F or between 0x81 and 0x8F,
142  otherwise EFI_INVALID_PARAMETER is returned. If
143  the endpoint is not a BULK endpoint, EFI_INVALID_PARAMETER
144  is returned. The MSB of this parameter indicates
145  the endpoint direction. The number "1" stands for
146  an IN endpoint, and "0" stands for an OUT endpoint.
147  @param Data A pointer to the buffer of data that will be transmitted to USB
148  device or received from USB device.
149  @param DataLength The size, in bytes, of the data buffer specified by Data.
150  On input, the size, in bytes, of the data buffer specified by Data.
151  On output, the number of bytes that were actually transferred.
152  @param Timeout Indicating the transfer should be completed within this time frame.
153  The units are in milliseconds. If Timeout is 0, then the
154  caller must wait for the function to be completed until
155  EFI_SUCCESS or EFI_DEVICE_ERROR is returned.
156  @param Status This parameter indicates the USB transfer status.
157 
158  @retval EFI_SUCCESS The bulk transfer has been successfully executed.
159  @retval EFI_DEVICE_ERROR The transfer failed. The transfer status is returned in Status.
160  @retval EFI_INVALID_PARAMETE One or more parameters are invalid.
161  @retval EFI_OUT_OF_RESOURCES The request could not be submitted due to a lack of resources.
162  @retval EFI_TIMEOUT The control transfer fails due to timeout.
163 
164 **/
165 typedef
168  IN EFI_USB_IO_PROTOCOL *This,
169  IN UINT8 DeviceEndpoint,
170  IN OUT VOID *Data,
172  IN UINTN Timeout,
173  OUT UINT32 *Status
174  );
175 
176 /**
177  This function is used to manage a USB device with an interrupt transfer pipe. An Asynchronous
178  Interrupt Transfer is typically used to query a device's status at a fixed rate. For example,
179  keyboard, mouse, and hub devices use this type of transfer to query their interrupt endpoints at
180  a fixed rate.
181 
182  @param This A pointer to the EFI_USB_IO_PROTOCOL instance.
183  @param DeviceEndpoint The destination USB device endpoint to which the
184  device request is being sent. DeviceEndpoint must
185  be between 0x01 and 0x0F or between 0x81 and 0x8F,
186  otherwise EFI_INVALID_PARAMETER is returned. If
187  the endpoint is not a BULK endpoint, EFI_INVALID_PARAMETER
188  is returned. The MSB of this parameter indicates
189  the endpoint direction. The number "1" stands for
190  an IN endpoint, and "0" stands for an OUT endpoint.
191  @param IsNewTransfer If TRUE, a new transfer will be submitted to USB controller. If
192  FALSE, the interrupt transfer is deleted from the device's interrupt
193  transfer queue.
194  @param PollingInterval Indicates the periodic rate, in milliseconds, that the transfer is to be
195  executed.This parameter is required when IsNewTransfer is TRUE. The
196  value must be between 1 to 255, otherwise EFI_INVALID_PARAMETER is returned.
197  The units are in milliseconds.
198  @param DataLength Specifies the length, in bytes, of the data to be received from the
199  USB device. This parameter is only required when IsNewTransfer is TRUE.
200  @param InterruptCallback The Callback function. This function is called if the asynchronous
201  interrupt transfer is completed. This parameter is required
202  when IsNewTransfer is TRUE.
203  @param Context Data passed to the InterruptCallback function. This is an optional
204  parameter and may be NULL.
205 
206  @retval EFI_SUCCESS The asynchronous USB transfer request transfer has been successfully executed.
207  @retval EFI_DEVICE_ERROR The asynchronous USB transfer request failed.
208 
209 **/
210 typedef
213  IN EFI_USB_IO_PROTOCOL *This,
214  IN UINT8 DeviceEndpoint,
215  IN BOOLEAN IsNewTransfer,
216  IN UINTN PollingInterval OPTIONAL,
218  IN EFI_ASYNC_USB_TRANSFER_CALLBACK InterruptCallBack OPTIONAL,
219  IN VOID *Context OPTIONAL
220  );
221 
222 /**
223  This function is used to manage a USB device with an interrupt transfer pipe.
224 
225  @param This A pointer to the EFI_USB_IO_PROTOCOL instance.
226  @param DeviceEndpoint The destination USB device endpoint to which the
227  device request is being sent. DeviceEndpoint must
228  be between 0x01 and 0x0F or between 0x81 and 0x8F,
229  otherwise EFI_INVALID_PARAMETER is returned. If
230  the endpoint is not a BULK endpoint, EFI_INVALID_PARAMETER
231  is returned. The MSB of this parameter indicates
232  the endpoint direction. The number "1" stands for
233  an IN endpoint, and "0" stands for an OUT endpoint.
234  @param Data A pointer to the buffer of data that will be transmitted to USB
235  device or received from USB device.
236  @param DataLength On input, then size, in bytes, of the buffer Data. On output, the
237  amount of data actually transferred.
238  @param Timeout The time out, in seconds, for this transfer. If Timeout is 0,
239  then the caller must wait for the function to be completed
240  until EFI_SUCCESS or EFI_DEVICE_ERROR is returned. If the
241  transfer is not completed in this time frame, then EFI_TIMEOUT is returned.
242  @param Status This parameter indicates the USB transfer status.
243 
244  @retval EFI_SUCCESS The sync interrupt transfer has been successfully executed.
245  @retval EFI_INVALID_PARAMETER One or more parameters are invalid.
246  @retval EFI_DEVICE_ERROR The sync interrupt transfer request failed.
247  @retval EFI_OUT_OF_RESOURCES The request could not be submitted due to a lack of resources.
248  @retval EFI_TIMEOUT The transfer fails due to timeout.
249 **/
250 typedef
253  IN EFI_USB_IO_PROTOCOL *This,
254  IN UINT8 DeviceEndpoint,
255  IN OUT VOID *Data,
257  IN UINTN Timeout,
258  OUT UINT32 *Status
259  );
260 
261 /**
262  This function is used to manage a USB device with an isochronous transfer pipe. An Isochronous
263  transfer is typically used to transfer streaming data.
264 
265  @param This A pointer to the EFI_USB_IO_PROTOCOL instance.
266  @param DeviceEndpoint The destination USB device endpoint to which the
267  device request is being sent. DeviceEndpoint must
268  be between 0x01 and 0x0F or between 0x81 and 0x8F,
269  otherwise EFI_INVALID_PARAMETER is returned. If
270  the endpoint is not a BULK endpoint, EFI_INVALID_PARAMETER
271  is returned. The MSB of this parameter indicates
272  the endpoint direction. The number "1" stands for
273  an IN endpoint, and "0" stands for an OUT endpoint.
274  @param Data A pointer to the buffer of data that will be transmitted to USB
275  device or received from USB device.
276  @param DataLength The size, in bytes, of the data buffer specified by Data.
277  @param Status This parameter indicates the USB transfer status.
278 
279  @retval EFI_SUCCESS The isochronous transfer has been successfully executed.
280  @retval EFI_INVALID_PARAMETER The parameter DeviceEndpoint is not valid.
281  @retval EFI_DEVICE_ERROR The transfer failed due to the reason other than timeout, The error status
282  is returned in Status.
283  @retval EFI_OUT_OF_RESOURCES The request could not be submitted due to a lack of resources.
284  @retval EFI_TIMEOUT The transfer fails due to timeout.
285 **/
286 typedef
289  IN EFI_USB_IO_PROTOCOL *This,
290  IN UINT8 DeviceEndpoint,
291  IN OUT VOID *Data,
293  OUT UINT32 *Status
294  );
295 
296 /**
297  This function is used to manage a USB device with an isochronous transfer pipe. An Isochronous
298  transfer is typically used to transfer streaming data.
299 
300  @param This A pointer to the EFI_USB_IO_PROTOCOL instance.
301  @param DeviceEndpoint The destination USB device endpoint to which the
302  device request is being sent. DeviceEndpoint must
303  be between 0x01 and 0x0F or between 0x81 and 0x8F,
304  otherwise EFI_INVALID_PARAMETER is returned. If
305  the endpoint is not a BULK endpoint, EFI_INVALID_PARAMETER
306  is returned. The MSB of this parameter indicates
307  the endpoint direction. The number "1" stands for
308  an IN endpoint, and "0" stands for an OUT endpoint.
309  @param Data A pointer to the buffer of data that will be transmitted to USB
310  device or received from USB device.
311  @param DataLength The size, in bytes, of the data buffer specified by Data.
312  This is an optional parameter and may be NULL.
313  @param IsochronousCallback The IsochronousCallback() function.This function is
314  called if the requested isochronous transfer is completed.
315  @param Context Data passed to the IsochronousCallback() function.
316 
317  @retval EFI_SUCCESS The asynchronous isochronous transfer has been successfully submitted
318  to the system.
319  @retval EFI_INVALID_PARAMETER The parameter DeviceEndpoint is not valid.
320  @retval EFI_OUT_OF_RESOURCES The request could not be submitted due to a lack of resources.
321 
322 **/
323 typedef
326  IN EFI_USB_IO_PROTOCOL *This,
327  IN UINT8 DeviceEndpoint,
328  IN OUT VOID *Data,
330  IN EFI_ASYNC_USB_TRANSFER_CALLBACK IsochronousCallBack,
331  IN VOID *Context OPTIONAL
332  );
333 
334 /**
335  Resets and reconfigures the USB controller. This function will work for all USB devices except
336  USB Hub Controllers.
337 
338  @param This A pointer to the EFI_USB_IO_PROTOCOL instance.
339 
340  @retval EFI_SUCCESS The USB controller was reset.
341  @retval EFI_INVALID_PARAMETER If the controller specified by This is a USB hub.
342  @retval EFI_DEVICE_ERROR An error occurred during the reconfiguration process.
343 
344 **/
345 typedef
348  IN EFI_USB_IO_PROTOCOL *This
349  );
350 
351 /**
352  Retrieves the USB Device Descriptor.
353 
354  @param This A pointer to the EFI_USB_IO_PROTOCOL instance.
355  @param DeviceDescriptor A pointer to the caller allocated USB Device Descriptor.
356 
357  @retval EFI_SUCCESS The device descriptor was retrieved successfully.
358  @retval EFI_INVALID_PARAMETER DeviceDescriptor is NULL.
359  @retval EFI_NOT_FOUND The device descriptor was not found. The device may not be configured.
360 
361 **/
362 typedef
365  IN EFI_USB_IO_PROTOCOL *This,
366  OUT EFI_USB_DEVICE_DESCRIPTOR *DeviceDescriptor
367  );
368 
369 /**
370  Retrieves the USB Device Descriptor.
371 
372  @param This A pointer to the EFI_USB_IO_PROTOCOL instance.
373  @param ConfigurationDescriptor A pointer to the caller allocated USB Active Configuration
374  Descriptor.
375  @retval EFI_SUCCESS The active configuration descriptor was retrieved successfully.
376  @retval EFI_INVALID_PARAMETER ConfigurationDescriptor is NULL.
377  @retval EFI_NOT_FOUND An active configuration descriptor cannot be found. The device may not
378  be configured.
379 
380 **/
381 typedef
384  IN EFI_USB_IO_PROTOCOL *This,
385  OUT EFI_USB_CONFIG_DESCRIPTOR *ConfigurationDescriptor
386  );
387 
388 /**
389  Retrieves the Interface Descriptor for a USB Device Controller. As stated earlier, an interface
390  within a USB device is equivalently to a USB Controller within the current configuration.
391 
392  @param This A pointer to the EFI_USB_IO_PROTOCOL instance.
393  @param InterfaceDescriptor A pointer to the caller allocated USB Interface Descriptor within
394  the configuration setting.
395  @retval EFI_SUCCESS The interface descriptor retrieved successfully.
396  @retval EFI_INVALID_PARAMETER InterfaceDescriptor is NULL.
397  @retval EFI_NOT_FOUND The interface descriptor cannot be found. The device may not be
398  correctly configured.
399 
400 **/
401 typedef
404  IN EFI_USB_IO_PROTOCOL *This,
405  OUT EFI_USB_INTERFACE_DESCRIPTOR *InterfaceDescriptor
406  );
407 
408 /**
409  Retrieves an Endpoint Descriptor within a USB Controller.
410 
411  @param This A pointer to the EFI_USB_IO_PROTOCOL instance.
412  @param EndpointIndex Indicates which endpoint descriptor to retrieve.
413  @param EndpointDescriptor A pointer to the caller allocated USB Endpoint Descriptor of
414  a USB controller.
415 
416  @retval EFI_SUCCESS The endpoint descriptor was retrieved successfully.
417  @retval EFI_INVALID_PARAMETER One or more parameters are invalid.
418  @retval EFI_NOT_FOUND The endpoint descriptor cannot be found. The device may not be
419  correctly configured.
420 
421 **/
422 typedef
425  IN EFI_USB_IO_PROTOCOL *This,
426  IN UINT8 EndpointIndex,
427  OUT EFI_USB_ENDPOINT_DESCRIPTOR *EndpointDescriptor
428  );
429 
430 /**
431  Retrieves a string stored in a USB Device.
432 
433  @param This A pointer to the EFI_USB_IO_PROTOCOL instance.
434  @param LangID The Language ID for the string being retrieved.
435  @param StringID The ID of the string being retrieved.
436  @param String A pointer to a buffer allocated by this function with
437  AllocatePool() to store the string.If this function
438  returns EFI_SUCCESS, it stores the string the caller
439  wants to get. The caller should release the string
440  buffer with FreePool() after the string is not used any more.
441 
442  @retval EFI_SUCCESS The string was retrieved successfully.
443  @retval EFI_NOT_FOUND The string specified by LangID and StringID was not found.
444  @retval EFI_OUT_OF_RESOURCES There are not enough resources to allocate the return buffer String.
445 
446 **/
447 typedef
450  IN EFI_USB_IO_PROTOCOL *This,
451  IN UINT16 LangID,
452  IN UINT8 StringID,
453  OUT CHAR16 **String
454  );
455 
456 /**
457  Retrieves all the language ID codes that the USB device supports.
458 
459  @param This A pointer to the EFI_USB_IO_PROTOCOL instance.
460  @param LangIDTable Language ID for the string the caller wants to get.
461  This is a 16-bit ID defined by Microsoft. This
462  buffer pointer is allocated and maintained by
463  the USB Bus Driver, the caller should not modify
464  its contents.
465  @param TableSize The size, in bytes, of the table LangIDTable.
466 
467  @retval EFI_SUCCESS The support languages were retrieved successfully.
468 
469 **/
470 typedef
473  IN EFI_USB_IO_PROTOCOL *This,
474  OUT UINT16 **LangIDTable,
475  OUT UINT16 *TableSize
476  );
477 
478 ///
479 /// The EFI_USB_IO_PROTOCOL provides four basic transfers types described
480 /// in the USB 1.1 Specification. These include control transfer, interrupt
481 /// transfer, bulk transfer and isochronous transfer. The EFI_USB_IO_PROTOCOL
482 /// also provides some basic USB device/controller management and configuration
483 /// interfaces. A USB device driver uses the services of this protocol to manage USB devices.
484 ///
486  //
487  // IO transfer
488  //
495 
496  //
497  // Common device request
498  //
505 
506  //
507  // Reset controller's parent port
508  //
510 };
511 
513 
514 #endif
#define OPTIONAL
Passing the datum to the function is optional, and a NULL is passed if the value is not supplied.
Definition: Base.h:340
EFI_STATUS(EFIAPI * EFI_USB_IO_PORT_RESET)(IN EFI_USB_IO_PROTOCOL *This)
Resets and reconfigures the USB controller.
Definition: UsbIo.h:347
EFI_USB_IO_PORT_RESET UsbPortReset
Definition: UsbIo.h:509
EFI_USB_IO_ASYNC_ISOCHRONOUS_TRANSFER UsbAsyncIsochronousTransfer
Definition: UsbIo.h:494
USB_ENDPOINT_DESCRIPTOR EFI_USB_ENDPOINT_DESCRIPTOR
Definition: UsbIo.h:47
USB_DEVICE_DESCRIPTOR EFI_USB_DEVICE_DESCRIPTOR
Definition: UsbIo.h:44
128 bit buffer containing a unique identifier value.
Definition: Base.h:263
EFI_STATUS(EFIAPI * EFI_USB_IO_ISOCHRONOUS_TRANSFER)(IN EFI_USB_IO_PROTOCOL *This, IN UINT8 DeviceEndpoint, IN OUT VOID *Data, IN UINTN DataLength, OUT UINT32 *Status)
This function is used to manage a USB device with an isochronous transfer pipe.
Definition: UsbIo.h:288
PXENV_STATUS_t Status
PXE status code.
Definition: pxe_api.h:57
unsigned char BOOLEAN
Definition: ProcessorBind.h:61
EFI_USB_IO_ASYNC_INTERRUPT_TRANSFER UsbAsyncInterruptTransfer
Definition: UsbIo.h:491
FILE_LICENCE(BSD3)
EFI_USB_IO_GET_ENDPOINT_DESCRIPTOR UsbGetEndpointDescriptor
Definition: UsbIo.h:502
Standard Interface Descriptor USB 2.0 spec, Section 9.6.5.
Definition: Usb.h:147
unsigned int UINT32
Definition: ProcessorBind.h:56
Support for USB 2.0 standard.
The EFI_USB_IO_PROTOCOL provides four basic transfers types described in the USB 1....
Definition: UsbIo.h:485
unsigned short CHAR16
Definition: ProcessorBind.h:59
EFI_STATUS(EFIAPI * EFI_USB_IO_GET_CONFIG_DESCRIPTOR)(IN EFI_USB_IO_PROTOCOL *This, OUT EFI_USB_CONFIG_DESCRIPTOR *ConfigurationDescriptor)
Retrieves the USB Device Descriptor.
Definition: UsbIo.h:383
USB_INTERFACE_DESCRIPTOR EFI_USB_INTERFACE_DESCRIPTOR
Definition: UsbIo.h:46
EFI_USB_DATA_DIRECTION
USB data transfer direction.
Definition: UsbIo.h:52
EFI_STATUS(EFIAPI * EFI_USB_IO_GET_SUPPORTED_LANGUAGE)(IN EFI_USB_IO_PROTOCOL *This, OUT UINT16 **LangIDTable, OUT UINT16 *TableSize)
Retrieves all the language ID codes that the USB device supports.
Definition: UsbIo.h:472
unsigned char UINT8
Definition: ProcessorBind.h:62
EFI_STATUS(EFIAPI * EFI_USB_IO_SYNC_INTERRUPT_TRANSFER)(IN EFI_USB_IO_PROTOCOL *This, IN UINT8 DeviceEndpoint, IN OUT VOID *Data, IN OUT UINTN *DataLength, IN UINTN Timeout, OUT UINT32 *Status)
This function is used to manage a USB device with an interrupt transfer pipe.
Definition: UsbIo.h:252
EFI_STATUS(EFIAPI * EFI_USB_IO_CONTROL_TRANSFER)(IN EFI_USB_IO_PROTOCOL *This, IN EFI_USB_DEVICE_REQUEST *Request, IN EFI_USB_DATA_DIRECTION Direction, IN UINT32 Timeout, IN OUT VOID *Data OPTIONAL, IN UINTN DataLength OPTIONAL, OUT UINT32 *Status)
This function is used to manage a USB device with a control transfer pipe.
Definition: UsbIo.h:124
EFI_STATUS(EFIAPI * EFI_USB_IO_GET_INTERFACE_DESCRIPTOR)(IN EFI_USB_IO_PROTOCOL *This, OUT EFI_USB_INTERFACE_DESCRIPTOR *InterfaceDescriptor)
Retrieves the Interface Descriptor for a USB Device Controller.
Definition: UsbIo.h:403
#define OUT
Definition: mlx_utils.h:29
Format of Setup Data for USB Device Requests USB 2.0 spec, Section 9.3.
Definition: Usb.h:99
EFI_USB_IO_ISOCHRONOUS_TRANSFER UsbIsochronousTransfer
Definition: UsbIo.h:493
EFI_STATUS(EFIAPI * EFI_USB_IO_ASYNC_INTERRUPT_TRANSFER)(IN EFI_USB_IO_PROTOCOL *This, IN UINT8 DeviceEndpoint, IN BOOLEAN IsNewTransfer, IN UINTN PollingInterval OPTIONAL, IN UINTN DataLength OPTIONAL, IN EFI_ASYNC_USB_TRANSFER_CALLBACK InterruptCallBack OPTIONAL, IN VOID *Context OPTIONAL)
This function is used to manage a USB device with an interrupt transfer pipe.
Definition: UsbIo.h:212
EFI_GUID gEfiUsbIoProtocolGuid
unsigned short UINT16
Definition: ProcessorBind.h:58
EFI_USB_IO_SYNC_INTERRUPT_TRANSFER UsbSyncInterruptTransfer
Definition: UsbIo.h:492
EFI_STATUS(EFIAPI * EFI_USB_IO_GET_DEVICE_DESCRIPTOR)(IN EFI_USB_IO_PROTOCOL *This, OUT EFI_USB_DEVICE_DESCRIPTOR *DeviceDescriptor)
Retrieves the USB Device Descriptor.
Definition: UsbIo.h:364
EFI_STATUS(EFIAPI * EFI_USB_IO_GET_STRING_DESCRIPTOR)(IN EFI_USB_IO_PROTOCOL *This, IN UINT16 LangID, IN UINT8 StringID, OUT CHAR16 **String)
Retrieves a string stored in a USB Device.
Definition: UsbIo.h:449
#define EFIAPI
UINT64 UINTN
Unsigned value of native width.
Definition: ProcessorBind.h:71
Standard Endpoint Descriptor USB 2.0 spec, Section 9.6.6.
Definition: Usb.h:163
EFI_STATUS(EFIAPI * EFI_USB_IO_GET_ENDPOINT_DESCRIPTOR)(IN EFI_USB_IO_PROTOCOL *This, IN UINT8 EndpointIndex, OUT EFI_USB_ENDPOINT_DESCRIPTOR *EndpointDescriptor)
Retrieves an Endpoint Descriptor within a USB Controller.
Definition: UsbIo.h:424
#define VOID
Undeclared type.
Definition: Base.h:319
EFI_USB_IO_CONTROL_TRANSFER UsbControlTransfer
Definition: UsbIo.h:489
EFI_USB_IO_BULK_TRANSFER UsbBulkTransfer
Definition: UsbIo.h:490
#define IN
Definition: mlx_utils.h:28
USB_DEVICE_REQUEST EFI_USB_DEVICE_REQUEST
Definition: UsbIo.h:43
EFI_STATUS(EFIAPI * EFI_USB_IO_BULK_TRANSFER)(IN EFI_USB_IO_PROTOCOL *This, IN UINT8 DeviceEndpoint, IN OUT VOID *Data, IN OUT UINTN *DataLength, IN UINTN Timeout, OUT UINT32 *Status)
This function is used to manage a USB device with the bulk transfer pipe.
Definition: UsbIo.h:167
EFI_USB_IO_GET_STRING_DESCRIPTOR UsbGetStringDescriptor
Definition: UsbIo.h:503
EFI_USB_IO_GET_DEVICE_DESCRIPTOR UsbGetDeviceDescriptor
Definition: UsbIo.h:499
RETURN_STATUS EFI_STATUS
Function return status for EFI API.
Definition: UefiBaseType.h:35
USB_CONFIG_DESCRIPTOR EFI_USB_CONFIG_DESCRIPTOR
Definition: UsbIo.h:45
Standard Configuration Descriptor USB 2.0 spec, Section 9.6.3.
Definition: Usb.h:132
EFI_STATUS(EFIAPI * EFI_USB_IO_ASYNC_ISOCHRONOUS_TRANSFER)(IN EFI_USB_IO_PROTOCOL *This, IN UINT8 DeviceEndpoint, IN OUT VOID *Data, IN UINTN DataLength, IN EFI_ASYNC_USB_TRANSFER_CALLBACK IsochronousCallBack, IN VOID *Context OPTIONAL)
This function is used to manage a USB device with an isochronous transfer pipe.
Definition: UsbIo.h:325
volatile unsigned int DataLength
Definition: 3c90x.h:52
EFI_USB_IO_GET_SUPPORTED_LANGUAGE UsbGetSupportedLanguages
Definition: UsbIo.h:504
EFI_USB_IO_GET_INTERFACE_DESCRIPTOR UsbGetInterfaceDescriptor
Definition: UsbIo.h:501
Standard Device Descriptor USB 2.0 spec, Section 9.6.1.
Definition: Usb.h:111
EFI_STATUS(EFIAPI * EFI_ASYNC_USB_TRANSFER_CALLBACK)(IN VOID *Data, IN UINTN DataLength, IN VOID *Context, IN UINT32 Status)
Async USB transfer callback routine.
Definition: UsbIo.h:88
EFI_USB_IO_GET_CONFIG_DESCRIPTOR UsbGetConfigDescriptor
Definition: UsbIo.h:500