1) remove unused library class 2) remove unreferenced GUIDs git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@2401 6f19259b-4bc3-4df7-8a09-765794883524
		
			
				
	
	
		
			1204 lines
		
	
	
		
			38 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			1204 lines
		
	
	
		
			38 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /*++
 | |
| Copyright (c) 2006, Intel Corporation                                                         
 | |
| All rights reserved. This program and the accompanying materials                          
 | |
| are licensed and made available under the terms and conditions of the BSD License         
 | |
| which accompanies this distribution.  The full text of the license may be found at        
 | |
| http://opensource.org/licenses/bsd-license.php                                            
 | |
|                                                                                           
 | |
| THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,                     
 | |
| WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.             
 | |
| 
 | |
|   Module Name:
 | |
| 
 | |
|     usbbus.h
 | |
| 
 | |
|   Abstract:
 | |
| 
 | |
|     Header file for USB bus driver Interface
 | |
| 
 | |
|   Revision History
 | |
| 
 | |
| 
 | |
| 
 | |
| --*/
 | |
| 
 | |
| #ifndef _EFI_USB_BUS_H
 | |
| #define _EFI_USB_BUS_H
 | |
| 
 | |
| 
 | |
| #include <IndustryStandard/Usb.h>
 | |
| #include "hub.h"
 | |
| #include "usbutil.h"
 | |
| 
 | |
| 
 | |
| extern UINTN  gUSBDebugLevel;
 | |
| extern UINTN  gUSBErrorLevel;
 | |
| 
 | |
| 
 | |
| #define MICROSECOND       10000
 | |
| #define ONESECOND         (1000 * MICROSECOND)
 | |
| #define BUSPOLLING_PERIOD ONESECOND
 | |
| //
 | |
| // We define some maximun value here
 | |
| //
 | |
| #define USB_MAXCONFIG               8
 | |
| #define USB_MAXALTSETTING           4
 | |
| #define USB_MAXINTERFACES           32
 | |
| #define USB_MAXENDPOINTS            16
 | |
| #define USB_MAXSTRINGS              16
 | |
| #define USB_MAXLANID                16
 | |
| #define USB_MAXCHILDREN             8
 | |
| #define USB_MAXCONTROLLERS          4
 | |
| 
 | |
| #define USB_IO_CONTROLLER_SIGNATURE EFI_SIGNATURE_32 ('u', 's', 'b', 'd')
 | |
| 
 | |
| typedef struct {
 | |
|   LIST_ENTRY      Link;
 | |
|   UINT16          StringIndex;
 | |
|   CHAR16          *String;
 | |
| } STR_LIST_ENTRY;
 | |
| 
 | |
| typedef struct {
 | |
|   LIST_ENTRY                  Link;
 | |
|   UINT16                      Toggle;
 | |
|   EFI_USB_ENDPOINT_DESCRIPTOR EndpointDescriptor;
 | |
| } ENDPOINT_DESC_LIST_ENTRY;
 | |
| 
 | |
| typedef struct {
 | |
|   LIST_ENTRY                    Link;
 | |
|   EFI_USB_INTERFACE_DESCRIPTOR  InterfaceDescriptor;
 | |
|   LIST_ENTRY                    EndpointDescListHead;
 | |
| } INTERFACE_DESC_LIST_ENTRY;
 | |
| 
 | |
| typedef struct {
 | |
|   LIST_ENTRY                Link;
 | |
|   EFI_USB_CONFIG_DESCRIPTOR CongfigDescriptor;
 | |
|   LIST_ENTRY                InterfaceDescListHead;
 | |
|   UINTN                     ActiveInterface;
 | |
| } CONFIG_DESC_LIST_ENTRY;
 | |
| 
 | |
| //
 | |
| // Forward declaring
 | |
| //
 | |
| struct usb_io_device;
 | |
| 
 | |
| //
 | |
| // This is used to form the USB Controller Handle
 | |
| //
 | |
| typedef struct usb_io_controller_device {
 | |
|   UINTN                           Signature;
 | |
|   EFI_HANDLE                      Handle;
 | |
|   EFI_USB_IO_PROTOCOL             UsbIo;
 | |
|   EFI_DEVICE_PATH_PROTOCOL        *DevicePath;
 | |
|   EFI_HANDLE                      HostController;
 | |
|   UINT8                           CurrentConfigValue;
 | |
|   UINT8                           InterfaceNumber;
 | |
|   struct usb_io_device            *UsbDevice;
 | |
| 
 | |
|   BOOLEAN                         IsUsbHub;
 | |
|   BOOLEAN                         IsManagedByDriver;
 | |
| 
 | |
|   //
 | |
|   // Fields specified for USB Hub
 | |
|   //
 | |
|   EFI_EVENT                       HubNotify;
 | |
|   UINT8                           HubEndpointAddress;
 | |
|   UINT8                           StatusChangePort;
 | |
|   UINT8                           DownstreamPorts;
 | |
| 
 | |
|   UINT8                           ParentPort;
 | |
|   struct usb_io_controller_device *Parent;
 | |
|   struct usb_io_device            *Children[USB_MAXCHILDREN];
 | |
| } USB_IO_CONTROLLER_DEVICE;
 | |
| 
 | |
| #define USB_IO_CONTROLLER_DEVICE_FROM_USB_IO_THIS(a) \
 | |
|     CR(a, USB_IO_CONTROLLER_DEVICE, UsbIo, USB_IO_CONTROLLER_SIGNATURE)
 | |
| 
 | |
| //
 | |
| // This is used to keep the topology of USB bus
 | |
| //
 | |
| struct _usb_bus_controller_device;
 | |
| 
 | |
| typedef struct usb_io_device {
 | |
|   UINT8                               DeviceAddress;
 | |
|   BOOLEAN                             IsConfigured;
 | |
|   BOOLEAN                             IsSlowDevice;
 | |
|   UINT8                               DeviceSpeed;
 | |
|   EFI_USB2_HC_TRANSACTION_TRANSLATOR  *Translator;
 | |
|   EFI_USB_DEVICE_DESCRIPTOR           DeviceDescriptor;
 | |
|   LIST_ENTRY                          ConfigDescListHead;
 | |
|   CONFIG_DESC_LIST_ENTRY              *ActiveConfig;
 | |
|   UINT16                              LangID[USB_MAXLANID];
 | |
| 
 | |
|   struct _usb_bus_controller_device   *BusController;
 | |
| 
 | |
|   //
 | |
|   // Track the controller handle
 | |
|   //
 | |
|   UINT8                               NumOfControllers;
 | |
|   USB_IO_CONTROLLER_DEVICE            *UsbController[USB_MAXCONTROLLERS];
 | |
| 
 | |
| } USB_IO_DEVICE;
 | |
| 
 | |
| //
 | |
| // Usb Bus Controller device strcuture
 | |
| //
 | |
| #define EFI_USB_BUS_PROTOCOL_GUID \
 | |
|  { 0x2B2F68CC, 0x0CD2, 0x44cf, { 0x8E, 0x8B, 0xBB, 0xA2, 0x0B, 0x1B, 0x5B, 0x75  } }
 | |
| 
 | |
| typedef struct _EFI_USB_BUS_PROTOCOL {
 | |
|   UINT64  Reserved;
 | |
| } EFI_USB_BUS_PROTOCOL;
 | |
| 
 | |
| #define USB_BUS_DEVICE_SIGNATURE  EFI_SIGNATURE_32 ('u', 'b', 'u', 's')
 | |
| 
 | |
| typedef struct _usb_bus_controller_device {
 | |
|   UINTN                     Signature;
 | |
| 
 | |
|   EFI_USB_BUS_PROTOCOL      BusIdentify;
 | |
|   EFI_USB2_HC_PROTOCOL      *Usb2HCInterface;
 | |
|   EFI_USB_HC_PROTOCOL       *UsbHCInterface;
 | |
|   EFI_DEVICE_PATH_PROTOCOL  *DevicePath;
 | |
|   UINT8                     AddressPool[16];
 | |
|   USB_IO_DEVICE             *Root;
 | |
|   BOOLEAN                   Hc2ProtocolSupported;
 | |
| } USB_BUS_CONTROLLER_DEVICE;
 | |
| 
 | |
| #define USB_BUS_CONTROLLER_DEVICE_FROM_THIS(a) \
 | |
|     CR(a, USB_BUS_CONTROLLER_DEVICE, BusIdentify, USB_BUS_DEVICE_SIGNATURE)
 | |
| 
 | |
| 
 | |
| //
 | |
| // Global Variables
 | |
| //
 | |
| extern EFI_DRIVER_BINDING_PROTOCOL  gUsbBusDriverBinding;
 | |
| extern EFI_COMPONENT_NAME_PROTOCOL  gUsbBusComponentName;
 | |
| 
 | |
| //
 | |
| // EFI_DRIVER_BINDING_PROTOCOL Protocol Interface
 | |
| //
 | |
| EFI_STATUS
 | |
| EFIAPI
 | |
| UsbBusControllerDriverSupported (
 | |
|   IN EFI_DRIVER_BINDING_PROTOCOL     *This,
 | |
|   IN EFI_HANDLE                      Controller,
 | |
|   IN EFI_DEVICE_PATH_PROTOCOL        *RemainingDevicePath
 | |
|   );
 | |
| 
 | |
| EFI_STATUS
 | |
| EFIAPI
 | |
| UsbBusControllerDriverStart (
 | |
|   IN EFI_DRIVER_BINDING_PROTOCOL     *This,
 | |
|   IN EFI_HANDLE                      Controller,
 | |
|   IN EFI_DEVICE_PATH_PROTOCOL        *RemainingDevicePath
 | |
|   );
 | |
| 
 | |
| EFI_STATUS
 | |
| EFIAPI
 | |
| UsbBusControllerDriverStop (
 | |
|   IN EFI_DRIVER_BINDING_PROTOCOL     *This,
 | |
|   IN EFI_HANDLE                      Controller,
 | |
|   IN UINTN                           NumberOfChildren,
 | |
|   IN EFI_HANDLE                      *ChildHandleBuffer
 | |
|   );
 | |
| 
 | |
| //
 | |
| // EFI Component Name Functions
 | |
| //
 | |
| EFI_STATUS
 | |
| EFIAPI
 | |
| UsbBusComponentNameGetDriverName (
 | |
|   IN  EFI_COMPONENT_NAME_PROTOCOL     *This,
 | |
|   IN  CHAR8                           *Language,
 | |
|   OUT CHAR16                          **DriverName
 | |
|   );
 | |
| 
 | |
| EFI_STATUS
 | |
| EFIAPI
 | |
| UsbBusComponentNameGetControllerName (
 | |
|   IN  EFI_COMPONENT_NAME_PROTOCOL     *This,
 | |
|   IN  EFI_HANDLE                      ControllerHandle,
 | |
|   IN  EFI_HANDLE                      ChildHandle, OPTIONAL
 | |
|   IN  CHAR8                           *Language,
 | |
|   OUT CHAR16                          **ControllerName
 | |
|   );
 | |
| 
 | |
| //
 | |
| // Usb Device Configuration functions
 | |
| //
 | |
| BOOLEAN
 | |
| IsHub (
 | |
|   IN USB_IO_CONTROLLER_DEVICE     *Dev
 | |
|   )
 | |
| /*++
 | |
|   
 | |
|   Routine Description:
 | |
|     Tell if a usb controller is a hub controller.
 | |
|     
 | |
|   Arguments:
 | |
|     Dev - UsbIoController device structure.
 | |
|     
 | |
|   Returns:
 | |
|     TRUE/FALSE
 | |
| --*/
 | |
| ;
 | |
| 
 | |
| EFI_STATUS
 | |
| UsbGetStringtable (
 | |
|   IN  USB_IO_DEVICE     *UsbIoDevice
 | |
|   )
 | |
| /*++
 | |
|   
 | |
|   Routine Description:
 | |
|     Get the string table stored in a usb device.
 | |
|     
 | |
|   Arguments:
 | |
|     Dev     -     UsbIoController device structure.
 | |
|     
 | |
|   Returns:
 | |
|     EFI_SUCCESS
 | |
|     EFI_UNSUPPORTED
 | |
|     EFI_OUT_OF_RESOURCES
 | |
|     
 | |
| --*/
 | |
| ;
 | |
| 
 | |
| EFI_STATUS
 | |
| UsbGetAllConfigurations (
 | |
|   IN  USB_IO_DEVICE     *UsbIoDevice
 | |
|   )
 | |
| /*++
 | |
| 
 | |
|   Routine Description:
 | |
|     This function is to parse all the configuration descriptor.
 | |
|     
 | |
|   Arguments:
 | |
|     UsbIoDevice  -  USB_IO_DEVICE device structure.
 | |
|     
 | |
|   Returns:
 | |
|     EFI_SUCCESS
 | |
|     EFI_DEVICE_ERROR
 | |
|     EFI_OUT_OF_RESOURCES  
 | |
| 
 | |
| --*/
 | |
| ;
 | |
| 
 | |
| EFI_STATUS
 | |
| UsbSetConfiguration (
 | |
|   IN  USB_IO_DEVICE     *Dev,
 | |
|   IN  UINTN             ConfigurationValue
 | |
|   )
 | |
| /*++
 | |
| 
 | |
|   Routine Description:
 | |
|     Set the device to a configuration value.
 | |
|     
 | |
|   Arguments:
 | |
|     UsbIoDev            -   USB_IO_DEVICE to be set configuration
 | |
|     ConfigrationValue   -   The configuration value to be set to that device
 | |
|     
 | |
|   Returns:
 | |
|     EFI_SUCCESS
 | |
|     EFI_DEVICE_ERROR
 | |
|     
 | |
| --*/
 | |
| ;
 | |
| 
 | |
| EFI_STATUS
 | |
| UsbSetDefaultConfiguration (
 | |
|   IN  USB_IO_DEVICE     *Dev
 | |
|   )
 | |
| /*++
 | |
| 
 | |
|   Routine Description:
 | |
|     Set the device to a default configuration value.
 | |
|     
 | |
|   Arguments:
 | |
|     UsbIoDev       -    USB_IO_DEVICE to be set configuration
 | |
|     
 | |
|   Returns
 | |
|     EFI_SUCCESS
 | |
|     EFI_DEVICE_ERROR
 | |
|     
 | |
| --*/
 | |
| ;
 | |
| 
 | |
| //
 | |
| // Device Deconfiguration functions
 | |
| //
 | |
| VOID
 | |
| UsbDestroyAllConfiguration (
 | |
|   IN USB_IO_DEVICE     *UsbIoDevice
 | |
|   )
 | |
| /*++
 | |
| 
 | |
|   Routine Description:
 | |
|     Delete all configuration data when device is not used.
 | |
|     
 | |
|   Arguments:
 | |
|     UsbIoDevice  - USB_IO_DEVICE to be set configuration
 | |
|   
 | |
|   Returns:
 | |
|     VOID
 | |
|     
 | |
| --*/
 | |
| ;
 | |
| 
 | |
| EFI_STATUS
 | |
| DoHubConfig (
 | |
|   IN USB_IO_CONTROLLER_DEVICE     *HubIoDevice
 | |
|   )
 | |
| /*++
 | |
|   
 | |
|   Routine Description:
 | |
|     Configure the hub
 | |
|   
 | |
|   Arguments:
 | |
|     HubController         -   Indicating the hub controller device that
 | |
|                               will be configured
 | |
|                                 
 | |
|   Returns:
 | |
|     EFI_SUCCESS
 | |
|     EFI_DEVICE_ERROR
 | |
|     
 | |
| --*/
 | |
| 
 | |
| ;
 | |
| 
 | |
| VOID
 | |
| GetDeviceEndPointMaxPacketLength (
 | |
|   IN EFI_USB_IO_PROTOCOL    *UsbIo,
 | |
|   IN  UINT8                 EndpointAddr,
 | |
|   OUT UINTN                 *MaxPacketLength
 | |
|   )
 | |
| /*++
 | |
| 
 | |
|   Routine Description:
 | |
|     Get the Max Packet Length of the speified Endpoint.
 | |
| 
 | |
|   Arguments:
 | |
|     UsbIo           -     Given Usb Controller device.
 | |
|     EndpointAddr    -     Given Endpoint address.
 | |
|     MaxPacketLength -     The max packet length of that endpoint
 | |
| 
 | |
|   Returns:
 | |
|     N/A
 | |
| 
 | |
| --*/
 | |
| ;
 | |
| 
 | |
| VOID
 | |
| GetDataToggleBit (
 | |
|   IN EFI_USB_IO_PROTOCOL    *UsbIo,
 | |
|   IN  UINT8                 EndpointAddr,
 | |
|   OUT UINT8                 *DataToggle
 | |
|   )
 | |
| /*++
 | |
| 
 | |
|   Routine Description:
 | |
|     Get the datatoggle of a specified endpoint.
 | |
| 
 | |
|   Arguments:
 | |
|     UsbIo         -     Given Usb Controller device.
 | |
|     EndpointAddr  -     Given Endpoint address.
 | |
|     DataToggle    -     The current data toggle of that endpoint
 | |
| 
 | |
|   Returns:
 | |
|     VOID
 | |
|     
 | |
| --*/
 | |
| ;
 | |
| 
 | |
| VOID
 | |
| SetDataToggleBit (
 | |
|   IN EFI_USB_IO_PROTOCOL    *UsbIo,
 | |
|   IN UINT8                  EndpointAddr,
 | |
|   IN UINT8                  DataToggle
 | |
|   )
 | |
| /*++
 | |
| 
 | |
|   Routine Description:
 | |
|     Set the datatoggle of a specified endpoint
 | |
| 
 | |
|   Arguments:
 | |
|     UsbIo         -     Given Usb Controller device.
 | |
|     EndpointAddr  -     Given Endpoint address.
 | |
|     DataToggle    -     The current data toggle of that endpoint to be set
 | |
| 
 | |
|   Returns:
 | |
|     VOID
 | |
| 
 | |
| --*/
 | |
| ;
 | |
| 
 | |
| INTERFACE_DESC_LIST_ENTRY           *
 | |
| FindInterfaceListEntry (
 | |
|   IN EFI_USB_IO_PROTOCOL    *This
 | |
|   )
 | |
| /*++
 | |
| 
 | |
|   Routine Description:
 | |
|     Find Interface ListEntry.
 | |
| 
 | |
|   Arguments:
 | |
|     This         -  EFI_USB_IO_PROTOCOL   
 | |
|   
 | |
|   Returns:
 | |
|     INTERFACE_DESC_LIST_ENTRY pointer
 | |
| 
 | |
| --*/
 | |
| ;
 | |
| 
 | |
| ENDPOINT_DESC_LIST_ENTRY            *
 | |
| FindEndPointListEntry (
 | |
|   IN EFI_USB_IO_PROTOCOL    *This,
 | |
|   IN UINT8                  EndPointAddress
 | |
|   )
 | |
| /*++
 | |
| 
 | |
|   Routine Description:
 | |
|     Find EndPoint ListEntry.
 | |
| 
 | |
|   Arguments:
 | |
|     This         -  EFI_USB_IO_PROTOCOL   
 | |
|     EndpointAddr -  Endpoint address.
 | |
|  
 | |
|   Returns:
 | |
|     ENDPOINT_DESC_LIST_ENTRY pointer
 | |
| 
 | |
| --*/
 | |
| ;
 | |
| 
 | |
| EFI_STATUS
 | |
| IsDeviceDisconnected (
 | |
|   IN USB_IO_CONTROLLER_DEVICE    *UsbIoController,
 | |
|   IN OUT BOOLEAN                 *Disconnected
 | |
|   )
 | |
| /*++
 | |
| 
 | |
|   Routine Description:
 | |
|     Reset if the device is disconencted or not
 | |
| 
 | |
|   Arguments:
 | |
|     UsbIoController   -   Indicating the Usb Controller Device.
 | |
|     Disconnected      -   Indicate whether the device is disconencted or not
 | |
| 
 | |
|   Returns:
 | |
|     EFI_SUCCESS
 | |
|     EFI_DEVICE_ERROR
 | |
| 
 | |
| --*/
 | |
| ;
 | |
| 
 | |
| EFI_STATUS
 | |
| UsbDeviceDeConfiguration (
 | |
|   IN USB_IO_DEVICE     *UsbIoDevice
 | |
|   )
 | |
| /*++
 | |
| 
 | |
|   Routine Description:
 | |
|     Remove Device, Device Handles, Uninstall Protocols.
 | |
| 
 | |
|   Arguments:
 | |
|     UsbIoDevice     -   The device to be deconfigured.
 | |
| 
 | |
|   Returns: 
 | |
|     EFI_SUCCESS
 | |
|     EFI_DEVICE_ERROR
 | |
| 
 | |
| --*/
 | |
| ;
 | |
| 
 | |
| EFI_STATUS
 | |
| EFIAPI
 | |
| UsbVirtualHcGetCapability (
 | |
|   IN  USB_BUS_CONTROLLER_DEVICE *UsbBusDev,
 | |
|   OUT UINT8                     *MaxSpeed,
 | |
|   OUT UINT8                     *PortNumber,
 | |
|   OUT UINT8                     *Is64BitCapable
 | |
|   )
 | |
| /*++
 | |
|   
 | |
|   Routine Description:
 | |
|   
 | |
|     Virtual interface to Retrieves the capablility of root hub ports 
 | |
|     for both Hc2 and Hc protocol.
 | |
|     
 | |
|   Arguments:
 | |
|   
 | |
|     UsbBusDev       - A pointer to bus controller of the device.
 | |
|     MaxSpeed        - A pointer to the number of the host controller.
 | |
|     PortNumber      - A pointer to the number of the root hub ports.
 | |
|     Is64BitCapable  - A pointer to the flag for whether controller supports 
 | |
|                       64-bit memory addressing.
 | |
|     
 | |
|   Returns:
 | |
|   
 | |
|     EFI_SUCCESS 
 | |
|           The host controller capability were retrieved successfully.
 | |
|     EFI_INVALID_PARAMETER 
 | |
|           MaxSpeed or PortNumber or Is64BitCapable is NULL.
 | |
|     EFI_DEVICE_ERROR  
 | |
|           An error was encountered while attempting to retrieve the capabilities.  
 | |
|           
 | |
| --*/
 | |
| ;
 | |
| 
 | |
| EFI_STATUS
 | |
| EFIAPI
 | |
| UsbVirtualHcReset (
 | |
|   IN  USB_BUS_CONTROLLER_DEVICE *UsbBusDev,
 | |
|   IN UINT16                     Attributes
 | |
|   )
 | |
| /*++
 | |
|   
 | |
|   Routine Description:
 | |
|   
 | |
|     Virtual interface to provides software reset for the USB host controller
 | |
|     for both Hc2 and Hc protocol.
 | |
|   
 | |
|   Arguments:
 | |
|   
 | |
|     UsbBusDev   - A pointer to bus controller of the device.
 | |
|     Attributes  - A bit mask of the reset operation to perform. 
 | |
|                 See below for a list of the supported bit mask values.
 | |
|   
 | |
|   #define EFI_USB_HC_RESET_GLOBAL  0x0001               // Hc2 and Hc
 | |
|   #define EFI_USB_HC_RESET_HOST_CONTROLLER  0x0002      // Hc2 and Hc
 | |
|   #define EFI_USB_HC_RESET_GLOBAL_WITH_DEBUG  0x0004    // Hc2
 | |
|   #define EFI_USB_HC_RESET_HOST_WITH_DEBUG  0x0008      // Hc2
 | |
| 
 | |
|   EFI_USB_HC_RESET_GLOBAL 
 | |
|         If this bit is set, a global reset signal will be sent to the USB bus.
 | |
|         This resets all of the USB bus logic, including the USB host 
 | |
|         controller hardware and all the devices attached on the USB bus.
 | |
|   EFI_USB_HC_RESET_HOST_CONTROLLER  
 | |
|         If this bit is set, the USB host controller hardware will be reset. 
 | |
|         No reset signal will be sent to the USB bus.
 | |
|   EFI_USB_HC_RESET_GLOBAL_WITH_DEBUG
 | |
|         If this bit is set, a global reset signal will be sent to the USB bus.
 | |
|         This resets all of the USB bus logic, including the USB host 
 | |
|         controller hardware and all the devices attached on the USB bus. 
 | |
|         If this is an EHCI controller and the debug port has configured, then 
 | |
|         this is will still reset the host controller.
 | |
|   EFI_USB_HC_RESET_HOST_WITH_DEBUG
 | |
|         If this bit is set, the USB host controller hardware will be reset. 
 | |
|         If this is an EHCI controller and the debug port has been configured,
 | |
|         then this will still reset the host controller.
 | |
|         
 | |
|   Returns:
 | |
|   
 | |
|     EFI_SUCCESS 
 | |
|         The reset operation succeeded.
 | |
|     EFI_INVALID_PARAMETER 
 | |
|         Attributes is not valid.
 | |
|     EFI_UNSUPPOURTED
 | |
|         The type of reset specified by Attributes is not currently supported by
 | |
|         the host controller hardware.
 | |
|     EFI_ACCESS_DENIED
 | |
|         Reset operation is rejected due to the debug port being configured and 
 | |
|         active; only EFI_USB_HC_RESET_GLOBAL_WITH_DEBUG or 
 | |
|         EFI_USB_HC_RESET_HOST_WITH_DEBUG reset Atrributes can be used to
 | |
|         perform reset operation for this host controller.
 | |
|     EFI_DEVICE_ERROR  
 | |
|         An error was encountered while attempting to perform 
 | |
|         the reset operation.
 | |
|         
 | |
| --*/
 | |
| ;
 | |
| 
 | |
| EFI_STATUS
 | |
| EFIAPI
 | |
| UsbVirtualHcGetState (
 | |
|   IN  USB_BUS_CONTROLLER_DEVICE *UsbBusDev,
 | |
|   OUT EFI_USB_HC_STATE          *State
 | |
|   )
 | |
| /*++
 | |
|   
 | |
|   Routine Description:
 | |
|   
 | |
|     Virtual interface to retrieves current state of the USB host controller
 | |
|     for both Hc2 and Hc protocol.
 | |
|   
 | |
|   Arguments:
 | |
|     
 | |
|     UsbBusDev - A pointer to bus controller of the device.
 | |
|     State     - A pointer to the EFI_USB_HC_STATE data structure that 
 | |
|               indicates current state of the USB host controller.  
 | |
|               Type EFI_USB_HC_STATE is defined below.
 | |
|               
 | |
|     typedef enum {
 | |
|       EfiUsbHcStateHalt,
 | |
|       EfiUsbHcStateOperational,
 | |
|       EfiUsbHcStateSuspend,
 | |
|       EfiUsbHcStateMaximum
 | |
|     } EFI_USB_HC_STATE;
 | |
|   
 | |
|   Returns:
 | |
|   
 | |
|     EFI_SUCCESS 
 | |
|             The state information of the host controller was returned in State.
 | |
|     EFI_INVALID_PARAMETER 
 | |
|             State is NULL.
 | |
|     EFI_DEVICE_ERROR  
 | |
|             An error was encountered while attempting to retrieve the 
 | |
|             host controller's current state.  
 | |
|             
 | |
| --*/
 | |
| ;
 | |
| 
 | |
| EFI_STATUS
 | |
| EFIAPI
 | |
| UsbVirtualHcSetState (
 | |
|   IN  USB_BUS_CONTROLLER_DEVICE *UsbBusDev,
 | |
|   IN EFI_USB_HC_STATE           State
 | |
|   )
 | |
| /*++
 | |
|   
 | |
|   Routine Description:
 | |
|   
 | |
|     Virtual interface to sets the USB host controller to a specific state
 | |
|     for both Hc2 and Hc protocol.
 | |
|   
 | |
|   Arguments:
 | |
|     
 | |
|     UsbBusDev   - A pointer to bus controller of the device.
 | |
|     State       - Indicates the state of the host controller that will be set.
 | |
|   
 | |
|   Returns:
 | |
|   
 | |
|     EFI_SUCCESS 
 | |
|           The USB host controller was successfully placed in the state 
 | |
|           specified by State.
 | |
|     EFI_INVALID_PARAMETER 
 | |
|           State is invalid.
 | |
|     EFI_DEVICE_ERROR  
 | |
|           Failed to set the state specified by State due to device error.  
 | |
|           
 | |
| --*/
 | |
| ;
 | |
| 
 | |
| EFI_STATUS
 | |
| EFIAPI
 | |
| UsbVirtualHcGetRootHubPortStatus (
 | |
|   IN  USB_BUS_CONTROLLER_DEVICE *UsbBusDev,
 | |
|   IN  UINT8                     PortNumber,
 | |
|   OUT EFI_USB_PORT_STATUS       *PortStatus
 | |
|   )
 | |
| /*++
 | |
|   
 | |
|   Routine Description:
 | |
|   
 | |
|     Virtual interface to retrieves the current status of a USB root hub port
 | |
|     both for Hc2 and Hc protocol.
 | |
|   
 | |
|   Arguments:
 | |
|   
 | |
|     UsbBusDev   - A pointer to bus controller of the device.
 | |
|     PortNumber  - Specifies the root hub port from which the status 
 | |
|                 is to be retrieved.  This value is zero-based. For example, 
 | |
|                 if a root hub has two ports, then the first port is numbered 0,
 | |
|                 and the second port is numbered 1.
 | |
|     PortStatus  - A pointer to the current port status bits and 
 | |
|                 port status change bits.  
 | |
|   
 | |
|   Returns:
 | |
|   
 | |
|     EFI_SUCCESS  The status of the USB root hub port specified by PortNumber 
 | |
|                  was returned in PortStatus.
 | |
|     EFI_INVALID_PARAMETER PortNumber is invalid. 
 | |
|     EFI_DEVICE_ERROR      Can't read register     
 | |
|     
 | |
| --*/
 | |
| ;
 | |
| 
 | |
| EFI_STATUS
 | |
| EFIAPI
 | |
| UsbVirtualHcSetRootHubPortFeature (
 | |
|   IN  USB_BUS_CONTROLLER_DEVICE *UsbBusDev,
 | |
|   IN  UINT8                     PortNumber,
 | |
|   IN  EFI_USB_PORT_FEATURE      PortFeature
 | |
|   )
 | |
| /*++
 | |
|   
 | |
|   Routine Description:
 | |
|     Virual interface to sets a feature for the specified root hub port
 | |
|     for both Hc2 and Hc protocol.
 | |
|   
 | |
|   Arguments:
 | |
|   
 | |
|     UsbBusDev   - A pointer to bus controller of the device.
 | |
|     PortNumber  - Specifies the root hub port whose feature 
 | |
|                 is requested to be set.
 | |
|     PortFeature - Indicates the feature selector associated 
 | |
|                 with the feature set request. 
 | |
|   
 | |
|   Returns:
 | |
|   
 | |
|     EFI_SUCCESS 
 | |
|         The feature specified by PortFeature was set for the 
 | |
|         USB root hub port specified by PortNumber.
 | |
|     EFI_INVALID_PARAMETER 
 | |
|         PortNumber is invalid or PortFeature is invalid.
 | |
|     EFI_DEVICE_ERROR
 | |
|         Can't read register
 | |
|         
 | |
| --*/
 | |
| ;
 | |
| 
 | |
| EFI_STATUS
 | |
| EFIAPI
 | |
| UsbVirtualHcClearRootHubPortFeature (
 | |
|   IN  USB_BUS_CONTROLLER_DEVICE *UsbBusDev,
 | |
|   IN  UINT8                     PortNumber,
 | |
|   IN  EFI_USB_PORT_FEATURE      PortFeature
 | |
|   )
 | |
| /*++
 | |
|   
 | |
|   Routine Description:
 | |
|   
 | |
|     Virtual interface to clears a feature for the specified root hub port
 | |
|     for both Hc2 and Hc protocol.
 | |
|   
 | |
|   Arguments:
 | |
|   
 | |
|     UsbBusDev   - A pointer to bus controller of the device.
 | |
|     PortNumber  - Specifies the root hub port whose feature 
 | |
|                 is requested to be cleared.
 | |
|     PortFeature - Indicates the feature selector associated with the 
 | |
|                 feature clear request.
 | |
|                   
 | |
|   Returns:
 | |
|   
 | |
|     EFI_SUCCESS 
 | |
|         The feature specified by PortFeature was cleared for the 
 | |
|         USB root hub port specified by PortNumber.
 | |
|     EFI_INVALID_PARAMETER 
 | |
|         PortNumber is invalid or PortFeature is invalid.
 | |
|     EFI_DEVICE_ERROR
 | |
|         Can't read register
 | |
|         
 | |
| --*/
 | |
| ;
 | |
| 
 | |
| EFI_STATUS
 | |
| EFIAPI
 | |
| UsbVirtualHcControlTransfer (
 | |
|   IN  USB_BUS_CONTROLLER_DEVICE            *UsbBusDev,
 | |
|   IN  UINT8                                DeviceAddress,
 | |
|   IN  UINT8                                DeviceSpeed,
 | |
|   IN  UINTN                                MaximumPacketLength,
 | |
|   IN  EFI_USB_DEVICE_REQUEST               *Request,
 | |
|   IN  EFI_USB_DATA_DIRECTION               TransferDirection,
 | |
|   IN  OUT VOID                             *Data,
 | |
|   IN  OUT UINTN                            *DataLength,
 | |
|   IN  UINTN                                TimeOut,
 | |
|   IN  EFI_USB2_HC_TRANSACTION_TRANSLATOR   *Translator,
 | |
|   OUT UINT32                               *TransferResult
 | |
|   )
 | |
| /*++
 | |
|   
 | |
|   Routine Description:
 | |
|   
 | |
|     Virtual interface to submits control transfer to a target USB device
 | |
|     for both Hc2 and Hc protocol.
 | |
|   
 | |
|   Arguments:
 | |
|     
 | |
|     UsbBusDev     - A pointer to bus controller of the device.
 | |
|     DeviceAddress - Represents the address of the target device on the USB,
 | |
|                   which is assigned during USB enumeration.
 | |
|     DeviceSpeed   - Indicates target device speed.
 | |
|     MaximumPacketLength - Indicates the maximum packet size that the 
 | |
|                         default control transfer endpoint is capable of 
 | |
|                         sending or receiving.
 | |
|     Request       - A pointer to the USB device request that will be sent 
 | |
|                   to the USB device. 
 | |
|     TransferDirection - Specifies the data direction for the transfer.
 | |
|                       There are three values available, DataIn, DataOut 
 | |
|                       and NoData.
 | |
|     Data          - A pointer to the buffer of data that will be transmitted 
 | |
|                   to USB device or received from USB device.
 | |
|     DataLength    - Indicates the size, in bytes, of the data buffer 
 | |
|                   specified by Data.
 | |
|     TimeOut       - Indicates the maximum time, in microseconds, 
 | |
|                   which the transfer is allowed to complete.
 | |
|     Translator      - A pointr to the transaction translator data.
 | |
|     TransferResult  - A pointer to the detailed result information generated 
 | |
|                     by this control transfer.
 | |
|                     
 | |
|   Returns:
 | |
|   
 | |
|     EFI_SUCCESS 
 | |
|         The control transfer was completed successfully.
 | |
|     EFI_OUT_OF_RESOURCES  
 | |
|         The control transfer could not be completed due to a lack of resources.
 | |
|     EFI_INVALID_PARAMETER 
 | |
|         Some parameters are invalid.
 | |
|     EFI_TIMEOUT 
 | |
|         The control transfer failed due to timeout.
 | |
|     EFI_DEVICE_ERROR  
 | |
|         The control transfer failed due to host controller or device error. 
 | |
|         Caller should check TranferResult for detailed error information.
 | |
| 
 | |
| --*/
 | |
| ;
 | |
| 
 | |
| EFI_STATUS
 | |
| EFIAPI
 | |
| UsbVirtualHcBulkTransfer (
 | |
|   IN  USB_BUS_CONTROLLER_DEVICE           *UsbBusDev,
 | |
|   IN  UINT8                               DeviceAddress,
 | |
|   IN  UINT8                               EndPointAddress,
 | |
|   IN  UINT8                               DeviceSpeed,
 | |
|   IN  UINTN                               MaximumPacketLength,
 | |
|   IN  UINT8                               DataBuffersNumber,
 | |
|   IN  OUT VOID                            *Data[EFI_USB_MAX_BULK_BUFFER_NUM],
 | |
|   IN  OUT UINTN                           *DataLength,
 | |
|   IN  OUT UINT8                           *DataToggle,
 | |
|   IN  UINTN                               TimeOut,
 | |
|   IN  EFI_USB2_HC_TRANSACTION_TRANSLATOR  *Translator,
 | |
|   OUT UINT32                              *TransferResult
 | |
|   )
 | |
| /*++
 | |
|   
 | |
|   Routine Description:
 | |
|   
 | |
|     Virtual interface to submits bulk transfer to a bulk endpoint of a USB device
 | |
|     both for Hc2 and Hc protocol.
 | |
|     
 | |
|   Arguments:
 | |
|     
 | |
|     UsbBusDev         - A pointer to bus controller of the device.
 | |
|     DeviceAddress     - Represents the address of the target device on the USB,
 | |
|                       which is assigned during USB enumeration.               
 | |
|     EndPointAddress   - The combination of an endpoint number and an 
 | |
|                       endpoint direction of the target USB device. 
 | |
|                       Each endpoint address supports data transfer in 
 | |
|                       one direction except the control endpoint 
 | |
|                       (whose default endpoint address is 0). 
 | |
|                       It is the caller's responsibility to make sure that 
 | |
|                       the EndPointAddress represents a bulk endpoint.                  
 | |
|     DeviceSpeed       - Indicates device speed. The supported values are EFI_USB_SPEED_FULL
 | |
|                       and EFI_USB_SPEED_HIGH.
 | |
|     MaximumPacketLength - Indicates the maximum packet size the target endpoint
 | |
|                         is capable of sending or receiving.                 
 | |
|     DataBuffersNumber - Number of data buffers prepared for the transfer.
 | |
|     Data              - Array of pointers to the buffers of data that will be transmitted 
 | |
|                       to USB device or received from USB device.              
 | |
|     DataLength        - When input, indicates the size, in bytes, of the data buffer
 | |
|                       specified by Data. When output, indicates the actually 
 | |
|                       transferred data size.              
 | |
|     DataToggle        - A pointer to the data toggle value. On input, it indicates 
 | |
|                       the initial data toggle value the bulk transfer should adopt;
 | |
|                       on output, it is updated to indicate the data toggle value 
 | |
|                       of the subsequent bulk transfer. 
 | |
|     Translator        - A pointr to the transaction translator data. 
 | |
|     TimeOut           - Indicates the maximum time, in microseconds, which the 
 | |
|                       transfer is allowed to complete.              
 | |
|     TransferResult    - A pointer to the detailed result information of the 
 | |
|                       bulk transfer.
 | |
| 
 | |
|   Returns:
 | |
|   
 | |
|     EFI_SUCCESS 
 | |
|         The bulk transfer was completed successfully.
 | |
|     EFI_OUT_OF_RESOURCES  
 | |
|         The bulk transfer could not be submitted due to lack of resource.
 | |
|     EFI_INVALID_PARAMETER 
 | |
|         Some parameters are invalid.
 | |
|     EFI_TIMEOUT 
 | |
|         The bulk transfer failed due to timeout.
 | |
|     EFI_DEVICE_ERROR  
 | |
|         The bulk transfer failed due to host controller or device error.
 | |
|         Caller should check TranferResult for detailed error information.
 | |
| 
 | |
| --*/
 | |
| ;
 | |
| 
 | |
| EFI_STATUS
 | |
| EFIAPI
 | |
| UsbVirtualHcAsyncInterruptTransfer (
 | |
|   IN  USB_BUS_CONTROLLER_DEVICE             * UsbBusDev,
 | |
|   IN  UINT8                                 DeviceAddress,
 | |
|   IN  UINT8                                 EndPointAddress,
 | |
|   IN  UINT8                                 DeviceSpeed,
 | |
|   IN  UINTN                                 MaximumPacketLength,
 | |
|   IN  BOOLEAN                               IsNewTransfer,
 | |
|   IN OUT UINT8                              *DataToggle,
 | |
|   IN  UINTN                                 PollingInterval,
 | |
|   IN  UINTN                                 DataLength,
 | |
|   IN     EFI_USB2_HC_TRANSACTION_TRANSLATOR * Translator,
 | |
|   IN  EFI_ASYNC_USB_TRANSFER_CALLBACK       CallBackFunction,
 | |
|   IN  VOID                                  *Context OPTIONAL
 | |
|   )
 | |
| /*++
 | |
|   
 | |
|   Routine Description:
 | |
|   
 | |
|     Virtual interface to submits an asynchronous interrupt transfer to an 
 | |
|     interrupt endpoint of a USB device for both Hc2 and Hc protocol.
 | |
|   
 | |
|   Arguments:
 | |
|     
 | |
|     UsbBusDev       - A pointer to bus controller of the device.
 | |
|     DeviceAddress   - Represents the address of the target device on the USB,
 | |
|                     which is assigned during USB enumeration.                
 | |
|     EndPointAddress - The combination of an endpoint number and an endpoint 
 | |
|                     direction of the target USB device. Each endpoint address 
 | |
|                     supports data transfer in one direction except the 
 | |
|                     control endpoint (whose default endpoint address is 0). 
 | |
|                     It is the caller's responsibility to make sure that 
 | |
|                     the EndPointAddress represents an interrupt endpoint.              
 | |
|     DeviceSpeed     - Indicates device speed.
 | |
|     MaximumPacketLength  - Indicates the maximum packet size the target endpoint
 | |
|                          is capable of sending or receiving.                   
 | |
|     IsNewTransfer   - If TRUE, an asynchronous interrupt pipe is built between
 | |
|                     the host and the target interrupt endpoint. 
 | |
|                     If FALSE, the specified asynchronous interrupt pipe 
 | |
|                     is canceled.               
 | |
|     DataToggle      - A pointer to the data toggle value.  On input, it is valid 
 | |
|                     when IsNewTransfer is TRUE, and it indicates the initial 
 | |
|                     data toggle value the asynchronous interrupt transfer 
 | |
|                     should adopt.  
 | |
|                     On output, it is valid when IsNewTransfer is FALSE, 
 | |
|                     and it is updated to indicate the data toggle value of 
 | |
|                     the subsequent asynchronous interrupt transfer.              
 | |
|     PollingInterval - Indicates the interval, in milliseconds, that the 
 | |
|                     asynchronous interrupt transfer is polled.  
 | |
|                     This parameter is required when IsNewTransfer is TRUE.               
 | |
|     DataLength      - Indicates the length of data to be received at the 
 | |
|                     rate specified by PollingInterval from the target 
 | |
|                     asynchronous interrupt endpoint.  This parameter 
 | |
|                     is only required when IsNewTransfer is TRUE.             
 | |
|     Translator      - A pointr to the transaction translator data.
 | |
|     CallBackFunction  - The Callback function.This function is called at the 
 | |
|                       rate specified by PollingInterval.This parameter is 
 | |
|                       only required when IsNewTransfer is TRUE.               
 | |
|     Context         - The context that is passed to the CallBackFunction.
 | |
|                     - This is an optional parameter and may be NULL.
 | |
|   
 | |
|   Returns:
 | |
|   
 | |
|     EFI_SUCCESS 
 | |
|         The asynchronous interrupt transfer request has been successfully 
 | |
|         submitted or canceled.
 | |
|     EFI_INVALID_PARAMETER 
 | |
|         Some parameters are invalid.
 | |
|     EFI_OUT_OF_RESOURCES  
 | |
|         The request could not be completed due to a lack of resources.  
 | |
|     EFI_DEVICE_ERROR
 | |
|         Can't read register
 | |
|         
 | |
| --*/
 | |
| ;
 | |
| 
 | |
| EFI_STATUS
 | |
| EFIAPI
 | |
| UsbVirtualHcSyncInterruptTransfer (
 | |
|   IN  USB_BUS_CONTROLLER_DEVICE             *UsbBusDev,
 | |
|   IN  UINT8                                 DeviceAddress,
 | |
|   IN  UINT8                                 EndPointAddress,
 | |
|   IN  UINT8                                 DeviceSpeed,
 | |
|   IN  UINTN                                 MaximumPacketLength,
 | |
|   IN OUT VOID                               *Data,
 | |
|   IN OUT UINTN                              *DataLength,
 | |
|   IN OUT UINT8                              *DataToggle,
 | |
|   IN  UINTN                                 TimeOut,
 | |
|   IN     EFI_USB2_HC_TRANSACTION_TRANSLATOR *Translator,
 | |
|   OUT UINT32                                *TransferResult
 | |
|   )
 | |
| /*++
 | |
|   
 | |
|   Routine Description:
 | |
|   
 | |
|     Vitual interface to submits synchronous interrupt transfer to an interrupt endpoint 
 | |
|     of a USB device for both Hc2 and Hc protocol.
 | |
|   
 | |
|   Arguments:
 | |
|     
 | |
|     UsbBusDev       - A pointer to bus controller of the device.
 | |
|     DeviceAddress   - Represents the address of the target device on the USB, 
 | |
|                     which is assigned during USB enumeration.
 | |
|     EndPointAddress   - The combination of an endpoint number and an endpoint 
 | |
|                       direction of the target USB device. Each endpoint 
 | |
|                       address supports data transfer in one direction 
 | |
|                       except the control endpoint (whose default 
 | |
|                       endpoint address is 0). It is the caller's responsibility
 | |
|                       to make sure that the EndPointAddress represents 
 | |
|                       an interrupt endpoint. 
 | |
|     DeviceSpeed     - Indicates device speed.
 | |
|     MaximumPacketLength - Indicates the maximum packet size the target endpoint 
 | |
|                         is capable of sending or receiving.
 | |
|     Data            - A pointer to the buffer of data that will be transmitted 
 | |
|                     to USB device or received from USB device.
 | |
|     DataLength      - On input, the size, in bytes, of the data buffer specified 
 | |
|                     by Data. On output, the number of bytes transferred.
 | |
|     DataToggle      - A pointer to the data toggle value. On input, it indicates
 | |
|                     the initial data toggle value the synchronous interrupt 
 | |
|                     transfer should adopt; 
 | |
|                     on output, it is updated to indicate the data toggle value 
 | |
|                     of the subsequent synchronous interrupt transfer. 
 | |
|     TimeOut         - Indicates the maximum time, in microseconds, which the 
 | |
|                     transfer is allowed to complete.
 | |
|     Translator      - A pointr to the transaction translator data.
 | |
|     TransferResult  - A pointer to the detailed result information from 
 | |
|                     the synchronous interrupt transfer.  
 | |
| 
 | |
|   Returns:
 | |
|   
 | |
|     EFI_SUCCESS 
 | |
|         The synchronous interrupt transfer was completed successfully.
 | |
|     EFI_OUT_OF_RESOURCES  
 | |
|         The synchronous interrupt transfer could not be submitted due 
 | |
|         to lack of resource.
 | |
|     EFI_INVALID_PARAMETER 
 | |
|         Some parameters are invalid.
 | |
|     EFI_TIMEOUT 
 | |
|         The synchronous interrupt transfer failed due to timeout.
 | |
|     EFI_DEVICE_ERROR  
 | |
|         The synchronous interrupt transfer failed due to host controller 
 | |
|         or device error. Caller should check TranferResult for detailed 
 | |
|         error information.  
 | |
|         
 | |
| --*/
 | |
| ;
 | |
| 
 | |
| EFI_STATUS
 | |
| EFIAPI
 | |
| UsbVirtualHcIsochronousTransfer (
 | |
|   IN  USB_BUS_CONTROLLER_DEVICE             *UsbBusDev,
 | |
|   IN  UINT8                                 DeviceAddress,
 | |
|   IN  UINT8                                 EndPointAddress,
 | |
|   IN  UINT8                                 DeviceSpeed,
 | |
|   IN  UINTN                                 MaximumPacketLength,
 | |
|   IN  UINT8                                 DataBuffersNumber,
 | |
|   IN  OUT VOID                              *Data[EFI_USB_MAX_ISO_BUFFER_NUM],
 | |
|   IN  UINTN                                 DataLength,
 | |
|   IN  EFI_USB2_HC_TRANSACTION_TRANSLATOR    *Translator,
 | |
|   OUT UINT32                                *TransferResult
 | |
|   )
 | |
| /*++
 | |
|   
 | |
|   Routine Description:
 | |
|   
 | |
|     Virtual interface to submits isochronous transfer to a target USB device
 | |
|     for both Hc2 and Hc protocol.
 | |
|   
 | |
|   Arguments:
 | |
|     
 | |
|     UsbBusDev        - A pointer to bus controller of the device.
 | |
|     DeviceAddress    - Represents the address of the target device on the USB,
 | |
|                      which is assigned during USB enumeration.
 | |
|     EndPointAddress  - End point address
 | |
|     DeviceSpeed      - Indicates device speed.
 | |
|     MaximumPacketLength    - Indicates the maximum packet size that the 
 | |
|                            default control transfer endpoint is capable of 
 | |
|                            sending or receiving.
 | |
|     DataBuffersNumber - Number of data buffers prepared for the transfer.
 | |
|     Data              - Array of pointers to the buffers of data that will be 
 | |
|                       transmitted to USB device or received from USB device.
 | |
|     DataLength        - Indicates the size, in bytes, of the data buffer 
 | |
|                       specified by Data.
 | |
|     Translator        - A pointr to the transaction translator data.
 | |
|     TransferResult    - A pointer to the detailed result information generated 
 | |
|                       by this control transfer.               
 | |
|                       
 | |
|   Returns:
 | |
|   
 | |
|     EFI_UNSUPPORTED 
 | |
| 
 | |
| --*/
 | |
| ;
 | |
| 
 | |
| EFI_STATUS
 | |
| EFIAPI
 | |
| UsbVirtualHcAsyncIsochronousTransfer (
 | |
|   IN  USB_BUS_CONTROLLER_DEVICE           *UsbBusDev,
 | |
|   IN  UINT8                               DeviceAddress,
 | |
|   IN  UINT8                               EndPointAddress,
 | |
|   IN  UINT8                               DeviceSpeed,
 | |
|   IN  UINTN                               MaximumPacketLength,
 | |
|   IN  UINT8                               DataBuffersNumber,
 | |
|   IN OUT VOID                             *Data[EFI_USB_MAX_ISO_BUFFER_NUM],
 | |
|   IN  UINTN                               DataLength,
 | |
|   IN  EFI_USB2_HC_TRANSACTION_TRANSLATOR  *Translator,
 | |
|   IN  EFI_ASYNC_USB_TRANSFER_CALLBACK     IsochronousCallBack,
 | |
|   IN  VOID                                *Context
 | |
|   )
 | |
| /*++
 | |
|   
 | |
|   Routine Description:
 | |
|   
 | |
|     Vitual interface to submits Async isochronous transfer to a target USB device
 | |
|     for both Hc2 and Hc protocol.
 | |
|   
 | |
|   Arguments:
 | |
|   
 | |
|     UsbBusDev           - A pointer to bus controller of the device.
 | |
|     DeviceAddress       - Represents the address of the target device on the USB,
 | |
|                         which is assigned during USB enumeration.
 | |
|     EndPointAddress     - End point address
 | |
|     DeviceSpeed         - Indicates device speed.
 | |
|     MaximumPacketLength - Indicates the maximum packet size that the 
 | |
|                         default control transfer endpoint is capable of 
 | |
|                         sending or receiving.
 | |
|     DataBuffersNumber   - Number of data buffers prepared for the transfer.
 | |
|     Data                - Array of pointers to the buffers of data that will be transmitted 
 | |
|                         to USB device or received from USB device.
 | |
|     DataLength          - Indicates the size, in bytes, of the data buffer 
 | |
|                         specified by Data.
 | |
|     Translator          - A pointr to the transaction translator data.
 | |
|     IsochronousCallBack - When the transfer complete, the call back function will be called
 | |
|     Context             - Pass to the call back function as parameter
 | |
|                     
 | |
|   Returns:
 | |
|   
 | |
|     EFI_UNSUPPORTED 
 | |
| 
 | |
| --*/
 | |
| ;
 | |
| 
 | |
| EFI_STATUS
 | |
| EFIAPI
 | |
| UsbPortReset (
 | |
|   IN EFI_USB_IO_PROTOCOL     *This
 | |
|   )
 | |
| /*++
 | |
| 
 | |
|   Routine Description:
 | |
|     Resets and reconfigures the USB controller.  This function will
 | |
|     work for all USB devices except USB Hub Controllers.
 | |
| 
 | |
|   Arguments:
 | |
|     This          -   Indicates the calling context.
 | |
| 
 | |
|   Returns:
 | |
|     EFI_SUCCESS
 | |
|     EFI_INVALID_PARAMETER
 | |
|     EFI_DEVICE_ERROR
 | |
| 
 | |
| --*/
 | |
| ;
 | |
| 
 | |
| VOID
 | |
| InitializeUsbIoInstance (
 | |
|   IN USB_IO_CONTROLLER_DEVICE     *UsbIoController
 | |
|   )
 | |
| /*++
 | |
| 
 | |
| Routine Description:
 | |
| 
 | |
|   Initialize the instance of UsbIo controller
 | |
| 
 | |
| Arguments:
 | |
| 
 | |
|   UsbIoController - A pointer to controller structure of UsbIo
 | |
| 
 | |
| Returns:
 | |
| 
 | |
| --*/
 | |
| ;
 | |
| 
 | |
| #endif
 |