3 Copyright (c) 2004, Intel Corporation
4 All rights reserved. This program and the accompanying materials
5 are licensed and made available under the terms and conditions of the BSD License
6 which accompanies this distribution. The full text of the license may be found at
7 http://opensource.org/licenses/bsd-license.php
9 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
10 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
30 // Global ID for the USB I/O Protocol
32 #define EFI_USB_IO_PROTOCOL_GUID \
34 0x2B2F68D6, 0x0CD2, 0x44cf, 0x8E, 0x8B, 0xBB, 0xA2, 0x0B, 0x1B, 0x5B, 0x75 \
37 EFI_FORWARD_DECLARATION (EFI_USB_IO_PROTOCOL
);
40 // Asynchronous USB transfer call back function
44 (EFIAPI
*EFI_ASYNC_USB_TRANSFER_CALLBACK
) (
52 // Prototype for EFI USB I/O protocol
56 (EFIAPI
*EFI_USB_IO_CONTROL_TRANSFER
) (
57 IN EFI_USB_IO_PROTOCOL
* This
,
58 IN EFI_USB_DEVICE_REQUEST
* Request
,
59 IN EFI_USB_DATA_DIRECTION Direction
,
61 IN OUT VOID
*Data OPTIONAL
,
62 IN UINTN DataLength OPTIONAL
,
68 (EFIAPI
*EFI_USB_IO_BULK_TRANSFER
) (
69 IN EFI_USB_IO_PROTOCOL
* This
,
70 IN UINT8 DeviceEndpoint
,
72 IN OUT UINTN
*DataLength
,
79 (EFIAPI
*EFI_USB_IO_ASYNC_INTERRUPT_TRANSFER
) (
80 IN EFI_USB_IO_PROTOCOL
* This
,
81 IN UINT8 DeviceEndpoint
,
82 IN BOOLEAN IsNewTransfer
,
83 IN UINTN PollingInterval OPTIONAL
,
84 IN UINTN DataLength OPTIONAL
,
85 IN EFI_ASYNC_USB_TRANSFER_CALLBACK InterruptCallBack OPTIONAL
,
86 IN VOID
*Context OPTIONAL
91 (EFIAPI
*EFI_USB_IO_SYNC_INTERRUPT_TRANSFER
) (
92 IN EFI_USB_IO_PROTOCOL
* This
,
93 IN UINT8 DeviceEndpoint
,
95 IN OUT UINTN
*DataLength
,
102 (EFIAPI
*EFI_USB_IO_ISOCHRONOUS_TRANSFER
) (
103 IN EFI_USB_IO_PROTOCOL
* This
,
104 IN UINT8 DeviceEndpoint
,
112 (EFIAPI
*EFI_USB_IO_ASYNC_ISOCHRONOUS_TRANSFER
) (
113 IN EFI_USB_IO_PROTOCOL
* This
,
114 IN UINT8 DeviceEndpoint
,
117 IN EFI_ASYNC_USB_TRANSFER_CALLBACK IsochronousCallBack
,
118 IN VOID
*Context OPTIONAL
123 (EFIAPI
*EFI_USB_IO_PORT_RESET
) (
124 IN EFI_USB_IO_PROTOCOL
* This
129 (EFIAPI
*EFI_USB_IO_GET_DEVICE_DESCRIPTOR
) (
130 IN EFI_USB_IO_PROTOCOL
* This
,
131 OUT EFI_USB_DEVICE_DESCRIPTOR
* DeviceDescriptor
136 (EFIAPI
*EFI_USB_IO_GET_CONFIG_DESCRIPTOR
) (
137 IN EFI_USB_IO_PROTOCOL
* This
,
138 OUT EFI_USB_CONFIG_DESCRIPTOR
* ConfigurationDescriptor
143 (EFIAPI
*EFI_USB_IO_GET_INTERFACE_DESCRIPTOR
) (
144 IN EFI_USB_IO_PROTOCOL
* This
,
145 OUT EFI_USB_INTERFACE_DESCRIPTOR
* InterfaceDescriptor
150 (EFIAPI
*EFI_USB_IO_GET_ENDPOINT_DESCRIPTOR
) (
151 IN EFI_USB_IO_PROTOCOL
* This
,
152 IN UINT8 EndpointIndex
,
153 OUT EFI_USB_ENDPOINT_DESCRIPTOR
* EndpointDescriptor
158 (EFIAPI
*EFI_USB_IO_GET_STRING_DESCRIPTOR
) (
159 IN EFI_USB_IO_PROTOCOL
* This
,
167 (EFIAPI
*EFI_USB_IO_GET_SUPPORTED_LANGUAGE
) (
168 IN EFI_USB_IO_PROTOCOL
* This
,
169 OUT UINT16
**LangIDTable
,
170 OUT UINT16
*TableSize
174 // Protocol Interface Structure
176 struct _EFI_USB_IO_PROTOCOL
{
180 EFI_USB_IO_CONTROL_TRANSFER UsbControlTransfer
;
181 EFI_USB_IO_BULK_TRANSFER UsbBulkTransfer
;
182 EFI_USB_IO_ASYNC_INTERRUPT_TRANSFER UsbAsyncInterruptTransfer
;
183 EFI_USB_IO_SYNC_INTERRUPT_TRANSFER UsbSyncInterruptTransfer
;
184 EFI_USB_IO_ISOCHRONOUS_TRANSFER UsbIsochronousTransfer
;
185 EFI_USB_IO_ASYNC_ISOCHRONOUS_TRANSFER UsbAsyncIsochronousTransfer
;
188 // Common device request
190 EFI_USB_IO_GET_DEVICE_DESCRIPTOR UsbGetDeviceDescriptor
;
191 EFI_USB_IO_GET_CONFIG_DESCRIPTOR UsbGetConfigDescriptor
;
192 EFI_USB_IO_GET_INTERFACE_DESCRIPTOR UsbGetInterfaceDescriptor
;
193 EFI_USB_IO_GET_ENDPOINT_DESCRIPTOR UsbGetEndpointDescriptor
;
194 EFI_USB_IO_GET_STRING_DESCRIPTOR UsbGetStringDescriptor
;
195 EFI_USB_IO_GET_SUPPORTED_LANGUAGE UsbGetSupportedLanguages
;
198 // Reset controller's parent port
200 EFI_USB_IO_PORT_RESET UsbPortReset
;
203 extern EFI_GUID gEfiUsbIoProtocolGuid
;