/** @file\r
EFI_USB2_HC_PROTOCOL as defined in UEFI 2.0.\r
+ The USB Host Controller Protocol is used by code, typically USB bus drivers, \r
+ running in the EFI boot services environment, to perform data transactions over \r
+ a USB bus. In addition, it provides an abstraction for the root hub of the USB bus.\r
\r
- Copyright (c) 2006, Intel Corporation \r
- All rights reserved. This program and the accompanying materials \r
- are licensed and made available under the terms and conditions of the BSD License \r
- which accompanies this distribution. The full text of the license may be found at \r
- http://opensource.org/licenses/bsd-license.php \r
+ Copyright (c) 2006 - 2015, Intel Corporation. All rights reserved.<BR>\r
+ This program and the accompanying materials\r
+ are licensed and made available under the terms and conditions of the BSD License\r
+ which accompanies this distribution. The full text of the license may be found at\r
+ http://opensource.org/licenses/bsd-license.php\r
\r
- THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
- WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
-\r
- Module Name: Usb2HostController.h\r
+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
\r
**/\r
\r
#ifndef _USB2_HOSTCONTROLLER_H_\r
#define _USB2_HOSTCONTROLLER_H_\r
\r
+#include <Protocol/UsbIo.h>\r
+\r
#define EFI_USB2_HC_PROTOCOL_GUID \\r
{ \\r
0x3e745226, 0x9818, 0x45b6, {0xa2, 0xac, 0xd7, 0xcd, 0xe, 0x8b, 0xa2, 0xbc } \\r
}\r
\r
-//\r
-// Forward reference for pure ANSI compatability\r
-//\r
+///\r
+/// Forward reference for pure ANSI compatability\r
+///\r
typedef struct _EFI_USB2_HC_PROTOCOL EFI_USB2_HC_PROTOCOL;\r
\r
-#define EFI_USB_SPEED_FULL 0x0000 // 12 Mb/s, USB 1.1 OHCI and UHCI HC.\r
-#define EFI_USB_SPEED_LOW 0x0001 // 1 Mb/s, USB 1.1 OHCI and UHCI HC.\r
-#define EFI_USB_SPEED_HIGH 0x0002 // 480 Mb/s, USB 2.0 EHCI HC.\r
\r
typedef struct {\r
- UINT8 TranslatorHubAddress;\r
- UINT8 TranslatorPortNumber;\r
+ UINT16 PortStatus; ///< Contains current port status bitmap.\r
+ UINT16 PortChangeStatus; ///< Contains current port status change bitmap.\r
+} EFI_USB_PORT_STATUS;\r
+\r
+///\r
+/// EFI_USB_PORT_STATUS.PortStatus bit definition \r
+///\r
+#define USB_PORT_STAT_CONNECTION 0x0001\r
+#define USB_PORT_STAT_ENABLE 0x0002\r
+#define USB_PORT_STAT_SUSPEND 0x0004\r
+#define USB_PORT_STAT_OVERCURRENT 0x0008\r
+#define USB_PORT_STAT_RESET 0x0010\r
+#define USB_PORT_STAT_POWER 0x0100\r
+#define USB_PORT_STAT_LOW_SPEED 0x0200\r
+#define USB_PORT_STAT_HIGH_SPEED 0x0400\r
+#define USB_PORT_STAT_SUPER_SPEED 0x0800\r
+#define USB_PORT_STAT_OWNER 0x2000\r
+\r
+///\r
+/// EFI_USB_PORT_STATUS.PortChangeStatus bit definition \r
+///\r
+#define USB_PORT_STAT_C_CONNECTION 0x0001\r
+#define USB_PORT_STAT_C_ENABLE 0x0002\r
+#define USB_PORT_STAT_C_SUSPEND 0x0004\r
+#define USB_PORT_STAT_C_OVERCURRENT 0x0008\r
+#define USB_PORT_STAT_C_RESET 0x0010\r
+\r
+\r
+///\r
+/// Usb port features value\r
+/// Each value indicates its bit index in the port status and status change bitmaps, \r
+/// if combines these two bitmaps into a 32-bit bitmap.\r
+///\r
+typedef enum {\r
+ EfiUsbPortEnable = 1,\r
+ EfiUsbPortSuspend = 2,\r
+ EfiUsbPortReset = 4,\r
+ EfiUsbPortPower = 8,\r
+ EfiUsbPortOwner = 13,\r
+ EfiUsbPortConnectChange = 16,\r
+ EfiUsbPortEnableChange = 17,\r
+ EfiUsbPortSuspendChange = 18,\r
+ EfiUsbPortOverCurrentChange = 19,\r
+ EfiUsbPortResetChange = 20\r
+} EFI_USB_PORT_FEATURE;\r
+\r
+#define EFI_USB_SPEED_FULL 0x0000 ///< 12 Mb/s, USB 1.1 OHCI and UHCI HC.\r
+#define EFI_USB_SPEED_LOW 0x0001 ///< 1 Mb/s, USB 1.1 OHCI and UHCI HC.\r
+#define EFI_USB_SPEED_HIGH 0x0002 ///< 480 Mb/s, USB 2.0 EHCI HC.\r
+#define EFI_USB_SPEED_SUPER 0x0003 ///< 4.8 Gb/s, USB 3.0 XHCI HC.\r
+\r
+typedef struct {\r
+ UINT8 TranslatorHubAddress; ///< device address\r
+ UINT8 TranslatorPortNumber; ///< the port number of the hub that device is connected to.\r
} EFI_USB2_HC_TRANSACTION_TRANSLATOR;\r
\r
//\r
**/\r
typedef\r
EFI_STATUS\r
-(EFIAPI *EFI_USB2_HC_PROTOCOL_GET_CAPABILITY) (\r
+(EFIAPI *EFI_USB2_HC_PROTOCOL_GET_CAPABILITY)(\r
IN EFI_USB2_HC_PROTOCOL *This,\r
OUT UINT8 *MaxSpeed,\r
OUT UINT8 *PortNumber,\r
OUT UINT8 *Is64BitCapable\r
- )\r
-;\r
+ );\r
\r
+#define EFI_USB_HC_RESET_GLOBAL 0x0001\r
+#define EFI_USB_HC_RESET_HOST_CONTROLLER 0x0002\r
+#define EFI_USB_HC_RESET_GLOBAL_WITH_DEBUG 0x0004\r
+#define EFI_USB_HC_RESET_HOST_WITH_DEBUG 0x0008\r
/**\r
Provides software reset for the USB host controller.\r
\r
**/\r
typedef\r
EFI_STATUS\r
-(EFIAPI *EFI_USB2_HC_PROTOCOL_RESET) (\r
+(EFIAPI *EFI_USB2_HC_PROTOCOL_RESET)(\r
IN EFI_USB2_HC_PROTOCOL *This,\r
IN UINT16 Attributes\r
- )\r
-;\r
+ );\r
+\r
+/**\r
+ Enumration value for status of USB HC.\r
+**/\r
+typedef enum {\r
+ EfiUsbHcStateHalt, ///< The host controller is in halt\r
+ ///< state. No USB transactions can occur\r
+ ///< while in this state. The host\r
+ ///< controller can enter this state for\r
+ ///< three reasons: 1) After host\r
+ ///< controller hardware reset. 2)\r
+ ///< Explicitly set by software. 3)\r
+ ///< Triggered by a fatal error such as\r
+ ///< consistency check failure.\r
+ \r
+ EfiUsbHcStateOperational, ///< The host controller is in an\r
+ ///< operational state. When in\r
+ ///< this state, the host\r
+ ///< controller can execute bus\r
+ ///< traffic. This state must be\r
+ ///< explicitly set to enable the\r
+ ///< USB bus traffic.\r
+ \r
+ EfiUsbHcStateSuspend, ///< The host controller is in the\r
+ ///< suspend state. No USB\r
+ ///< transactions can occur while in\r
+ ///< this state. The host controller\r
+ ///< enters this state for the\r
+ ///< following reasons: 1) Explicitly\r
+ ///< set by software. 2) Triggered\r
+ ///< when there is no bus traffic for\r
+ ///< 3 microseconds.\r
+ \r
+ EfiUsbHcStateMaximum ///< Maximum value for enumration value of HC status.\r
+} EFI_USB_HC_STATE;\r
\r
/**\r
Retrieves current state of the USB host controller.\r
@retval EFI_SUCCESS The state information of the host controller was returned in State.\r
@retval EFI_INVALID_PARAMETER State is NULL.\r
@retval EFI_DEVICE_ERROR An error was encountered while attempting to retrieve the\r
- host controller¡¯s current state.\r
+ host controller's current state.\r
\r
**/\r
typedef\r
EFI_STATUS\r
-(EFIAPI *EFI_USB2_HC_PROTOCOL_GET_STATE) (\r
- IN EFI_USB2_HC_PROTOCOL *This,\r
- OUT EFI_USB_HC_STATE *State\r
- )\r
-; \r
+(EFIAPI *EFI_USB2_HC_PROTOCOL_GET_STATE)(\r
+ IN EFI_USB2_HC_PROTOCOL *This,\r
+ OUT EFI_USB_HC_STATE *State\r
+);\r
\r
/**\r
Sets the USB host controller to a specific state.\r
**/\r
typedef\r
EFI_STATUS\r
-(EFIAPI *EFI_USB2_HC_PROTOCOL_SET_STATE) (\r
+(EFIAPI *EFI_USB2_HC_PROTOCOL_SET_STATE)(\r
IN EFI_USB2_HC_PROTOCOL *This,\r
IN EFI_USB_HC_STATE State\r
- )\r
-;\r
+ );\r
\r
/**\r
Submits control transfer to a target USB device.\r
received from USB device.\r
@param DataLength On input, indicates the size, in bytes, of the data buffer specified by Data.\r
On output, indicates the amount of data actually transferred.\r
- @param Translator A pointer to the transaction translator data.\r
@param TimeOut Indicates the maximum time, in milliseconds, which the transfer is\r
allowed to complete.\r
+ @param Translator A pointer to the transaction translator data.\r
@param TransferResult A pointer to the detailed result information generated by this control\r
transfer.\r
\r
**/\r
typedef\r
EFI_STATUS\r
-(EFIAPI *EFI_USB2_HC_PROTOCOL_CONTROL_TRANSFER) (\r
+(EFIAPI *EFI_USB2_HC_PROTOCOL_CONTROL_TRANSFER)(\r
IN EFI_USB2_HC_PROTOCOL *This,\r
IN UINT8 DeviceAddress,\r
IN UINT8 DeviceSpeed,\r
IN UINTN TimeOut,\r
IN EFI_USB2_HC_TRANSACTION_TRANSLATOR *Translator,\r
OUT UINT32 *TransferResult\r
- )\r
-; \r
+ );\r
\r
#define EFI_USB_MAX_BULK_BUFFER_NUM 10\r
\r
@param DataLength When input, indicates the size, in bytes, of the data buffers specified by\r
Data. When output, indicates the actually transferred data size.\r
@param DataToggle A pointer to the data toggle value.\r
- @param Translator A pointer to the transaction translator data.\r
@param TimeOut Indicates the maximum time, in milliseconds, which the transfer is\r
allowed to complete.\r
+ @param Translator A pointer to the transaction translator data.\r
@param TransferResult A pointer to the detailed result information of the bulk transfer.\r
\r
@retval EFI_SUCCESS The bulk transfer was completed successfully.\r
**/\r
typedef\r
EFI_STATUS\r
-(EFIAPI *EFI_USB2_HC_PROTOCOL_BULK_TRANSFER) (\r
+(EFIAPI *EFI_USB2_HC_PROTOCOL_BULK_TRANSFER)(\r
IN EFI_USB2_HC_PROTOCOL *This,\r
IN UINT8 DeviceAddress,\r
IN UINT8 EndPointAddress,\r
IN UINTN TimeOut,\r
IN EFI_USB2_HC_TRANSACTION_TRANSLATOR *Translator,\r
OUT UINT32 *TransferResult\r
- )\r
-;\r
+ );\r
\r
/**\r
Submits an asynchronous interrupt transfer to an interrupt endpoint of a USB device.\r
+ Translator parameter doesn't exist in UEFI2.0 spec, but it will be updated in the following specification version.\r
\r
@param This A pointer to the EFI_USB2_HC_PROTOCOL instance.\r
@param DeviceAddress Represents the address of the target device on the USB.\r
transfer is polled.\r
@param DataLength Indicates the length of data to be received at the rate specified by\r
PollingInterval from the target asynchronous interrupt endpoint.\r
+ @param Translator A pointr to the transaction translator data.\r
@param CallBackFunction The Callback function. This function is called at the rate specified by\r
PollingInterval.\r
@param Context The context that is passed to the CallBackFunction. This is an\r
**/\r
typedef\r
EFI_STATUS\r
-(EFIAPI *EFI_USB2_HC_PROTOCOL_ASYNC_INTERRUPT_TRANSFER) (\r
+(EFIAPI *EFI_USB2_HC_PROTOCOL_ASYNC_INTERRUPT_TRANSFER)(\r
IN EFI_USB2_HC_PROTOCOL *This,\r
IN UINT8 DeviceAddress,\r
IN UINT8 EndPointAddress,\r
IN OUT UINT8 *DataToggle,\r
IN UINTN PollingInterval OPTIONAL,\r
IN UINTN DataLength OPTIONAL,\r
+ IN EFI_USB2_HC_TRANSACTION_TRANSLATOR *Translator OPTIONAL,\r
IN EFI_ASYNC_USB_TRANSFER_CALLBACK CallBackFunction OPTIONAL,\r
IN VOID *Context OPTIONAL\r
- )\r
-;\r
+ );\r
\r
/**\r
Submits synchronous interrupt transfer to an interrupt endpoint of a USB device.\r
+ Translator parameter doesn't exist in UEFI2.0 spec, but it will be updated in the following specification version.\r
\r
@param This A pointer to the EFI_USB2_HC_PROTOCOL instance.\r
@param DeviceAddress Represents the address of the target device on the USB.\r
@param DataToggle A pointer to the data toggle value.\r
@param TimeOut Indicates the maximum time, in milliseconds, which the transfer is\r
allowed to complete.\r
+ @param Translator A pointr to the transaction translator data.\r
@param TransferResult A pointer to the detailed result information from the synchronous\r
interrupt transfer.\r
\r
**/\r
typedef\r
EFI_STATUS\r
-(EFIAPI *EFI_USB2_HC_PROTOCOL_SYNC_INTERRUPT_TRANSFER) (\r
- IN EFI_USB2_HC_PROTOCOL *This,\r
- IN UINT8 DeviceAddress,\r
- IN UINT8 EndPointAddress,\r
- IN UINT8 DeviceSpeed,\r
- IN UINTN MaximumPacketLength,\r
- IN OUT VOID *Data,\r
- IN OUT UINTN *DataLength,\r
- IN OUT UINT8 *DataToggle,\r
- IN UINTN TimeOut,\r
- OUT UINT32 *TransferResult\r
- )\r
-;\r
+(EFIAPI *EFI_USB2_HC_PROTOCOL_SYNC_INTERRUPT_TRANSFER)(\r
+ IN EFI_USB2_HC_PROTOCOL *This,\r
+ IN UINT8 DeviceAddress,\r
+ IN UINT8 EndPointAddress,\r
+ IN UINT8 DeviceSpeed,\r
+ IN UINTN MaximumPacketLength,\r
+ IN OUT VOID *Data,\r
+ IN OUT UINTN *DataLength,\r
+ IN OUT UINT8 *DataToggle,\r
+ IN UINTN TimeOut,\r
+ IN EFI_USB2_HC_TRANSACTION_TRANSLATOR *Translator,\r
+ OUT UINT32 *TransferResult\r
+ );\r
\r
#define EFI_USB_MAX_ISO_BUFFER_NUM 7\r
#define EFI_USB_MAX_ISO_BUFFER_NUM1 2\r
/**\r
Submits isochronous transfer to an isochronous endpoint of a USB device.\r
\r
+ This function is used to submit isochronous transfer to a target endpoint of a USB device. \r
+ The target endpoint is specified by DeviceAddressand EndpointAddress. Isochronous transfers are \r
+ used when working with isochronous date. It provides periodic, continuous communication between \r
+ the host and a device. Isochronous transfers can beused only by full-speed, high-speed, and \r
+ super-speed devices.\r
+\r
+ High-speed isochronous transfers can be performed using multiple data buffers. The number of \r
+ buffers that are actually prepared for the transfer is specified by DataBuffersNumber. For\r
+ full-speed isochronous transfers this value is ignored.\r
+\r
+ Data represents a list of pointers to the data buffers. For full-speed isochronous transfers\r
+ only the data pointed by Data[0]shall be used. For high-speed isochronous transfers and for\r
+ the split transactions depending on DataLengththere several data buffers canbe used. For the\r
+ high-speed isochronous transfers the total number of buffers must not exceed EFI_USB_MAX_ISO_BUFFER_NUM. \r
+\r
+ For split transactions performed on full-speed device by high-speed host controller the total\r
+ number of buffers is limited to EFI_USB_MAX_ISO_BUFFER_NUM1.\r
+ If the isochronous transfer is successful, then EFI_SUCCESSis returned. The isochronous transfer \r
+ is designed to be completed within one USB frame time, if it cannot be completed, EFI_TIMEOUT\r
+ is returned. If an error other than timeout occurs during the USB transfer, then EFI_DEVICE_ERROR\r
+ is returned and the detailed status code will be returned in TransferResult.\r
+\r
+ EFI_INVALID_PARAMETERis returned if one of the following conditionsis satisfied:\r
+ - Data is NULL. \r
+ - DataLength is 0.\r
+ - DeviceSpeed is not one of the supported values listed above.\r
+ - MaximumPacketLength is invalid. MaximumPacketLength must be 1023 or less for full-speed devices,\r
+ and 1024 or less for high-speed and super-speed devices.\r
+ - TransferResult is NULL.\r
+\r
@param This A pointer to the EFI_USB2_HC_PROTOCOL instance.\r
@param DeviceAddress Represents the address of the target device on the USB.\r
@param EndPointAddress The combination of an endpoint number and an endpoint direction of the\r
target USB device.\r
- @param DeviceSpeed Indicates device speed.\r
+ @param DeviceSpeed Indicates device speed. The supported values are EFI_USB_SPEED_FULL, \r
+ EFI_USB_SPEED_HIGH, or EFI_USB_SPEED_SUPER.\r
@param MaximumPacketLength Indicates the maximum packet size the target endpoint is capable of\r
sending or receiving.\r
@param DataBuffersNumber Number of data buffers prepared for the transfer.\r
**/\r
typedef\r
EFI_STATUS\r
-(EFIAPI *EFI_USB2_HC_PROTOCOL_ISOCHRONOUS_TRANSFER) (\r
+(EFIAPI *EFI_USB2_HC_PROTOCOL_ISOCHRONOUS_TRANSFER)(\r
IN EFI_USB2_HC_PROTOCOL *This,\r
IN UINT8 DeviceAddress,\r
IN UINT8 EndPointAddress,\r
IN UINTN DataLength,\r
IN EFI_USB2_HC_TRANSACTION_TRANSLATOR *Translator,\r
OUT UINT32 *TransferResult\r
- )\r
-;\r
+ );\r
\r
/**\r
Submits nonblocking isochronous transfer to an isochronous endpoint of a USB device.\r
\r
+ This is an asynchronous type of USB isochronous transfer. If the caller submits a USB\r
+ isochronous transfer request through this function, this function will return immediately.\r
+\r
+ When the isochronous transfer completes, the IsochronousCallbackfunction will be triggered,\r
+ the caller can know the transfer results. If the transfer is successful, the caller can get\r
+ the data received or sent in this callback function.\r
+\r
+ The target endpoint is specified by DeviceAddressand EndpointAddress. Isochronous transfers\r
+ are used when working with isochronous date. It provides periodic, continuous communication\r
+ between the host and a device. Isochronous transfers can be used only by full-speed, high-speed,\r
+ and super-speed devices.\r
+\r
+ High-speed isochronous transfers can be performed using multiple data buffers. The number of \r
+ buffers that are actually prepared for the transfer is specified by DataBuffersNumber. For\r
+ full-speed isochronous transfers this value is ignored.\r
+\r
+ Data represents a list of pointers to the data buffers. For full-speed isochronous transfers\r
+ only the data pointed by Data[0] shall be used. For high-speed isochronous transfers and for\r
+ the split transactions depending on DataLength there several data buffers can be used. For\r
+ the high-speed isochronous transfers the total number of buffers must not exceed EFI_USB_MAX_ISO_BUFFER_NUM.\r
+\r
+ For split transactions performed on full-speed device by high-speed host controller the total\r
+ number of buffers is limited to EFI_USB_MAX_ISO_BUFFER_NUM1.\r
+\r
+ EFI_INVALID_PARAMETER is returned if one of the following conditionsis satisfied:\r
+ - Data is NULL. \r
+ - DataLength is 0.\r
+ - DeviceSpeed is not one of the supported values listed above.\r
+ - MaximumPacketLength is invalid. MaximumPacketLength must be 1023 or less for full-speed \r
+ devices and 1024 or less for high-speed and super-speed devices.\r
+\r
@param This A pointer to the EFI_USB2_HC_PROTOCOL instance.\r
@param DeviceAddress Represents the address of the target device on the USB.\r
@param EndPointAddress The combination of an endpoint number and an endpoint direction of the\r
target USB device.\r
- @param DeviceSpeed Indicates device speed.\r
+ @param DeviceSpeed Indicates device speed. The supported values are EFI_USB_SPEED_FULL, \r
+ EFI_USB_SPEED_HIGH, or EFI_USB_SPEED_SUPER.\r
@param MaximumPacketLength Indicates the maximum packet size the target endpoint is capable of\r
sending or receiving.\r
@param DataBuffersNumber Number of data buffers prepared for the transfer.\r
**/\r
typedef\r
EFI_STATUS\r
-(EFIAPI *EFI_USB2_HC_PROTOCOL_ASYNC_ISOCHRONOUS_TRANSFER) (\r
+(EFIAPI *EFI_USB2_HC_PROTOCOL_ASYNC_ISOCHRONOUS_TRANSFER)(\r
IN EFI_USB2_HC_PROTOCOL *This,\r
IN UINT8 DeviceAddress,\r
IN UINT8 EndPointAddress,\r
IN EFI_USB2_HC_TRANSACTION_TRANSLATOR *Translator,\r
IN EFI_ASYNC_USB_TRANSFER_CALLBACK IsochronousCallBack,\r
IN VOID *Context OPTIONAL\r
- )\r
-;\r
+ );\r
\r
/**\r
Retrieves the current status of a USB root hub port.\r
**/\r
typedef\r
EFI_STATUS\r
-(EFIAPI *EFI_USB2_HC_PROTOCOL_GET_ROOTHUB_PORT_STATUS) (\r
- IN EFI_USB2_HC_PROTOCOL *This,\r
- IN UINT8 PortNumber,\r
- OUT EFI_USB_PORT_STATUS *PortStatus\r
- )\r
-; \r
+(EFIAPI *EFI_USB2_HC_PROTOCOL_GET_ROOTHUB_PORT_STATUS)(\r
+ IN EFI_USB2_HC_PROTOCOL *This,\r
+ IN UINT8 PortNumber,\r
+ OUT EFI_USB_PORT_STATUS *PortStatus\r
+ );\r
\r
/**\r
Sets a feature for the specified root hub port.\r
**/\r
typedef\r
EFI_STATUS\r
-(EFIAPI *EFI_USB2_HC_PROTOCOL_SET_ROOTHUB_PORT_FEATURE) (\r
+(EFIAPI *EFI_USB2_HC_PROTOCOL_SET_ROOTHUB_PORT_FEATURE)(\r
IN EFI_USB2_HC_PROTOCOL *This,\r
IN UINT8 PortNumber,\r
IN EFI_USB_PORT_FEATURE PortFeature\r
- )\r
-; \r
+ );\r
\r
/**\r
Clears a feature for the specified root hub port.\r
**/\r
typedef\r
EFI_STATUS\r
-(EFIAPI *EFI_USB2_HC_PROTOCOL_CLEAR_ROOTHUB_PORT_FEATURE) (\r
+(EFIAPI *EFI_USB2_HC_PROTOCOL_CLEAR_ROOTHUB_PORT_FEATURE)(\r
IN EFI_USB2_HC_PROTOCOL *This,\r
IN UINT8 PortNumber,\r
IN EFI_USB_PORT_FEATURE PortFeature\r
- )\r
-; \r
-\r
+ );\r
+\r
+///\r
+/// The EFI_USB2_HC_PROTOCOL provides USB host controller management, basic \r
+/// data transactions over a USB bus, and USB root hub access. A device driver \r
+/// that wishes to manage a USB bus in a system retrieves the EFI_USB2_HC_PROTOCOL \r
+/// instance that is associated with the USB bus to be managed. A device handle \r
+/// for a USB host controller will minimally contain an EFI_DEVICE_PATH_PROTOCOL \r
+/// instance, and an EFI_USB2_HC_PROTOCOL instance.\r
+///\r
struct _EFI_USB2_HC_PROTOCOL {\r
EFI_USB2_HC_PROTOCOL_GET_CAPABILITY GetCapability;\r
EFI_USB2_HC_PROTOCOL_RESET Reset;\r
EFI_USB2_HC_PROTOCOL_GET_ROOTHUB_PORT_STATUS GetRootHubPortStatus;\r
EFI_USB2_HC_PROTOCOL_SET_ROOTHUB_PORT_FEATURE SetRootHubPortFeature;\r
EFI_USB2_HC_PROTOCOL_CLEAR_ROOTHUB_PORT_FEATURE ClearRootHubPortFeature;\r
+ \r
+ ///\r
+ /// The major revision number of the USB host controller. The revision information \r
+ /// indicates the release of the Universal Serial Bus Specification with which the \r
+ /// host controller is compliant.\r
+ ///\r
UINT16 MajorRevision;\r
+\r
+ ///\r
+ /// The minor revision number of the USB host controller. The revision information \r
+ /// indicates the release of the Universal Serial Bus Specification with which the \r
+ /// host controller is compliant. \r
+ ///\r
UINT16 MinorRevision;\r
};\r
\r