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
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.
21 #ifndef _USB_HOSTCONTROLLER_H_
22 #define _USB_HOSTCONTROLLER_H_
25 #include EFI_PROTOCOL_DEFINITION (UsbIo)
27 #define EFI_USB_HC_PROTOCOL_GUID \
29 0xf5089266, 0x1aa0, 0x4953, 0x97, 0xd8, 0x56, 0x2f, 0x8a, 0x73, 0xb5, 0x19 \
33 // Forward reference for pure ANSI compatability
35 EFI_FORWARD_DECLARATION (EFI_USB_HC_PROTOCOL
);
39 EfiUsbHcStateOperational
,
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
50 // Protocol definitions
54 (EFIAPI
*EFI_USB_HC_PROTOCOL_RESET
) (
55 IN EFI_USB_HC_PROTOCOL
* This
,
61 (EFIAPI
*EFI_USB_HC_PROTOCOL_GET_STATE
) (
62 IN EFI_USB_HC_PROTOCOL
* This
,
63 OUT EFI_USB_HC_STATE
* State
68 (EFIAPI
*EFI_USB_HC_PROTOCOL_SET_STATE
) (
69 IN EFI_USB_HC_PROTOCOL
* This
,
70 IN EFI_USB_HC_STATE State
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
,
85 OUT UINT32
*TransferResult
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
,
96 IN OUT UINTN
*DataLength
,
97 IN OUT UINT8
*DataToggle
,
99 OUT UINT32
*TransferResult
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
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
,
127 IN OUT UINTN
*DataLength
,
128 IN OUT UINT8
*DataToggle
,
130 OUT UINT32
*TransferResult
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
,
142 OUT UINT32
*TransferResult
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
,
154 IN EFI_ASYNC_USB_TRANSFER_CALLBACK IsochronousCallBack
,
155 IN VOID
*Context OPTIONAL
160 (EFIAPI
*EFI_USB_HC_PROTOCOL_GET_ROOTHUB_PORT_NUMBER
) (
161 IN EFI_USB_HC_PROTOCOL
* This
,
162 OUT UINT8
*PortNumber
167 (EFIAPI
*EFI_USB_HC_PROTOCOL_GET_ROOTHUB_PORT_STATUS
) (
168 IN EFI_USB_HC_PROTOCOL
* This
,
170 OUT EFI_USB_PORT_STATUS
* PortStatus
175 (EFIAPI
*EFI_USB_HC_PROTOCOL_SET_ROOTHUB_PORT_FEATURE
) (
176 IN EFI_USB_HC_PROTOCOL
* This
,
178 IN EFI_USB_PORT_FEATURE PortFeature
183 (EFIAPI
*EFI_USB_HC_PROTOCOL_CLEAR_ROOTHUB_PORT_FEATURE
) (
184 IN EFI_USB_HC_PROTOCOL
* This
,
186 IN EFI_USB_PORT_FEATURE PortFeature
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
;
207 extern EFI_GUID gEfiUsbHcProtocolGuid
;
210 #define EFI_USB2_HC_PROTOCOL_GUID \
212 0x3e745226, 0x9818, 0x45b6, 0xa2, 0xac, 0xd7, 0xcd, 0xe, 0x8b, 0xa2, 0xbc \
216 // Forward reference for pure ANSI compatability
218 EFI_FORWARD_DECLARATION (EFI_USB2_HC_PROTOCOL
);
220 #define EFI_USB_HC_RESET_GLOBAL_WITH_DEBUG 0x0004
221 #define EFI_USB_HC_RESET_HOST_WITH_DEBUG 0x0008
224 UINT8 TranslatorHubAddress
;
225 UINT8 TranslatorPortNumber
;
226 } EFI_USB2_HC_TRANSACTION_TRANSLATOR
;
229 // Protocol definitions
233 (EFIAPI
*EFI_USB2_HC_PROTOCOL_GET_CAPABILITY
) (
234 IN EFI_USB2_HC_PROTOCOL
*This
,
236 OUT UINT8
*PortNumber
,
237 OUT UINT8
*Is64BitCapable
240 #define EFI_USB_SPEED_FULL 0x0000
241 #define EFI_USB_SPEED_LOW 0x0001
242 #define EFI_USB_SPEED_HIGH 0x0002
246 (EFIAPI
*EFI_USB2_HC_PROTOCOL_RESET
) (
247 IN EFI_USB2_HC_PROTOCOL
*This
,
253 (EFIAPI
*EFI_USB2_HC_PROTOCOL_GET_STATE
) (
254 IN EFI_USB2_HC_PROTOCOL
*This
,
255 OUT EFI_USB_HC_STATE
*State
260 (EFIAPI
*EFI_USB2_HC_PROTOCOL_SET_STATE
) (
261 IN EFI_USB2_HC_PROTOCOL
*This
,
262 IN EFI_USB_HC_STATE State
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
,
277 IN EFI_USB2_HC_TRANSACTION_TRANSLATOR
*Translator
,
278 OUT UINT32
*TransferResult
281 #define EFI_USB_MAX_BULK_BUFFER_NUM 10
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
,
296 IN EFI_USB2_HC_TRANSACTION_TRANSLATOR
*Translator
,
297 OUT UINT32
*TransferResult
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
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
,
326 IN OUT UINTN
*DataLength
,
327 IN OUT UINT8
*DataToggle
,
329 IN EFI_USB2_HC_TRANSACTION_TRANSLATOR
*Translator
,
330 OUT UINT32
*TransferResult
333 #define EFI_USB_MAX_ISO_BUFFER_NUM 7
334 #define EFI_USB_MAX_ISO_BUFFER_NUM1 2
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
],
347 IN EFI_USB2_HC_TRANSACTION_TRANSLATOR
*Translator
,
348 OUT UINT32
*TransferResult
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
],
362 IN EFI_USB2_HC_TRANSACTION_TRANSLATOR
*Translator
,
363 IN EFI_ASYNC_USB_TRANSFER_CALLBACK IsochronousCallBack
,
364 IN VOID
*Context OPTIONAL
369 (EFIAPI
*EFI_USB2_HC_PROTOCOL_GET_ROOTHUB_PORT_STATUS
) (
370 IN EFI_USB2_HC_PROTOCOL
*This
,
372 OUT EFI_USB_PORT_STATUS
*PortStatus
377 (EFIAPI
*EFI_USB2_HC_PROTOCOL_SET_ROOTHUB_PORT_FEATURE
) (
378 IN EFI_USB2_HC_PROTOCOL
*This
,
380 IN EFI_USB_PORT_FEATURE PortFeature
385 (EFIAPI
*EFI_USB2_HC_PROTOCOL_CLEAR_ROOTHUB_PORT_FEATURE
) (
386 IN EFI_USB2_HC_PROTOCOL
*This
,
388 IN EFI_USB_PORT_FEATURE PortFeature
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
;
409 extern EFI_GUID gEfiUsb2HcProtocolGuid
;