+++ /dev/null
-/*++\r
-\r
-Copyright (c) 2004, Intel Corporation. All rights reserved.<BR>\r
-This program and the accompanying materials \r
-are licensed and made available under the terms and conditions of the BSD License \r
-which accompanies this distribution. The full text of the license may be found at \r
-http://opensource.org/licenses/bsd-license.php \r
- \r
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
-\r
-Module Name:\r
-\r
- UsbIo.h\r
-\r
-Abstract:\r
-\r
- EFI Usb I/O Protocol\r
-\r
-Revision History\r
-\r
---*/\r
-\r
-#ifndef _EFI_USB_IO_H\r
-#define _EFI_USB_IO_H\r
-\r
-#include "usb.h"\r
-\r
-//\r
-// Global ID for the USB I/O Protocol\r
-//\r
-#define EFI_USB_IO_PROTOCOL_GUID \\r
- { \\r
- 0x2B2F68D6, 0x0CD2, 0x44cf, {0x8E, 0x8B, 0xBB, 0xA2, 0x0B, 0x1B, 0x5B, 0x75} \\r
- }\r
-\r
-EFI_FORWARD_DECLARATION (EFI_USB_IO_PROTOCOL);\r
-\r
-//\r
-// Asynchronous USB transfer call back function\r
-//\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_ASYNC_USB_TRANSFER_CALLBACK) (\r
- IN VOID *Data,\r
- IN UINTN DataLength,\r
- IN VOID *Context,\r
- IN UINT32 Status\r
- );\r
-\r
-//\r
-// Prototype for EFI USB I/O protocol\r
-//\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_USB_IO_CONTROL_TRANSFER) (\r
- IN EFI_USB_IO_PROTOCOL * This,\r
- IN EFI_USB_DEVICE_REQUEST * Request,\r
- IN EFI_USB_DATA_DIRECTION Direction,\r
- IN UINT32 Timeout,\r
- IN OUT VOID *Data OPTIONAL,\r
- IN UINTN DataLength OPTIONAL,\r
- OUT UINT32 *Status\r
- );\r
-\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_USB_IO_BULK_TRANSFER) (\r
- IN EFI_USB_IO_PROTOCOL * This,\r
- IN UINT8 DeviceEndpoint,\r
- IN OUT VOID *Data,\r
- IN OUT UINTN *DataLength,\r
- IN UINTN Timeout,\r
- OUT UINT32 *Status\r
- );\r
-\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_USB_IO_ASYNC_INTERRUPT_TRANSFER) (\r
- IN EFI_USB_IO_PROTOCOL * This,\r
- IN UINT8 DeviceEndpoint,\r
- IN BOOLEAN IsNewTransfer,\r
- IN UINTN PollingInterval OPTIONAL,\r
- IN UINTN DataLength OPTIONAL,\r
- IN EFI_ASYNC_USB_TRANSFER_CALLBACK InterruptCallBack OPTIONAL,\r
- IN VOID *Context OPTIONAL\r
- );\r
-\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_USB_IO_SYNC_INTERRUPT_TRANSFER) (\r
- IN EFI_USB_IO_PROTOCOL * This,\r
- IN UINT8 DeviceEndpoint,\r
- IN OUT VOID *Data,\r
- IN OUT UINTN *DataLength,\r
- IN UINTN Timeout,\r
- OUT UINT32 *Status\r
- );\r
-\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_USB_IO_ISOCHRONOUS_TRANSFER) (\r
- IN EFI_USB_IO_PROTOCOL * This,\r
- IN UINT8 DeviceEndpoint,\r
- IN OUT VOID *Data,\r
- IN UINTN DataLength,\r
- OUT UINT32 *Status\r
- );\r
-\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_USB_IO_ASYNC_ISOCHRONOUS_TRANSFER) (\r
- IN EFI_USB_IO_PROTOCOL * This,\r
- IN UINT8 DeviceEndpoint,\r
- IN OUT VOID *Data,\r
- IN UINTN DataLength,\r
- IN EFI_ASYNC_USB_TRANSFER_CALLBACK IsochronousCallBack,\r
- IN VOID *Context OPTIONAL\r
- );\r
-\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_USB_IO_PORT_RESET) (\r
- IN EFI_USB_IO_PROTOCOL * This\r
- );\r
-\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_USB_IO_GET_DEVICE_DESCRIPTOR) (\r
- IN EFI_USB_IO_PROTOCOL * This,\r
- OUT EFI_USB_DEVICE_DESCRIPTOR * DeviceDescriptor\r
- );\r
-\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_USB_IO_GET_CONFIG_DESCRIPTOR) (\r
- IN EFI_USB_IO_PROTOCOL * This,\r
- OUT EFI_USB_CONFIG_DESCRIPTOR * ConfigurationDescriptor\r
- );\r
-\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_USB_IO_GET_INTERFACE_DESCRIPTOR) (\r
- IN EFI_USB_IO_PROTOCOL * This,\r
- OUT EFI_USB_INTERFACE_DESCRIPTOR * InterfaceDescriptor\r
- );\r
-\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_USB_IO_GET_ENDPOINT_DESCRIPTOR) (\r
- IN EFI_USB_IO_PROTOCOL * This,\r
- IN UINT8 EndpointIndex,\r
- OUT EFI_USB_ENDPOINT_DESCRIPTOR * EndpointDescriptor\r
- );\r
-\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_USB_IO_GET_STRING_DESCRIPTOR) (\r
- IN EFI_USB_IO_PROTOCOL * This,\r
- IN UINT16 LangID,\r
- IN UINT8 StringID,\r
- OUT CHAR16 **String\r
- );\r
-\r
-typedef\r
-EFI_STATUS\r
-(EFIAPI *EFI_USB_IO_GET_SUPPORTED_LANGUAGE) (\r
- IN EFI_USB_IO_PROTOCOL * This,\r
- OUT UINT16 **LangIDTable,\r
- OUT UINT16 *TableSize\r
- );\r
-\r
-//\r
-// Protocol Interface Structure\r
-//\r
-struct _EFI_USB_IO_PROTOCOL {\r
- //\r
- // IO transfer\r
- //\r
- EFI_USB_IO_CONTROL_TRANSFER UsbControlTransfer;\r
- EFI_USB_IO_BULK_TRANSFER UsbBulkTransfer;\r
- EFI_USB_IO_ASYNC_INTERRUPT_TRANSFER UsbAsyncInterruptTransfer;\r
- EFI_USB_IO_SYNC_INTERRUPT_TRANSFER UsbSyncInterruptTransfer;\r
- EFI_USB_IO_ISOCHRONOUS_TRANSFER UsbIsochronousTransfer;\r
- EFI_USB_IO_ASYNC_ISOCHRONOUS_TRANSFER UsbAsyncIsochronousTransfer;\r
-\r
- //\r
- // Common device request\r
- //\r
- EFI_USB_IO_GET_DEVICE_DESCRIPTOR UsbGetDeviceDescriptor;\r
- EFI_USB_IO_GET_CONFIG_DESCRIPTOR UsbGetConfigDescriptor;\r
- EFI_USB_IO_GET_INTERFACE_DESCRIPTOR UsbGetInterfaceDescriptor;\r
- EFI_USB_IO_GET_ENDPOINT_DESCRIPTOR UsbGetEndpointDescriptor;\r
- EFI_USB_IO_GET_STRING_DESCRIPTOR UsbGetStringDescriptor;\r
- EFI_USB_IO_GET_SUPPORTED_LANGUAGE UsbGetSupportedLanguages;\r
-\r
- //\r
- // Reset controller's parent port\r
- //\r
- EFI_USB_IO_PORT_RESET UsbPortReset;\r
-};\r
-\r
-extern EFI_GUID gEfiUsbIoProtocolGuid;\r
-\r
-#endif\r