mirror of
				https://github.com/acidanthera/audk.git
				synced 2025-10-30 02:33:44 +01:00 
			
		
		
		
	https://bugzilla.tianocore.org/show_bug.cgi?id=1373 Replace BSD 2-Clause License with BSD+Patent License. This change is based on the following emails: https://lists.01.org/pipermail/edk2-devel/2019-February/036260.html https://lists.01.org/pipermail/edk2-devel/2018-October/030385.html RFCs with detailed process for the license change: V3: https://lists.01.org/pipermail/edk2-devel/2019-March/038116.html V2: https://lists.01.org/pipermail/edk2-devel/2019-March/037669.html V1: https://lists.01.org/pipermail/edk2-devel/2019-March/037500.html Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Michael D Kinney <michael.d.kinney@intel.com> Reviewed-by: Hao Wu <hao.a.wu@intel.com> Reviewed-by: Jian J Wang <jian.j.wang@intel.com>
		
			
				
	
	
		
			263 lines
		
	
	
		
			13 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			263 lines
		
	
	
		
			13 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /** @file
 | |
|   Defines the USB Host Controller PPI that provides I/O services for a USB Host
 | |
|   Controller that may be used to access recovery devices.  These interfaces are
 | |
|   modeled on the UEFI 2.3 specification EFI_USB2_HOST_CONTROLLER_PROTOCOL.
 | |
|   Refer to section 16.1 of the UEFI 2.3 Specification for more information on
 | |
|   these interfaces.
 | |
| 
 | |
| Copyright (c) 2010 - 2018, Intel Corporation. All rights reserved. <BR>
 | |
| 
 | |
| SPDX-License-Identifier: BSD-2-Clause-Patent
 | |
| 
 | |
| **/
 | |
| 
 | |
| #ifndef _PEI_USB2_HOST_CONTROLLER_PPI_H_
 | |
| #define _PEI_USB2_HOST_CONTROLLER_PPI_H_
 | |
| 
 | |
| #include <Protocol/Usb2HostController.h>
 | |
| 
 | |
| ///
 | |
| /// Global ID for the PEI_USB2_HOST_CONTROLLER_PPI.
 | |
| ///
 | |
| #define PEI_USB2_HOST_CONTROLLER_PPI_GUID \
 | |
|   { \
 | |
|     0xa7d09fe1, 0x74d4, 0x4ba5, { 0x84, 0x7c, 0x12, 0xed, 0x5b, 0x19, 0xad, 0xe4 } \
 | |
|   }
 | |
| 
 | |
| ///
 | |
| /// Forward declaration for the PEI_USB2_HOST_CONTROLLER_PPI.
 | |
| ///
 | |
| typedef struct _PEI_USB2_HOST_CONTROLLER_PPI PEI_USB2_HOST_CONTROLLER_PPI;
 | |
| 
 | |
| /**
 | |
|   Initiate a USB control transfer using a specific USB Host controller on the USB bus.
 | |
| 
 | |
|   @param[in]     PeiServices           The pointer to the PEI Services Table.
 | |
|   @param[in]     This                  The pointer to this instance of the
 | |
|                                        PEI_USB2_HOST_CONTROLLER_PPI.
 | |
|   @param[in]     DeviceAddress         Represents the address of the target device
 | |
|                                        on the USB.
 | |
|   @param[in]     DeviceSpeed           Indicates device speed.
 | |
|   @param[in]     MaximumPacketLength   Indicates the maximum packet size that the
 | |
|                                        default control transfer
 | |
|                                        endpoint is capable of sending or receiving.
 | |
|   @param[in]     Request               A pointer to the USB device request that
 | |
|                                        will be sent to the USB device.
 | |
|   @param[in]     TransferDirection     Specifies the data direction for the transfer.
 | |
|                                        There are three values available:
 | |
|                                        EfiUsbDataIn, EfiUsbDataOut and EfiUsbNoData.
 | |
|   @param[in,out] Data                  A pointer to the buffer of data that will
 | |
|                                        be transmitted to USB device or
 | |
|                                        received from USB device.
 | |
|   @param[in,out] DataLength            On input, indicates the size, in bytes, of
 | |
|                                        the data buffer specified by Data.
 | |
|                                        On output, indicates the amount of data
 | |
|                                        actually transferred.
 | |
|   @param[in]     TimeOut               Indicates the maximum time, in milliseconds,
 | |
|                                        that the transfer is allowed to complete.
 | |
|                                        If Timeout is 0, then the caller must wait for
 | |
|                                        the function to be completed until EFI_SUCCESS
 | |
|                                        or EFI_DEVICE_ERROR is returned.
 | |
|   @param[in]     Translator            A pointer to the transaction translator data.
 | |
|   @param[out]    TransferResult        A pointer to the detailed result information
 | |
|                                        generated by this control transfer.
 | |
| 
 | |
|   @retval EFI_SUCCESS           The control transfer was completed successfully.
 | |
|   @retval EFI_DEVICE_ERROR      The control transfer failed due to host controller
 | |
|                                 or device error.
 | |
|   @retval EFI_INVALID_PARAMETER Some parameters are invalid.
 | |
|   @retval EFI_OUT_OF_RESOURCES  The control transfer could not be completed due to a lack of resources.
 | |
|   @retval EFI_TIMEOUT           The control transfer failed due to timeout.
 | |
| 
 | |
| 
 | |
| **/
 | |
| typedef
 | |
| EFI_STATUS
 | |
| (EFIAPI *PEI_USB2_HOST_CONTROLLER_CONTROL_TRANSFER)(
 | |
|   IN EFI_PEI_SERVICES                         **PeiServices,
 | |
|   IN PEI_USB2_HOST_CONTROLLER_PPI             *This,
 | |
|   IN     UINT8                                DeviceAddress,
 | |
|   IN     UINT8                                DeviceSpeed,
 | |
|   IN     UINTN                                MaximumPacketLength,
 | |
|   IN     USB_DEVICE_REQUEST                   *Request,
 | |
|   IN     EFI_USB_DATA_DIRECTION               TransferDirection,
 | |
|   IN OUT VOID                                 *Data OPTIONAL,
 | |
|   IN OUT UINTN                                *DataLength OPTIONAL,
 | |
|   IN     UINTN                                TimeOut,
 | |
|   IN     EFI_USB2_HC_TRANSACTION_TRANSLATOR   *Translator,
 | |
|   OUT    UINT32                               *TransferResult
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Initiate a USB bulk transfer using a specific USB Host controller on the USB bus.
 | |
| 
 | |
|   @param[in]     PeiServices           The pointer to the PEI Services Table.
 | |
|   @param[in]     This                  The pointer to this instance of the
 | |
|                                        PEI_USB2_HOST_CONTROLLER_PPI.
 | |
|   @param[in]     DeviceAddress         Represents the address of the target device
 | |
|                                        on the USB.
 | |
|   @param[in]     EndPointAddress       The combination of an endpoint number and
 | |
|                                        an endpoint direction of the target USB device.
 | |
|   @param[in]     DeviceSpeed           Indicates device speed.
 | |
|   @param[in]     MaximumPacketLength   Indicates the maximum packet size the target
 | |
|                                        endpoint is capable of sending or receiving.
 | |
|   @param[in,out] Data                  Array of pointers to the buffers of data
 | |
|                                        that will be transmitted to USB device or
 | |
|                                        received from USB device.
 | |
|   @param[in,out] DataLength            When input, indicates the size, in bytes, of
 | |
|                                        the data buffers specified by Data. When output,
 | |
|                                        indicates the data size actually transferred.
 | |
|   @param[in,out] DataToggle            A pointer to the data toggle value.
 | |
|   @param[in]     TimeOut               Indicates the maximum time, in milliseconds,
 | |
|                                        in which the transfer is allowed to complete.
 | |
|                                        If Timeout is 0, then the caller must wait for
 | |
|                                        the function to be completed until EFI_SUCCESS
 | |
|                                        or EFI_DEVICE_ERROR is returned.
 | |
|   @param[in]     Translator            A pointer to the transaction translator data.
 | |
|   @param[out]    TransferResult        A pointer to the detailed result information
 | |
|                                        of the bulk transfer.
 | |
| 
 | |
|   @retval EFI_SUCCESS           The bulk transfer was completed successfully.
 | |
|   @retval EFI_DEVICE_ERROR      The bulk transfer failed due to host controller or device error.
 | |
|                                 Caller should check TransferResult for detailed error information.
 | |
|   @retval EFI_INVALID_PARAMETER Some parameters are invalid.
 | |
|   @retval EFI_OUT_OF_RESOURCES  The bulk transfer could not be submitted due to a lack of resources.
 | |
|   @retval EFI_TIMEOUT           The bulk transfer failed due to timeout.
 | |
| 
 | |
| 
 | |
| **/
 | |
| typedef
 | |
| EFI_STATUS
 | |
| (EFIAPI *PEI_USB2_HOST_CONTROLLER_BULK_TRANSFER)(
 | |
|   IN     EFI_PEI_SERVICES                    **PeiServices,
 | |
|   IN     PEI_USB2_HOST_CONTROLLER_PPI        *This,
 | |
|   IN     UINT8                               DeviceAddress,
 | |
|   IN     UINT8                               EndPointAddress,
 | |
|   IN     UINT8                               DeviceSpeed,
 | |
|   IN     UINTN                               MaximumPacketLength,
 | |
|   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
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Retrieves the number of root hub ports.
 | |
| 
 | |
|   @param[in]  PeiServices       The pointer to the PEI Services Table.
 | |
|   @param[in]  This              The pointer to this instance of the
 | |
|                                 PEI_USB2_HOST_CONTROLLER_PPI.
 | |
|   @param[out] PortNumber        The pointer to the number of the root hub ports.
 | |
| 
 | |
|   @retval EFI_SUCCESS           The port number was retrieved successfully.
 | |
|   @retval EFI_INVALID_PARAMETER PortNumber is NULL.
 | |
| 
 | |
| **/
 | |
| typedef
 | |
| EFI_STATUS
 | |
| (EFIAPI *PEI_USB2_HOST_CONTROLLER_GET_ROOTHUB_PORT_NUMBER)(
 | |
|   IN  EFI_PEI_SERVICES              **PeiServices,
 | |
|   IN  PEI_USB2_HOST_CONTROLLER_PPI  *This,
 | |
|   OUT UINT8                         *PortNumber
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Retrieves the current status of a USB root hub port.
 | |
| 
 | |
|   @param[in]  PeiServices       The pointer to the PEI Services Table.
 | |
|   @param[in]  This              The pointer to this instance of the
 | |
|                                 PEI_USB2_HOST_CONTROLLER_PPI.
 | |
|   @param[in]  PortNumber        Specifies the root hub port from which the status is
 | |
|                                 to be retrieved.
 | |
|                                 This value is zero based.
 | |
|   @param[out] PortStatus        A pointer to the current port status bits and port
 | |
|                                 status change bits.
 | |
| 
 | |
|   @retval EFI_SUCCESS           The status of the USB root hub port specified by
 | |
|                                 PortNumber was returned in PortStatus.
 | |
|   @retval EFI_INVALID_PARAMETER PortNumber is invalid.
 | |
| 
 | |
| **/
 | |
| typedef
 | |
| EFI_STATUS
 | |
| (EFIAPI *PEI_USB2_HOST_CONTROLLER_GET_ROOTHUB_PORT_STATUS)(
 | |
|   IN  EFI_PEI_SERVICES              **PeiServices,
 | |
|   IN  PEI_USB2_HOST_CONTROLLER_PPI  *This,
 | |
|   IN  UINT8                         PortNumber,
 | |
|   OUT EFI_USB_PORT_STATUS           *PortStatus
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Sets a feature for the specified root hub port.
 | |
| 
 | |
|   @param[in] PeiServices        The pointer to the PEI Services Table.
 | |
|   @param[in] This               The pointer to this instance of the
 | |
|                                 PEI_USB2_HOST_CONTROLLER_PPI.
 | |
|   @param[in] PortNumber         Specifies the root hub port whose feature is requested
 | |
|                                 to be set. This value is zero based.
 | |
|   @param[in] PortFeature        Indicates the feature selector associated with the feature
 | |
|                                 set request.
 | |
| 
 | |
|   @retval EFI_SUCCESS           The feature specified by PortFeature was set for
 | |
|                                 the USB root hub port specified by PortNumber.
 | |
|   @retval EFI_INVALID_PARAMETER PortNumber is invalid or PortFeature is invalid
 | |
|                                 for this function.
 | |
|   @retval EFI_TIMEOUT           The time out occurred
 | |
| 
 | |
| **/
 | |
| typedef
 | |
| EFI_STATUS
 | |
| (EFIAPI *PEI_USB2_HOST_CONTROLLER_SET_ROOTHUB_PORT_FEATURE)(
 | |
|   IN EFI_PEI_SERVICES               **PeiServices,
 | |
|   IN PEI_USB2_HOST_CONTROLLER_PPI   *This,
 | |
|   IN UINT8                          PortNumber,
 | |
|   IN EFI_USB_PORT_FEATURE           PortFeature
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Clears a feature for the specified root hub port.
 | |
| 
 | |
|   @param[in] PeiServices          The pointer to the PEI Services Table.
 | |
|   @param[in] This                 The pointer to this instance of the
 | |
|                                   PEI_USB2_HOST_CONTROLLER_PPI.
 | |
|   @param[in] PortNumber           Specifies the root hub port whose feature is
 | |
|                                   requested to be cleared.
 | |
|   @param[in] PortFeature          Indicates the feature selector associated with the
 | |
|                                   feature clear request.
 | |
| 
 | |
|   @return EFI_SUCCESS             The feature specified by PortFeature was cleared
 | |
|                                   for the USB root hub port specified by PortNumber.
 | |
|   @return EFI_INVALID_PARAMETER   PortNumber is invalid or PortFeature is invalid.
 | |
| 
 | |
| **/
 | |
| typedef
 | |
| EFI_STATUS
 | |
| (EFIAPI *PEI_USB2_HOST_CONTROLLER_CLEAR_ROOTHUB_PORT_FEATURE)(
 | |
|   IN EFI_PEI_SERVICES               **PeiServices,
 | |
|   IN PEI_USB2_HOST_CONTROLLER_PPI   *This,
 | |
|   IN UINT8                          PortNumber,
 | |
|   IN EFI_USB_PORT_FEATURE           PortFeature
 | |
|   );
 | |
| 
 | |
| ///
 | |
| /// This PPI contains a set of services to interact with the USB host controller.
 | |
| /// These interfaces are modeled on the UEFI 2.3 specification protocol
 | |
| /// EFI_USB2_HOST_CONTROLLER_PROTOCOL.  Refer to section 16.1 of the UEFI 2.3
 | |
| /// Specification for more information on these interfaces.
 | |
| ///
 | |
| struct _PEI_USB2_HOST_CONTROLLER_PPI {
 | |
|   PEI_USB2_HOST_CONTROLLER_CONTROL_TRANSFER            ControlTransfer;
 | |
|   PEI_USB2_HOST_CONTROLLER_BULK_TRANSFER               BulkTransfer;
 | |
|   PEI_USB2_HOST_CONTROLLER_GET_ROOTHUB_PORT_NUMBER     GetRootHubPortNumber;
 | |
|   PEI_USB2_HOST_CONTROLLER_GET_ROOTHUB_PORT_STATUS     GetRootHubPortStatus;
 | |
|   PEI_USB2_HOST_CONTROLLER_SET_ROOTHUB_PORT_FEATURE    SetRootHubPortFeature;
 | |
|   PEI_USB2_HOST_CONTROLLER_CLEAR_ROOTHUB_PORT_FEATURE  ClearRootHubPortFeature;
 | |
| };
 | |
| 
 | |
| extern EFI_GUID gPeiUsb2HostControllerPpiGuid;
 | |
| 
 | |
| #endif
 | |
| 
 |