1*f334afcfSToomas Soome /** @file 2*f334afcfSToomas Soome EFI_USB2_HC_PROTOCOL as defined in UEFI 2.0. 3*f334afcfSToomas Soome The USB Host Controller Protocol is used by code, typically USB bus drivers, 4*f334afcfSToomas Soome running in the EFI boot services environment, to perform data transactions over 5*f334afcfSToomas Soome a USB bus. In addition, it provides an abstraction for the root hub of the USB bus. 6*f334afcfSToomas Soome 7*f334afcfSToomas Soome Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR> 8*f334afcfSToomas Soome SPDX-License-Identifier: BSD-2-Clause-Patent 9*f334afcfSToomas Soome 10*f334afcfSToomas Soome **/ 11*f334afcfSToomas Soome 12*f334afcfSToomas Soome #ifndef _USB2_HOSTCONTROLLER_H_ 13*f334afcfSToomas Soome #define _USB2_HOSTCONTROLLER_H_ 14*f334afcfSToomas Soome 15*f334afcfSToomas Soome #include <Protocol/UsbIo.h> 16*f334afcfSToomas Soome 17*f334afcfSToomas Soome #define EFI_USB2_HC_PROTOCOL_GUID \ 18*f334afcfSToomas Soome { \ 19*f334afcfSToomas Soome 0x3e745226, 0x9818, 0x45b6, {0xa2, 0xac, 0xd7, 0xcd, 0xe, 0x8b, 0xa2, 0xbc } \ 20*f334afcfSToomas Soome } 21*f334afcfSToomas Soome 22*f334afcfSToomas Soome /// 23*f334afcfSToomas Soome /// Forward reference for pure ANSI compatability 24*f334afcfSToomas Soome /// 25*f334afcfSToomas Soome typedef struct _EFI_USB2_HC_PROTOCOL EFI_USB2_HC_PROTOCOL; 26*f334afcfSToomas Soome 27*f334afcfSToomas Soome typedef struct { 28*f334afcfSToomas Soome UINT16 PortStatus; ///< Contains current port status bitmap. 29*f334afcfSToomas Soome UINT16 PortChangeStatus; ///< Contains current port status change bitmap. 30*f334afcfSToomas Soome } EFI_USB_PORT_STATUS; 31*f334afcfSToomas Soome 32*f334afcfSToomas Soome /// 33*f334afcfSToomas Soome /// EFI_USB_PORT_STATUS.PortStatus bit definition 34*f334afcfSToomas Soome /// 35*f334afcfSToomas Soome #define USB_PORT_STAT_CONNECTION 0x0001 36*f334afcfSToomas Soome #define USB_PORT_STAT_ENABLE 0x0002 37*f334afcfSToomas Soome #define USB_PORT_STAT_SUSPEND 0x0004 38*f334afcfSToomas Soome #define USB_PORT_STAT_OVERCURRENT 0x0008 39*f334afcfSToomas Soome #define USB_PORT_STAT_RESET 0x0010 40*f334afcfSToomas Soome #define USB_PORT_STAT_POWER 0x0100 41*f334afcfSToomas Soome #define USB_PORT_STAT_LOW_SPEED 0x0200 42*f334afcfSToomas Soome #define USB_PORT_STAT_HIGH_SPEED 0x0400 43*f334afcfSToomas Soome #define USB_PORT_STAT_SUPER_SPEED 0x0800 44*f334afcfSToomas Soome #define USB_PORT_STAT_OWNER 0x2000 45*f334afcfSToomas Soome 46*f334afcfSToomas Soome /// 47*f334afcfSToomas Soome /// EFI_USB_PORT_STATUS.PortChangeStatus bit definition 48*f334afcfSToomas Soome /// 49*f334afcfSToomas Soome #define USB_PORT_STAT_C_CONNECTION 0x0001 50*f334afcfSToomas Soome #define USB_PORT_STAT_C_ENABLE 0x0002 51*f334afcfSToomas Soome #define USB_PORT_STAT_C_SUSPEND 0x0004 52*f334afcfSToomas Soome #define USB_PORT_STAT_C_OVERCURRENT 0x0008 53*f334afcfSToomas Soome #define USB_PORT_STAT_C_RESET 0x0010 54*f334afcfSToomas Soome 55*f334afcfSToomas Soome /// 56*f334afcfSToomas Soome /// Usb port features value 57*f334afcfSToomas Soome /// Each value indicates its bit index in the port status and status change bitmaps, 58*f334afcfSToomas Soome /// if combines these two bitmaps into a 32-bit bitmap. 59*f334afcfSToomas Soome /// 60*f334afcfSToomas Soome typedef enum { 61*f334afcfSToomas Soome EfiUsbPortEnable = 1, 62*f334afcfSToomas Soome EfiUsbPortSuspend = 2, 63*f334afcfSToomas Soome EfiUsbPortReset = 4, 64*f334afcfSToomas Soome EfiUsbPortPower = 8, 65*f334afcfSToomas Soome EfiUsbPortOwner = 13, 66*f334afcfSToomas Soome EfiUsbPortConnectChange = 16, 67*f334afcfSToomas Soome EfiUsbPortEnableChange = 17, 68*f334afcfSToomas Soome EfiUsbPortSuspendChange = 18, 69*f334afcfSToomas Soome EfiUsbPortOverCurrentChange = 19, 70*f334afcfSToomas Soome EfiUsbPortResetChange = 20 71*f334afcfSToomas Soome } EFI_USB_PORT_FEATURE; 72*f334afcfSToomas Soome 73*f334afcfSToomas Soome #define EFI_USB_SPEED_FULL 0x0000 ///< 12 Mb/s, USB 1.1 OHCI and UHCI HC. 74*f334afcfSToomas Soome #define EFI_USB_SPEED_LOW 0x0001 ///< 1 Mb/s, USB 1.1 OHCI and UHCI HC. 75*f334afcfSToomas Soome #define EFI_USB_SPEED_HIGH 0x0002 ///< 480 Mb/s, USB 2.0 EHCI HC. 76*f334afcfSToomas Soome #define EFI_USB_SPEED_SUPER 0x0003 ///< 4.8 Gb/s, USB 3.0 XHCI HC. 77*f334afcfSToomas Soome 78*f334afcfSToomas Soome typedef struct { 79*f334afcfSToomas Soome UINT8 TranslatorHubAddress; ///< device address 80*f334afcfSToomas Soome UINT8 TranslatorPortNumber; ///< the port number of the hub that device is connected to. 81*f334afcfSToomas Soome } EFI_USB2_HC_TRANSACTION_TRANSLATOR; 82*f334afcfSToomas Soome 83*f334afcfSToomas Soome // 84*f334afcfSToomas Soome // Protocol definitions 85*f334afcfSToomas Soome // 86*f334afcfSToomas Soome 87*f334afcfSToomas Soome /** 88*f334afcfSToomas Soome Retrieves the Host Controller capabilities. 89*f334afcfSToomas Soome 90*f334afcfSToomas Soome @param This A pointer to the EFI_USB2_HC_PROTOCOL instance. 91*f334afcfSToomas Soome @param MaxSpeed Host controller data transfer speed. 92*f334afcfSToomas Soome @param PortNumber Number of the root hub ports. 93*f334afcfSToomas Soome @param Is64BitCapable TRUE if controller supports 64-bit memory addressing, 94*f334afcfSToomas Soome FALSE otherwise. 95*f334afcfSToomas Soome 96*f334afcfSToomas Soome @retval EFI_SUCCESS The host controller capabilities were retrieved successfully. 97*f334afcfSToomas Soome @retval EFI_INVALID_PARAMETER One of the input args was NULL. 98*f334afcfSToomas Soome @retval EFI_DEVICE_ERROR An error was encountered while attempting to 99*f334afcfSToomas Soome retrieve the capabilities. 100*f334afcfSToomas Soome 101*f334afcfSToomas Soome **/ 102*f334afcfSToomas Soome typedef 103*f334afcfSToomas Soome EFI_STATUS 104*f334afcfSToomas Soome (EFIAPI *EFI_USB2_HC_PROTOCOL_GET_CAPABILITY)( 105*f334afcfSToomas Soome IN EFI_USB2_HC_PROTOCOL *This, 106*f334afcfSToomas Soome OUT UINT8 *MaxSpeed, 107*f334afcfSToomas Soome OUT UINT8 *PortNumber, 108*f334afcfSToomas Soome OUT UINT8 *Is64BitCapable 109*f334afcfSToomas Soome ); 110*f334afcfSToomas Soome 111*f334afcfSToomas Soome #define EFI_USB_HC_RESET_GLOBAL 0x0001 112*f334afcfSToomas Soome #define EFI_USB_HC_RESET_HOST_CONTROLLER 0x0002 113*f334afcfSToomas Soome #define EFI_USB_HC_RESET_GLOBAL_WITH_DEBUG 0x0004 114*f334afcfSToomas Soome #define EFI_USB_HC_RESET_HOST_WITH_DEBUG 0x0008 115*f334afcfSToomas Soome 116*f334afcfSToomas Soome /** 117*f334afcfSToomas Soome Provides software reset for the USB host controller. 118*f334afcfSToomas Soome 119*f334afcfSToomas Soome @param This A pointer to the EFI_USB2_HC_PROTOCOL instance. 120*f334afcfSToomas Soome @param Attributes A bit mask of the reset operation to perform. 121*f334afcfSToomas Soome 122*f334afcfSToomas Soome @retval EFI_SUCCESS The reset operation succeeded. 123*f334afcfSToomas Soome @retval EFI_INVALID_PARAMETER Attributes is not valid. 124*f334afcfSToomas Soome @retval EFI_UNSUPPORTED The type of reset specified by Attributes is not currently 125*f334afcfSToomas Soome supported by the host controller hardware. 126*f334afcfSToomas Soome @retval EFI_ACCESS_DENIED Reset operation is rejected due to the debug port being configured 127*f334afcfSToomas Soome and active; only EFI_USB_HC_RESET_GLOBAL_WITH_DEBUG or 128*f334afcfSToomas Soome EFI_USB_HC_RESET_HOST_WITH_DEBUG reset Attributes can be used to 129*f334afcfSToomas Soome perform reset operation for this host controller. 130*f334afcfSToomas Soome @retval EFI_DEVICE_ERROR An error was encountered while attempting to 131*f334afcfSToomas Soome retrieve the capabilities. 132*f334afcfSToomas Soome 133*f334afcfSToomas Soome **/ 134*f334afcfSToomas Soome typedef 135*f334afcfSToomas Soome EFI_STATUS 136*f334afcfSToomas Soome (EFIAPI *EFI_USB2_HC_PROTOCOL_RESET)( 137*f334afcfSToomas Soome IN EFI_USB2_HC_PROTOCOL *This, 138*f334afcfSToomas Soome IN UINT16 Attributes 139*f334afcfSToomas Soome ); 140*f334afcfSToomas Soome 141*f334afcfSToomas Soome /** 142*f334afcfSToomas Soome Enumration value for status of USB HC. 143*f334afcfSToomas Soome **/ 144*f334afcfSToomas Soome typedef enum { 145*f334afcfSToomas Soome EfiUsbHcStateHalt, ///< The host controller is in halt 146*f334afcfSToomas Soome ///< state. No USB transactions can occur 147*f334afcfSToomas Soome ///< while in this state. The host 148*f334afcfSToomas Soome ///< controller can enter this state for 149*f334afcfSToomas Soome ///< three reasons: 1) After host 150*f334afcfSToomas Soome ///< controller hardware reset. 2) 151*f334afcfSToomas Soome ///< Explicitly set by software. 3) 152*f334afcfSToomas Soome ///< Triggered by a fatal error such as 153*f334afcfSToomas Soome ///< consistency check failure. 154*f334afcfSToomas Soome 155*f334afcfSToomas Soome EfiUsbHcStateOperational, ///< The host controller is in an 156*f334afcfSToomas Soome ///< operational state. When in 157*f334afcfSToomas Soome ///< this state, the host 158*f334afcfSToomas Soome ///< controller can execute bus 159*f334afcfSToomas Soome ///< traffic. This state must be 160*f334afcfSToomas Soome ///< explicitly set to enable the 161*f334afcfSToomas Soome ///< USB bus traffic. 162*f334afcfSToomas Soome 163*f334afcfSToomas Soome EfiUsbHcStateSuspend, ///< The host controller is in the 164*f334afcfSToomas Soome ///< suspend state. No USB 165*f334afcfSToomas Soome ///< transactions can occur while in 166*f334afcfSToomas Soome ///< this state. The host controller 167*f334afcfSToomas Soome ///< enters this state for the 168*f334afcfSToomas Soome ///< following reasons: 1) Explicitly 169*f334afcfSToomas Soome ///< set by software. 2) Triggered 170*f334afcfSToomas Soome ///< when there is no bus traffic for 171*f334afcfSToomas Soome ///< 3 microseconds. 172*f334afcfSToomas Soome 173*f334afcfSToomas Soome EfiUsbHcStateMaximum ///< Maximum value for enumration value of HC status. 174*f334afcfSToomas Soome } EFI_USB_HC_STATE; 175*f334afcfSToomas Soome 176*f334afcfSToomas Soome /** 177*f334afcfSToomas Soome Retrieves current state of the USB host controller. 178*f334afcfSToomas Soome 179*f334afcfSToomas Soome @param This A pointer to the EFI_USB2_HC_PROTOCOL instance. 180*f334afcfSToomas Soome @param State A pointer to the EFI_USB_HC_STATE data structure that 181*f334afcfSToomas Soome indicates current state of the USB host controller. 182*f334afcfSToomas Soome 183*f334afcfSToomas Soome @retval EFI_SUCCESS The state information of the host controller was returned in State. 184*f334afcfSToomas Soome @retval EFI_INVALID_PARAMETER State is NULL. 185*f334afcfSToomas Soome @retval EFI_DEVICE_ERROR An error was encountered while attempting to retrieve the 186*f334afcfSToomas Soome host controller's current state. 187*f334afcfSToomas Soome 188*f334afcfSToomas Soome **/ 189*f334afcfSToomas Soome typedef 190*f334afcfSToomas Soome EFI_STATUS 191*f334afcfSToomas Soome (EFIAPI *EFI_USB2_HC_PROTOCOL_GET_STATE)( 192*f334afcfSToomas Soome IN EFI_USB2_HC_PROTOCOL *This, 193*f334afcfSToomas Soome OUT EFI_USB_HC_STATE *State 194*f334afcfSToomas Soome ); 195*f334afcfSToomas Soome 196*f334afcfSToomas Soome /** 197*f334afcfSToomas Soome Sets the USB host controller to a specific state. 198*f334afcfSToomas Soome 199*f334afcfSToomas Soome @param This A pointer to the EFI_USB2_HC_PROTOCOL instance. 200*f334afcfSToomas Soome @param State Indicates the state of the host controller that will be set. 201*f334afcfSToomas Soome 202*f334afcfSToomas Soome @retval EFI_SUCCESS The USB host controller was successfully placed in the state 203*f334afcfSToomas Soome specified by State. 204*f334afcfSToomas Soome @retval EFI_INVALID_PARAMETER State is not valid. 205*f334afcfSToomas Soome @retval EFI_DEVICE_ERROR Failed to set the state specified by State due to device error. 206*f334afcfSToomas Soome 207*f334afcfSToomas Soome **/ 208*f334afcfSToomas Soome typedef 209*f334afcfSToomas Soome EFI_STATUS 210*f334afcfSToomas Soome (EFIAPI *EFI_USB2_HC_PROTOCOL_SET_STATE)( 211*f334afcfSToomas Soome IN EFI_USB2_HC_PROTOCOL *This, 212*f334afcfSToomas Soome IN EFI_USB_HC_STATE State 213*f334afcfSToomas Soome ); 214*f334afcfSToomas Soome 215*f334afcfSToomas Soome /** 216*f334afcfSToomas Soome Submits control transfer to a target USB device. 217*f334afcfSToomas Soome 218*f334afcfSToomas Soome @param This A pointer to the EFI_USB2_HC_PROTOCOL instance. 219*f334afcfSToomas Soome @param DeviceAddress Represents the address of the target device on the USB. 220*f334afcfSToomas Soome @param DeviceSpeed Indicates device speed. 221*f334afcfSToomas Soome @param MaximumPacketLength Indicates the maximum packet size that the default control transfer 222*f334afcfSToomas Soome endpoint is capable of sending or receiving. 223*f334afcfSToomas Soome @param Request A pointer to the USB device request that will be sent to the USB device. 224*f334afcfSToomas Soome @param TransferDirection Specifies the data direction for the transfer. There are three values 225*f334afcfSToomas Soome available, EfiUsbDataIn, EfiUsbDataOut and EfiUsbNoData. 226*f334afcfSToomas Soome @param Data A pointer to the buffer of data that will be transmitted to USB device or 227*f334afcfSToomas Soome received from USB device. 228*f334afcfSToomas Soome @param DataLength On input, indicates the size, in bytes, of the data buffer specified by Data. 229*f334afcfSToomas Soome On output, indicates the amount of data actually transferred. 230*f334afcfSToomas Soome @param TimeOut Indicates the maximum time, in milliseconds, which the transfer is 231*f334afcfSToomas Soome allowed to complete. 232*f334afcfSToomas Soome @param Translator A pointer to the transaction translator data. 233*f334afcfSToomas Soome @param TransferResult A pointer to the detailed result information generated by this control 234*f334afcfSToomas Soome transfer. 235*f334afcfSToomas Soome 236*f334afcfSToomas Soome @retval EFI_SUCCESS The control transfer was completed successfully. 237*f334afcfSToomas Soome @retval EFI_INVALID_PARAMETER Some parameters are invalid. 238*f334afcfSToomas Soome @retval EFI_OUT_OF_RESOURCES The control transfer could not be completed due to a lack of resources. 239*f334afcfSToomas Soome @retval EFI_TIMEOUT The control transfer failed due to timeout. 240*f334afcfSToomas Soome @retval EFI_DEVICE_ERROR The control transfer failed due to host controller or device error. 241*f334afcfSToomas Soome Caller should check TransferResult for detailed error information. 242*f334afcfSToomas Soome 243*f334afcfSToomas Soome **/ 244*f334afcfSToomas Soome typedef 245*f334afcfSToomas Soome EFI_STATUS 246*f334afcfSToomas Soome (EFIAPI *EFI_USB2_HC_PROTOCOL_CONTROL_TRANSFER)( 247*f334afcfSToomas Soome IN EFI_USB2_HC_PROTOCOL *This, 248*f334afcfSToomas Soome IN UINT8 DeviceAddress, 249*f334afcfSToomas Soome IN UINT8 DeviceSpeed, 250*f334afcfSToomas Soome IN UINTN MaximumPacketLength, 251*f334afcfSToomas Soome IN EFI_USB_DEVICE_REQUEST *Request, 252*f334afcfSToomas Soome IN EFI_USB_DATA_DIRECTION TransferDirection, 253*f334afcfSToomas Soome IN OUT VOID *Data OPTIONAL, 254*f334afcfSToomas Soome IN OUT UINTN *DataLength OPTIONAL, 255*f334afcfSToomas Soome IN UINTN TimeOut, 256*f334afcfSToomas Soome IN EFI_USB2_HC_TRANSACTION_TRANSLATOR *Translator, 257*f334afcfSToomas Soome OUT UINT32 *TransferResult 258*f334afcfSToomas Soome ); 259*f334afcfSToomas Soome 260*f334afcfSToomas Soome #define EFI_USB_MAX_BULK_BUFFER_NUM 10 261*f334afcfSToomas Soome 262*f334afcfSToomas Soome /** 263*f334afcfSToomas Soome Submits bulk transfer to a bulk endpoint of a USB device. 264*f334afcfSToomas Soome 265*f334afcfSToomas Soome @param This A pointer to the EFI_USB2_HC_PROTOCOL instance. 266*f334afcfSToomas Soome @param DeviceAddress Represents the address of the target device on the USB. 267*f334afcfSToomas Soome @param EndPointAddress The combination of an endpoint number and an endpoint direction of the 268*f334afcfSToomas Soome target USB device. 269*f334afcfSToomas Soome @param DeviceSpeed Indicates device speed. 270*f334afcfSToomas Soome @param MaximumPacketLength Indicates the maximum packet size the target endpoint is capable of 271*f334afcfSToomas Soome sending or receiving. 272*f334afcfSToomas Soome @param DataBuffersNumber Number of data buffers prepared for the transfer. 273*f334afcfSToomas Soome @param Data Array of pointers to the buffers of data that will be transmitted to USB 274*f334afcfSToomas Soome device or received from USB device. 275*f334afcfSToomas Soome @param DataLength When input, indicates the size, in bytes, of the data buffers specified by 276*f334afcfSToomas Soome Data. When output, indicates the actually transferred data size. 277*f334afcfSToomas Soome @param DataToggle A pointer to the data toggle value. 278*f334afcfSToomas Soome @param TimeOut Indicates the maximum time, in milliseconds, which the transfer is 279*f334afcfSToomas Soome allowed to complete. 280*f334afcfSToomas Soome @param Translator A pointer to the transaction translator data. 281*f334afcfSToomas Soome @param TransferResult A pointer to the detailed result information of the bulk transfer. 282*f334afcfSToomas Soome 283*f334afcfSToomas Soome @retval EFI_SUCCESS The bulk transfer was completed successfully. 284*f334afcfSToomas Soome @retval EFI_INVALID_PARAMETER Some parameters are invalid. 285*f334afcfSToomas Soome @retval EFI_OUT_OF_RESOURCES The bulk transfer could not be submitted due to a lack of resources. 286*f334afcfSToomas Soome @retval EFI_TIMEOUT The bulk transfer failed due to timeout. 287*f334afcfSToomas Soome @retval EFI_DEVICE_ERROR The bulk transfer failed due to host controller or device error. 288*f334afcfSToomas Soome Caller should check TransferResult for detailed error information. 289*f334afcfSToomas Soome 290*f334afcfSToomas Soome **/ 291*f334afcfSToomas Soome typedef 292*f334afcfSToomas Soome EFI_STATUS 293*f334afcfSToomas Soome (EFIAPI *EFI_USB2_HC_PROTOCOL_BULK_TRANSFER)( 294*f334afcfSToomas Soome IN EFI_USB2_HC_PROTOCOL *This, 295*f334afcfSToomas Soome IN UINT8 DeviceAddress, 296*f334afcfSToomas Soome IN UINT8 EndPointAddress, 297*f334afcfSToomas Soome IN UINT8 DeviceSpeed, 298*f334afcfSToomas Soome IN UINTN MaximumPacketLength, 299*f334afcfSToomas Soome IN UINT8 DataBuffersNumber, 300*f334afcfSToomas Soome IN OUT VOID *Data[EFI_USB_MAX_BULK_BUFFER_NUM], 301*f334afcfSToomas Soome IN OUT UINTN *DataLength, 302*f334afcfSToomas Soome IN OUT UINT8 *DataToggle, 303*f334afcfSToomas Soome IN UINTN TimeOut, 304*f334afcfSToomas Soome IN EFI_USB2_HC_TRANSACTION_TRANSLATOR *Translator, 305*f334afcfSToomas Soome OUT UINT32 *TransferResult 306*f334afcfSToomas Soome ); 307*f334afcfSToomas Soome 308*f334afcfSToomas Soome /** 309*f334afcfSToomas Soome Submits an asynchronous interrupt transfer to an interrupt endpoint of a USB device. 310*f334afcfSToomas Soome Translator parameter doesn't exist in UEFI2.0 spec, but it will be updated in the following specification version. 311*f334afcfSToomas Soome 312*f334afcfSToomas Soome @param This A pointer to the EFI_USB2_HC_PROTOCOL instance. 313*f334afcfSToomas Soome @param DeviceAddress Represents the address of the target device on the USB. 314*f334afcfSToomas Soome @param EndPointAddress The combination of an endpoint number and an endpoint direction of the 315*f334afcfSToomas Soome target USB device. 316*f334afcfSToomas Soome @param DeviceSpeed Indicates device speed. 317*f334afcfSToomas Soome @param MaximumPacketLength Indicates the maximum packet size the target endpoint is capable of 318*f334afcfSToomas Soome sending or receiving. 319*f334afcfSToomas Soome @param IsNewTransfer If TRUE, an asynchronous interrupt pipe is built between the host and the 320*f334afcfSToomas Soome target interrupt endpoint. If FALSE, the specified asynchronous interrupt 321*f334afcfSToomas Soome pipe is canceled. If TRUE, and an interrupt transfer exists for the target 322*f334afcfSToomas Soome end point, then EFI_INVALID_PARAMETER is returned. 323*f334afcfSToomas Soome @param DataToggle A pointer to the data toggle value. 324*f334afcfSToomas Soome @param PollingInterval Indicates the interval, in milliseconds, that the asynchronous interrupt 325*f334afcfSToomas Soome transfer is polled. 326*f334afcfSToomas Soome @param DataLength Indicates the length of data to be received at the rate specified by 327*f334afcfSToomas Soome PollingInterval from the target asynchronous interrupt endpoint. 328*f334afcfSToomas Soome @param Translator A pointr to the transaction translator data. 329*f334afcfSToomas Soome @param CallBackFunction The Callback function. This function is called at the rate specified by 330*f334afcfSToomas Soome PollingInterval. 331*f334afcfSToomas Soome @param Context The context that is passed to the CallBackFunction. This is an 332*f334afcfSToomas Soome optional parameter and may be NULL. 333*f334afcfSToomas Soome 334*f334afcfSToomas Soome @retval EFI_SUCCESS The asynchronous interrupt transfer request has been successfully 335*f334afcfSToomas Soome submitted or canceled. 336*f334afcfSToomas Soome @retval EFI_INVALID_PARAMETER Some parameters are invalid. 337*f334afcfSToomas Soome @retval EFI_OUT_OF_RESOURCES The request could not be completed due to a lack of resources. 338*f334afcfSToomas Soome 339*f334afcfSToomas Soome **/ 340*f334afcfSToomas Soome typedef 341*f334afcfSToomas Soome EFI_STATUS 342*f334afcfSToomas Soome (EFIAPI *EFI_USB2_HC_PROTOCOL_ASYNC_INTERRUPT_TRANSFER)( 343*f334afcfSToomas Soome IN EFI_USB2_HC_PROTOCOL *This, 344*f334afcfSToomas Soome IN UINT8 DeviceAddress, 345*f334afcfSToomas Soome IN UINT8 EndPointAddress, 346*f334afcfSToomas Soome IN UINT8 DeviceSpeed, 347*f334afcfSToomas Soome IN UINTN MaxiumPacketLength, 348*f334afcfSToomas Soome IN BOOLEAN IsNewTransfer, 349*f334afcfSToomas Soome IN OUT UINT8 *DataToggle, 350*f334afcfSToomas Soome IN UINTN PollingInterval OPTIONAL, 351*f334afcfSToomas Soome IN UINTN DataLength OPTIONAL, 352*f334afcfSToomas Soome IN EFI_USB2_HC_TRANSACTION_TRANSLATOR *Translator OPTIONAL, 353*f334afcfSToomas Soome IN EFI_ASYNC_USB_TRANSFER_CALLBACK CallBackFunction OPTIONAL, 354*f334afcfSToomas Soome IN VOID *Context OPTIONAL 355*f334afcfSToomas Soome ); 356*f334afcfSToomas Soome 357*f334afcfSToomas Soome /** 358*f334afcfSToomas Soome Submits synchronous interrupt transfer to an interrupt endpoint of a USB device. 359*f334afcfSToomas Soome Translator parameter doesn't exist in UEFI2.0 spec, but it will be updated in the following specification version. 360*f334afcfSToomas Soome 361*f334afcfSToomas Soome @param This A pointer to the EFI_USB2_HC_PROTOCOL instance. 362*f334afcfSToomas Soome @param DeviceAddress Represents the address of the target device on the USB. 363*f334afcfSToomas Soome @param EndPointAddress The combination of an endpoint number and an endpoint direction of the 364*f334afcfSToomas Soome target USB device. 365*f334afcfSToomas Soome @param DeviceSpeed Indicates device speed. 366*f334afcfSToomas Soome @param MaximumPacketLength Indicates the maximum packet size the target endpoint is capable of 367*f334afcfSToomas Soome sending or receiving. 368*f334afcfSToomas Soome @param Data A pointer to the buffer of data that will be transmitted to USB device or 369*f334afcfSToomas Soome received from USB device. 370*f334afcfSToomas Soome @param DataLength On input, the size, in bytes, of the data buffer specified by Data. On 371*f334afcfSToomas Soome output, the number of bytes transferred. 372*f334afcfSToomas Soome @param DataToggle A pointer to the data toggle value. 373*f334afcfSToomas Soome @param TimeOut Indicates the maximum time, in milliseconds, which the transfer is 374*f334afcfSToomas Soome allowed to complete. 375*f334afcfSToomas Soome @param Translator A pointr to the transaction translator data. 376*f334afcfSToomas Soome @param TransferResult A pointer to the detailed result information from the synchronous 377*f334afcfSToomas Soome interrupt transfer. 378*f334afcfSToomas Soome 379*f334afcfSToomas Soome @retval EFI_SUCCESS The synchronous interrupt transfer was completed successfully. 380*f334afcfSToomas Soome @retval EFI_INVALID_PARAMETER Some parameters are invalid. 381*f334afcfSToomas Soome @retval EFI_OUT_OF_RESOURCES The synchronous interrupt transfer could not be submitted due to a lack of resources. 382*f334afcfSToomas Soome @retval EFI_TIMEOUT The synchronous interrupt transfer failed due to timeout. 383*f334afcfSToomas Soome @retval EFI_DEVICE_ERROR The synchronous interrupt transfer failed due to host controller or device error. 384*f334afcfSToomas Soome Caller should check TransferResult for detailed error information. 385*f334afcfSToomas Soome 386*f334afcfSToomas Soome **/ 387*f334afcfSToomas Soome typedef 388*f334afcfSToomas Soome EFI_STATUS 389*f334afcfSToomas Soome (EFIAPI *EFI_USB2_HC_PROTOCOL_SYNC_INTERRUPT_TRANSFER)( 390*f334afcfSToomas Soome IN EFI_USB2_HC_PROTOCOL *This, 391*f334afcfSToomas Soome IN UINT8 DeviceAddress, 392*f334afcfSToomas Soome IN UINT8 EndPointAddress, 393*f334afcfSToomas Soome IN UINT8 DeviceSpeed, 394*f334afcfSToomas Soome IN UINTN MaximumPacketLength, 395*f334afcfSToomas Soome IN OUT VOID *Data, 396*f334afcfSToomas Soome IN OUT UINTN *DataLength, 397*f334afcfSToomas Soome IN OUT UINT8 *DataToggle, 398*f334afcfSToomas Soome IN UINTN TimeOut, 399*f334afcfSToomas Soome IN EFI_USB2_HC_TRANSACTION_TRANSLATOR *Translator, 400*f334afcfSToomas Soome OUT UINT32 *TransferResult 401*f334afcfSToomas Soome ); 402*f334afcfSToomas Soome 403*f334afcfSToomas Soome #define EFI_USB_MAX_ISO_BUFFER_NUM 7 404*f334afcfSToomas Soome #define EFI_USB_MAX_ISO_BUFFER_NUM1 2 405*f334afcfSToomas Soome 406*f334afcfSToomas Soome /** 407*f334afcfSToomas Soome Submits isochronous transfer to an isochronous endpoint of a USB device. 408*f334afcfSToomas Soome 409*f334afcfSToomas Soome This function is used to submit isochronous transfer to a target endpoint of a USB device. 410*f334afcfSToomas Soome The target endpoint is specified by DeviceAddressand EndpointAddress. Isochronous transfers are 411*f334afcfSToomas Soome used when working with isochronous date. It provides periodic, continuous communication between 412*f334afcfSToomas Soome the host and a device. Isochronous transfers can beused only by full-speed, high-speed, and 413*f334afcfSToomas Soome super-speed devices. 414*f334afcfSToomas Soome 415*f334afcfSToomas Soome High-speed isochronous transfers can be performed using multiple data buffers. The number of 416*f334afcfSToomas Soome buffers that are actually prepared for the transfer is specified by DataBuffersNumber. For 417*f334afcfSToomas Soome full-speed isochronous transfers this value is ignored. 418*f334afcfSToomas Soome 419*f334afcfSToomas Soome Data represents a list of pointers to the data buffers. For full-speed isochronous transfers 420*f334afcfSToomas Soome only the data pointed by Data[0]shall be used. For high-speed isochronous transfers and for 421*f334afcfSToomas Soome the split transactions depending on DataLengththere several data buffers canbe used. For the 422*f334afcfSToomas Soome high-speed isochronous transfers the total number of buffers must not exceed EFI_USB_MAX_ISO_BUFFER_NUM. 423*f334afcfSToomas Soome 424*f334afcfSToomas Soome For split transactions performed on full-speed device by high-speed host controller the total 425*f334afcfSToomas Soome number of buffers is limited to EFI_USB_MAX_ISO_BUFFER_NUM1. 426*f334afcfSToomas Soome If the isochronous transfer is successful, then EFI_SUCCESSis returned. The isochronous transfer 427*f334afcfSToomas Soome is designed to be completed within one USB frame time, if it cannot be completed, EFI_TIMEOUT 428*f334afcfSToomas Soome is returned. If an error other than timeout occurs during the USB transfer, then EFI_DEVICE_ERROR 429*f334afcfSToomas Soome is returned and the detailed status code will be returned in TransferResult. 430*f334afcfSToomas Soome 431*f334afcfSToomas Soome EFI_INVALID_PARAMETERis returned if one of the following conditionsis satisfied: 432*f334afcfSToomas Soome - Data is NULL. 433*f334afcfSToomas Soome - DataLength is 0. 434*f334afcfSToomas Soome - DeviceSpeed is not one of the supported values listed above. 435*f334afcfSToomas Soome - MaximumPacketLength is invalid. MaximumPacketLength must be 1023 or less for full-speed devices, 436*f334afcfSToomas Soome and 1024 or less for high-speed and super-speed devices. 437*f334afcfSToomas Soome - TransferResult is NULL. 438*f334afcfSToomas Soome 439*f334afcfSToomas Soome @param This A pointer to the EFI_USB2_HC_PROTOCOL instance. 440*f334afcfSToomas Soome @param DeviceAddress Represents the address of the target device on the USB. 441*f334afcfSToomas Soome @param EndPointAddress The combination of an endpoint number and an endpoint direction of the 442*f334afcfSToomas Soome target USB device. 443*f334afcfSToomas Soome @param DeviceSpeed Indicates device speed. The supported values are EFI_USB_SPEED_FULL, 444*f334afcfSToomas Soome EFI_USB_SPEED_HIGH, or EFI_USB_SPEED_SUPER. 445*f334afcfSToomas Soome @param MaximumPacketLength Indicates the maximum packet size the target endpoint is capable of 446*f334afcfSToomas Soome sending or receiving. 447*f334afcfSToomas Soome @param DataBuffersNumber Number of data buffers prepared for the transfer. 448*f334afcfSToomas Soome @param Data Array of pointers to the buffers of data that will be transmitted to USB 449*f334afcfSToomas Soome device or received from USB device. 450*f334afcfSToomas Soome @param DataLength Specifies the length, in bytes, of the data to be sent to or received from 451*f334afcfSToomas Soome the USB device. 452*f334afcfSToomas Soome @param Translator A pointer to the transaction translator data. 453*f334afcfSToomas Soome @param TransferResult A pointer to the detailed result information of the isochronous transfer. 454*f334afcfSToomas Soome 455*f334afcfSToomas Soome @retval EFI_SUCCESS The isochronous transfer was completed successfully. 456*f334afcfSToomas Soome @retval EFI_INVALID_PARAMETER Some parameters are invalid. 457*f334afcfSToomas Soome @retval EFI_OUT_OF_RESOURCES The isochronous transfer could not be submitted due to a lack of resources. 458*f334afcfSToomas Soome @retval EFI_TIMEOUT The isochronous transfer cannot be completed within the one USB frame time. 459*f334afcfSToomas Soome @retval EFI_DEVICE_ERROR The isochronous transfer failed due to host controller or device error. 460*f334afcfSToomas Soome Caller should check TransferResult for detailed error information. 461*f334afcfSToomas Soome 462*f334afcfSToomas Soome **/ 463*f334afcfSToomas Soome typedef 464*f334afcfSToomas Soome EFI_STATUS 465*f334afcfSToomas Soome (EFIAPI *EFI_USB2_HC_PROTOCOL_ISOCHRONOUS_TRANSFER)( 466*f334afcfSToomas Soome IN EFI_USB2_HC_PROTOCOL *This, 467*f334afcfSToomas Soome IN UINT8 DeviceAddress, 468*f334afcfSToomas Soome IN UINT8 EndPointAddress, 469*f334afcfSToomas Soome IN UINT8 DeviceSpeed, 470*f334afcfSToomas Soome IN UINTN MaximumPacketLength, 471*f334afcfSToomas Soome IN UINT8 DataBuffersNumber, 472*f334afcfSToomas Soome IN OUT VOID *Data[EFI_USB_MAX_ISO_BUFFER_NUM], 473*f334afcfSToomas Soome IN UINTN DataLength, 474*f334afcfSToomas Soome IN EFI_USB2_HC_TRANSACTION_TRANSLATOR *Translator, 475*f334afcfSToomas Soome OUT UINT32 *TransferResult 476*f334afcfSToomas Soome ); 477*f334afcfSToomas Soome 478*f334afcfSToomas Soome /** 479*f334afcfSToomas Soome Submits nonblocking isochronous transfer to an isochronous endpoint of a USB device. 480*f334afcfSToomas Soome 481*f334afcfSToomas Soome This is an asynchronous type of USB isochronous transfer. If the caller submits a USB 482*f334afcfSToomas Soome isochronous transfer request through this function, this function will return immediately. 483*f334afcfSToomas Soome 484*f334afcfSToomas Soome When the isochronous transfer completes, the IsochronousCallbackfunction will be triggered, 485*f334afcfSToomas Soome the caller can know the transfer results. If the transfer is successful, the caller can get 486*f334afcfSToomas Soome the data received or sent in this callback function. 487*f334afcfSToomas Soome 488*f334afcfSToomas Soome The target endpoint is specified by DeviceAddressand EndpointAddress. Isochronous transfers 489*f334afcfSToomas Soome are used when working with isochronous date. It provides periodic, continuous communication 490*f334afcfSToomas Soome between the host and a device. Isochronous transfers can be used only by full-speed, high-speed, 491*f334afcfSToomas Soome and super-speed devices. 492*f334afcfSToomas Soome 493*f334afcfSToomas Soome High-speed isochronous transfers can be performed using multiple data buffers. The number of 494*f334afcfSToomas Soome buffers that are actually prepared for the transfer is specified by DataBuffersNumber. For 495*f334afcfSToomas Soome full-speed isochronous transfers this value is ignored. 496*f334afcfSToomas Soome 497*f334afcfSToomas Soome Data represents a list of pointers to the data buffers. For full-speed isochronous transfers 498*f334afcfSToomas Soome only the data pointed by Data[0] shall be used. For high-speed isochronous transfers and for 499*f334afcfSToomas Soome the split transactions depending on DataLength there several data buffers can be used. For 500*f334afcfSToomas Soome the high-speed isochronous transfers the total number of buffers must not exceed EFI_USB_MAX_ISO_BUFFER_NUM. 501*f334afcfSToomas Soome 502*f334afcfSToomas Soome For split transactions performed on full-speed device by high-speed host controller the total 503*f334afcfSToomas Soome number of buffers is limited to EFI_USB_MAX_ISO_BUFFER_NUM1. 504*f334afcfSToomas Soome 505*f334afcfSToomas Soome EFI_INVALID_PARAMETER is returned if one of the following conditionsis satisfied: 506*f334afcfSToomas Soome - Data is NULL. 507*f334afcfSToomas Soome - DataLength is 0. 508*f334afcfSToomas Soome - DeviceSpeed is not one of the supported values listed above. 509*f334afcfSToomas Soome - MaximumPacketLength is invalid. MaximumPacketLength must be 1023 or less for full-speed 510*f334afcfSToomas Soome devices and 1024 or less for high-speed and super-speed devices. 511*f334afcfSToomas Soome 512*f334afcfSToomas Soome @param This A pointer to the EFI_USB2_HC_PROTOCOL instance. 513*f334afcfSToomas Soome @param DeviceAddress Represents the address of the target device on the USB. 514*f334afcfSToomas Soome @param EndPointAddress The combination of an endpoint number and an endpoint direction of the 515*f334afcfSToomas Soome target USB device. 516*f334afcfSToomas Soome @param DeviceSpeed Indicates device speed. The supported values are EFI_USB_SPEED_FULL, 517*f334afcfSToomas Soome EFI_USB_SPEED_HIGH, or EFI_USB_SPEED_SUPER. 518*f334afcfSToomas Soome @param MaximumPacketLength Indicates the maximum packet size the target endpoint is capable of 519*f334afcfSToomas Soome sending or receiving. 520*f334afcfSToomas Soome @param DataBuffersNumber Number of data buffers prepared for the transfer. 521*f334afcfSToomas Soome @param Data Array of pointers to the buffers of data that will be transmitted to USB 522*f334afcfSToomas Soome device or received from USB device. 523*f334afcfSToomas Soome @param DataLength Specifies the length, in bytes, of the data to be sent to or received from 524*f334afcfSToomas Soome the USB device. 525*f334afcfSToomas Soome @param Translator A pointer to the transaction translator data. 526*f334afcfSToomas Soome @param IsochronousCallback The Callback function. This function is called if the requested 527*f334afcfSToomas Soome isochronous transfer is completed. 528*f334afcfSToomas Soome @param Context Data passed to the IsochronousCallback function. This is an 529*f334afcfSToomas Soome optional parameter and may be NULL. 530*f334afcfSToomas Soome 531*f334afcfSToomas Soome @retval EFI_SUCCESS The asynchronous isochronous transfer request has been successfully 532*f334afcfSToomas Soome submitted or canceled. 533*f334afcfSToomas Soome @retval EFI_INVALID_PARAMETER Some parameters are invalid. 534*f334afcfSToomas Soome @retval EFI_OUT_OF_RESOURCES The asynchronous isochronous transfer could not be submitted due to 535*f334afcfSToomas Soome a lack of resources. 536*f334afcfSToomas Soome 537*f334afcfSToomas Soome **/ 538*f334afcfSToomas Soome typedef 539*f334afcfSToomas Soome EFI_STATUS 540*f334afcfSToomas Soome (EFIAPI *EFI_USB2_HC_PROTOCOL_ASYNC_ISOCHRONOUS_TRANSFER)( 541*f334afcfSToomas Soome IN EFI_USB2_HC_PROTOCOL *This, 542*f334afcfSToomas Soome IN UINT8 DeviceAddress, 543*f334afcfSToomas Soome IN UINT8 EndPointAddress, 544*f334afcfSToomas Soome IN UINT8 DeviceSpeed, 545*f334afcfSToomas Soome IN UINTN MaximumPacketLength, 546*f334afcfSToomas Soome IN UINT8 DataBuffersNumber, 547*f334afcfSToomas Soome IN OUT VOID *Data[EFI_USB_MAX_ISO_BUFFER_NUM], 548*f334afcfSToomas Soome IN UINTN DataLength, 549*f334afcfSToomas Soome IN EFI_USB2_HC_TRANSACTION_TRANSLATOR *Translator, 550*f334afcfSToomas Soome IN EFI_ASYNC_USB_TRANSFER_CALLBACK IsochronousCallBack, 551*f334afcfSToomas Soome IN VOID *Context OPTIONAL 552*f334afcfSToomas Soome ); 553*f334afcfSToomas Soome 554*f334afcfSToomas Soome /** 555*f334afcfSToomas Soome Retrieves the current status of a USB root hub port. 556*f334afcfSToomas Soome 557*f334afcfSToomas Soome @param This A pointer to the EFI_USB2_HC_PROTOCOL instance. 558*f334afcfSToomas Soome @param PortNumber Specifies the root hub port from which the status is to be retrieved. 559*f334afcfSToomas Soome This value is zero based. 560*f334afcfSToomas Soome @param PortStatus A pointer to the current port status bits and port status change bits. 561*f334afcfSToomas Soome 562*f334afcfSToomas Soome @retval EFI_SUCCESS The status of the USB root hub port specified by PortNumber 563*f334afcfSToomas Soome was returned in PortStatus. 564*f334afcfSToomas Soome @retval EFI_INVALID_PARAMETER PortNumber is invalid. 565*f334afcfSToomas Soome 566*f334afcfSToomas Soome **/ 567*f334afcfSToomas Soome typedef 568*f334afcfSToomas Soome EFI_STATUS 569*f334afcfSToomas Soome (EFIAPI *EFI_USB2_HC_PROTOCOL_GET_ROOTHUB_PORT_STATUS)( 570*f334afcfSToomas Soome IN EFI_USB2_HC_PROTOCOL *This, 571*f334afcfSToomas Soome IN UINT8 PortNumber, 572*f334afcfSToomas Soome OUT EFI_USB_PORT_STATUS *PortStatus 573*f334afcfSToomas Soome ); 574*f334afcfSToomas Soome 575*f334afcfSToomas Soome /** 576*f334afcfSToomas Soome Sets a feature for the specified root hub port. 577*f334afcfSToomas Soome 578*f334afcfSToomas Soome @param This A pointer to the EFI_USB2_HC_PROTOCOL instance. 579*f334afcfSToomas Soome @param PortNumber Specifies the root hub port whose feature is requested to be set. This 580*f334afcfSToomas Soome value is zero based. 581*f334afcfSToomas Soome @param PortFeature Indicates the feature selector associated with the feature set request. 582*f334afcfSToomas Soome 583*f334afcfSToomas Soome @retval EFI_SUCCESS The feature specified by PortFeature was set for the USB 584*f334afcfSToomas Soome root hub port specified by PortNumber. 585*f334afcfSToomas Soome @retval EFI_INVALID_PARAMETER PortNumber is invalid or PortFeature is invalid for this function. 586*f334afcfSToomas Soome 587*f334afcfSToomas Soome **/ 588*f334afcfSToomas Soome typedef 589*f334afcfSToomas Soome EFI_STATUS 590*f334afcfSToomas Soome (EFIAPI *EFI_USB2_HC_PROTOCOL_SET_ROOTHUB_PORT_FEATURE)( 591*f334afcfSToomas Soome IN EFI_USB2_HC_PROTOCOL *This, 592*f334afcfSToomas Soome IN UINT8 PortNumber, 593*f334afcfSToomas Soome IN EFI_USB_PORT_FEATURE PortFeature 594*f334afcfSToomas Soome ); 595*f334afcfSToomas Soome 596*f334afcfSToomas Soome /** 597*f334afcfSToomas Soome Clears a feature for the specified root hub port. 598*f334afcfSToomas Soome 599*f334afcfSToomas Soome @param This A pointer to the EFI_USB2_HC_PROTOCOL instance. 600*f334afcfSToomas Soome @param PortNumber Specifies the root hub port whose feature is requested to be cleared. This 601*f334afcfSToomas Soome value is zero based. 602*f334afcfSToomas Soome @param PortFeature Indicates the feature selector associated with the feature clear request. 603*f334afcfSToomas Soome 604*f334afcfSToomas Soome @retval EFI_SUCCESS The feature specified by PortFeature was cleared for the USB 605*f334afcfSToomas Soome root hub port specified by PortNumber. 606*f334afcfSToomas Soome @retval EFI_INVALID_PARAMETER PortNumber is invalid or PortFeature is invalid for this function. 607*f334afcfSToomas Soome 608*f334afcfSToomas Soome **/ 609*f334afcfSToomas Soome typedef 610*f334afcfSToomas Soome EFI_STATUS 611*f334afcfSToomas Soome (EFIAPI *EFI_USB2_HC_PROTOCOL_CLEAR_ROOTHUB_PORT_FEATURE)( 612*f334afcfSToomas Soome IN EFI_USB2_HC_PROTOCOL *This, 613*f334afcfSToomas Soome IN UINT8 PortNumber, 614*f334afcfSToomas Soome IN EFI_USB_PORT_FEATURE PortFeature 615*f334afcfSToomas Soome ); 616*f334afcfSToomas Soome 617*f334afcfSToomas Soome /// 618*f334afcfSToomas Soome /// The EFI_USB2_HC_PROTOCOL provides USB host controller management, basic 619*f334afcfSToomas Soome /// data transactions over a USB bus, and USB root hub access. A device driver 620*f334afcfSToomas Soome /// that wishes to manage a USB bus in a system retrieves the EFI_USB2_HC_PROTOCOL 621*f334afcfSToomas Soome /// instance that is associated with the USB bus to be managed. A device handle 622*f334afcfSToomas Soome /// for a USB host controller will minimally contain an EFI_DEVICE_PATH_PROTOCOL 623*f334afcfSToomas Soome /// instance, and an EFI_USB2_HC_PROTOCOL instance. 624*f334afcfSToomas Soome /// 625*f334afcfSToomas Soome struct _EFI_USB2_HC_PROTOCOL { 626*f334afcfSToomas Soome EFI_USB2_HC_PROTOCOL_GET_CAPABILITY GetCapability; 627*f334afcfSToomas Soome EFI_USB2_HC_PROTOCOL_RESET Reset; 628*f334afcfSToomas Soome EFI_USB2_HC_PROTOCOL_GET_STATE GetState; 629*f334afcfSToomas Soome EFI_USB2_HC_PROTOCOL_SET_STATE SetState; 630*f334afcfSToomas Soome EFI_USB2_HC_PROTOCOL_CONTROL_TRANSFER ControlTransfer; 631*f334afcfSToomas Soome EFI_USB2_HC_PROTOCOL_BULK_TRANSFER BulkTransfer; 632*f334afcfSToomas Soome EFI_USB2_HC_PROTOCOL_ASYNC_INTERRUPT_TRANSFER AsyncInterruptTransfer; 633*f334afcfSToomas Soome EFI_USB2_HC_PROTOCOL_SYNC_INTERRUPT_TRANSFER SyncInterruptTransfer; 634*f334afcfSToomas Soome EFI_USB2_HC_PROTOCOL_ISOCHRONOUS_TRANSFER IsochronousTransfer; 635*f334afcfSToomas Soome EFI_USB2_HC_PROTOCOL_ASYNC_ISOCHRONOUS_TRANSFER AsyncIsochronousTransfer; 636*f334afcfSToomas Soome EFI_USB2_HC_PROTOCOL_GET_ROOTHUB_PORT_STATUS GetRootHubPortStatus; 637*f334afcfSToomas Soome EFI_USB2_HC_PROTOCOL_SET_ROOTHUB_PORT_FEATURE SetRootHubPortFeature; 638*f334afcfSToomas Soome EFI_USB2_HC_PROTOCOL_CLEAR_ROOTHUB_PORT_FEATURE ClearRootHubPortFeature; 639*f334afcfSToomas Soome 640*f334afcfSToomas Soome /// 641*f334afcfSToomas Soome /// The major revision number of the USB host controller. The revision information 642*f334afcfSToomas Soome /// indicates the release of the Universal Serial Bus Specification with which the 643*f334afcfSToomas Soome /// host controller is compliant. 644*f334afcfSToomas Soome /// 645*f334afcfSToomas Soome UINT16 MajorRevision; 646*f334afcfSToomas Soome 647*f334afcfSToomas Soome /// 648*f334afcfSToomas Soome /// The minor revision number of the USB host controller. The revision information 649*f334afcfSToomas Soome /// indicates the release of the Universal Serial Bus Specification with which the 650*f334afcfSToomas Soome /// host controller is compliant. 651*f334afcfSToomas Soome /// 652*f334afcfSToomas Soome UINT16 MinorRevision; 653*f334afcfSToomas Soome }; 654*f334afcfSToomas Soome 655*f334afcfSToomas Soome extern EFI_GUID gEfiUsb2HcProtocolGuid; 656*f334afcfSToomas Soome 657*f334afcfSToomas Soome #endif 658