| /*++ | |
| Copyright (c) 2004 - 2006, Intel Corporation. All rights reserved.<BR> | |
| This program and the accompanying materials | |
| are licensed and made available under the terms and conditions of the BSD License | |
| which accompanies this distribution. The full text of the license may be found at | |
| http://opensource.org/licenses/bsd-license.php | |
| THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, | |
| WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. | |
| Module Name: | |
| UsbHostController.h | |
| Abstract: | |
| --*/ | |
| #ifndef _USB_HOSTCONTROLLER_H_ | |
| #define _USB_HOSTCONTROLLER_H_ | |
| #include "usb.h" | |
| #include EFI_PROTOCOL_DEFINITION (UsbIo) | |
| #define EFI_USB_HC_PROTOCOL_GUID \ | |
| { \ | |
| 0xf5089266, 0x1aa0, 0x4953, {0x97, 0xd8, 0x56, 0x2f, 0x8a, 0x73, 0xb5, 0x19} \ | |
| } | |
| // | |
| // Forward reference for pure ANSI compatability | |
| // | |
| EFI_FORWARD_DECLARATION (EFI_USB_HC_PROTOCOL); | |
| typedef enum { | |
| EfiUsbHcStateHalt, | |
| EfiUsbHcStateOperational, | |
| EfiUsbHcStateSuspend, | |
| EfiUsbHcStateMaximum | |
| } EFI_USB_HC_STATE; | |
| #define EFI_USB_HC_RESET_GLOBAL 0x0001 | |
| #define EFI_USB_HC_RESET_HOST_CONTROLLER 0x0002 | |
| #define EFI_USB_HC_RESET_GLOBAL_WITH_DEBUG 0x0004 | |
| #define EFI_USB_HC_RESET_HOST_WITH_DEBUG 0x0008 | |
| // | |
| // Protocol definitions | |
| // | |
| typedef | |
| EFI_STATUS | |
| (EFIAPI *EFI_USB_HC_PROTOCOL_RESET) ( | |
| IN EFI_USB_HC_PROTOCOL * This, | |
| IN UINT16 Attributes | |
| ); | |
| typedef | |
| EFI_STATUS | |
| (EFIAPI *EFI_USB_HC_PROTOCOL_GET_STATE) ( | |
| IN EFI_USB_HC_PROTOCOL * This, | |
| OUT EFI_USB_HC_STATE * State | |
| ); | |
| typedef | |
| EFI_STATUS | |
| (EFIAPI *EFI_USB_HC_PROTOCOL_SET_STATE) ( | |
| IN EFI_USB_HC_PROTOCOL * This, | |
| IN EFI_USB_HC_STATE State | |
| ); | |
| typedef | |
| EFI_STATUS | |
| (EFIAPI *EFI_USB_HC_PROTOCOL_CONTROL_TRANSFER) ( | |
| IN EFI_USB_HC_PROTOCOL * This, | |
| IN UINT8 DeviceAddress, | |
| IN BOOLEAN IsSlowDevice, | |
| IN UINT8 MaximumPacketLength, | |
| IN EFI_USB_DEVICE_REQUEST * Request, | |
| IN EFI_USB_DATA_DIRECTION TransferDirection, | |
| IN OUT VOID *Data OPTIONAL, | |
| IN OUT UINTN *DataLength OPTIONAL, | |
| IN UINTN TimeOut, | |
| OUT UINT32 *TransferResult | |
| ); | |
| typedef | |
| EFI_STATUS | |
| (EFIAPI *EFI_USB_HC_PROTOCOL_BULK_TRANSFER) ( | |
| IN EFI_USB_HC_PROTOCOL * This, | |
| IN UINT8 DeviceAddress, | |
| IN UINT8 EndPointAddress, | |
| IN UINT8 MaximumPacketLength, | |
| IN OUT VOID *Data, | |
| IN OUT UINTN *DataLength, | |
| IN OUT UINT8 *DataToggle, | |
| IN UINTN TimeOut, | |
| OUT UINT32 *TransferResult | |
| ); | |
| typedef | |
| EFI_STATUS | |
| (EFIAPI *EFI_USB_HC_PROTOCOL_ASYNC_INTERRUPT_TRANSFER) ( | |
| IN EFI_USB_HC_PROTOCOL * This, | |
| IN UINT8 DeviceAddress, | |
| IN UINT8 EndPointAddress, | |
| IN BOOLEAN IsSlowDevice, | |
| IN UINT8 MaxiumPacketLength, | |
| IN BOOLEAN IsNewTransfer, | |
| IN OUT UINT8 *DataToggle, | |
| IN UINTN PollingInterval OPTIONAL, | |
| IN UINTN DataLength OPTIONAL, | |
| IN EFI_ASYNC_USB_TRANSFER_CALLBACK CallBackFunction OPTIONAL, | |
| IN VOID *Context OPTIONAL | |
| ); | |
| typedef | |
| EFI_STATUS | |
| (EFIAPI *EFI_USB_HC_PROTOCOL_SYNC_INTERRUPT_TRANSFER) ( | |
| IN EFI_USB_HC_PROTOCOL * This, | |
| IN UINT8 DeviceAddress, | |
| IN UINT8 EndPointAddress, | |
| IN BOOLEAN IsSlowDevice, | |
| IN UINT8 MaximumPacketLength, | |
| IN OUT VOID *Data, | |
| IN OUT UINTN *DataLength, | |
| IN OUT UINT8 *DataToggle, | |
| IN UINTN TimeOut, | |
| OUT UINT32 *TransferResult | |
| ); | |
| typedef | |
| EFI_STATUS | |
| (EFIAPI *EFI_USB_HC_PROTOCOL_ISOCHRONOUS_TRANSFER) ( | |
| IN EFI_USB_HC_PROTOCOL * This, | |
| IN UINT8 DeviceAddress, | |
| IN UINT8 EndPointAddress, | |
| IN UINT8 MaximumPacketLength, | |
| IN OUT VOID *Data, | |
| IN UINTN DataLength, | |
| OUT UINT32 *TransferResult | |
| ); | |
| typedef | |
| EFI_STATUS | |
| (EFIAPI *EFI_USB_HC_PROTOCOL_ASYNC_ISOCHRONOUS_TRANSFER) ( | |
| IN EFI_USB_HC_PROTOCOL * This, | |
| IN UINT8 DeviceAddress, | |
| IN UINT8 EndPointAddress, | |
| IN UINT8 MaximumPacketLength, | |
| IN OUT VOID *Data, | |
| IN UINTN DataLength, | |
| IN EFI_ASYNC_USB_TRANSFER_CALLBACK IsochronousCallBack, | |
| IN VOID *Context OPTIONAL | |
| ); | |
| typedef | |
| EFI_STATUS | |
| (EFIAPI *EFI_USB_HC_PROTOCOL_GET_ROOTHUB_PORT_NUMBER) ( | |
| IN EFI_USB_HC_PROTOCOL * This, | |
| OUT UINT8 *PortNumber | |
| ); | |
| typedef | |
| EFI_STATUS | |
| (EFIAPI *EFI_USB_HC_PROTOCOL_GET_ROOTHUB_PORT_STATUS) ( | |
| IN EFI_USB_HC_PROTOCOL * This, | |
| IN UINT8 PortNumber, | |
| OUT EFI_USB_PORT_STATUS * PortStatus | |
| ); | |
| typedef | |
| EFI_STATUS | |
| (EFIAPI *EFI_USB_HC_PROTOCOL_SET_ROOTHUB_PORT_FEATURE) ( | |
| IN EFI_USB_HC_PROTOCOL * This, | |
| IN UINT8 PortNumber, | |
| IN EFI_USB_PORT_FEATURE PortFeature | |
| ); | |
| typedef | |
| EFI_STATUS | |
| (EFIAPI *EFI_USB_HC_PROTOCOL_CLEAR_ROOTHUB_PORT_FEATURE) ( | |
| IN EFI_USB_HC_PROTOCOL * This, | |
| IN UINT8 PortNumber, | |
| IN EFI_USB_PORT_FEATURE PortFeature | |
| ); | |
| struct _EFI_USB_HC_PROTOCOL { | |
| EFI_USB_HC_PROTOCOL_RESET Reset; | |
| EFI_USB_HC_PROTOCOL_GET_STATE GetState; | |
| EFI_USB_HC_PROTOCOL_SET_STATE SetState; | |
| EFI_USB_HC_PROTOCOL_CONTROL_TRANSFER ControlTransfer; | |
| EFI_USB_HC_PROTOCOL_BULK_TRANSFER BulkTransfer; | |
| EFI_USB_HC_PROTOCOL_ASYNC_INTERRUPT_TRANSFER AsyncInterruptTransfer; | |
| EFI_USB_HC_PROTOCOL_SYNC_INTERRUPT_TRANSFER SyncInterruptTransfer; | |
| EFI_USB_HC_PROTOCOL_ISOCHRONOUS_TRANSFER IsochronousTransfer; | |
| EFI_USB_HC_PROTOCOL_ASYNC_ISOCHRONOUS_TRANSFER AsyncIsochronousTransfer; | |
| EFI_USB_HC_PROTOCOL_GET_ROOTHUB_PORT_NUMBER GetRootHubPortNumber; | |
| EFI_USB_HC_PROTOCOL_GET_ROOTHUB_PORT_STATUS GetRootHubPortStatus; | |
| EFI_USB_HC_PROTOCOL_SET_ROOTHUB_PORT_FEATURE SetRootHubPortFeature; | |
| EFI_USB_HC_PROTOCOL_CLEAR_ROOTHUB_PORT_FEATURE ClearRootHubPortFeature; | |
| UINT16 MajorRevision; | |
| UINT16 MinorRevision; | |
| }; | |
| extern EFI_GUID gEfiUsbHcProtocolGuid; | |
| #define EFI_USB2_HC_PROTOCOL_GUID \ | |
| { \ | |
| 0x3e745226, 0x9818, 0x45b6, {0xa2, 0xac, 0xd7, 0xcd, 0xe, 0x8b, 0xa2, 0xbc} \ | |
| } | |
| // | |
| // Forward reference for pure ANSI compatability | |
| // | |
| EFI_FORWARD_DECLARATION (EFI_USB2_HC_PROTOCOL); | |
| #define EFI_USB_HC_RESET_GLOBAL_WITH_DEBUG 0x0004 | |
| #define EFI_USB_HC_RESET_HOST_WITH_DEBUG 0x0008 | |
| typedef struct { | |
| UINT8 TranslatorHubAddress; | |
| UINT8 TranslatorPortNumber; | |
| } EFI_USB2_HC_TRANSACTION_TRANSLATOR; | |
| // | |
| // Protocol definitions | |
| // | |
| typedef | |
| EFI_STATUS | |
| (EFIAPI *EFI_USB2_HC_PROTOCOL_GET_CAPABILITY) ( | |
| IN EFI_USB2_HC_PROTOCOL *This, | |
| OUT UINT8 *MaxSpeed, | |
| OUT UINT8 *PortNumber, | |
| OUT UINT8 *Is64BitCapable | |
| ); | |
| #define EFI_USB_SPEED_FULL 0x0000 | |
| #define EFI_USB_SPEED_LOW 0x0001 | |
| #define EFI_USB_SPEED_HIGH 0x0002 | |
| typedef | |
| EFI_STATUS | |
| (EFIAPI *EFI_USB2_HC_PROTOCOL_RESET) ( | |
| IN EFI_USB2_HC_PROTOCOL *This, | |
| IN UINT16 Attributes | |
| ); | |
| typedef | |
| EFI_STATUS | |
| (EFIAPI *EFI_USB2_HC_PROTOCOL_GET_STATE) ( | |
| IN EFI_USB2_HC_PROTOCOL *This, | |
| OUT EFI_USB_HC_STATE *State | |
| ); | |
| typedef | |
| EFI_STATUS | |
| (EFIAPI *EFI_USB2_HC_PROTOCOL_SET_STATE) ( | |
| IN EFI_USB2_HC_PROTOCOL *This, | |
| IN EFI_USB_HC_STATE State | |
| ); | |
| typedef | |
| EFI_STATUS | |
| (EFIAPI *EFI_USB2_HC_PROTOCOL_CONTROL_TRANSFER) ( | |
| IN EFI_USB2_HC_PROTOCOL *This, | |
| IN UINT8 DeviceAddress, | |
| IN UINT8 DeviceSpeed, | |
| IN UINTN MaximumPacketLength, | |
| IN EFI_USB_DEVICE_REQUEST *Request, | |
| IN EFI_USB_DATA_DIRECTION TransferDirection, | |
| IN OUT VOID *Data OPTIONAL, | |
| IN OUT UINTN *DataLength OPTIONAL, | |
| IN UINTN TimeOut, | |
| IN EFI_USB2_HC_TRANSACTION_TRANSLATOR *Translator, | |
| OUT UINT32 *TransferResult | |
| ); | |
| #define EFI_USB_MAX_BULK_BUFFER_NUM 10 | |
| typedef | |
| EFI_STATUS | |
| (EFIAPI *EFI_USB2_HC_PROTOCOL_BULK_TRANSFER) ( | |
| IN EFI_USB2_HC_PROTOCOL *This, | |
| IN UINT8 DeviceAddress, | |
| IN UINT8 EndPointAddress, | |
| IN UINT8 DeviceSpeed, | |
| IN UINTN MaximumPacketLength, | |
| IN UINT8 DataBuffersNumber, | |
| IN OUT VOID *Data[EFI_USB_MAX_BULK_BUFFER_NUM], | |
| IN OUT UINTN *DataLength, | |
| IN OUT UINT8 *DataToggle, | |
| IN UINTN TimeOut, | |
| IN EFI_USB2_HC_TRANSACTION_TRANSLATOR *Translator, | |
| OUT UINT32 *TransferResult | |
| ); | |
| typedef | |
| EFI_STATUS | |
| (EFIAPI *EFI_USB2_HC_PROTOCOL_ASYNC_INTERRUPT_TRANSFER) ( | |
| IN EFI_USB2_HC_PROTOCOL *This, | |
| IN UINT8 DeviceAddress, | |
| IN UINT8 EndPointAddress, | |
| IN UINT8 DeviceSpeed, | |
| IN UINTN MaxiumPacketLength, | |
| IN BOOLEAN IsNewTransfer, | |
| IN OUT UINT8 *DataToggle, | |
| IN UINTN PollingInterval OPTIONAL, | |
| IN UINTN DataLength OPTIONAL, | |
| IN EFI_USB2_HC_TRANSACTION_TRANSLATOR *Translator, | |
| IN EFI_ASYNC_USB_TRANSFER_CALLBACK CallBackFunction OPTIONAL, | |
| IN VOID *Context OPTIONAL | |
| ); | |
| typedef | |
| EFI_STATUS | |
| (EFIAPI *EFI_USB2_HC_PROTOCOL_SYNC_INTERRUPT_TRANSFER) ( | |
| IN EFI_USB2_HC_PROTOCOL *This, | |
| IN UINT8 DeviceAddress, | |
| IN UINT8 EndPointAddress, | |
| IN UINT8 DeviceSpeed, | |
| IN UINTN MaximumPacketLength, | |
| IN OUT VOID *Data, | |
| IN OUT UINTN *DataLength, | |
| IN OUT UINT8 *DataToggle, | |
| IN UINTN TimeOut, | |
| IN EFI_USB2_HC_TRANSACTION_TRANSLATOR *Translator, | |
| OUT UINT32 *TransferResult | |
| ); | |
| #define EFI_USB_MAX_ISO_BUFFER_NUM 7 | |
| #define EFI_USB_MAX_ISO_BUFFER_NUM1 2 | |
| typedef | |
| EFI_STATUS | |
| (EFIAPI *EFI_USB2_HC_PROTOCOL_ISOCHRONOUS_TRANSFER) ( | |
| IN EFI_USB2_HC_PROTOCOL *This, | |
| IN UINT8 DeviceAddress, | |
| IN UINT8 EndPointAddress, | |
| IN UINT8 DeviceSpeed, | |
| IN UINTN MaximumPacketLength, | |
| IN UINT8 DataBuffersNumber, | |
| IN OUT VOID *Data[EFI_USB_MAX_ISO_BUFFER_NUM], | |
| IN UINTN DataLength, | |
| IN EFI_USB2_HC_TRANSACTION_TRANSLATOR *Translator, | |
| OUT UINT32 *TransferResult | |
| ); | |
| typedef | |
| EFI_STATUS | |
| (EFIAPI *EFI_USB2_HC_PROTOCOL_ASYNC_ISOCHRONOUS_TRANSFER) ( | |
| IN EFI_USB2_HC_PROTOCOL *This, | |
| IN UINT8 DeviceAddress, | |
| IN UINT8 EndPointAddress, | |
| IN UINT8 DeviceSpeed, | |
| IN UINTN MaximumPacketLength, | |
| IN UINT8 DataBuffersNumber, | |
| IN OUT VOID *Data[EFI_USB_MAX_ISO_BUFFER_NUM], | |
| IN UINTN DataLength, | |
| IN EFI_USB2_HC_TRANSACTION_TRANSLATOR *Translator, | |
| IN EFI_ASYNC_USB_TRANSFER_CALLBACK IsochronousCallBack, | |
| IN VOID *Context OPTIONAL | |
| ); | |
| typedef | |
| EFI_STATUS | |
| (EFIAPI *EFI_USB2_HC_PROTOCOL_GET_ROOTHUB_PORT_STATUS) ( | |
| IN EFI_USB2_HC_PROTOCOL *This, | |
| IN UINT8 PortNumber, | |
| OUT EFI_USB_PORT_STATUS *PortStatus | |
| ); | |
| typedef | |
| EFI_STATUS | |
| (EFIAPI *EFI_USB2_HC_PROTOCOL_SET_ROOTHUB_PORT_FEATURE) ( | |
| IN EFI_USB2_HC_PROTOCOL *This, | |
| IN UINT8 PortNumber, | |
| IN EFI_USB_PORT_FEATURE PortFeature | |
| ); | |
| typedef | |
| EFI_STATUS | |
| (EFIAPI *EFI_USB2_HC_PROTOCOL_CLEAR_ROOTHUB_PORT_FEATURE) ( | |
| IN EFI_USB2_HC_PROTOCOL *This, | |
| IN UINT8 PortNumber, | |
| IN EFI_USB_PORT_FEATURE PortFeature | |
| ); | |
| struct _EFI_USB2_HC_PROTOCOL { | |
| EFI_USB2_HC_PROTOCOL_GET_CAPABILITY GetCapability; | |
| EFI_USB2_HC_PROTOCOL_RESET Reset; | |
| EFI_USB2_HC_PROTOCOL_GET_STATE GetState; | |
| EFI_USB2_HC_PROTOCOL_SET_STATE SetState; | |
| EFI_USB2_HC_PROTOCOL_CONTROL_TRANSFER ControlTransfer; | |
| EFI_USB2_HC_PROTOCOL_BULK_TRANSFER BulkTransfer; | |
| EFI_USB2_HC_PROTOCOL_ASYNC_INTERRUPT_TRANSFER AsyncInterruptTransfer; | |
| EFI_USB2_HC_PROTOCOL_SYNC_INTERRUPT_TRANSFER SyncInterruptTransfer; | |
| EFI_USB2_HC_PROTOCOL_ISOCHRONOUS_TRANSFER IsochronousTransfer; | |
| EFI_USB2_HC_PROTOCOL_ASYNC_ISOCHRONOUS_TRANSFER AsyncIsochronousTransfer; | |
| EFI_USB2_HC_PROTOCOL_GET_ROOTHUB_PORT_STATUS GetRootHubPortStatus; | |
| EFI_USB2_HC_PROTOCOL_SET_ROOTHUB_PORT_FEATURE SetRootHubPortFeature; | |
| EFI_USB2_HC_PROTOCOL_CLEAR_ROOTHUB_PORT_FEATURE ClearRootHubPortFeature; | |
| UINT16 MajorRevision; | |
| UINT16 MinorRevision; | |
| }; | |
| extern EFI_GUID gEfiUsb2HcProtocolGuid; | |
| #endif |