]> git.proxmox.com Git - mirror_edk2.git/blob - EdkCompatibilityPkg/Foundation/Efi/Protocol/UsbHostController/UsbHostController.h
Add in the 1st version of ECP.
[mirror_edk2.git] / EdkCompatibilityPkg / Foundation / Efi / Protocol / UsbHostController / UsbHostController.h
1 /*++
2
3 Copyright (c) 2004 - 2006, 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 UsbHostController.h
15
16 Abstract:
17
18
19 --*/
20
21 #ifndef _USB_HOSTCONTROLLER_H_
22 #define _USB_HOSTCONTROLLER_H_
23
24 #include "usb.h"
25 #include EFI_PROTOCOL_DEFINITION (UsbIo)
26
27 #define EFI_USB_HC_PROTOCOL_GUID \
28 { \
29 0xf5089266, 0x1aa0, 0x4953, 0x97, 0xd8, 0x56, 0x2f, 0x8a, 0x73, 0xb5, 0x19 \
30 }
31
32 //
33 // Forward reference for pure ANSI compatability
34 //
35 EFI_FORWARD_DECLARATION (EFI_USB_HC_PROTOCOL);
36
37 typedef enum {
38 EfiUsbHcStateHalt,
39 EfiUsbHcStateOperational,
40 EfiUsbHcStateSuspend,
41 EfiUsbHcStateMaximum
42 } EFI_USB_HC_STATE;
43
44 #define EFI_USB_HC_RESET_GLOBAL 0x0001
45 #define EFI_USB_HC_RESET_HOST_CONTROLLER 0x0002
46 #define EFI_USB_HC_RESET_GLOBAL_WITH_DEBUG 0x0004
47 #define EFI_USB_HC_RESET_HOST_WITH_DEBUG 0x0008
48
49 //
50 // Protocol definitions
51 //
52 typedef
53 EFI_STATUS
54 (EFIAPI *EFI_USB_HC_PROTOCOL_RESET) (
55 IN EFI_USB_HC_PROTOCOL * This,
56 IN UINT16 Attributes
57 );
58
59 typedef
60 EFI_STATUS
61 (EFIAPI *EFI_USB_HC_PROTOCOL_GET_STATE) (
62 IN EFI_USB_HC_PROTOCOL * This,
63 OUT EFI_USB_HC_STATE * State
64 );
65
66 typedef
67 EFI_STATUS
68 (EFIAPI *EFI_USB_HC_PROTOCOL_SET_STATE) (
69 IN EFI_USB_HC_PROTOCOL * This,
70 IN EFI_USB_HC_STATE State
71 );
72
73 typedef
74 EFI_STATUS
75 (EFIAPI *EFI_USB_HC_PROTOCOL_CONTROL_TRANSFER) (
76 IN EFI_USB_HC_PROTOCOL * This,
77 IN UINT8 DeviceAddress,
78 IN BOOLEAN IsSlowDevice,
79 IN UINT8 MaximumPacketLength,
80 IN EFI_USB_DEVICE_REQUEST * Request,
81 IN EFI_USB_DATA_DIRECTION TransferDirection,
82 IN OUT VOID *Data OPTIONAL,
83 IN OUT UINTN *DataLength OPTIONAL,
84 IN UINTN TimeOut,
85 OUT UINT32 *TransferResult
86 );
87
88 typedef
89 EFI_STATUS
90 (EFIAPI *EFI_USB_HC_PROTOCOL_BULK_TRANSFER) (
91 IN EFI_USB_HC_PROTOCOL * This,
92 IN UINT8 DeviceAddress,
93 IN UINT8 EndPointAddress,
94 IN UINT8 MaximumPacketLength,
95 IN OUT VOID *Data,
96 IN OUT UINTN *DataLength,
97 IN OUT UINT8 *DataToggle,
98 IN UINTN TimeOut,
99 OUT UINT32 *TransferResult
100 );
101
102 typedef
103 EFI_STATUS
104 (EFIAPI *EFI_USB_HC_PROTOCOL_ASYNC_INTERRUPT_TRANSFER) (
105 IN EFI_USB_HC_PROTOCOL * This,
106 IN UINT8 DeviceAddress,
107 IN UINT8 EndPointAddress,
108 IN BOOLEAN IsSlowDevice,
109 IN UINT8 MaxiumPacketLength,
110 IN BOOLEAN IsNewTransfer,
111 IN OUT UINT8 *DataToggle,
112 IN UINTN PollingInterval OPTIONAL,
113 IN UINTN DataLength OPTIONAL,
114 IN EFI_ASYNC_USB_TRANSFER_CALLBACK CallBackFunction OPTIONAL,
115 IN VOID *Context OPTIONAL
116 );
117
118 typedef
119 EFI_STATUS
120 (EFIAPI *EFI_USB_HC_PROTOCOL_SYNC_INTERRUPT_TRANSFER) (
121 IN EFI_USB_HC_PROTOCOL * This,
122 IN UINT8 DeviceAddress,
123 IN UINT8 EndPointAddress,
124 IN BOOLEAN IsSlowDevice,
125 IN UINT8 MaximumPacketLength,
126 IN OUT VOID *Data,
127 IN OUT UINTN *DataLength,
128 IN OUT UINT8 *DataToggle,
129 IN UINTN TimeOut,
130 OUT UINT32 *TransferResult
131 );
132
133 typedef
134 EFI_STATUS
135 (EFIAPI *EFI_USB_HC_PROTOCOL_ISOCHRONOUS_TRANSFER) (
136 IN EFI_USB_HC_PROTOCOL * This,
137 IN UINT8 DeviceAddress,
138 IN UINT8 EndPointAddress,
139 IN UINT8 MaximumPacketLength,
140 IN OUT VOID *Data,
141 IN UINTN DataLength,
142 OUT UINT32 *TransferResult
143 );
144
145 typedef
146 EFI_STATUS
147 (EFIAPI *EFI_USB_HC_PROTOCOL_ASYNC_ISOCHRONOUS_TRANSFER) (
148 IN EFI_USB_HC_PROTOCOL * This,
149 IN UINT8 DeviceAddress,
150 IN UINT8 EndPointAddress,
151 IN UINT8 MaximumPacketLength,
152 IN OUT VOID *Data,
153 IN UINTN DataLength,
154 IN EFI_ASYNC_USB_TRANSFER_CALLBACK IsochronousCallBack,
155 IN VOID *Context OPTIONAL
156 );
157
158 typedef
159 EFI_STATUS
160 (EFIAPI *EFI_USB_HC_PROTOCOL_GET_ROOTHUB_PORT_NUMBER) (
161 IN EFI_USB_HC_PROTOCOL * This,
162 OUT UINT8 *PortNumber
163 );
164
165 typedef
166 EFI_STATUS
167 (EFIAPI *EFI_USB_HC_PROTOCOL_GET_ROOTHUB_PORT_STATUS) (
168 IN EFI_USB_HC_PROTOCOL * This,
169 IN UINT8 PortNumber,
170 OUT EFI_USB_PORT_STATUS * PortStatus
171 );
172
173 typedef
174 EFI_STATUS
175 (EFIAPI *EFI_USB_HC_PROTOCOL_SET_ROOTHUB_PORT_FEATURE) (
176 IN EFI_USB_HC_PROTOCOL * This,
177 IN UINT8 PortNumber,
178 IN EFI_USB_PORT_FEATURE PortFeature
179 );
180
181 typedef
182 EFI_STATUS
183 (EFIAPI *EFI_USB_HC_PROTOCOL_CLEAR_ROOTHUB_PORT_FEATURE) (
184 IN EFI_USB_HC_PROTOCOL * This,
185 IN UINT8 PortNumber,
186 IN EFI_USB_PORT_FEATURE PortFeature
187 );
188
189 typedef struct _EFI_USB_HC_PROTOCOL {
190 EFI_USB_HC_PROTOCOL_RESET Reset;
191 EFI_USB_HC_PROTOCOL_GET_STATE GetState;
192 EFI_USB_HC_PROTOCOL_SET_STATE SetState;
193 EFI_USB_HC_PROTOCOL_CONTROL_TRANSFER ControlTransfer;
194 EFI_USB_HC_PROTOCOL_BULK_TRANSFER BulkTransfer;
195 EFI_USB_HC_PROTOCOL_ASYNC_INTERRUPT_TRANSFER AsyncInterruptTransfer;
196 EFI_USB_HC_PROTOCOL_SYNC_INTERRUPT_TRANSFER SyncInterruptTransfer;
197 EFI_USB_HC_PROTOCOL_ISOCHRONOUS_TRANSFER IsochronousTransfer;
198 EFI_USB_HC_PROTOCOL_ASYNC_ISOCHRONOUS_TRANSFER AsyncIsochronousTransfer;
199 EFI_USB_HC_PROTOCOL_GET_ROOTHUB_PORT_NUMBER GetRootHubPortNumber;
200 EFI_USB_HC_PROTOCOL_GET_ROOTHUB_PORT_STATUS GetRootHubPortStatus;
201 EFI_USB_HC_PROTOCOL_SET_ROOTHUB_PORT_FEATURE SetRootHubPortFeature;
202 EFI_USB_HC_PROTOCOL_CLEAR_ROOTHUB_PORT_FEATURE ClearRootHubPortFeature;
203 UINT16 MajorRevision;
204 UINT16 MinorRevision;
205 } EFI_USB_HC_PROTOCOL;
206
207 extern EFI_GUID gEfiUsbHcProtocolGuid;
208
209
210 #define EFI_USB2_HC_PROTOCOL_GUID \
211 { \
212 0x3e745226, 0x9818, 0x45b6, 0xa2, 0xac, 0xd7, 0xcd, 0xe, 0x8b, 0xa2, 0xbc \
213 }
214
215 //
216 // Forward reference for pure ANSI compatability
217 //
218 EFI_FORWARD_DECLARATION (EFI_USB2_HC_PROTOCOL);
219
220 #define EFI_USB_HC_RESET_GLOBAL_WITH_DEBUG 0x0004
221 #define EFI_USB_HC_RESET_HOST_WITH_DEBUG 0x0008
222
223 typedef struct {
224 UINT8 TranslatorHubAddress;
225 UINT8 TranslatorPortNumber;
226 } EFI_USB2_HC_TRANSACTION_TRANSLATOR;
227
228 //
229 // Protocol definitions
230 //
231 typedef
232 EFI_STATUS
233 (EFIAPI *EFI_USB2_HC_PROTOCOL_GET_CAPABILITY) (
234 IN EFI_USB2_HC_PROTOCOL *This,
235 OUT UINT8 *MaxSpeed,
236 OUT UINT8 *PortNumber,
237 OUT UINT8 *Is64BitCapable
238 );
239
240 #define EFI_USB_SPEED_FULL 0x0000
241 #define EFI_USB_SPEED_LOW 0x0001
242 #define EFI_USB_SPEED_HIGH 0x0002
243
244 typedef
245 EFI_STATUS
246 (EFIAPI *EFI_USB2_HC_PROTOCOL_RESET) (
247 IN EFI_USB2_HC_PROTOCOL *This,
248 IN UINT16 Attributes
249 );
250
251 typedef
252 EFI_STATUS
253 (EFIAPI *EFI_USB2_HC_PROTOCOL_GET_STATE) (
254 IN EFI_USB2_HC_PROTOCOL *This,
255 OUT EFI_USB_HC_STATE *State
256 );
257
258 typedef
259 EFI_STATUS
260 (EFIAPI *EFI_USB2_HC_PROTOCOL_SET_STATE) (
261 IN EFI_USB2_HC_PROTOCOL *This,
262 IN EFI_USB_HC_STATE State
263 );
264
265 typedef
266 EFI_STATUS
267 (EFIAPI *EFI_USB2_HC_PROTOCOL_CONTROL_TRANSFER) (
268 IN EFI_USB2_HC_PROTOCOL *This,
269 IN UINT8 DeviceAddress,
270 IN UINT8 DeviceSpeed,
271 IN UINTN MaximumPacketLength,
272 IN EFI_USB_DEVICE_REQUEST *Request,
273 IN EFI_USB_DATA_DIRECTION TransferDirection,
274 IN OUT VOID *Data OPTIONAL,
275 IN OUT UINTN *DataLength OPTIONAL,
276 IN UINTN TimeOut,
277 IN EFI_USB2_HC_TRANSACTION_TRANSLATOR *Translator,
278 OUT UINT32 *TransferResult
279 );
280
281 #define EFI_USB_MAX_BULK_BUFFER_NUM 10
282
283 typedef
284 EFI_STATUS
285 (EFIAPI *EFI_USB2_HC_PROTOCOL_BULK_TRANSFER) (
286 IN EFI_USB2_HC_PROTOCOL *This,
287 IN UINT8 DeviceAddress,
288 IN UINT8 EndPointAddress,
289 IN UINT8 DeviceSpeed,
290 IN UINTN MaximumPacketLength,
291 IN UINT8 DataBuffersNumber,
292 IN OUT VOID *Data[EFI_USB_MAX_BULK_BUFFER_NUM],
293 IN OUT UINTN *DataLength,
294 IN OUT UINT8 *DataToggle,
295 IN UINTN TimeOut,
296 IN EFI_USB2_HC_TRANSACTION_TRANSLATOR *Translator,
297 OUT UINT32 *TransferResult
298 );
299
300 typedef
301 EFI_STATUS
302 (EFIAPI *EFI_USB2_HC_PROTOCOL_ASYNC_INTERRUPT_TRANSFER) (
303 IN EFI_USB2_HC_PROTOCOL *This,
304 IN UINT8 DeviceAddress,
305 IN UINT8 EndPointAddress,
306 IN UINT8 DeviceSpeed,
307 IN UINTN MaxiumPacketLength,
308 IN BOOLEAN IsNewTransfer,
309 IN OUT UINT8 *DataToggle,
310 IN UINTN PollingInterval OPTIONAL,
311 IN UINTN DataLength OPTIONAL,
312 IN EFI_USB2_HC_TRANSACTION_TRANSLATOR *Translator,
313 IN EFI_ASYNC_USB_TRANSFER_CALLBACK CallBackFunction OPTIONAL,
314 IN VOID *Context OPTIONAL
315 );
316
317 typedef
318 EFI_STATUS
319 (EFIAPI *EFI_USB2_HC_PROTOCOL_SYNC_INTERRUPT_TRANSFER) (
320 IN EFI_USB2_HC_PROTOCOL *This,
321 IN UINT8 DeviceAddress,
322 IN UINT8 EndPointAddress,
323 IN UINT8 DeviceSpeed,
324 IN UINTN MaximumPacketLength,
325 IN OUT VOID *Data,
326 IN OUT UINTN *DataLength,
327 IN OUT UINT8 *DataToggle,
328 IN UINTN TimeOut,
329 IN EFI_USB2_HC_TRANSACTION_TRANSLATOR *Translator,
330 OUT UINT32 *TransferResult
331 );
332
333 #define EFI_USB_MAX_ISO_BUFFER_NUM 7
334 #define EFI_USB_MAX_ISO_BUFFER_NUM1 2
335
336 typedef
337 EFI_STATUS
338 (EFIAPI *EFI_USB2_HC_PROTOCOL_ISOCHRONOUS_TRANSFER) (
339 IN EFI_USB2_HC_PROTOCOL *This,
340 IN UINT8 DeviceAddress,
341 IN UINT8 EndPointAddress,
342 IN UINT8 DeviceSpeed,
343 IN UINTN MaximumPacketLength,
344 IN UINT8 DataBuffersNumber,
345 IN OUT VOID *Data[EFI_USB_MAX_ISO_BUFFER_NUM],
346 IN UINTN DataLength,
347 IN EFI_USB2_HC_TRANSACTION_TRANSLATOR *Translator,
348 OUT UINT32 *TransferResult
349 );
350
351 typedef
352 EFI_STATUS
353 (EFIAPI *EFI_USB2_HC_PROTOCOL_ASYNC_ISOCHRONOUS_TRANSFER) (
354 IN EFI_USB2_HC_PROTOCOL *This,
355 IN UINT8 DeviceAddress,
356 IN UINT8 EndPointAddress,
357 IN UINT8 DeviceSpeed,
358 IN UINTN MaximumPacketLength,
359 IN UINT8 DataBuffersNumber,
360 IN OUT VOID *Data[EFI_USB_MAX_ISO_BUFFER_NUM],
361 IN UINTN DataLength,
362 IN EFI_USB2_HC_TRANSACTION_TRANSLATOR *Translator,
363 IN EFI_ASYNC_USB_TRANSFER_CALLBACK IsochronousCallBack,
364 IN VOID *Context OPTIONAL
365 );
366
367 typedef
368 EFI_STATUS
369 (EFIAPI *EFI_USB2_HC_PROTOCOL_GET_ROOTHUB_PORT_STATUS) (
370 IN EFI_USB2_HC_PROTOCOL *This,
371 IN UINT8 PortNumber,
372 OUT EFI_USB_PORT_STATUS *PortStatus
373 );
374
375 typedef
376 EFI_STATUS
377 (EFIAPI *EFI_USB2_HC_PROTOCOL_SET_ROOTHUB_PORT_FEATURE) (
378 IN EFI_USB2_HC_PROTOCOL *This,
379 IN UINT8 PortNumber,
380 IN EFI_USB_PORT_FEATURE PortFeature
381 );
382
383 typedef
384 EFI_STATUS
385 (EFIAPI *EFI_USB2_HC_PROTOCOL_CLEAR_ROOTHUB_PORT_FEATURE) (
386 IN EFI_USB2_HC_PROTOCOL *This,
387 IN UINT8 PortNumber,
388 IN EFI_USB_PORT_FEATURE PortFeature
389 );
390
391 typedef struct _EFI_USB2_HC_PROTOCOL {
392 EFI_USB2_HC_PROTOCOL_GET_CAPABILITY GetCapability;
393 EFI_USB2_HC_PROTOCOL_RESET Reset;
394 EFI_USB2_HC_PROTOCOL_GET_STATE GetState;
395 EFI_USB2_HC_PROTOCOL_SET_STATE SetState;
396 EFI_USB2_HC_PROTOCOL_CONTROL_TRANSFER ControlTransfer;
397 EFI_USB2_HC_PROTOCOL_BULK_TRANSFER BulkTransfer;
398 EFI_USB2_HC_PROTOCOL_ASYNC_INTERRUPT_TRANSFER AsyncInterruptTransfer;
399 EFI_USB2_HC_PROTOCOL_SYNC_INTERRUPT_TRANSFER SyncInterruptTransfer;
400 EFI_USB2_HC_PROTOCOL_ISOCHRONOUS_TRANSFER IsochronousTransfer;
401 EFI_USB2_HC_PROTOCOL_ASYNC_ISOCHRONOUS_TRANSFER AsyncIsochronousTransfer;
402 EFI_USB2_HC_PROTOCOL_GET_ROOTHUB_PORT_STATUS GetRootHubPortStatus;
403 EFI_USB2_HC_PROTOCOL_SET_ROOTHUB_PORT_FEATURE SetRootHubPortFeature;
404 EFI_USB2_HC_PROTOCOL_CLEAR_ROOTHUB_PORT_FEATURE ClearRootHubPortFeature;
405 UINT16 MajorRevision;
406 UINT16 MinorRevision;
407 } EFI_USB2_HC_PROTOCOL;
408
409 extern EFI_GUID gEfiUsb2HcProtocolGuid;
410
411 #endif