]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdePkg/Library/BasePciExpressLib/PciLib.c
Update the PciXXXReadBuffer() for better coding style.
[mirror_edk2.git] / MdePkg / Library / BasePciExpressLib / PciLib.c
index 509a5e423fd528ce3a108b586693cad47324d8b2..fab8107af38316ec5833a55e1229cde802f18e5b 100644 (file)
   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:  PciLib.c\r
-\r
 **/\r
 \r
+\r
+#include <Base.h>\r
+\r
+#include <Library/BaseLib.h>\r
+#include <Library/PciExpressLib.h>\r
+#include <Library/IoLib.h>\r
+#include <Library/DebugLib.h>\r
+#include <Library/PcdLib.h>\r
+\r
+\r
 /**\r
   Assert the validity of a PCI address. A valid PCI address should contain 1's\r
   only in the low 28 bits.\r
   @return The base address of PCI Express.\r
 \r
 **/\r
-UINTN\r
+STATIC\r
+volatile VOID*\r
 GetPciExpressBaseAddress (\r
   VOID\r
   )\r
 {\r
-  return (UINTN)PcdGet64 (PcdPciExpressBaseAddress);\r
+  return (VOID*)(UINTN) PcdGet64 (PcdPciExpressBaseAddress);\r
 }\r
 \r
 /**\r
@@ -70,7 +79,7 @@ PciExpressRead8 (
   )\r
 {\r
   ASSERT_INVALID_PCI_ADDRESS (Address);\r
-  return MmioRead8 (GetPciExpressBaseAddress () + Address);\r
+  return MmioRead8 ((UINTN) GetPciExpressBaseAddress () + Address);\r
 }\r
 \r
 /**\r
@@ -97,7 +106,7 @@ PciExpressWrite8 (
   )\r
 {\r
   ASSERT_INVALID_PCI_ADDRESS (Address);\r
-  return MmioWrite8 (GetPciExpressBaseAddress () + Address, Value);\r
+  return MmioWrite8 ((UINTN) GetPciExpressBaseAddress () + Address, Value);\r
 }\r
 \r
 /**\r
@@ -128,7 +137,7 @@ PciExpressOr8 (
   )\r
 {\r
   ASSERT_INVALID_PCI_ADDRESS (Address);\r
-  return MmioOr8 (GetPciExpressBaseAddress () + Address, OrData);\r
+  return MmioOr8 ((UINTN) GetPciExpressBaseAddress () + Address, OrData);\r
 }\r
 \r
 /**\r
@@ -159,7 +168,7 @@ PciExpressAnd8 (
   )\r
 {\r
   ASSERT_INVALID_PCI_ADDRESS (Address);\r
-  return MmioAnd8 (GetPciExpressBaseAddress () + Address, AndData);\r
+  return MmioAnd8 ((UINTN) GetPciExpressBaseAddress () + Address, AndData);\r
 }\r
 \r
 /**\r
@@ -194,7 +203,7 @@ PciExpressAndThenOr8 (
 {\r
   ASSERT_INVALID_PCI_ADDRESS (Address);\r
   return MmioAndThenOr8 (\r
-           GetPciExpressBaseAddress () + Address,\r
+           (UINTN) GetPciExpressBaseAddress () + Address,\r
            AndData,\r
            OrData\r
            );\r
@@ -231,7 +240,7 @@ PciExpressBitFieldRead8 (
 {\r
   ASSERT_INVALID_PCI_ADDRESS (Address);\r
   return MmioBitFieldRead8 (\r
-           GetPciExpressBaseAddress () + Address,\r
+           (UINTN) GetPciExpressBaseAddress () + Address,\r
            StartBit,\r
            EndBit\r
            );\r
@@ -271,7 +280,7 @@ PciExpressBitFieldWrite8 (
 {\r
   ASSERT_INVALID_PCI_ADDRESS (Address);\r
   return MmioBitFieldWrite8 (\r
-           GetPciExpressBaseAddress () + Address,\r
+           (UINTN) GetPciExpressBaseAddress () + Address,\r
            StartBit,\r
            EndBit,\r
            Value\r
@@ -315,7 +324,7 @@ PciExpressBitFieldOr8 (
 {\r
   ASSERT_INVALID_PCI_ADDRESS (Address);\r
   return MmioBitFieldOr8 (\r
-           GetPciExpressBaseAddress () + Address,\r
+           (UINTN) GetPciExpressBaseAddress () + Address,\r
            StartBit,\r
            EndBit,\r
            OrData\r
@@ -359,7 +368,7 @@ PciExpressBitFieldAnd8 (
 {\r
   ASSERT_INVALID_PCI_ADDRESS (Address);\r
   return MmioBitFieldAnd8 (\r
-           GetPciExpressBaseAddress () + Address,\r
+           (UINTN) GetPciExpressBaseAddress () + Address,\r
            StartBit,\r
            EndBit,\r
            AndData\r
@@ -407,7 +416,7 @@ PciExpressBitFieldAndThenOr8 (
 {\r
   ASSERT_INVALID_PCI_ADDRESS (Address);\r
   return MmioBitFieldAndThenOr8 (\r
-           GetPciExpressBaseAddress () + Address,\r
+           (UINTN) GetPciExpressBaseAddress () + Address,\r
            StartBit,\r
            EndBit,\r
            AndData,\r
@@ -438,7 +447,7 @@ PciExpressRead16 (
   )\r
 {\r
   ASSERT_INVALID_PCI_ADDRESS (Address);\r
-  return MmioRead16 (GetPciExpressBaseAddress () + Address);\r
+  return MmioRead16 ((UINTN) GetPciExpressBaseAddress () + Address);\r
 }\r
 \r
 /**\r
@@ -466,7 +475,7 @@ PciExpressWrite16 (
   )\r
 {\r
   ASSERT_INVALID_PCI_ADDRESS (Address);\r
-  return MmioWrite16 (GetPciExpressBaseAddress () + Address, Value);\r
+  return MmioWrite16 ((UINTN) GetPciExpressBaseAddress () + Address, Value);\r
 }\r
 \r
 /**\r
@@ -498,7 +507,7 @@ PciExpressOr16 (
   )\r
 {\r
   ASSERT_INVALID_PCI_ADDRESS (Address);\r
-  return MmioOr16 (GetPciExpressBaseAddress () + Address, OrData);\r
+  return MmioOr16 ((UINTN) GetPciExpressBaseAddress () + Address, OrData);\r
 }\r
 \r
 /**\r
@@ -530,7 +539,7 @@ PciExpressAnd16 (
   )\r
 {\r
   ASSERT_INVALID_PCI_ADDRESS (Address);\r
-  return MmioAnd16 (GetPciExpressBaseAddress () + Address, AndData);\r
+  return MmioAnd16 ((UINTN) GetPciExpressBaseAddress () + Address, AndData);\r
 }\r
 \r
 /**\r
@@ -566,7 +575,7 @@ PciExpressAndThenOr16 (
 {\r
   ASSERT_INVALID_PCI_ADDRESS (Address);\r
   return MmioAndThenOr16 (\r
-           GetPciExpressBaseAddress () + Address,\r
+           (UINTN) GetPciExpressBaseAddress () + Address,\r
            AndData,\r
            OrData\r
            );\r
@@ -604,7 +613,7 @@ PciExpressBitFieldRead16 (
 {\r
   ASSERT_INVALID_PCI_ADDRESS (Address);\r
   return MmioBitFieldRead16 (\r
-           GetPciExpressBaseAddress () + Address,\r
+           (UINTN) GetPciExpressBaseAddress () + Address,\r
            StartBit,\r
            EndBit\r
            );\r
@@ -645,7 +654,7 @@ PciExpressBitFieldWrite16 (
 {\r
   ASSERT_INVALID_PCI_ADDRESS (Address);\r
   return MmioBitFieldWrite16 (\r
-           GetPciExpressBaseAddress () + Address,\r
+           (UINTN) GetPciExpressBaseAddress () + Address,\r
            StartBit,\r
            EndBit,\r
            Value\r
@@ -690,7 +699,7 @@ PciExpressBitFieldOr16 (
 {\r
   ASSERT_INVALID_PCI_ADDRESS (Address);\r
   return MmioBitFieldOr16 (\r
-           GetPciExpressBaseAddress () + Address,\r
+           (UINTN) GetPciExpressBaseAddress () + Address,\r
            StartBit,\r
            EndBit,\r
            OrData\r
@@ -735,7 +744,7 @@ PciExpressBitFieldAnd16 (
 {\r
   ASSERT_INVALID_PCI_ADDRESS (Address);\r
   return MmioBitFieldAnd16 (\r
-           GetPciExpressBaseAddress () + Address,\r
+           (UINTN) GetPciExpressBaseAddress () + Address,\r
            StartBit,\r
            EndBit,\r
            AndData\r
@@ -784,7 +793,7 @@ PciExpressBitFieldAndThenOr16 (
 {\r
   ASSERT_INVALID_PCI_ADDRESS (Address);\r
   return MmioBitFieldAndThenOr16 (\r
-           GetPciExpressBaseAddress () + Address,\r
+           (UINTN) GetPciExpressBaseAddress () + Address,\r
            StartBit,\r
            EndBit,\r
            AndData,\r
@@ -815,7 +824,7 @@ PciExpressRead32 (
   )\r
 {\r
   ASSERT_INVALID_PCI_ADDRESS (Address);\r
-  return MmioRead32 (GetPciExpressBaseAddress () + Address);\r
+  return MmioRead32 ((UINTN) GetPciExpressBaseAddress () + Address);\r
 }\r
 \r
 /**\r
@@ -843,7 +852,7 @@ PciExpressWrite32 (
   )\r
 {\r
   ASSERT_INVALID_PCI_ADDRESS (Address);\r
-  return MmioWrite32 (GetPciExpressBaseAddress () + Address, Value);\r
+  return MmioWrite32 ((UINTN) GetPciExpressBaseAddress () + Address, Value);\r
 }\r
 \r
 /**\r
@@ -875,7 +884,7 @@ PciExpressOr32 (
   )\r
 {\r
   ASSERT_INVALID_PCI_ADDRESS (Address);\r
-  return MmioOr32 (GetPciExpressBaseAddress () + Address, OrData);\r
+  return MmioOr32 ((UINTN) GetPciExpressBaseAddress () + Address, OrData);\r
 }\r
 \r
 /**\r
@@ -907,7 +916,7 @@ PciExpressAnd32 (
   )\r
 {\r
   ASSERT_INVALID_PCI_ADDRESS (Address);\r
-  return MmioAnd32 (GetPciExpressBaseAddress () + Address, AndData);\r
+  return MmioAnd32 ((UINTN) GetPciExpressBaseAddress () + Address, AndData);\r
 }\r
 \r
 /**\r
@@ -943,7 +952,7 @@ PciExpressAndThenOr32 (
 {\r
   ASSERT_INVALID_PCI_ADDRESS (Address);\r
   return MmioAndThenOr32 (\r
-           GetPciExpressBaseAddress () + Address,\r
+           (UINTN) GetPciExpressBaseAddress () + Address,\r
            AndData,\r
            OrData\r
            );\r
@@ -981,7 +990,7 @@ PciExpressBitFieldRead32 (
 {\r
   ASSERT_INVALID_PCI_ADDRESS (Address);\r
   return MmioBitFieldRead32 (\r
-           GetPciExpressBaseAddress () + Address,\r
+           (UINTN) GetPciExpressBaseAddress () + Address,\r
            StartBit,\r
            EndBit\r
            );\r
@@ -1022,7 +1031,7 @@ PciExpressBitFieldWrite32 (
 {\r
   ASSERT_INVALID_PCI_ADDRESS (Address);\r
   return MmioBitFieldWrite32 (\r
-           GetPciExpressBaseAddress () + Address,\r
+           (UINTN) GetPciExpressBaseAddress () + Address,\r
            StartBit,\r
            EndBit,\r
            Value\r
@@ -1067,7 +1076,7 @@ PciExpressBitFieldOr32 (
 {\r
   ASSERT_INVALID_PCI_ADDRESS (Address);\r
   return MmioBitFieldOr32 (\r
-           GetPciExpressBaseAddress () + Address,\r
+           (UINTN) GetPciExpressBaseAddress () + Address,\r
            StartBit,\r
            EndBit,\r
            OrData\r
@@ -1112,7 +1121,7 @@ PciExpressBitFieldAnd32 (
 {\r
   ASSERT_INVALID_PCI_ADDRESS (Address);\r
   return MmioBitFieldAnd32 (\r
-           GetPciExpressBaseAddress () + Address,\r
+           (UINTN) GetPciExpressBaseAddress () + Address,\r
            StartBit,\r
            EndBit,\r
            AndData\r
@@ -1161,7 +1170,7 @@ PciExpressBitFieldAndThenOr32 (
 {\r
   ASSERT_INVALID_PCI_ADDRESS (Address);\r
   return MmioBitFieldAndThenOr32 (\r
-           GetPciExpressBaseAddress () + Address,\r
+           (UINTN) GetPciExpressBaseAddress () + Address,\r
            StartBit,\r
            EndBit,\r
            AndData,\r
@@ -1200,7 +1209,7 @@ PciExpressReadBuffer (
   OUT     VOID                      *Buffer\r
   )\r
 {\r
-  UINTN                             ReturnValue;\r
+  UINTN   ReturnValue;\r
 \r
   ASSERT_INVALID_PCI_ADDRESS (StartAddress);\r
   ASSERT (((StartAddress & 0xFFF) + Size) <= 0x1000);\r
@@ -1220,7 +1229,7 @@ PciExpressReadBuffer (
     //\r
     // Read a byte if StartAddress is byte aligned\r
     //\r
-    *(UINT8*)Buffer = PciExpressRead8 (StartAddress);\r
+    *(volatile UINT8 *)Buffer = PciExpressRead8 (StartAddress);\r
     StartAddress += sizeof (UINT8);\r
     Size -= sizeof (UINT8);\r
     Buffer = (UINT8*)Buffer + 1;\r
@@ -1230,7 +1239,8 @@ PciExpressReadBuffer (
     //\r
     // Read a word if StartAddress is word aligned\r
     //\r
-    *(UINT16*)Buffer = PciExpressRead16 (StartAddress);\r
+    WriteUnaligned16 ((UINT16 *) Buffer, (UINT16) PciExpressRead16 (StartAddress));\r
+\r
     StartAddress += sizeof (UINT16);\r
     Size -= sizeof (UINT16);\r
     Buffer = (UINT16*)Buffer + 1;\r
@@ -1240,7 +1250,8 @@ PciExpressReadBuffer (
     //\r
     // Read as many double words as possible\r
     //\r
-    *(UINT32*)Buffer = PciExpressRead32 (StartAddress);\r
+    WriteUnaligned32 ((UINT32 *) Buffer, (UINT32) PciExpressRead32 (StartAddress));\r
+\r
     StartAddress += sizeof (UINT32);\r
     Size -= sizeof (UINT32);\r
     Buffer = (UINT32*)Buffer + 1;\r
@@ -1250,7 +1261,7 @@ PciExpressReadBuffer (
     //\r
     // Read the last remaining word if exist\r
     //\r
-    *(UINT16*)Buffer = PciExpressRead16 (StartAddress);\r
+    WriteUnaligned16 ((UINT16 *) Buffer, (UINT16) PciExpressRead16 (StartAddress));\r
     StartAddress += sizeof (UINT16);\r
     Size -= sizeof (UINT16);\r
     Buffer = (UINT16*)Buffer + 1;\r
@@ -1260,7 +1271,7 @@ PciExpressReadBuffer (
     //\r
     // Read the last remaining byte if exist\r
     //\r
-    *(UINT8*)Buffer = PciExpressRead8 (StartAddress);\r
+    *(volatile UINT8 *)Buffer = PciExpressRead8 (StartAddress);\r
   }\r
 \r
   return ReturnValue;\r
@@ -1328,7 +1339,7 @@ PciExpressWriteBuffer (
     //\r
     // Write a word if StartAddress is word aligned\r
     //\r
-    PciExpressWrite16 (StartAddress, *(UINT16*)Buffer);\r
+    PciExpressWrite16 (StartAddress, ReadUnaligned16 ((UINT16*)Buffer));\r
     StartAddress += sizeof (UINT16);\r
     Size -= sizeof (UINT16);\r
     Buffer = (UINT16*)Buffer + 1;\r
@@ -1338,7 +1349,7 @@ PciExpressWriteBuffer (
     //\r
     // Write as many double words as possible\r
     //\r
-    PciExpressWrite32 (StartAddress, *(UINT32*)Buffer);\r
+    PciExpressWrite32 (StartAddress, ReadUnaligned32 ((UINT32*)Buffer));\r
     StartAddress += sizeof (UINT32);\r
     Size -= sizeof (UINT32);\r
     Buffer = (UINT32*)Buffer + 1;\r
@@ -1348,7 +1359,7 @@ PciExpressWriteBuffer (
     //\r
     // Write the last remaining word if exist\r
     //\r
-    PciExpressWrite16 (StartAddress, *(UINT16*)Buffer);\r
+    PciExpressWrite16 (StartAddress, ReadUnaligned16 ((UINT16*)Buffer));\r
     StartAddress += sizeof (UINT16);\r
     Size -= sizeof (UINT16);\r
     Buffer = (UINT16*)Buffer + 1;\r