]> git.proxmox.com Git - mirror_edk2.git/blobdiff - EdkModulePkg/Bus/Pci/Ehci/Dxe/Ehci.h
1. Add NULL QH to set as QH header;
[mirror_edk2.git] / EdkModulePkg / Bus / Pci / Ehci / Dxe / Ehci.h
index 747e1ee1240417e2c2442a14cb36a112173a6665..603bb2665a8b2c6717a1e9105181dfc0366af979 100644 (file)
@@ -1,20 +1,20 @@
 /*++\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
+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
     Ehci.h\r
-    \r
-Abstract: \r
-    \r
+\r
+Abstract:\r
+\r
 \r
 Revision History\r
 --*/\r
@@ -36,6 +36,9 @@ extern UINTN  gEHCErrorLevel;
 #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
@@ -54,7 +57,7 @@ extern UINTN  gEHCErrorLevel;
 \r
 #define USB_BAR_INDEX                     0 /* how many bytes away from USB_BASE to 0x10 */\r
 \r
-#define NORMAL_MEMORY_BLOCK_UNIT_IN_PAGES 1\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
@@ -64,7 +67,7 @@ extern UINTN  gEHCErrorLevel;
 #define EHCI_MAX_QTD_CAPACITY             (EFI_PAGE_SIZE * 5)\r
 \r
 #define NAK_COUNT_RELOAD                  3\r
-#define QTD_ERROR_COUNTER                 1\r
+#define QTD_ERROR_COUNTER                 3\r
 #define HIGH_BANDWIDTH_PIPE_MULTIPLIER    1\r
 \r
 #define QTD_STATUS_ACTIVE                 0x80\r
@@ -210,6 +213,9 @@ typedef struct {
   UINT8 BaseCode;\r
 } USB_CLASSC;\r
 \r
+//\r
+//32 Bytes Aligned\r
+//\r
 typedef struct {\r
   UINT32  NextQtdTerminate : 1;\r
   UINT32  Rsvd1 : 4;\r
@@ -242,13 +248,12 @@ typedef struct {
   UINT32  Rsvd6 : 12;\r
   UINT32  BufferPointer4 : 20;\r
 \r
-  UINT32  ExtBufferPointer0;\r
-  UINT32  ExtBufferPointer1;\r
-  UINT32  ExtBufferPointer2;\r
-  UINT32  ExtBufferPointer3;\r
-  UINT32  ExtBufferPointer4;\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
@@ -307,11 +312,7 @@ typedef struct {
   UINT32  Rsvd6 : 12;\r
   UINT32  BufferPointer4 : 20;\r
 \r
-  UINT32  ExtBufferPointer0;\r
-  UINT32  ExtBufferPointer1;\r
-  UINT32  ExtBufferPointer2;\r
-  UINT32  ExtBufferPointer3;\r
-  UINT32  ExtBufferPointer4;\r
+  UINT32  Pad[5];\r
 } EHCI_QH_HW;\r
 \r
 typedef struct {\r
@@ -326,7 +327,9 @@ typedef struct {
 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
+//\r
+//Aligan On 32 Bytes\r
+//\r
 struct _EHCI_QTD_ENTITY {\r
   EHCI_QTD_HW     Qtd;\r
   UINT32          TotalBytes;\r
@@ -337,7 +340,9 @@ struct _EHCI_QTD_ENTITY {
   EHCI_QTD_ENTITY *AltNext;\r
   EHCI_QH_ENTITY  *SelfQh;\r
 };\r
-\r
+//\r
+//Aligan On 32 Bytes\r
+//\r
 struct _EHCI_QH_ENTITY {\r
   EHCI_QH_HW      Qh;\r
   EHCI_QH_ENTITY  *Next;\r
@@ -390,8 +395,9 @@ typedef struct _USB2_HC_DEV {
   EFI_EVENT                 AsyncRequestEvent;\r
   EFI_UNICODE_STRING_TABLE  *ControllerNameTable;\r
   MEMORY_MANAGE_HEADER      *MemoryHeader;\r
-  UINT8                                                Is64BitCapable;\r
+  UINT8                     Is64BitCapable;\r
   UINT32                    High32BitAddr;\r
+  EHCI_QH_ENTITY            *NULLQH;\r
   UINT32                    UsbCapabilityLen;\r
   UINT16                    DeviceSpeed[16];\r
 } USB2_HC_DEV;\r
@@ -422,13 +428,13 @@ Arguments:
   HcDev                  - USB2_HC_DEV\r
   MemoryHeader           - MEMORY_MANAGE_HEADER to output\r
   MemoryBlockSizeInPages - MemoryBlockSizeInPages\r
-  \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
 \r
@@ -500,7 +506,7 @@ Arguments:
 Returns:\r
 \r
   EFI_SUCCESS    Success\r
-  EFI_NOT_FOUND  Can't find the free memory \r
+  EFI_NOT_FOUND  Can't find the free memory\r
 \r
 --*/\r
 ;\r
@@ -522,7 +528,7 @@ Arguments:
 Returns:\r
 \r
   TRUE    Empty\r
-  FALSE   Not Empty \r
+  FALSE   Not Empty\r
 \r
 --*/\r
 ;\r
@@ -590,7 +596,7 @@ Returns:
 \r
   EFI_SUCCESS        Success\r
   EFI_DEVICE_ERROR   Fail\r
-  \r
+\r
 --*/\r
 ;\r
 \r
@@ -616,7 +622,7 @@ Returns:
 \r
   EFI_SUCCESS        Success\r
   EFI_DEVICE_ERROR   Fail\r
-  \r
+\r
 --*/\r
 ;\r
 \r
@@ -659,18 +665,18 @@ ReadEhcCapabiltiyReg (
 Routine Description:\r
 \r
   Read  Ehc Capabitlity register\r
-  \r
+\r
 Arguments:\r
 \r
-  HcDev             - USB2_HC_DEV \r
+  HcDev             - USB2_HC_DEV\r
   CapabiltiyRegAddr - Ehc Capability register address\r
   Data              - A pointer to data read from register\r
-  \r
+\r
 Returns:\r
 \r
   EFI_SUCCESS        Success\r
   EFI_DEVICE_ERROR   Fail\r
-  \r
+\r
 --*/\r
 ;\r
 \r
@@ -685,18 +691,18 @@ ReadEhcOperationalReg (
 Routine Description:\r
 \r
   Read  Ehc Operation register\r
-  \r
+\r
 Arguments:\r
 \r
-  HcDev                - USB2_HC_DEV \r
+  HcDev                - USB2_HC_DEV\r
   OperationalRegAddr   - Ehc Operation register address\r
   Data                 - A pointer to data read from register\r
-  \r
+\r
 Returns:\r
 \r
   EFI_SUCCESS        Success\r
   EFI_DEVICE_ERROR   Fail\r
-  \r
+\r
 --*/\r
 ;\r
 \r
@@ -711,18 +717,18 @@ WriteEhcOperationalReg (
 Routine Description:\r
 \r
   Write  Ehc Operation register\r
-  \r
+\r
 Arguments:\r
 \r
-  HcDev                - USB2_HC_DEV \r
+  HcDev                - USB2_HC_DEV\r
   OperationalRegAddr   - Ehc Operation register address\r
   Data                 - 32bit write to register\r
-  \r
+\r
 Returns:\r
 \r
   EFI_SUCCESS        Success\r
   EFI_DEVICE_ERROR   Fail\r
-  \r
+\r
 --*/\r
 ;\r
 \r
@@ -735,16 +741,16 @@ SetEhcDoorbell (
 Routine Description:\r
 \r
   Set Ehc door bell bit\r
-  \r
+\r
 Arguments:\r
 \r
-  HcDev - USB2_HC_DEV \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
@@ -758,18 +764,18 @@ SetFrameListLen (
 Routine Description:\r
 \r
   Set the length of Frame List\r
-  \r
+\r
 Arguments:\r
 \r
-  HcDev    - USB2_HC_DEV \r
+  HcDev    - USB2_HC_DEV\r
   Length   - the required length of frame list\r
-  \r
+\r
 Returns:\r
 \r
   EFI_SUCCESS            Success\r
   EFI_INVALID_PARAMETER  Invalid parameter\r
   EFI_DEVICE_ERROR       Fail\r
-  \r
+\r
 --*/\r
 ;\r
 \r
@@ -782,16 +788,16 @@ IsFrameListProgrammable (
 Routine Description:\r
 \r
   Whether frame list is programmable\r
-  \r
+\r
 Arguments:\r
 \r
-  HcDev - USB2_HC_DEV \r
-  \r
+  HcDev - USB2_HC_DEV\r
+\r
 Returns:\r
 \r
   TRUE   Programmable\r
   FALSE  Unprogrammable\r
-  \r
+\r
 --*/\r
 ;\r
 \r
@@ -804,16 +810,16 @@ IsPeriodicScheduleEnabled (
 Routine Description:\r
 \r
   Whether periodic schedule is enabled\r
-  \r
+\r
 Arguments:\r
 \r
-  HcDev - USB2_HC_DEV \r
-  \r
+  HcDev - USB2_HC_DEV\r
+\r
 Returns:\r
 \r
   TRUE   Enabled\r
   FALSE  Disabled\r
-   \r
+\r
 --*/\r
 ;\r
 \r
@@ -826,16 +832,16 @@ IsAsyncScheduleEnabled (
 Routine Description:\r
 \r
   Whether asynchronous schedule is enabled\r
-  \r
+\r
 Arguments:\r
 \r
-  HcDev - USB2_HC_DEV \r
-  \r
+  HcDev - USB2_HC_DEV\r
+\r
 Returns:\r
 \r
   TRUE   Enabled\r
   FALSE  Disabled\r
-    \r
+\r
 --*/\r
 ;\r
 \r
@@ -849,16 +855,16 @@ IsEhcPortEnabled (
 Routine Description:\r
 \r
   Whether port is enabled\r
-  \r
+\r
 Arguments:\r
 \r
-  HcDev - USB2_HC_DEV \r
-  \r
+  HcDev - USB2_HC_DEV\r
+\r
 Returns:\r
 \r
   TRUE   Enabled\r
   FALSE  Disabled\r
-  \r
+\r
 --*/\r
 ;\r
 \r
@@ -871,16 +877,16 @@ IsEhcReseted (
 Routine Description:\r
 \r
   Whether Ehc is halted\r
-  \r
+\r
 Arguments:\r
 \r
-  HcDev - USB2_HC_DEV \r
-  \r
+  HcDev - USB2_HC_DEV\r
+\r
 Returns:\r
 \r
   TRUE   Reseted\r
   FALSE  Unreseted\r
-    \r
+\r
 --*/\r
 ;\r
 \r
@@ -893,16 +899,16 @@ IsEhcHalted (
 Routine Description:\r
 \r
   Whether Ehc is halted\r
-  \r
+\r
 Arguments:\r
 \r
-  HcDev  - USB2_HC_DEV \r
-  \r
+  HcDev  - USB2_HC_DEV\r
+\r
 Returns:\r
 \r
   TRUE   Halted\r
   FALSE  Not halted\r
-    \r
+\r
 --*/\r
 ;\r
 \r
@@ -915,39 +921,39 @@ IsEhcSysError (
 Routine Description:\r
 \r
   Whether Ehc is system error\r
-  \r
+\r
 Arguments:\r
 \r
-  HcDev  - USB2_HC_DEV \r
-  \r
+  HcDev  - USB2_HC_DEV\r
+\r
 Returns:\r
 \r
   TRUE   System error\r
   FALSE  No system error\r
-    \r
+\r
 --*/\r
 ;\r
 \r
 BOOLEAN\r
 IsHighSpeedDevice (\r
   IN EFI_USB2_HC_PROTOCOL *This,\r
-  IN UINT8                PortNum \r
+  IN UINT8                PortNum\r
   )\r
 /*++\r
 \r
 Routine Description:\r
 \r
   Whether high speed device attached\r
-  \r
+\r
 Arguments:\r
 \r
-  HcDev - USB2_HC_DEV \r
-  \r
+  HcDev - USB2_HC_DEV\r
+\r
 Returns:\r
 \r
   TRUE   High speed\r
   FALSE  Full speed\r
-  \r
+\r
 --*/\r
 ;\r
 \r
@@ -961,17 +967,17 @@ WaitForEhcReset (
 Routine Description:\r
 \r
   wait for Ehc reset or timeout\r
-  \r
+\r
 Arguments:\r
 \r
-  HcDev   - USB2_HC_DEV \r
+  HcDev   - USB2_HC_DEV\r
   Timeout - timeout threshold\r
-  \r
+\r
 Returns:\r
 \r
   EFI_SUCCESS    Success\r
   EFI_TIMEOUT    Timeout\r
-  \r
+\r
 --*/\r
 ;\r
 \r
@@ -985,17 +991,17 @@ WaitForEhcHalt (
 Routine Description:\r
 \r
   wait for Ehc halt or timeout\r
-  \r
+\r
 Arguments:\r
 \r
-  HcDev   - USB2_HC_DEV \r
+  HcDev   - USB2_HC_DEV\r
   Timeout - timeout threshold\r
-  \r
+\r
 Returns:\r
 \r
   EFI_SUCCESS    Success\r
   EFI_TIMEOUT    Timeout\r
-  \r
+\r
 --*/\r
 ;\r
 \r
@@ -1009,17 +1015,17 @@ WaitForEhcNotHalt (
 Routine Description:\r
 \r
   wait for Ehc not halt or timeout\r
-  \r
+\r
 Arguments:\r
 \r
-  HcDev   - USB2_HC_DEV \r
+  HcDev   - USB2_HC_DEV\r
   Timeout - timeout threshold\r
-  \r
+\r
 Returns:\r
 \r
   EFI_SUCCESS    Success\r
   EFI_TIMEOUT    Timeout\r
-  \r
+\r
 --*/\r
 ;\r
 \r
@@ -1036,14 +1042,14 @@ Routine Description:
 \r
 Arguments:\r
 \r
-  HcDev   - USB2_HC_DEV \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
 \r
@@ -1057,17 +1063,17 @@ WaitForAsyncScheduleEnable (
 Routine Description:\r
 \r
   Wait for Ehc asynchronous schedule enable or timeout\r
-  \r
+\r
 Arguments:\r
 \r
-  HcDev   - USB2_HC_DEV \r
+  HcDev   - USB2_HC_DEV\r
   Timeout - timeout threshold\r
-  \r
+\r
 Returns:\r
 \r
   EFI_SUCCESS    Success\r
   EFI_TIMEOUT    Timeout\r
-  \r
+\r
 --*/\r
 ;\r
 \r
@@ -1081,17 +1087,17 @@ WaitForAsyncScheduleDisable (
 Routine Description:\r
 \r
   Wait for Ehc asynchronous schedule disable or timeout\r
-  \r
+\r
 Arguments:\r
 \r
-  HcDev   - USB2_HC_DEV \r
+  HcDev   - USB2_HC_DEV\r
   Timeout - timeout threshold\r
-  \r
+\r
 Returns:\r
 \r
   EFI_SUCCESS    Success\r
   EFI_TIMEOUT    Timeout\r
-  \r
+\r
 --*/\r
 ;\r
 \r
@@ -1105,17 +1111,17 @@ WaitForPeriodicScheduleEnable (
 Routine Description:\r
 \r
   Wait for Ehc periodic schedule enable or timeout\r
-  \r
+\r
 Arguments:\r
 \r
-  HcDev   - USB2_HC_DEV \r
+  HcDev   - USB2_HC_DEV\r
   Timeout - timeout threshold\r
-  \r
+\r
 Returns:\r
 \r
   EFI_SUCCESS    Success\r
   EFI_TIMEOUT    Timeout\r
-  \r
+\r
 --*/\r
 ;\r
 \r
@@ -1129,17 +1135,17 @@ WaitForPeriodicScheduleDisable (
 Routine Description:\r
 \r
   Wait for periodic schedule disable or timeout\r
-  \r
+\r
 Arguments:\r
 \r
-  HcDev   - USB2_HC_DEV \r
+  HcDev   - USB2_HC_DEV\r
   Timeout - timeout threshold\r
-  \r
+\r
 Returns:\r
 \r
   EFI_SUCCESS    Success\r
   EFI_TIMEOUT    Timeout\r
-  \r
+\r
 --*/\r
 ;\r
 \r
@@ -1152,16 +1158,16 @@ GetCapabilityLen (
 Routine Description:\r
 \r
   Get the length of capability register\r
-  \r
+\r
 Arguments:\r
 \r
-  HcDev - USB2_HC_DEV \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
@@ -1175,17 +1181,17 @@ SetFrameListBaseAddr (
 Routine Description:\r
 \r
   Set base address of frame list first entry\r
-  \r
+\r
 Arguments:\r
 \r
-  HcDev       - USB2_HC_DEV \r
+  HcDev       - USB2_HC_DEV\r
   FrameBuffer - base address of first entry of frame list\r
-  \r
+\r
 Returns:\r
 \r
   EFI_SUCCESS       Success\r
   EFI_DEVICE_ERROR  Fail\r
-  \r
+\r
 --*/\r
 ;\r
 \r
@@ -1199,17 +1205,17 @@ SetAsyncListAddr (
 Routine Description:\r
 \r
   Set address of first Async schedule Qh\r
-  \r
+\r
 Arguments:\r
 \r
-  HcDev    - USB2_HC_DEV \r
+  HcDev    - USB2_HC_DEV\r
   QhPtr    - A pointer to first Qh in the Async schedule\r
-  \r
+\r
 Returns:\r
 \r
   EFI_SUCCESS       Success\r
   EFI_DEVICE_ERROR  Fail\r
-  \r
+\r
 --*/\r
 ;\r
 \r
@@ -1222,17 +1228,17 @@ SetCtrlDataStructSeg (
 Routine Description:\r
 \r
   Set address of first Async schedule Qh\r
-  \r
+\r
 Arguments:\r
 \r
-  HcDev    - USB2_HC_DEV \r
+  HcDev    - USB2_HC_DEV\r
   QhPtr    - A pointer to first Qh in the Async schedule\r
-  \r
+\r
 Returns:\r
 \r
   EFI_SUCCESS       Success\r
   EFI_DEVICE_ERROR  Fail\r
-  \r
+\r
 --*/\r
 ;\r
 \r
@@ -1245,16 +1251,16 @@ SetPortRoutingEhc (
 Routine Description:\r
 \r
   Set Ehc port routing bit\r
-  \r
+\r
 Arguments:\r
 \r
-  HcDev - USB2_HC_DEV \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
@@ -1267,16 +1273,16 @@ EnablePeriodicSchedule (
 Routine Description:\r
 \r
   Enable periodic schedule\r
-  \r
+\r
 Arguments:\r
 \r
-  HcDev - USB2_HC_DEV \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
@@ -1289,16 +1295,16 @@ DisablePeriodicSchedule (
 Routine Description:\r
 \r
   Disable periodic schedule\r
-  \r
+\r
 Arguments:\r
 \r
-  HcDev - USB2_HC_DEV \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
@@ -1311,16 +1317,16 @@ EnableAsynchronousSchedule (
 Routine Description:\r
 \r
   Enable asynchrounous schedule\r
-  \r
+\r
 Arguments:\r
 \r
-  HcDev - USB2_HC_DEV \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
 \r
@@ -1333,16 +1339,16 @@ DisableAsynchronousSchedule (
 Routine Description:\r
 \r
   Disable asynchrounous schedule\r
-  \r
+\r
 Arguments:\r
 \r
-  HcDev - USB2_HC_DEV \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
@@ -1355,16 +1361,16 @@ StartScheduleExecution (
 Routine Description:\r
 \r
   Start Ehc schedule execution\r
-  \r
+\r
 Arguments:\r
 \r
-  HcDev - USB2_HC_DEV \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
@@ -1377,16 +1383,16 @@ ResetEhc (
 Routine Description:\r
 \r
   Reset Ehc\r
-  \r
+\r
 Arguments:\r
 \r
-  HcDev - USB2_HC_DEV \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
@@ -1399,16 +1405,16 @@ ClearEhcAllStatus (
 Routine Description:\r
 \r
   Clear Ehc all status bits\r
-  \r
+\r
 Arguments:\r
 \r
-  HcDev - USB2_HC_DEV \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
@@ -1430,12 +1436,12 @@ Arguments:
 \r
   HcDev   - USB2_HC_DEV\r
   Length  - Frame List Length\r
-  \r
+\r
 Returns:\r
 \r
   EFI_SUCCESS        Success\r
   EFI_DEVICE_ERROR   Fail\r
-  \r
+\r
 --*/\r
 ;\r
 \r
@@ -1456,7 +1462,7 @@ Arguments:
 Returns:\r
 \r
   VOID\r
-  \r
+\r
 --*/\r
 ;\r
 \r
@@ -1475,12 +1481,12 @@ Arguments:
 \r
   HcDev          - USB2_HC_DEV\r
   NotifyFunction - Timer Notify Function\r
-  \r
+\r
 Returns:\r
 \r
   EFI_SUCCESS        Success\r
   EFI_DEVICE_ERROR   Fail\r
-  \r
+\r
 --*/\r
 ;\r
 \r
@@ -1497,12 +1503,12 @@ Routine Description:
 Arguments:\r
 \r
   HcDev - USB2_HC_DEV\r
-  \r
+\r
 Returns:\r
 \r
   EFI_SUCCESS        Success\r
   EFI_DEVICE_ERROR   Fail\r
-  \r
+\r
 --*/\r
 ;\r
 \r
@@ -1519,12 +1525,12 @@ Routine Description:
 Arguments:\r
 \r
   HcDev - USB2_HC_DEV\r
-  \r
+\r
 Returns:\r
 \r
   EFI_SUCCESS        Success\r
   EFI_DEVICE_ERROR   Fail\r
-  \r
+\r
 --*/\r
 ;\r
 \r
@@ -1541,12 +1547,12 @@ Routine Description:
 Arguments:\r
 \r
   HcDev - USB2_HC_DEV\r
-  \r
+\r
 Returns:\r
 \r
   EFI_SUCCESS        Success\r
   EFI_DEVICE_ERROR   Fail\r
-  \r
+\r
 --*/\r
 ;\r
 \r
@@ -1567,18 +1573,18 @@ Routine Description:
 \r
 Arguments:\r
 \r
-  HcDev          - USB2_HC_DEV \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
+\r
 Returns:\r
 \r
   EFI_SUCCESS       Success\r
   EFI_DEVICE_ERROR  Fail\r
-  \r
+\r
 --*/\r
 ;\r
 \r
@@ -1599,18 +1605,18 @@ Routine Description:
 \r
 Arguments:\r
 \r
-  HcDev         - USB2_HC_DEV \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
+\r
 Returns:\r
 \r
   EFI_SUCCESS       Success\r
   EFI_DEVICE_ERROR  Fail\r
-  \r
+\r
 --*/\r
 ;\r
 \r
@@ -1633,19 +1639,19 @@ Routine Description:
 \r
 Arguments:\r
 \r
-  HcDev         - USB2_HC_DEV \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
+\r
 Returns:\r
 \r
   EFI_SUCCESS       Success\r
   EFI_DEVICE_ERROR  Fail\r
-  \r
+\r
 --*/\r
 ;\r
 \r
@@ -1669,7 +1675,7 @@ Routine Description:
 \r
 Arguments:\r
 \r
-  HcDev        - USB2_HC_DEV \r
+  HcDev        - USB2_HC_DEV\r
   DeviceAddr   - Address of Device\r
   EndPointAddr - Address of Endpoint\r
   DeviceSpeed  - Device Speed\r
@@ -1677,12 +1683,12 @@ Arguments:
   Interval     - value of interval\r
   Translator   - Translator Transaction for SplitX\r
   QhPtrPtr     - A pointer of pointer to Qh for return\r
-  \r
+\r
 Returns:\r
 \r
   EFI_SUCCESS       Success\r
   EFI_DEVICE_ERROR  Fail\r
-  \r
+\r
 --*/\r
 ;\r
 \r
@@ -1695,17 +1701,17 @@ DestoryQh (
 \r
 Routine Description:\r
 \r
-  Destory Qh Structure \r
-  \r
+  Destory Qh Structure\r
+\r
 Arguments:\r
 \r
-  HcDev - USB2_HC_DEV \r
+  HcDev - USB2_HC_DEV\r
   QhPtr - A pointer to Qh\r
-  \r
+\r
 Returns:\r
 \r
   VOID\r
-  \r
+\r
 --*/\r
 ;\r
 \r
@@ -1727,19 +1733,19 @@ Routine Description:
 \r
 Arguments:\r
 \r
-  HcDev       - USB2_HC_DEV \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
+\r
 Returns:\r
 \r
   EFI_SUCCESS            Success\r
   EFI_OUT_OF_RESOURCES   Cannot allocate resources\r
-  \r
+\r
 --*/\r
 ;\r
 \r
@@ -1753,19 +1759,19 @@ CreateSetupQtd (
 \r
 Routine Description:\r
 \r
-  Create Qtd Structure for Setup \r
+  Create Qtd Structure for Setup\r
 \r
 Arguments:\r
 \r
-  HcDev      - USB2_HC_DEV \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
+\r
 Returns:\r
 \r
   EFI_SUCCESS            Success\r
   EFI_OUT_OF_RESOURCES   Cannot allocate resources\r
-  \r
+\r
 --*/\r
 ;\r
 \r
@@ -1782,22 +1788,22 @@ CreateDataQtd (
 \r
 Routine Description:\r
 \r
-  Create Qtd Structure for data \r
+  Create Qtd Structure for data\r
 \r
 Arguments:\r
 \r
-  HcDev       - USB2_HC_DEV \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
+\r
 Returns:\r
 \r
   EFI_SUCCESS            Success\r
   EFI_OUT_OF_RESOURCES   Cannot allocate resources\r
-  \r
+\r
 --*/\r
 ;\r
 \r
@@ -1811,19 +1817,19 @@ CreateStatusQtd (
 \r
 Routine Description:\r
 \r
-  Create Qtd Structure for status \r
+  Create Qtd Structure for status\r
 \r
 Arguments:\r
 \r
-  HcDev       - USB2_HC_DEV \r
+  HcDev       - USB2_HC_DEV\r
   PktId       - Packet Identification of this Qtd\r
   QtdPtrPtr   - A pointer of pointer to Qtd for return\r
-  \r
+\r
 Returns:\r
 \r
   EFI_SUCCESS            Success\r
   EFI_OUT_OF_RESOURCES   Cannot allocate resources\r
-  \r
+\r
 --*/\r
 ;\r
 \r
@@ -1837,19 +1843,19 @@ CreateAltQtd (
 \r
 Routine Description:\r
 \r
-  Create Qtd Structure for Alternative \r
+  Create Qtd Structure for Alternative\r
 \r
 Arguments:\r
 \r
-  HcDev      - USB2_HC_DEV \r
+  HcDev      - USB2_HC_DEV\r
   PktId      - Packet Identification of this Qtd\r
   QtdPtrPtr  - A pointer of pointer to Qtd for return\r
-  \r
+\r
 Returns:\r
 \r
   EFI_SUCCESS            Success\r
   EFI_OUT_OF_RESOURCES   Cannot allocate resources\r
-  \r
+\r
 --*/\r
 ;\r
 \r
@@ -1867,22 +1873,22 @@ CreateControlQtds (
 \r
 Routine Description:\r
 \r
-  Create Qtds list for Control Transfer \r
+  Create Qtds list for Control Transfer\r
 \r
 Arguments:\r
 \r
-  HcDev           - USB2_HC_DEV \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
+\r
 Returns:\r
 \r
   EFI_SUCCESS       Success\r
   EFI_DEVICE_ERROR  Fail\r
-  \r
+\r
 --*/\r
 ;\r
 \r
@@ -1899,23 +1905,23 @@ CreateBulkOrInterruptQtds (
 \r
 Routine Description:\r
 \r
-  Create Qtds list for Bulk or Interrupt Transfer \r
+  Create Qtds list for Bulk or Interrupt Transfer\r
 \r
 Arguments:\r
 \r
-  HcDev        - USB2_HC_DEV \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
+\r
 Returns:\r
 \r
   EFI_SUCCESS       Success\r
   EFI_DEVICE_ERROR  Fail\r
-  \r
+\r
 --*/\r
 ;\r
 \r
@@ -1932,9 +1938,9 @@ Routine Description:
 \r
 Arguments:\r
 \r
-  HcDev        - USB2_HC_DEV \r
-  FirstQtdPtr  - A pointer to first Qtd in the list \r
-    \r
+  HcDev        - USB2_HC_DEV\r
+  FirstQtdPtr  - A pointer to first Qtd in the list\r
+\r
 Returns:\r
 \r
   VOID\r
@@ -1952,12 +1958,12 @@ LinkQtdToQtd (
 Routine Description:\r
 \r
   Link Qtds together\r
-  \r
+\r
 Arguments:\r
 \r
   PreQtdPtr  - A pointer to pre Qtd\r
   QtdPtr     - A pointer to next Qtd\r
-    \r
+\r
 Returns:\r
 \r
   VOID\r
@@ -1975,12 +1981,12 @@ LinkQtdsToAltQtd (
 Routine Description:\r
 \r
   Link AlterQtds together\r
-  \r
+\r
 Arguments:\r
 \r
   FirstQtdPtr - A pointer to first Qtd in the list\r
   AltQtdPtr - A pointer to alternative Qtd\r
-    \r
+\r
 Returns:\r
   VOID\r
 \r
@@ -1997,12 +2003,12 @@ LinkQtdToQh (
 Routine Description:\r
 \r
   Link Qtds list to Qh\r
-  \r
+\r
 Arguments:\r
 \r
   QhPtr   - A pointer to Qh\r
   QtdPtr  - A pointer to first Qtd in the list\r
-  \r
+\r
 Returns:\r
 \r
   VOID\r
@@ -2020,17 +2026,17 @@ LinkQhToAsyncList (
 Routine Description:\r
 \r
   Link Qh to Async Schedule List\r
-  \r
+\r
 Arguments:\r
 \r
-  HcDev - USB2_HC_DEV \r
+  HcDev - USB2_HC_DEV\r
   QhPtr - A pointer to Qh\r
-  \r
+\r
 Returns:\r
 \r
   EFI_SUCCESS       Success\r
   EFI_DEVICE_ERROR  Fail\r
-  \r
+\r
 --*/\r
 ;\r
 \r
@@ -2044,17 +2050,17 @@ UnlinkQhFromAsyncList (
 Routine Description:\r
 \r
   Unlink Qh from Async Schedule List\r
-  \r
+\r
 Arguments:\r
 \r
-  HcDev   - USB2_HC_DEV \r
+  HcDev   - USB2_HC_DEV\r
   QhPtr   - A pointer to Qh\r
-  \r
+\r
 Returns:\r
 \r
   EFI_SUCCESS       Success\r
   EFI_DEVICE_ERROR  Fail\r
-  \r
+\r
 --*/\r
 ;\r
 \r
@@ -2068,12 +2074,12 @@ LinkQhToPeriodicList (
 Routine Description:\r
 \r
   Link Qh to Periodic Schedule List\r
-  \r
+\r
 Arguments:\r
 \r
-  HcDev   - USB2_HC_DEV \r
+  HcDev   - USB2_HC_DEV\r
   QhPtr   - A pointer to Qh\r
-  \r
+\r
 Returns:\r
 \r
   VOID\r
@@ -2092,17 +2098,17 @@ UnlinkQhFromPeriodicList (
 Routine Description:\r
 \r
   Unlink Qh from Periodic Schedule List\r
-  \r
+\r
 Arguments:\r
 \r
-  HcDev     - USB2_HC_DEV \r
+  HcDev     - USB2_HC_DEV\r
   QhPtr     - A pointer to Qh\r
   Interval  - Interval of this periodic transfer\r
-  \r
+\r
 Returns:\r
 \r
   VOID\r
-  \r
+\r
 --*/\r
 ;\r
 \r
@@ -2116,16 +2122,16 @@ LinkToAsyncReqeust (
 Routine Description:\r
 \r
   Llink AsyncRequest Entry to Async Request List\r
-  \r
+\r
 Arguments:\r
 \r
-  HcDev           - USB2_HC_DEV \r
+  HcDev           - USB2_HC_DEV\r
   AsyncRequestPtr - A pointer to Async Request Entry\r
-  \r
+\r
 Returns:\r
 \r
   VOID\r
-  \r
+\r
 --*/\r
 ;\r
 \r
@@ -2139,16 +2145,16 @@ UnlinkFromAsyncReqeust (
 Routine Description:\r
 \r
   Unlink AsyncRequest Entry from Async Request List\r
-  \r
+\r
 Arguments:\r
 \r
-  HcDev           - USB2_HC_DEV \r
+  HcDev           - USB2_HC_DEV\r
   AsyncRequestPtr - A pointer to Async Request Entry\r
-  \r
+\r
 Returns:\r
 \r
   VOID\r
-  \r
+\r
 --*/\r
 ;\r
 \r
@@ -2161,11 +2167,11 @@ GetNumberOfQtd (
 Routine Description:\r
 \r
   Number of Qtds in the list\r
-  \r
+\r
 Arguments:\r
 \r
   FirstQtdPtr - A pointer to first Qtd in the list\r
-    \r
+\r
 Returns:\r
 \r
   Number of Qtds in the list\r
@@ -2173,28 +2179,7 @@ Returns:
 --*/\r
 ;\r
 \r
-UINTN\r
-GetNumberOfTransaction (\r
-  IN UINTN    SizeOfData,\r
-  IN UINTN    SizeOfTransaction\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
 \r
-  Number of Transactions in one Qtd\r
-  \r
-Arguments:\r
-\r
-  SizeOfData           - Size of one Qtd\r
-  SizeOfTransaction    - Size of one Transaction\r
-   \r
-Returns:\r
-\r
-  Number of Transactions in this Qtd\r
-\r
---*/\r
-;\r
 \r
 UINTN\r
 GetCapacityOfQtd (\r
@@ -2205,11 +2190,11 @@ GetCapacityOfQtd (
 Routine Description:\r
 \r
   Get Capacity of Qtd\r
-  \r
+\r
 Arguments:\r
 \r
   BufferCursor  - BufferCursor of the Qtd\r
-   \r
+\r
 Returns:\r
 \r
   Capacity of Qtd\r
@@ -2226,15 +2211,15 @@ GetApproxiOfInterval (
 Routine Description:\r
 \r
   Get the approximate value in the 2 index sequence\r
-  \r
+\r
 Arguments:\r
 \r
   Interval - the value of interval\r
-  \r
+\r
 Returns:\r
 \r
   approximate value of interval in the 2 index sequence\r
-  \r
+\r
 --*/\r
 ;\r
 \r
@@ -2247,15 +2232,15 @@ GetQtdNextPointer (
 Routine Description:\r
 \r
   Get Qtd next pointer field\r
-  \r
+\r
 Arguments:\r
 \r
   HwQtdPtr - A pointer to hardware Qtd structure\r
-  \r
+\r
 Returns:\r
 \r
   A pointer to next hardware Qtd structure\r
-  \r
+\r
 --*/\r
 ;\r
 \r
@@ -2268,16 +2253,16 @@ IsQtdStatusActive (
 Routine Description:\r
 \r
   Whether Qtd status is active or not\r
-  \r
+\r
 Arguments:\r
 \r
   HwQtdPtr - A pointer to hardware Qtd structure\r
-  \r
+\r
 Returns:\r
 \r
   TRUE    Active\r
   FALSE   Inactive\r
-  \r
+\r
 --*/\r
 ;\r
 \r
@@ -2290,16 +2275,16 @@ IsQtdStatusHalted (
 Routine Description:\r
 \r
   Whether Qtd status is halted or not\r
-  \r
+\r
 Arguments:\r
 \r
   HwQtdPtr - A pointer to hardware Qtd structure\r
-  \r
+\r
 Returns:\r\r
 \r
   TRUE    Halted\r
   FALSE   Not halted\r
-  \r
+\r
 --*/\r
 ;\r
 \r
@@ -2312,16 +2297,16 @@ IsQtdStatusBufferError (
 Routine Description:\r
 \r
   Whether Qtd status is buffer error or not\r
-  \r
+\r
 Arguments:\r
 \r
   HwQtdPtr - A pointer to hardware Qtd structure\r
-  \r
+\r
 Returns:\r
 \r
   TRUE    Buffer error\r
   FALSE   No buffer error\r
-  \r
+\r
 --*/\r
 ;\r
 \r
@@ -2334,16 +2319,16 @@ IsQtdStatusBabbleError (
 Routine Description:\r
 \r
   Whether Qtd status is babble error or not\r
-  \r
+\r
 Arguments:\r
 \r
   HwQtdPtr - A pointer to hardware Qtd structure\r
-  \r
+\r
 Returns:\r
 \r
   TRUE    Babble error\r
   FALSE   No babble error\r
-  \r
+\r
 --*/\r
 ;\r
 \r
@@ -2356,16 +2341,16 @@ IsQtdStatusTransactionError (
 Routine Description:\r
 \r
   Whether Qtd status is transaction error or not\r
-  \r
+\r
 Arguments:\r
 \r
   HwQtdPtr - A pointer to hardware Qtd structure\r
-  \r
+\r
 Returns:\r
 \r
   TRUE    Transaction error\r
   FALSE   No transaction error\r
-  \r
+\r
 --*/\r
 ;\r
 \r
@@ -2378,16 +2363,16 @@ IsDataInTransfer (
 Routine Description:\r
 \r
   Whether is a DataIn direction transfer\r
-  \r
+\r
 Arguments:\r
 \r
-  EndPointAddress - address of the endpoint \r
-  \r
+  EndPointAddress - address of the endpoint\r
+\r
 Returns:\r
 \r
   TRUE    DataIn\r
   FALSE   DataOut\r
-  \r
+\r
 --*/\r
 ;\r
 \r
@@ -2406,22 +2391,22 @@ MapDataBuffer (
 Routine Description:\r
 \r
   Map address of user data buffer\r
-  \r
+\r
 Arguments:\r
 \r
-  HcDev             - USB2_HC_DEV \r
+  HcDev             - USB2_HC_DEV\r
   TransferDirection - direction of transfer\r
-  Data              - A pointer to user data buffer \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
+\r
 Returns:\r
 \r
   EFI_SUCCESS        Success\r
   EFI_DEVICE_ERROR   Fail\r
-  \r
+\r
 --*/\r
 ;\r
 \r
@@ -2437,19 +2422,19 @@ MapRequestBuffer (
 Routine Description:\r
 \r
   Map address of request structure buffer\r
-  \r
+\r
 Arguments:\r
 \r
-  HcDev           - USB2_HC_DEV \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
+\r
 Returns:\r
 \r
   EFI_SUCCESS        Success\r
   EFI_DEVICE_ERROR   Fail\r
-  \r
+\r
 --*/\r
 ;\r
 \r
@@ -2467,10 +2452,10 @@ Routine Description:
 \r
 Arguments:\r
 \r
-  QtdHwPtr  - A pointer to Qtd hardware structure \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
+\r
 Returns:\r
 \r
   VOID\r
@@ -2487,15 +2472,15 @@ GetQtdAlternateNextPointer (
 Routine Description:\r
 \r
   Get Qtd alternate next pointer field\r
-  \r
+\r
 Arguments:\r
 \r
   HwQtdPtr - A pointer to hardware Qtd structure\r
-  \r
+\r
 Returns:\r
 \r
   A pointer to hardware alternate Qtd\r
-  \r
+\r
 --*/\r
 ;\r
 \r
@@ -2508,15 +2493,15 @@ ZeroOutQhOverlay (
 Routine Description:\r
 \r
   Zero out the fields in Qh structure\r
-  \r
+\r
 Arguments:\r
 \r
   QhPtr - A pointer to Qh structure\r
-  \r
+\r
 Returns:\r
 \r
   VOID\r
-  \r
+\r
 --*/\r
 ;\r
 \r
@@ -2531,17 +2516,17 @@ UpdateAsyncRequestTransfer (
 Routine Description:\r
 \r
   Update asynchronous request transfer\r
-  \r
+\r
 Arguments:\r
 \r
-  AsyncRequestPtr  - A pointer to async request  \r
-  TransferResult   - transfer result \r
+  AsyncRequestPtr  - A pointer to async request\r
+  TransferResult   - transfer result\r
   ErrQtdPos        - postion of error Qtd\r
-  \r
+\r
 Returns:\r
 \r
   VOID\r
-  \r
+\r
 --*/\r
 ;\r
 \r
@@ -2558,14 +2543,14 @@ DeleteAsyncRequestTransfer (
 Routine Description:\r
 \r
   Delete all asynchronous request transfer\r
-  \r
+\r
 Arguments:\r
 \r
-  HcDev           - USB2_HC_DEV \r
+  HcDev           - USB2_HC_DEV\r
   DeviceAddress   - address of usb device\r
   EndPointAddress - address of endpoint\r
   DataToggle      - stored data toggle\r
-  \r
+\r
 Returns:\r
 \r
   EFI_SUCCESS        Success\r
@@ -2583,14 +2568,14 @@ CleanUpAllAsyncRequestTransfer (
 Routine Description:\r
 \r
   Clean up all asynchronous request transfer\r
-  \r
+\r
 Arguments:\r
 \r
-  HcDev - USB2_HC_DEV \r
-  \r
+  HcDev - USB2_HC_DEV\r
+\r
 Returns:\r
   VOID\r
-  \r
+\r
 --*/\r
 ;\r
 \r
@@ -2615,16 +2600,16 @@ Arguments:
   HcDev            - USB2_HC_DEV\r
   IsControl        - Is control transfer or not\r
   QhPtr            - A pointer to Qh\r
-  ActualLen        - Actual transfered Len \r
+  ActualLen        - Actual transfered Len\r
   DataToggle       - Data Toggle\r
   TimeOut          - TimeOut threshold\r
   TransferResult   - Transfer result\r
-  \r
+\r
 Returns:\r
 \r
   EFI_SUCCESS        Sucess\r
   EFI_DEVICE_ERROR   Error\r
-  \r
+\r
 --*/\r
 ;\r
 \r
@@ -2654,7 +2639,7 @@ Returns:
 \r
   TRUE    Qtds finished\r
   FALSE   Not finish\r
-  \r
+\r
 --*/\r
 ;\r
 \r
@@ -2666,22 +2651,48 @@ AsyncRequestMoniter (
 /*++\r
 \r
 Routine Description:\r
-  \r
+\r
   Interrupt transfer periodic check handler\r
-    \r
+\r
 Arguments:\r
 \r
   Event     - Interrupt event\r
   Context   - Pointer to USB2_HC_DEV\r
-    \r
+\r
 Returns:\r
-  \r
+\r
   EFI_SUCCESS        Success\r
   EFI_DEVICE_ERROR   Fail\r
-    \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
@@ -2692,8 +2703,11 @@ HostReset (
   IN USB2_HC_DEV    *HcDev\r
   );\r
 \r
-VOID \r
+\r
+VOID\r
 DumpEHCIPortsStatus (\r
   IN USB2_HC_DEV    *HcDev\r
   );\r
+\r
+\r
 #endif\r