]> git.proxmox.com Git - mirror_edk2.git/blobdiff - EdkModulePkg/Bus/Pci/Ehci/Dxe/EhciSched.c
1. Add the GLOBAL_REMOVE_IF_UNREFERENCED to globe variables which are used only in...
[mirror_edk2.git] / EdkModulePkg / Bus / Pci / Ehci / Dxe / EhciSched.c
index b6864ad058367cb81be512e608517f300d6e460a..1226d569cf73d7e1d8ed966fba8559225df287a7 100644 (file)
@@ -340,7 +340,7 @@ Returns:
   //\r
   // Init fields in Qh\r
   //\r
-  gBS->SetMem (*QhPtrPtr, sizeof (EHCI_QH_ENTITY), 0);\r
+  ZeroMem (*QhPtrPtr, sizeof (EHCI_QH_ENTITY));\r
 \r
   //\r
   // Software field\r
@@ -699,7 +699,8 @@ Returns:
   //\r
   // Init fields in Qtd\r
   //\r
-  gBS->SetMem (*QtdPtrPtr, sizeof (EHCI_QTD_ENTITY), 0);\r
+\r
+  ZeroMem (*QtdPtrPtr, sizeof (EHCI_QTD_ENTITY));\r
 \r
   //\r
   // Software field\r
@@ -1386,7 +1387,7 @@ Returns:
   Value = NULL;\r
 \r
   if (!HwQtdPtr->AltNextQtdTerminate) {\r
-    Value = (EHCI_QTD_HW *) (UINTN) GET_0B_TO_31B (HwQtdPtr->AltNextQtdPointer << 5);\r
+    Value = (EHCI_QTD_HW *) GET_0B_TO_31B (HwQtdPtr->AltNextQtdPointer << 5);\r
   }\r
 \r
   return Value;\r
@@ -1417,7 +1418,7 @@ Returns:
   Value = NULL;\r
 \r
   if (!HwQtdPtr->NextQtdTerminate) {\r
-    Value = (EHCI_QTD_HW *) (UINTN) GET_0B_TO_31B (HwQtdPtr->NextQtdPointer << 5);\r
+    Value = (EHCI_QTD_HW *) GET_0B_TO_31B (HwQtdPtr->NextQtdPointer << 5);\r
   }\r
 \r
   return Value;\r
@@ -1727,7 +1728,7 @@ Returns:
       //\r
       // Not Null FrameList\r
       //\r
-      FindQhHwPtr = (EHCI_QH_HW *) (UINTN) GET_0B_TO_31B (FrameEntryPtr->LinkPointer << 5);\r
+      FindQhHwPtr = (EHCI_QH_HW *) GET_0B_TO_31B (FrameEntryPtr->LinkPointer << 5);\r
       FindQhPtr   = (EHCI_QH_ENTITY *) GET_QH_ENTITY_ADDR (FindQhHwPtr);\r
       //\r
       // FindQh is Left/Right to Qh\r
@@ -1742,12 +1743,12 @@ Returns:
         //\r
         if (NULL != FindQhPtr->Next) {\r
           FindQhPtr->Next->Prev         = QhPtr;\r
-          QhPtr->Qh.QhHorizontalPointer = (UINT32) GET_0B_TO_31B (((UINTN) &(FindQhPtr->Next->Qh)) >> 5);\r
+          QhPtr->Qh.QhHorizontalPointer = (UINT32) GET_0B_TO_31B (&(FindQhPtr->Next->Qh) >> 5);\r
           QhPtr->Qh.SelectType          = QH_SELECT_TYPE;\r
           QhPtr->Qh.QhTerminate         = FALSE;\r
         }\r
 \r
-        FindQhPtr->Qh.QhHorizontalPointer = (UINT32) GET_0B_TO_31B (((UINTN)&(QhPtr->Qh)) >> 5);\r
+        FindQhPtr->Qh.QhHorizontalPointer = (UINT32) GET_0B_TO_31B (&(QhPtr->Qh) >> 5);\r
         FindQhPtr->Qh.SelectType          = QH_SELECT_TYPE;\r
         FindQhPtr->Qh.QhTerminate         = FALSE;\r
 \r
@@ -1762,7 +1763,7 @@ Returns:
           //\r
           // Qh is the First one in Frame[0] List\r
           //\r
-          FrameEntryPtr->LinkPointer    = (UINT32) GET_0B_TO_31B (((UINTN) &(QhPtr->Qh)) >> 5);\r
+          FrameEntryPtr->LinkPointer    = (UINT32) GET_0B_TO_31B (&(QhPtr->Qh) >> 5);\r
           FrameEntryPtr->SelectType     = QH_SELECT_TYPE;\r
           FrameEntryPtr->LinkTerminate  = FALSE;\r
         } else {\r
@@ -1770,12 +1771,12 @@ Returns:
           // Qh is not the First one in Frame[0] List\r
           //\r
           FindQhPtr->Prev->Next                   = QhPtr;\r
-          FindQhPtr->Prev->Qh.QhHorizontalPointer = (UINT32) GET_0B_TO_31B (((UINTN) &(QhPtr->Qh)) >> 5);\r
+          FindQhPtr->Prev->Qh.QhHorizontalPointer = (UINT32) GET_0B_TO_31B (&(QhPtr->Qh) >> 5);\r
           FindQhPtr->Prev->Qh.SelectType          = QH_SELECT_TYPE;\r
           FindQhPtr->Prev->Qh.QhTerminate         = FALSE;\r
         }\r
 \r
-        QhPtr->Qh.QhHorizontalPointer = (UINT32) GET_0B_TO_31B (((UINTN) &(FindQhPtr->Qh)) >> 5);\r
+        QhPtr->Qh.QhHorizontalPointer = (UINT32) GET_0B_TO_31B (&(FindQhPtr->Qh) >> 5);\r
         QhPtr->Qh.SelectType          = QH_SELECT_TYPE;\r
         QhPtr->Qh.QhTerminate         = FALSE;\r
 \r
@@ -1786,7 +1787,7 @@ Returns:
         //\r
         // Link Qh after FindQh, Qh is the Last one\r
         //\r
-        FindQhPtr->Qh.QhHorizontalPointer = (UINT32) GET_0B_TO_31B (((UINTN) &(QhPtr->Qh)) >> 5);\r
+        FindQhPtr->Qh.QhHorizontalPointer = (UINT32) GET_0B_TO_31B (&(QhPtr->Qh) >> 5);\r
         FindQhPtr->Prev->Qh.SelectType    = QH_SELECT_TYPE;\r
         FindQhPtr->Qh.QhTerminate         = FALSE;\r
 \r
@@ -1798,7 +1799,7 @@ Returns:
       //\r
       // Null FrameList\r
       //\r
-      FrameEntryPtr->LinkPointer    = (UINT32) GET_0B_TO_31B (((UINTN) &(QhPtr->Qh)) >> 5);\r
+      FrameEntryPtr->LinkPointer    = (UINT32) GET_0B_TO_31B (&(QhPtr->Qh) >> 5);\r
       FrameEntryPtr->SelectType     = QH_SELECT_TYPE;\r
       FrameEntryPtr->LinkTerminate  = FALSE;\r
     }\r
@@ -1812,7 +1813,7 @@ Returns:
       FrameIndex += QhPtr->Interval;\r
       while (FrameIndex < HcDev->PeriodicFrameListLength) {\r
         FrameEntryPtr                 = (FRAME_LIST_ENTRY *) (FrameEntryPtr + QhPtr->Interval);\r
-        FrameEntryPtr->LinkPointer    = (UINT32) GET_0B_TO_31B (((UINTN) &(QhPtr->Qh)) >> 5);\r
+        FrameEntryPtr->LinkPointer    = (UINT32) GET_0B_TO_31B (&(QhPtr->Qh) >> 5);\r
         FrameEntryPtr->SelectType     = QH_SELECT_TYPE;\r
         FrameEntryPtr->LinkTerminate  = FALSE;\r
         FrameIndex += QhPtr->Interval;\r
@@ -1825,7 +1826,7 @@ Returns:
       while (FrameIndex < HcDev->PeriodicFrameListLength) {\r
         FrameEntryPtr = (FRAME_LIST_ENTRY *) (FrameEntryPtr + QhPtr->Interval);\r
         if ((FrameIndex % QhPtr->Prev->Interval) != 0) {\r
-          FrameEntryPtr->LinkPointer    = (UINT32) GET_0B_TO_31B (((UINTN) &(QhPtr->Qh)) >> 5);\r
+          FrameEntryPtr->LinkPointer    = (UINT32) GET_0B_TO_31B (&(QhPtr->Qh) >> 5);\r
           FrameEntryPtr->SelectType     = QH_SELECT_TYPE;\r
           FrameEntryPtr->LinkTerminate  = FALSE;\r
         }\r
@@ -1843,7 +1844,7 @@ Returns:
       //\r
       // Not Null FrameList\r
       //\r
-      FindQhHwPtr = (EHCI_QH_HW *) (UINTN) GET_0B_TO_31B (FrameEntryPtr->LinkPointer << 5);\r
+      FindQhHwPtr = (EHCI_QH_HW *) GET_0B_TO_31B (FrameEntryPtr->LinkPointer << 5);\r
       FindQhPtr   = (EHCI_QH_ENTITY *) GET_QH_ENTITY_ADDR (FindQhHwPtr);\r
       //\r
       // FindQh is Last Qh in the Asynchronous List, Link Qh after FindQh\r
@@ -1852,7 +1853,7 @@ Returns:
         FindQhPtr = FindQhPtr->Next;\r
       }\r
 \r
-      FindQhPtr->Qh.QhHorizontalPointer = (UINT32) GET_0B_TO_31B (((UINTN) &(QhPtr->Qh)) >> 5);\r
+      FindQhPtr->Qh.QhHorizontalPointer = (UINT32) GET_0B_TO_31B (&(QhPtr->Qh) >> 5);\r
       FindQhPtr->Qh.SelectType          = QH_SELECT_TYPE;\r
       FindQhPtr->Qh.QhTerminate         = FALSE;\r
 \r
@@ -1862,7 +1863,7 @@ Returns:
       //\r
       // Null FrameList\r
       //\r
-      FrameEntryPtr->LinkPointer    = (UINT32) GET_0B_TO_31B (((UINTN) &(QhPtr->Qh)) >> 5);\r
+      FrameEntryPtr->LinkPointer    = (UINT32) GET_0B_TO_31B (&(QhPtr->Qh) >> 5);\r
       FrameEntryPtr->SelectType     = QH_SELECT_TYPE;\r
       FrameEntryPtr->LinkTerminate  = FALSE;\r
     }\r
@@ -1929,7 +1930,7 @@ Returns:
         }\r
       } else {\r
         while (FrameIndex < HcDev->PeriodicFrameListLength) {\r
-          FrameEntryPtr->LinkPointer    = (UINT32) GET_0B_TO_31B (((UINTN) &(QhPtr->Next->Qh)) >> 5);\r
+          FrameEntryPtr->LinkPointer    = (UINT32) GET_0B_TO_31B (&(QhPtr->Next->Qh) >> 5);\r
           FrameEntryPtr->SelectType     = QH_SELECT_TYPE;\r
           FrameEntryPtr->LinkTerminate  = FALSE;\r
           FrameEntryPtr += Interval;\r
@@ -1949,7 +1950,7 @@ Returns:
         QhPtr->Prev->Qh.SelectType          = 0;\r
         QhPtr->Prev->Qh.QhTerminate         = TRUE;\r
       } else {\r
-        QhPtr->Prev->Qh.QhHorizontalPointer = (UINT32) GET_0B_TO_31B (((UINTN) &(QhPtr->Next->Qh)) >> 5);\r
+        QhPtr->Prev->Qh.QhHorizontalPointer = (UINT32) GET_0B_TO_31B (&(QhPtr->Next->Qh) >> 5);\r
         QhPtr->Prev->Qh.SelectType          = QH_SELECT_TYPE;\r
         QhPtr->Prev->Qh.QhTerminate         = FALSE;\r
       }\r
@@ -2109,6 +2110,12 @@ Returns:
   RemainLen = DataLen;\r
   ASSERT (QtdHwPtr);\r
 \r
+  //\r
+  // Allow buffer address range across 4G.\r
+  // But EFI_USB_MAX_BULK_BUFFER_NUM = 1, so don't allow\r
+  // seperate buffer array.\r
+  //\r
+\r
   //\r
   // Set BufferPointer0, ExtBufferPointer0 and Offset\r
   //\r
@@ -2125,7 +2132,7 @@ Returns:
   }\r
 \r
   QtdHwPtr->BufferPointer1    = QtdHwPtr->BufferPointer0 + 1;\r
-  QtdHwPtr->ExtBufferPointer1 = QtdHwPtr->ExtBufferPointer0;\r
+  QtdHwPtr->ExtBufferPointer1 = (QtdHwPtr->BufferPointer1 == 0) ? (QtdHwPtr->ExtBufferPointer0 + 1) : QtdHwPtr->ExtBufferPointer0;\r
 \r
   //\r
   // Set BufferPointer2 and ExtBufferPointer2\r
@@ -2136,7 +2143,7 @@ Returns:
   }\r
 \r
   QtdHwPtr->BufferPointer2    = QtdHwPtr->BufferPointer1 + 1;\r
-  QtdHwPtr->ExtBufferPointer2 = QtdHwPtr->ExtBufferPointer0;\r
+  QtdHwPtr->ExtBufferPointer2 = (QtdHwPtr->BufferPointer2 == 0) ? (QtdHwPtr->ExtBufferPointer1 + 1) : QtdHwPtr->ExtBufferPointer1;\r
 \r
   //\r
   // Set BufferPointer3 and ExtBufferPointer3\r
@@ -2147,7 +2154,7 @@ Returns:
   }\r
 \r
   QtdHwPtr->BufferPointer3    = QtdHwPtr->BufferPointer2 + 1;\r
-  QtdHwPtr->ExtBufferPointer3 = QtdHwPtr->ExtBufferPointer0;\r
+  QtdHwPtr->ExtBufferPointer3 = (QtdHwPtr->BufferPointer2 == 0) ? (QtdHwPtr->ExtBufferPointer2 + 1) : QtdHwPtr->ExtBufferPointer2;\r
 \r
   //\r
   // Set BufferPointer4 and ExtBufferPointer4\r
@@ -2158,7 +2165,7 @@ Returns:
   }\r
 \r
   QtdHwPtr->BufferPointer4    = QtdHwPtr->BufferPointer3 + 1;\r
-  QtdHwPtr->ExtBufferPointer4 = QtdHwPtr->ExtBufferPointer0;\r
+  QtdHwPtr->ExtBufferPointer4 = (QtdHwPtr->BufferPointer3 == 0) ? (QtdHwPtr->ExtBufferPointer3 + 1) : QtdHwPtr->ExtBufferPointer3;\r
 \r
 exit:\r
   return ;\r
@@ -2865,8 +2872,8 @@ Returns:
     }\r
 \r
     (*ErrQtdPos)++;\r
-    QtdHwPtr = GetQtdNextPointer (QtdHwPtr);\r
-    QtdPtr = (EHCI_QTD_ENTITY *) GET_QTD_ENTITY_ADDR (QtdHwPtr);\r
+    QtdPtr   = QtdPtr->Next;\r
+    QtdHwPtr = &(QtdPtr->Qtd);\r
 \r
   }\r
 \r
@@ -3026,7 +3033,7 @@ Returns:
     }\r
 \r
     QtdHwPtr = &(AsyncRequestPtr->QhPtr->FirstQtdPtr->Qtd);\r
-    ReceiveBuffer = (UINT8 *) (UINTN) GET_0B_TO_31B ((QtdHwPtr->BufferPointer0 << 12) | AsyncRequestPtr->QhPtr->FirstQtdPtr->StaticCurrentOffset);\r
+    ReceiveBuffer = (UINT8 *) GET_0B_TO_31B ((QtdHwPtr->BufferPointer0 << 12) | AsyncRequestPtr->QhPtr->FirstQtdPtr->StaticCurrentOffset);\r
     CopyMem (\r
       ProcessBuffer,\r
       ReceiveBuffer,\r