REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3737 Apply uncrustify changes to .c/.h files in the MdeModulePkg package Cc: Andrew Fish <afish@apple.com> Cc: Leif Lindholm <leif@nuviainc.com> Cc: Michael D Kinney <michael.d.kinney@intel.com> Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com> Reviewed-by: Liming Gao <gaoliming@byosoft.com.cn>
		
			
				
	
	
		
			228 lines
		
	
	
		
			6.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			228 lines
		
	
	
		
			6.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /** @file
 | |
| 
 | |
|     Manage Usb Descriptor List
 | |
| 
 | |
| Copyright (c) 2007 - 2014, Intel Corporation. All rights reserved.<BR>
 | |
| SPDX-License-Identifier: BSD-2-Clause-Patent
 | |
| 
 | |
| **/
 | |
| 
 | |
| #ifndef _USB_DESCRIPTOR_H_
 | |
| #define _USB_DESCRIPTOR_H_
 | |
| 
 | |
| #define USB_MAX_INTERFACE_SETTING  256
 | |
| 
 | |
| //
 | |
| // The RequestType in EFI_USB_DEVICE_REQUEST is composed of
 | |
| // three fields: One bit direction, 2 bit type, and 5 bit
 | |
| // target.
 | |
| //
 | |
| #define USB_REQUEST_TYPE(Dir, Type, Target) \
 | |
|           ((UINT8)((((Dir) == EfiUsbDataIn ? 0x01 : 0) << 7) | (Type) | (Target)))
 | |
| 
 | |
| //
 | |
| // A common header for usb standard descriptor.
 | |
| // Each stand descriptor has a length and type.
 | |
| //
 | |
| #pragma pack(1)
 | |
| typedef struct {
 | |
|   UINT8    Len;
 | |
|   UINT8    Type;
 | |
| } USB_DESC_HEAD;
 | |
| #pragma pack()
 | |
| 
 | |
| //
 | |
| // Each USB device has a device descriptor. Each device may
 | |
| // have several configures. Each configure contains several
 | |
| // interfaces. Each interface may have several settings. Each
 | |
| // setting has several endpoints.
 | |
| //
 | |
| // EFI_USB_..._DESCRIPTOR must be the first member of the
 | |
| // structure.
 | |
| //
 | |
| typedef struct {
 | |
|   EFI_USB_ENDPOINT_DESCRIPTOR    Desc;
 | |
|   UINT8                          Toggle;
 | |
| } USB_ENDPOINT_DESC;
 | |
| 
 | |
| typedef struct {
 | |
|   EFI_USB_INTERFACE_DESCRIPTOR    Desc;
 | |
|   USB_ENDPOINT_DESC               **Endpoints;
 | |
| } USB_INTERFACE_SETTING;
 | |
| 
 | |
| //
 | |
| // An interface may have several settings. Use a
 | |
| // fixed max number of settings to simplify code.
 | |
| // It should sufice in most environments.
 | |
| //
 | |
| typedef struct {
 | |
|   USB_INTERFACE_SETTING    *Settings[USB_MAX_INTERFACE_SETTING];
 | |
|   UINTN                    NumOfSetting;
 | |
|   UINTN                    ActiveIndex;       // Index of active setting
 | |
| } USB_INTERFACE_DESC;
 | |
| 
 | |
| typedef struct {
 | |
|   EFI_USB_CONFIG_DESCRIPTOR    Desc;
 | |
|   USB_INTERFACE_DESC           **Interfaces;
 | |
| } USB_CONFIG_DESC;
 | |
| 
 | |
| typedef struct {
 | |
|   EFI_USB_DEVICE_DESCRIPTOR    Desc;
 | |
|   USB_CONFIG_DESC              **Configs;
 | |
| } USB_DEVICE_DESC;
 | |
| 
 | |
| /**
 | |
|   USB standard control transfer support routine. This
 | |
|   function is used by USB device. It is possible that
 | |
|   the device's interfaces are still waiting to be
 | |
|   enumerated.
 | |
| 
 | |
|   @param  UsbDev                The usb device.
 | |
|   @param  Direction             The direction of data transfer.
 | |
|   @param  Type                  Standard / class specific / vendor specific.
 | |
|   @param  Target                The receiving target.
 | |
|   @param  Request               Which request.
 | |
|   @param  Value                 The wValue parameter of the request.
 | |
|   @param  Index                 The wIndex parameter of the request.
 | |
|   @param  Buf                   The buffer to receive data into / transmit from.
 | |
|   @param  Length                The length of the buffer.
 | |
| 
 | |
|   @retval EFI_SUCCESS           The control request is executed.
 | |
|   @retval EFI_DEVICE_ERROR      Failed to execute the control transfer.
 | |
| 
 | |
| **/
 | |
| EFI_STATUS
 | |
| UsbCtrlRequest (
 | |
|   IN USB_DEVICE              *UsbDev,
 | |
|   IN EFI_USB_DATA_DIRECTION  Direction,
 | |
|   IN UINTN                   Type,
 | |
|   IN UINTN                   Target,
 | |
|   IN UINTN                   Request,
 | |
|   IN UINT16                  Value,
 | |
|   IN UINT16                  Index,
 | |
|   IN OUT VOID                *Buf,
 | |
|   IN UINTN                   Length
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Return the max packet size for endpoint zero. This function
 | |
|   is the first function called to get descriptors during bus
 | |
|   enumeration.
 | |
| 
 | |
|   @param  UsbDev                The usb device.
 | |
| 
 | |
|   @retval EFI_SUCCESS           The max packet size of endpoint zero is retrieved.
 | |
|   @retval EFI_DEVICE_ERROR      Failed to retrieve it.
 | |
| 
 | |
| **/
 | |
| EFI_STATUS
 | |
| UsbGetMaxPacketSize0 (
 | |
|   IN USB_DEVICE  *UsbDev
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Free a device descriptor with its configurations.
 | |
| 
 | |
|   @param  DevDesc               The device descriptor.
 | |
| 
 | |
|   @return None.
 | |
| 
 | |
| **/
 | |
| VOID
 | |
| UsbFreeDevDesc (
 | |
|   IN USB_DEVICE_DESC  *DevDesc
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Retrieve the indexed string for the language. It requires two
 | |
|   steps to get a string, first to get the string's length. Then
 | |
|   the string itself.
 | |
| 
 | |
|   @param  UsbDev                The usb device.
 | |
|   @param  StringIndex           The index of the string to retrieve.
 | |
|   @param  LangId                Language ID.
 | |
| 
 | |
|   @return The created string descriptor or NULL.
 | |
| 
 | |
| **/
 | |
| EFI_USB_STRING_DESCRIPTOR *
 | |
| UsbGetOneString (
 | |
|   IN     USB_DEVICE  *UsbDev,
 | |
|   IN     UINT8       StringIndex,
 | |
|   IN     UINT16      LangId
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Build the whole array of descriptors. This function must
 | |
|   be called after UsbGetMaxPacketSize0 returns the max packet
 | |
|   size correctly for endpoint 0.
 | |
| 
 | |
|   @param  UsbDev                The Usb device.
 | |
| 
 | |
|   @retval EFI_SUCCESS           The descriptor table is build.
 | |
|   @retval EFI_OUT_OF_RESOURCES  Failed to allocate resource for the descriptor.
 | |
| 
 | |
| **/
 | |
| EFI_STATUS
 | |
| UsbBuildDescTable (
 | |
|   IN USB_DEVICE  *UsbDev
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Set the device's address.
 | |
| 
 | |
|   @param  UsbDev                The device to set address to.
 | |
|   @param  Address               The address to set.
 | |
| 
 | |
|   @retval EFI_SUCCESS           The device is set to the address.
 | |
|   @retval Others                Failed to set the device address.
 | |
| 
 | |
| **/
 | |
| EFI_STATUS
 | |
| UsbSetAddress (
 | |
|   IN USB_DEVICE  *UsbDev,
 | |
|   IN UINT8       Address
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Set the device's configuration. This function changes
 | |
|   the device's internal state. UsbSelectConfig changes
 | |
|   the Usb bus's internal state.
 | |
| 
 | |
|   @param  UsbDev                The USB device to set configure to.
 | |
|   @param  ConfigIndex           The configure index to set.
 | |
| 
 | |
|   @retval EFI_SUCCESS           The device is configured now.
 | |
|   @retval Others                Failed to set the device configure.
 | |
| 
 | |
| **/
 | |
| EFI_STATUS
 | |
| UsbSetConfig (
 | |
|   IN USB_DEVICE  *UsbDev,
 | |
|   IN UINT8       ConfigIndex
 | |
|   );
 | |
| 
 | |
| /**
 | |
|   Usb UsbIo interface to clear the feature. This is should
 | |
|   only be used by HUB which is considered a device driver
 | |
|   on top of the UsbIo interface.
 | |
| 
 | |
|   @param  UsbIo                 The UsbIo interface.
 | |
|   @param  Target                The target of the transfer: endpoint/device.
 | |
|   @param  Feature               The feature to clear.
 | |
|   @param  Index                 The wIndex parameter.
 | |
| 
 | |
|   @retval EFI_SUCCESS           The device feature is cleared.
 | |
|   @retval Others                Failed to clear the feature.
 | |
| 
 | |
| **/
 | |
| EFI_STATUS
 | |
| UsbIoClearFeature (
 | |
|   IN  EFI_USB_IO_PROTOCOL  *UsbIo,
 | |
|   IN  UINTN                Target,
 | |
|   IN  UINT16               Feature,
 | |
|   IN  UINT16               Index
 | |
|   );
 | |
| 
 | |
| #endif
 |