]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdePkg/Library/BasePciExpressLib/PciLib.c
Add two new data hub subclass related definitions per SMBIOS 2.4 spec.
[mirror_edk2.git] / MdePkg / Library / BasePciExpressLib / PciLib.c
index 771c18f811d106ac0bd47a1a4b79cac238fe81b2..f7deedd6420015f5c85b5db69a26d514740a12a1 100644 (file)
   ASSERT (((A) & ~0xfffffff) == 0)\r
 \r
 \r
-UINTN\r
-EFIAPI\r
+/**\r
+  Gets the base address of PCI Express.\r
+  \r
+  This internal functions retrieves PCI Express Base Address via a PCD entry\r
+  PcdPciExpressBaseAddress.\r
+  \r
+  @return The base address of PCI Express.\r
+\r
+**/\r
+volatile VOID*\r
 GetPciExpressBaseAddress (\r
   VOID\r
   )\r
 {\r
-  return (UINTN)PcdGet64 (PcdPciExpressBaseAddress);\r
+  return (VOID*)(UINTN) PcdGet64 (PcdPciExpressBaseAddress);\r
 }\r
 \r
 /**\r
@@ -62,7 +70,7 @@ PciExpressRead8 (
   )\r
 {\r
   ASSERT_INVALID_PCI_ADDRESS (Address);\r
-  return MmioRead8 (GetPciExpressBaseAddress () + Address);\r
+  return MmioRead8 ((UINTN) GetPciExpressBaseAddress () + Address);\r
 }\r
 \r
 /**\r
@@ -89,7 +97,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
@@ -120,7 +128,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
@@ -151,7 +159,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
@@ -186,7 +194,7 @@ PciExpressAndThenOr8 (
 {\r
   ASSERT_INVALID_PCI_ADDRESS (Address);\r
   return MmioAndThenOr8 (\r
-           GetPciExpressBaseAddress () + Address,\r
+           (UINTN) GetPciExpressBaseAddress () + Address,\r
            AndData,\r
            OrData\r
            );\r
@@ -223,7 +231,7 @@ PciExpressBitFieldRead8 (
 {\r
   ASSERT_INVALID_PCI_ADDRESS (Address);\r
   return MmioBitFieldRead8 (\r
-           GetPciExpressBaseAddress () + Address,\r
+           (UINTN) GetPciExpressBaseAddress () + Address,\r
            StartBit,\r
            EndBit\r
            );\r
@@ -263,7 +271,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
@@ -307,7 +315,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
@@ -351,7 +359,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
@@ -399,7 +407,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
@@ -430,7 +438,7 @@ PciExpressRead16 (
   )\r
 {\r
   ASSERT_INVALID_PCI_ADDRESS (Address);\r
-  return MmioRead16 (GetPciExpressBaseAddress () + Address);\r
+  return MmioRead16 ((UINTN) GetPciExpressBaseAddress () + Address);\r
 }\r
 \r
 /**\r
@@ -458,7 +466,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
@@ -490,7 +498,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
@@ -522,7 +530,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
@@ -558,7 +566,7 @@ PciExpressAndThenOr16 (
 {\r
   ASSERT_INVALID_PCI_ADDRESS (Address);\r
   return MmioAndThenOr16 (\r
-           GetPciExpressBaseAddress () + Address,\r
+           (UINTN) GetPciExpressBaseAddress () + Address,\r
            AndData,\r
            OrData\r
            );\r
@@ -596,7 +604,7 @@ PciExpressBitFieldRead16 (
 {\r
   ASSERT_INVALID_PCI_ADDRESS (Address);\r
   return MmioBitFieldRead16 (\r
-           GetPciExpressBaseAddress () + Address,\r
+           (UINTN) GetPciExpressBaseAddress () + Address,\r
            StartBit,\r
            EndBit\r
            );\r
@@ -637,7 +645,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
@@ -682,7 +690,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
@@ -727,7 +735,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
@@ -776,7 +784,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
@@ -807,7 +815,7 @@ PciExpressRead32 (
   )\r
 {\r
   ASSERT_INVALID_PCI_ADDRESS (Address);\r
-  return MmioRead32 (GetPciExpressBaseAddress () + Address);\r
+  return MmioRead32 ((UINTN) GetPciExpressBaseAddress () + Address);\r
 }\r
 \r
 /**\r
@@ -835,7 +843,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
@@ -867,7 +875,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
@@ -899,7 +907,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
@@ -935,7 +943,7 @@ PciExpressAndThenOr32 (
 {\r
   ASSERT_INVALID_PCI_ADDRESS (Address);\r
   return MmioAndThenOr32 (\r
-           GetPciExpressBaseAddress () + Address,\r
+           (UINTN) GetPciExpressBaseAddress () + Address,\r
            AndData,\r
            OrData\r
            );\r
@@ -973,7 +981,7 @@ PciExpressBitFieldRead32 (
 {\r
   ASSERT_INVALID_PCI_ADDRESS (Address);\r
   return MmioBitFieldRead32 (\r
-           GetPciExpressBaseAddress () + Address,\r
+           (UINTN) GetPciExpressBaseAddress () + Address,\r
            StartBit,\r
            EndBit\r
            );\r
@@ -1014,7 +1022,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
@@ -1059,7 +1067,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
@@ -1104,7 +1112,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
@@ -1153,7 +1161,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
@@ -1212,7 +1220,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
@@ -1222,7 +1230,7 @@ PciExpressReadBuffer (
     //\r
     // Read a word if StartAddress is word aligned\r
     //\r
-    *(UINT16*)Buffer = PciExpressRead16 (StartAddress);\r
+    *(volatile UINT16 *)Buffer = PciExpressRead16 (StartAddress);\r
     StartAddress += sizeof (UINT16);\r
     Size -= sizeof (UINT16);\r
     Buffer = (UINT16*)Buffer + 1;\r
@@ -1232,7 +1240,7 @@ PciExpressReadBuffer (
     //\r
     // Read as many double words as possible\r
     //\r
-    *(UINT32*)Buffer = PciExpressRead32 (StartAddress);\r
+    *(volatile UINT32 *)Buffer = PciExpressRead32 (StartAddress);\r
     StartAddress += sizeof (UINT32);\r
     Size -= sizeof (UINT32);\r
     Buffer = (UINT32*)Buffer + 1;\r
@@ -1242,7 +1250,7 @@ PciExpressReadBuffer (
     //\r
     // Read the last remaining word if exist\r
     //\r
-    *(UINT16*)Buffer = PciExpressRead16 (StartAddress);\r
+    *(volatile UINT16 *)Buffer = PciExpressRead16 (StartAddress);\r
     StartAddress += sizeof (UINT16);\r
     Size -= sizeof (UINT16);\r
     Buffer = (UINT16*)Buffer + 1;\r
@@ -1252,7 +1260,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