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