4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/** @file
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Defines the USB Host Controller PPI that provides I/O services for a USB Host
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Controller that may be used to access recovery devices. These interfaces are
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync modeled on the UEFI 2.3 specification EFI_USB2_HOST_CONTROLLER_PROTOCOL.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Refer to section 16.1 of the UEFI 2.3 Specification for more information on
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync these interfaces.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncCopyright (c) 2010, Intel Corporation. All rights reserved. <BR>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncThis program and the accompanying materials
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncare licensed and made available under the terms and conditions
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncof the BSD License which accompanies this distribution. The
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncfull text of the license may be found at
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynchttp://opensource.org/licenses/bsd-license.php
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncTHE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncWITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifndef _PEI_USB2_HOST_CONTROLLER_PPI_H_
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define _PEI_USB2_HOST_CONTROLLER_PPI_H_
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#include <Protocol/Usb2HostController.h>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// Global ID for the PEI_USB2_HOST_CONTROLLER_PPI.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define PEI_USB2_HOST_CONTROLLER_PPI_GUID \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync { \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync 0xa7d09fe1, 0x74d4, 0x4ba5, { 0x84, 0x7c, 0x12, 0xed, 0x5b, 0x19, 0xad, 0xe4 } \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// Forward declaration for the PEI_USB2_HOST_CONTROLLER_PPI.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef struct _PEI_USB2_HOST_CONTROLLER_PPI PEI_USB2_HOST_CONTROLLER_PPI;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Initiate a USB control transfer using a specific USB Host controller on the USB bus.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] PeiServices The pointer to the PEI Services Table.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] This The pointer to this instance of the
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync PEI_USB2_HOST_CONTROLLER_PPI.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] DeviceAddress Represents the address of the target device
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync on the USB.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] DeviceSpeed Indicates device speed.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] MaximumPacketLength Indicates the maximum packet size that the
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync default control transfer
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync endpoint is capable of sending or receiving.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Request A pointer to the USB device request that
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync will be sent to the USB device.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] TransferDirection Specifies the data direction for the transfer.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync There are three values available:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EfiUsbDataIn, EfiUsbDataOut and EfiUsbNoData.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in,out] Data A pointer to the buffer of data that will
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync be transmitted to USB device or
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync received from USB device.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in,out] DataLength On input, indicates the size, in bytes, of
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync the data buffer specified by Data.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync On output, indicates the amount of data
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync actually transferred.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] TimeOut Indicates the maximum time, in milliseconds,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync that the transfer is allowed to complete.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Translator A pointer to the transaction translator data.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[out] TransferResult A pointer to the detailed result information
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync generated by this control transfer.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_SUCCESS The control transfer was completed successfully.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_DEVICE_ERROR The control transfer failed due to host controller
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync or device error.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_INVALID_PARAMETER Some parameters are invalid.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_OUT_OF_RESOURCES The control transfer could not be completed due to a lack of resources.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_TIMEOUT The control transfer failed due to timeout.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFI_STATUS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync(EFIAPI *PEI_USB2_HOST_CONTROLLER_CONTROL_TRANSFER)(
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_PEI_SERVICES **PeiServices,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN PEI_USB2_HOST_CONTROLLER_PPI *This,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN UINT8 DeviceAddress,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN UINT8 DeviceSpeed,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN UINTN MaximumPacketLength,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN USB_DEVICE_REQUEST *Request,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_USB_DATA_DIRECTION TransferDirection,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN OUT VOID *Data OPTIONAL,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN OUT UINTN *DataLength OPTIONAL,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN UINTN TimeOut,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_USB2_HC_TRANSACTION_TRANSLATOR *Translator,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync OUT UINT32 *TransferResult
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Initiate a USB bulk transfer using a specific USB Host controller on the USB bus.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] PeiServices The pointer to the PEI Services Table.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] This The pointer to this instance of the
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync PEI_USB2_HOST_CONTROLLER_PPI.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] DeviceAddress Represents the address of the target device
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync on the USB.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] EndPointAddress The combination of an endpoint number and
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync an endpoint direction of the target USB device.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] DeviceSpeed Indicates device speed.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] MaximumPacketLength Indicates the maximum packet size the target
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync endpoint is capable of sending or receiving.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in,out] Data Array of pointers to the buffers of data
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync that will be transmitted to USB device or
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync received from USB device.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in,out] DataLength When input, indicates the size, in bytes, of
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync the data buffers specified by Data. When output,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync indicates the data size actually transferred.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in,out] DataToggle A pointer to the data toggle value.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] TimeOut Indicates the maximum time, in milliseconds,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync in which the transfer is allowed to complete.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Translator A pointer to the transaction translator data.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[out] TransferResult A pointer to the detailed result information
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync of the bulk transfer.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_SUCCESS The bulk transfer was completed successfully.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_DEVICE_ERROR The bulk transfer failed due to host controller or device error.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Caller should check TransferResult for detailed error information.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_INVALID_PARAMETER Some parameters are invalid.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_OUT_OF_RESOURCES The bulk transfer could not be submitted due to a lack of resources.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_TIMEOUT The bulk transfer failed due to timeout.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFI_STATUS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync(EFIAPI *PEI_USB2_HOST_CONTROLLER_BULK_TRANSFER)(
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_PEI_SERVICES **PeiServices,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN PEI_USB2_HOST_CONTROLLER_PPI *This,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN UINT8 DeviceAddress,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN UINT8 EndPointAddress,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN UINT8 DeviceSpeed,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN UINTN MaximumPacketLength,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN OUT VOID *Data[EFI_USB_MAX_BULK_BUFFER_NUM],
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN OUT UINTN *DataLength,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN OUT UINT8 *DataToggle,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN UINTN TimeOut,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_USB2_HC_TRANSACTION_TRANSLATOR *Translator,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync OUT UINT32 *TransferResult
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Retrieves the number of root hub ports.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] PeiServices The pointer to the PEI Services Table.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] This The pointer to this instance of the
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync PEI_USB2_HOST_CONTROLLER_PPI.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[out] PortNumber The pointer to the number of the root hub ports.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_SUCCESS The port number was retrieved successfully.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_INVALID_PARAMETER PortNumber is NULL.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFI_STATUS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync(EFIAPI *PEI_USB2_HOST_CONTROLLER_GET_ROOTHUB_PORT_NUMBER)(
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_PEI_SERVICES **PeiServices,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN PEI_USB2_HOST_CONTROLLER_PPI *This,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync OUT UINT8 *PortNumber
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Retrieves the current status of a USB root hub port.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] PeiServices The pointer to the PEI Services Table.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] This The pointer to this instance of the
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync PEI_USB2_HOST_CONTROLLER_PPI.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] PortNumber Specifies the root hub port from which the status is
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync to be retrieved.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This value is zero based.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[out] PortStatus A pointer to the current port status bits and port
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync status change bits.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_SUCCESS The status of the USB root hub port specified by
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync PortNumber was returned in PortStatus.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_INVALID_PARAMETER PortNumber is invalid.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFI_STATUS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync(EFIAPI *PEI_USB2_HOST_CONTROLLER_GET_ROOTHUB_PORT_STATUS)(
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_PEI_SERVICES **PeiServices,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN PEI_USB2_HOST_CONTROLLER_PPI *This,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN UINT8 PortNumber,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync OUT EFI_USB_PORT_STATUS *PortStatus
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Sets a feature for the specified root hub port.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] PeiServices The pointer to the PEI Services Table.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] This The pointer to this instance of the
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync PEI_USB2_HOST_CONTROLLER_PPI.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] PortNumber Specifies the root hub port whose feature is requested
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync to be set. This value is zero based.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] PortFeature Indicates the feature selector associated with the feature
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync set request.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_SUCCESS The feature specified by PortFeature was set for
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync the USB root hub port specified by PortNumber.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_INVALID_PARAMETER PortNumber is invalid or PortFeature is invalid
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync for this function.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_TIMEOUT The time out occurred
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFI_STATUS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync(EFIAPI *PEI_USB2_HOST_CONTROLLER_SET_ROOTHUB_PORT_FEATURE)(
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_PEI_SERVICES **PeiServices,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN PEI_USB2_HOST_CONTROLLER_PPI *This,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN UINT8 PortNumber,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_USB_PORT_FEATURE PortFeature
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Clears a feature for the specified root hub port.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] PeiServices The pointer to the PEI Services Table.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] This The pointer to this instance of the
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync PEI_USB2_HOST_CONTROLLER_PPI.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] PortNumber Specifies the root hub port whose feature is
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync requested to be cleared.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] PortFeature Indicates the feature selector associated with the
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync feature clear request.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @return EFI_SUCCESS The feature specified by PortFeature was cleared
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync for the USB root hub port specified by PortNumber.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @return EFI_INVALID_PARAMETER PortNumber is invalid or PortFeature is invalid.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFI_STATUS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync(EFIAPI *PEI_USB2_HOST_CONTROLLER_CLEAR_ROOTHUB_PORT_FEATURE)(
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_PEI_SERVICES **PeiServices,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN PEI_USB2_HOST_CONTROLLER_PPI *This,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN UINT8 PortNumber,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_USB_PORT_FEATURE PortFeature
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// This PPI contains a set of services to interact with the USB host controller.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// These interfaces are modeled on the UEFI 2.3 specification protocol
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// EFI_USB2_HOST_CONTROLLER_PROTOCOL. Refer to section 16.1 of the UEFI 2.3
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// Specification for more information on these interfaces.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncstruct _PEI_USB2_HOST_CONTROLLER_PPI {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync PEI_USB2_HOST_CONTROLLER_CONTROL_TRANSFER ControlTransfer;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync PEI_USB2_HOST_CONTROLLER_BULK_TRANSFER BulkTransfer;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync PEI_USB2_HOST_CONTROLLER_GET_ROOTHUB_PORT_NUMBER GetRootHubPortNumber;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync PEI_USB2_HOST_CONTROLLER_GET_ROOTHUB_PORT_STATUS GetRootHubPortStatus;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync PEI_USB2_HOST_CONTROLLER_SET_ROOTHUB_PORT_FEATURE SetRootHubPortFeature;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync PEI_USB2_HOST_CONTROLLER_CLEAR_ROOTHUB_PORT_FEATURE ClearRootHubPortFeature;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync};
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncextern EFI_GUID gPeiUsb2HostControllerPpiGuid;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync