alder_lake_bios/Insyde/InsydeModulePkg/Bus/Usb/UsbBusDxe/UsbHelper.h

283 lines
7.9 KiB
C

/** @file
Helper functions for USB
;******************************************************************************
;* Copyright (c) 2012 - 2021, Insyde Software Corp. All Rights Reserved.
;*
;* You may not reproduce, distribute, publish, display, perform, modify, adapt,
;* transmit, broadcast, present, recite, release, license or otherwise exploit
;* any part of this publication in any form, by any means, without the prior
;* written permission of Insyde Software Corporation.
;*
;******************************************************************************
*/
#ifndef _USB_HELPER_H
#define _USB_HELPER_H
#define USB_HOST_CONTROLLER_DEVICE_SIGNATURE SIGNATURE_32 ('u', 'h', 'c', '3')
typedef struct {
UINTN Signature;
EFI_USB_IO_PROTOCOL *UsbIo;
EFI_USB2_HC_PROTOCOL *Usb2Hc;
EFI_USB3_HC_PROTOCOL Usb3Hc;
EFI_EVENT TimerEvent;
VOID *TimerContext;
EFI_USB3_HC_CALLBACK TimerCallback;
} USB_HOST_CONTROLLER_DEVICE;
#define USB_HOST_CONTROLLER_DEVICE_FROM_THIS(a) CR (a, USB_HOST_CONTROLLER_DEVICE, Usb3Hc, USB_HOST_CONTROLLER_DEVICE_SIGNATURE)
#pragma pack(1)
typedef struct {
UINT8 Length;
UINT8 DescriptorType;
UINT16 SupportedLanID[1];
} EFI_USB_SUPPORTED_LANGUAGES;
#pragma pack()
EFI_STATUS
UsbGetStringtable (
IN USB_IO_DEVICE *UsbIoDev
);
EFI_STATUS
UsbGetAllConfigurations (
IN USB_IO_DEVICE *UsbIoDev
);
EFI_STATUS
UsbSetConfiguration (
IN USB_IO_DEVICE *UsbIoDev,
IN UINTN ConfigurationValue
);
EFI_STATUS
UsbSetDefaultConfiguration (
IN USB_IO_DEVICE *UsbIoDev
);
VOID
UsbDestroyAllConfiguration (
IN USB_IO_DEVICE *UsbIoDev
);
BOOLEAN
IsPortConnect (
IN UINT16 PortStatus
);
BOOLEAN
IsPortEnable (
IN UINT16 PortStatus
);
BOOLEAN
IsPortInReset (
IN UINT16 PortStatus
);
BOOLEAN
IsPortPowerApplied (
IN UINT16 PortStatus
);
BOOLEAN
IsPortLowSpeedDeviceAttached (
IN UINT16 PortStatus
);
BOOLEAN
IsPortSuspend (
IN UINT16 PortStatus
);
BOOLEAN
IsPortConnectChange (
IN UINT16 PortChangeStatus
);
BOOLEAN
IsPortEnableDisableChange (
IN UINT16 PortChangeStatus
);
BOOLEAN
IsPortResetChange (
IN UINT16 PortChangeStatus
);
BOOLEAN
IsPortSuspendChange (
IN UINT16 PortChangeStatus
);
EFI_STATUS
IsDeviceDisconnected (
IN USB_IO_CONTROLLER_DEVICE *UsbIoController,
IN OUT BOOLEAN *Disconnected
);
UINT8
GetFirstAlternateSetting (
IN EFI_USB_IO_PROTOCOL *This
);
VOID
SetFirstAlternateSetting (
IN EFI_USB_IO_PROTOCOL *This
);
EFI_USB_HID_DESCRIPTOR*
GetHidDescriptor (
IN EFI_USB_IO_PROTOCOL *This
);
INTERFACE_DESC_LIST_ENTRY*
FindInterfaceListEntry (
IN EFI_USB_IO_PROTOCOL *This
);
ENDPOINT_DESC_LIST_ENTRY*
FindEndPointListEntry (
IN EFI_USB_IO_PROTOCOL *This,
IN UINT8 EndPointAddress
);
VOID
SetDataToggleBit (
IN EFI_USB_IO_PROTOCOL *UsbIo,
IN UINT8 EndpointAddr,
IN UINT8 DataToggle
);
EFI_STATUS
UsbSetDeviceAddress (
IN EFI_USB_IO_PROTOCOL *UsbIo,
IN UINT16 AddressValue,
OUT UINT32 *Status
);
EFI_STATUS
EFIAPI
ControlTransfer (
IN EFI_USB3_HC_PROTOCOL *This,
IN UINT8 DeviceAddress,
IN UINT8 DeviceSpeed,
IN UINTN MaximumPacketLength,
IN EFI_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_USB3_HC_TRANSACTION_TRANSLATOR *Translator,
OUT UINT32 *TransferResult
);
EFI_STATUS
EFIAPI
BulkTransfer (
IN EFI_USB3_HC_PROTOCOL *This,
IN UINT8 DeviceAddress,
IN UINT8 EndPointAddress,
IN UINT8 DeviceSpeed,
IN UINTN MaximumPacketLength,
IN UINT8 DataBuffersNumber,
IN OUT VOID *Data[EFI_USB_MAX_BULK_BUFFER_NUM],
IN OUT UINTN *DataLength,
IN OUT UINT8 *DataToggle,
IN UINTN TimeOut,
IN EFI_USB3_HC_TRANSACTION_TRANSLATOR *Translator,
IN EFI_ASYNC_USB_TRANSFER_CALLBACK CallBackFunction OPTIONAL,
IN VOID *Context OPTIONAL,
OUT UINT32 *TransferResult
);
EFI_STATUS
EFIAPI
InterruptTransfer (
IN EFI_USB3_HC_PROTOCOL *This,
IN UINT8 DeviceAddress,
IN UINT8 EndPointAddress,
IN UINT8 DeviceSpeed,
IN UINTN MaximumPacketLength,
IN OUT VOID *Data,
IN OUT UINTN *DataLength,
IN OUT UINT8 *DataToggle,
IN UINTN TimeOut,
IN EFI_USB3_HC_TRANSACTION_TRANSLATOR *Translator,
IN EFI_ASYNC_USB_TRANSFER_CALLBACK CallBackFunction OPTIONAL,
IN VOID *Context OPTIONAL,
IN UINTN PollingInterval OPTIONAL,
OUT UINT32 *TransferResult
);
EFI_STATUS
EFIAPI
CancelIo (
IN EFI_USB3_HC_PROTOCOL *This,
IN UINT8 DeviceAddress,
IN UINT8 EndPointAddress,
IN UINTN PollingInterval,
IN OUT UINT8 *DataToggle
);
EFI_STATUS
EFIAPI
GetRootHubPortStatus (
IN EFI_USB3_HC_PROTOCOL *This,
IN UINT8 PortNumber,
OUT EFI_USB_PORT_STATUS *PortStatus
);
EFI_STATUS
EFIAPI
SetRootHubPortFeature (
IN EFI_USB3_HC_PROTOCOL *This,
IN UINT8 PortNumber,
IN EFI_USB_PORT_FEATURE PortFeature
);
EFI_STATUS
EFIAPI
ClearRootHubPortFeature (
IN EFI_USB3_HC_PROTOCOL *This,
IN UINT8 PortNumber,
IN EFI_USB_PORT_FEATURE PortFeature
);
/**
Install Usb3Hc for Usb2Hc only driver
@param UsbIo EFI_USB_IO_PROTOCOL
@param Usb2Hc EFI_USB2_HC_PROTOCOL
@retval The installed EFI_USB3_HC_PROTOCOL
**/
EFI_USB3_HC_PROTOCOL*
InstallUsb3HcThunk (
IN EFI_USB_IO_PROTOCOL *UsbIo,
IN EFI_USB2_HC_PROTOCOL *Usb2Hc
);
/**
Uninstall Usb3Hc for Usb2Hc only driver
@param Usb2Hc EFI_USB2_HC_PROTOCOL
@retval The installed EFI_USB3_HC_PROTOCOL
**/
VOID
UninstallUsb3HcThunk (
IN EFI_USB3_HC_PROTOCOL *Usb3Hc
);
#endif