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: Leif Lindholm <leif.lindholm@linaro.org>
		
			
				
	
	
		
			113 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			113 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /** @file
 | ||
| 
 | ||
|   Copyright (c) 2013-2014, ARM Ltd. All rights reserved.<BR>
 | ||
| 
 | ||
|   SPDX-License-Identifier: BSD-2-Clause-Patent
 | ||
| 
 | ||
| **/
 | ||
| 
 | ||
| #ifndef __USB_DEVICE_PROTOCOL_H__
 | ||
| #define __USB_DEVICE_PROTOCOL_H__
 | ||
| 
 | ||
| #include <IndustryStandard/Usb.h>
 | ||
| 
 | ||
| extern EFI_GUID gUsbDeviceProtocolGuid;
 | ||
| 
 | ||
| /*
 | ||
|  * Note: This Protocol is just  the bare minimum for Android Fastboot. It
 | ||
|  * only makes sense for devices that only do Bulk Transfers and only have one
 | ||
|  * endpoint.
 | ||
|  */
 | ||
| 
 | ||
| /*
 | ||
|   Callback to be called when data is received.
 | ||
|   Buffer is callee-allocated and it's the caller's responsibility to free it with
 | ||
|   FreePool.
 | ||
| 
 | ||
|   @param[in] Size        Size in bytes of data.
 | ||
|   @param[in] Buffer      Pointer to data.
 | ||
| */
 | ||
| typedef
 | ||
| VOID
 | ||
| (*USB_DEVICE_RX_CALLBACK) (
 | ||
|   IN UINTN    Size,
 | ||
|   IN VOID    *Buffer
 | ||
|   );
 | ||
| 
 | ||
| /*
 | ||
|   Callback to be called when the host asks for data by sending an IN token
 | ||
|   (excluding during the data stage of a control transfer).
 | ||
|   When this function is called, data previously buffered by calling Send() has
 | ||
|   been sent.
 | ||
| 
 | ||
|   @param[in]Endpoint    Endpoint index, as specified in endpoint descriptors, of
 | ||
|                         the endpoint the IN token was sent to.
 | ||
| */
 | ||
| typedef
 | ||
| VOID
 | ||
| (*USB_DEVICE_TX_CALLBACK) (
 | ||
|   IN UINT8    EndpointIndex
 | ||
|   );
 | ||
| 
 | ||
| /*
 | ||
|   Put data in the Tx buffer to be sent on the next IN token.
 | ||
|   Don't call this function again until the TxCallback has been called.
 | ||
| 
 | ||
|   @param[in]Endpoint    Endpoint index, as specified in endpoint descriptors, of
 | ||
|                         the endpoint to send the data from.
 | ||
|   @param[in]Size        Size in bytes of data.
 | ||
|   @param[in]Buffer      Pointer to data.
 | ||
| 
 | ||
|   @retval EFI_SUCCESS           The data was queued successfully.
 | ||
|   @retval EFI_INVALID_PARAMETER There was an error sending the data.
 | ||
| */
 | ||
| typedef
 | ||
| EFI_STATUS
 | ||
| (*USB_DEVICE_SEND) (
 | ||
|   IN       UINT8    EndpointIndex,
 | ||
|   IN       UINTN    Size,
 | ||
|   IN CONST VOID    *Buffer
 | ||
|   );
 | ||
| 
 | ||
| /*
 | ||
|   Restart the USB peripheral controller and respond to enumeration.
 | ||
| 
 | ||
|   @param[in] DeviceDescriptor   pointer to device descriptor
 | ||
|   @param[in] Descriptors        Array of pointers to buffers, where
 | ||
|                                 Descriptors[n] contains the response to a
 | ||
|                                 GET_DESCRIPTOR request for configuration n. From
 | ||
|                                 USB Spec section 9.4.3:
 | ||
|                                 "The first interface descriptor follows the
 | ||
|                                 configuration descriptor. The endpoint
 | ||
|                                 descriptors for the first interface follow the
 | ||
|                                 first interface descriptor. If there are
 | ||
|                                 additional interfaces, their interface
 | ||
|                                 descriptor and endpoint descriptors follow the
 | ||
|                                 first interface’s endpoint descriptors".
 | ||
| 
 | ||
|                                 The size of each buffer is the TotalLength
 | ||
|                                 member of the Configuration Descriptor.
 | ||
| 
 | ||
|                                 The size of the array is
 | ||
|                                 DeviceDescriptor->NumConfigurations.
 | ||
|   @param[in]RxCallback          See USB_DEVICE_RX_CALLBACK
 | ||
|   @param[in]TxCallback          See USB_DEVICE_TX_CALLBACK
 | ||
| */
 | ||
| typedef
 | ||
| EFI_STATUS
 | ||
| (*USB_DEVICE_START) (
 | ||
|   IN USB_DEVICE_DESCRIPTOR     *DeviceDescriptor,
 | ||
|   IN VOID                     **Descriptors,
 | ||
|   IN USB_DEVICE_RX_CALLBACK     RxCallback,
 | ||
|   IN USB_DEVICE_TX_CALLBACK     TxCallback
 | ||
|   );
 | ||
| 
 | ||
| struct _USB_DEVICE_PROTOCOL {
 | ||
|   USB_DEVICE_START Start;
 | ||
|   USB_DEVICE_SEND  Send;
 | ||
| };
 | ||
| 
 | ||
| typedef struct _USB_DEVICE_PROTOCOL USB_DEVICE_PROTOCOL;
 | ||
| 
 | ||
| #endif //ifndef __USB_DEVICE_PROTOCOL_H__
 |