]> git.proxmox.com Git - mirror_edk2.git/blobdiff - EdkModulePkg/Bus/Pci/Uhci/Dxe/uhci.h
Retiring the ANT/JAVA build and removing the older EDK II packages that required...
[mirror_edk2.git] / EdkModulePkg / Bus / Pci / Uhci / Dxe / uhci.h
diff --git a/EdkModulePkg/Bus/Pci/Uhci/Dxe/uhci.h b/EdkModulePkg/Bus/Pci/Uhci/Dxe/uhci.h
deleted file mode 100644 (file)
index 68571c5..0000000
+++ /dev/null
@@ -1,2995 +0,0 @@
-/*++\r
-\r
-Copyright (c) 2006, 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
-    Uhci.h\r
-    \r
-Abstract: \r
-    \r
-\r
-Revision History\r
---*/\r
-\r
-#ifndef _UHCI_H\r
-#define _UHCI_H\r
-\r
-/*\r
- * Universal Host Controller Interface data structures and defines\r
- */\r
-\r
-#include <IndustryStandard/pci22.h>\r
-\r
-#define EFI_D_UHCI                EFI_D_INFO\r
-\r
-//\r
-// stall time\r
-//\r
-#define STALL_1_MILLI_SECOND      1000\r
-#define STALL_1_SECOND            1000 * STALL_1_MILLI_SECOND\r
-\r
-#define FORCE_GLOBAL_RESUME_TIME  20 * STALL_1_MILLI_SECOND\r
-\r
-#define ROOT_PORT_REST_TIME       50 * STALL_1_MILLI_SECOND\r
-\r
-#define PORT_RESET_RECOVERY_TIME  10 * STALL_1_MILLI_SECOND\r
-\r
-//\r
-// 50 ms\r
-//\r
-#define INTERRUPT_POLLING_TIME    50 * 1000 * 10\r
-\r
-//\r
-// UHCI IO Space Address Register Register locates at\r
-// offset 20 ~ 23h of PCI Configuration Space (UHCI spec, Revision 1.1),\r
-// so, its BAR Index is 4.\r
-//\r
-#define USB_BAR_INDEX             4\r
-\r
-//\r
-// One memory block uses 1 page (common buffer for QH,TD use.)\r
-//\r
-#define NORMAL_MEMORY_BLOCK_UNIT_IN_PAGES 1\r
-\r
-#define bit(a)                            (1 << (a))\r
-\r
-//\r
-// ////////////////////////////////////////////////////////////////////////\r
-//\r
-//          Universal Host Controller Registers Definitions\r
-//\r
-//////////////////////////////////////////////////////////////////////////\r
-extern UINT16 USBBaseAddr;\r
-\r
-/* Command register */\r
-#define USBCMD          0       /* Command Register Offset 00-01h */\r
-#define USBCMD_RS       bit (0) /* Run/Stop */\r
-#define USBCMD_HCRESET  bit (1) /* Host reset */\r
-#define USBCMD_GRESET   bit (2) /* Global reset */\r
-#define USBCMD_EGSM     bit (3) /* Global Suspend Mode */\r
-#define USBCMD_FGR      bit (4) /* Force Global Resume */\r
-#define USBCMD_SWDBG    bit (5) /* SW Debug mode */\r
-#define USBCMD_CF       bit (6) /* Config Flag (sw only) */\r
-#define USBCMD_MAXP     bit (7) /* Max Packet (0 = 32, 1 = 64) */\r
-\r
-/* Status register */\r
-#define USBSTS          2       /* Status Register Offset 02-03h */\r
-#define USBSTS_USBINT   bit (0) /* Interrupt due to IOC */\r
-#define USBSTS_ERROR    bit (1) /* Interrupt due to error */\r
-#define USBSTS_RD       bit (2) /* Resume Detect */\r
-#define USBSTS_HSE      bit (3) /* Host System Error*/\r
-#define USBSTS_HCPE     bit (4) /* Host Controller Process Error*/\r
-#define USBSTS_HCH      bit (5) /* HC Halted */\r
-\r
-/* Interrupt enable register */\r
-#define USBINTR         4       /* Interrupt Enable Register 04-05h */\r
-#define USBINTR_TIMEOUT bit (0) /* Timeout/CRC error enable */\r
-#define USBINTR_RESUME  bit (1) /* Resume interrupt enable */\r
-#define USBINTR_IOC     bit (2) /* Interrupt On Complete enable */\r
-#define USBINTR_SP      bit (3) /* Short packet interrupt enable */\r
-\r
-/* Frame Number Register Offset 06-08h */\r
-#define USBFRNUM       6\r
-\r
-/* Frame List Base Address Register Offset 08-0Bh */\r
-#define USBFLBASEADD   8\r
-\r
-/* Start of Frame Modify Register Offset 0Ch */\r
-#define USBSOF         0x0c\r
-\r
-/* USB port status and control registers */\r
-#define USBPORTSC1      0x10      /*Port 1 offset 10-11h */\r
-#define USBPORTSC2      0x12      /*Port 2 offset 12-13h */\r
-\r
-#define USBPORTSC_CCS   bit (0)   /* Current Connect Status*/\r
-#define USBPORTSC_CSC   bit (1)   /* Connect Status Change */\r
-#define USBPORTSC_PED   bit (2)   /* Port Enable / Disable */\r
-#define USBPORTSC_PEDC  bit (3)   /* Port Enable / Disable Change */\r
-#define USBPORTSC_LSL   bit (4)   /* Line Status Low bit*/\r
-#define USBPORTSC_LSH   bit (5)   /* Line Status High bit*/\r
-#define USBPORTSC_RD    bit (6)   /* Resume Detect */\r
-#define USBPORTSC_LSDA  bit (8)   /* Low Speed Device Attached */\r
-#define USBPORTSC_PR    bit (9)   /* Port Reset */\r
-#define USBPORTSC_SUSP  bit (12)  /* Suspend */\r
-\r
-/* PCI Configuration Registers for USB */\r
-\r
-//\r
-// Class Code Register offset\r
-//\r
-#define CLASSC          0x09\r
-//\r
-// USB IO Space Base Address Register offset\r
-//\r
-#define USBBASE         0x20\r
-\r
-//\r
-// USB legacy Support\r
-//\r
-#define USB_EMULATION   0xc0\r
-\r
-//\r
-// USB Base Class Code,Sub-Class Code and Programming Interface.\r
-//\r
-#define PCI_CLASSC_PI_UHCI  0x00\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
-//\r
-// ////////////////////////////////////////////////////////////////////////\r
-//\r
-//          USB Transfer Mechanism Data Structures\r
-//\r
-//////////////////////////////////////////////////////////////////////////\r
-#pragma pack(1)\r
-//\r
-// USB Class Code structure\r
-//\r
-typedef struct {\r
-  UINT8 PI;\r
-  UINT8 SubClassCode;\r
-  UINT8 BaseCode;\r
-} USB_CLASSC;\r
-\r
-typedef struct {\r
-  UINT32  QHHorizontalTerminate : 1;\r
-  UINT32  QHHorizontalQSelect : 1;\r
-  UINT32  QHHorizontalRsvd : 2;\r
-  UINT32  QHHorizontalPtr : 28;\r
-  UINT32  QHVerticalTerminate : 1;\r
-  UINT32  QHVerticalQSelect : 1;\r
-  UINT32  QHVerticalRsvd : 2;\r
-  UINT32  QHVerticalPtr : 28;\r
-} QUEUE_HEAD;\r
-\r
-typedef struct {\r
-  UINT32  TDLinkPtrTerminate : 1;\r
-  UINT32  TDLinkPtrQSelect : 1;\r
-  UINT32  TDLinkPtrDepthSelect : 1;\r
-  UINT32  TDLinkPtrRsvd : 1;\r
-  UINT32  TDLinkPtr : 28;\r
-  UINT32  TDStatusActualLength : 11;\r
-  UINT32  TDStatusRsvd : 5;\r
-  UINT32  TDStatus : 8;\r
-  UINT32  TDStatusIOC : 1;\r
-  UINT32  TDStatusIOS : 1;\r
-  UINT32  TDStatusLS : 1;\r
-  UINT32  TDStatusErr : 2;\r
-  UINT32  TDStatusSPD : 1;\r
-  UINT32  TDStatusRsvd2 : 2;\r
-  UINT32  TDTokenPID : 8;\r
-  UINT32  TDTokenDevAddr : 7;\r
-  UINT32  TDTokenEndPt : 4;\r
-  UINT32  TDTokenDataToggle : 1;\r
-  UINT32  TDTokenRsvd : 1;\r
-  UINT32  TDTokenMaxLen : 11;\r
-  UINT32  TDBufferPtr;\r
-} TD;\r
-\r
-#pragma pack()\r
-\r
-typedef struct {\r
-  QUEUE_HEAD  QH;\r
-  VOID        *ptrNext;\r
-  VOID        *ptrDown;\r
-  VOID        *ptrNextIntQH;  // for interrupt transfer's special use\r
-  VOID        *LoopPtr;\r
-} QH_STRUCT;\r
-\r
-typedef struct {\r
-  TD      TDData;\r
-  UINT8   *pTDBuffer;\r
-  VOID    *ptrNextTD;\r
-  VOID    *ptrNextQH;\r
-  UINT16  TDBufferLength;\r
-  UINT16  reserved;\r
-} TD_STRUCT;\r
-\r
-//\r
-// ////////////////////////////////////////////////////////////////////////\r
-//\r
-//          Universal Host Controller Device Data Structure\r
-//\r
-//////////////////////////////////////////////////////////////////////////\r
-#define USB_HC_DEV_FROM_THIS(a)   CR (a, USB_HC_DEV, UsbHc, USB_HC_DEV_SIGNATURE)\r
-#define USB2_HC_DEV_FROM_THIS(a)  CR (a, USB_HC_DEV, Usb2Hc, USB_HC_DEV_SIGNATURE)\r
-\r
-#define USB_HC_DEV_SIGNATURE      EFI_SIGNATURE_32 ('u', 'h', 'c', 'i')\r
-#define INTERRUPT_LIST_SIGNATURE  EFI_SIGNATURE_32 ('i', 'n', 't', 's')\r
-typedef struct {\r
-  UINTN                           Signature;\r
-\r
-  LIST_ENTRY                      Link;\r
-  UINT8                           DevAddr;\r
-  UINT8                           EndPoint;\r
-  UINT8                           DataToggle;\r
-  UINT8                           Reserved[5];\r
-  TD_STRUCT                       *PtrFirstTD;\r
-  QH_STRUCT                       *PtrQH;\r
-  UINTN                           DataLen;\r
-  UINTN                           PollInterval;\r
-  VOID                            *Mapping;\r
-  UINT8                           *DataBuffer;  // allocated host memory, not mapped memory\r
-  EFI_ASYNC_USB_TRANSFER_CALLBACK InterruptCallBack;\r
-  VOID                            *InterruptContext;\r
-} INTERRUPT_LIST;\r
-\r
-#define INTERRUPT_LIST_FROM_LINK(a) CR (a, INTERRUPT_LIST, Link, INTERRUPT_LIST_SIGNATURE)\r
-\r
-typedef struct {\r
-  UINT32  FrameListPtrTerminate : 1;\r
-  UINT32  FrameListPtrQSelect : 1;\r
-  UINT32  FrameListRsvd : 2;\r
-  UINT32  FrameListPtr : 28;\r
-\r
-} FRAMELIST_ENTRY;\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 {\r
-  UINTN                     Signature;\r
-  EFI_USB_HC_PROTOCOL       UsbHc;\r
-  EFI_USB2_HC_PROTOCOL      Usb2Hc;\r
-  EFI_PCI_IO_PROTOCOL       *PciIo;\r
-\r
-  //\r
-  // local data\r
-  //\r
-  LIST_ENTRY                InterruptListHead;\r
-  FRAMELIST_ENTRY           *FrameListEntry;\r
-  VOID                      *FrameListMapping;\r
-  MEMORY_MANAGE_HEADER      *MemoryHeader;\r
-  EFI_EVENT                 InterruptTransTimer;\r
-  EFI_UNICODE_STRING_TABLE  *ControllerNameTable;\r
-\r
-} USB_HC_DEV;\r
-\r
-extern EFI_DRIVER_BINDING_PROTOCOL  gUhciDriverBinding;\r
-extern EFI_COMPONENT_NAME_PROTOCOL  gUhciComponentName;\r
-\r
-//\r
-// EFI Component Name Functions\r
-//\r
-EFI_STATUS\r
-EFIAPI\r
-UhciComponentNameGetDriverName (\r
-  IN  EFI_COMPONENT_NAME_PROTOCOL     *This,\r
-  IN  CHAR8                           *Language,\r
-  OUT CHAR16                          **DriverName\r
-  );\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-UhciComponentNameGetControllerName (\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
-EFI_STATUS\r
-WriteUHCCommandReg (\r
-  IN EFI_PCI_IO_PROTOCOL     *PciIo,\r
-  IN UINT32                  CmdAddrOffset,\r
-  IN UINT16                  UsbCmd\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Write UHCI Command Register\r
-\r
-Arguments:\r
-\r
-  PciIo         - EFI_PCI_IO_PROTOCOL\r
-  CmdAddrOffset - Command address offset\r
-  UsbCmd        - Data to write\r
-\r
-Returns:\r
-\r
-  EFI_SUCCESS\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-ReadUHCCommandReg (\r
-  IN       EFI_PCI_IO_PROTOCOL     *PciIo,\r
-  IN       UINT32                  CmdAddrOffset,\r
-  IN OUT   UINT16                  *Data\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Read UHCI Command Register\r
-\r
-Arguments:\r
-\r
-  PciIo         - EFI_PCI_IO_PROTOCOL\r
-  CmdAddrOffset - Command address offset\r
-  Data          - Data to return\r
-\r
-Returns:\r
-\r
-  EFI_SUCCESS\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-WriteUHCStatusReg (\r
-  IN EFI_PCI_IO_PROTOCOL     *PciIo,\r
-  IN UINT32                  StatusAddrOffset,\r
-  IN UINT16                  UsbSts\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Write UHCI Staus Register\r
-\r
-Arguments:\r
-\r
-  PciIo            - EFI_PCI_IO_PROTOCOL\r
-  StatusAddrOffset - Status address offset\r
-  UsbSts           - Data to write\r
-\r
-Returns:\r
-\r
-  EFI_SUCCESS\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-ReadUHCStatusReg (\r
-  IN       EFI_PCI_IO_PROTOCOL     *PciIo,\r
-  IN       UINT32                  StatusAddrOffset,\r
-  IN OUT   UINT16                  *Data\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Read UHCI Staus Register\r
-\r
-Arguments:\r
-\r
-  PciIo            - EFI_PCI_IO_PROTOCOL\r
-  StatusAddrOffset - Status address offset\r
-  UsbSts           - Data to return\r
-\r
-Returns:\r
-\r
-  EFI_SUCCESS\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-ClearStatusReg (\r
-  IN EFI_PCI_IO_PROTOCOL     *PciIo,\r
-  IN UINT32                  StatusAddrOffset\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Clear the content of UHC's Status Register\r
-\r
-Arguments:\r
-\r
-  PciIo             - EFI_PCI_IO_PROTOCOL\r
-  StatusAddrOffset  - Status address offset\r
-  \r
-Returns:\r
-\r
-  EFI_SUCCESS\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-ReadUHCFrameNumberReg (\r
-  IN       EFI_PCI_IO_PROTOCOL     *PciIo,\r
-  IN       UINT32                  FrameNumAddrOffset,\r
-  IN OUT   UINT16                  *Data\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Read from UHC's Frame Number Register\r
-\r
-Arguments:\r
-\r
-  PciIo              - EFI_PCI_IO_PROTOCOL\r
-  FrameNumAddrOffset - Frame number register offset\r
-  Data               - Data to return \r
-Returns:\r
-\r
-  EFI_SUCCESS\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-WriteUHCFrameListBaseReg (\r
-  IN EFI_PCI_IO_PROTOCOL     *PciIo,\r
-  IN UINT32                  FlBaseAddrOffset,\r
-  IN UINT32                  UsbFrameListBaseAddr\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Write to UHC's Frame List Base Register\r
-\r
-Arguments:\r
-\r
-  PciIo                - EFI_PCI_IO_PROTOCOL\r
-  FlBaseAddrOffset     - Frame Base address register\r
-  UsbFrameListBaseAddr - Address to write\r
-\r
-Returns:\r
-\r
-  EFI_SUCCESS\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-ReadRootPortReg (\r
-  IN       EFI_PCI_IO_PROTOCOL     *PciIo,\r
-  IN       UINT32                  PortAddrOffset,\r
-  IN OUT   UINT16                  *Data\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Read from UHC's Root Port Register\r
-\r
-Arguments:\r
-\r
-  PciIo           - EFI_PCI_IO_PROTOCOL\r
-  PortAddrOffset  - Port Addrress Offset,\r
-  Data            - Data to return\r
-Returns:\r
-\r
-  EFI_SUCCESS\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-WriteRootPortReg (\r
-  IN EFI_PCI_IO_PROTOCOL     *PciIo,\r
-  IN UINT32                  PortAddrOffset,\r
-  IN UINT16                  ControlBits\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-   Write to UHC's Root Port Register\r
-\r
-Arguments:\r
-\r
-  PciIo           - EFI_PCI_IO_PROTOCOL\r
-  PortAddrOffset  - Port Addrress Offset,\r
-  ControlBits     - Data to write\r
-Returns:\r
-\r
-  EFI_SUCCESS\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-WaitForUHCHalt (\r
-  IN EFI_PCI_IO_PROTOCOL      *PciIo,\r
-  IN UINT32                   StatusRegAddr,\r
-  IN UINTN                    Timeout\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Wait until UHCI halt or timeout\r
-\r
-Arguments:\r
-\r
-  PciIo         - EFI_PCI_IO_PROTOCOL\r
-  StatusRegAddr - Status Register Address\r
-  Timeout       - Time out value in us\r
-\r
-Returns:\r
-\r
-  EFI_DEVICE_ERROR - Unable to read the status register\r
-  EFI_TIMEOUT      - Time out\r
-  EFI_SUCCESS      - Success\r
-\r
---*/\r
-;\r
-\r
-BOOLEAN\r
-IsStatusOK (\r
-  IN EFI_PCI_IO_PROTOCOL     *PciIo,\r
-  IN UINT32                  StatusRegAddr\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Judge whether the host controller operates well\r
-\r
-Arguments:\r
-\r
-  PciIo         - EFI_PCI_IO_PROTOCOL\r
-  StatusRegAddr - Status register address\r
-\r
-Returns:\r
-\r
-   TRUE  -  Status is good\r
-   FALSE -  Status is bad\r
-\r
---*/\r
-;\r
-\r
-BOOLEAN\r
-IsHostSysOrProcessErr (\r
-  IN EFI_PCI_IO_PROTOCOL     *PciIo,\r
-  IN UINT32                  StatusRegAddr\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Judge the status is HostSys,ProcessErr error or good\r
-\r
-Arguments:\r
-\r
-  PciIo         - EFI_PCI_IO_PROTOCOL\r
-  StatusRegAddr - Status register address\r
-\r
-Returns:\r
-\r
-   TRUE  -  Status is good\r
-   FALSE -  Status is bad\r
-\r
---*/\r
-;\r
-\r
-UINT16\r
-GetCurrentFrameNumber (\r
-  IN EFI_PCI_IO_PROTOCOL     *PciIo,\r
-  IN UINT32                  FrameNumAddrOffset\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Get Current Frame Number\r
-\r
-Arguments:\r
-\r
-  PciIo               - EFI_PCI_IO_PROTOCOL\r
-  FrameNumAddrOffset  - FrameNum register AddrOffset\r
-\r
-Returns:\r
-\r
-  Frame number \r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-SetFrameListBaseAddress (\r
-  IN EFI_PCI_IO_PROTOCOL     *PciIo,\r
-  IN UINT32                  FLBASEADDRReg,\r
-  IN UINT32                  Addr\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Set FrameListBase Address\r
-\r
-Arguments:\r
-\r
-  PciIo         - EFI_PCI_IO_PROTOCOL\r
-  FlBaseAddrReg - FrameListBase register\r
-  Addr          - Address to set\r
-\r
-Returns:\r
-\r
-  EFI_SUCCESS\r
-\r
---*/\r
-;\r
-\r
-UINT32\r
-GetFrameListBaseAddress (\r
-  IN EFI_PCI_IO_PROTOCOL     *PciIo,\r
-  IN UINT32                  FLBAddr\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Get Current Frame Number\r
-\r
-Arguments:\r
-\r
-  PciIo               - EFI_PCI_IO_PROTOCOL\r
-  FrameNumAddrOffset  - FrameNum register AddrOffset\r
-\r
-Returns:\r
-\r
-  Frame number \r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-CreateFrameList (\r
-  IN USB_HC_DEV     *HcDev,\r
-  IN UINT32         FLBASEADDRReg\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  CreateFrameList\r
-\r
-Arguments:\r
-\r
-  HcDev         - USB_HC_DEV\r
-  FlBaseAddrReg - Frame List register\r
-\r
-Returns:\r
-\r
-  EFI_OUT_OF_RESOURCES - Can't allocate memory resources\r
-  EFI_UNSUPPORTED      - Map memory fail\r
-  EFI_SUCCESS          - Success\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-FreeFrameListEntry (\r
-  IN USB_HC_DEV     *UhcDev\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Free FrameList buffer\r
-\r
-Arguments:\r
-\r
-  HcDev - USB_HC_DEV\r
-\r
-Returns:\r
-\r
-  EFI_SUCCESS - success\r
-\r
---*/\r
-;\r
-\r
-VOID\r
-InitFrameList (\r
-  IN USB_HC_DEV     *HcDev\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Initialize FrameList\r
-\r
-Arguments:\r
-\r
-  HcDev - USB_HC_DEV\r
-\r
-Returns:\r
-   VOID\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-CreateQH (\r
-  IN  USB_HC_DEV     *HcDev,\r
-  OUT QH_STRUCT      **pptrQH\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  CreateQH\r
-\r
-Arguments:\r
-\r
-  HcDev       - USB_HC_DEV\r
-  pptrQH      - QH_STRUCT content to return\r
-Returns:\r
-\r
-  EFI_SUCCESS          - Success\r
-  EFI_OUT_OF_RESOURCES - Can't allocate memory\r
-  \r
---*/\r
-;\r
-\r
-VOID\r
-SetQHHorizontalLinkPtr (\r
-  IN QH_STRUCT     *ptrQH,\r
-  IN VOID          *ptrNext\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Set QH Horizontal Link Pointer\r
-\r
-Arguments:\r
-\r
-  PtrQH   - QH_STRUCT\r
-  ptrNext - Data to write \r
-\r
-Returns:\r
-\r
-  VOID\r
-\r
---*/\r
-;\r
-\r
-VOID                                *\r
-GetQHHorizontalLinkPtr (\r
-  IN QH_STRUCT     *ptrQH\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Get QH Horizontal Link Pointer\r
-\r
-Arguments:\r
-\r
-  PtrQH   - QH_STRUCT\r
-  \r
-\r
-Returns:\r
-\r
-  Data to return \r
-\r
---*/\r
-;\r
-\r
-VOID\r
-SetQHHorizontalQHorTDSelect (\r
-  IN QH_STRUCT     *ptrQH,\r
-  IN BOOLEAN       bQH\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Set QH Horizontal QH or TD \r
-\r
-Arguments:\r
-\r
-  PtrQH - QH_STRUCT\r
-  bQH   - TRUE is QH FALSE is TD\r
-\r
-Returns:\r
-  VOID\r
-\r
---*/\r
-;\r
-\r
-VOID\r
-SetQHHorizontalValidorInvalid (\r
-  IN QH_STRUCT     *ptrQH,\r
-  IN BOOLEAN       bValid\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Set QH Horizontal Valid or Invalid\r
-\r
-Arguments:\r
-\r
-  PtrQH  - QH_STRUCT\r
-  bValid - TRUE is Valid FALSE is Invalid\r
-\r
-Returns:\r
-  VOID\r
-\r
---*/\r
-;\r
-\r
-VOID\r
-SetQHVerticalLinkPtr (\r
-  IN QH_STRUCT     *ptrQH,\r
-  IN VOID          *ptrNext\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Set QH Vertical Link Pointer\r
-  \r
-Arguments:\r
-\r
-  PtrQH   - QH_STRUCT\r
-  ptrNext - Data to write\r
-Returns:\r
-\r
-  VOID\r
-\r
---*/\r
-;\r
-\r
-VOID                                *\r
-GetQHVerticalLinkPtr (\r
-  IN QH_STRUCT     *ptrQH\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Get QH Vertical Link Pointer\r
-  \r
-Arguments:\r
-\r
-  PtrQH   - QH_STRUCT\r
\r
-Returns:\r
-\r
-   Data to return\r
-\r
---*/\r
-;\r
-\r
-VOID\r
-SetQHVerticalQHorTDSelect (\r
-  IN QH_STRUCT     *ptrQH,\r
-  IN BOOLEAN       bQH\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Set QH Vertical QH or TD\r
-\r
-Arguments:\r
-\r
-  PtrQH - QH_STRUCT\r
-  bQH   - TRUE is QH FALSE is TD\r
-\r
-Returns:\r
-\r
-  VOID\r
-\r
---*/\r
-;\r
-\r
-BOOLEAN\r
-IsQHHorizontalQHSelect (\r
-  IN QH_STRUCT     *ptrQH\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Is QH Horizontal QH Select\r
-\r
-Arguments:\r
-\r
-  PtrQH - QH_STRUCT\r
\r
-Returns:\r
-\r
-  TRUE  - QH\r
-  FALSE - TD\r
-\r
---*/\r
-;\r
-\r
-VOID\r
-SetQHVerticalValidorInvalid (\r
-  IN QH_STRUCT     *ptrQH,\r
-  IN BOOLEAN       bValid\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Set QH Vertical Valid or Invalid\r
-\r
-Arguments:\r
-\r
-  PtrQH   - QH_STRUCT\r
-  IsValid - TRUE is valid FALSE is invalid\r
-\r
-Returns:\r
-\r
-  VOID\r
-\r
---*/\r
-;\r
-\r
-BOOLEAN\r
-GetQHVerticalValidorInvalid (\r
-  IN QH_STRUCT     *ptrQH\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Get QH Vertical Valid or Invalid\r
-\r
-Arguments:\r
-\r
-  PtrQH - QH_STRUCT\r
-\r
-Returns:\r
-\r
-  TRUE  - Valid\r
-  FALSE - Invalid\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-AllocateTDStruct (\r
-  IN  USB_HC_DEV     *HcDev,\r
-  OUT TD_STRUCT      **ppTDStruct\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Allocate TD Struct\r
-\r
-Arguments:\r
-\r
-  HcDev       - USB_HC_DEV\r
-  ppTDStruct  - place to store TD_STRUCT pointer\r
-Returns:\r
-\r
-  EFI_SUCCESS\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-CreateTD (\r
-  IN  USB_HC_DEV     *HcDev,\r
-  OUT TD_STRUCT      **pptrTD\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Create TD\r
-\r
-Arguments:\r
-\r
-  HcDev   - USB_HC_DEV\r
-  pptrTD  - TD_STRUCT pointer to store\r
-\r
-Returns:\r
-\r
-  EFI_OUT_OF_RESOURCES - Can't allocate resources\r
-  EFI_SUCCESS          - Success\r
-\r
---*/\r
-;\r
-\r
-\r
-EFI_STATUS\r
-GenSetupStageTD (\r
-  IN  USB_HC_DEV     *HcDev,\r
-  IN  UINT8          DevAddr,\r
-  IN  UINT8          Endpoint,\r
-  IN  BOOLEAN        bSlow,\r
-  IN  UINT8          *pDevReq,\r
-  IN  UINT8          RequestLen,\r
-  OUT TD_STRUCT      **ppTD\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Generate Setup Stage TD\r
-\r
-Arguments:\r
-\r
-  HcDev       - USB_HC_DEV\r
-  DevAddr     - Device address\r
-  Endpoint    - Endpoint number \r
-  bSlow       - Full speed or low speed\r
-  pDevReq     - Device request\r
-  RequestLen  - Request length\r
-  ppTD        - TD_STRUCT to return\r
-Returns:\r
-\r
-  EFI_OUT_OF_RESOURCES - Can't allocate memory\r
-  EFI_SUCCESS          - Success\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-GenDataTD (\r
-  IN  USB_HC_DEV     *HcDev,\r
-  IN  UINT8          DevAddr,\r
-  IN  UINT8          Endpoint,\r
-  IN  UINT8          *pData,\r
-  IN  UINT8          Len,\r
-  IN  UINT8          PktID,\r
-  IN  UINT8          Toggle,\r
-  IN  BOOLEAN        bSlow,\r
-  OUT TD_STRUCT      **ppTD\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Generate Data Stage TD\r
-\r
-Arguments:\r
-\r
-  HcDev       - USB_HC_DEV\r
-  DevAddr     - Device address\r
-  Endpoint    - Endpoint number \r
-  pData       - Data buffer \r
-  Len         - Data length\r
-  PktID       - Packet ID\r
-  Toggle      - Data toggle value\r
-  bSlow       - Full speed or low speed\r
-  ppTD        - TD_STRUCT to return\r
-Returns:\r
-\r
-  EFI_OUT_OF_RESOURCES - Can't allocate memory\r
-  EFI_SUCCESS          - Success\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-CreateStatusTD (\r
-  IN  USB_HC_DEV     *HcDev,\r
-  IN  UINT8          DevAddr,\r
-  IN  UINT8          Endpoint,\r
-  IN  UINT8          PktID,\r
-  IN  BOOLEAN        bSlow,\r
-  OUT TD_STRUCT      **ppTD\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Generate Setup Stage TD\r
-\r
-Arguments:\r
-\r
-  HcDev       - USB_HC_DEV\r
-  DevAddr     - Device address\r
-  Endpoint    - Endpoint number \r
-  bSlow       - Full speed or low speed\r
-  pDevReq     - Device request\r
-  RequestLen  - Request length\r
-  ppTD        - TD_STRUCT to return\r
-Returns:\r
-\r
-  EFI_OUT_OF_RESOURCES - Can't allocate memory\r
-  EFI_SUCCESS          - Success\r
-\r
---*/\r
-;\r
-\r
-VOID\r
-SetTDLinkPtrValidorInvalid (\r
-  IN TD_STRUCT     *ptrTDStruct,\r
-  IN BOOLEAN       bValid\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Set TD Link Pointer Valid or Invalid\r
-\r
-Arguments:\r
-\r
-  ptrTDStruct - TD_STRUCT\r
-  bValid      - TRUE is valid FALSE is invalid\r
-\r
-Returns:\r
-\r
-  VOID\r
-\r
---*/\r
-;\r
-\r
-VOID\r
-SetTDLinkPtrQHorTDSelect (\r
-  IN TD_STRUCT     *ptrTDStruct,\r
-  IN BOOLEAN       bQH\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Set TD Link Pointer QH or TD Select\r
-\r
-Arguments:\r
-\r
-  ptrTDStruct - TD_STRUCT\r
-  bQH         -  TRUE is QH FALSE is TD\r
-  \r
-Returns:\r
-\r
-  VOID\r
-\r
---*/\r
-;\r
-\r
-VOID\r
-SetTDLinkPtrDepthorBreadth (\r
-  IN TD_STRUCT     *ptrTDStruct,\r
-  IN BOOLEAN       bDepth\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Set TD Link Pointer depth or bread priority\r
-\r
-Arguments:\r
-\r
-  ptrTDStruct - TD_STRUCT\r
-  bDepth      -  TRUE is Depth  FALSE is Breadth\r
-  \r
-Returns:\r
-\r
-  VOID\r
-\r
---*/\r
-;\r
-\r
-VOID\r
-SetTDLinkPtr (\r
-  IN TD_STRUCT     *ptrTDStruct,\r
-  IN VOID          *ptrNext\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Set TD Link Pointer\r
-\r
-Arguments:\r
-\r
-  ptrTDStruct - TD_STRUCT\r
-  ptrNext     - Pointer to set\r
-  \r
-Returns:\r
-\r
-  VOID\r
-\r
---*/\r
-;\r
-\r
-VOID                                *\r
-GetTDLinkPtr (\r
-  IN TD_STRUCT   *ptrTDStruct\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Get TD Link Pointer\r
-\r
-Arguments:\r
-\r
-  ptrTDStruct - TD_STRUCT\r
-   \r
-Returns:\r
-\r
-  Pointer to get\r
-\r
---*/\r
-;\r
-\r
-VOID\r
-EnableorDisableTDShortPacket (\r
-  IN TD_STRUCT   *ptrTDStruct,\r
-  IN BOOLEAN     bEnable\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Enable or Disable TD ShortPacket\r
-\r
-Arguments:\r
-\r
-  ptrTDStruct - TD_STRUCT\r
-  bEnable     - TRUE is Enanble FALSE is Disable\r
-\r
-Returns:\r
-\r
-  VOID\r
-\r
---*/\r
-;\r
-\r
-VOID\r
-SetTDControlErrorCounter (\r
-  IN TD_STRUCT     *ptrTDStruct,\r
-  IN UINT8         nMaxErrors\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Set TD Control ErrorCounter\r
-\r
-Arguments:\r
-\r
-  ptrTDStruct - TD_STRUCT\r
-  nMaxErrors  - Error counter number\r
-  \r
-Returns:\r
-\r
-  VOID\r
-\r
---*/\r
-;\r
-\r
-VOID\r
-SetTDLoworFullSpeedDevice (\r
-  IN TD_STRUCT     *ptrTDStruct,\r
-  IN BOOLEAN       bLowSpeedDevice\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Set TD status low speed or full speed\r
-\r
-Arguments:\r
-\r
-  ptrTDStruct     - A point to TD_STRUCT\r
-  bLowSpeedDevice - Show low speed or full speed\r
-\r
-Returns:\r
-\r
-  VOID\r
-\r
---*/\r
-;\r
-\r
-VOID\r
-SetTDControlIsochronousorNot (\r
-  IN TD_STRUCT     *ptrTDStruct,\r
-  IN BOOLEAN       bIsochronous\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Set TD status Isochronous or not\r
-  \r
-Arguments:\r
-\r
-  ptrTDStruct   - A point to TD_STRUCT\r
-  IsIsochronous - Show Isochronous or not\r
-\r
-Returns:\r
-\r
-  VOID\r
-\r
---*/\r
-;\r
-\r
-VOID\r
-SetorClearTDControlIOC (\r
-  IN TD_STRUCT     *ptrTDStruct,\r
-  IN BOOLEAN       bSet\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Set TD status IOC IsSet\r
-\r
-Arguments:\r
-\r
-  ptrTDStruct - A point to TD_STRUCT\r
-  IsSet       - Show IOC set or not\r
-\r
-Returns:\r
-\r
-  VOID\r
-\r
---*/\r
-;\r
-\r
-VOID\r
-SetTDStatusActiveorInactive (\r
-  IN TD_STRUCT     *ptrTDStruct,\r
-  IN BOOLEAN       bActive\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Set TD status active or not\r
-Arguments:\r
-\r
-  ptrTDStruct - A point to TD_STRUCT\r
-  IsActive    - Active or not\r
-\r
-Returns:\r
-\r
-  VOID\r
-\r
---*/\r
-;\r
-\r
-UINT16\r
-SetTDTokenMaxLength (\r
-  IN TD_STRUCT     *ptrTDStruct,\r
-  IN UINT16        nMaxLen\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Set TD Token maxlength\r
-\r
-Arguments:\r
-\r
-  ptrTDStruct   - A point to TD_STRUCT\r
-  MaximumLength - Maximum length of TD Token\r
-\r
-Returns:\r
-\r
-  Real maximum length set to TD Token\r
-\r
---*/\r
-;\r
-\r
-VOID\r
-SetTDTokenDataToggle1 (\r
-  IN TD_STRUCT    *ptrTDStruct\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Set TD Token data toggle1\r
-\r
-Arguments:\r
-\r
-  ptrTDStruct - A point to TD_STRUCT\r
-\r
-Returns:\r
-\r
-  VOID\r
-\r
---*/\r
-;\r
-\r
-VOID\r
-SetTDTokenDataToggle0 (\r
-  IN TD_STRUCT    *ptrTDStruct\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Set TD Token data toggle0\r
-\r
-Arguments:\r
-\r
-  ptrTDStruct - A point to TD_STRUCT\r
-\r
-Returns:\r
-\r
-  VOID\r
-\r
---*/\r
-;\r
-\r
-UINT8\r
-GetTDTokenDataToggle (\r
-  IN TD_STRUCT     *ptrTDStruct\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Get TD Token data toggle\r
-\r
-Arguments:\r
-\r
-  ptrTDStruct - A point to TD_STRUCT\r
-\r
-Returns:\r
-\r
-  data toggle value\r
-\r
---*/\r
-;\r
-\r
-VOID\r
-SetTDTokenEndPoint (\r
-  IN TD_STRUCT     *ptrTDStruct,\r
-  IN UINTN         nEndPoint\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Set Data Token endpoint number\r
-\r
-Arguments:\r
-\r
-  ptrTDStruct - A point to TD_STRUCT\r
-  EndPoint    - End point number\r
-\r
-Returns:\r
-\r
-  VOID\r
-\r
---*/\r
-;\r
-\r
-VOID\r
-SetTDTokenDeviceAddress (\r
-  IN TD_STRUCT     *ptrTDStruct,\r
-  IN UINTN         nDevAddr\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Set TD Token device address\r
-\r
-Arguments:\r
-\r
-  ptrTDStruct   - A point to TD_STRUCT\r
-  DeviceAddress - Device address\r
-\r
-Returns:\r
-\r
-  VOID\r
-  \r
---*/\r
-;\r
-\r
-VOID\r
-SetTDTokenPacketID (\r
-  IN TD_STRUCT     *ptrTDStruct,\r
-  IN UINT8         nPID\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Set TD Token packet ID\r
-\r
-Arguments:\r
-\r
-  ptrTDStruct - A point to TD_STRUCT\r
-  PID         - Packet ID\r
-\r
-Returns:\r
-\r
-  VOID\r
-\r
---*/\r
-;\r
-\r
-VOID\r
-SetTDDataBuffer (\r
-  IN TD_STRUCT     *ptrTDStruct\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Set TD data buffer\r
-\r
-Arguments:\r
-\r
-  ptrTDStruct - A point to TD_STRUCT\r
-\r
-Returns:\r
-\r
-  VOID\r
-\r
---*/\r
-;\r
-\r
-BOOLEAN\r
-IsTDStatusActive (\r
-  IN TD_STRUCT     *ptrTDStruct\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Indicate whether TD status active or not\r
-\r
-Arguments:\r
-\r
-  ptrTDStruct - A point to TD_STRUCT\r
-\r
-Returns:\r
-\r
-  TRUE  - Active\r
-  FALSE - Inactive \r
-\r
---*/\r
-;\r
-\r
-BOOLEAN\r
-IsTDStatusStalled (\r
-  IN TD_STRUCT     *ptrTDStruct\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Indicate whether TD status stalled or not\r
-\r
-Arguments:\r
-\r
-  ptrTDStruct - A point to TD_STRUCT\r
-\r
-Returns:\r
-\r
-  TRUE  - Stalled\r
-  FALSE - not stalled\r
-\r
---*/\r
-;\r
-\r
-BOOLEAN\r
-IsTDStatusBufferError (\r
-  IN TD_STRUCT     *ptrTDStruct\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Indicate whether TD status buffer error or not\r
-\r
-Arguments:\r
-\r
-  ptrTDStruct - A point to TD_STRUCT\r
-\r
-Returns:\r
-\r
-  TRUE  - Buffer error\r
-  FALSE - No error\r
-\r
---*/\r
-;\r
-\r
-BOOLEAN\r
-IsTDStatusBabbleError (\r
-  IN TD_STRUCT     *ptrTDStruct\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Indicate whether TD status babble error or not\r
-\r
-Arguments:\r
-\r
-  ptrTDStruct - A point to TD_STRUCT\r
-\r
-Returns:\r
-\r
-  TRUE  - Babble error\r
-  FALSE - No error\r
-\r
---*/\r
-;\r
-\r
-BOOLEAN\r
-IsTDStatusNAKReceived (\r
-  IN TD_STRUCT     *ptrTDStruct\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Indicate whether TD status NAK received\r
-Arguments:\r
-\r
-  ptrTDStruct - A point to TD_STRUCT\r
-\r
-Returns:\r
-\r
-  TRUE  - NAK received\r
-  FALSE - NAK not received\r
-\r
---*/\r
-;\r
-\r
-BOOLEAN\r
-IsTDStatusCRCTimeOutError (\r
-  IN TD_STRUCT     *ptrTDStruct\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Indicate whether TD status CRC timeout error or not\r
-\r
-Arguments:\r
-\r
-  ptrTDStruct - A point to TD_STRUCT\r
-  \r
-Returns:\r
-\r
-  TRUE  - CRC timeout error\r
-  FALSE - CRC timeout no error\r
-\r
---*/\r
-;\r
-\r
-BOOLEAN\r
-IsTDStatusBitStuffError (\r
-  IN TD_STRUCT     *ptrTDStruct\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Indicate whether TD status bit stuff error or not\r
-\r
-Arguments:\r
-\r
-  ptrTDStruct - A point to TD_STRUCT\r
-\r
-Returns:\r
-\r
-  TRUE  - Bit stuff error\r
-  FALSE - Bit stuff no error\r
-\r
---*/\r
-;\r
-\r
-UINT16\r
-GetTDStatusActualLength (\r
-  IN TD_STRUCT     *ptrTDStruct\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Get TD status length\r
-\r
-Arguments:\r
-\r
-  ptrTDStruct - A point to TD_STRUCT\r
-\r
-Returns:\r
-\r
-  Return Td status length\r
-\r
---*/\r
-;\r
-\r
-UINT16\r
-GetTDTokenMaxLength (\r
-  IN TD_STRUCT     *ptrTDStruct\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Get TD Token maximum length\r
-\r
-Arguments:\r
-\r
-  ptrTDStruct - A point to TD_STRUCT\r
-\r
-Returns:\r
-\r
-  Return TD token maximum length\r
-\r
---*/\r
-;\r
-\r
-UINT8\r
-GetTDTokenEndPoint (\r
-  IN TD_STRUCT     *ptrTDStruct\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Get TD Token endpoint number\r
-\r
-Arguments:\r
-\r
-  ptrTDStruct - A point to TD_STRUCT\r
-\r
-Returns:\r
-\r
-  Return TD Token endpoint number\r
-\r
---*/\r
-;\r
-\r
-UINT8\r
-GetTDTokenDeviceAddress (\r
-  IN TD_STRUCT     *ptrTDStruct\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Get TD Token device address\r
-\r
-Arguments:\r
-\r
-  ptrTDStruct - A point to TD_STRUCT\r
-\r
-Returns:\r
-\r
-  Return TD Token device address\r
-\r
---*/\r
-;\r
-\r
-UINT8\r
-GetTDTokenPacketID (\r
-  IN TD_STRUCT     *ptrTDStruct\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Get TD Token packet ID\r
-\r
-Arguments:\r
-\r
-  ptrTDStruct - A point to TD_STRUCT\r
-\r
-Returns:\r
-\r
-  Return TD Token packet ID\r
-\r
---*/\r
-;\r
-\r
-UINT8                               *\r
-GetTDDataBuffer (\r
-  IN TD_STRUCT     *ptrTDStruct\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Get the point to TD data buffer\r
-\r
-Arguments:\r
-\r
-  ptrTDStruct - A point to TD_STRUCT\r
-\r
-Returns:\r
-\r
-  Return a point to TD data buffer\r
-\r
---*/\r
-;\r
-\r
-BOOLEAN\r
-GetTDLinkPtrValidorInvalid (\r
-  IN TD_STRUCT     *ptrTDStruct\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Get TD LinkPtr valid or not\r
-\r
-Arguments:\r
-\r
-  ptrTDStruct - A point to TD_STRUCT\r
-\r
-Returns:\r
-\r
-  TRUE  - Invalid\r
-  FALSE - Valid\r
-\r
---*/\r
-;\r
-\r
-UINTN\r
-CountTDsNumber (\r
-  IN TD_STRUCT     *ptrFirstTD\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Get the number of TDs\r
-\r
-Arguments:\r
-\r
-  PtrFirstTD  - A point to the first TD_STRUCT\r
-\r
-Returns:\r
-\r
-  Return the number of TDs\r
-\r
---*/\r
-;\r
-\r
-VOID\r
-LinkTDToQH (\r
-  IN QH_STRUCT     *ptrQH,\r
-  IN TD_STRUCT     *ptrTD\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Link TD To QH\r
-\r
-Arguments:\r
-\r
-  PtrQH - QH_STRUCT\r
-  PtrTD - TD_STRUCT\r
-Returns:\r
-\r
-  VOID\r
-\r
---*/\r
-;\r
-\r
-VOID\r
-LinkTDToTD (\r
-  IN TD_STRUCT     *ptrPreTD,\r
-  IN TD_STRUCT     *ptrTD\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Link TD To TD\r
-\r
-Arguments:\r
-\r
-  ptrPreTD - Previous TD_STRUCT to be linked\r
-  PtrTD    - TD_STRUCT to link\r
-Returns:\r
-\r
-  VOID\r
-\r
---*/\r
-;\r
-\r
-VOID\r
-SetorClearCurFrameListTerminate (\r
-  IN FRAMELIST_ENTRY     *pCurEntry,\r
-  IN BOOLEAN             bSet\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Set or clear current framelist terminate\r
-\r
-Arguments:\r
-\r
-  pCurEntry - A point to FRAMELIST_ENTITY\r
-  IsSet     - TRUE to empty the frame and indicate the Pointer field is valid\r
-\r
-Returns:\r
-\r
-  VOID\r
-\r
---*/\r
-;\r
-\r
-VOID\r
-SetCurFrameListQHorTD (\r
-  IN FRAMELIST_ENTRY        *pCurEntry,\r
-  IN BOOLEAN                bQH\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Set current framelist QH or TD\r
-\r
-Arguments:\r
-\r
-  pCurEntry - A point to FRAMELIST_ENTITY\r
-  IsQH      - TRUE to set QH and FALSE to set TD\r
-\r
-Returns:\r
-\r
-  VOID\r
-\r
---*/\r
-;\r
-\r
-BOOLEAN\r
-GetCurFrameListTerminate (\r
-  IN FRAMELIST_ENTRY     *pCurEntry\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Get current framelist terminate\r
-\r
-Arguments:\r
-\r
-  pCurEntry - A point to FRAMELIST_ENTITY\r
-\r
-Returns:\r
-\r
-  TRUE  - Terminate\r
-  FALSE - Not terminate\r
-\r
---*/\r
-;\r
-\r
-VOID\r
-SetCurFrameListPointer (\r
-  IN FRAMELIST_ENTRY     *pCurEntry,\r
-  IN UINT8               *ptr\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Set current framelist pointer\r
-\r
-Arguments:\r
-\r
-  pCurEntry - A point to FRAMELIST_ENTITY\r
-  ptr       - A point to FrameListPtr point to\r
-\r
-Returns:\r
-\r
-  VOID\r
-  \r
---*/\r
-;\r
-\r
-VOID                                *\r
-GetCurFrameListPointer (\r
-  IN FRAMELIST_ENTRY     *pCurEntry\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Get current framelist pointer\r
-\r
-Arguments:\r
-\r
-  pCurEntry - A point to FRAMELIST_ENTITY\r
-\r
-Returns:\r
-\r
-  A point FrameListPtr point to\r
-\r
---*/\r
-;\r
-\r
-VOID\r
-LinkQHToFrameList (\r
-  IN FRAMELIST_ENTRY   *pEntry,\r
-  IN UINT16            FrameListIndex,\r
-  IN QH_STRUCT         *ptrQH\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Link QH To Frame List\r
-\r
-Arguments:\r
-\r
-  pEntry           - FRAMELIST_ENTRY\r
-  FrameListIndex   - Frame List Index\r
-  PtrQH            - QH to link \r
-Returns:\r
-\r
-  VOID\r
-\r
---*/\r
-;\r
-\r
-VOID\r
-DelLinkSingleQH (\r
-  IN USB_HC_DEV      *HcDev,\r
-  IN QH_STRUCT       *ptrQH,\r
-  IN UINT16          FrameListIndex,\r
-  IN BOOLEAN         SearchOther,\r
-  IN BOOLEAN         Delete\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Unlink from frame list and delete single QH\r
-  \r
-Arguments:\r
-\r
-  HcDev            - USB_HC_DEV\r
-  PtrQH            - QH_STRUCT\r
-  FrameListIndex   - Frame List Index\r
-  SearchOther      - Search Other QH\r
-  Delete           - TRUE is to delete the QH\r
-  \r
-Returns:\r
-\r
-  VOID\r
-  \r
---*/\r
-;\r
-\r
-VOID\r
-DeleteQueuedTDs (\r
-  IN USB_HC_DEV      *HcDev,\r
-  IN TD_STRUCT       *ptrFirstTD\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Delete Queued TDs\r
-  \r
-Arguments:\r
-\r
-  HcDev       - USB_HC_DEV\r
-  PtrFirstTD  - TD link list head\r
-\r
-Returns:\r
-\r
-  VOID\r
-\r
---*/\r
-;\r
-\r
-VOID\r
-InsertQHTDToINTList (\r
-  IN USB_HC_DEV                        *HcDev,\r
-  IN QH_STRUCT                         *ptrQH,\r
-  IN TD_STRUCT                         *ptrFirstTD,\r
-  IN UINT8                             DeviceAddress,\r
-  IN UINT8                             EndPointAddress,\r
-  IN UINT8                             DataToggle,\r
-  IN UINTN                             DataLength,\r
-  IN UINTN                             PollingInterval,\r
-  IN VOID                              *Mapping,\r
-  IN UINT8                             *DataBuffer,\r
-  IN EFI_ASYNC_USB_TRANSFER_CALLBACK   CallBackFunction,\r
-  IN VOID                              *Context\r
-  )\r
-/*++\r
-Routine Description:\r
-\r
-  Insert QH and TD To Interrupt List\r
-\r
-Arguments:\r
-\r
-  HcDev           - USB_HC_DEV\r
-  PtrQH           - QH_STRUCT\r
-  PtrFirstTD      - First TD_STRUCT\r
-  DeviceAddress   - Device Address\r
-  EndPointAddress - EndPoint Address\r
-  DataToggle      - Data Toggle\r
-  DataLength      - Data length \r
-  PollingInterval - Polling Interval when inserted to frame list\r
-  Mapping         - Mapping alue  \r
-  DataBuffer      - Data buffer\r
-  CallBackFunction- CallBackFunction after interrupt transfeer\r
-  Context         - CallBackFunction Context passed as function parameter\r
-\r
-Returns:\r
-\r
-  EFI_SUCCESS            - Sucess\r
-  EFI_INVALID_PARAMETER  - Paremeter is error \r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-DeleteAsyncINTQHTDs (\r
-  IN  USB_HC_DEV  *HcDev,\r
-  IN  UINT8       DeviceAddress,\r
-  IN  UINT8       EndPointAddress,\r
-  OUT UINT8       *DataToggle\r
-  )\r
-/*++\r
-Routine Description:\r
-\r
-  Delete Async INT QH and TDs\r
-  \r
-Arguments:\r
-\r
-  HcDev           - USB_HC_DEV\r
-  DeviceAddress   - Device Address\r
-  EndPointAddress - EndPoint Address\r
-  DataToggle      - Data Toggle\r
-\r
-Returns:\r
-\r
-  EFI_SUCCESS            - Sucess\r
-  EFI_INVALID_PARAMETER  - Paremeter is error \r
-\r
---*/\r
-;\r
-\r
-BOOLEAN\r
-CheckTDsResults (\r
-  IN  TD_STRUCT               *ptrTD,\r
-  IN  UINTN                   RequiredLen,\r
-  OUT UINT32                  *Result,\r
-  OUT UINTN                   *ErrTDPos,\r
-  OUT UINTN                   *ActualTransferSize\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Check TDs Results\r
-\r
-Arguments:\r
-\r
-  PtrTD               - TD_STRUCT to check\r
-  RequiredLen         - Required Len\r
-  Result              - Transfer result\r
-  ErrTDPos            - Error TD Position\r
-  ActualTransferSize  - Actual Transfer Size\r
-\r
-Returns:\r
-\r
-  TRUE  - Sucess\r
-  FALSE - Fail\r
-\r
---*/\r
-;\r
-\r
-VOID\r
-ExecuteAsyncINTTDs (\r
-  IN  USB_HC_DEV      *HcDev,\r
-  IN  INTERRUPT_LIST  *ptrList,\r
-  OUT UINT32          *Result,\r
-  OUT UINTN           *ErrTDPos,\r
-  OUT UINTN           *ActualLen\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Execute Async Interrupt TDs\r
-\r
-Arguments:\r
-\r
-  HcDev     - USB_HC_DEV\r
-  PtrList   - INTERRUPT_LIST\r
-  Result    - Transfer result\r
-  ErrTDPos  - Error TD Position\r
-  ActualTransferSize  - Actual Transfer Size\r
-  \r
-Returns:\r
-\r
-  VOID\r
-\r
---*/\r
-;\r
-\r
-VOID\r
-UpdateAsyncINTQHTDs (\r
-  IN INTERRUPT_LIST  *ptrList,\r
-  IN UINT32          Result,\r
-  IN UINT32          ErrTDPos\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Update Async Interrupt QH and TDs\r
-\r
-Arguments:\r
-\r
-  PtrList   - INTERRUPT_LIST\r
-  Result    - Transfer reslut\r
-  ErrTDPos  - Error TD Position\r
-\r
-Returns:\r
-\r
-  VOID\r
-\r
---*/\r
-;\r
-\r
-VOID\r
-ReleaseInterruptList (\r
-  IN USB_HC_DEV      *HcDev,\r
-  IN LIST_ENTRY      *ListHead\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Release Interrupt List\r
-  \r
-Arguments:\r
-\r
-  HcDev     - USB_HC_DEV\r
-  ListHead  - List head\r
-\r
-Returns:\r
-\r
-  VOID\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-ExecuteControlTransfer (\r
-  IN  USB_HC_DEV  *HcDev,\r
-  IN  TD_STRUCT   *ptrTD,\r
-  IN  UINT32      wIndex,\r
-  OUT UINTN       *ActualLen,\r
-  IN  UINTN       TimeOut,\r
-  OUT UINT32      *TransferResult\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Execute Control Transfer\r
-\r
-Arguments:\r
-\r
-  HcDev            - USB_HC_DEV\r
-  PtrTD            - TD_STRUCT\r
-  wIndex           - No use\r
-  ActualLen        - Actual transfered Len \r
-  TimeOut          - TimeOut value in milliseconds\r
-  TransferResult   - Transfer result\r
-Returns:\r
-\r
-  EFI_SUCCESS      - Sucess\r
-  EFI_DEVICE_ERROR - Error\r
-  \r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-ExecBulkorSyncInterruptTransfer (\r
-  IN  USB_HC_DEV  *HcDev,\r
-  IN  TD_STRUCT   *ptrTD,\r
-  IN  UINT32      wIndex,\r
-  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            - USB_HC_DEV\r
-  PtrTD            - TD_STRUCT\r
-  wIndex           - No use\r
-  ActualLen        - Actual transfered Len \r
-  DataToggle       - Data Toggle\r
-  TimeOut          - TimeOut value in milliseconds\r
-  TransferResult   - Transfer result\r
-Returns:\r
-\r
-  EFI_SUCCESS      - Sucess\r
-  EFI_DEVICE_ERROR - Error\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-InitializeMemoryManagement (\r
-  IN USB_HC_DEV           *HcDev\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Initialize Memory Management\r
-\r
-Arguments:\r
-\r
-  HcDev - USB_HC_DEV\r
-\r
-Returns:\r
-\r
-  EFI_SUCCESS -  Success\r
-  \r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-CreateMemoryBlock (\r
-  IN USB_HC_DEV            *HcDev,\r
-  IN 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
-\r
-Arguments:\r
-\r
-  HcDev        - USB_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   - Out of resources\r
-  EFI_UNSUPPORTED        - Unsupported\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-FreeMemoryHeader (\r
-  IN USB_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         - USB_HC_DEV\r
-  MemoryHeader  - MemoryHeader to be freed\r
-\r
-Returns:\r
-\r
-  EFI_INVALID_PARAMETER - Parameter is error\r
-  EFI_SUCCESS           - Success\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-UhciAllocatePool (\r
-  IN USB_HC_DEV      *UhcDev,\r
-  IN UINT8           **Pool,\r
-  IN UINTN           AllocSize\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Uhci Allocate Pool\r
-\r
-Arguments:\r
-\r
-  HcDev     - USB_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
-\r
---*/\r
-;\r
-\r
-VOID\r
-UhciFreePool (\r
-  IN USB_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
-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
-  IN 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_NOT_FOUND  - Can't find the free memory \r
-  EFI_SUCCESS    - Success\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    *FreeMemoryHeader\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
-DelMemoryManagement (\r
-  IN USB_HC_DEV      *HcDev\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Delete Memory Management\r
-\r
-Arguments:\r
-\r
-  HcDev - USB_HC_DEV\r
-\r
-Returns:\r
-\r
-  EFI_SUCCESS - Success\r
-\r
---*/\r
-;\r
-\r
-VOID\r
-EnableMaxPacketSize (\r
-  IN USB_HC_DEV          *HcDev\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Enable Max Packet Size\r
-\r
-Arguments:\r
-\r
-  HcDev - USB_HC_DEV\r
-\r
-Returns:\r
-\r
-  VOID\r
-\r
---*/\r
-;\r
-\r
-VOID\r
-CleanUsbTransactions (\r
-  IN USB_HC_DEV    *HcDev\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Clean USB Transactions\r
-\r
-Arguments:\r
-\r
-  HcDev - A point to USB_HC_DEV\r
-\r
-Returns:\r
-\r
-  VOID\r
-\r
---*/\r
-;\r
-\r
-VOID\r
-TurnOffUSBEmulation (\r
-  IN EFI_PCI_IO_PROTOCOL  *PciIo\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  Set current framelist QH or TD\r
-\r
-Arguments:\r
-\r
-  pCurEntry - A point to FRAMELIST_ENTITY\r
-  IsQH      - TRUE to set QH and FALSE to set TD\r
-\r
-Returns:\r
-\r
-  VOID\r
-\r
---*/\r
-;\r
-\r
-//\r
-// Prototypes\r
-// Driver model protocol interface\r
-//\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-UHCIDriverBindingSupported (\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
-UHCIDriverBindingStart (\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
-UHCIDriverBindingStop (\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
-// UHCI interface functions\r
-//\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-UHCIReset (\r
-  IN  EFI_USB_HC_PROTOCOL     *This,\r
-  IN  UINT16                  Attributes\r
-  );\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-UHCIGetState (\r
-  IN  EFI_USB_HC_PROTOCOL     *This,\r
-  OUT EFI_USB_HC_STATE        *State\r
-  );\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-UHCISetState (\r
-  IN  EFI_USB_HC_PROTOCOL     *This,\r
-  IN  EFI_USB_HC_STATE        State\r
-  );\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-UHCIControlTransfer (\r
-  IN       EFI_USB_HC_PROTOCOL        *This,\r
-  IN       UINT8                      DeviceAddress,\r
-  IN       BOOLEAN                    IsSlowDevice,\r
-  IN       UINT8                      MaximumPacketLength,\r
-  IN       EFI_USB_DEVICE_REQUEST     *Request,\r
-  IN       EFI_USB_DATA_DIRECTION     TransferDirection,\r
-  IN OUT   VOID                       *Data, OPTIONAL\r
-  IN OUT   UINTN                      *DataLength, OPTIONAL\r
-  IN       UINTN                      TimeOut,\r
-  OUT      UINT32                     *TransferResult\r
-  );\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-UHCIBulkTransfer (\r
-  IN       EFI_USB_HC_PROTOCOL     *This,\r
-  IN       UINT8                   DeviceAddress,\r
-  IN       UINT8                   EndPointAddress,\r
-  IN       UINT8                   MaximumPacketLength,\r
-  IN OUT   VOID                    *Data,\r
-  IN OUT   UINTN                   *DataLength,\r
-  IN OUT   UINT8                   *DataToggle,\r
-  IN       UINTN                   TimeOut,\r
-  OUT      UINT32                  *TransferResult\r
-  );\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-UHCIAsyncInterruptTransfer (\r
-  IN       EFI_USB_HC_PROTOCOL                * This,\r
-  IN       UINT8                              DeviceAddress,\r
-  IN       UINT8                              EndPointAddress,\r
-  IN       BOOLEAN                            IsSlowDevice,\r
-  IN       UINT8                              MaximumPacketLength,\r
-  IN       BOOLEAN                            IsNewTransfer,\r
-  IN OUT   UINT8                              *DataToggle,\r
-  IN       UINTN                              PollingInterval, OPTIONAL\r
-  IN       UINTN                              DataLength, OPTIONAL\r
-  IN       EFI_ASYNC_USB_TRANSFER_CALLBACK    CallBackFunction, OPTIONAL\r
-  IN       VOID                               *Context OPTIONAL\r
-  );\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-UHCISyncInterruptTransfer (\r
-  IN       EFI_USB_HC_PROTOCOL     *This,\r
-  IN       UINT8                   DeviceAddress,\r
-  IN       UINT8                   EndPointAddress,\r
-  IN       BOOLEAN                 IsSlowDevice,\r
-  IN       UINT8                   MaximumPacketLength,\r
-  IN OUT   VOID                    *Data,\r
-  IN OUT   UINTN                   *DataLength,\r
-  IN OUT   UINT8                   *DataToggle,\r
-  IN       UINTN                   TimeOut,\r
-  OUT      UINT32                  *TransferResult\r
-  );\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-UHCIIsochronousTransfer (\r
-  IN       EFI_USB_HC_PROTOCOL     *This,\r
-  IN       UINT8                   DeviceAddress,\r
-  IN       UINT8                   EndPointAddress,\r
-  IN       UINT8                   MaximumPacketLength,\r
-  IN OUT   VOID                    *Data,\r
-  IN       UINTN                   DataLength,\r
-  OUT      UINT32                  *TransferResult\r
-  );\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-UHCIAsyncIsochronousTransfer (\r
-  IN       EFI_USB_HC_PROTOCOL                 * This,\r
-  IN       UINT8                               DeviceAddress,\r
-  IN       UINT8                               EndPointAddress,\r
-  IN       UINT8                               MaximumPacketLength,\r
-  IN OUT   VOID                                *Data,\r
-  IN       UINTN                               DataLength,\r
-  IN       EFI_ASYNC_USB_TRANSFER_CALLBACK     IsochronousCallBack,\r
-  IN       VOID                                *Context OPTIONAL\r
-  );\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-UHCIGetRootHubPortNumber (\r
-  IN  EFI_USB_HC_PROTOCOL     *This,\r
-  OUT UINT8                   *PortNumber\r
-  );\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-UHCIGetRootHubPortStatus (\r
-  IN  EFI_USB_HC_PROTOCOL     *This,\r
-  IN  UINT8                   PortNumber,\r
-  OUT EFI_USB_PORT_STATUS     *PortStatus\r
-  );\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-UHCISetRootHubPortFeature (\r
-  IN  EFI_USB_HC_PROTOCOL     *This,\r
-  IN  UINT8                   PortNumber,\r
-  IN  EFI_USB_PORT_FEATURE    PortFeature\r
-  );\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-UHCIClearRootHubPortFeature (\r
-  IN  EFI_USB_HC_PROTOCOL     *This,\r
-  IN  UINT8                   PortNumber,\r
-  IN  EFI_USB_PORT_FEATURE    PortFeature\r
-  );\r
-\r
-//\r
-// UEFI 2.0 Protocol\r
-//\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-UHCI2GetCapability(\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
-UHCI2Reset (\r
-  IN EFI_USB2_HC_PROTOCOL   * This,\r
-  IN UINT16                 Attributes\r
-  );\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-UHCI2GetState (\r
-  IN  EFI_USB2_HC_PROTOCOL   * This,\r
-  OUT EFI_USB_HC_STATE       * State\r
-  );\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-UHCI2SetState (\r
-  IN EFI_USB2_HC_PROTOCOL   * This,\r
-  IN EFI_USB_HC_STATE       State\r
-  );\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-UHCI2ControlTransfer (\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, OPTIONAL\r
-  IN OUT UINTN                     *DataLength, OPTIONAL\r
-  IN     UINTN                     TimeOut,\r
-  IN     EFI_USB2_HC_TRANSACTION_TRANSLATOR            *Translator,\r
-  OUT    UINT32                    *TransferResult\r
-  );\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-UHCI2BulkTransfer (\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
-UHCI2AsyncInterruptTransfer (\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     BOOLEAN                IsNewTransfer,\r
-  IN OUT UINT8                  *DataToggle,\r
-  IN     UINTN                  PollingInterval, OPTIONAL\r
-  IN     UINTN                  DataLength, OPTIONAL\r
-  IN     EFI_USB2_HC_TRANSACTION_TRANSLATOR            *Translator,\r
-  IN     EFI_ASYNC_USB_TRANSFER_CALLBACK               CallBackFunction, OPTIONAL\r
-  IN     VOID                   *Context OPTIONAL\r
-  );\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-UHCI2SyncInterruptTransfer (\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
-UHCI2IsochronousTransfer (\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
-UHCI2AsyncIsochronousTransfer (\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 OPTIONAL\r
-  );\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-UHCI2GetRootHubPortStatus (\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
-UHCI2SetRootHubPortFeature (\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
-UHCI2ClearRootHubPortFeature (\r
-  IN EFI_USB2_HC_PROTOCOL    * This,\r
-  IN UINT8                   PortNumber,\r
-  IN EFI_USB_PORT_FEATURE    PortFeature\r
-  );\r
-\r
-//\r
-// Asynchronous interrupt transfer monitor function\r
-//\r
-VOID\r
-EFIAPI\r
-MonitorInterruptTrans (\r
-  IN EFI_EVENT     Event,\r
-  IN VOID          *Context\r
-  );\r
-\r
-#endif\r