3 Provides some data structure definitions used by the XHCI host controller driver.
5 Copyright (c) 2011 - 2016, Intel Corporation. All rights reserved.<BR>
6 This program and the accompanying materials
7 are licensed and made available under the terms and conditions of the BSD License
8 which accompanies this distribution. The full text of the license may be found at
9 http://opensource.org/licenses/bsd-license.php
11 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
12 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
21 #include <Protocol/Usb2HostController.h>
22 #include <Protocol/PciIo.h>
24 #include <Guid/EventGroup.h>
26 #include <Library/BaseLib.h>
27 #include <Library/BaseMemoryLib.h>
28 #include <Library/UefiDriverEntryPoint.h>
29 #include <Library/UefiBootServicesTableLib.h>
30 #include <Library/MemoryAllocationLib.h>
31 #include <Library/UefiLib.h>
32 #include <Library/DebugLib.h>
33 #include <Library/ReportStatusCodeLib.h>
35 #include <IndustryStandard/Pci.h>
37 typedef struct _USB_XHCI_INSTANCE USB_XHCI_INSTANCE
;
38 typedef struct _USB_DEV_CONTEXT USB_DEV_CONTEXT
;
41 #include "XhciSched.h"
42 #include "ComponentName.h"
46 // The unit is microsecond, setting it as 1us.
48 #define XHC_1_MICROSECOND (1)
50 // The unit is microsecond, setting it as 1ms.
52 #define XHC_1_MILLISECOND (1000)
54 // XHC generic timeout experience values.
55 // The unit is millisecond, setting it as 10s.
57 #define XHC_GENERIC_TIMEOUT (10 * 1000)
59 // XHC reset timeout experience values.
60 // The unit is millisecond, setting it as 1s.
62 #define XHC_RESET_TIMEOUT (1000)
64 // TRSTRCY delay requirement in usb 2.0 spec chapter 7.1.7.5.
65 // The unit is microsecond, setting it as 10ms.
67 #define XHC_RESET_RECOVERY_DELAY (10 * 1000)
69 // XHC async transfer timer interval, set by experience.
70 // The unit is 100us, takes 1ms as interval.
72 #define XHC_ASYNC_TIMER_INTERVAL EFI_TIMER_PERIOD_MILLISECONDS(1)
75 // XHC raises TPL to TPL_NOTIFY to serialize all its operations
76 // to protect shared data structures.
78 #define XHC_TPL TPL_NOTIFY
80 #define CMD_RING_TRB_NUMBER 0x100
81 #define TR_RING_TRB_NUMBER 0x100
82 #define ERST_NUMBER 0x01
83 #define EVENT_RING_TRB_NUMBER 0x200
89 #define INT_INTER_ASYNC 4
92 // Iterate through the double linked list. This is delete-safe.
93 // Don't touch NextEntry
95 #define EFI_LIST_FOR_EACH_SAFE(Entry, NextEntry, ListHead) \
96 for (Entry = (ListHead)->ForwardLink, NextEntry = Entry->ForwardLink;\
97 Entry != (ListHead); Entry = NextEntry, NextEntry = Entry->ForwardLink)
99 #define EFI_LIST_CONTAINER(Entry, Type, Field) BASE_CR(Entry, Type, Field)
101 #define XHC_LOW_32BIT(Addr64) ((UINT32)(((UINTN)(Addr64)) & 0xFFFFFFFF))
102 #define XHC_HIGH_32BIT(Addr64) ((UINT32)(RShiftU64((UINT64)(UINTN)(Addr64), 32) & 0xFFFFFFFF))
103 #define XHC_BIT_IS_SET(Data, Bit) ((BOOLEAN)(((Data) & (Bit)) == (Bit)))
105 #define XHC_REG_BIT_IS_SET(Xhc, Offset, Bit) \
106 (XHC_BIT_IS_SET(XhcReadOpReg ((Xhc), (Offset)), (Bit)))
108 #define XHCI_IS_DATAIN(EndpointAddr) XHC_BIT_IS_SET((EndpointAddr), 0x80)
110 #define XHCI_INSTANCE_SIG SIGNATURE_32 ('x', 'h', 'c', 'i')
111 #define XHC_FROM_THIS(a) CR(a, USB_XHCI_INSTANCE, Usb2Hc, XHCI_INSTANCE_SIG)
113 #define USB_DESC_TYPE_HUB 0x29
114 #define USB_DESC_TYPE_HUB_SUPER_SPEED 0x2a
117 // The RequestType in EFI_USB_DEVICE_REQUEST is composed of
118 // three fields: One bit direction, 2 bit type, and 5 bit
121 #define USB_REQUEST_TYPE(Dir, Type, Target) \
122 ((UINT8)((((Dir) == EfiUsbDataIn ? 0x01 : 0) << 7) | (Type) | (Target)))
125 // Xhci Data and Ctrl Structures
140 UINT8 HubContrCurrent
;
142 } EFI_USB_HUB_DESCRIPTOR
;
145 struct _USB_DEV_CONTEXT
{
147 // Whether this entry in UsbDevContext array is used or not.
151 // The slot id assigned to the new device through XHCI's Enable_Slot cmd.
155 // The route string presented an attached usb device.
157 USB_DEV_ROUTE RouteString
;
159 // The route string of parent device if it exists. Otherwise it's zero.
161 USB_DEV_ROUTE ParentRouteString
;
163 // The actual device address assigned by XHCI through Address_Device command.
167 // The requested device address from UsbBus driver through Set_Address standard usb request.
168 // As XHCI spec replaces this request with Address_Device command, we have to record the
169 // requested device address and establish a mapping relationship with the actual device address.
170 // Then UsbBus driver just need to be aware of the requested device address to access usb device
171 // through EFI_USB2_HC_PROTOCOL. Xhci driver would be responsible for translating it to actual
172 // device address and access the actual device.
176 // The pointer to the input device context.
180 // The pointer to the output device context.
184 // The transfer queue for every endpoint.
186 VOID
*EndpointTransferRing
[31];
188 // The device descriptor which is stored to support XHCI's Evaluate_Context cmd.
190 EFI_USB_DEVICE_DESCRIPTOR DevDesc
;
192 // As a usb device may include multiple configuration descriptors, we dynamically allocate an array
194 // Note that every configuration descriptor stored here includes those lower level descriptors,
195 // such as Interface descriptor, Endpoint descriptor, and so on.
196 // These information is used to support XHCI's Config_Endpoint cmd.
198 EFI_USB_CONFIG_DESCRIPTOR
**ConfDesc
;
200 // A device has an active Configuration.
202 UINT8 ActiveConfiguration
;
204 // Every interface has an active AlternateSetting.
206 UINT8
*ActiveAlternateSetting
;
209 struct _USB_XHCI_INSTANCE
{
211 EFI_PCI_IO_PROTOCOL
*PciIo
;
212 UINT64 OriginalPciAttributes
;
213 USBHC_MEM_POOL
*MemPool
;
215 EFI_USB2_HC_PROTOCOL Usb2Hc
;
217 EFI_DEVICE_PATH_PROTOCOL
*DevicePath
;
220 // ExitBootServicesEvent is used to set OS semaphore and
221 // stop the XHC DMA operation after exit boot service.
223 EFI_EVENT ExitBootServiceEvent
;
225 LIST_ENTRY AsyncIntTransfers
;
227 UINT8 CapLength
; ///< Capability Register Length
228 XHC_HCSPARAMS1 HcSParams1
; ///< Structural Parameters 1
229 XHC_HCSPARAMS2 HcSParams2
; ///< Structural Parameters 2
230 XHC_HCCPARAMS HcCParams
; ///< Capability Parameters
231 UINT32 DBOff
; ///< Doorbell Offset
232 UINT32 RTSOff
; ///< Runtime Register Space Offset
237 UINT32 MaxScratchpadBufs
;
238 UINT64
*ScratchEntry
;
239 UINTN
*ScratchEntryMap
;
240 UINT32 ExtCapRegBase
;
241 UINT32 UsbLegSupOffset
;
242 UINT32 DebugCapSupOffset
;
249 TRANSFER_RING CmdRing
;
253 EVENT_RING EventRing
;
257 EFI_UNICODE_STRING_TABLE
*ControllerNameTable
;
260 // Store device contexts managed by XHCI instance
261 // The array supports up to 255 devices, entry 0 is reserved and should not be used.
263 USB_DEV_CONTEXT UsbDevContext
[256];
265 BOOLEAN Support64BitDma
; // Whether 64 bit DMA may be used with this device
269 extern EFI_DRIVER_BINDING_PROTOCOL gXhciDriverBinding
;
270 extern EFI_COMPONENT_NAME_PROTOCOL gXhciComponentName
;
271 extern EFI_COMPONENT_NAME2_PROTOCOL gXhciComponentName2
;
274 Test to see if this driver supports ControllerHandle. Any
275 ControllerHandle that has Usb2HcProtocol installed will
278 @param This Protocol instance pointer.
279 @param Controller Handle of device to test.
280 @param RemainingDevicePath Not used.
282 @return EFI_SUCCESS This driver supports this device.
283 @return EFI_UNSUPPORTED This driver does not support this device.
288 XhcDriverBindingSupported (
289 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
290 IN EFI_HANDLE Controller
,
291 IN EFI_DEVICE_PATH_PROTOCOL
*RemainingDevicePath
295 Starting the Usb XHCI Driver.
297 @param This Protocol instance pointer.
298 @param Controller Handle of device to test.
299 @param RemainingDevicePath Not used.
301 @return EFI_SUCCESS supports this device.
302 @return EFI_UNSUPPORTED do not support this device.
303 @return EFI_DEVICE_ERROR cannot be started due to device Error.
304 @return EFI_OUT_OF_RESOURCES cannot allocate resources.
309 XhcDriverBindingStart (
310 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
311 IN EFI_HANDLE Controller
,
312 IN EFI_DEVICE_PATH_PROTOCOL
*RemainingDevicePath
316 Stop this driver on ControllerHandle. Support stopping any child handles
317 created by this driver.
319 @param This Protocol instance pointer.
320 @param Controller Handle of device to stop driver on.
321 @param NumberOfChildren Number of Children in the ChildHandleBuffer.
322 @param ChildHandleBuffer List of handles for the children we need to stop.
324 @return EFI_SUCCESS Success.
325 @return EFI_DEVICE_ERROR Fail.
330 XhcDriverBindingStop (
331 IN EFI_DRIVER_BINDING_PROTOCOL
*This
,
332 IN EFI_HANDLE Controller
,
333 IN UINTN NumberOfChildren
,
334 IN EFI_HANDLE
*ChildHandleBuffer
338 Retrieves the capability of root hub ports.
340 @param This The EFI_USB2_HC_PROTOCOL instance.
341 @param MaxSpeed Max speed supported by the controller.
342 @param PortNumber Number of the root hub ports.
343 @param Is64BitCapable Whether the controller supports 64-bit memory
346 @retval EFI_SUCCESS Host controller capability were retrieved successfully.
347 @retval EFI_INVALID_PARAMETER Either of the three capability pointer is NULL.
353 IN EFI_USB2_HC_PROTOCOL
*This
,
355 OUT UINT8
*PortNumber
,
356 OUT UINT8
*Is64BitCapable
360 Provides software reset for the USB host controller.
362 @param This This EFI_USB2_HC_PROTOCOL instance.
363 @param Attributes A bit mask of the reset operation to perform.
365 @retval EFI_SUCCESS The reset operation succeeded.
366 @retval EFI_INVALID_PARAMETER Attributes is not valid.
367 @retval EFI_UNSUPPOURTED The type of reset specified by Attributes is
368 not currently supported by the host controller.
369 @retval EFI_DEVICE_ERROR Host controller isn't halted to reset.
375 IN EFI_USB2_HC_PROTOCOL
*This
,
380 Retrieve the current state of the USB host controller.
382 @param This This EFI_USB2_HC_PROTOCOL instance.
383 @param State Variable to return the current host controller
386 @retval EFI_SUCCESS Host controller state was returned in State.
387 @retval EFI_INVALID_PARAMETER State is NULL.
388 @retval EFI_DEVICE_ERROR An error was encountered while attempting to
389 retrieve the host controller's current state.
395 IN EFI_USB2_HC_PROTOCOL
*This
,
396 OUT EFI_USB_HC_STATE
*State
400 Sets the USB host controller to a specific state.
402 @param This This EFI_USB2_HC_PROTOCOL instance.
403 @param State The state of the host controller that will be set.
405 @retval EFI_SUCCESS The USB host controller was successfully placed
406 in the state specified by State.
407 @retval EFI_INVALID_PARAMETER State is invalid.
408 @retval EFI_DEVICE_ERROR Failed to set the state due to device error.
414 IN EFI_USB2_HC_PROTOCOL
*This
,
415 IN EFI_USB_HC_STATE State
419 Retrieves the current status of a USB root hub port.
421 @param This This EFI_USB2_HC_PROTOCOL instance.
422 @param PortNumber The root hub port to retrieve the state from.
423 This value is zero-based.
424 @param PortStatus Variable to receive the port state.
426 @retval EFI_SUCCESS The status of the USB root hub port specified.
427 by PortNumber was returned in PortStatus.
428 @retval EFI_INVALID_PARAMETER PortNumber is invalid.
429 @retval EFI_DEVICE_ERROR Can't read register.
434 XhcGetRootHubPortStatus (
435 IN EFI_USB2_HC_PROTOCOL
*This
,
437 OUT EFI_USB_PORT_STATUS
*PortStatus
441 Sets a feature for the specified root hub port.
443 @param This This EFI_USB2_HC_PROTOCOL instance.
444 @param PortNumber Root hub port to set.
445 @param PortFeature Feature to set.
447 @retval EFI_SUCCESS The feature specified by PortFeature was set.
448 @retval EFI_INVALID_PARAMETER PortNumber is invalid or PortFeature is invalid.
449 @retval EFI_DEVICE_ERROR Can't read register.
454 XhcSetRootHubPortFeature (
455 IN EFI_USB2_HC_PROTOCOL
*This
,
457 IN EFI_USB_PORT_FEATURE PortFeature
461 Clears a feature for the specified root hub port.
463 @param This A pointer to the EFI_USB2_HC_PROTOCOL instance.
464 @param PortNumber Specifies the root hub port whose feature is
465 requested to be cleared.
466 @param PortFeature Indicates the feature selector associated with the
467 feature clear request.
469 @retval EFI_SUCCESS The feature specified by PortFeature was cleared
470 for the USB root hub port specified by PortNumber.
471 @retval EFI_INVALID_PARAMETER PortNumber is invalid or PortFeature is invalid.
472 @retval EFI_DEVICE_ERROR Can't read register.
477 XhcClearRootHubPortFeature (
478 IN EFI_USB2_HC_PROTOCOL
*This
,
480 IN EFI_USB_PORT_FEATURE PortFeature
484 Submits control transfer to a target USB device.
486 @param This This EFI_USB2_HC_PROTOCOL instance.
487 @param DeviceAddress The target device address.
488 @param DeviceSpeed Target device speed.
489 @param MaximumPacketLength Maximum packet size the default control transfer
490 endpoint is capable of sending or receiving.
491 @param Request USB device request to send.
492 @param TransferDirection Specifies the data direction for the data stage
493 @param Data Data buffer to be transmitted or received from USB
495 @param DataLength The size (in bytes) of the data buffer.
496 @param Timeout Indicates the maximum timeout, in millisecond.
497 @param Translator Transaction translator to be used by this device.
498 @param TransferResult Return the result of this control transfer.
500 @retval EFI_SUCCESS Transfer was completed successfully.
501 @retval EFI_OUT_OF_RESOURCES The transfer failed due to lack of resources.
502 @retval EFI_INVALID_PARAMETER Some parameters are invalid.
503 @retval EFI_TIMEOUT Transfer failed due to timeout.
504 @retval EFI_DEVICE_ERROR Transfer failed due to host controller or device error.
510 IN EFI_USB2_HC_PROTOCOL
*This
,
511 IN UINT8 DeviceAddress
,
512 IN UINT8 DeviceSpeed
,
513 IN UINTN MaximumPacketLength
,
514 IN EFI_USB_DEVICE_REQUEST
*Request
,
515 IN EFI_USB_DATA_DIRECTION TransferDirection
,
517 IN OUT UINTN
*DataLength
,
519 IN EFI_USB2_HC_TRANSACTION_TRANSLATOR
*Translator
,
520 OUT UINT32
*TransferResult
524 Submits bulk transfer to a bulk endpoint of a USB device.
526 @param This This EFI_USB2_HC_PROTOCOL instance.
527 @param DeviceAddress Target device address.
528 @param EndPointAddress Endpoint number and its direction in bit 7.
529 @param DeviceSpeed Device speed, Low speed device doesn't support bulk
531 @param MaximumPacketLength Maximum packet size the endpoint is capable of
532 sending or receiving.
533 @param DataBuffersNumber Number of data buffers prepared for the transfer.
534 @param Data Array of pointers to the buffers of data to transmit
535 from or receive into.
536 @param DataLength The lenght of the data buffer.
537 @param DataToggle On input, the initial data toggle for the transfer;
538 On output, it is updated to to next data toggle to
539 use of the subsequent bulk transfer.
540 @param Timeout Indicates the maximum time, in millisecond, which
541 the transfer is allowed to complete.
542 @param Translator A pointr to the transaction translator data.
543 @param TransferResult A pointer to the detailed result information of the
546 @retval EFI_SUCCESS The transfer was completed successfully.
547 @retval EFI_OUT_OF_RESOURCES The transfer failed due to lack of resource.
548 @retval EFI_INVALID_PARAMETER Some parameters are invalid.
549 @retval EFI_TIMEOUT The transfer failed due to timeout.
550 @retval EFI_DEVICE_ERROR The transfer failed due to host controller error.
556 IN EFI_USB2_HC_PROTOCOL
*This
,
557 IN UINT8 DeviceAddress
,
558 IN UINT8 EndPointAddress
,
559 IN UINT8 DeviceSpeed
,
560 IN UINTN MaximumPacketLength
,
561 IN UINT8 DataBuffersNumber
,
562 IN OUT VOID
*Data
[EFI_USB_MAX_BULK_BUFFER_NUM
],
563 IN OUT UINTN
*DataLength
,
564 IN OUT UINT8
*DataToggle
,
566 IN EFI_USB2_HC_TRANSACTION_TRANSLATOR
*Translator
,
567 OUT UINT32
*TransferResult
571 Submits an asynchronous interrupt transfer to an
572 interrupt endpoint of a USB device.
574 @param This This EFI_USB2_HC_PROTOCOL instance.
575 @param DeviceAddress Target device address.
576 @param EndPointAddress Endpoint number and its direction encoded in bit 7
577 @param DeviceSpeed Indicates device speed.
578 @param MaximumPacketLength Maximum packet size the target endpoint is capable
579 @param IsNewTransfer If TRUE, to submit an new asynchronous interrupt
580 transfer If FALSE, to remove the specified
581 asynchronous interrupt.
582 @param DataToggle On input, the initial data toggle to use; on output,
583 it is updated to indicate the next data toggle.
584 @param PollingInterval The he interval, in milliseconds, that the transfer
586 @param DataLength The length of data to receive at the rate specified
588 @param Translator Transaction translator to use.
589 @param CallBackFunction Function to call at the rate specified by
591 @param Context Context to CallBackFunction.
593 @retval EFI_SUCCESS The request has been successfully submitted or canceled.
594 @retval EFI_INVALID_PARAMETER Some parameters are invalid.
595 @retval EFI_OUT_OF_RESOURCES The request failed due to a lack of resources.
596 @retval EFI_DEVICE_ERROR The transfer failed due to host controller error.
601 XhcAsyncInterruptTransfer (
602 IN EFI_USB2_HC_PROTOCOL
*This
,
603 IN UINT8 DeviceAddress
,
604 IN UINT8 EndPointAddress
,
605 IN UINT8 DeviceSpeed
,
606 IN UINTN MaximumPacketLength
,
607 IN BOOLEAN IsNewTransfer
,
608 IN OUT UINT8
*DataToggle
,
609 IN UINTN PollingInterval
,
611 IN EFI_USB2_HC_TRANSACTION_TRANSLATOR
*Translator
,
612 IN EFI_ASYNC_USB_TRANSFER_CALLBACK CallBackFunction
,
613 IN VOID
*Context OPTIONAL
617 Submits synchronous interrupt transfer to an interrupt endpoint
620 @param This This EFI_USB2_HC_PROTOCOL instance.
621 @param DeviceAddress Target device address.
622 @param EndPointAddress Endpoint number and its direction encoded in bit 7
623 @param DeviceSpeed Indicates device speed.
624 @param MaximumPacketLength Maximum packet size the target endpoint is capable
625 of sending or receiving.
626 @param Data Buffer of data that will be transmitted to USB
627 device or received from USB device.
628 @param DataLength On input, the size, in bytes, of the data buffer; On
629 output, the number of bytes transferred.
630 @param DataToggle On input, the initial data toggle to use; on output,
631 it is updated to indicate the next data toggle.
632 @param Timeout Maximum time, in second, to complete.
633 @param Translator Transaction translator to use.
634 @param TransferResult Variable to receive the transfer result.
636 @return EFI_SUCCESS The transfer was completed successfully.
637 @return EFI_OUT_OF_RESOURCES The transfer failed due to lack of resource.
638 @return EFI_INVALID_PARAMETER Some parameters are invalid.
639 @return EFI_TIMEOUT The transfer failed due to timeout.
640 @return EFI_DEVICE_ERROR The failed due to host controller or device error
645 XhcSyncInterruptTransfer (
646 IN EFI_USB2_HC_PROTOCOL
*This
,
647 IN UINT8 DeviceAddress
,
648 IN UINT8 EndPointAddress
,
649 IN UINT8 DeviceSpeed
,
650 IN UINTN MaximumPacketLength
,
652 IN OUT UINTN
*DataLength
,
653 IN OUT UINT8
*DataToggle
,
655 IN EFI_USB2_HC_TRANSACTION_TRANSLATOR
*Translator
,
656 OUT UINT32
*TransferResult
660 Submits isochronous transfer to a target USB device.
662 @param This This EFI_USB2_HC_PROTOCOL instance.
663 @param DeviceAddress Target device address.
664 @param EndPointAddress End point address with its direction.
665 @param DeviceSpeed Device speed, Low speed device doesn't support this
667 @param MaximumPacketLength Maximum packet size that the endpoint is capable of
668 sending or receiving.
669 @param DataBuffersNumber Number of data buffers prepared for the transfer.
670 @param Data Array of pointers to the buffers of data that will
671 be transmitted to USB device or received from USB
673 @param DataLength The size, in bytes, of the data buffer.
674 @param Translator Transaction translator to use.
675 @param TransferResult Variable to receive the transfer result.
677 @return EFI_UNSUPPORTED Isochronous transfer is unsupported.
682 XhcIsochronousTransfer (
683 IN EFI_USB2_HC_PROTOCOL
*This
,
684 IN UINT8 DeviceAddress
,
685 IN UINT8 EndPointAddress
,
686 IN UINT8 DeviceSpeed
,
687 IN UINTN MaximumPacketLength
,
688 IN UINT8 DataBuffersNumber
,
689 IN OUT VOID
*Data
[EFI_USB_MAX_ISO_BUFFER_NUM
],
691 IN EFI_USB2_HC_TRANSACTION_TRANSLATOR
*Translator
,
692 OUT UINT32
*TransferResult
696 Submits Async isochronous transfer to a target USB device.
698 @param This This EFI_USB2_HC_PROTOCOL instance.
699 @param DeviceAddress Target device address.
700 @param EndPointAddress End point address with its direction.
701 @param DeviceSpeed Device speed, Low speed device doesn't support this
703 @param MaximumPacketLength Maximum packet size that the endpoint is capable of
704 sending or receiving.
705 @param DataBuffersNumber Number of data buffers prepared for the transfer.
706 @param Data Array of pointers to the buffers of data that will
707 be transmitted to USB device or received from USB
709 @param DataLength The size, in bytes, of the data buffer.
710 @param Translator Transaction translator to use.
711 @param IsochronousCallBack Function to be called when the transfer complete.
712 @param Context Context passed to the call back function as
715 @return EFI_UNSUPPORTED Isochronous transfer isn't supported.
720 XhcAsyncIsochronousTransfer (
721 IN EFI_USB2_HC_PROTOCOL
*This
,
722 IN UINT8 DeviceAddress
,
723 IN UINT8 EndPointAddress
,
724 IN UINT8 DeviceSpeed
,
725 IN UINTN MaximumPacketLength
,
726 IN UINT8 DataBuffersNumber
,
727 IN OUT VOID
*Data
[EFI_USB_MAX_ISO_BUFFER_NUM
],
729 IN EFI_USB2_HC_TRANSACTION_TRANSLATOR
*Translator
,
730 IN EFI_ASYNC_USB_TRANSFER_CALLBACK IsochronousCallBack
,