]> git.proxmox.com Git - mirror_edk2.git/blobdiff - EdkModulePkg/Bus/Pci/Ehci/Dxe/Ehci.h
Retiring the ANT/JAVA build and removing the older EDK II packages that required...
[mirror_edk2.git] / EdkModulePkg / Bus / Pci / Ehci / Dxe / Ehci.h
diff --git a/EdkModulePkg/Bus/Pci/Ehci/Dxe/Ehci.h b/EdkModulePkg/Bus/Pci/Ehci/Dxe/Ehci.h
deleted file mode 100644 (file)
index 7ac5d28..0000000
+++ /dev/null
@@ -1,2918 +0,0 @@
-/*++\r
-\r
-Copyright (c) 2006 - 2007, Intel Corporation\r
-All rights reserved. This program and the accompanying materials\r
-are licensed and made available under the terms and conditions of the BSD License\r
-which accompanies this distribution.  The full text of the license may be found at\r
-http://opensource.org/licenses/bsd-license.php\r
-                                                                                          \r
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-\r
-Module Name:\r
-\r
-    Ehci.h\r
-\r
-Abstract:\r
-\r
-\r
-Revision History\r
---*/\r
-\r
-#ifndef _EHCI_H\r
-#define _EHCI_H\r
-\r
-//\r
-// Universal Host Controller Interface data structures and defines\r
-//\r
-#include <IndustryStandard/pci22.h>\r
-\r
-\r
-extern UINTN  gEHCDebugLevel;\r
-extern UINTN  gEHCErrorLevel;\r
-\r
-\r
-#define STALL_1_MACRO_SECOND              1\r
-#define STALL_1_MILLI_SECOND              1000 * STALL_1_MACRO_SECOND\r
-#define STALL_1_SECOND                    1000 * STALL_1_MILLI_SECOND\r
-\r
-#define MEM_UNIT_SIZE                     128\r
-\r
-\r
-#define SETUP_PACKET_PID_CODE             0x02\r
-#define INPUT_PACKET_PID_CODE             0x01\r
-#define OUTPUT_PACKET_PID_CODE            0x0\r
-\r
-#define ITD_SELECT_TYPE                   0x0\r
-#define QH_SELECT_TYPE                    0x01\r
-#define SITD_SELECT_TYPE                  0x02\r
-#define FSTN_SELECT_TYPE                  0x03\r
-\r
-#define EHCI_SET_PORT_RESET_RECOVERY_TIME     50 * STALL_1_MILLI_SECOND\r
-#define EHCI_CLEAR_PORT_RESET_RECOVERY_TIME   STALL_1_MILLI_SECOND\r
-#define EHCI_GENERIC_TIMEOUT                  50 * STALL_1_MILLI_SECOND\r
-#define EHCI_GENERIC_RECOVERY_TIME            50 * STALL_1_MACRO_SECOND\r
-#define EHCI_SYNC_REQUEST_POLLING_TIME        50 * STALL_1_MACRO_SECOND\r
-#define EHCI_ASYNC_REQUEST_POLLING_TIME       50 * STALL_1_MILLI_SECOND\r
-\r
-#define USB_BAR_INDEX                     0 /* how many bytes away from USB_BASE to 0x10 */\r
-\r
-#define NORMAL_MEMORY_BLOCK_UNIT_IN_PAGES 16\r
-\r
-#define EHCI_MIN_PACKET_SIZE              8\r
-#define EHCI_MAX_PACKET_SIZE              1024\r
-#define EHCI_MAX_FRAME_LIST_LENGTH        1024\r
-#define EHCI_BLOCK_SIZE_WITH_TT           64\r
-#define EHCI_BLOCK_SIZE                   512\r
-#define EHCI_MAX_QTD_CAPACITY             (EFI_PAGE_SIZE * 5)\r
-\r
-#define NAK_COUNT_RELOAD                  3\r
-#define QTD_ERROR_COUNTER                 3\r
-#define HIGH_BANDWIDTH_PIPE_MULTIPLIER    1\r
-\r
-#define QTD_STATUS_ACTIVE                 0x80\r
-#define QTD_STATUS_HALTED                 0x40\r
-#define QTD_STATUS_BUFFER_ERR             0x20\r
-#define QTD_STATUS_BABBLE_ERR             0x10\r
-#define QTD_STATUS_TRANSACTION_ERR        0x08\r
-#define QTD_STATUS_DO_STOP_SPLIT          0x02\r
-#define QTD_STATUS_DO_START_SPLIT         0\r
-#define QTD_STATUS_DO_PING                0x01\r
-#define QTD_STATUS_DO_OUT                 0\r
-\r
-#define DATA0                             0\r
-#define DATA1                             1\r
-\r
-#define MICRO_FRAME_0_CHANNEL             0x01\r
-#define MICRO_FRAME_1_CHANNEL             0x02\r
-#define MICRO_FRAME_2_CHANNEL             0x04\r
-#define MICRO_FRAME_3_CHANNEL             0x08\r
-#define MICRO_FRAME_4_CHANNEL             0x10\r
-#define MICRO_FRAME_5_CHANNEL             0x20\r
-#define MICRO_FRAME_6_CHANNEL             0x40\r
-#define MICRO_FRAME_7_CHANNEL             0x80\r
-\r
-#define CONTROL_TRANSFER                  0x01\r
-#define BULK_TRANSFER                     0x02\r
-#define SYNC_INTERRUPT_TRANSFER           0x04\r
-#define ASYNC_INTERRUPT_TRANSFER          0x08\r
-#define SYNC_ISOCHRONOUS_TRANSFER         0x10\r
-#define ASYNC_ISOCHRONOUS_TRANSFER        0x20\r
-\r
-\r
-//\r
-// Enhanced Host Controller Registers definitions\r
-//\r
-extern EFI_DRIVER_BINDING_PROTOCOL  gEhciDriverBinding;\r
-extern EFI_COMPONENT_NAME_PROTOCOL  gEhciComponentName;\r
-\r
-#define USBCMD            0x0     /* Command Register Offset 00-03h */\r
-#define USBCMD_RS         0x01    /* Run / Stop */\r
-#define USBCMD_HCRESET    0x02    /* Host controller reset */\r
-#define USBCMD_FLS_512    0x04    /* 512 elements (2048bytes) in Frame List */\r
-#define USBCMD_FLS_256    0x08    /* 256 elements (1024bytes) in Frame List */\r
-#define USBCMD_PSE        0x10    /* Periodic schedule enable */\r
-#define USBCMD_ASE        0x20    /* Asynchronous schedule enable */\r
-#define USBCMD_IAAD       0x40    /* Interrupt on async advance doorbell */\r
-\r
-#define USBSTS            0x04    /* Statue Register Offset 04-07h */\r
-#define USBSTS_HSE        0x10    /* Host system error */\r
-#define USBSTS_IAA        0x20    /* Interrupt on async advance */\r
-#define USBSTS_HCH        0x1000  /* Host controller halted */\r
-#define USBSTS_PSS        0x4000  /* Periodic schedule status */\r
-#define USBSTS_ASS        0x8000  /* Asynchronous schedule status */\r
-\r
-#define USBINTR           0x08    /* Command Register Offset 08-0bh */\r
-\r
-#define FRINDEX           0x0c    /* Frame Index Offset 0c-0fh */\r
-\r
-#define CTRLDSSGMENT      0x10    /* 4G Segment Selector Offset 10-13h */\r
-\r
-#define PERIODICLISTBASE  0x14    /* Frame List Base Address Offset 14-17h */\r
-\r
-#define ASYNCLISTADDR     0x18    /* Next Asynchronous List Address Offset 18-1bh */\r
-\r
-#define CONFIGFLAG        0x40    /* Configured Flag Register Offset 40-43h */\r
-#define CONFIGFLAG_CF     0x01    /* Configure Flag */\r
-\r
-#define PORTSC            0x44    /* Port Status/Control Offset 44-47h */\r
-#define PORTSC_CCS        0x01    /* Current Connect Status*/\r
-#define PORTSC_CSC        0x02    /* Connect Status Change */\r
-#define PORTSC_PED        0x04    /* Port Enable / Disable */\r
-#define PORTSC_PEDC       0x08    /* Port Enable / Disable Change */\r
-#define PORTSC_OCA        0x10    /* Over current Active */\r
-#define PORTSC_OCC        0x20    /* Over current Change */\r
-#define PORTSC_FPR        0x40    /* Force Port Resume */\r
-#define PORTSC_SUSP       0x80    /* Port Suspend State */\r
-#define PORTSC_PR         0x100   /* Port Reset */\r
-#define PORTSC_LS_KSTATE  0x400   /* Line Status K-state */\r
-#define PORTSC_LS_JSTATE  0x800   /* Line Status J-state */\r
-#define PORTSC_PP         0x1000  /* Port Power */\r
-#define PORTSC_PO         0x2000  /* Port Owner */\r
-\r
-#define CAPLENGTH         0       /* Capability Register Length 00h */\r
-\r
-#define HCIVERSION        0x02    /* Interface Version Number  02-03h */\r
-\r
-#define HCSPARAMS         0x04    /* Structural Parameters 04-07h */\r
-#define HCSP_NPORTS       0x0f    /* Number of physical downstream ports on host controller */\r
-\r
-#define HCCPARAMS         0x08    /* Capability Parameters 08-0bh */\r
-#define HCCP_64BIT        0x01    /* 64-bit Addressing Capability */\r
-#define HCCP_PFLF         0x02    /* Programmable Frame List Flag */\r
-#define HCCP_EECP         0xff00  /* EHCI Extemded Capabilities Pointer */\r
-\r
-#define HCSPPORTROUTE     0x0c    /* Companion Port Route Description 60b */\r
-\r
-#define CLASSC            0x09    /* Class Code 09-0bh */\r
-\r
-#define USBBASE           0x10    /* Base Address to Memory-mapped Host Controller Register Space 10-13h */\r
-\r
-#define SBRN              0x60    /* Serial Bus Release Number 60h */\r
-\r
-#define FLADJ             0x61    /* Frame Length Adjustment Register 61h */\r
-\r
-#define PORTWAKECAP       0x62    /* Port wake capablilities register(OPIONAL)  61-62h */\r
-\r
-//\r
-// PCI Configuration Registers\r
-//\r
-#define EHCI_PCI_CLASSC         0x09\r
-#define EHCI_PCI_MEMORY_BASE    0x10\r
-\r
-//\r
-// Memory Offset Registers\r
-//\r
-#define EHCI_MEMORY_CAPLENGTH   0x0\r
-#define EHCI_MEMORY_CONFIGFLAG  0x40\r
-\r
-//\r
-// USB Base Class Code,Sub-Class Code and Programming Interface\r
-//\r
-#define PCI_CLASSC_PI_EHCI      PCI_IF_EHCI\r
-\r
-#define SETUP_PACKET_ID         0x2D\r
-#define INPUT_PACKET_ID         0x69\r
-#define OUTPUT_PACKET_ID        0xE1\r
-#define ERROR_PACKET_ID         0x55\r
-\r
-#define bit(a)                  (1 << (a))\r
-\r
-#define GET_0B_TO_31B(Addr)     (((UINTN) Addr) & (0xffffffff))\r
-#define GET_32B_TO_63B(Addr)    ((UINTN)RShiftU64((UINTN) Addr, 32) & (0xffffffff))\r
-\r
-\r
-//\r
-// Ehci Data and Ctrl Structures\r
-//\r
-#pragma pack(1)\r
-\r
-typedef struct {\r
-  UINT8 PI;\r
-  UINT8 SubClassCode;\r
-  UINT8 BaseCode;\r
-} USB_CLASSC;\r
-\r
-//\r
-//32 Bytes Aligned\r
-//\r
-typedef struct {\r
-  UINT32  NextQtdTerminate : 1;\r
-  UINT32  Rsvd1 : 4;\r
-  UINT32  NextQtdPointer : 27;\r
-\r
-  UINT32  AltNextQtdTerminate : 1;\r
-  UINT32  Rsvd2 : 4;\r
-  UINT32  AltNextQtdPointer : 27;\r
-\r
-  UINT32  Status : 8;\r
-  UINT32  PidCode : 2;\r
-  UINT32  ErrorCount : 2;\r
-  UINT32  CurrentPage : 3;\r
-  UINT32  InterruptOnComplete : 1;\r
-  UINT32  TotalBytes : 15;\r
-  UINT32  DataToggle : 1;\r
-\r
-  UINT32  CurrentOffset : 12;\r
-  UINT32  BufferPointer0 : 20;\r
-\r
-  UINT32  Rsvd3 : 12;\r
-  UINT32  BufferPointer1 : 20;\r
-\r
-  UINT32  Rsvd4 : 12;\r
-  UINT32  BufferPointer2 : 20;\r
-\r
-  UINT32  Rsvd5 : 12;\r
-  UINT32  BufferPointer3 : 20;\r
-\r
-  UINT32  Rsvd6 : 12;\r
-  UINT32  BufferPointer4 : 20;\r
-\r
-  UINT32  PAD[5];\r
-} EHCI_QTD_HW;\r
-\r
-//\r
-//32 Bytes Aligned\r
-//\r
-typedef struct {\r
-  UINT32  QhTerminate : 1;\r
-  UINT32  SelectType : 2;\r
-  UINT32  Rsvd1 : 2;\r
-  UINT32  QhHorizontalPointer : 27;\r
-\r
-  UINT32  DeviceAddr : 7;\r
-  UINT32  Inactive : 1;\r
-  UINT32  EndpointNum : 4;\r
-  UINT32  EndpointSpeed : 2;\r
-  UINT32  DataToggleControl : 1;\r
-  UINT32  HeadReclamationFlag : 1;\r
-  UINT32  MaxPacketLen : 11;\r
-  UINT32  ControlEndpointFlag : 1;\r
-  UINT32  NakCountReload : 4;\r
-\r
-  UINT32  InerruptScheduleMask : 8;\r
-  UINT32  SplitComletionMask : 8;\r
-  UINT32  HubAddr : 7;\r
-  UINT32  PortNum : 7;\r
-  UINT32  Multiplier : 2;\r
-\r
-  UINT32  Rsvd2 : 5;\r
-  UINT32  CurrentQtdPointer : 27;\r
-\r
-  UINT32  NextQtdTerminate : 1;\r
-  UINT32  Rsvd3 : 4;\r
-  UINT32  NextQtdPointer : 27;\r
-\r
-  UINT32  AltNextQtdTerminate : 1;\r
-  UINT32  NakCount : 4;\r
-  UINT32  AltNextQtdPointer : 27;\r
-\r
-  UINT32  Status : 8;\r
-  UINT32  PidCode : 2;\r
-  UINT32  ErrorCount : 2;\r
-  UINT32  CurrentPage : 3;\r
-  UINT32  InterruptOnComplete : 1;\r
-  UINT32  TotalBytes : 15;\r
-  UINT32  DataToggle : 1;\r
-\r
-  UINT32  CurrentOffset : 12;\r
-  UINT32  BufferPointer0 : 20;\r
-\r
-  UINT32  CompleteSplitMask : 8;\r
-  UINT32  Rsvd4 : 4;\r
-  UINT32  BufferPointer1 : 20;\r
-\r
-  UINT32  FrameTag : 5;\r
-  UINT32  SplitBytes : 7;\r
-  UINT32  BufferPointer2 : 20;\r
-\r
-  UINT32  Rsvd5 : 12;\r
-  UINT32  BufferPointer3 : 20;\r
-\r
-  UINT32  Rsvd6 : 12;\r
-  UINT32  BufferPointer4 : 20;\r
-\r
-  UINT32  Pad[5];\r
-} EHCI_QH_HW;\r
-\r
-typedef struct {\r
-  UINT32  LinkTerminate : 1;\r
-  UINT32  SelectType : 2;\r
-  UINT32  Rsvd : 2;\r
-  UINT32  LinkPointer : 27;\r
-} FRAME_LIST_ENTRY;\r
-\r
-#pragma pack()\r
-\r
-typedef struct _EHCI_QTD_ENTITY     EHCI_QTD_ENTITY;\r
-typedef struct _EHCI_QH_ENTITY      EHCI_QH_ENTITY;\r
-typedef struct _EHCI_ASYNC_REQUEST  EHCI_ASYNC_REQUEST;\r
-//\r
-//Aligan On 32 Bytes\r
-//\r
-struct _EHCI_QTD_ENTITY {\r
-  EHCI_QTD_HW     Qtd;\r
-  UINT32          TotalBytes;\r
-  UINT32          StaticTotalBytes;\r
-  UINT32          StaticCurrentOffset;\r
-  EHCI_QTD_ENTITY *Prev;\r
-  EHCI_QTD_ENTITY *Next;\r
-  EHCI_QTD_ENTITY *AltNext;\r
-  EHCI_QH_ENTITY  *SelfQh;\r
-};\r
-//\r
-//Aligan On 32 Bytes\r
-//\r
-struct _EHCI_QH_ENTITY {\r
-  EHCI_QH_HW      Qh;\r
-  EHCI_QH_ENTITY  *Next;\r
-  EHCI_QH_ENTITY  *Prev;\r
-  EHCI_QTD_ENTITY *FirstQtdPtr;\r
-  EHCI_QTD_ENTITY *LastQtdPtr;\r
-  EHCI_QTD_ENTITY *AltQtdPtr;\r
-  UINTN           Interval;\r
-  UINT8           TransferType;\r
-};\r
-\r
-#define GET_QH_ENTITY_ADDR(a)   ((EHCI_QH_ENTITY *) a)\r
-#define GET_QTD_ENTITY_ADDR(a)  ((EHCI_QTD_ENTITY *) a)\r
-\r
-\r
-//\r
-// Ehci Managment Structures\r
-//\r
-#define USB2_HC_DEV_FROM_THIS(a)  CR (a, USB2_HC_DEV, Usb2Hc, USB2_HC_DEV_SIGNATURE)\r
-\r
-#define USB2_HC_DEV_SIGNATURE     EFI_SIGNATURE_32 ('e', 'h', 'c', 'i')\r
-\r
-struct _EHCI_ASYNC_REQUEST {\r
-  UINT8                           TransferType;\r
-  EFI_ASYNC_USB_TRANSFER_CALLBACK CallBackFunc;\r
-  VOID                            *Context;\r
-  EHCI_ASYNC_REQUEST              *Prev;\r
-  EHCI_ASYNC_REQUEST              *Next;\r
-  EHCI_QH_ENTITY                  *QhPtr;\r
-};\r
-\r
-typedef struct _MEMORY_MANAGE_HEADER {\r
-  UINT8                         *BitArrayPtr;\r
-  UINTN                         BitArraySizeInBytes;\r
-  UINT8                         *MemoryBlockPtr;\r
-  UINTN                         MemoryBlockSizeInBytes;\r
-  VOID                          *Mapping;\r
-  struct _MEMORY_MANAGE_HEADER  *Next;\r
-} MEMORY_MANAGE_HEADER;\r
-\r
-typedef struct _USB2_HC_DEV {\r
-  UINTN                     Signature;\r
-  EFI_PCI_IO_PROTOCOL       *PciIo;\r
-  EFI_USB2_HC_PROTOCOL      Usb2Hc;\r
-  UINTN                     PeriodicFrameListLength;\r
-  VOID                      *PeriodicFrameListBuffer;\r
-  VOID                      *PeriodicFrameListMap;\r
-  VOID                      *AsyncList;\r
-  EHCI_ASYNC_REQUEST        *AsyncRequestList;\r
-  EFI_EVENT                 AsyncRequestEvent;\r
-  EFI_UNICODE_STRING_TABLE  *ControllerNameTable;\r
-  MEMORY_MANAGE_HEADER      *MemoryHeader;\r
-  UINT8                     Is64BitCapable;\r
-  UINT32                    High32BitAddr;\r
-  EHCI_QH_ENTITY            *NULLQH;\r
-  UINT32                    UsbCapabilityLen;\r
-  UINT16                    DeviceSpeed[16];\r
-} USB2_HC_DEV;\r
-\r
-\r
-//\r
-// Prototypes\r
-// Driver model protocol interface\r
-//\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-EhciDriverBindingSupported (\r
-  IN EFI_DRIVER_BINDING_PROTOCOL     *This,\r
-  IN EFI_HANDLE                      Controller,\r
-  IN EFI_DEVICE_PATH_PROTOCOL        *RemainingDevicePath\r
-  );\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-EhciDriverBindingStart (\r
-  IN EFI_DRIVER_BINDING_PROTOCOL     *This,\r
-  IN EFI_HANDLE                      Controller,\r
-  IN EFI_DEVICE_PATH_PROTOCOL        *RemainingDevicePath\r
-  );\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-EhciDriverBindingStop (\r
-  IN  EFI_DRIVER_BINDING_PROTOCOL     *This,\r
-  IN  EFI_HANDLE                      Controller,\r
-  IN  UINTN                           NumberOfChildren,\r
-  IN  EFI_HANDLE                      *ChildHandleBuffer\r
-  );\r
-\r
-//\r
-// Ehci protocol interface\r
-//\r
-EFI_STATUS\r
-EFIAPI\r
-EhciGetCapability (\r
-  IN  EFI_USB2_HC_PROTOCOL   *This,\r
-  OUT UINT8                  *MaxSpeed,\r
-  OUT UINT8                  *PortNumber,\r
-  OUT UINT8                  *Is64BitCapable\r
-  );\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-EhciReset (\r
-  IN  EFI_USB2_HC_PROTOCOL     *This,\r
-  IN  UINT16                   Attributes\r
-  );\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-EhciGetState (\r
-  IN  EFI_USB2_HC_PROTOCOL     *This,\r
-  OUT EFI_USB_HC_STATE         *State\r
-  );\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-EhciSetState (\r
-  IN  EFI_USB2_HC_PROTOCOL     *This,\r
-  IN  EFI_USB_HC_STATE         State\r
-  );\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-EhciControlTransfer (\r
-  IN  EFI_USB2_HC_PROTOCOL                 *This,\r
-  IN  UINT8                                DeviceAddress,\r
-  IN  UINT8                                DeviceSpeed,\r
-  IN  UINTN                                MaximumPacketLength,\r
-  IN  EFI_USB_DEVICE_REQUEST               *Request,\r
-  IN  EFI_USB_DATA_DIRECTION               TransferDirection,\r
-  IN  OUT VOID                             *Data,\r
-  IN  OUT UINTN                            *DataLength,\r
-  IN  UINTN                                TimeOut,\r
-  IN  EFI_USB2_HC_TRANSACTION_TRANSLATOR   *Translator,\r
-  OUT UINT32                               *TransferResult\r
-  );\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-EhciBulkTransfer (\r
-  IN  EFI_USB2_HC_PROTOCOL                *This,\r
-  IN  UINT8                               DeviceAddress,\r
-  IN  UINT8                               EndPointAddress,\r
-  IN  UINT8                               DeviceSpeed,\r
-  IN  UINTN                               MaximumPacketLength,\r
-  IN  UINT8                               DataBuffersNumber,\r
-  IN  OUT VOID                            *Data[EFI_USB_MAX_BULK_BUFFER_NUM],\r
-  IN  OUT UINTN                           *DataLength,\r
-  IN  OUT UINT8                           *DataToggle,\r
-  IN  UINTN                               TimeOut,\r
-  IN  EFI_USB2_HC_TRANSACTION_TRANSLATOR  *Translator,\r
-  OUT UINT32                              *TransferResult\r
-  );\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-EhciAsyncInterruptTransfer (\r
-  IN  EFI_USB2_HC_PROTOCOL                  * This,\r
-  IN  UINT8                                 DeviceAddress,\r
-  IN  UINT8                                 EndPointAddress,\r
-  IN  UINT8                                 DeviceSpeed,\r
-  IN  UINTN                                 MaxiumPacketLength,\r
-  IN  BOOLEAN                               IsNewTransfer,\r
-  IN  OUT UINT8                             *DataToggle,\r
-  IN  UINTN                                 PollingInterval,\r
-  IN  UINTN                                 DataLength,\r
-  IN  EFI_USB2_HC_TRANSACTION_TRANSLATOR    *Translator,\r
-  IN  EFI_ASYNC_USB_TRANSFER_CALLBACK       CallBackFunction,\r
-  IN  VOID                                  *Context OPTIONAL\r
-  );\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-EhciSyncInterruptTransfer (\r
-  IN  EFI_USB2_HC_PROTOCOL                  *This,\r
-  IN  UINT8                                 DeviceAddress,\r
-  IN  UINT8                                 EndPointAddress,\r
-  IN  UINT8                                 DeviceSpeed,\r
-  IN  UINTN                                 MaximumPacketLength,\r
-  IN  OUT VOID                              *Data,\r
-  IN  OUT UINTN                             *DataLength,\r
-  IN  OUT UINT8                             *DataToggle,\r
-  IN  UINTN                                 TimeOut,\r
-  IN  EFI_USB2_HC_TRANSACTION_TRANSLATOR    *Translator,\r
-  OUT UINT32                                *TransferResult\r
-  );\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-EhciIsochronousTransfer (\r
-  IN  EFI_USB2_HC_PROTOCOL                  *This,\r
-  IN  UINT8                                 DeviceAddress,\r
-  IN  UINT8                                 EndPointAddress,\r
-  IN  UINT8                                 DeviceSpeed,\r
-  IN  UINTN                                 MaximumPacketLength,\r
-  IN  UINT8                                 DataBuffersNumber,\r
-  IN  OUT VOID                              *Data[EFI_USB_MAX_ISO_BUFFER_NUM],\r
-  IN  UINTN                                 DataLength,\r
-  IN  EFI_USB2_HC_TRANSACTION_TRANSLATOR    *Translator,\r
-  OUT UINT32                                *TransferResult\r
-  );\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-EhciAsyncIsochronousTransfer (\r
-  IN  EFI_USB2_HC_PROTOCOL                *This,\r
-  IN  UINT8                               DeviceAddress,\r
-  IN  UINT8                               EndPointAddress,\r
-  IN  UINT8                               DeviceSpeed,\r
-  IN  UINTN                               MaximumPacketLength,\r
-  IN  UINT8                               DataBuffersNumber,\r
-  IN  OUT VOID                            *Data[EFI_USB_MAX_ISO_BUFFER_NUM],\r
-  IN  UINTN                               DataLength,\r
-  IN  EFI_USB2_HC_TRANSACTION_TRANSLATOR  *Translator,\r
-  IN  EFI_ASYNC_USB_TRANSFER_CALLBACK     IsochronousCallBack,\r
-  IN  VOID                                *Context\r
-  );\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-EhciGetRootHubPortStatus (\r
-  IN  EFI_USB2_HC_PROTOCOL     *This,\r
-  IN  UINT8                    PortNumber,\r
-  OUT EFI_USB_PORT_STATUS      *PortStatus\r
-  );\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-EhciSetRootHubPortFeature (\r
-  IN  EFI_USB2_HC_PROTOCOL     *This,\r
-  IN  UINT8                    PortNumber,\r
-  IN  EFI_USB_PORT_FEATURE     PortFeature\r
-  );\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-EhciClearRootHubPortFeature (\r
-  IN  EFI_USB2_HC_PROTOCOL     *This,\r
-  IN  UINT8                    PortNumber,\r
-  IN  EFI_USB_PORT_FEATURE     PortFeature\r
-  );\r
-\r
-//\r
-// EFI Component Name Functions\r
-//\r
-EFI_STATUS\r
-EFIAPI\r
-EhciComponentNameGetDriverName (\r
-  IN  EFI_COMPONENT_NAME_PROTOCOL     *This,\r
-  IN  CHAR8                           *Language,\r
-  OUT CHAR16                          **DriverName\r
-  );\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-EhciComponentNameGetControllerName (\r
-  IN  EFI_COMPONENT_NAME_PROTOCOL     *This,\r
-  IN  EFI_HANDLE                      ControllerHandle,\r
-  IN  EFI_HANDLE                      ChildHandle, OPTIONAL\r
-  IN  CHAR8                           *Language,\r
-  OUT CHAR16                          **ControllerName\r
-  );\r
-\r
-//\r
-// Internal Functions Declaration\r
-//\r
-\r
-//\r
-// EhciMem Functions\r
-//\r
-EFI_STATUS\r
-CreateMemoryBlock (\r
-  IN  USB2_HC_DEV               *HcDev,\r
-  OUT MEMORY_MANAGE_HEADER      **MemoryHeader,\r
-  IN  UINTN                     MemoryBlockSizeInPages\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Use PciIo->AllocateBuffer to allocate common buffer for the memory block,\r
-  and use PciIo->Map to map the common buffer for Bus Master Read/Write.\r
-\r
-Arguments:\r
-\r
-  HcDev                  - USB2_HC_DEV\r
-  MemoryHeader           - MEMORY_MANAGE_HEADER to output\r
-  MemoryBlockSizeInPages - MemoryBlockSizeInPages\r
-\r
-Returns:\r
-\r
-  EFI_SUCCESS           Success\r
-  EFI_OUT_OF_RESOURCES  Fail for no resources\r
-  EFI_UNSUPPORTED       Unsupported currently\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-FreeMemoryHeader (\r
-  IN USB2_HC_DEV               *HcDev,\r
-  IN MEMORY_MANAGE_HEADER      *MemoryHeader\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Free Memory Header\r
-\r
-Arguments:\r
-\r
-  HcDev         - USB2_HC_DEV\r
-  MemoryHeader  - MemoryHeader to be freed\r
-\r
-Returns:\r
-\r
-  EFI_SUCCESS            Success\r
-  EFI_INVALID_PARAMETER  Parameter is error\r
-\r
---*/\r
-;\r
-\r
-VOID\r
-InsertMemoryHeaderToList (\r
-  IN MEMORY_MANAGE_HEADER     *MemoryHeader,\r
-  IN MEMORY_MANAGE_HEADER     *NewMemoryHeader\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Insert Memory Header To List\r
-\r
-Arguments:\r
-\r
-  MemoryHeader    - MEMORY_MANAGE_HEADER\r
-  NewMemoryHeader - MEMORY_MANAGE_HEADER\r
-\r
-Returns:\r
-\r
-  VOID\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-AllocMemInMemoryBlock (\r
-  IN  MEMORY_MANAGE_HEADER     *MemoryHeader,\r
-  OUT VOID                     **Pool,\r
-  IN  UINTN                    NumberOfMemoryUnit\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Alloc Memory In MemoryBlock\r
-\r
-Arguments:\r
-\r
-  MemoryHeader        - MEMORY_MANAGE_HEADER\r
-  Pool                - Place to store pointer to memory\r
-  NumberOfMemoryUnit  - Number Of Memory Unit\r
-\r
-Returns:\r
-\r
-  EFI_SUCCESS    Success\r
-  EFI_NOT_FOUND  Can't find the free memory\r
-\r
---*/\r
-;\r
-\r
-BOOLEAN\r
-IsMemoryBlockEmptied (\r
-  IN MEMORY_MANAGE_HEADER     *MemoryHeaderPtr\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Is Memory Block Emptied\r
-\r
-Arguments:\r
-\r
-  MemoryHeaderPtr - MEMORY_MANAGE_HEADER\r
-\r
-Returns:\r
-\r
-  TRUE    Empty\r
-  FALSE   Not Empty\r
-\r
---*/\r
-;\r
-\r
-VOID\r
-DelinkMemoryBlock (\r
-  IN MEMORY_MANAGE_HEADER     *FirstMemoryHeader,\r
-  IN MEMORY_MANAGE_HEADER     *NeedFreeMemoryHeader\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Delink Memory Block\r
-\r
-Arguments:\r
-\r
-  FirstMemoryHeader     - MEMORY_MANAGE_HEADER\r
-  NeedFreeMemoryHeader  - MEMORY_MANAGE_HEADER\r
-\r
-Returns:\r
-\r
-  VOID\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-InitialMemoryManagement (\r
-  IN USB2_HC_DEV     *HcDev\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Initialize Memory Management\r
-\r
-Arguments:\r
-\r
-  HcDev - USB2_HC_DEV\r
-\r
-Returns:\r
-\r
-  EFI_SUCCESS        Success\r
-  EFI_DEVICE_ERROR   Fail\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-DeinitialMemoryManagement (\r
-  IN USB2_HC_DEV     *HcDev\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Deinitialize Memory Management\r
-\r
-Arguments:\r
-\r
-  HcDev - USB2_HC_DEV\r
-\r
-Returns:\r
-\r
-  EFI_SUCCESS        Success\r
-  EFI_DEVICE_ERROR   Fail\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-EhciAllocatePool (\r
-  IN  USB2_HC_DEV     *HcDev,\r
-  OUT UINT8           **Pool,\r
-  IN  UINTN           AllocSize\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Ehci Allocate Pool\r
-\r
-Arguments:\r
-\r
-  HcDev     - USB2_HC_DEV\r
-  Pool      - Place to store pointer to the memory buffer\r
-  AllocSize - Alloc Size\r
-\r
-Returns:\r
-\r
-  EFI_SUCCESS        Success\r
-  EFI_DEVICE_ERROR   Fail\r
-\r
---*/\r
-;\r
-\r
-VOID\r
-EhciFreePool (\r
-  IN USB2_HC_DEV     *HcDev,\r
-  IN UINT8           *Pool,\r
-  IN UINTN           AllocSize\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Uhci Free Pool\r
-\r
-Arguments:\r
-\r
-  HcDev     - USB_HC_DEV\r
-  Pool      - Pool to free\r
-  AllocSize - Pool size\r
-\r
-Returns:\r
-\r
-  VOID\r
-\r
---*/\r
-;\r
-\r
-//\r
-// EhciReg Functions\r
-//\r
-EFI_STATUS\r
-ReadEhcCapabiltiyReg (\r
-  IN USB2_HC_DEV             *HcDev,\r
-  IN UINT32                  CapabiltiyRegAddr,\r
-  IN OUT UINT32              *Data\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Read  Ehc Capabitlity register\r
-\r
-Arguments:\r
-\r
-  HcDev             - USB2_HC_DEV\r
-  CapabiltiyRegAddr - Ehc Capability register address\r
-  Data              - A pointer to data read from register\r
-\r
-Returns:\r
-\r
-  EFI_SUCCESS        Success\r
-  EFI_DEVICE_ERROR   Fail\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-ReadEhcOperationalReg (\r
-  IN USB2_HC_DEV             *HcDev,\r
-  IN UINT32                  OperationalRegAddr,\r
-  IN OUT UINT32              *Data\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Read  Ehc Operation register\r
-\r
-Arguments:\r
-\r
-  HcDev                - USB2_HC_DEV\r
-  OperationalRegAddr   - Ehc Operation register address\r
-  Data                 - A pointer to data read from register\r
-\r
-Returns:\r
-\r
-  EFI_SUCCESS        Success\r
-  EFI_DEVICE_ERROR   Fail\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-WriteEhcOperationalReg (\r
-  IN USB2_HC_DEV             *HcDev,\r
-  IN UINT32                  OperationalRegAddr,\r
-  IN UINT32                  Data\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Write  Ehc Operation register\r
-\r
-Arguments:\r
-\r
-  HcDev                - USB2_HC_DEV\r
-  OperationalRegAddr   - Ehc Operation register address\r
-  Data                 - 32bit write to register\r
-\r
-Returns:\r
-\r
-  EFI_SUCCESS        Success\r
-  EFI_DEVICE_ERROR   Fail\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-SetEhcDoorbell (\r
-  IN  USB2_HC_DEV     *HcDev\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Set Ehc door bell bit\r
-\r
-Arguments:\r
-\r
-  HcDev - USB2_HC_DEV\r
-\r
-Returns:\r
-\r
-  EFI_SUCCESS       Success\r
-  EFI_DEVICE_ERROR  Fail\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-SetFrameListLen (\r
-  IN USB2_HC_DEV     *HcDev,\r
-  IN UINTN           Length\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Set the length of Frame List\r
-\r
-Arguments:\r
-\r
-  HcDev    - USB2_HC_DEV\r
-  Length   - the required length of frame list\r
-\r
-Returns:\r
-\r
-  EFI_SUCCESS            Success\r
-  EFI_INVALID_PARAMETER  Invalid parameter\r
-  EFI_DEVICE_ERROR       Fail\r
-\r
---*/\r
-;\r
-\r
-BOOLEAN\r
-IsFrameListProgrammable (\r
-  IN  USB2_HC_DEV     *HcDev\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Whether frame list is programmable\r
-\r
-Arguments:\r
-\r
-  HcDev - USB2_HC_DEV\r
-\r
-Returns:\r
-\r
-  TRUE   Programmable\r
-  FALSE  Unprogrammable\r
-\r
---*/\r
-;\r
-\r
-BOOLEAN\r
-IsPeriodicScheduleEnabled (\r
-  IN  USB2_HC_DEV     *HcDev\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Whether periodic schedule is enabled\r
-\r
-Arguments:\r
-\r
-  HcDev - USB2_HC_DEV\r
-\r
-Returns:\r
-\r
-  TRUE   Enabled\r
-  FALSE  Disabled\r
-\r
---*/\r
-;\r
-\r
-BOOLEAN\r
-IsAsyncScheduleEnabled (\r
-  IN  USB2_HC_DEV     *HcDev\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Whether asynchronous schedule is enabled\r
-\r
-Arguments:\r
-\r
-  HcDev - USB2_HC_DEV\r
-\r
-Returns:\r
-\r
-  TRUE   Enabled\r
-  FALSE  Disabled\r
-\r
---*/\r
-;\r
-\r
-BOOLEAN\r
-IsEhcPortEnabled (\r
-  IN  USB2_HC_DEV     *HcDev,\r
-  IN  UINT8           PortNum\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Whether port is enabled\r
-\r
-Arguments:\r
-\r
-  HcDev - USB2_HC_DEV\r
-\r
-Returns:\r
-\r
-  TRUE   Enabled\r
-  FALSE  Disabled\r
-\r
---*/\r
-;\r
-\r
-BOOLEAN\r
-IsEhcReseted (\r
-  IN  USB2_HC_DEV     *HcDev\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Whether Ehc is halted\r
-\r
-Arguments:\r
-\r
-  HcDev - USB2_HC_DEV\r
-\r
-Returns:\r
-\r
-  TRUE   Reseted\r
-  FALSE  Unreseted\r
-\r
---*/\r
-;\r
-\r
-BOOLEAN\r
-IsEhcHalted (\r
-  IN  USB2_HC_DEV     *HcDev\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Whether Ehc is halted\r
-\r
-Arguments:\r
-\r
-  HcDev  - USB2_HC_DEV\r
-\r
-Returns:\r
-\r
-  TRUE   Halted\r
-  FALSE  Not halted\r
-\r
---*/\r
-;\r
-\r
-BOOLEAN\r
-IsEhcSysError (\r
-  IN  USB2_HC_DEV     *HcDev\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Whether Ehc is system error\r
-\r
-Arguments:\r
-\r
-  HcDev  - USB2_HC_DEV\r
-\r
-Returns:\r
-\r
-  TRUE   System error\r
-  FALSE  No system error\r
-\r
---*/\r
-;\r
-\r
-BOOLEAN\r
-IsHighSpeedDevice (\r
-  IN EFI_USB2_HC_PROTOCOL *This,\r
-  IN UINT8                PortNum\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Whether high speed device attached\r
-\r
-Arguments:\r
-\r
-  HcDev - USB2_HC_DEV\r
-\r
-Returns:\r
-\r
-  TRUE   High speed\r
-  FALSE  Full speed\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-WaitForEhcReset (\r
-  IN USB2_HC_DEV             *HcDev,\r
-  IN UINTN                   Timeout\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  wait for Ehc reset or timeout\r
-\r
-Arguments:\r
-\r
-  HcDev   - USB2_HC_DEV\r
-  Timeout - timeout threshold\r
-\r
-Returns:\r
-\r
-  EFI_SUCCESS    Success\r
-  EFI_TIMEOUT    Timeout\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-WaitForEhcHalt (\r
-  IN USB2_HC_DEV             *HcDev,\r
-  IN UINTN                   Timeout\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  wait for Ehc halt or timeout\r
-\r
-Arguments:\r
-\r
-  HcDev   - USB2_HC_DEV\r
-  Timeout - timeout threshold\r
-\r
-Returns:\r
-\r
-  EFI_SUCCESS    Success\r
-  EFI_TIMEOUT    Timeout\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-WaitForEhcNotHalt (\r
-  IN USB2_HC_DEV             *HcDev,\r
-  IN UINTN                   Timeout\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  wait for Ehc not halt or timeout\r
-\r
-Arguments:\r
-\r
-  HcDev   - USB2_HC_DEV\r
-  Timeout - timeout threshold\r
-\r
-Returns:\r
-\r
-  EFI_SUCCESS    Success\r
-  EFI_TIMEOUT    Timeout\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-WaitForEhcDoorbell (\r
-  IN  USB2_HC_DEV            *HcDev,\r
-  IN UINTN                   Timeout\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Wait for periodic schedule disable or timeout\r
-\r
-Arguments:\r
-\r
-  HcDev   - USB2_HC_DEV\r
-  Timeout - timeout threshold\r
-\r
-Returns:\r
-\r
-  EFI_SUCCESS    Success\r
-  EFI_TIMEOUT    Timeout\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-WaitForAsyncScheduleEnable (\r
-  IN USB2_HC_DEV             *HcDev,\r
-  IN UINTN                   Timeout\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Wait for Ehc asynchronous schedule enable or timeout\r
-\r
-Arguments:\r
-\r
-  HcDev   - USB2_HC_DEV\r
-  Timeout - timeout threshold\r
-\r
-Returns:\r
-\r
-  EFI_SUCCESS    Success\r
-  EFI_TIMEOUT    Timeout\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-WaitForAsyncScheduleDisable (\r
-  IN USB2_HC_DEV             *HcDev,\r
-  IN UINTN                   Timeout\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Wait for Ehc asynchronous schedule disable or timeout\r
-\r
-Arguments:\r
-\r
-  HcDev   - USB2_HC_DEV\r
-  Timeout - timeout threshold\r
-\r
-Returns:\r
-\r
-  EFI_SUCCESS    Success\r
-  EFI_TIMEOUT    Timeout\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-WaitForPeriodicScheduleEnable (\r
-  IN USB2_HC_DEV             *HcDev,\r
-  IN UINTN                   Timeout\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Wait for Ehc periodic schedule enable or timeout\r
-\r
-Arguments:\r
-\r
-  HcDev   - USB2_HC_DEV\r
-  Timeout - timeout threshold\r
-\r
-Returns:\r
-\r
-  EFI_SUCCESS    Success\r
-  EFI_TIMEOUT    Timeout\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-WaitForPeriodicScheduleDisable (\r
-  IN USB2_HC_DEV             *HcDev,\r
-  IN UINTN                   Timeout\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Wait for periodic schedule disable or timeout\r
-\r
-Arguments:\r
-\r
-  HcDev   - USB2_HC_DEV\r
-  Timeout - timeout threshold\r
-\r
-Returns:\r
-\r
-  EFI_SUCCESS    Success\r
-  EFI_TIMEOUT    Timeout\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-GetCapabilityLen (\r
-  IN USB2_HC_DEV     *HcDev\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Get the length of capability register\r
-\r
-Arguments:\r
-\r
-  HcDev - USB2_HC_DEV\r
-\r
-Returns:\r
-\r
-  EFI_SUCCESS       Success\r
-  EFI_DEVICE_ERROR  Fail\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-SetFrameListBaseAddr (\r
-  IN USB2_HC_DEV     *HcDev,\r
-  IN UINT32          FrameBuffer\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Set base address of frame list first entry\r
-\r
-Arguments:\r
-\r
-  HcDev       - USB2_HC_DEV\r
-  FrameBuffer - base address of first entry of frame list\r
-\r
-Returns:\r
-\r
-  EFI_SUCCESS       Success\r
-  EFI_DEVICE_ERROR  Fail\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-SetAsyncListAddr (\r
-  IN USB2_HC_DEV        *HcDev,\r
-  IN EHCI_QH_ENTITY     *QhPtr\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Set address of first Async schedule Qh\r
-\r
-Arguments:\r
-\r
-  HcDev    - USB2_HC_DEV\r
-  QhPtr    - A pointer to first Qh in the Async schedule\r
-\r
-Returns:\r
-\r
-  EFI_SUCCESS       Success\r
-  EFI_DEVICE_ERROR  Fail\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-SetCtrlDataStructSeg (\r
-  IN USB2_HC_DEV     *HcDev\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Set address of first Async schedule Qh\r
-\r
-Arguments:\r
-\r
-  HcDev    - USB2_HC_DEV\r
-  QhPtr    - A pointer to first Qh in the Async schedule\r
-\r
-Returns:\r
-\r
-  EFI_SUCCESS       Success\r
-  EFI_DEVICE_ERROR  Fail\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-SetPortRoutingEhc (\r
-  IN USB2_HC_DEV     *HcDev\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Set Ehc port routing bit\r
-\r
-Arguments:\r
-\r
-  HcDev - USB2_HC_DEV\r
-\r
-Returns:\r
-\r
-  EFI_SUCCESS       Success\r
-  EFI_DEVICE_ERROR  Fail\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-EnablePeriodicSchedule (\r
-  IN  USB2_HC_DEV     *HcDev\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Enable periodic schedule\r
-\r
-Arguments:\r
-\r
-  HcDev - USB2_HC_DEV\r
-\r
-Returns:\r
-\r
-  EFI_SUCCESS       Success\r
-  EFI_DEVICE_ERROR  Fail\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-DisablePeriodicSchedule (\r
-  IN  USB2_HC_DEV     *HcDev\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Disable periodic schedule\r
-\r
-Arguments:\r
-\r
-  HcDev - USB2_HC_DEV\r
-\r
-Returns:\r
-\r
-  EFI_SUCCESS       Success\r
-  EFI_DEVICE_ERROR  Fail\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-EnableAsynchronousSchedule (\r
-  IN  USB2_HC_DEV     *HcDev\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Enable asynchrounous schedule\r
-\r
-Arguments:\r
-\r
-  HcDev - USB2_HC_DEV\r
-\r
-Returns:\r\r
-\r
-  EFI_SUCCESS       Success\r
-  EFI_DEVICE_ERROR  Fail\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-DisableAsynchronousSchedule (\r
-  IN  USB2_HC_DEV     *HcDev\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Disable asynchrounous schedule\r
-\r
-Arguments:\r
-\r
-  HcDev - USB2_HC_DEV\r
-\r
-Returns:\r
-\r
-  EFI_SUCCESS       Success\r
-  EFI_DEVICE_ERROR  Fail\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-StartScheduleExecution (\r
-  IN  USB2_HC_DEV     *HcDev\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Start Ehc schedule execution\r
-\r
-Arguments:\r
-\r
-  HcDev - USB2_HC_DEV\r
-\r
-Returns:\r
-\r
-  EFI_SUCCESS       Success\r
-  EFI_DEVICE_ERROR  Fail\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-ResetEhc (\r
-  IN  USB2_HC_DEV     *HcDev\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Reset Ehc\r
-\r
-Arguments:\r
-\r
-  HcDev - USB2_HC_DEV\r
-\r
-Returns:\r
-\r
-  EFI_SUCCESS       Success\r
-  EFI_DEVICE_ERROR  Fail\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-ClearEhcAllStatus (\r
-  IN  USB2_HC_DEV     *HcDev\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Clear Ehc all status bits\r
-\r
-Arguments:\r
-\r
-  HcDev - USB2_HC_DEV\r
-\r
-Returns:\r
-\r
-  EFI_SUCCESS        Success\r
-  EFI_DEVICE_ERROR   Fail\r
-\r
---*/\r
-;\r
-\r
-//\r
-// EhciSched Functions\r
-//\r
-EFI_STATUS\r
-InitialPeriodicFrameList (\r
-  IN USB2_HC_DEV      *HcDev,\r
-  IN UINTN            Length\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Initialize Periodic Schedule Frame List\r
-\r
-Arguments:\r
-\r
-  HcDev   - USB2_HC_DEV\r
-  Length  - Frame List Length\r
-\r
-Returns:\r
-\r
-  EFI_SUCCESS        Success\r
-  EFI_DEVICE_ERROR   Fail\r
-\r
---*/\r
-;\r
-\r
-VOID\r
-DeinitialPeriodicFrameList (\r
-  IN  USB2_HC_DEV     *HcDev\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Deinitialize Periodic Schedule Frame List\r
-\r
-Arguments:\r
-\r
-  HcDev - USB2_HC_DEV\r
-\r
-Returns:\r
-\r
-  VOID\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-CreatePollingTimer (\r
-  IN  USB2_HC_DEV      *HcDev,\r
-  IN  EFI_EVENT_NOTIFY NotifyFunction\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Create Async Request Polling Timer\r
-\r
-Arguments:\r
-\r
-  HcDev          - USB2_HC_DEV\r
-  NotifyFunction - Timer Notify Function\r
-\r
-Returns:\r
-\r
-  EFI_SUCCESS        Success\r
-  EFI_DEVICE_ERROR   Fail\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-DestoryPollingTimer (\r
-  IN  USB2_HC_DEV *HcDev\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Destory Async Request Polling Timer\r
-\r
-Arguments:\r
-\r
-  HcDev - USB2_HC_DEV\r
-\r
-Returns:\r
-\r
-  EFI_SUCCESS        Success\r
-  EFI_DEVICE_ERROR   Fail\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-StartPollingTimer (\r
-  IN  USB2_HC_DEV *HcDev\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Start Async Request Polling Timer\r
-\r
-Arguments:\r
-\r
-  HcDev - USB2_HC_DEV\r
-\r
-Returns:\r
-\r
-  EFI_SUCCESS        Success\r
-  EFI_DEVICE_ERROR   Fail\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-StopPollingTimer (\r
-  IN  USB2_HC_DEV *HcDev\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Stop Async Request Polling Timer\r
-\r
-Arguments:\r
-\r
-  HcDev - USB2_HC_DEV\r
-\r
-Returns:\r
-\r
-  EFI_SUCCESS        Success\r
-  EFI_DEVICE_ERROR   Fail\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-CreateQh (\r
-  IN  USB2_HC_DEV         *HcDev,\r
-  IN  UINT8               DeviceAddr,\r
-  IN  UINT8               Endpoint,\r
-  IN  UINT8               DeviceSpeed,\r
-  IN  UINTN               MaxPacketLen,\r
-  OUT EHCI_QH_ENTITY      **QhPtrPtr\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Create Qh Structure and Pre-Initialize\r
-\r
-Arguments:\r
-\r
-  HcDev          - USB2_HC_DEV\r
-  DeviceAddr     - Address of Device\r
-  Endpoint       - Endpoint Number\r
-  DeviceSpeed    - Device Speed\r
-  MaxPacketLen   - Max Length of one Packet\r
-  QhPtrPtr       - A pointer of pointer to Qh for return\r
-\r
-Returns:\r
-\r
-  EFI_SUCCESS       Success\r
-  EFI_DEVICE_ERROR  Fail\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-CreateControlQh (\r
-  IN  USB2_HC_DEV                       *HcDev,\r
-  IN  UINT8                             DeviceAddr,\r
-  IN  UINT8                             DeviceSpeed,\r
-  IN UINTN                              MaxPacketLen,\r
-  IN EFI_USB2_HC_TRANSACTION_TRANSLATOR *Translator,\r
-  OUT EHCI_QH_ENTITY                    **QhPtrPtr\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Create Qh for Control Transfer\r
-\r
-Arguments:\r
-\r
-  HcDev         - USB2_HC_DEV\r
-  DeviceAddr    - Address of Device\r
-  DeviceSpeed   - Device Speed\r
-  MaxPacketLen  - Max Length of one Packet\r
-  Translator    - Translator Transaction for SplitX\r
-  QhPtrPtr      - A pointer of pointer to Qh for return\r
-\r
-Returns:\r
-\r
-  EFI_SUCCESS       Success\r
-  EFI_DEVICE_ERROR  Fail\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-CreateBulkQh (\r
-  IN  USB2_HC_DEV                         *HcDev,\r
-  IN  UINT8                               DeviceAddr,\r
-  IN  UINT8                               EndPointAddr,\r
-  IN  UINT8                               DeviceSpeed,\r
-  IN  UINT8                               DataToggle,\r
-  IN  UINTN                               MaxPacketLen,\r
-  IN  EFI_USB2_HC_TRANSACTION_TRANSLATOR  *Translator,\r
-  OUT EHCI_QH_ENTITY                      **QhPtrPtr\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Create Qh for Bulk Transfer\r
-\r
-Arguments:\r
-\r
-  HcDev         - USB2_HC_DEV\r
-  DeviceAddr    - Address of Device\r
-  EndPointAddr  - Address of Endpoint\r
-  DeviceSpeed   - Device Speed\r
-  MaxPacketLen  - Max Length of one Packet\r
-  Translator    - Translator Transaction for SplitX\r
-  QhPtrPtr      - A pointer of pointer to Qh for return\r
-\r
-Returns:\r
-\r
-  EFI_SUCCESS       Success\r
-  EFI_DEVICE_ERROR  Fail\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-CreateInterruptQh (\r
-  IN  USB2_HC_DEV                        *HcDev,\r
-  IN  UINT8                              DeviceAddr,\r
-  IN  UINT8                              EndPointAddr,\r
-  IN  UINT8                              DeviceSpeed,\r
-  IN  UINT8                              DataToggle,\r
-  IN  UINTN                              MaxPacketLen,\r
-  IN  UINTN                              Interval,\r
-  IN  EFI_USB2_HC_TRANSACTION_TRANSLATOR *Translator,\r
-  OUT EHCI_QH_ENTITY                     **QhPtrPtr\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Create Qh for Control Transfer\r
-\r
-Arguments:\r
-\r
-  HcDev        - USB2_HC_DEV\r
-  DeviceAddr   - Address of Device\r
-  EndPointAddr - Address of Endpoint\r
-  DeviceSpeed  - Device Speed\r
-  MaxPacketLen - Max Length of one Packet\r
-  Interval     - value of interval\r
-  Translator   - Translator Transaction for SplitX\r
-  QhPtrPtr     - A pointer of pointer to Qh for return\r
-\r
-Returns:\r
-\r
-  EFI_SUCCESS       Success\r
-  EFI_DEVICE_ERROR  Fail\r
-\r
---*/\r
-;\r
-\r
-VOID\r
-DestoryQh (\r
-  IN  USB2_HC_DEV        *HcDev,\r
-  IN EHCI_QH_ENTITY      *QhPtr\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Destory Qh Structure\r
-\r
-Arguments:\r
-\r
-  HcDev - USB2_HC_DEV\r
-  QhPtr - A pointer to Qh\r
-\r
-Returns:\r
-\r
-  VOID\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-CreateQtd (\r
-  IN  USB2_HC_DEV          *HcDev,\r
-  IN  UINT8                *DataPtr,\r
-  IN  UINTN                DataLen,\r
-  IN  UINT8                PktId,\r
-  IN  UINT8                Toggle,\r
-  IN  UINT8                QtdStatus,\r
-  OUT EHCI_QTD_ENTITY      **QtdPtrPtr\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Create Qtd Structure and Pre-Initialize it\r
-\r
-Arguments:\r
-\r
-  HcDev       - USB2_HC_DEV\r
-  DataPtr     - A pointer to user data buffer to transfer\r
-  DataLen     - Length of user data to transfer\r
-  PktId       - Packet Identification of this Qtd\r
-  Toggle      - Data Toggle of this Qtd\r
-  QtdStatus   - Default value of status of this Qtd\r
-  QtdPtrPtr   - A pointer of pointer to Qtd for return\r
-\r
-Returns:\r
-\r
-  EFI_SUCCESS            Success\r
-  EFI_OUT_OF_RESOURCES   Cannot allocate resources\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-CreateSetupQtd (\r
-  IN  USB2_HC_DEV          *HcDev,\r
-  IN  UINT8                *DevReqPtr,\r
-  OUT EHCI_QTD_ENTITY      **QtdPtrPtr\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Create Qtd Structure for Setup\r
-\r
-Arguments:\r
-\r
-  HcDev      - USB2_HC_DEV\r
-  DevReqPtr  - A pointer to Device Request Data\r
-  QtdPtrPtr  - A pointer of pointer to Qtd for return\r
-\r
-Returns:\r
-\r
-  EFI_SUCCESS            Success\r
-  EFI_OUT_OF_RESOURCES   Cannot allocate resources\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-CreateDataQtd (\r
-  IN  USB2_HC_DEV           *HcDev,\r
-  IN  UINT8                 *DataPtr,\r
-  IN  UINTN                 DataLen,\r
-  IN  UINT8                 PktId,\r
-  IN  UINT8                 Toggle,\r
-  OUT EHCI_QTD_ENTITY       **QtdPtrPtr\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Create Qtd Structure for data\r
-\r
-Arguments:\r
-\r
-  HcDev       - USB2_HC_DEV\r
-  DataPtr     - A pointer to user data buffer to transfer\r
-  DataLen     - Length of user data to transfer\r
-  PktId       - Packet Identification of this Qtd\r
-  Toggle      - Data Toggle of this Qtd\r
-  QtdPtrPtr   - A pointer of pointer to Qtd for return\r
-\r
-Returns:\r
-\r
-  EFI_SUCCESS            Success\r
-  EFI_OUT_OF_RESOURCES   Cannot allocate resources\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-CreateStatusQtd (\r
-  IN  USB2_HC_DEV           *HcDev,\r
-  IN  UINT8                 PktId,\r
-  OUT EHCI_QTD_ENTITY       **QtdPtrPtr\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Create Qtd Structure for status\r
-\r
-Arguments:\r
-\r
-  HcDev       - USB2_HC_DEV\r
-  PktId       - Packet Identification of this Qtd\r
-  QtdPtrPtr   - A pointer of pointer to Qtd for return\r
-\r
-Returns:\r
-\r
-  EFI_SUCCESS            Success\r
-  EFI_OUT_OF_RESOURCES   Cannot allocate resources\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-CreateAltQtd (\r
-  IN  USB2_HC_DEV           *HcDev,\r
-  IN  UINT8                 PktId,\r
-  OUT EHCI_QTD_ENTITY       **QtdPtrPtr\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Create Qtd Structure for Alternative\r
-\r
-Arguments:\r
-\r
-  HcDev      - USB2_HC_DEV\r
-  PktId      - Packet Identification of this Qtd\r
-  QtdPtrPtr  - A pointer of pointer to Qtd for return\r
-\r
-Returns:\r
-\r
-  EFI_SUCCESS            Success\r
-  EFI_OUT_OF_RESOURCES   Cannot allocate resources\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-CreateControlQtds (\r
-  IN  USB2_HC_DEV                         *HcDev,\r
-  IN UINT8                                DataPktId,\r
-  IN UINT8                                *RequestCursor,\r
-  IN UINT8                                *DataCursor,\r
-  IN UINTN                                DataLen,\r
-  IN  EFI_USB2_HC_TRANSACTION_TRANSLATOR  *Translator,\r
-  OUT EHCI_QTD_ENTITY                     **ControlQtdsHead\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Create Qtds list for Control Transfer\r
-\r
-Arguments:\r
-\r
-  HcDev           - USB2_HC_DEV\r
-  DataPktId       - Packet Identification of Data Qtds\r
-  RequestCursor   - A pointer to request structure buffer to transfer\r
-  DataCursor      - A pointer to user data buffer to transfer\r
-  DataLen         - Length of user data to transfer\r
-  ControlQtdsHead - A pointer of pointer to first Qtd for control tranfer for return\r
-\r
-Returns:\r
-\r
-  EFI_SUCCESS       Success\r
-  EFI_DEVICE_ERROR  Fail\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-CreateBulkOrInterruptQtds (\r
-  IN  USB2_HC_DEV                          *HcDev,\r
-  IN  UINT8                                PktId,\r
-  IN  UINT8                                *DataCursor,\r
-  IN  UINTN                                DataLen,\r
-  IN  EFI_USB2_HC_TRANSACTION_TRANSLATOR   *Translator,\r
-  OUT EHCI_QTD_ENTITY                      **QtdsHead\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Create Qtds list for Bulk or Interrupt Transfer\r
-\r
-Arguments:\r
-\r
-  HcDev        - USB2_HC_DEV\r
-  PktId        - Packet Identification of Qtds\r
-  DataCursor   - A pointer to user data buffer to transfer\r
-  DataLen      - Length of user data to transfer\r
-  DataToggle   - Data Toggle to start\r
-  Translator   - Translator Transaction for SplitX\r
-  QtdsHead     - A pointer of pointer to first Qtd for control tranfer for return\r
-\r
-Returns:\r
-\r
-  EFI_SUCCESS       Success\r
-  EFI_DEVICE_ERROR  Fail\r
-\r
---*/\r
-;\r
-\r
-VOID\r
-DestoryQtds (\r
-  IN USB2_HC_DEV          *HcDev,\r
-  IN EHCI_QTD_ENTITY      *FirstQtdPtr\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Destory all Qtds in the list\r
-\r
-Arguments:\r
-\r
-  HcDev        - USB2_HC_DEV\r
-  FirstQtdPtr  - A pointer to first Qtd in the list\r
-\r
-Returns:\r
-\r
-  VOID\r
-\r
---*/\r
-;\r
-\r
-VOID\r
-LinkQtdToQtd (\r
-  IN EHCI_QTD_ENTITY     *PreQtdPtr,\r
-  IN EHCI_QTD_ENTITY     *QtdPtr\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Link Qtds together\r
-\r
-Arguments:\r
-\r
-  PreQtdPtr  - A pointer to pre Qtd\r
-  QtdPtr     - A pointer to next Qtd\r
-\r
-Returns:\r
-\r
-  VOID\r
-\r
---*/\r
-;\r
-\r
-VOID\r
-LinkQtdsToAltQtd (\r
-  IN EHCI_QTD_ENTITY     *FirstQtdPtr,\r
-  IN EHCI_QTD_ENTITY     *AltQtdPtr\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Link AlterQtds together\r
-\r
-Arguments:\r
-\r
-  FirstQtdPtr - A pointer to first Qtd in the list\r
-  AltQtdPtr - A pointer to alternative Qtd\r
-\r
-Returns:\r
-  VOID\r
-\r
---*/\r
-;\r
-\r
-VOID\r
-LinkQtdToQh (\r
-  IN EHCI_QH_ENTITY      *QhPtr,\r
-  IN EHCI_QTD_ENTITY     *QtdEntryPtr\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Link Qtds list to Qh\r
-\r
-Arguments:\r
-\r
-  QhPtr   - A pointer to Qh\r
-  QtdPtr  - A pointer to first Qtd in the list\r
-\r
-Returns:\r
-\r
-  VOID\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-LinkQhToAsyncList (\r
-  IN  USB2_HC_DEV       *HcDev,\r
-  IN EHCI_QH_ENTITY     *QhPtr\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Link Qh to Async Schedule List\r
-\r
-Arguments:\r
-\r
-  HcDev - USB2_HC_DEV\r
-  QhPtr - A pointer to Qh\r
-\r
-Returns:\r
-\r
-  EFI_SUCCESS       Success\r
-  EFI_DEVICE_ERROR  Fail\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-UnlinkQhFromAsyncList (\r
-  IN USB2_HC_DEV         *HcDev,\r
-  IN EHCI_QH_ENTITY      *QhPtr\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Unlink Qh from Async Schedule List\r
-\r
-Arguments:\r
-\r
-  HcDev   - USB2_HC_DEV\r
-  QhPtr   - A pointer to Qh\r
-\r
-Returns:\r
-\r
-  EFI_SUCCESS       Success\r
-  EFI_DEVICE_ERROR  Fail\r
-\r
---*/\r
-;\r
-\r
-VOID\r
-LinkQhToPeriodicList (\r
-  IN USB2_HC_DEV        *HcDev,\r
-  IN EHCI_QH_ENTITY     *QhPtr\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Link Qh to Periodic Schedule List\r
-\r
-Arguments:\r
-\r
-  HcDev   - USB2_HC_DEV\r
-  QhPtr   - A pointer to Qh\r
-\r
-Returns:\r
-\r
-  VOID\r
-\r
---*/\r
-;\r
-\r
-VOID\r
-UnlinkQhFromPeriodicList (\r
-  IN USB2_HC_DEV         *HcDev,\r
-  IN EHCI_QH_ENTITY      *QhPtr,\r
-  IN UINTN                Interval\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Unlink Qh from Periodic Schedule List\r
-\r
-Arguments:\r
-\r
-  HcDev     - USB2_HC_DEV\r
-  QhPtr     - A pointer to Qh\r
-  Interval  - Interval of this periodic transfer\r
-\r
-Returns:\r
-\r
-  VOID\r
-\r
---*/\r
-;\r
-\r
-VOID\r
-LinkToAsyncReqeust (\r
-  IN  USB2_HC_DEV        *HcDev,\r
-  IN  EHCI_ASYNC_REQUEST *AsyncRequestPtr\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Llink AsyncRequest Entry to Async Request List\r
-\r
-Arguments:\r
-\r
-  HcDev           - USB2_HC_DEV\r
-  AsyncRequestPtr - A pointer to Async Request Entry\r
-\r
-Returns:\r
-\r
-  VOID\r
-\r
---*/\r
-;\r
-\r
-VOID\r
-UnlinkFromAsyncReqeust (\r
-  IN  USB2_HC_DEV        *HcDev,\r
-  IN  EHCI_ASYNC_REQUEST *AsyncRequestPtr\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Unlink AsyncRequest Entry from Async Request List\r
-\r
-Arguments:\r
-\r
-  HcDev           - USB2_HC_DEV\r
-  AsyncRequestPtr - A pointer to Async Request Entry\r
-\r
-Returns:\r
-\r
-  VOID\r
-\r
---*/\r
-;\r
-\r
-UINTN\r
-GetNumberOfQtd (\r
-  IN EHCI_QTD_ENTITY    *FirstQtdPtr\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Number of Qtds in the list\r
-\r
-Arguments:\r
-\r
-  FirstQtdPtr - A pointer to first Qtd in the list\r
-\r
-Returns:\r
-\r
-  Number of Qtds in the list\r
-\r
---*/\r
-;\r
-\r
-\r
-\r
-UINTN\r
-GetCapacityOfQtd (\r
-  IN UINT8    *BufferCursor\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Get Capacity of Qtd\r
-\r
-Arguments:\r
-\r
-  BufferCursor  - BufferCursor of the Qtd\r
-\r
-Returns:\r
-\r
-  Capacity of Qtd\r
-\r
---*/\r
-;\r
-\r
-UINTN\r
-GetApproxiOfInterval (\r
-  IN UINTN  Interval\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Get the approximate value in the 2 index sequence\r
-\r
-Arguments:\r
-\r
-  Interval - the value of interval\r
-\r
-Returns:\r
-\r
-  approximate value of interval in the 2 index sequence\r
-\r
---*/\r
-;\r
-\r
-EHCI_QTD_HW *\r
-GetQtdNextPointer (\r
-  IN EHCI_QTD_HW *HwQtdPtr\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Get Qtd next pointer field\r
-\r
-Arguments:\r
-\r
-  HwQtdPtr - A pointer to hardware Qtd structure\r
-\r
-Returns:\r
-\r
-  A pointer to next hardware Qtd structure\r
-\r
---*/\r
-;\r
-\r
-BOOLEAN\r
-IsQtdStatusActive (\r
-  IN EHCI_QTD_HW *HwQtdPtr\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Whether Qtd status is active or not\r
-\r
-Arguments:\r
-\r
-  HwQtdPtr - A pointer to hardware Qtd structure\r
-\r
-Returns:\r
-\r
-  TRUE    Active\r
-  FALSE   Inactive\r
-\r
---*/\r
-;\r
-\r
-BOOLEAN\r
-IsQtdStatusHalted (\r
-  IN EHCI_QTD_HW *HwQtdPtr\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Whether Qtd status is halted or not\r
-\r
-Arguments:\r
-\r
-  HwQtdPtr - A pointer to hardware Qtd structure\r
-\r
-Returns:\r\r
-\r
-  TRUE    Halted\r
-  FALSE   Not halted\r
-\r
---*/\r
-;\r
-\r
-BOOLEAN\r
-IsQtdStatusBufferError (\r
-  IN EHCI_QTD_HW *HwQtdPtr\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Whether Qtd status is buffer error or not\r
-\r
-Arguments:\r
-\r
-  HwQtdPtr - A pointer to hardware Qtd structure\r
-\r
-Returns:\r
-\r
-  TRUE    Buffer error\r
-  FALSE   No buffer error\r
-\r
---*/\r
-;\r
-\r
-BOOLEAN\r
-IsQtdStatusBabbleError (\r
-  IN EHCI_QTD_HW *HwQtdPtr\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Whether Qtd status is babble error or not\r
-\r
-Arguments:\r
-\r
-  HwQtdPtr - A pointer to hardware Qtd structure\r
-\r
-Returns:\r
-\r
-  TRUE    Babble error\r
-  FALSE   No babble error\r
-\r
---*/\r
-;\r
-\r
-BOOLEAN\r
-IsQtdStatusTransactionError (\r
-  IN EHCI_QTD_HW *HwQtdPtr\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Whether Qtd status is transaction error or not\r
-\r
-Arguments:\r
-\r
-  HwQtdPtr - A pointer to hardware Qtd structure\r
-\r
-Returns:\r
-\r
-  TRUE    Transaction error\r
-  FALSE   No transaction error\r
-\r
---*/\r
-;\r
-\r
-BOOLEAN\r
-IsDataInTransfer (\r
-  IN  UINT8     EndPointAddress\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Whether is a DataIn direction transfer\r
-\r
-Arguments:\r
-\r
-  EndPointAddress - address of the endpoint\r
-\r
-Returns:\r
-\r
-  TRUE    DataIn\r
-  FALSE   DataOut\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-MapDataBuffer (\r
-  IN  USB2_HC_DEV             *HcDev,\r
-  IN  EFI_USB_DATA_DIRECTION  TransferDirection,\r
-  IN  OUT VOID                *Data,\r
-  IN  OUT UINTN               *DataLength,\r
-  OUT UINT8                   *PktId,\r
-  OUT UINT8                   **DataCursor,\r
-  OUT VOID                    **DataMap\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Map address of user data buffer\r
-\r
-Arguments:\r
-\r
-  HcDev             - USB2_HC_DEV\r
-  TransferDirection - direction of transfer\r
-  Data              - A pointer to user data buffer\r
-  DataLength        - length of user data\r
-  PktId             - Packte Identificaion\r
-  DataCursor        - mapped address to return\r
-  DataMap           - identificaion of this mapping to return\r
-\r
-Returns:\r
-\r
-  EFI_SUCCESS        Success\r
-  EFI_DEVICE_ERROR   Fail\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-MapRequestBuffer (\r
-  IN  USB2_HC_DEV             *HcDev,\r
-  IN  OUT VOID                *Request,\r
-  OUT UINT8                   **RequestCursor,\r
-  OUT VOID                    **RequestMap\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Map address of request structure buffer\r
-\r
-Arguments:\r
-\r
-  HcDev           - USB2_HC_DEV\r
-  Request         - A pointer to request structure\r
-  RequestCursor   - Mapped address of request structure to return\r
-  RequestMap      - Identificaion of this mapping to return\r
-\r
-Returns:\r
-\r
-  EFI_SUCCESS        Success\r
-  EFI_DEVICE_ERROR   Fail\r
-\r
---*/\r
-;\r
-\r
-VOID\r
-SetQtdBufferPointer (\r
-  IN EHCI_QTD_HW *QtdHwPtr,\r
-  IN VOID        *DataPtr,\r
-  IN UINTN       DataLen\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Set data buffer pointers in Qtd\r
-\r
-Arguments:\r
-\r
-  QtdHwPtr  - A pointer to Qtd hardware structure\r
-  DataPtr   - A pointer to user data buffer\r
-  DataLen   - Length of the user data buffer\r
-\r
-Returns:\r
-\r
-  VOID\r
-\r
---*/\r
-;\r
-\r
-EHCI_QTD_HW *\r
-GetQtdAlternateNextPointer (\r
-  IN EHCI_QTD_HW *HwQtdPtr\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Get Qtd alternate next pointer field\r
-\r
-Arguments:\r
-\r
-  HwQtdPtr - A pointer to hardware Qtd structure\r
-\r
-Returns:\r
-\r
-  A pointer to hardware alternate Qtd\r
-\r
---*/\r
-;\r
-\r
-VOID\r
-ZeroOutQhOverlay (\r
-  IN EHCI_QH_ENTITY *QhPtr\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Zero out the fields in Qh structure\r
-\r
-Arguments:\r
-\r
-  QhPtr - A pointer to Qh structure\r
-\r
-Returns:\r
-\r
-  VOID\r
-\r
---*/\r
-;\r
-\r
-VOID\r
-UpdateAsyncRequestTransfer (\r
-  IN EHCI_ASYNC_REQUEST *AsyncRequestPtr,\r
-  IN UINT32             TransferResult,\r
-  IN UINTN              ErrTDPos\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Update asynchronous request transfer\r
-\r
-Arguments:\r
-\r
-  AsyncRequestPtr  - A pointer to async request\r
-  TransferResult   - transfer result\r
-  ErrQtdPos        - postion of error Qtd\r
-\r
-Returns:\r
-\r
-  VOID\r
-\r
---*/\r
-;\r
-\r
-\r
-EFI_STATUS\r
-DeleteAsyncRequestTransfer (\r
-  IN  USB2_HC_DEV     *HcDev,\r
-  IN  UINT8           DeviceAddress,\r
-  IN  UINT8           EndPointAddress,\r
-  OUT UINT8           *DataToggle\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Delete all asynchronous request transfer\r
-\r
-Arguments:\r
-\r
-  HcDev           - USB2_HC_DEV\r
-  DeviceAddress   - address of usb device\r
-  EndPointAddress - address of endpoint\r
-  DataToggle      - stored data toggle\r
-\r
-Returns:\r
-\r
-  EFI_SUCCESS        Success\r
-  EFI_DEVICE_ERROR   Fail\r
-\r
---*/\r
-;\r
-\r
-VOID\r
-CleanUpAllAsyncRequestTransfer (\r
-  IN  USB2_HC_DEV *HcDev\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Clean up all asynchronous request transfer\r
-\r
-Arguments:\r
-\r
-  HcDev - USB2_HC_DEV\r
-\r
-Returns:\r
-  VOID\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-ExecuteTransfer (\r
-  IN  USB2_HC_DEV         *HcDev,\r
-  IN BOOLEAN              IsControl,\r
-  IN  EHCI_QH_ENTITY      *QhPtr,\r
-  IN OUT UINTN            *ActualLen,\r
-  OUT UINT8               *DataToggle,\r
-  IN  UINTN               TimeOut,\r
-  OUT UINT32              *TransferResult\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Execute Bulk or SyncInterrupt Transfer\r
-\r
-Arguments:\r
-\r
-  HcDev            - USB2_HC_DEV\r
-  IsControl        - Is control transfer or not\r
-  QhPtr            - A pointer to Qh\r
-  ActualLen        - Actual transfered Len\r
-  DataToggle       - Data Toggle\r
-  TimeOut          - TimeOut threshold\r
-  TransferResult   - Transfer result\r
-\r
-Returns:\r
-\r
-  EFI_SUCCESS        Sucess\r
-  EFI_DEVICE_ERROR   Error\r
-\r
---*/\r
-;\r
-\r
-BOOLEAN\r
-CheckQtdsTransferResult (\r
-  IN BOOLEAN             IsControl,\r
-  IN  EHCI_QH_ENTITY     *QhPtr,\r
-  OUT UINT32             *Result,\r
-  OUT UINTN              *ErrQtdPos,\r
-  OUT UINTN              *ActualLen\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Check transfer result of Qtds\r
-\r
-Arguments:\r
-\r
-  IsControl     - Is control transfer or not\r
-  QhPtr         - A pointer to Qh\r
-  Result        - Transfer result\r
-  ErrQtdPos     - Error TD Position\r
-  ActualLen     - Actual Transfer Size\r
-\r
-Returns:\r
-\r
-  TRUE    Qtds finished\r
-  FALSE   Not finish\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-AsyncRequestMoniter (\r
-  IN EFI_EVENT     Event,\r
-  IN VOID          *Context\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Interrupt transfer periodic check handler\r
-\r
-Arguments:\r
-\r
-  Event     - Interrupt event\r
-  Context   - Pointer to USB2_HC_DEV\r
-\r
-Returns:\r
-\r
-  EFI_SUCCESS        Success\r
-  EFI_DEVICE_ERROR   Fail\r
-\r
---*/\r
-;\r
-\r
-\r
-EFI_STATUS\r
-CreateNULLQH (\r
-  IN  USB2_HC_DEV     *HcDev\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Create the NULL QH to make it as the Async QH header\r
-\r
-Arguments:\r
-\r
-  HcDev   - USB2_HC_DEV\r
-\r
-Returns:\r
-\r
-  EFI_SUCCESS        Success\r
---*/\r
-;\r
-\r
-VOID\r
-DestroyNULLQH (\r
-  IN  USB2_HC_DEV     *HcDev\r
-  );\r
-\r
-VOID\r
-ClearLegacySupport (\r
-  IN USB2_HC_DEV     *HcDev\r
-  );\r
-\r
-VOID\r
-HostReset (\r
-  IN USB2_HC_DEV    *HcDev\r
-  );\r
-\r
-\r
-VOID\r
-DumpEHCIPortsStatus (\r
-  IN USB2_HC_DEV    *HcDev\r
-  );\r
-\r
-\r
-#endif\r