summaryrefslogtreecommitdiffstats
path: root/MdePkg/Library/SmmPciExpressLib/PciExpressLib.c
diff options
context:
space:
mode:
Diffstat (limited to 'MdePkg/Library/SmmPciExpressLib/PciExpressLib.c')
-rw-r--r--MdePkg/Library/SmmPciExpressLib/PciExpressLib.c1058
1 files changed, 544 insertions, 514 deletions
diff --git a/MdePkg/Library/SmmPciExpressLib/PciExpressLib.c b/MdePkg/Library/SmmPciExpressLib/PciExpressLib.c
index 97bd32c8d2..d7876a9fb3 100644
--- a/MdePkg/Library/SmmPciExpressLib/PciExpressLib.c
+++ b/MdePkg/Library/SmmPciExpressLib/PciExpressLib.c
@@ -22,8 +22,8 @@
///
/// Module global that contains the base physical address and size of the PCI Express MMIO range.
///
-UINTN mSmmPciExpressLibPciExpressBaseAddress = 0;
-UINTN mSmmPciExpressLibPciExpressBaseSize = 0;
+UINTN mSmmPciExpressLibPciExpressBaseAddress = 0;
+UINTN mSmmPciExpressLibPciExpressBaseSize = 0;
/**
The constructor function caches the PCI Express Base Address
@@ -36,17 +36,17 @@ UINTN mSmmPciExpressLibPciExpressBaseSize = 0;
EFI_STATUS
EFIAPI
SmmPciExpressLibConstructor (
- IN EFI_HANDLE ImageHandle,
- IN EFI_SYSTEM_TABLE *SystemTable
- )
+ IN EFI_HANDLE ImageHandle,
+ IN EFI_SYSTEM_TABLE *SystemTable
+ )
{
- //
- // Cache the physical address and size of the PCI Express MMIO range into a module global variable
- //
- mSmmPciExpressLibPciExpressBaseAddress = (UINTN) PcdGet64 (PcdPciExpressBaseAddress);
- mSmmPciExpressLibPciExpressBaseSize = (UINTN) PcdGet64 (PcdPciExpressBaseSize);
+ //
+ // Cache the physical address and size of the PCI Express MMIO range into a module global variable
+ //
+ mSmmPciExpressLibPciExpressBaseAddress = (UINTN)PcdGet64 (PcdPciExpressBaseAddress);
+ mSmmPciExpressLibPciExpressBaseSize = (UINTN)PcdGet64 (PcdPciExpressBaseSize);
- return EFI_SUCCESS;
+ return EFI_SUCCESS;
}
/**
@@ -84,11 +84,11 @@ SmmPciExpressLibConstructor (
RETURN_STATUS
EFIAPI
PciExpressRegisterForRuntimeAccess (
- IN UINTN Address
- )
+ IN UINTN Address
+ )
{
- ASSERT_INVALID_PCI_ADDRESS (Address);
- return RETURN_UNSUPPORTED;
+ ASSERT_INVALID_PCI_ADDRESS (Address);
+ return RETURN_UNSUPPORTED;
}
/**
@@ -109,20 +109,21 @@ PciExpressRegisterForRuntimeAccess (
**/
UINTN
GetPciExpressAddress (
- IN UINTN Address
- )
+ IN UINTN Address
+ )
{
- //
- // Make sure Address is valid
- //
- ASSERT_INVALID_PCI_ADDRESS (Address);
- //
- // Make sure the Address is in MMCONF address space
- //
- if (Address >= mSmmPciExpressLibPciExpressBaseSize) {
- return (UINTN) -1;
- }
- return mSmmPciExpressLibPciExpressBaseAddress + Address;
+ //
+ // Make sure Address is valid
+ //
+ ASSERT_INVALID_PCI_ADDRESS (Address);
+ //
+ // Make sure the Address is in MMCONF address space
+ //
+ if (Address >= mSmmPciExpressLibPciExpressBaseSize) {
+ return (UINTN)-1;
+ }
+
+ return mSmmPciExpressLibPciExpressBaseAddress + Address;
}
/**
@@ -144,13 +145,14 @@ GetPciExpressAddress (
UINT8
EFIAPI
PciExpressRead8 (
- IN UINTN Address
- )
+ IN UINTN Address
+ )
{
- if (Address >= mSmmPciExpressLibPciExpressBaseSize) {
- return (UINT8) -1;
- }
- return MmioRead8 (GetPciExpressAddress (Address));
+ if (Address >= mSmmPciExpressLibPciExpressBaseSize) {
+ return (UINT8)-1;
+ }
+
+ return MmioRead8 (GetPciExpressAddress (Address));
}
/**
@@ -173,14 +175,15 @@ PciExpressRead8 (
UINT8
EFIAPI
PciExpressWrite8 (
- IN UINTN Address,
- IN UINT8 Value
- )
+ IN UINTN Address,
+ IN UINT8 Value
+ )
{
- if (Address >= mSmmPciExpressLibPciExpressBaseSize) {
- return (UINT8) -1;
- }
- return MmioWrite8 (GetPciExpressAddress (Address), Value);
+ if (Address >= mSmmPciExpressLibPciExpressBaseSize) {
+ return (UINT8)-1;
+ }
+
+ return MmioWrite8 (GetPciExpressAddress (Address), Value);
}
/**
@@ -207,14 +210,15 @@ PciExpressWrite8 (
UINT8
EFIAPI
PciExpressOr8 (
- IN UINTN Address,
- IN UINT8 OrData
- )
+ IN UINTN Address,
+ IN UINT8 OrData
+ )
{
- if (Address >= mSmmPciExpressLibPciExpressBaseSize) {
- return (UINT8) -1;
- }
- return MmioOr8 (GetPciExpressAddress (Address), OrData);
+ if (Address >= mSmmPciExpressLibPciExpressBaseSize) {
+ return (UINT8)-1;
+ }
+
+ return MmioOr8 (GetPciExpressAddress (Address), OrData);
}
/**
@@ -241,14 +245,15 @@ PciExpressOr8 (
UINT8
EFIAPI
PciExpressAnd8 (
- IN UINTN Address,
- IN UINT8 AndData
- )
+ IN UINTN Address,
+ IN UINT8 AndData
+ )
{
- if (Address >= mSmmPciExpressLibPciExpressBaseSize) {
- return (UINT8) -1;
- }
- return MmioAnd8 (GetPciExpressAddress (Address), AndData);
+ if (Address >= mSmmPciExpressLibPciExpressBaseSize) {
+ return (UINT8)-1;
+ }
+
+ return MmioAnd8 (GetPciExpressAddress (Address), AndData);
}
/**
@@ -277,19 +282,20 @@ PciExpressAnd8 (
UINT8
EFIAPI
PciExpressAndThenOr8 (
- IN UINTN Address,
- IN UINT8 AndData,
- IN UINT8 OrData
- )
+ IN UINTN Address,
+ IN UINT8 AndData,
+ IN UINT8 OrData
+ )
{
- if (Address >= mSmmPciExpressLibPciExpressBaseSize) {
- return (UINT8) -1;
- }
- return MmioAndThenOr8 (
- GetPciExpressAddress (Address),
- AndData,
- OrData
- );
+ if (Address >= mSmmPciExpressLibPciExpressBaseSize) {
+ return (UINT8)-1;
+ }
+
+ return MmioAndThenOr8 (
+ GetPciExpressAddress (Address),
+ AndData,
+ OrData
+ );
}
/**
@@ -317,19 +323,20 @@ PciExpressAndThenOr8 (
UINT8
EFIAPI
PciExpressBitFieldRead8 (
- IN UINTN Address,
- IN UINTN StartBit,
- IN UINTN EndBit
- )
+ IN UINTN Address,
+ IN UINTN StartBit,
+ IN UINTN EndBit
+ )
{
- if (Address >= mSmmPciExpressLibPciExpressBaseSize) {
- return (UINT8) -1;
- }
- return MmioBitFieldRead8 (
- GetPciExpressAddress (Address),
- StartBit,
- EndBit
- );
+ if (Address >= mSmmPciExpressLibPciExpressBaseSize) {
+ return (UINT8)-1;
+ }
+
+ return MmioBitFieldRead8 (
+ GetPciExpressAddress (Address),
+ StartBit,
+ EndBit
+ );
}
/**
@@ -360,21 +367,22 @@ PciExpressBitFieldRead8 (
UINT8
EFIAPI
PciExpressBitFieldWrite8 (
- IN UINTN Address,
- IN UINTN StartBit,
- IN UINTN EndBit,
- IN UINT8 Value
- )
+ IN UINTN Address,
+ IN UINTN StartBit,
+ IN UINTN EndBit,
+ IN UINT8 Value
+ )
{
- if (Address >= mSmmPciExpressLibPciExpressBaseSize) {
- return (UINT8) -1;
- }
- return MmioBitFieldWrite8 (
- GetPciExpressAddress (Address),
- StartBit,
- EndBit,
- Value
- );
+ if (Address >= mSmmPciExpressLibPciExpressBaseSize) {
+ return (UINT8)-1;
+ }
+
+ return MmioBitFieldWrite8 (
+ GetPciExpressAddress (Address),
+ StartBit,
+ EndBit,
+ Value
+ );
}
/**
@@ -408,21 +416,22 @@ PciExpressBitFieldWrite8 (
UINT8
EFIAPI
PciExpressBitFieldOr8 (
- IN UINTN Address,
- IN UINTN StartBit,
- IN UINTN EndBit,
- IN UINT8 OrData
- )
+ IN UINTN Address,
+ IN UINTN StartBit,
+ IN UINTN EndBit,
+ IN UINT8 OrData
+ )
{
- if (Address >= mSmmPciExpressLibPciExpressBaseSize) {
- return (UINT8) -1;
- }
- return MmioBitFieldOr8 (
- GetPciExpressAddress (Address),
- StartBit,
- EndBit,
- OrData
- );
+ if (Address >= mSmmPciExpressLibPciExpressBaseSize) {
+ return (UINT8)-1;
+ }
+
+ return MmioBitFieldOr8 (
+ GetPciExpressAddress (Address),
+ StartBit,
+ EndBit,
+ OrData
+ );
}
/**
@@ -456,21 +465,22 @@ PciExpressBitFieldOr8 (
UINT8
EFIAPI
PciExpressBitFieldAnd8 (
- IN UINTN Address,
- IN UINTN StartBit,
- IN UINTN EndBit,
- IN UINT8 AndData
- )
+ IN UINTN Address,
+ IN UINTN StartBit,
+ IN UINTN EndBit,
+ IN UINT8 AndData
+ )
{
- if (Address >= mSmmPciExpressLibPciExpressBaseSize) {
- return (UINT8) -1;
- }
- return MmioBitFieldAnd8 (
- GetPciExpressAddress (Address),
- StartBit,
- EndBit,
- AndData
- );
+ if (Address >= mSmmPciExpressLibPciExpressBaseSize) {
+ return (UINT8)-1;
+ }
+
+ return MmioBitFieldAnd8 (
+ GetPciExpressAddress (Address),
+ StartBit,
+ EndBit,
+ AndData
+ );
}
/**
@@ -508,23 +518,24 @@ PciExpressBitFieldAnd8 (
UINT8
EFIAPI
PciExpressBitFieldAndThenOr8 (
- IN UINTN Address,
- IN UINTN StartBit,
- IN UINTN EndBit,
- IN UINT8 AndData,
- IN UINT8 OrData
- )
+ IN UINTN Address,
+ IN UINTN StartBit,
+ IN UINTN EndBit,
+ IN UINT8 AndData,
+ IN UINT8 OrData
+ )
{
- if (Address >= mSmmPciExpressLibPciExpressBaseSize) {
- return (UINT8) -1;
- }
- return MmioBitFieldAndThenOr8 (
- GetPciExpressAddress (Address),
- StartBit,
- EndBit,
- AndData,
- OrData
- );
+ if (Address >= mSmmPciExpressLibPciExpressBaseSize) {
+ return (UINT8)-1;
+ }
+
+ return MmioBitFieldAndThenOr8 (
+ GetPciExpressAddress (Address),
+ StartBit,
+ EndBit,
+ AndData,
+ OrData
+ );
}
/**
@@ -547,13 +558,14 @@ PciExpressBitFieldAndThenOr8 (
UINT16
EFIAPI
PciExpressRead16 (
- IN UINTN Address
- )
+ IN UINTN Address
+ )
{
- if (Address >= mSmmPciExpressLibPciExpressBaseSize) {
- return (UINT16) -1;
- }
- return MmioRead16 (GetPciExpressAddress (Address));
+ if (Address >= mSmmPciExpressLibPciExpressBaseSize) {
+ return (UINT16)-1;
+ }
+
+ return MmioRead16 (GetPciExpressAddress (Address));
}
/**
@@ -577,14 +589,15 @@ PciExpressRead16 (
UINT16
EFIAPI
PciExpressWrite16 (
- IN UINTN Address,
- IN UINT16 Value
- )
+ IN UINTN Address,
+ IN UINT16 Value
+ )
{
- if (Address >= mSmmPciExpressLibPciExpressBaseSize) {
- return (UINT16) -1;
- }
- return MmioWrite16 (GetPciExpressAddress (Address), Value);
+ if (Address >= mSmmPciExpressLibPciExpressBaseSize) {
+ return (UINT16)-1;
+ }
+
+ return MmioWrite16 (GetPciExpressAddress (Address), Value);
}
/**
@@ -612,14 +625,15 @@ PciExpressWrite16 (
UINT16
EFIAPI
PciExpressOr16 (
- IN UINTN Address,
- IN UINT16 OrData
- )
+ IN UINTN Address,
+ IN UINT16 OrData
+ )
{
- if (Address >= mSmmPciExpressLibPciExpressBaseSize) {
- return (UINT16) -1;
- }
- return MmioOr16 (GetPciExpressAddress (Address), OrData);
+ if (Address >= mSmmPciExpressLibPciExpressBaseSize) {
+ return (UINT16)-1;
+ }
+
+ return MmioOr16 (GetPciExpressAddress (Address), OrData);
}
/**
@@ -647,14 +661,15 @@ PciExpressOr16 (
UINT16
EFIAPI
PciExpressAnd16 (
- IN UINTN Address,
- IN UINT16 AndData
- )
+ IN UINTN Address,
+ IN UINT16 AndData
+ )
{
- if (Address >= mSmmPciExpressLibPciExpressBaseSize) {
- return (UINT16) -1;
- }
- return MmioAnd16 (GetPciExpressAddress (Address), AndData);
+ if (Address >= mSmmPciExpressLibPciExpressBaseSize) {
+ return (UINT16)-1;
+ }
+
+ return MmioAnd16 (GetPciExpressAddress (Address), AndData);
}
/**
@@ -684,19 +699,20 @@ PciExpressAnd16 (
UINT16
EFIAPI
PciExpressAndThenOr16 (
- IN UINTN Address,
- IN UINT16 AndData,
- IN UINT16 OrData
- )
+ IN UINTN Address,
+ IN UINT16 AndData,
+ IN UINT16 OrData
+ )
{
- if (Address >= mSmmPciExpressLibPciExpressBaseSize) {
- return (UINT16) -1;
- }
- return MmioAndThenOr16 (
- GetPciExpressAddress (Address),
- AndData,
- OrData
- );
+ if (Address >= mSmmPciExpressLibPciExpressBaseSize) {
+ return (UINT16)-1;
+ }
+
+ return MmioAndThenOr16 (
+ GetPciExpressAddress (Address),
+ AndData,
+ OrData
+ );
}
/**
@@ -725,19 +741,20 @@ PciExpressAndThenOr16 (
UINT16
EFIAPI
PciExpressBitFieldRead16 (
- IN UINTN Address,
- IN UINTN StartBit,
- IN UINTN EndBit
- )
+ IN UINTN Address,
+ IN UINTN StartBit,
+ IN UINTN EndBit
+ )
{
- if (Address >= mSmmPciExpressLibPciExpressBaseSize) {
- return (UINT16) -1;
- }
- return MmioBitFieldRead16 (
- GetPciExpressAddress (Address),
- StartBit,
- EndBit
- );
+ if (Address >= mSmmPciExpressLibPciExpressBaseSize) {
+ return (UINT16)-1;
+ }
+
+ return MmioBitFieldRead16 (
+ GetPciExpressAddress (Address),
+ StartBit,
+ EndBit
+ );
}
/**
@@ -769,21 +786,22 @@ PciExpressBitFieldRead16 (
UINT16
EFIAPI
PciExpressBitFieldWrite16 (
- IN UINTN Address,
- IN UINTN StartBit,
- IN UINTN EndBit,
- IN UINT16 Value
- )
+ IN UINTN Address,
+ IN UINTN StartBit,
+ IN UINTN EndBit,
+ IN UINT16 Value
+ )
{
- if (Address >= mSmmPciExpressLibPciExpressBaseSize) {
- return (UINT16) -1;
- }
- return MmioBitFieldWrite16 (
- GetPciExpressAddress (Address),
- StartBit,
- EndBit,
- Value
- );
+ if (Address >= mSmmPciExpressLibPciExpressBaseSize) {
+ return (UINT16)-1;
+ }
+
+ return MmioBitFieldWrite16 (
+ GetPciExpressAddress (Address),
+ StartBit,
+ EndBit,
+ Value
+ );
}
/**
@@ -818,21 +836,22 @@ PciExpressBitFieldWrite16 (
UINT16
EFIAPI
PciExpressBitFieldOr16 (
- IN UINTN Address,
- IN UINTN StartBit,
- IN UINTN EndBit,
- IN UINT16 OrData
- )
+ IN UINTN Address,
+ IN UINTN StartBit,
+ IN UINTN EndBit,
+ IN UINT16 OrData
+ )
{
- if (Address >= mSmmPciExpressLibPciExpressBaseSize) {
- return (UINT16) -1;
- }
- return MmioBitFieldOr16 (
- GetPciExpressAddress (Address),
- StartBit,
- EndBit,
- OrData
- );
+ if (Address >= mSmmPciExpressLibPciExpressBaseSize) {
+ return (UINT16)-1;
+ }
+
+ return MmioBitFieldOr16 (
+ GetPciExpressAddress (Address),
+ StartBit,
+ EndBit,
+ OrData
+ );
}
/**
@@ -867,21 +886,22 @@ PciExpressBitFieldOr16 (
UINT16
EFIAPI
PciExpressBitFieldAnd16 (
- IN UINTN Address,
- IN UINTN StartBit,
- IN UINTN EndBit,
- IN UINT16 AndData
- )
+ IN UINTN Address,
+ IN UINTN StartBit,
+ IN UINTN EndBit,
+ IN UINT16 AndData
+ )
{
- if (Address >= mSmmPciExpressLibPciExpressBaseSize) {
- return (UINT16) -1;
- }
- return MmioBitFieldAnd16 (
- GetPciExpressAddress (Address),
- StartBit,
- EndBit,
- AndData
- );
+ if (Address >= mSmmPciExpressLibPciExpressBaseSize) {
+ return (UINT16)-1;
+ }
+
+ return MmioBitFieldAnd16 (
+ GetPciExpressAddress (Address),
+ StartBit,
+ EndBit,
+ AndData
+ );
}
/**
@@ -920,23 +940,24 @@ PciExpressBitFieldAnd16 (
UINT16
EFIAPI
PciExpressBitFieldAndThenOr16 (
- IN UINTN Address,
- IN UINTN StartBit,
- IN UINTN EndBit,
- IN UINT16 AndData,
- IN UINT16 OrData
- )
+ IN UINTN Address,
+ IN UINTN StartBit,
+ IN UINTN EndBit,
+ IN UINT16 AndData,
+ IN UINT16 OrData
+ )
{
- if (Address >= mSmmPciExpressLibPciExpressBaseSize) {
- return (UINT16) -1;
- }
- return MmioBitFieldAndThenOr16 (
- GetPciExpressAddress (Address),
- StartBit,
- EndBit,
- AndData,
- OrData
- );
+ if (Address >= mSmmPciExpressLibPciExpressBaseSize) {
+ return (UINT16)-1;
+ }
+
+ return MmioBitFieldAndThenOr16 (
+ GetPciExpressAddress (Address),
+ StartBit,
+ EndBit,
+ AndData,
+ OrData
+ );
}
/**
@@ -959,13 +980,14 @@ PciExpressBitFieldAndThenOr16 (
UINT32
EFIAPI
PciExpressRead32 (
- IN UINTN Address
- )
+ IN UINTN Address
+ )
{
- if (Address >= mSmmPciExpressLibPciExpressBaseSize) {
- return (UINT32) -1;
- }
- return MmioRead32 (GetPciExpressAddress (Address));
+ if (Address >= mSmmPciExpressLibPciExpressBaseSize) {
+ return (UINT32)-1;
+ }
+
+ return MmioRead32 (GetPciExpressAddress (Address));
}
/**
@@ -989,14 +1011,15 @@ PciExpressRead32 (
UINT32
EFIAPI
PciExpressWrite32 (
- IN UINTN Address,
- IN UINT32 Value
- )
+ IN UINTN Address,
+ IN UINT32 Value
+ )
{
- if (Address >= mSmmPciExpressLibPciExpressBaseSize) {
- return (UINT32) -1;
- }
- return MmioWrite32 (GetPciExpressAddress (Address), Value);
+ if (Address >= mSmmPciExpressLibPciExpressBaseSize) {
+ return (UINT32)-1;
+ }
+
+ return MmioWrite32 (GetPciExpressAddress (Address), Value);
}
/**
@@ -1024,14 +1047,15 @@ PciExpressWrite32 (
UINT32
EFIAPI
PciExpressOr32 (
- IN UINTN Address,
- IN UINT32 OrData
- )
+ IN UINTN Address,
+ IN UINT32 OrData
+ )
{
- if (Address >= mSmmPciExpressLibPciExpressBaseSize) {
- return (UINT32) -1;
- }
- return MmioOr32 (GetPciExpressAddress (Address), OrData);
+ if (Address >= mSmmPciExpressLibPciExpressBaseSize) {
+ return (UINT32)-1;
+ }
+
+ return MmioOr32 (GetPciExpressAddress (Address), OrData);
}
/**
@@ -1059,14 +1083,15 @@ PciExpressOr32 (
UINT32
EFIAPI
PciExpressAnd32 (
- IN UINTN Address,
- IN UINT32 AndData
- )
+ IN UINTN Address,
+ IN UINT32 AndData
+ )
{
- if (Address >= mSmmPciExpressLibPciExpressBaseSize) {
- return (UINT32) -1;
- }
- return MmioAnd32 (GetPciExpressAddress (Address), AndData);
+ if (Address >= mSmmPciExpressLibPciExpressBaseSize) {
+ return (UINT32)-1;
+ }
+
+ return MmioAnd32 (GetPciExpressAddress (Address), AndData);
}
/**
@@ -1096,19 +1121,20 @@ PciExpressAnd32 (
UINT32
EFIAPI
PciExpressAndThenOr32 (
- IN UINTN Address,
- IN UINT32 AndData,
- IN UINT32 OrData
- )
+ IN UINTN Address,
+ IN UINT32 AndData,
+ IN UINT32 OrData
+ )
{
- if (Address >= mSmmPciExpressLibPciExpressBaseSize) {
- return (UINT32) -1;
- }
- return MmioAndThenOr32 (
- GetPciExpressAddress (Address),
- AndData,
- OrData
- );
+ if (Address >= mSmmPciExpressLibPciExpressBaseSize) {
+ return (UINT32)-1;
+ }
+
+ return MmioAndThenOr32 (
+ GetPciExpressAddress (Address),
+ AndData,
+ OrData
+ );
}
/**
@@ -1137,19 +1163,20 @@ PciExpressAndThenOr32 (
UINT32
EFIAPI
PciExpressBitFieldRead32 (
- IN UINTN Address,
- IN UINTN StartBit,
- IN UINTN EndBit
- )
+ IN UINTN Address,
+ IN UINTN StartBit,
+ IN UINTN EndBit
+ )
{
- if (Address >= mSmmPciExpressLibPciExpressBaseSize) {
- return (UINT32) -1;
- }
- return MmioBitFieldRead32 (
- GetPciExpressAddress (Address),
- StartBit,
- EndBit
- );
+ if (Address >= mSmmPciExpressLibPciExpressBaseSize) {
+ return (UINT32)-1;
+ }
+
+ return MmioBitFieldRead32 (
+ GetPciExpressAddress (Address),
+ StartBit,
+ EndBit
+ );
}
/**
@@ -1181,21 +1208,22 @@ PciExpressBitFieldRead32 (
UINT32
EFIAPI
PciExpressBitFieldWrite32 (
- IN UINTN Address,
- IN UINTN StartBit,
- IN UINTN EndBit,
- IN UINT32 Value
- )
+ IN UINTN Address,
+ IN UINTN StartBit,
+ IN UINTN EndBit,
+ IN UINT32 Value
+ )
{
- if (Address >= mSmmPciExpressLibPciExpressBaseSize) {
- return (UINT32) -1;
- }
- return MmioBitFieldWrite32 (
- GetPciExpressAddress (Address),
- StartBit,
- EndBit,
- Value
- );
+ if (Address >= mSmmPciExpressLibPciExpressBaseSize) {
+ return (UINT32)-1;
+ }
+
+ return MmioBitFieldWrite32 (
+ GetPciExpressAddress (Address),
+ StartBit,
+ EndBit,
+ Value
+ );
}
/**
@@ -1230,21 +1258,22 @@ PciExpressBitFieldWrite32 (
UINT32
EFIAPI
PciExpressBitFieldOr32 (
- IN UINTN Address,
- IN UINTN StartBit,
- IN UINTN EndBit,
- IN UINT32 OrData
- )
+ IN UINTN Address,
+ IN UINTN StartBit,
+ IN UINTN EndBit,
+ IN UINT32 OrData
+ )
{
- if (Address >= mSmmPciExpressLibPciExpressBaseSize) {
- return (UINT32) -1;
- }
- return MmioBitFieldOr32 (
- GetPciExpressAddress (Address),
- StartBit,
- EndBit,
- OrData
- );
+ if (Address >= mSmmPciExpressLibPciExpressBaseSize) {
+ return (UINT32)-1;
+ }
+
+ return MmioBitFieldOr32 (
+ GetPciExpressAddress (Address),
+ StartBit,
+ EndBit,
+ OrData
+ );
}
/**
@@ -1279,21 +1308,22 @@ PciExpressBitFieldOr32 (
UINT32
EFIAPI
PciExpressBitFieldAnd32 (
- IN UINTN Address,
- IN UINTN StartBit,
- IN UINTN EndBit,
- IN UINT32 AndData
- )
+ IN UINTN Address,
+ IN UINTN StartBit,
+ IN UINTN EndBit,
+ IN UINT32 AndData
+ )
{
- if (Address >= mSmmPciExpressLibPciExpressBaseSize) {
- return (UINT32) -1;
- }
- return MmioBitFieldAnd32 (
- GetPciExpressAddress (Address),
- StartBit,
- EndBit,
- AndData
- );
+ if (Address >= mSmmPciExpressLibPciExpressBaseSize) {
+ return (UINT32)-1;
+ }
+
+ return MmioBitFieldAnd32 (
+ GetPciExpressAddress (Address),
+ StartBit,
+ EndBit,
+ AndData
+ );
}
/**
@@ -1332,23 +1362,24 @@ PciExpressBitFieldAnd32 (
UINT32
EFIAPI
PciExpressBitFieldAndThenOr32 (
- IN UINTN Address,
- IN UINTN StartBit,
- IN UINTN EndBit,
- IN UINT32 AndData,
- IN UINT32 OrData
- )
+ IN UINTN Address,
+ IN UINTN StartBit,
+ IN UINTN EndBit,
+ IN UINT32 AndData,
+ IN UINT32 OrData
+ )
{
- if (Address >= mSmmPciExpressLibPciExpressBaseSize) {
- return (UINT32) -1;
- }
- return MmioBitFieldAndThenOr32 (
- GetPciExpressAddress (Address),
- StartBit,
- EndBit,
- AndData,
- OrData
- );
+ if (Address >= mSmmPciExpressLibPciExpressBaseSize) {
+ return (UINT32)-1;
+ }
+
+ return MmioBitFieldAndThenOr32 (
+ GetPciExpressAddress (Address),
+ StartBit,
+ EndBit,
+ AndData,
+ OrData
+ );
}
/**
@@ -1378,87 +1409,87 @@ PciExpressBitFieldAndThenOr32 (
UINTN
EFIAPI
PciExpressReadBuffer (
- IN UINTN StartAddress,
- IN UINTN Size,
- OUT VOID *Buffer
- )
+ IN UINTN StartAddress,
+ IN UINTN Size,
+ OUT VOID *Buffer
+ )
{
- UINTN ReturnValue;
-
- //
- // Make sure Address is valid
- //
- ASSERT_INVALID_PCI_ADDRESS (StartAddress);
- ASSERT (((StartAddress & 0xFFF) + Size) <= 0x1000);
-
- //
- // Make sure the Address is in MMCONF address space
- //
- if (StartAddress >= mSmmPciExpressLibPciExpressBaseSize) {
- return (UINTN) -1;
- }
-
- if (Size == 0) {
- return Size;
- }
-
- ASSERT (Buffer != NULL);
-
- //
- // Save Size for return
- //
- ReturnValue = Size;
-
- if ((StartAddress & 1) != 0) {
- //
- // Read a byte if StartAddress is byte aligned
- //
- *(volatile UINT8 *)Buffer = PciExpressRead8 (StartAddress);
- StartAddress += sizeof (UINT8);
- Size -= sizeof (UINT8);
- Buffer = (UINT8*)Buffer + 1;
- }
-
- if (Size >= sizeof (UINT16) && (StartAddress & 2) != 0) {
- //
- // Read a word if StartAddress is word aligned
- //
- WriteUnaligned16 ((UINT16 *) Buffer, (UINT16) PciExpressRead16 (StartAddress));
-
- StartAddress += sizeof (UINT16);
- Size -= sizeof (UINT16);
- Buffer = (UINT16*)Buffer + 1;
- }
-
- while (Size >= sizeof (UINT32)) {
- //
- // Read as many double words as possible
- //
- WriteUnaligned32 ((UINT32 *) Buffer, (UINT32) PciExpressRead32 (StartAddress));
-
- StartAddress += sizeof (UINT32);
- Size -= sizeof (UINT32);
- Buffer = (UINT32*)Buffer + 1;
- }
-
- if (Size >= sizeof (UINT16)) {
- //
- // Read the last remaining word if exist
- //
- WriteUnaligned16 ((UINT16 *) Buffer, (UINT16) PciExpressRead16 (StartAddress));
- StartAddress += sizeof (UINT16);
- Size -= sizeof (UINT16);
- Buffer = (UINT16*)Buffer + 1;
- }
-
- if (Size >= sizeof (UINT8)) {
- //
- // Read the last remaining byte if exist
- //
- *(volatile UINT8 *)Buffer = PciExpressRead8 (StartAddress);
- }
-
- return ReturnValue;
+ UINTN ReturnValue;
+
+ //
+ // Make sure Address is valid
+ //
+ ASSERT_INVALID_PCI_ADDRESS (StartAddress);
+ ASSERT (((StartAddress & 0xFFF) + Size) <= 0x1000);
+
+ //
+ // Make sure the Address is in MMCONF address space
+ //
+ if (StartAddress >= mSmmPciExpressLibPciExpressBaseSize) {
+ return (UINTN)-1;
+ }
+
+ if (Size == 0) {
+ return Size;
+ }
+
+ ASSERT (Buffer != NULL);
+
+ //
+ // Save Size for return
+ //
+ ReturnValue = Size;
+
+ if ((StartAddress & 1) != 0) {
+ //
+ // Read a byte if StartAddress is byte aligned
+ //
+ *(volatile UINT8 *)Buffer = PciExpressRead8 (StartAddress);
+ StartAddress += sizeof (UINT8);
+ Size -= sizeof (UINT8);
+ Buffer = (UINT8 *)Buffer + 1;
+ }
+
+ if ((Size >= sizeof (UINT16)) && ((StartAddress & 2) != 0)) {
+ //
+ // Read a word if StartAddress is word aligned
+ //
+ WriteUnaligned16 ((UINT16 *)Buffer, (UINT16)PciExpressRead16 (StartAddress));
+
+ StartAddress += sizeof (UINT16);
+ Size -= sizeof (UINT16);
+ Buffer = (UINT16 *)Buffer + 1;
+ }
+
+ while (Size >= sizeof (UINT32)) {
+ //
+ // Read as many double words as possible
+ //
+ WriteUnaligned32 ((UINT32 *)Buffer, (UINT32)PciExpressRead32 (StartAddress));
+
+ StartAddress += sizeof (UINT32);
+ Size -= sizeof (UINT32);
+ Buffer = (UINT32 *)Buffer + 1;
+ }
+
+ if (Size >= sizeof (UINT16)) {
+ //
+ // Read the last remaining word if exist
+ //
+ WriteUnaligned16 ((UINT16 *)Buffer, (UINT16)PciExpressRead16 (StartAddress));
+ StartAddress += sizeof (UINT16);
+ Size -= sizeof (UINT16);
+ Buffer = (UINT16 *)Buffer + 1;
+ }
+
+ if (Size >= sizeof (UINT8)) {
+ //
+ // Read the last remaining byte if exist
+ //
+ *(volatile UINT8 *)Buffer = PciExpressRead8 (StartAddress);
+ }
+
+ return ReturnValue;
}
/**
@@ -1489,84 +1520,83 @@ PciExpressReadBuffer (
UINTN
EFIAPI
PciExpressWriteBuffer (
- IN UINTN StartAddress,
- IN UINTN Size,
- IN VOID *Buffer
- )
+ IN UINTN StartAddress,
+ IN UINTN Size,
+ IN VOID *Buffer
+ )
{
- UINTN ReturnValue;
-
- //
- // Make sure Address is valid
- //
- ASSERT_INVALID_PCI_ADDRESS (StartAddress);
- ASSERT (((StartAddress & 0xFFF) + Size) <= 0x1000);
-
- //
- // Make sure the Address is in MMCONF address space
- //
- if (StartAddress >= mSmmPciExpressLibPciExpressBaseSize) {
- return (UINTN) -1;
- }
-
-
- if (Size == 0) {
- return 0;
- }
-
- ASSERT (Buffer != NULL);
-
- //
- // Save Size for return
- //
- ReturnValue = Size;
-
- if ((StartAddress & 1) != 0) {
- //
- // Write a byte if StartAddress is byte aligned
- //
- PciExpressWrite8 (StartAddress, *(UINT8*)Buffer);
- StartAddress += sizeof (UINT8);
- Size -= sizeof (UINT8);
- Buffer = (UINT8*)Buffer + 1;
- }
-
- if (Size >= sizeof (UINT16) && (StartAddress & 2) != 0) {
- //
- // Write a word if StartAddress is word aligned
- //
- PciExpressWrite16 (StartAddress, ReadUnaligned16 ((UINT16*)Buffer));
- StartAddress += sizeof (UINT16);
- Size -= sizeof (UINT16);
- Buffer = (UINT16*)Buffer + 1;
- }
-
- while (Size >= sizeof (UINT32)) {
- //
- // Write as many double words as possible
- //
- PciExpressWrite32 (StartAddress, ReadUnaligned32 ((UINT32*)Buffer));
- StartAddress += sizeof (UINT32);
- Size -= sizeof (UINT32);
- Buffer = (UINT32*)Buffer + 1;
- }
-
- if (Size >= sizeof (UINT16)) {
- //
- // Write the last remaining word if exist
- //
- PciExpressWrite16 (StartAddress, ReadUnaligned16 ((UINT16*)Buffer));
- StartAddress += sizeof (UINT16);
- Size -= sizeof (UINT16);
- Buffer = (UINT16*)Buffer + 1;
- }
-
- if (Size >= sizeof (UINT8)) {
- //
- // Write the last remaining byte if exist
- //
- PciExpressWrite8 (StartAddress, *(UINT8*)Buffer);
- }
-
- return ReturnValue;
+ UINTN ReturnValue;
+
+ //
+ // Make sure Address is valid
+ //
+ ASSERT_INVALID_PCI_ADDRESS (StartAddress);
+ ASSERT (((StartAddress & 0xFFF) + Size) <= 0x1000);
+
+ //
+ // Make sure the Address is in MMCONF address space
+ //
+ if (StartAddress >= mSmmPciExpressLibPciExpressBaseSize) {
+ return (UINTN)-1;
+ }
+
+ if (Size == 0) {
+ return 0;
+ }
+
+ ASSERT (Buffer != NULL);
+
+ //
+ // Save Size for return
+ //
+ ReturnValue = Size;
+
+ if ((StartAddress & 1) != 0) {
+ //
+ // Write a byte if StartAddress is byte aligned
+ //
+ PciExpressWrite8 (StartAddress, *(UINT8 *)Buffer);
+ StartAddress += sizeof (UINT8);
+ Size -= sizeof (UINT8);
+ Buffer = (UINT8 *)Buffer + 1;
+ }
+
+ if ((Size >= sizeof (UINT16)) && ((StartAddress & 2) != 0)) {
+ //
+ // Write a word if StartAddress is word aligned
+ //
+ PciExpressWrite16 (StartAddress, ReadUnaligned16 ((UINT16 *)Buffer));
+ StartAddress += sizeof (UINT16);
+ Size -= sizeof (UINT16);
+ Buffer = (UINT16 *)Buffer + 1;
+ }
+
+ while (Size >= sizeof (UINT32)) {
+ //
+ // Write as many double words as possible
+ //
+ PciExpressWrite32 (StartAddress, ReadUnaligned32 ((UINT32 *)Buffer));
+ StartAddress += sizeof (UINT32);
+ Size -= sizeof (UINT32);
+ Buffer = (UINT32 *)Buffer + 1;
+ }
+
+ if (Size >= sizeof (UINT16)) {
+ //
+ // Write the last remaining word if exist
+ //
+ PciExpressWrite16 (StartAddress, ReadUnaligned16 ((UINT16 *)Buffer));
+ StartAddress += sizeof (UINT16);
+ Size -= sizeof (UINT16);
+ Buffer = (UINT16 *)Buffer + 1;
+ }
+
+ if (Size >= sizeof (UINT8)) {
+ //
+ // Write the last remaining byte if exist
+ //
+ PciExpressWrite8 (StartAddress, *(UINT8 *)Buffer);
+ }
+
+ return ReturnValue;
}