]> git.proxmox.com Git - mirror_edk2.git/blob - EdkCompatibilityPkg/Foundation/Efi/Protocol/UsbIo/UsbIo.h
Add in the 1st version of ECP.
[mirror_edk2.git] / EdkCompatibilityPkg / Foundation / Efi / Protocol / UsbIo / UsbIo.h
1 /*++
2
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
8
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.
11
12 Module Name:
13
14 UsbIo.h
15
16 Abstract:
17
18 EFI Usb I/O Protocol
19
20 Revision History
21
22 --*/
23
24 #ifndef _EFI_USB_IO_H
25 #define _EFI_USB_IO_H
26
27 #include "usb.h"
28
29 //
30 // Global ID for the USB I/O Protocol
31 //
32 #define EFI_USB_IO_PROTOCOL_GUID \
33 { \
34 0x2B2F68D6, 0x0CD2, 0x44cf, 0x8E, 0x8B, 0xBB, 0xA2, 0x0B, 0x1B, 0x5B, 0x75 \
35 }
36
37 EFI_FORWARD_DECLARATION (EFI_USB_IO_PROTOCOL);
38
39 //
40 // Asynchronous USB transfer call back function
41 //
42 typedef
43 EFI_STATUS
44 (EFIAPI *EFI_ASYNC_USB_TRANSFER_CALLBACK) (
45 IN VOID *Data,
46 IN UINTN DataLength,
47 IN VOID *Context,
48 IN UINT32 Status
49 );
50
51 //
52 // Prototype for EFI USB I/O protocol
53 //
54 typedef
55 EFI_STATUS
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,
60 IN UINT32 Timeout,
61 IN OUT VOID *Data OPTIONAL,
62 IN UINTN DataLength OPTIONAL,
63 OUT UINT32 *Status
64 );
65
66 typedef
67 EFI_STATUS
68 (EFIAPI *EFI_USB_IO_BULK_TRANSFER) (
69 IN EFI_USB_IO_PROTOCOL * This,
70 IN UINT8 DeviceEndpoint,
71 IN OUT VOID *Data,
72 IN OUT UINTN *DataLength,
73 IN UINTN Timeout,
74 OUT UINT32 *Status
75 );
76
77 typedef
78 EFI_STATUS
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
87 );
88
89 typedef
90 EFI_STATUS
91 (EFIAPI *EFI_USB_IO_SYNC_INTERRUPT_TRANSFER) (
92 IN EFI_USB_IO_PROTOCOL * This,
93 IN UINT8 DeviceEndpoint,
94 IN OUT VOID *Data,
95 IN OUT UINTN *DataLength,
96 IN UINTN Timeout,
97 OUT UINT32 *Status
98 );
99
100 typedef
101 EFI_STATUS
102 (EFIAPI *EFI_USB_IO_ISOCHRONOUS_TRANSFER) (
103 IN EFI_USB_IO_PROTOCOL * This,
104 IN UINT8 DeviceEndpoint,
105 IN OUT VOID *Data,
106 IN UINTN DataLength,
107 OUT UINT32 *Status
108 );
109
110 typedef
111 EFI_STATUS
112 (EFIAPI *EFI_USB_IO_ASYNC_ISOCHRONOUS_TRANSFER) (
113 IN EFI_USB_IO_PROTOCOL * This,
114 IN UINT8 DeviceEndpoint,
115 IN OUT VOID *Data,
116 IN UINTN DataLength,
117 IN EFI_ASYNC_USB_TRANSFER_CALLBACK IsochronousCallBack,
118 IN VOID *Context OPTIONAL
119 );
120
121 typedef
122 EFI_STATUS
123 (EFIAPI *EFI_USB_IO_PORT_RESET) (
124 IN EFI_USB_IO_PROTOCOL * This
125 );
126
127 typedef
128 EFI_STATUS
129 (EFIAPI *EFI_USB_IO_GET_DEVICE_DESCRIPTOR) (
130 IN EFI_USB_IO_PROTOCOL * This,
131 OUT EFI_USB_DEVICE_DESCRIPTOR * DeviceDescriptor
132 );
133
134 typedef
135 EFI_STATUS
136 (EFIAPI *EFI_USB_IO_GET_CONFIG_DESCRIPTOR) (
137 IN EFI_USB_IO_PROTOCOL * This,
138 OUT EFI_USB_CONFIG_DESCRIPTOR * ConfigurationDescriptor
139 );
140
141 typedef
142 EFI_STATUS
143 (EFIAPI *EFI_USB_IO_GET_INTERFACE_DESCRIPTOR) (
144 IN EFI_USB_IO_PROTOCOL * This,
145 OUT EFI_USB_INTERFACE_DESCRIPTOR * InterfaceDescriptor
146 );
147
148 typedef
149 EFI_STATUS
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
154 );
155
156 typedef
157 EFI_STATUS
158 (EFIAPI *EFI_USB_IO_GET_STRING_DESCRIPTOR) (
159 IN EFI_USB_IO_PROTOCOL * This,
160 IN UINT16 LangID,
161 IN UINT8 StringID,
162 OUT CHAR16 **String
163 );
164
165 typedef
166 EFI_STATUS
167 (EFIAPI *EFI_USB_IO_GET_SUPPORTED_LANGUAGE) (
168 IN EFI_USB_IO_PROTOCOL * This,
169 OUT UINT16 **LangIDTable,
170 OUT UINT16 *TableSize
171 );
172
173 //
174 // Protocol Interface Structure
175 //
176 typedef struct _EFI_USB_IO_PROTOCOL {
177 //
178 // IO transfer
179 //
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;
186
187 //
188 // Common device request
189 //
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;
196
197 //
198 // Reset controller's parent port
199 //
200 EFI_USB_IO_PORT_RESET UsbPortReset;
201 } EFI_USB_IO_PROTOCOL;
202
203 extern EFI_GUID gEfiUsbIoProtocolGuid;
204
205 #endif