mirror of
				https://git.proxmox.com/git/mirror_edk2
				synced 2025-10-31 08:32:28 +00:00 
			
		
		
		
	 9d510e61fc
			
		
	
	
		9d510e61fc
		
	
	
	
	
		
			
			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>
		
			
				
	
	
		
			190 lines
		
	
	
		
			7.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			190 lines
		
	
	
		
			7.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /** @file
 | |
|   Defines the PEI_USB_IO_PPI that the USB-related PEIM can use for I/O operations
 | |
|   on the USB BUS.  This interface enables recovery from a
 | |
|   USB-class storage device, such as USB CD/DVD, USB hard drive, or USB FLASH
 | |
|   drive.  These interfaces are modeled on the UEFI 2.3 specification EFI_USB_IO_PROTOCOL.
 | |
|   Refer to section 16.2.4 of the UEFI 2.3 Specification for more information on
 | |
|   these interfaces.
 | |
| 
 | |
| Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
 | |
| 
 | |
| SPDX-License-Identifier: BSD-2-Clause-Patent
 | |
| 
 | |
| **/
 | |
| 
 | |
| #ifndef _PEI_USB_IO_PPI_H_
 | |
| #define _PEI_USB_IO_PPI_H_
 | |
| 
 | |
| #include <Protocol/Usb2HostController.h>
 | |
| 
 | |
| ///
 | |
| /// Global ID for the PEI_USB_IO_PPI.
 | |
| ///
 | |
| #define PEI_USB_IO_PPI_GUID \
 | |
|   { \
 | |
|     0x7c29785c, 0x66b9, 0x49fc, { 0xb7, 0x97, 0x1c, 0xa5, 0x55, 0xe, 0xf2, 0x83} \
 | |
|   }
 | |
| 
 | |
| ///
 | |
| /// Forward declaration for the PEI_USB_IO_PPI.
 | |
| ///
 | |
| typedef struct _PEI_USB_IO_PPI  PEI_USB_IO_PPI;
 | |
| 
 | |
| /**
 | |
|   Submits control transfer to a target USB device.
 | |
| 
 | |
|   @param[in]     PeiServices   The pointer to the PEI Services Table.
 | |
|   @param[in]     This          The pointer to this instance of the PEI_USB_IO_PPI.
 | |
|   @param[in]     Request       A pointer to the USB device request that will be
 | |
|                                sent to the USB device.
 | |
|   @param[in]     Direction     Specifies the data direction for the transfer. There
 | |
|                                are three values available:
 | |
|                                EfiUsbDataIn, EfiUsbDataOut and EfiUsbNoData.
 | |
|   @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,out] Data          A pointer to the buffer of data that will be
 | |
|                                transmitted to or received from the USB device.
 | |
|   @param[in]     DataLength    On input, indicates the size, in bytes, of the data
 | |
|                                buffer specified by Data.
 | |
| 
 | |
|   @retval EFI_SUCCESS             The control transfer was completed successfully.
 | |
|   @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.
 | |
|   @retval EFI_DEVICE_ERROR        The control transfer failed due to host controller
 | |
|                                   or device error.
 | |
|                                   Caller should check TransferResult for detailed
 | |
|                                   error information.
 | |
| 
 | |
| **/
 | |
| typedef
 | |
| EFI_STATUS
 | |
| (EFIAPI *PEI_USB_CONTROL_TRANSFER)(
 | |
|   IN     EFI_PEI_SERVICES        **PeiServices,
 | |
|   IN     PEI_USB_IO_PPI          *This,
 | |
|   IN     EFI_USB_DEVICE_REQUEST  *Request,
 | |
|   IN     EFI_USB_DATA_DIRECTION  Direction,
 | |
|   IN     UINT32                  Timeout,
 | |
|   IN OUT VOID                    *Data OPTIONAL,
 | |
|   IN     UINTN                   DataLength  OPTIONAL
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Submits bulk transfer to a target USB device.
 | |
| 
 | |
|   @param[in] PeiServices       The pointer to the PEI Services Table.
 | |
|   @param[in] This              The pointer to this instance of the PEI_USB_IO_PPI.
 | |
|   @param[in] DeviceEndpoint    The endpoint address.
 | |
|   @param[in] Data              The data buffer to be transfered.
 | |
|   @param[in] DataLength        The length of data buffer.
 | |
|   @param[in] Timeout           The timeout for the transfer, in milliseconds.
 | |
|                                If Timeout is 0, then the caller must wait for the
 | |
|                                function to be completed until EFI_SUCCESS or
 | |
|                                EFI_DEVICE_ERROR is returned.
 | |
| 
 | |
|   @retval EFI_SUCCESS             The bulk transfer completed successfully.
 | |
|   @retval EFI_INVALID_PARAMETER   Some parameters are invalid.
 | |
|   @retval EFI_OUT_OF_RESOURCES    The bulk transfer could not be completed due to
 | |
|                                   a lack of resources.
 | |
|   @retval EFI_TIMEOUT             The bulk transfer failed due to timeout.
 | |
|   @retval EFI_DEVICE_ERROR        The bulk transfer failed due to host controller
 | |
|                                   or device error.
 | |
|                                   Caller should check TransferResult for detailed
 | |
|                                   error information.
 | |
| 
 | |
| **/
 | |
| typedef
 | |
| EFI_STATUS
 | |
| (EFIAPI *PEI_USB_BULK_TRANSFER)(
 | |
|   IN EFI_PEI_SERVICES  **PeiServices,
 | |
|   IN PEI_USB_IO_PPI    *This,
 | |
|   IN UINT8             DeviceEndpoint,
 | |
|   IN OUT VOID          *Data,
 | |
|   IN OUT UINTN         *DataLength,
 | |
|   IN UINTN             Timeout
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Get interface descriptor from a USB device.
 | |
| 
 | |
|   @param[in] PeiServices           The pointer to the PEI Services Table.
 | |
|   @param[in] This                  The pointer to this instance of the PEI_USB_IO_PPI.
 | |
|   @param[in] InterfaceDescriptor   The interface descriptor.
 | |
| 
 | |
|   @retval EFI_SUCCESS             The interface descriptor was returned.
 | |
|   @retval EFI_INVALID_PARAMETER   Some parameters are invalid.
 | |
|   @retval EFI_DEVICE_ERROR        A device error occurred, the function failed to
 | |
|                                   get the interface descriptor.
 | |
| 
 | |
| **/
 | |
| typedef
 | |
| EFI_STATUS
 | |
| (EFIAPI *PEI_USB_GET_INTERFACE_DESCRIPTOR)(
 | |
|   IN EFI_PEI_SERVICES              **PeiServices,
 | |
|   IN PEI_USB_IO_PPI                *This,
 | |
|   IN EFI_USB_INTERFACE_DESCRIPTOR  **InterfaceDescriptor
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Get endpoint descriptor from a USB device.
 | |
| 
 | |
|   @param[in] PeiServices          The pointer to the PEI Services Table.
 | |
|   @param[in] This                 The pointer to this instance of the PEI_USB_IO_PPI.
 | |
|   @param[in] EndPointIndex        The index of the end point.
 | |
|   @param[in] EndpointDescriptor   The endpoint descriptor.
 | |
| 
 | |
|   @retval EFI_SUCCESS             The endpoint descriptor was returned.
 | |
|   @retval EFI_INVALID_PARAMETER   Some parameters are invalid.
 | |
|   @retval EFI_DEVICE_ERROR        A device error occurred, the function failed to
 | |
|                                   get the endpoint descriptor.
 | |
| 
 | |
| **/
 | |
| typedef
 | |
| EFI_STATUS
 | |
| (EFIAPI *PEI_USB_GET_ENDPOINT_DESCRIPTOR)(
 | |
|   IN EFI_PEI_SERVICES               **PeiServices,
 | |
|   IN PEI_USB_IO_PPI                 *This,
 | |
|   IN UINT8                          EndpointIndex,
 | |
|   IN EFI_USB_ENDPOINT_DESCRIPTOR    **EndpointDescriptor
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Issue a port reset to the device.
 | |
| 
 | |
|   @param[in] PeiServices   The pointer to the PEI Services Table.
 | |
|   @param[in] This          The pointer to this instance of the PEI_USB_IO_PPI.
 | |
| 
 | |
|   @retval EFI_SUCCESS             The port reset was issued successfully.
 | |
|   @retval EFI_INVALID_PARAMETER   Some parameters are invalid.
 | |
|   @retval EFI_DEVICE_ERROR        Device error occurred.
 | |
| 
 | |
| **/
 | |
| typedef
 | |
| EFI_STATUS
 | |
| (EFIAPI *PEI_USB_PORT_RESET)(
 | |
|   IN EFI_PEI_SERVICES  **PeiServices,
 | |
|   IN PEI_USB_IO_PPI    *This
 | |
|   );
 | |
| 
 | |
| ///
 | |
| /// This PPI contains a set of services to interact with the USB host controller.
 | |
| /// These interfaces are modeled on the UEFI 2.3 specification EFI_USB_IO_PROTOCOL.
 | |
| /// Refer to section 16.2.4 of the UEFI 2.3 Specification for more information on
 | |
| /// these interfaces.
 | |
| ///
 | |
| struct _PEI_USB_IO_PPI {
 | |
|   PEI_USB_CONTROL_TRANSFER          UsbControlTransfer;
 | |
|   PEI_USB_BULK_TRANSFER             UsbBulkTransfer;
 | |
|   PEI_USB_GET_INTERFACE_DESCRIPTOR  UsbGetInterfaceDescriptor;
 | |
|   PEI_USB_GET_ENDPOINT_DESCRIPTOR   UsbGetEndpointDescriptor;
 | |
|   PEI_USB_PORT_RESET                UsbPortReset;
 | |
| };
 | |
| 
 | |
| extern EFI_GUID gPeiUsbIoPpiGuid;
 | |
| 
 | |
| #endif
 |