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